/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.flex.compiler.internal.fxg.dom.types;
/**
* The BlendMode enumeration determines which blend mode to use when
* compositing with the background.
*
* The ordinal for the enumeration is significant for the following BlendModes supported in FXGVersion.v1_0
* as it matches the SWF specification for the BlendMode property of the PlaceObject3 tag.
*
* <pre>
* 0 = normal
* 1 = normal
* 2 = layer
* 3 = multiply
* 4 = screen
* 5 = lighten
* 6 = darken
* 7 = difference
* 8 = add
* 9 = subtract
* 10 = invert
* 11 = alpha
* 12 = erase
* 13 = overlay
* 14 = hardlight
* </pre>
*
* The following Blendmodes were introduced in FXGVersion 2.0. Their implementation needs PixelBurst support.
*
* <pre>
* colordodge
* colorburn
* exclusion
* softlight
* hue
* saturation
* color
* luminosity
* </pre>
*
* The following was introduced in FXG 2.0 which acts like blendMode="layer" except when alpha is 0 or 1, in which case it acts like blendMode="normal"
* <pre>
* auto
* </pre>
*/
public enum BlendMode
{
/**
* The enum representing the default (unspecified) blend mode.
*/
NORMAL0(),
/**
* The enum representing a 'normal' blend mode.
*/
NORMAL(),
/**
* The enum representing a 'layer' blend mode.
*/
LAYER(),
/**
* The enum representing a 'multiply' blend mode.
*/
MULTIPLY(),
/**
* The enum representing a 'screen' blend mode.
*/
SCREEN(),
/**
* The enum representing a 'lighten' blend mode.
*/
LIGHTEN(),
/**
* The enum representing a 'darken' blend mode.
*/
DARKEN(),
/**
* The enum representing an 'difference' blend mode.
*/
DIFFERENCE(),
/**
* The enum representing a 'add' blend mode.
*/
ADD(),
/**
* The enum representing a 'subtract' blend mode.
*/
SUBTRACT(),
/**
* The enum representing an 'invert' blend mode.
*/
INVERT(),
/**
* The enum representing an 'alpha' blend mode.
*/
ALPHA(),
/**
* The enum representing an 'erase' blend mode.
*/
ERASE(),
/**
* The enum representing a 'overlay' blend mode.
*/
OVERLAY(),
/**
* The enum representing a 'hardlight' blend mode.
*/
HARDLIGHT(),
/**
* The enum representing an 'auto' blend mode.
*/
AUTO(),
/**
* The enum representing a 'colordodge' blend mode.
*/
COLORDODGE("mx.graphics.shaderClasses.ColorDodgeShader"),
/**
* The enum representing a 'colorburn' blend mode.
*/
COLORBURN("mx.graphics.shaderClasses.ColorBurnShader"),
/**
* The enum representing a 'exclusion' blend mode.
*/
EXCLUSION("mx.graphics.shaderClasses.ExclusionShader"),
/**
* The enum representing a 'softlight' blend mode.
*/
SOFTLIGHT("mx.graphics.shaderClasses.SoftLightShader"),
/**
* The enum representing a 'hue' blend mode.
*/
HUE("mx.graphics.shaderClasses.HueShader"),
/**
* The enum representing a 'saturation' blend mode.
*/
SATURATION("mx.graphics.shaderClasses.SaturationShader"),
/**
* The enum representing a 'color' blend mode.
*/
COLOR("mx.graphics.shaderClasses.ColorShader"),
/**
* The enum representing a 'luminosity' blend mode.
*/
LUMINOSITY("mx.graphics.shaderClasses.LuminosityShader");
/**
* Qualified name of the class required for this blend mode. Only the blend
* modes that need pixel bender support relies on a class. <code>null</code>
* if this blend mode doesn't require pixel bender support.
*/
private String className;
BlendMode()
{
this.className = null;
}
BlendMode(String className)
{
this.className = className;
}
public boolean needsPixelBenderSupport()
{
return className != null;
}
/**
* Returns the qualified name of the class that this blend mode
* requires. <code>null</code> if this blend mode doesn't require pixel
* bender support.
*/
public String getClassName() {
return className;
}
}