1package com.jme3.scene.plugins.blender.textures.blending;
2
3import com.jme3.scene.plugins.blender.BlenderContext;
4import com.jme3.texture.Texture;
5
6/**
7 * An interface for texture blending classes (the classes that mix the texture
8 * pixels with the material colors).
9 *
10 * @author Marcin Roguski (Kaelthas)
11 */
12public interface TextureBlender {
13	// types of blending
14	int	MTEX_BLEND			= 0;
15	int	MTEX_MUL			= 1;
16	int	MTEX_ADD			= 2;
17	int	MTEX_SUB			= 3;
18	int	MTEX_DIV			= 4;
19	int	MTEX_DARK			= 5;
20	int	MTEX_DIFF			= 6;
21	int	MTEX_LIGHT			= 7;
22	int	MTEX_SCREEN			= 8;
23	int	MTEX_OVERLAY		= 9;
24	int	MTEX_BLEND_HUE		= 10;
25	int	MTEX_BLEND_SAT		= 11;
26	int	MTEX_BLEND_VAL		= 12;
27	int	MTEX_BLEND_COLOR	= 13;
28	int	MTEX_NUM_BLENDTYPES	= 14;
29
30	/**
31	 * This method blends the given texture with material color and the defined
32	 * color in 'map to' panel. As a result of this method a new texture is
33	 * created. The input texture is NOT.
34	 *
35	 * @param materialColor
36	 *            the material diffuse color
37	 * @param texture
38	 *            the texture we use in blending
39	 * @param color
40	 *            the color defined for the texture
41	 * @param affectFactor
42	 *            the factor that the color affects the texture (value form 0.0
43	 *            to 1.0)
44	 * @param blendType
45	 *            the blending type
46	 * @param blenderContext
47	 *            the blender context
48	 * @return new texture that was created after the blending
49	 */
50	Texture blend(float[] materialColor, Texture texture, float[] color, float affectFactor, int blendType, boolean neg, BlenderContext blenderContext);
51}
52