• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.jme3.scene.plugins.blender.textures.blending;
2 
3 import java.util.logging.Level;
4 import java.util.logging.Logger;
5 
6 import com.jme3.scene.plugins.blender.BlenderContext;
7 import com.jme3.texture.Texture;
8 import com.jme3.texture.Image.Format;
9 
10 /**
11  * This class creates the texture blending class depending on the texture type.
12  *
13  * @author Marcin Roguski (Kaelthas)
14  */
15 public class TextureBlenderFactory {
16 	private static final Logger	LOGGER	= Logger.getLogger(TextureBlenderFactory.class.getName());
17 
18 	/**
19 	 * This method creates the blending class.
20 	 *
21 	 * @param format
22 	 *            the texture format
23 	 * @returntexture blending class
24 	 */
createTextureBlender(Format format)25 	public static TextureBlender createTextureBlender(Format format) {
26 		switch (format) {
27 			case Luminance8:
28 			case Luminance8Alpha8:
29 			case Luminance16:
30 			case Luminance16Alpha16:
31 			case Luminance16F:
32 			case Luminance16FAlpha16F:
33 			case Luminance32F:
34 				return new TextureBlenderLuminance();
35 			case RGBA8:
36 			case ABGR8:
37 			case BGR8:
38 			case RGB8:
39 			case RGB10:
40 			case RGB111110F:
41 			case RGB16:
42 			case RGB16F:
43 			case RGB16F_to_RGB111110F:
44 			case RGB16F_to_RGB9E5:
45 			case RGB32F:
46 			case RGB565:
47 			case RGB5A1:
48 			case RGB9E5:
49 			case RGBA16:
50 			case RGBA16F:
51 			case RGBA32F:
52 				return new TextureBlenderAWT();
53 			case DXT1:
54 			case DXT1A:
55 			case DXT3:
56 			case DXT5:
57 				return new TextureBlenderDDS();
58 			case Alpha16:
59 			case Alpha8:
60 			case ARGB4444:
61 			case Depth:
62 			case Depth16:
63 			case Depth24:
64 			case Depth32:
65 			case Depth32F:
66 			case Intensity16:
67 			case Intensity8:
68 			case LATC:
69 			case LTC:
70 				LOGGER.log(Level.WARNING, "Image type not yet supported for blending: {0}. Returning a blender that does not change the texture.", format);
71 				return new TextureBlender() {
72 					@Override
73 					public Texture blend(float[] materialColor, Texture texture, float[] color, float affectFactor, int blendType, boolean neg, BlenderContext blenderContext) {
74 						return texture;
75 					}
76 				};
77 			default:
78 				throw new IllegalStateException("Unknown image format type: " + format);
79 		}
80 	}
81 }
82