michael@0: /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef MOZILLA_GFX_FILTERS_H_ michael@0: #define MOZILLA_GFX_FILTERS_H_ michael@0: michael@0: #include "Types.h" michael@0: #include "mozilla/RefPtr.h" michael@0: michael@0: #include "Point.h" michael@0: #include "Matrix.h" michael@0: #include michael@0: michael@0: namespace mozilla { michael@0: namespace gfx { michael@0: michael@0: class SourceSurface; michael@0: michael@0: enum FilterBackend { michael@0: FILTER_BACKEND_SOFTWARE = 0, michael@0: FILTER_BACKEND_DIRECT2D1_1, michael@0: FILTER_BACKEND_RECORDING michael@0: }; michael@0: michael@0: enum TransformFilterAtts michael@0: { michael@0: ATT_TRANSFORM_MATRIX = 0, // Matrix michael@0: ATT_TRANSFORM_FILTER // Filter michael@0: }; michael@0: michael@0: enum TransformFilterInputs michael@0: { michael@0: IN_TRANSFORM_IN = 0 michael@0: }; michael@0: michael@0: enum BlendFilterAtts michael@0: { michael@0: ATT_BLEND_BLENDMODE = 0 // uint32_t michael@0: }; michael@0: michael@0: enum BlendMode michael@0: { michael@0: BLEND_MODE_MULTIPLY = 0, michael@0: BLEND_MODE_SCREEN, michael@0: BLEND_MODE_DARKEN, michael@0: BLEND_MODE_LIGHTEN michael@0: }; michael@0: michael@0: enum BlendFilterInputs michael@0: { michael@0: IN_BLEND_IN = 0, michael@0: IN_BLEND_IN2 michael@0: }; michael@0: michael@0: enum MorphologyFilterAtts michael@0: { michael@0: ATT_MORPHOLOGY_RADII = 0, // IntSize michael@0: ATT_MORPHOLOGY_OPERATOR // MorphologyOperator michael@0: }; michael@0: michael@0: enum MorphologyOperator michael@0: { michael@0: MORPHOLOGY_OPERATOR_ERODE = 0, michael@0: MORPHOLOGY_OPERATOR_DILATE michael@0: }; michael@0: michael@0: enum MorphologyFilterInputs michael@0: { michael@0: IN_MORPHOLOGY_IN = 0 michael@0: }; michael@0: michael@0: enum AlphaMode michael@0: { michael@0: ALPHA_MODE_PREMULTIPLIED = 0, michael@0: ALPHA_MODE_STRAIGHT michael@0: }; michael@0: michael@0: enum ColorMatrixFilterAtts michael@0: { michael@0: ATT_COLOR_MATRIX_MATRIX = 0, // Matrix5x4 michael@0: ATT_COLOR_MATRIX_ALPHA_MODE // AlphaMode michael@0: }; michael@0: michael@0: enum ColorMatrixFilterInputs michael@0: { michael@0: IN_COLOR_MATRIX_IN = 0 michael@0: }; michael@0: michael@0: enum FloodFilterAtts michael@0: { michael@0: ATT_FLOOD_COLOR = 0 // Color michael@0: }; michael@0: michael@0: enum FloodFilterInputs michael@0: { michael@0: IN_FLOOD_IN = 0 michael@0: }; michael@0: michael@0: enum TileFilterAtts michael@0: { michael@0: ATT_TILE_SOURCE_RECT = 0 // IntRect michael@0: }; michael@0: michael@0: enum TileFilterInputs michael@0: { michael@0: IN_TILE_IN = 0 michael@0: }; michael@0: michael@0: enum TransferAtts michael@0: { michael@0: ATT_TRANSFER_DISABLE_R = 0, // bool michael@0: ATT_TRANSFER_DISABLE_G, // bool michael@0: ATT_TRANSFER_DISABLE_B, // bool michael@0: ATT_TRANSFER_DISABLE_A // bool michael@0: }; michael@0: michael@0: enum TransferInputs michael@0: { michael@0: IN_TRANSFER_IN = 0 michael@0: }; michael@0: michael@0: enum TableTransferAtts michael@0: { michael@0: ATT_TABLE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, michael@0: ATT_TABLE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, michael@0: ATT_TABLE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, michael@0: ATT_TABLE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, michael@0: ATT_TABLE_TRANSFER_TABLE_R, // Float[] michael@0: ATT_TABLE_TRANSFER_TABLE_G, // Float[] michael@0: ATT_TABLE_TRANSFER_TABLE_B, // Float[] michael@0: ATT_TABLE_TRANSFER_TABLE_A // Float[] michael@0: }; michael@0: michael@0: enum TableTransferInputs michael@0: { michael@0: IN_TABLE_TRANSFER_IN = IN_TRANSFER_IN michael@0: }; michael@0: michael@0: enum DiscreteTransferAtts michael@0: { michael@0: ATT_DISCRETE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, michael@0: ATT_DISCRETE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, michael@0: ATT_DISCRETE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, michael@0: ATT_DISCRETE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, michael@0: ATT_DISCRETE_TRANSFER_TABLE_R, // Float[] michael@0: ATT_DISCRETE_TRANSFER_TABLE_G, // Float[] michael@0: ATT_DISCRETE_TRANSFER_TABLE_B, // Float[] michael@0: ATT_DISCRETE_TRANSFER_TABLE_A // Float[] michael@0: }; michael@0: michael@0: enum DiscreteTransferInputs michael@0: { michael@0: IN_DISCRETE_TRANSFER_IN = IN_TRANSFER_IN michael@0: }; michael@0: michael@0: enum LinearTransferAtts michael@0: { michael@0: ATT_LINEAR_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, michael@0: ATT_LINEAR_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, michael@0: ATT_LINEAR_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, michael@0: ATT_LINEAR_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, michael@0: ATT_LINEAR_TRANSFER_SLOPE_R, // Float michael@0: ATT_LINEAR_TRANSFER_SLOPE_G, // Float michael@0: ATT_LINEAR_TRANSFER_SLOPE_B, // Float michael@0: ATT_LINEAR_TRANSFER_SLOPE_A, // Float michael@0: ATT_LINEAR_TRANSFER_INTERCEPT_R, // Float michael@0: ATT_LINEAR_TRANSFER_INTERCEPT_G, // Float michael@0: ATT_LINEAR_TRANSFER_INTERCEPT_B, // Float michael@0: ATT_LINEAR_TRANSFER_INTERCEPT_A // Float michael@0: }; michael@0: michael@0: enum LinearTransferInputs michael@0: { michael@0: IN_LINEAR_TRANSFER_IN = IN_TRANSFER_IN michael@0: }; michael@0: michael@0: enum GammaTransferAtts michael@0: { michael@0: ATT_GAMMA_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, michael@0: ATT_GAMMA_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, michael@0: ATT_GAMMA_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, michael@0: ATT_GAMMA_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, michael@0: ATT_GAMMA_TRANSFER_AMPLITUDE_R, // Float michael@0: ATT_GAMMA_TRANSFER_AMPLITUDE_G, // Float michael@0: ATT_GAMMA_TRANSFER_AMPLITUDE_B, // Float michael@0: ATT_GAMMA_TRANSFER_AMPLITUDE_A, // Float michael@0: ATT_GAMMA_TRANSFER_EXPONENT_R, // Float michael@0: ATT_GAMMA_TRANSFER_EXPONENT_G, // Float michael@0: ATT_GAMMA_TRANSFER_EXPONENT_B, // Float michael@0: ATT_GAMMA_TRANSFER_EXPONENT_A, // Float michael@0: ATT_GAMMA_TRANSFER_OFFSET_R, // Float michael@0: ATT_GAMMA_TRANSFER_OFFSET_G, // Float michael@0: ATT_GAMMA_TRANSFER_OFFSET_B, // Float michael@0: ATT_GAMMA_TRANSFER_OFFSET_A // Float michael@0: }; michael@0: michael@0: enum GammaTransferInputs michael@0: { michael@0: IN_GAMMA_TRANSFER_IN = IN_TRANSFER_IN michael@0: }; michael@0: michael@0: enum ConvolveMatrixAtts michael@0: { michael@0: ATT_CONVOLVE_MATRIX_KERNEL_SIZE = 0, // IntSize michael@0: ATT_CONVOLVE_MATRIX_KERNEL_MATRIX, // Float[] michael@0: ATT_CONVOLVE_MATRIX_DIVISOR, // Float michael@0: ATT_CONVOLVE_MATRIX_BIAS, // Float michael@0: ATT_CONVOLVE_MATRIX_TARGET, // IntPoint michael@0: ATT_CONVOLVE_MATRIX_SOURCE_RECT, // IntRect michael@0: ATT_CONVOLVE_MATRIX_EDGE_MODE, // ConvolveMatrixEdgeMode michael@0: ATT_CONVOLVE_MATRIX_KERNEL_UNIT_LENGTH, // Size michael@0: ATT_CONVOLVE_MATRIX_PRESERVE_ALPHA, // bool michael@0: }; michael@0: michael@0: enum ConvolveMatrixEdgeMode michael@0: { michael@0: EDGE_MODE_DUPLICATE = 0, michael@0: EDGE_MODE_WRAP, michael@0: EDGE_MODE_NONE michael@0: }; michael@0: michael@0: enum ConvolveMatrixInputs michael@0: { michael@0: IN_CONVOLVE_MATRIX_IN = 0 michael@0: }; michael@0: michael@0: enum DisplacementMapAtts michael@0: { michael@0: ATT_DISPLACEMENT_MAP_SCALE = 0, // Float michael@0: ATT_DISPLACEMENT_MAP_X_CHANNEL, // ColorChannel michael@0: ATT_DISPLACEMENT_MAP_Y_CHANNEL // ColorChannel michael@0: }; michael@0: michael@0: enum ColorChannel michael@0: { michael@0: COLOR_CHANNEL_R = 0, michael@0: COLOR_CHANNEL_G, michael@0: COLOR_CHANNEL_B, michael@0: COLOR_CHANNEL_A michael@0: }; michael@0: michael@0: enum DisplacementMapInputs michael@0: { michael@0: IN_DISPLACEMENT_MAP_IN = 0, michael@0: IN_DISPLACEMENT_MAP_IN2 michael@0: }; michael@0: michael@0: enum TurbulenceAtts michael@0: { michael@0: ATT_TURBULENCE_BASE_FREQUENCY = 0, // Size michael@0: ATT_TURBULENCE_NUM_OCTAVES, // uint32_t michael@0: ATT_TURBULENCE_SEED, // uint32_t michael@0: ATT_TURBULENCE_STITCHABLE, // bool michael@0: ATT_TURBULENCE_TYPE, // TurbulenceType michael@0: ATT_TURBULENCE_RECT // IntRect michael@0: }; michael@0: michael@0: enum TurbulenceType michael@0: { michael@0: TURBULENCE_TYPE_TURBULENCE = 0, michael@0: TURBULENCE_TYPE_FRACTAL_NOISE michael@0: }; michael@0: michael@0: enum ArithmeticCombineAtts michael@0: { michael@0: ATT_ARITHMETIC_COMBINE_COEFFICIENTS = 0 // Float[4] michael@0: }; michael@0: michael@0: enum ArithmeticCombineInputs michael@0: { michael@0: IN_ARITHMETIC_COMBINE_IN = 0, michael@0: IN_ARITHMETIC_COMBINE_IN2 michael@0: }; michael@0: michael@0: enum CompositeAtts michael@0: { michael@0: ATT_COMPOSITE_OPERATOR = 0 // CompositeOperator michael@0: }; michael@0: michael@0: enum CompositeOperator michael@0: { michael@0: COMPOSITE_OPERATOR_OVER = 0, michael@0: COMPOSITE_OPERATOR_IN, michael@0: COMPOSITE_OPERATOR_OUT, michael@0: COMPOSITE_OPERATOR_ATOP, michael@0: COMPOSITE_OPERATOR_XOR michael@0: }; michael@0: michael@0: enum CompositeInputs michael@0: { michael@0: // arbitrary number of inputs michael@0: IN_COMPOSITE_IN_START = 0 michael@0: }; michael@0: michael@0: enum GaussianBlurAtts michael@0: { michael@0: ATT_GAUSSIAN_BLUR_STD_DEVIATION = 0 // Float michael@0: }; michael@0: michael@0: enum GaussianBlurInputs michael@0: { michael@0: IN_GAUSSIAN_BLUR_IN = 0 michael@0: }; michael@0: michael@0: enum DirectionalBlurAtts michael@0: { michael@0: ATT_DIRECTIONAL_BLUR_STD_DEVIATION = 0, // Float michael@0: ATT_DIRECTIONAL_BLUR_DIRECTION // BlurDirection michael@0: }; michael@0: michael@0: enum BlurDirection michael@0: { michael@0: BLUR_DIRECTION_X = 0, michael@0: BLUR_DIRECTION_Y michael@0: }; michael@0: michael@0: enum DirectionalBlurInputs michael@0: { michael@0: IN_DIRECTIONAL_BLUR_IN = 0 michael@0: }; michael@0: michael@0: enum LightingAtts michael@0: { michael@0: ATT_POINT_LIGHT_POSITION = 0, // Point3D michael@0: michael@0: ATT_SPOT_LIGHT_POSITION, // Point3D michael@0: ATT_SPOT_LIGHT_POINTS_AT, // Point3D michael@0: ATT_SPOT_LIGHT_FOCUS, // Float michael@0: ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, // Float michael@0: michael@0: ATT_DISTANT_LIGHT_AZIMUTH, // Float michael@0: ATT_DISTANT_LIGHT_ELEVATION, // Float michael@0: michael@0: ATT_LIGHTING_COLOR, // Color michael@0: ATT_LIGHTING_SURFACE_SCALE, // Float michael@0: ATT_LIGHTING_KERNEL_UNIT_LENGTH, // Size michael@0: michael@0: ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT, // Float michael@0: michael@0: ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, // Float michael@0: ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT // Float michael@0: }; michael@0: michael@0: enum LightingInputs michael@0: { michael@0: IN_LIGHTING_IN = 0 michael@0: }; michael@0: michael@0: enum PointDiffuseAtts michael@0: { michael@0: ATT_POINT_DIFFUSE_POSITION = ATT_POINT_LIGHT_POSITION, michael@0: ATT_POINT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_POINT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_POINT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_POINT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT michael@0: }; michael@0: michael@0: enum PointDiffuseInputs michael@0: { michael@0: IN_POINT_DIFFUSE_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum SpotDiffuseAtts michael@0: { michael@0: ATT_SPOT_DIFFUSE_POSITION = ATT_SPOT_LIGHT_POSITION, michael@0: ATT_SPOT_DIFFUSE_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT, michael@0: ATT_SPOT_DIFFUSE_FOCUS = ATT_SPOT_LIGHT_FOCUS, michael@0: ATT_SPOT_DIFFUSE_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, michael@0: ATT_SPOT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_SPOT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_SPOT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_SPOT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT michael@0: }; michael@0: michael@0: enum SpotDiffuseInputs michael@0: { michael@0: IN_SPOT_DIFFUSE_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum DistantDiffuseAtts michael@0: { michael@0: ATT_DISTANT_DIFFUSE_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH, michael@0: ATT_DISTANT_DIFFUSE_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION, michael@0: ATT_DISTANT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_DISTANT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_DISTANT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_DISTANT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT michael@0: }; michael@0: michael@0: enum DistantDiffuseInputs michael@0: { michael@0: IN_DISTANT_DIFFUSE_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum PointSpecularAtts michael@0: { michael@0: ATT_POINT_SPECULAR_POSITION = ATT_POINT_LIGHT_POSITION, michael@0: ATT_POINT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_POINT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_POINT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_POINT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, michael@0: ATT_POINT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT michael@0: }; michael@0: michael@0: enum PointSpecularInputs michael@0: { michael@0: IN_POINT_SPECULAR_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum SpotSpecularAtts michael@0: { michael@0: ATT_SPOT_SPECULAR_POSITION = ATT_SPOT_LIGHT_POSITION, michael@0: ATT_SPOT_SPECULAR_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT, michael@0: ATT_SPOT_SPECULAR_FOCUS = ATT_SPOT_LIGHT_FOCUS, michael@0: ATT_SPOT_SPECULAR_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, michael@0: ATT_SPOT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_SPOT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_SPOT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_SPOT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, michael@0: ATT_SPOT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT michael@0: }; michael@0: michael@0: enum SpotSpecularInputs michael@0: { michael@0: IN_SPOT_SPECULAR_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum DistantSpecularAtts michael@0: { michael@0: ATT_DISTANT_SPECULAR_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH, michael@0: ATT_DISTANT_SPECULAR_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION, michael@0: ATT_DISTANT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, michael@0: ATT_DISTANT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, michael@0: ATT_DISTANT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, michael@0: ATT_DISTANT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, michael@0: ATT_DISTANT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT michael@0: }; michael@0: michael@0: enum DistantSpecularInputs michael@0: { michael@0: IN_DISTANT_SPECULAR_IN = IN_LIGHTING_IN michael@0: }; michael@0: michael@0: enum CropAtts michael@0: { michael@0: ATT_CROP_RECT = 0 // Rect michael@0: }; michael@0: michael@0: enum CropInputs michael@0: { michael@0: IN_CROP_IN = 0 michael@0: }; michael@0: michael@0: enum PremultiplyInputs michael@0: { michael@0: IN_PREMULTIPLY_IN = 0 michael@0: }; michael@0: michael@0: enum UnpremultiplyInputs michael@0: { michael@0: IN_UNPREMULTIPLY_IN = 0 michael@0: }; michael@0: michael@0: class FilterNode : public RefCounted michael@0: { michael@0: public: michael@0: MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(FilterNode) michael@0: virtual ~FilterNode() {} michael@0: michael@0: virtual FilterBackend GetBackendType() = 0; michael@0: michael@0: virtual void SetInput(uint32_t aIndex, SourceSurface *aSurface) { MOZ_CRASH(); } michael@0: virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) { MOZ_CRASH(); } michael@0: michael@0: virtual void SetAttribute(uint32_t aIndex, bool) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, uint32_t) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, Float) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Size &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const IntSize &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const IntPoint &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Rect &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const IntRect &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Point &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Matrix &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Matrix5x4 &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Point3D &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Color &) { MOZ_CRASH(); } michael@0: virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) { MOZ_CRASH(); } michael@0: michael@0: protected: michael@0: friend class Factory; michael@0: michael@0: FilterNode() {} michael@0: }; michael@0: michael@0: } michael@0: } michael@0: michael@0: #endif