Guest User

Untitled

a guest
Jun 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. int CTFBinaryTDF::WriteTexture_RGB5A3(_tImage *tImage)
  2. {
  3. int x,y,ix,iy;
  4. int xres,yres;
  5. _tLayer *tLayers;
  6. CImage *pImg;
  7. BYTE *bits;
  8. unsigned char a;
  9. unsigned short color;
  10.  
  11. if(!tImage) return 0;
  12.  
  13. tLayers = tImage->GetLayers();
  14. while(tLayers) {
  15. pImg = tLayers->GetImage();
  16. xres = pImg->GetXSize();
  17. yres = pImg->GetYSize();
  18.  
  19. bits = pImg->GetPixel();
  20. for(y=0;y<yres;y+=4) {
  21. for(x=0;x<xres;x+=4) {
  22. for(iy=0;iy<4;iy++) {
  23. for(ix=0;ix<4;ix++) {
  24. a = bits[(((y+iy)*(xres<<2))+((x+ix)<<2))+FI_RGBA_ALPHA];
  25. if(a>=224)
  26. 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;
  27. else
  28. 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;
  29. WriteValue(&color,VALUE_TYPE_SHORT);
  30. }
  31. }
  32. }
  33. }
  34. tLayers = tLayers->next_p;
  35. }
  36. return 1;
  37. }
Add Comment
Please, Sign In to add comment