/*global define*/
define([
'../Core/freezeObject',
'./BlendEquation',
'./BlendFunction'
], function(
freezeObject,
BlendEquation,
BlendFunction) {
"use strict";
/**
* The blending state combines {@link BlendEquation} and {@link BlendFunction} and the
* enabled
flag to define the full blending state for combining source and
* destination fragments when rendering.
*
* This is a helper when using custom render states with {@link Appearance#renderState}. *
* * @namespace * @alias BlendingState */ var BlendingState = { /** * Blending is disabled. * * @type {Object} * @constant */ DISABLED : freezeObject({ enabled : false }), /** * Blending is enabled using alpha blending,source(source.alpha) + destination(1 - source.alpha)
.
*
* @type {Object}
* @constant
*/
ALPHA_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.SOURCE_ALPHA,
functionSourceAlpha : BlendFunction.SOURCE_ALPHA,
functionDestinationRgb : BlendFunction.ONE_MINUS_SOURCE_ALPHA,
functionDestinationAlpha : BlendFunction.ONE_MINUS_SOURCE_ALPHA
}),
/**
* Blending is enabled using alpha blending with premultiplied alpha, source + destination(1 - source.alpha)
.
*
* @type {Object}
* @constant
*/
PRE_MULTIPLIED_ALPHA_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.ONE,
functionSourceAlpha : BlendFunction.ONE,
functionDestinationRgb : BlendFunction.ONE_MINUS_SOURCE_ALPHA,
functionDestinationAlpha : BlendFunction.ONE_MINUS_SOURCE_ALPHA
}),
/**
* Blending is enabled using additive blending, source(source.alpha) + destination
.
*
* @type {Object}
* @constant
*/
ADDITIVE_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.SOURCE_ALPHA,
functionSourceAlpha : BlendFunction.SOURCE_ALPHA,
functionDestinationRgb : BlendFunction.ONE,
functionDestinationAlpha : BlendFunction.ONE
})
};
return freezeObject(BlendingState);
});