Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int CTFBinaryTDF::WriteTexture_RGB5A3(_tImage *tImage)
- {
- int x,y,ix,iy;
- int xres,yres;
- _tLayer *tLayers;
- CImage *pImg;
- BYTE *bits;
- unsigned char a;
- unsigned short color;
- if(!tImage) return 0;
- tLayers = tImage->GetLayers();
- while(tLayers) {
- pImg = tLayers->GetImage();
- xres = pImg->GetXSize();
- yres = pImg->GetYSize();
- bits = pImg->GetPixel();
- for(y=0;y<yres;y+=4) {
- for(x=0;x<xres;x+=4) {
- for(iy=0;iy<4;iy++) {
- for(ix=0;ix<4;ix++) {
- a = bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_ALPHA];
- if(a>=224)
- color = (unsigned short)((_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_RED]>>3),10,5))|(_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_GREEN]>>3),5,5))|(_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_BLUE]>>3),0,5)))|0x8000;
- else
- color = (unsigned short)((_SHIFTL((a>>5),12,3))|(_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_RED]>>4),8,4))|(_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_GREEN]>>4),4,4))|(_SHIFTL((bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_BLUE]>>4),0,4)))&~0x8000;
- WriteValue(&color,VALUE_TYPE_SHORT);
- }
- }
- }
- }
- tLayers = tLayers->next_p;
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment