1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/2d/Filters.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,501 @@ 1.4 +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- 1.5 + * This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#ifndef MOZILLA_GFX_FILTERS_H_ 1.10 +#define MOZILLA_GFX_FILTERS_H_ 1.11 + 1.12 +#include "Types.h" 1.13 +#include "mozilla/RefPtr.h" 1.14 + 1.15 +#include "Point.h" 1.16 +#include "Matrix.h" 1.17 +#include <vector> 1.18 + 1.19 +namespace mozilla { 1.20 +namespace gfx { 1.21 + 1.22 +class SourceSurface; 1.23 + 1.24 +enum FilterBackend { 1.25 + FILTER_BACKEND_SOFTWARE = 0, 1.26 + FILTER_BACKEND_DIRECT2D1_1, 1.27 + FILTER_BACKEND_RECORDING 1.28 +}; 1.29 + 1.30 +enum TransformFilterAtts 1.31 +{ 1.32 + ATT_TRANSFORM_MATRIX = 0, // Matrix 1.33 + ATT_TRANSFORM_FILTER // Filter 1.34 +}; 1.35 + 1.36 +enum TransformFilterInputs 1.37 +{ 1.38 + IN_TRANSFORM_IN = 0 1.39 +}; 1.40 + 1.41 +enum BlendFilterAtts 1.42 +{ 1.43 + ATT_BLEND_BLENDMODE = 0 // uint32_t 1.44 +}; 1.45 + 1.46 +enum BlendMode 1.47 +{ 1.48 + BLEND_MODE_MULTIPLY = 0, 1.49 + BLEND_MODE_SCREEN, 1.50 + BLEND_MODE_DARKEN, 1.51 + BLEND_MODE_LIGHTEN 1.52 +}; 1.53 + 1.54 +enum BlendFilterInputs 1.55 +{ 1.56 + IN_BLEND_IN = 0, 1.57 + IN_BLEND_IN2 1.58 +}; 1.59 + 1.60 +enum MorphologyFilterAtts 1.61 +{ 1.62 + ATT_MORPHOLOGY_RADII = 0, // IntSize 1.63 + ATT_MORPHOLOGY_OPERATOR // MorphologyOperator 1.64 +}; 1.65 + 1.66 +enum MorphologyOperator 1.67 +{ 1.68 + MORPHOLOGY_OPERATOR_ERODE = 0, 1.69 + MORPHOLOGY_OPERATOR_DILATE 1.70 +}; 1.71 + 1.72 +enum MorphologyFilterInputs 1.73 +{ 1.74 + IN_MORPHOLOGY_IN = 0 1.75 +}; 1.76 + 1.77 +enum AlphaMode 1.78 +{ 1.79 + ALPHA_MODE_PREMULTIPLIED = 0, 1.80 + ALPHA_MODE_STRAIGHT 1.81 +}; 1.82 + 1.83 +enum ColorMatrixFilterAtts 1.84 +{ 1.85 + ATT_COLOR_MATRIX_MATRIX = 0, // Matrix5x4 1.86 + ATT_COLOR_MATRIX_ALPHA_MODE // AlphaMode 1.87 +}; 1.88 + 1.89 +enum ColorMatrixFilterInputs 1.90 +{ 1.91 + IN_COLOR_MATRIX_IN = 0 1.92 +}; 1.93 + 1.94 +enum FloodFilterAtts 1.95 +{ 1.96 + ATT_FLOOD_COLOR = 0 // Color 1.97 +}; 1.98 + 1.99 +enum FloodFilterInputs 1.100 +{ 1.101 + IN_FLOOD_IN = 0 1.102 +}; 1.103 + 1.104 +enum TileFilterAtts 1.105 +{ 1.106 + ATT_TILE_SOURCE_RECT = 0 // IntRect 1.107 +}; 1.108 + 1.109 +enum TileFilterInputs 1.110 +{ 1.111 + IN_TILE_IN = 0 1.112 +}; 1.113 + 1.114 +enum TransferAtts 1.115 +{ 1.116 + ATT_TRANSFER_DISABLE_R = 0, // bool 1.117 + ATT_TRANSFER_DISABLE_G, // bool 1.118 + ATT_TRANSFER_DISABLE_B, // bool 1.119 + ATT_TRANSFER_DISABLE_A // bool 1.120 +}; 1.121 + 1.122 +enum TransferInputs 1.123 +{ 1.124 + IN_TRANSFER_IN = 0 1.125 +}; 1.126 + 1.127 +enum TableTransferAtts 1.128 +{ 1.129 + ATT_TABLE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, 1.130 + ATT_TABLE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, 1.131 + ATT_TABLE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, 1.132 + ATT_TABLE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, 1.133 + ATT_TABLE_TRANSFER_TABLE_R, // Float[] 1.134 + ATT_TABLE_TRANSFER_TABLE_G, // Float[] 1.135 + ATT_TABLE_TRANSFER_TABLE_B, // Float[] 1.136 + ATT_TABLE_TRANSFER_TABLE_A // Float[] 1.137 +}; 1.138 + 1.139 +enum TableTransferInputs 1.140 +{ 1.141 + IN_TABLE_TRANSFER_IN = IN_TRANSFER_IN 1.142 +}; 1.143 + 1.144 +enum DiscreteTransferAtts 1.145 +{ 1.146 + ATT_DISCRETE_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, 1.147 + ATT_DISCRETE_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, 1.148 + ATT_DISCRETE_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, 1.149 + ATT_DISCRETE_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, 1.150 + ATT_DISCRETE_TRANSFER_TABLE_R, // Float[] 1.151 + ATT_DISCRETE_TRANSFER_TABLE_G, // Float[] 1.152 + ATT_DISCRETE_TRANSFER_TABLE_B, // Float[] 1.153 + ATT_DISCRETE_TRANSFER_TABLE_A // Float[] 1.154 +}; 1.155 + 1.156 +enum DiscreteTransferInputs 1.157 +{ 1.158 + IN_DISCRETE_TRANSFER_IN = IN_TRANSFER_IN 1.159 +}; 1.160 + 1.161 +enum LinearTransferAtts 1.162 +{ 1.163 + ATT_LINEAR_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, 1.164 + ATT_LINEAR_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, 1.165 + ATT_LINEAR_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, 1.166 + ATT_LINEAR_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, 1.167 + ATT_LINEAR_TRANSFER_SLOPE_R, // Float 1.168 + ATT_LINEAR_TRANSFER_SLOPE_G, // Float 1.169 + ATT_LINEAR_TRANSFER_SLOPE_B, // Float 1.170 + ATT_LINEAR_TRANSFER_SLOPE_A, // Float 1.171 + ATT_LINEAR_TRANSFER_INTERCEPT_R, // Float 1.172 + ATT_LINEAR_TRANSFER_INTERCEPT_G, // Float 1.173 + ATT_LINEAR_TRANSFER_INTERCEPT_B, // Float 1.174 + ATT_LINEAR_TRANSFER_INTERCEPT_A // Float 1.175 +}; 1.176 + 1.177 +enum LinearTransferInputs 1.178 +{ 1.179 + IN_LINEAR_TRANSFER_IN = IN_TRANSFER_IN 1.180 +}; 1.181 + 1.182 +enum GammaTransferAtts 1.183 +{ 1.184 + ATT_GAMMA_TRANSFER_DISABLE_R = ATT_TRANSFER_DISABLE_R, 1.185 + ATT_GAMMA_TRANSFER_DISABLE_G = ATT_TRANSFER_DISABLE_G, 1.186 + ATT_GAMMA_TRANSFER_DISABLE_B = ATT_TRANSFER_DISABLE_B, 1.187 + ATT_GAMMA_TRANSFER_DISABLE_A = ATT_TRANSFER_DISABLE_A, 1.188 + ATT_GAMMA_TRANSFER_AMPLITUDE_R, // Float 1.189 + ATT_GAMMA_TRANSFER_AMPLITUDE_G, // Float 1.190 + ATT_GAMMA_TRANSFER_AMPLITUDE_B, // Float 1.191 + ATT_GAMMA_TRANSFER_AMPLITUDE_A, // Float 1.192 + ATT_GAMMA_TRANSFER_EXPONENT_R, // Float 1.193 + ATT_GAMMA_TRANSFER_EXPONENT_G, // Float 1.194 + ATT_GAMMA_TRANSFER_EXPONENT_B, // Float 1.195 + ATT_GAMMA_TRANSFER_EXPONENT_A, // Float 1.196 + ATT_GAMMA_TRANSFER_OFFSET_R, // Float 1.197 + ATT_GAMMA_TRANSFER_OFFSET_G, // Float 1.198 + ATT_GAMMA_TRANSFER_OFFSET_B, // Float 1.199 + ATT_GAMMA_TRANSFER_OFFSET_A // Float 1.200 +}; 1.201 + 1.202 +enum GammaTransferInputs 1.203 +{ 1.204 + IN_GAMMA_TRANSFER_IN = IN_TRANSFER_IN 1.205 +}; 1.206 + 1.207 +enum ConvolveMatrixAtts 1.208 +{ 1.209 + ATT_CONVOLVE_MATRIX_KERNEL_SIZE = 0, // IntSize 1.210 + ATT_CONVOLVE_MATRIX_KERNEL_MATRIX, // Float[] 1.211 + ATT_CONVOLVE_MATRIX_DIVISOR, // Float 1.212 + ATT_CONVOLVE_MATRIX_BIAS, // Float 1.213 + ATT_CONVOLVE_MATRIX_TARGET, // IntPoint 1.214 + ATT_CONVOLVE_MATRIX_SOURCE_RECT, // IntRect 1.215 + ATT_CONVOLVE_MATRIX_EDGE_MODE, // ConvolveMatrixEdgeMode 1.216 + ATT_CONVOLVE_MATRIX_KERNEL_UNIT_LENGTH, // Size 1.217 + ATT_CONVOLVE_MATRIX_PRESERVE_ALPHA, // bool 1.218 +}; 1.219 + 1.220 +enum ConvolveMatrixEdgeMode 1.221 +{ 1.222 + EDGE_MODE_DUPLICATE = 0, 1.223 + EDGE_MODE_WRAP, 1.224 + EDGE_MODE_NONE 1.225 +}; 1.226 + 1.227 +enum ConvolveMatrixInputs 1.228 +{ 1.229 + IN_CONVOLVE_MATRIX_IN = 0 1.230 +}; 1.231 + 1.232 +enum DisplacementMapAtts 1.233 +{ 1.234 + ATT_DISPLACEMENT_MAP_SCALE = 0, // Float 1.235 + ATT_DISPLACEMENT_MAP_X_CHANNEL, // ColorChannel 1.236 + ATT_DISPLACEMENT_MAP_Y_CHANNEL // ColorChannel 1.237 +}; 1.238 + 1.239 +enum ColorChannel 1.240 +{ 1.241 + COLOR_CHANNEL_R = 0, 1.242 + COLOR_CHANNEL_G, 1.243 + COLOR_CHANNEL_B, 1.244 + COLOR_CHANNEL_A 1.245 +}; 1.246 + 1.247 +enum DisplacementMapInputs 1.248 +{ 1.249 + IN_DISPLACEMENT_MAP_IN = 0, 1.250 + IN_DISPLACEMENT_MAP_IN2 1.251 +}; 1.252 + 1.253 +enum TurbulenceAtts 1.254 +{ 1.255 + ATT_TURBULENCE_BASE_FREQUENCY = 0, // Size 1.256 + ATT_TURBULENCE_NUM_OCTAVES, // uint32_t 1.257 + ATT_TURBULENCE_SEED, // uint32_t 1.258 + ATT_TURBULENCE_STITCHABLE, // bool 1.259 + ATT_TURBULENCE_TYPE, // TurbulenceType 1.260 + ATT_TURBULENCE_RECT // IntRect 1.261 +}; 1.262 + 1.263 +enum TurbulenceType 1.264 +{ 1.265 + TURBULENCE_TYPE_TURBULENCE = 0, 1.266 + TURBULENCE_TYPE_FRACTAL_NOISE 1.267 +}; 1.268 + 1.269 +enum ArithmeticCombineAtts 1.270 +{ 1.271 + ATT_ARITHMETIC_COMBINE_COEFFICIENTS = 0 // Float[4] 1.272 +}; 1.273 + 1.274 +enum ArithmeticCombineInputs 1.275 +{ 1.276 + IN_ARITHMETIC_COMBINE_IN = 0, 1.277 + IN_ARITHMETIC_COMBINE_IN2 1.278 +}; 1.279 + 1.280 +enum CompositeAtts 1.281 +{ 1.282 + ATT_COMPOSITE_OPERATOR = 0 // CompositeOperator 1.283 +}; 1.284 + 1.285 +enum CompositeOperator 1.286 +{ 1.287 + COMPOSITE_OPERATOR_OVER = 0, 1.288 + COMPOSITE_OPERATOR_IN, 1.289 + COMPOSITE_OPERATOR_OUT, 1.290 + COMPOSITE_OPERATOR_ATOP, 1.291 + COMPOSITE_OPERATOR_XOR 1.292 +}; 1.293 + 1.294 +enum CompositeInputs 1.295 +{ 1.296 + // arbitrary number of inputs 1.297 + IN_COMPOSITE_IN_START = 0 1.298 +}; 1.299 + 1.300 +enum GaussianBlurAtts 1.301 +{ 1.302 + ATT_GAUSSIAN_BLUR_STD_DEVIATION = 0 // Float 1.303 +}; 1.304 + 1.305 +enum GaussianBlurInputs 1.306 +{ 1.307 + IN_GAUSSIAN_BLUR_IN = 0 1.308 +}; 1.309 + 1.310 +enum DirectionalBlurAtts 1.311 +{ 1.312 + ATT_DIRECTIONAL_BLUR_STD_DEVIATION = 0, // Float 1.313 + ATT_DIRECTIONAL_BLUR_DIRECTION // BlurDirection 1.314 +}; 1.315 + 1.316 +enum BlurDirection 1.317 +{ 1.318 + BLUR_DIRECTION_X = 0, 1.319 + BLUR_DIRECTION_Y 1.320 +}; 1.321 + 1.322 +enum DirectionalBlurInputs 1.323 +{ 1.324 + IN_DIRECTIONAL_BLUR_IN = 0 1.325 +}; 1.326 + 1.327 +enum LightingAtts 1.328 +{ 1.329 + ATT_POINT_LIGHT_POSITION = 0, // Point3D 1.330 + 1.331 + ATT_SPOT_LIGHT_POSITION, // Point3D 1.332 + ATT_SPOT_LIGHT_POINTS_AT, // Point3D 1.333 + ATT_SPOT_LIGHT_FOCUS, // Float 1.334 + ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, // Float 1.335 + 1.336 + ATT_DISTANT_LIGHT_AZIMUTH, // Float 1.337 + ATT_DISTANT_LIGHT_ELEVATION, // Float 1.338 + 1.339 + ATT_LIGHTING_COLOR, // Color 1.340 + ATT_LIGHTING_SURFACE_SCALE, // Float 1.341 + ATT_LIGHTING_KERNEL_UNIT_LENGTH, // Size 1.342 + 1.343 + ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT, // Float 1.344 + 1.345 + ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, // Float 1.346 + ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT // Float 1.347 +}; 1.348 + 1.349 +enum LightingInputs 1.350 +{ 1.351 + IN_LIGHTING_IN = 0 1.352 +}; 1.353 + 1.354 +enum PointDiffuseAtts 1.355 +{ 1.356 + ATT_POINT_DIFFUSE_POSITION = ATT_POINT_LIGHT_POSITION, 1.357 + ATT_POINT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, 1.358 + ATT_POINT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.359 + ATT_POINT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.360 + ATT_POINT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT 1.361 +}; 1.362 + 1.363 +enum PointDiffuseInputs 1.364 +{ 1.365 + IN_POINT_DIFFUSE_IN = IN_LIGHTING_IN 1.366 +}; 1.367 + 1.368 +enum SpotDiffuseAtts 1.369 +{ 1.370 + ATT_SPOT_DIFFUSE_POSITION = ATT_SPOT_LIGHT_POSITION, 1.371 + ATT_SPOT_DIFFUSE_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT, 1.372 + ATT_SPOT_DIFFUSE_FOCUS = ATT_SPOT_LIGHT_FOCUS, 1.373 + ATT_SPOT_DIFFUSE_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, 1.374 + ATT_SPOT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, 1.375 + ATT_SPOT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.376 + ATT_SPOT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.377 + ATT_SPOT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT 1.378 +}; 1.379 + 1.380 +enum SpotDiffuseInputs 1.381 +{ 1.382 + IN_SPOT_DIFFUSE_IN = IN_LIGHTING_IN 1.383 +}; 1.384 + 1.385 +enum DistantDiffuseAtts 1.386 +{ 1.387 + ATT_DISTANT_DIFFUSE_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH, 1.388 + ATT_DISTANT_DIFFUSE_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION, 1.389 + ATT_DISTANT_DIFFUSE_COLOR = ATT_LIGHTING_COLOR, 1.390 + ATT_DISTANT_DIFFUSE_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.391 + ATT_DISTANT_DIFFUSE_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.392 + ATT_DISTANT_DIFFUSE_DIFFUSE_CONSTANT = ATT_DIFFUSE_LIGHTING_DIFFUSE_CONSTANT 1.393 +}; 1.394 + 1.395 +enum DistantDiffuseInputs 1.396 +{ 1.397 + IN_DISTANT_DIFFUSE_IN = IN_LIGHTING_IN 1.398 +}; 1.399 + 1.400 +enum PointSpecularAtts 1.401 +{ 1.402 + ATT_POINT_SPECULAR_POSITION = ATT_POINT_LIGHT_POSITION, 1.403 + ATT_POINT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, 1.404 + ATT_POINT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.405 + ATT_POINT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.406 + ATT_POINT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, 1.407 + ATT_POINT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT 1.408 +}; 1.409 + 1.410 +enum PointSpecularInputs 1.411 +{ 1.412 + IN_POINT_SPECULAR_IN = IN_LIGHTING_IN 1.413 +}; 1.414 + 1.415 +enum SpotSpecularAtts 1.416 +{ 1.417 + ATT_SPOT_SPECULAR_POSITION = ATT_SPOT_LIGHT_POSITION, 1.418 + ATT_SPOT_SPECULAR_POINTS_AT = ATT_SPOT_LIGHT_POINTS_AT, 1.419 + ATT_SPOT_SPECULAR_FOCUS = ATT_SPOT_LIGHT_FOCUS, 1.420 + ATT_SPOT_SPECULAR_LIMITING_CONE_ANGLE = ATT_SPOT_LIGHT_LIMITING_CONE_ANGLE, 1.421 + ATT_SPOT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, 1.422 + ATT_SPOT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.423 + ATT_SPOT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.424 + ATT_SPOT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, 1.425 + ATT_SPOT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT 1.426 +}; 1.427 + 1.428 +enum SpotSpecularInputs 1.429 +{ 1.430 + IN_SPOT_SPECULAR_IN = IN_LIGHTING_IN 1.431 +}; 1.432 + 1.433 +enum DistantSpecularAtts 1.434 +{ 1.435 + ATT_DISTANT_SPECULAR_AZIMUTH = ATT_DISTANT_LIGHT_AZIMUTH, 1.436 + ATT_DISTANT_SPECULAR_ELEVATION = ATT_DISTANT_LIGHT_ELEVATION, 1.437 + ATT_DISTANT_SPECULAR_COLOR = ATT_LIGHTING_COLOR, 1.438 + ATT_DISTANT_SPECULAR_SURFACE_SCALE = ATT_LIGHTING_SURFACE_SCALE, 1.439 + ATT_DISTANT_SPECULAR_KERNEL_UNIT_LENGTH = ATT_LIGHTING_KERNEL_UNIT_LENGTH, 1.440 + ATT_DISTANT_SPECULAR_SPECULAR_CONSTANT = ATT_SPECULAR_LIGHTING_SPECULAR_CONSTANT, 1.441 + ATT_DISTANT_SPECULAR_SPECULAR_EXPONENT = ATT_SPECULAR_LIGHTING_SPECULAR_EXPONENT 1.442 +}; 1.443 + 1.444 +enum DistantSpecularInputs 1.445 +{ 1.446 + IN_DISTANT_SPECULAR_IN = IN_LIGHTING_IN 1.447 +}; 1.448 + 1.449 +enum CropAtts 1.450 +{ 1.451 + ATT_CROP_RECT = 0 // Rect 1.452 +}; 1.453 + 1.454 +enum CropInputs 1.455 +{ 1.456 + IN_CROP_IN = 0 1.457 +}; 1.458 + 1.459 +enum PremultiplyInputs 1.460 +{ 1.461 + IN_PREMULTIPLY_IN = 0 1.462 +}; 1.463 + 1.464 +enum UnpremultiplyInputs 1.465 +{ 1.466 + IN_UNPREMULTIPLY_IN = 0 1.467 +}; 1.468 + 1.469 +class FilterNode : public RefCounted<FilterNode> 1.470 +{ 1.471 +public: 1.472 + MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(FilterNode) 1.473 + virtual ~FilterNode() {} 1.474 + 1.475 + virtual FilterBackend GetBackendType() = 0; 1.476 + 1.477 + virtual void SetInput(uint32_t aIndex, SourceSurface *aSurface) { MOZ_CRASH(); } 1.478 + virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) { MOZ_CRASH(); } 1.479 + 1.480 + virtual void SetAttribute(uint32_t aIndex, bool) { MOZ_CRASH(); } 1.481 + virtual void SetAttribute(uint32_t aIndex, uint32_t) { MOZ_CRASH(); } 1.482 + virtual void SetAttribute(uint32_t aIndex, Float) { MOZ_CRASH(); } 1.483 + virtual void SetAttribute(uint32_t aIndex, const Size &) { MOZ_CRASH(); } 1.484 + virtual void SetAttribute(uint32_t aIndex, const IntSize &) { MOZ_CRASH(); } 1.485 + virtual void SetAttribute(uint32_t aIndex, const IntPoint &) { MOZ_CRASH(); } 1.486 + virtual void SetAttribute(uint32_t aIndex, const Rect &) { MOZ_CRASH(); } 1.487 + virtual void SetAttribute(uint32_t aIndex, const IntRect &) { MOZ_CRASH(); } 1.488 + virtual void SetAttribute(uint32_t aIndex, const Point &) { MOZ_CRASH(); } 1.489 + virtual void SetAttribute(uint32_t aIndex, const Matrix &) { MOZ_CRASH(); } 1.490 + virtual void SetAttribute(uint32_t aIndex, const Matrix5x4 &) { MOZ_CRASH(); } 1.491 + virtual void SetAttribute(uint32_t aIndex, const Point3D &) { MOZ_CRASH(); } 1.492 + virtual void SetAttribute(uint32_t aIndex, const Color &) { MOZ_CRASH(); } 1.493 + virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) { MOZ_CRASH(); } 1.494 + 1.495 +protected: 1.496 + friend class Factory; 1.497 + 1.498 + FilterNode() {} 1.499 +}; 1.500 + 1.501 +} 1.502 +} 1.503 + 1.504 +#endif