gfx/2d/Filters.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

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

mercurial