| 4106 | } |
| 4107 | |
| 4108 | static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) |
| 4109 | { |
| 4110 | unsigned pos = 0, i; |
| 4111 | if(color->palette) lodepng_free(color->palette); |
| 4112 | color->palettesize = chunkLength / 3; |
| 4113 | color->palette = (unsigned char*)lodepng_malloc(4 * color->palettesize); |
| 4114 | if(!color->palette && color->palettesize) |
| 4115 | { |
| 4116 | color->palettesize = 0; |
| 4117 | return 83; /*alloc fail*/ |
| 4118 | } |
| 4119 | if(color->palettesize > 256) return 38; /*error: palette too big*/ |
| 4120 | |
| 4121 | for(i = 0; i < color->palettesize; i++) |
| 4122 | { |
| 4123 | color->palette[4 * i + 0] = data[pos++]; /*R*/ |
| 4124 | color->palette[4 * i + 1] = data[pos++]; /*G*/ |
| 4125 | color->palette[4 * i + 2] = data[pos++]; /*B*/ |
| 4126 | color->palette[4 * i + 3] = 255; /*alpha*/ |
| 4127 | } |
| 4128 | |
| 4129 | return 0; /* OK */ |
| 4130 | } |
| 4131 | |
| 4132 | static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) |
| 4133 | { |
no test coverage detected