7 void gl_convertRGB_to_5R6G5B(
unsigned short *pixmap,
unsigned char *rgb,
16 pixmap[i]=((p[0]&0xF8)<<8) | ((p[1]&0xFC)<<3) | ((p[2]&0xF8)>>3);
21 void gl_convertRGB_to_8A8R8G8B(
unsigned int *pixmap,
unsigned char *rgb,
30 pixmap[i]=(((
unsigned int)p[0])<<16) |
31 (((
unsigned int)p[1])<<8) |
32 ((
unsigned int)p[2]) |
38 void gl_convertRGBA_to_8A8R8G8B(
unsigned int *pixmap,
unsigned char *rgb,
47 pixmap[i]=(((
unsigned int)p[0])<<16) |
48 (((
unsigned int)p[1])<<8) |
49 ((
unsigned int)p[2]) |
50 (((
unsigned int)p[3])<<24);
59 #define INTERP_NORM_BITS 16
60 #define INTERP_NORM (1 << INTERP_NORM_BITS)
62 static inline int interpolate(
int v00,
int v01,
int v10,
int xf,
int yf)
64 return v00+(((v01-v00)*xf + (v10-v00)*yf) >> INTERP_NORM_BITS);
72 void gl_resizeImage(
unsigned char *dest,
int xsize_dest,
int ysize_dest,
73 unsigned char *src,
int xsize_src,
int ysize_src)
75 unsigned char *pix,*pix_src;
76 PN_stdfloat x1,y1,x1inc,y1inc;
77 int xi,yi,j,xf,yf,x,y;
82 x1inc=(PN_stdfloat) (xsize_src - 1) / (PN_stdfloat) (xsize_dest - 1);
83 y1inc=(PN_stdfloat) (ysize_src - 1) / (PN_stdfloat) (ysize_dest - 1);
86 for(y=0;y<ysize_dest;y++) {
88 for(x=0;x<xsize_dest;x++) {
91 xf=(int) ((x1 - floor(x1)) * INTERP_NORM);
92 yf=(int) ((y1 - floor(y1)) * INTERP_NORM);
94 if ((xf+yf) <= INTERP_NORM) {
96 pix[j]=interpolate(pix_src[(yi*xsize_src+xi)*4+j],
97 pix_src[(yi*xsize_src+xi+1)*4+j],
98 pix_src[((yi+1)*xsize_src+xi)*4+j],
105 pix[j]=interpolate(pix_src[((yi+1)*xsize_src+xi+1)*4+j],
106 pix_src[((yi+1)*xsize_src+xi)*4+j],
107 pix_src[(yi*xsize_src+xi+1)*4+j],
123 void gl_resizeImageNoInterpolate(
unsigned char *dest,
int xsize_dest,
int ysize_dest,
124 unsigned char *src,
int xsize_src,
int ysize_src)
126 unsigned char *pix,*pix_src,*pix1;
127 int x1,y1,x1inc,y1inc;
133 x1inc=(int)((PN_stdfloat) ((xsize_src)<<FRAC_BITS) / (PN_stdfloat) (xsize_dest));
134 y1inc=(int)((PN_stdfloat) ((ysize_src)<<FRAC_BITS) / (PN_stdfloat) (ysize_dest));
137 for(y=0;y<ysize_dest;y++) {
139 for(x=0;x<xsize_dest;x++) {
142 pix1=pix_src+(yi*xsize_src+xi)*4;