| 73 | } |
| 74 | |
| 75 | void GetMinMaxColors( const uint8_t* colorBlock, uint8_t* minColor, uint8_t* maxColor ) |
| 76 | { |
| 77 | int i; |
| 78 | uint8_t inset[3]; |
| 79 | minColor[0] = minColor[1] = minColor[2] = 255; |
| 80 | maxColor[0] = maxColor[1] = maxColor[2] = 0; |
| 81 | for( i = 0; i < 16; i++ ) |
| 82 | { |
| 83 | if( colorBlock[i * 4 + 0] < minColor[0] ) |
| 84 | { |
| 85 | minColor[0] = colorBlock[i * 4 + 0]; |
| 86 | } |
| 87 | if( colorBlock[i * 4 + 1] < minColor[1] ) |
| 88 | { |
| 89 | minColor[1] = colorBlock[i * 4 + 1]; |
| 90 | } |
| 91 | if( colorBlock[i * 4 + 2] < minColor[2] ) |
| 92 | { |
| 93 | minColor[2] = colorBlock[i * 4 + 2]; |
| 94 | } |
| 95 | if( colorBlock[i * 4 + 0] > maxColor[0] ) |
| 96 | { |
| 97 | maxColor[0] = colorBlock[i * 4 + 0]; |
| 98 | } |
| 99 | if( colorBlock[i * 4 + 1] > maxColor[1] ) |
| 100 | { |
| 101 | maxColor[1] = colorBlock[i * 4 + 1]; |
| 102 | } |
| 103 | if( colorBlock[i * 4 + 2] > maxColor[2] ) |
| 104 | { |
| 105 | maxColor[2] = colorBlock[i * 4 + 2]; |
| 106 | } |
| 107 | } |
| 108 | inset[0] = ( maxColor[0] - minColor[0] ) >> INSET_COLOR_SHIFT; |
| 109 | inset[1] = ( maxColor[1] - minColor[1] ) >> INSET_COLOR_SHIFT; |
| 110 | inset[2] = ( maxColor[2] - minColor[2] ) >> INSET_COLOR_SHIFT; |
| 111 | minColor[0] = ( minColor[0] + inset[0] <= 255 ) ? minColor[0] + inset[0] : 255; |
| 112 | minColor[1] = ( minColor[1] + inset[1] <= 255 ) ? minColor[1] + inset[1] : 255; |
| 113 | minColor[2] = ( minColor[2] + inset[2] <= 255 ) ? minColor[2] + inset[2] : 255; |
| 114 | maxColor[0] = ( maxColor[0] >= inset[0] ) ? maxColor[0] - inset[0] : 0; |
| 115 | maxColor[1] = ( maxColor[1] >= inset[1] ) ? maxColor[1] - inset[1] : 0; |
| 116 | maxColor[2] = ( maxColor[2] >= inset[2] ) ? maxColor[2] - inset[2] : 0; |
| 117 | } |
| 118 | |
| 119 | void GetMinMaxColorsWithAlpha( const uint8_t* colorBlock, uint8_t* minColor, uint8_t* maxColor ) |
| 120 | { |