Home | History | Annotate | Download | only in blending
      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 	 */
     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