2
0
Эх сурвалжийг харах

Merge branch 'load-bmp-v5-header' of https://github.com/saitoha/stb into working
Update version number

Sean Barrett 11 жил өмнө
parent
commit
5753c13f25
1 өөрчлөгдсөн 15 нэмэгдсэн , 8 устгасан
  1. 15 8
      stb_image.h

+ 15 - 8
stb_image.h

@@ -1,4 +1,4 @@
-/* stb_image - v1.38 - public domain JPEG/PNG reader - http://nothings.org/stb_image.c
+/* stb_image - v1.39 - public domain JPEG/PNG reader - http://nothings.org/stb_image.c
    when you control the images you're loading
    when you control the images you're loading
                                      no warranty implied; use at your own risk
                                      no warranty implied; use at your own risk
 
 
@@ -26,13 +26,13 @@
       - overridable dequantizing-IDCT, YCbCr-to-RGB conversion (define STBI_SIMD)
       - overridable dequantizing-IDCT, YCbCr-to-RGB conversion (define STBI_SIMD)
 
 
    Latest revisions:
    Latest revisions:
+      1.39 (2014-06-15) TGA optimization fix, multiple BMP fixes
       1.38 (2014-06-06) suppress MSVC run-time warnings, fix accidental rename of 'skip'
       1.38 (2014-06-06) suppress MSVC run-time warnings, fix accidental rename of 'skip'
       1.37 (2014-06-04) remove duplicate typedef
       1.37 (2014-06-04) remove duplicate typedef
       1.36 (2014-06-03) converted to header file, allow reading incorrect iphoned-images without iphone flag
       1.36 (2014-06-03) converted to header file, allow reading incorrect iphoned-images without iphone flag
       1.35 (2014-05-27) warnings, bugfixes, TGA optimization, etc
       1.35 (2014-05-27) warnings, bugfixes, TGA optimization, etc
       1.34 (unknown   ) warning fix
       1.34 (unknown   ) warning fix
       1.33 (2011-07-14) minor fixes suggested by Dave Moore
       1.33 (2011-07-14) minor fixes suggested by Dave Moore
-      1.32 (2011-07-13) info support for all filetypes (SpartanJ)
 
 
    See end of file for full revision history.
    See end of file for full revision history.
 
 
@@ -63,8 +63,9 @@
     Arseny Kapoulkine                            Blazej Dariusz Roszkowski
     Arseny Kapoulkine                            Blazej Dariusz Roszkowski
                                                  Thibault Reuille
                                                  Thibault Reuille
  If your name should be here but                 Paul Du Bois
  If your name should be here but                 Paul Du Bois
- isn't let Sean know.                            Guillaume George
-
+ isn't, let Sean know.                           Guillaume George
+                                                 Jerry Jansson
+                                                 Hayaki Saito
 */
 */
 
 
 #ifndef STBI_INCLUDE_STB_IMAGE_H
 #ifndef STBI_INCLUDE_STB_IMAGE_H
@@ -2908,7 +2909,7 @@ static int stbi__bmp_test_raw(stbi__context *s)
    stbi__get16le(s); // discard reserved
    stbi__get16le(s); // discard reserved
    stbi__get32le(s); // discard data offset
    stbi__get32le(s); // discard data offset
    sz = stbi__get32le(s);
    sz = stbi__get32le(s);
-   r = (sz == 12 || sz == 40 || sz == 56 || sz == 108);
+   r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);
    return r;
    return r;
 }
 }
 
 
@@ -2973,7 +2974,7 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int
    stbi__get16le(s); // discard reserved
    stbi__get16le(s); // discard reserved
    offset = stbi__get32le(s);
    offset = stbi__get32le(s);
    hsz = stbi__get32le(s);
    hsz = stbi__get32le(s);
-   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown");
+   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown");
    if (hsz == 12) {
    if (hsz == 12) {
       s->img_x = stbi__get16le(s);
       s->img_x = stbi__get16le(s);
       s->img_y = stbi__get16le(s);
       s->img_y = stbi__get16le(s);
@@ -3032,7 +3033,7 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int
                return stbi__errpuc("bad BMP", "bad BMP");
                return stbi__errpuc("bad BMP", "bad BMP");
          }
          }
       } else {
       } else {
-         assert(hsz == 108);
+         assert(hsz == 108 || hsz == 124);
          mr = stbi__get32le(s);
          mr = stbi__get32le(s);
          mg = stbi__get32le(s);
          mg = stbi__get32le(s);
          mb = stbi__get32le(s);
          mb = stbi__get32le(s);
@@ -3040,6 +3041,12 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int
          stbi__get32le(s); // discard color space
          stbi__get32le(s); // discard color space
          for (i=0; i < 12; ++i)
          for (i=0; i < 12; ++i)
             stbi__get32le(s); // discard color space parameters
             stbi__get32le(s); // discard color space parameters
+         if (hsz == 124) {
+            stbi__get32le(s); // discard rendering intent
+            stbi__get32le(s); // discard offset of profile data
+            stbi__get32le(s); // discard size of profile data
+            stbi__get32le(s); // discard reserved
+         }
       }
       }
       if (bpp < 16)
       if (bpp < 16)
          psize = (offset - 14 - hsz) >> 2;
          psize = (offset - 14 - hsz) >> 2;
@@ -4369,7 +4376,7 @@ static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)
    }
    }
    stbi__skip(s,12);
    stbi__skip(s,12);
    hsz = stbi__get32le(s);
    hsz = stbi__get32le(s);
-   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108) {
+   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) {
        stbi__rewind( s );
        stbi__rewind( s );
        return 0;
        return 0;
    }
    }