src/lib/png.c
changeset 111 a31ffb59bc19
parent 110 81a0afb4b229
child 127 df89d13f2354
equal deleted inserted replaced
110:81a0afb4b229 111:a31ffb59bc19
   401 /**
   401 /**
   402  * Converts a pixel's data into a png_color
   402  * Converts a pixel's data into a png_color
   403  */
   403  */
   404 static inline void png_pixel_data (const png_color **outp, const struct pt_png_header *header, const uint8_t *data, size_t row, size_t col)
   404 static inline void png_pixel_data (const png_color **outp, const struct pt_png_header *header, const uint8_t *data, size_t row, size_t col)
   405 {
   405 {
   406     if (header->color_type == PNG_COLOR_TYPE_PALETTE) {
   406     // palette entry number
   407         // palette entry number
   407     int p;
   408         int p;
   408 
   409 
   409     switch (header->color_type) {
   410         if (header->bit_depth == 8)
   410         case PNG_COLOR_TYPE_PALETTE:
   411             p = *((uint8_t *) tile_row_col(header, data, row, col));
   411             switch (header->bit_depth) {
   412         else
   412                 case 8:
   413             // unknown
   413                     // 8bpp palette
       
   414                     p = *((uint8_t *) tile_row_col(header, data, row, col));
       
   415 
       
   416                     break;
       
   417                 
       
   418                 default :
       
   419                     // unknown
       
   420                     return;
       
   421             }
       
   422 
       
   423             // hrhr - assume our working data is valid (or we have 255 palette entries, so it doesn't matter...)
       
   424             assert(p < header->num_palette);
       
   425             
       
   426             // reference data from palette
       
   427             *outp = &header->palette[p];
       
   428             
   414             return;
   429             return;
   415 
   430 
   416         // hrhr - assume our working data is valid (or we have 255 palette entries, so it doesn't matter...)
   431         default :
   417         assert(p < header->num_palette);
   432             // unknown pixel format
   418         
   433             return;
   419         // reference data from palette
       
   420         *outp = &header->palette[p];
       
   421 
       
   422     } else {
       
   423         // unknown
       
   424     }
   434     }
   425 }
   435 }
   426 
   436 
   427 /**
   437 /**
   428  * Write scaled tile data
   438  * Write scaled tile data