Line data Source code
1 : /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : * This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #ifndef MOZILLA_GFX_FILTERS_H_
7 : #define MOZILLA_GFX_FILTERS_H_
8 :
9 : #include "Types.h"
10 : #include "mozilla/RefPtr.h"
11 :
12 : #include "Point.h"
13 : #include "Matrix.h"
14 : #include <vector>
15 :
16 : namespace mozilla {
17 : namespace gfx {
18 :
19 : class SourceSurface;
20 :
21 : enum FilterBackend {
22 : FILTER_BACKEND_SOFTWARE = 0,
23 : FILTER_BACKEND_DIRECT2D1_1,
24 : FILTER_BACKEND_RECORDING
25 : };
26 :
27 : enum TransformFilterAtts
28 : {
29 : ATT_TRANSFORM_MATRIX = 0, // Matrix
30 : ATT_TRANSFORM_FILTER // Filter
31 : };
32 :
33 : enum TransformFilterInputs
34 : {
35 : IN_TRANSFORM_IN = 0
36 : };
37 :
38 : enum BlendFilterAtts
39 : {
40 : ATT_BLEND_BLENDMODE = 0 // uint32_t
41 : };
42 :
43 : enum BlendMode
44 : {
45 : BLEND_MODE_MULTIPLY = 0,
46 : BLEND_MODE_SCREEN,
47 : BLEND_MODE_DARKEN,
48 : BLEND_MODE_LIGHTEN,
49 : BLEND_MODE_OVERLAY,
50 : BLEND_MODE_COLOR_DODGE,
51 : BLEND_MODE_COLOR_BURN,
52 : BLEND_MODE_HARD_LIGHT,
53 : BLEND_MODE_SOFT_LIGHT,
54 : BLEND_MODE_DIFFERENCE,
55 : BLEND_MODE_EXCLUSION,
56 : BLEND_MODE_HUE,
57 : BLEND_MODE_SATURATION,
58 : BLEND_MODE_COLOR,
59 : BLEND_MODE_LUMINOSITY
60 : };
61 :
62 : enum BlendFilterInputs
63 : {
64 : IN_BLEND_IN = 0,
65 : IN_BLEND_IN2
66 : };
67 :
68 : enum MorphologyFilterAtts
69 : {
70 : ATT_MORPHOLOGY_RADII = 0, // IntSize
71 : ATT_MORPHOLOGY_OPERATOR // MorphologyOperator
72 : };
73 :
74 : enum MorphologyOperator
75 : {
76 : MORPHOLOGY_OPERATOR_ERODE = 0,
77 : MORPHOLOGY_OPERATOR_DILATE
78 : };
79 :
80 : enum MorphologyFilterInputs
81 : {
82 : IN_MORPHOLOGY_IN = 0
83 : };
84 :
85 : enum AlphaMode
86 : {
87 : ALPHA_MODE_PREMULTIPLIED = 0,
88 : ALPHA_MODE_STRAIGHT
89 : };
90 :
91 : enum ColorMatrixFilterAtts
92 : {
93 : ATT_COLOR_MATRIX_MATRIX = 0, // Matrix5x4
94 : ATT_COLOR_MATRIX_ALPHA_MODE // AlphaMode
95 : };
96 :
97 : enum ColorMatrixFilterInputs
98 : {
99 : IN_COLOR_MATRIX_IN = 0
100 : };
101 :
102 : enum FloodFilterAtts
103 : {
104 : ATT_FLOOD_COLOR = 0 // Color
105 : };
106 :
107 : enum FloodFilterInputs
108 : {
109 : IN_FLOOD_IN = 0
110 : };
111 :
112 : enum TileFilterAtts
113 : {
114 : ATT_TILE_SOURCE_RECT = 0 // IntRect
115 : };
116 :
117 : enum TileFilterInputs
118 : {
119 : IN_TILE_IN = 0
120 : };
121 :
122 : enum TransferAtts
123 : {
124 : ATT_TRANSFER_DISABLE_R = 0, // bool
125 : ATT_TRANSFER_DISABLE_G, // bool
126 : ATT_TRANSFER_DISABLE_B, // bool
127 : ATT_TRANSFER_DISABLE_A // bool
128 : };
129 :
130 : enum TransferInputs
131 : {
132 : IN_TRANSFER_IN = 0
133 : };
134 :
135 : enum TableTransferAtts
136 : {
137 : ATT_TABLE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R,
138 : ATT_TABLE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G,
139 : ATT_TABLE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B,
140 : ATT_TABLE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A,
141 : ATT_TABLE_TRANSFER_TABLE_R, // Float[]
142 : ATT_TABLE_TRANSFER_TABLE_G, // Float[]
143 : ATT_TABLE_TRANSFER_TABLE_B, // Float[]
144 : ATT_TABLE_TRANSFER_TABLE_A // Float[]
145 : };
146 :
147 : enum TableTransferInputs
148 : {
149 : IN_TABLE_TRANSFER_IN = IN_TRANSFER_IN
150 : };
151 :
152 : enum DiscreteTransferAtts
153 : {
154 : ATT_DISCRETE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R,
155 : ATT_DISCRETE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G,
156 : ATT_DISCRETE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B,
157 : ATT_DISCRETE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A,
158 : ATT_DISCRETE_TRANSFER_TABLE_R, // Float[]
159 : ATT_DISCRETE_TRANSFER_TABLE_G, // Float[]
160 : ATT_DISCRETE_TRANSFER_TABLE_B, // Float[]
161 : ATT_DISCRETE_TRANSFER_TABLE_A // Float[]
162 : };
163 :
164 : enum DiscreteTransferInputs
165 : {
166 : IN_DISCRETE_TRANSFER_IN = IN_TRANSFER_IN
167 : };
168 :
169 : enum LinearTransferAtts
170 : {
171 : ATT_LINEAR_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R,
172 : ATT_LINEAR_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G,
173 : ATT_LINEAR_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B,
174 : ATT_LINEAR_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A,
175 : ATT_LINEAR_TRANSFER_SLOPE_R, // Float
176 : ATT_LINEAR_TRANSFER_SLOPE_G, // Float
177 : ATT_LINEAR_TRANSFER_SLOPE_B, // Float
178 : ATT_LINEAR_TRANSFER_SLOPE_A, // Float
179 : ATT_LINEAR_TRANSFER_INTERCEPT_R, // Float
180 : ATT_LINEAR_TRANSFER_INTERCEPT_G, // Float
181 : ATT_LINEAR_TRANSFER_INTERCEPT_B, // Float
182 : ATT_LINEAR_TRANSFER_INTERCEPT_A // Float
183 : };
184 :
185 : enum LinearTransferInputs
186 : {
187 : IN_LINEAR_TRANSFER_IN = IN_TRANSFER_IN
188 : };
189 :
190 : enum GammaTransferAtts
191 : {
192 : ATT_GAMMA_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R,
193 : ATT_GAMMA_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G,
194 : ATT_GAMMA_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B,
195 : ATT_GAMMA_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A,
196 : ATT_GAMMA_TRANSFER_AMPLITUDE_R, // Float
197 : ATT_GAMMA_TRANSFER_AMPLITUDE_G, // Float
198 : ATT_GAMMA_TRANSFER_AMPLITUDE_B, // Float
199 : ATT_GAMMA_TRANSFER_AMPLITUDE_A, // Float
200 : ATT_GAMMA_TRANSFER_EXPONENT_R, // Float
201 : ATT_GAMMA_TRANSFER_EXPONENT_G, // Float
202 : ATT_GAMMA_TRANSFER_EXPONENT_B, // Float
203 : ATT_GAMMA_TRANSFER_EXPONENT_A, // Float
204 : ATT_GAMMA_TRANSFER_OFFSET_R, // Float
205 : ATT_GAMMA_TRANSFER_OFFSET_G, // Float
206 : ATT_GAMMA_TRANSFER_OFFSET_B, // Float
207 : ATT_GAMMA_TRANSFER_OFFSET_A // Float
208 : };
209 :
210 : enum GammaTransferInputs
211 : {
212 : IN_GAMMA_TRANSFER_IN = IN_TRANSFER_IN
213 : };
214 :
215 : enum ConvolveMatrixAtts
216 : {
217 : ATT_CONVOLVE_MATRIX_KERNEL_SIZE = 0, // IntSize
218 : ATT_CONVOLVE_MATRIX_KERNEL_MATRIX, // Float[]
219 : ATT_CONVOLVE_MATRIX_DIVISOR, // Float
220 : ATT_CONVOLVE_MATRIX_BIAS, // Float
221 : ATT_CONVOLVE_MATRIX_TARGET, // IntPoint
222 : ATT_CONVOLVE_MATRIX_SOURCE_RECT, // IntRect
223 : ATT_CONVOLVE_MATRIX_EDGE_MODE, // ConvolveMatrixEdgeMode
224 : ATT_CONVOLVE_MATRIX_KERNEL_UNIT_LENGTH, // Size
225 : ATT_CONVOLVE_MATRIX_PRESERVE_ALPHA, // bool
226 : };
227 :
228 : enum ConvolveMatrixEdgeMode
229 : {
230 : EDGE_MODE_DUPLICATE = 0,
231 : EDGE_MODE_WRAP,
232 : EDGE_MODE_NONE
233 : };
234 :
235 : enum ConvolveMatrixInputs
236 : {
237 : IN_CONVOLVE_MATRIX_IN = 0
238 : };
239 :
240 : enum DisplacementMapAtts
241 : {
242 : ATT_DISPLACEMENT_MAP_SCALE = 0, // Float
243 : ATT_DISPLACEMENT_MAP_X_CHANNEL, // ColorChannel
244 : ATT_DISPLACEMENT_MAP_Y_CHANNEL // ColorChannel
245 : };
246 :
247 : enum ColorChannel
248 : {
249 : COLOR_CHANNEL_R = 0,
250 : COLOR_CHANNEL_G,
251 : COLOR_CHANNEL_B,
252 : COLOR_CHANNEL_A
253 : };
254 :
255 : enum DisplacementMapInputs
256 : {
257 : IN_DISPLACEMENT_MAP_IN = 0,
258 : IN_DISPLACEMENT_MAP_IN2
259 : };
260 :
261 : enum TurbulenceAtts
262 : {
263 : ATT_TURBULENCE_BASE_FREQUENCY = 0, // Size
264 : ATT_TURBULENCE_NUM_OCTAVES, // uint32_t
265 : ATT_TURBULENCE_SEED, // uint32_t
266 : ATT_TURBULENCE_STITCHABLE, // bool
267 : ATT_TURBULENCE_TYPE, // TurbulenceType
268 : ATT_TURBULENCE_RECT // IntRect
269 : };
270 :
271 : enum TurbulenceType
272 : {
273 : TURBULENCE_TYPE_TURBULENCE = 0,
274 : TURBULENCE_TYPE_FRACTAL_NOISE
275 : };
276 :
277 : enum ArithmeticCombineAtts
278 : {
279 : ATT_ARITHMETIC_COMBINE_COEFFICIENTS = 0 // Float[4]
280 : };
281 :
282 : enum ArithmeticCombineInputs
283 : {
284 : IN_ARITHMETIC_COMBINE_IN = 0,
285 : IN_ARITHMETIC_COMBINE_IN2
286 : };
287 :
288 : enum CompositeAtts
289 : {
290 : ATT_COMPOSITE_OPERATOR = 0 // CompositeOperator
291 : };
292 :
293 : enum CompositeOperator
294 : {
295 : COMPOSITE_OPERATOR_OVER = 0,
296 : COMPOSITE_OPERATOR_IN,
297 : COMPOSITE_OPERATOR_OUT,
298 : COMPOSITE_OPERATOR_ATOP,
299 : COMPOSITE_OPERATOR_XOR
300 : };
301 :
302 : enum CompositeInputs
303 : {
304 : // arbitrary number of inputs
305 : IN_COMPOSITE_IN_START = 0
306 : };
307 :
308 : enum GaussianBlurAtts
309 : {
310 : ATT_GAUSSIAN_BLUR_STD_DEVIATION = 0 // Float
311 : };
312 :
313 : enum GaussianBlurInputs
314 : {
315 : IN_GAUSSIAN_BLUR_IN = 0
316 : };
317 :
318 : enum DirectionalBlurAtts
319 : {
320 : ATT_DIRECTIONAL_BLUR_STD_DEVIATION = 0, // Float
321 : ATT_DIRECTIONAL_BLUR_DIRECTION // BlurDirection
322 : };
323 :
324 : enum BlurDirection
325 : {
326 : BLUR_DIRECTION_X = 0,
327 : BLUR_DIRECTION_Y
328 : };
329 :
330 : enum DirectionalBlurInputs
331 : {
332 : IN_DIRECTIONAL_BLUR_IN = 0
333 : };
334 :
335 : enum LightingAtts
336 : {
337 : ATT_POINT_LIGHT_POSITION = 0, // Point3D
338 :
339 : ATT_SPOT_LIGHT_POSITION, // Point3D
340 : ATT_SPOT_LIGHT_POINTS_AT, // Point3D
341 : ATT_SPOT_LIGHT_FOCUS, // Float
342 : ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, // Float
343 :
344 : ATT_DISTANT_LIGHT_AZIMUTH, // Float
345 : ATT_DISTANT_LIGHT_ELEVATION, // Float
346 :
347 : ATT_LIGHTING_COLOR, // Color
348 : ATT_LIGHTING_SURFACE_SCALE, // Float
349 : ATT_LIGHTING_KERNEL_UNIT_LENGTH, // Size
350 :
351 : ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT, // Float
352 :
353 : ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, // Float
354 : ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT // Float
355 : };
356 :
357 : enum LightingInputs
358 : {
359 : IN_LIGHTING_IN = 0
360 : };
361 :
362 : enum PointDiffuseAtts
363 : {
364 : ATT_POINT_DIFFUSE_POSITION = ATT_POINT_LIGHT_POSITION,
365 : ATT_POINT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR,
366 : ATT_POINT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
367 : ATT_POINT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
368 : ATT_POINT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT
369 : };
370 :
371 : enum PointDiffuseInputs
372 : {
373 : IN_POINT_DIFFUSE_IN = IN_LIGHTING_IN
374 : };
375 :
376 : enum SpotDiffuseAtts
377 : {
378 : ATT_SPOT_DIFFUSE_POSITION = ATT_SPOT_LIGHT_POSITION,
379 : ATT_SPOT_DIFFUSE_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT,
380 : ATT_SPOT_DIFFUSE_FOCUS = ATT_SPOT_LIGHT_FOCUS,
381 : ATT_SPOT_DIFFUSE_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE,
382 : ATT_SPOT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR,
383 : ATT_SPOT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
384 : ATT_SPOT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
385 : ATT_SPOT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT
386 : };
387 :
388 : enum SpotDiffuseInputs
389 : {
390 : IN_SPOT_DIFFUSE_IN = IN_LIGHTING_IN
391 : };
392 :
393 : enum DistantDiffuseAtts
394 : {
395 : ATT_DISTANT_DIFFUSE_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH,
396 : ATT_DISTANT_DIFFUSE_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION,
397 : ATT_DISTANT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR,
398 : ATT_DISTANT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
399 : ATT_DISTANT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
400 : ATT_DISTANT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT
401 : };
402 :
403 : enum DistantDiffuseInputs
404 : {
405 : IN_DISTANT_DIFFUSE_IN = IN_LIGHTING_IN
406 : };
407 :
408 : enum PointSpecularAtts
409 : {
410 : ATT_POINT_SPECULAR_POSITION = ATT_POINT_LIGHT_POSITION,
411 : ATT_POINT_SPECULAR_COLOR = ATT_LIGHTING_COLOR,
412 : ATT_POINT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
413 : ATT_POINT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
414 : ATT_POINT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT,
415 : ATT_POINT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT
416 : };
417 :
418 : enum PointSpecularInputs
419 : {
420 : IN_POINT_SPECULAR_IN = IN_LIGHTING_IN
421 : };
422 :
423 : enum SpotSpecularAtts
424 : {
425 : ATT_SPOT_SPECULAR_POSITION = ATT_SPOT_LIGHT_POSITION,
426 : ATT_SPOT_SPECULAR_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT,
427 : ATT_SPOT_SPECULAR_FOCUS = ATT_SPOT_LIGHT_FOCUS,
428 : ATT_SPOT_SPECULAR_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE,
429 : ATT_SPOT_SPECULAR_COLOR = ATT_LIGHTING_COLOR,
430 : ATT_SPOT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
431 : ATT_SPOT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
432 : ATT_SPOT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT,
433 : ATT_SPOT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT
434 : };
435 :
436 : enum SpotSpecularInputs
437 : {
438 : IN_SPOT_SPECULAR_IN = IN_LIGHTING_IN
439 : };
440 :
441 : enum DistantSpecularAtts
442 : {
443 : ATT_DISTANT_SPECULAR_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH,
444 : ATT_DISTANT_SPECULAR_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION,
445 : ATT_DISTANT_SPECULAR_COLOR = ATT_LIGHTING_COLOR,
446 : ATT_DISTANT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE,
447 : ATT_DISTANT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH,
448 : ATT_DISTANT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT,
449 : ATT_DISTANT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT
450 : };
451 :
452 : enum DistantSpecularInputs
453 : {
454 : IN_DISTANT_SPECULAR_IN = IN_LIGHTING_IN
455 : };
456 :
457 : enum CropAtts
458 : {
459 : ATT_CROP_RECT = 0 // Rect
460 : };
461 :
462 : enum CropInputs
463 : {
464 : IN_CROP_IN = 0
465 : };
466 :
467 : enum PremultiplyInputs
468 : {
469 : IN_PREMULTIPLY_IN = 0
470 : };
471 :
472 : enum UnpremultiplyInputs
473 : {
474 : IN_UNPREMULTIPLY_IN = 0
475 : };
476 :
477 : class FilterNode : public RefCounted<FilterNode>
478 : {
479 : public:
480 0 : MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(FilterNode)
481 0 : virtual ~FilterNode() {}
482 :
483 : virtual FilterBackend GetBackendType() = 0;
484 :
485 0 : virtual void SetInput(uint32_t aIndex, SourceSurface *aSurface) { MOZ_CRASH("GFX: FilterNode"); }
486 0 : virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) { MOZ_CRASH("GFX: FilterNode"); }
487 :
488 0 : virtual void SetAttribute(uint32_t aIndex, bool) { MOZ_CRASH("GFX: FilterNode"); }
489 0 : virtual void SetAttribute(uint32_t aIndex, uint32_t) { MOZ_CRASH("GFX: FilterNode"); }
490 0 : virtual void SetAttribute(uint32_t aIndex, Float) { MOZ_CRASH("GFX: FilterNode"); }
491 0 : virtual void SetAttribute(uint32_t aIndex, const Size &) { MOZ_CRASH("GFX: FilterNode"); }
492 0 : virtual void SetAttribute(uint32_t aIndex, const IntSize &) { MOZ_CRASH("GFX: FilterNode"); }
493 0 : virtual void SetAttribute(uint32_t aIndex, const IntPoint &) { MOZ_CRASH("GFX: FilterNode"); }
494 0 : virtual void SetAttribute(uint32_t aIndex, const Rect &) { MOZ_CRASH("GFX: FilterNode"); }
495 0 : virtual void SetAttribute(uint32_t aIndex, const IntRect &) { MOZ_CRASH("GFX: FilterNode"); }
496 0 : virtual void SetAttribute(uint32_t aIndex, const Point &) { MOZ_CRASH("GFX: FilterNode"); }
497 0 : virtual void SetAttribute(uint32_t aIndex, const Matrix &) { MOZ_CRASH("GFX: FilterNode"); }
498 0 : virtual void SetAttribute(uint32_t aIndex, const Matrix5x4 &) { MOZ_CRASH("GFX: FilterNode"); }
499 0 : virtual void SetAttribute(uint32_t aIndex, const Point3D &) { MOZ_CRASH("GFX: FilterNode"); }
500 0 : virtual void SetAttribute(uint32_t aIndex, const Color &) { MOZ_CRASH("GFX: FilterNode"); }
501 0 : virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) { MOZ_CRASH("GFX: FilterNode"); }
502 :
503 : protected:
504 : friend class Factory;
505 :
506 0 : FilterNode() {}
507 : };
508 :
509 : } // namespace gfx
510 : } // namespace mozilla
511 :
512 : #endif
|