* Small fixes in DDSLoader

* Moved ImageFlipper to core-plugins 

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7664 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
sha..rd 14 years ago
parent c6d887cf5a
commit 8a9e717ca9
  1. 22
      engine/src/core-plugins/com/jme3/texture/plugins/DDSLoader.java
  2. 11
      engine/src/core-plugins/com/jme3/texture/plugins/DXTFlipper.java
  3. 10
      engine/src/core-plugins/com/jme3/texture/plugins/ImageFlipper.java

@ -32,17 +32,20 @@
package com.jme3.texture.plugins; package com.jme3.texture.plugins;
import com.jme3.asset.*; import com.jme3.asset.AssetInfo;
import com.jme3.util.*;
import com.jme3.asset.AssetLoader; import com.jme3.asset.AssetLoader;
import com.jme3.asset.TextureKey;
import com.jme3.texture.Image; import com.jme3.texture.Image;
import com.jme3.texture.Image.Format; import com.jme3.texture.Image.Format;
import com.jme3.util.BufferUtils;
import com.jme3.util.LittleEndien;
import java.io.DataInput; import java.io.DataInput;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
/** /**
@ -217,7 +220,8 @@ public class DDSLoader implements AssetLoader {
} else if (mipMapCount != expectedMipmaps) { } else if (mipMapCount != expectedMipmaps) {
// changed to warning- images often do not have the required amount, // changed to warning- images often do not have the required amount,
// or specify that they have mipmaps but include only the top level.. // or specify that they have mipmaps but include only the top level..
logger.warning("Got " + mipMapCount + "mipmaps, expected" + expectedMipmaps); logger.log(Level.WARNING, "Got {0} mipmaps, expected {1}",
new Object[]{mipMapCount, expectedMipmaps});
} }
} else { } else {
mipMapCount = 1; mipMapCount = 1;
@ -293,7 +297,8 @@ public class DDSLoader implements AssetLoader {
logger.warning("Must use linear size with fourcc"); logger.warning("Must use linear size with fourcc");
pitchOrSize = size; pitchOrSize = size;
} else if (pitchOrSize != size) { } else if (pitchOrSize != size) {
logger.warning("Expected size = " + size + ", real = " + pitchOrSize); logger.log(Level.WARNING, "Expected size = {0}, real = {1}",
new Object[]{size, pitchOrSize});
} }
} else { } else {
pitchOrSize = size; pitchOrSize = size;
@ -363,7 +368,8 @@ public class DDSLoader implements AssetLoader {
logger.warning("Linear size said to contain valid value but does not"); logger.warning("Linear size said to contain valid value but does not");
pitchOrSize = size; pitchOrSize = size;
} else if (pitchOrSize != size) { } else if (pitchOrSize != size) {
logger.warning("Expected size = " + size + ", real = " + pitchOrSize); logger.log(Level.WARNING, "Expected size = {0}, real = {1}",
new Object[]{size, pitchOrSize});
} }
} else { } else {
pitchOrSize = size; pitchOrSize = size;
@ -603,7 +609,7 @@ public class DDSLoader implements AssetLoader {
/** /**
* Checks if flags contains the specified mask * Checks if flags contains the specified mask
*/ */
private static final boolean is(int flags, int mask) { private static boolean is(int flags, int mask) {
return (flags & mask) == mask; return (flags & mask) == mask;
} }
@ -648,8 +654,8 @@ public class DDSLoader implements AssetLoader {
/** /**
* Converts a int representing a FourCC into a String * Converts a int representing a FourCC into a String
*/ */
private static final String string(int value) { private static String string(int value) {
StringBuffer buf = new StringBuffer(); StringBuilder buf = new StringBuilder();
buf.append((char) (value & 0xFF)); buf.append((char) (value & 0xFF));
buf.append((char) ((value & 0xFF00) >> 8)); buf.append((char) ((value & 0xFF00) >> 8));

@ -38,6 +38,7 @@ import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
/** /**
* DXTFlipper is a utility class used to flip along Y axis DXT compressed textures.
* *
* @author Kirill Vainer * @author Kirill Vainer
*/ */
@ -69,7 +70,7 @@ public class DXTFlipper {
return data; return data;
} }
public static void flipDXT5Block(byte[] block, int h){ private static void flipDXT5Block(byte[] block, int h){
if (h == 1) if (h == 1)
return; return;
@ -122,7 +123,7 @@ public class DXTFlipper {
assert c0 == block[0] && c1 == block[1]; assert c0 == block[0] && c1 == block[1];
} }
public static void flipDXT3Block(byte[] block, int h){ private static void flipDXT3Block(byte[] block, int h){
if (h == 1) if (h == 1)
return; return;
@ -164,7 +165,7 @@ public class DXTFlipper {
* @param block * @param block
* @param h * @param h
*/ */
public static void flipDXT1Block(byte[] block, int h){ private static void flipDXT1orDXTA3Block(byte[] block, int h){
byte tmp; byte tmp;
switch (h){ switch (h){
case 1: case 1:
@ -244,7 +245,7 @@ public class DXTFlipper {
if (type == 4 || type == 5) if (type == 4 || type == 5)
flipDXT5Block(colorBlock, h); flipDXT5Block(colorBlock, h);
else else
flipDXT1Block(colorBlock, h); flipDXT1orDXTA3Block(colorBlock, h);
// write block (no need to flip block indexes, only pixels // write block (no need to flip block indexes, only pixels
// inside block // inside block
@ -301,7 +302,7 @@ public class DXTFlipper {
if (type == 4 || type == 5) if (type == 4 || type == 5)
flipDXT5Block(colorBlock, h); flipDXT5Block(colorBlock, h);
else else
flipDXT1Block(colorBlock, h); flipDXT1orDXTA3Block(colorBlock, h);
retImg.put(colorBlock); retImg.put(colorBlock);
} }

@ -30,11 +30,19 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package com.jme3.texture; package com.jme3.texture.plugins;
import com.jme3.texture.Image;
import com.jme3.util.BufferUtils; import com.jme3.util.BufferUtils;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
/**
* ImageFlipper is a utility class used to flip images across the Y axis.
* Due to the standard of where the image origin is between OpenGL and
* other software, this class is required.
*
* @author Kirill Vainer
*/
public class ImageFlipper { public class ImageFlipper {
public static void flipImage(Image img, int index){ public static void flipImage(Image img, int index){
Loading…
Cancel
Save