Add luminance alpha support
authorJames Le Cuirot <chewi@aura-online.co.uk>
Tue, 27 May 2014 21:28:27 +0000 (27 22:28 +0100)
committerJames Le Cuirot <chewi@aura-online.co.uk>
Sun, 1 Jun 2014 21:58:59 +0000 (1 22:58 +0100)
Admittedly I have no idea what this is but it was originally added by
Bit Blot because it's needed by Aquaria.

include/GL/glpng.h
src/glpng.c

index 172a757..96e95e9 100644 (file)
@@ -57,6 +57,7 @@ extern "C" {
 #define PNG_SIMPLEMIPMAP PNG_SIMPLEMIPMAPS
 
 /* Transparency parameters */
+#define PNG_LUMINANCEALPHA -4
 #define PNG_CALLBACKT -3 /* Call the callback function to generate alpha   */
 #define PNG_ALPHA     -2 /* Use alpha channel in PNG file, if there is one */
 #define PNG_SOLID     -1 /* No transparency                                */
index e671bd1..e19c35d 100644 (file)
@@ -503,7 +503,7 @@ static int pngLoadCommon(int mipmap, int trans, pngInfo *pinfo, png_structp png,
                }
                else
                #endif
-               if (trans == PNG_SOLID || trans == PNG_ALPHA || color == PNG_COLOR_TYPE_RGB_ALPHA || color == PNG_COLOR_TYPE_GRAY_ALPHA) {
+               if (trans == PNG_SOLID || trans == PNG_ALPHA || trans == PNG_LUMINANCEALPHA || color == PNG_COLOR_TYPE_RGB_ALPHA || color == PNG_COLOR_TYPE_GRAY_ALPHA) {
                        GLenum glformat;
                        GLint glcomponent;
 
@@ -528,6 +528,9 @@ static int pngLoadCommon(int mipmap, int trans, pngInfo *pinfo, png_structp png,
                                        goto finish;
                        }
 
+                       if (trans == PNG_LUMINANCEALPHA)
+                               glformat = GL_LUMINANCE_ALPHA;
+
                        if (mipmap == PNG_BUILDMIPMAPS)
                                Build2DMipmaps(glcomponent, width, height, glformat, data, 1);
                        else if (mipmap == PNG_SIMPLEMIPMAPS)