| 310 | } |
| 311 | |
| 312 | void InsetYCoCgBBox( uint8_t* minColor, uint8_t* maxColor ) |
| 313 | { |
| 314 | int inset[4]; |
| 315 | int mini[4]; |
| 316 | int maxi[4]; |
| 317 | |
| 318 | inset[0] = ( maxColor[0] - minColor[0] ) - ( ( 1 << ( INSET_COLOR_SHIFT - 1 ) ) - 1 ); |
| 319 | inset[1] = ( maxColor[1] - minColor[1] ) - ( ( 1 << ( INSET_COLOR_SHIFT - 1 ) ) - 1 ); |
| 320 | inset[3] = ( maxColor[3] - minColor[3] ) - ( ( 1 << ( INSET_ALPHA_SHIFT - 1 ) ) - 1 ); |
| 321 | |
| 322 | mini[0] = ( ( minColor[0] << INSET_COLOR_SHIFT ) + inset[0] ) >> INSET_COLOR_SHIFT; |
| 323 | mini[1] = ( ( minColor[1] << INSET_COLOR_SHIFT ) + inset[1] ) >> INSET_COLOR_SHIFT; |
| 324 | mini[3] = ( ( minColor[3] << INSET_ALPHA_SHIFT ) + inset[3] ) >> INSET_ALPHA_SHIFT; |
| 325 | |
| 326 | maxi[0] = ( ( maxColor[0] << INSET_COLOR_SHIFT ) - inset[0] ) >> INSET_COLOR_SHIFT; |
| 327 | maxi[1] = ( ( maxColor[1] << INSET_COLOR_SHIFT ) - inset[1] ) >> INSET_COLOR_SHIFT; |
| 328 | maxi[3] = ( ( maxColor[3] << INSET_ALPHA_SHIFT ) - inset[3] ) >> INSET_ALPHA_SHIFT; |
| 329 | |
| 330 | mini[0] = ( mini[0] >= 0 ) ? mini[0] : 0; |
| 331 | mini[1] = ( mini[1] >= 0 ) ? mini[1] : 0; |
| 332 | mini[3] = ( mini[3] >= 0 ) ? mini[3] : 0; |
| 333 | |
| 334 | maxi[0] = ( maxi[0] <= 255 ) ? maxi[0] : 255; |
| 335 | maxi[1] = ( maxi[1] <= 255 ) ? maxi[1] : 255; |
| 336 | maxi[3] = ( maxi[3] <= 255 ) ? maxi[3] : 255; |
| 337 | |
| 338 | minColor[0] = ( mini[0] & C565_5_MASK ) | ( mini[0] >> 5 ); |
| 339 | minColor[1] = ( mini[1] & C565_6_MASK ) | ( mini[1] >> 6 ); |
| 340 | minColor[3] = mini[3]; |
| 341 | |
| 342 | maxColor[0] = ( maxi[0] & C565_5_MASK ) | ( maxi[0] >> 5 ); |
| 343 | maxColor[1] = ( maxi[1] & C565_6_MASK ) | ( maxi[1] >> 6 ); |
| 344 | maxColor[3] = maxi[3]; |
| 345 | } |
| 346 | |
| 347 | void SelectYCoCgDiagonal( const uint8_t* colorBlock, uint8_t* minColor, uint8_t* maxColor ) |
| 348 | { |