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 |