Krita Source Code Documentation
Loading...
Searching...
No Matches
pixels.h File Reference
#include "xcftools.h"

Go to the source code of this file.

Classes

struct  Tile
 

Macros

#define ALPHA(rgba)   ((uint8_t)(rgba))
 
#define ALPHA_SHIFT   0
 
#define assertTileCompatibility(t1, t2)   assert((t1)->count==(t2)->count)
 
#define BLUE_SHIFT   24
 
#define FULLALPHA(rgba)   ((uint8_t)(rgba) == 255)
 
#define GREEN_SHIFT   16
 
#define INIT_SCALETABLE_IF(foo)    (ok_scaletable || !(foo) || (mk_scaletable(),0) )
 
#define invalidateSummary(tile, mask)    do{ assert((tile)->refcount==1); (tile)->summary &= mask; } while(0)
 
#define NEWALPHA(rgb, a)   (((rgba)(rgb) & 0xFFFFFF00) + (a))
 
#define NULLALPHA(rgba)   ((uint8_t)(rgba) == 0)
 
#define RED_SHIFT   8
 
#define TILESUMMARY_ALLFULL   2
 
#define TILESUMMARY_ALLNULL   4
 
#define TILESUMMARY_CRISP   1 /* everything either null or full */
 
#define TILESUMMARY_UPTODATE   8
 
#define TILEXn(dim, tx)    ((tx)==(dim).tilesx ? (dim).c.r : (dim).c.l + ((tx)*TILE_WIDTH))
 
#define TILEYn(dim, ty)    ((ty)==(dim).tilesy ? (dim).c.b : (dim).c.t + ((ty)*TILE_HEIGHT))
 

Typedefs

typedef int refcount_t
 
typedef uint32_t rgba
 
typedef int summary_t
 

Functions

summary_t __ATTRIBUTE__ ((pure)) tileSummary(struct Tile *)
 
void applyMask (struct Tile *tile, struct Tile *mask)
 
int degrayPixel (rgba)
 
void fillTile (struct Tile *, rgba)
 
struct TileforkTile (struct Tile *)
 
void freeTile (struct Tile *)
 
struct TilegetLayerTile (struct xcfLayer *, const struct rect *)
 
struct TilegetMaskOrLayerTile (struct tileDimensions *dim, struct xcfTiles *tiles, struct rect want)
 
int initColormap ()
 
int initLayer (struct xcfLayer *)
 
void mk_scaletable (void)
 
struct TilenewTile (struct rect)
 

Variables

rgba colormap [256]
 
unsigned colormapLength
 
const rgba graytable [256]
 
int ok_scaletable
 
uint8_t scaletable [256][256]
 

Macro Definition Documentation

◆ ALPHA

#define ALPHA ( rgba)    ((uint8_t)(rgba))

Definition at line 51 of file pixels.h.

◆ ALPHA_SHIFT

#define ALPHA_SHIFT   0

Definition at line 46 of file pixels.h.

◆ assertTileCompatibility

#define assertTileCompatibility ( t1,
t2 )   assert((t1)->count==(t2)->count)

Definition at line 110 of file pixels.h.

◆ BLUE_SHIFT

#define BLUE_SHIFT   24

Definition at line 49 of file pixels.h.

◆ FULLALPHA

#define FULLALPHA ( rgba)    ((uint8_t)(rgba) == 255)

Definition at line 52 of file pixels.h.

◆ GREEN_SHIFT

#define GREEN_SHIFT   16

Definition at line 48 of file pixels.h.

◆ INIT_SCALETABLE_IF

#define INIT_SCALETABLE_IF ( foo)     (ok_scaletable || !(foo) || (mk_scaletable(),0) )

Definition at line 63 of file pixels.h.

63#define INIT_SCALETABLE_IF(foo) \
64 (ok_scaletable || !(foo) || (mk_scaletable(),0) )

◆ invalidateSummary

#define invalidateSummary ( tile,
mask )    do{ assert((tile)->refcount==1); (tile)->summary &= mask; } while(0)

Definition at line 115 of file pixels.h.

115#define invalidateSummary(tile,mask) \
116 do{ assert((tile)->refcount==1); (tile)->summary &= mask; } while(0)

◆ NEWALPHA

#define NEWALPHA ( rgb,
a )   (((rgba)(rgb) & 0xFFFFFF00) + (a))

Definition at line 54 of file pixels.h.

◆ NULLALPHA

#define NULLALPHA ( rgba)    ((uint8_t)(rgba) == 0)

Definition at line 53 of file pixels.h.

◆ RED_SHIFT

#define RED_SHIFT   8

Definition at line 47 of file pixels.h.

◆ TILESUMMARY_ALLFULL

#define TILESUMMARY_ALLFULL   2

Definition at line 95 of file pixels.h.

◆ TILESUMMARY_ALLNULL

#define TILESUMMARY_ALLNULL   4

Definition at line 94 of file pixels.h.

◆ TILESUMMARY_CRISP

#define TILESUMMARY_CRISP   1 /* everything either null or full */

Definition at line 96 of file pixels.h.

◆ TILESUMMARY_UPTODATE

#define TILESUMMARY_UPTODATE   8

Definition at line 93 of file pixels.h.

◆ TILEXn

#define TILEXn ( dim,
tx )    ((tx)==(dim).tilesx ? (dim).c.r : (dim).c.l + ((tx)*TILE_WIDTH))

Definition at line 77 of file pixels.h.

77#define TILEXn(dim,tx) \
78 ((tx)==(dim).tilesx ? (dim).c.r : (dim).c.l + ((tx)*TILE_WIDTH))

◆ TILEYn

#define TILEYn ( dim,
ty )    ((ty)==(dim).tilesy ? (dim).c.b : (dim).c.t + ((ty)*TILE_HEIGHT))

Definition at line 79 of file pixels.h.

79#define TILEYn(dim,ty) \
80 ((ty)==(dim).tilesy ? (dim).c.b : (dim).c.t + ((ty)*TILE_HEIGHT))

Typedef Documentation

◆ refcount_t

typedef int refcount_t

Definition at line 90 of file pixels.h.

◆ rgba

typedef uint32_t rgba

Definition at line 44 of file pixels.h.

◆ summary_t

typedef int summary_t

Definition at line 89 of file pixels.h.

Function Documentation

◆ __ATTRIBUTE__()

summary_t __ATTRIBUTE__ ( (pure) )

◆ applyMask()

void applyMask ( struct Tile * tile,
struct Tile * mask )

Definition at line 531 of file pixels.c.

532{
533 unsigned i ;
534 assertTileCompatibility(tile,mask);
535 assert( tile->count == mask->count );
537 invalidateSummary(tile,0);
538 for( i=0; i < tile->count ;i++ )
539 tile->pixels[i] = NEWALPHA(tile->pixels[i],
540 scaletable[mask->pixels[i]>>ALPHA_SHIFT]
541 [ALPHA(tile->pixels[i])]);
542 freeTile(mask);
543}
void freeTile(struct Tile *tile)
Definition pixels.c:255
#define ALPHA_SHIFT
Definition pixels.h:46
#define ALPHA(rgba)
Definition pixels.h:51
#define NEWALPHA(rgb, a)
Definition pixels.h:54
#define assertTileCompatibility(t1, t2)
Definition pixels.h:110
uint8_t scaletable[256][256]
Definition scaletab.c:22
#define invalidateSummary(tile, mask)
Definition pixels.h:115
#define INIT_SCALETABLE_IF(foo)
Definition pixels.h:63
rgba pixels[TILE_WIDTH *TILE_HEIGHT]
Definition pixels.h:101
unsigned count
Definition pixels.h:100

References ALPHA, ALPHA_SHIFT, assertTileCompatibility, Tile::count, freeTile(), INIT_SCALETABLE_IF, invalidateSummary, NEWALPHA, Tile::pixels, and scaletable.

◆ degrayPixel()

int degrayPixel ( rgba pixel)

Definition at line 29 of file pixels.c.

30{
31 if( ((pixel >> RED_SHIFT) & 255) == ((pixel >> GREEN_SHIFT) & 255) &&
32 ((pixel >> RED_SHIFT) & 255) == ((pixel >> BLUE_SHIFT) & 255) )
33 return (pixel >> RED_SHIFT) & 255 ;
34 return -1 ;
35}
#define RED_SHIFT
Definition pixels.h:47
#define BLUE_SHIFT
Definition pixels.h:49
#define GREEN_SHIFT
Definition pixels.h:48

References BLUE_SHIFT, GREEN_SHIFT, and RED_SHIFT.

◆ fillTile()

void fillTile ( struct Tile * tile,
rgba data )

Definition at line 283 of file pixels.c.

284{
285 unsigned i ;
286 for( i = 0 ; i < tile->count ; i++ )
287 tile->pixels[i] = data ;
288 if( FULLALPHA(data) )
290 else if (NULLALPHA(data) )
292 else
294}
#define TILESUMMARY_UPTODATE
Definition pixels.h:93
#define TILESUMMARY_ALLNULL
Definition pixels.h:94
#define FULLALPHA(rgba)
Definition pixels.h:52
#define TILESUMMARY_CRISP
Definition pixels.h:96
#define TILESUMMARY_ALLFULL
Definition pixels.h:95
#define NULLALPHA(rgba)
Definition pixels.h:53
summary_t summary
Definition pixels.h:99

References Tile::count, FULLALPHA, NULLALPHA, Tile::pixels, Tile::summary, TILESUMMARY_ALLFULL, TILESUMMARY_ALLNULL, TILESUMMARY_CRISP, and TILESUMMARY_UPTODATE.

◆ forkTile()

struct Tile * forkTile ( struct Tile * tile)

Definition at line 244 of file pixels.c.

245{
246 if( ++tile->refcount <= 0 ) {
247 FatalUnsupportedXCF(_("Unbelievably many layers?\n"
248 "More likely to be a bug in %s"),progname);
249 return XCF_PTR_EMPTY;
250 }
251 return tile ;
252}
refcount_t refcount
Definition pixels.h:98
void FatalUnsupportedXCF(const char *format,...)
Definition utils.c:91
const char * progname
Definition utils.c:25
#define XCF_PTR_EMPTY
Definition xcftools.h:107
#define _(s)
Definition xcftools.h:32

References _, FatalUnsupportedXCF(), progname, Tile::refcount, and XCF_PTR_EMPTY.

◆ freeTile()

void freeTile ( struct Tile * tile)

Definition at line 255 of file pixels.c.

256{
257 if( --tile->refcount == 0 )
258 xcffree(tile) ;
259}
void xcffree(void *block)
Definition utils.c:125

References Tile::refcount, and xcffree().

◆ getLayerTile()

struct Tile * getLayerTile ( struct xcfLayer * layer,
const struct rect * where )

Definition at line 546 of file pixels.c.

547{
548 struct Tile *data ;
549
550#ifdef xDEBUG
551 fprintf(stderr,"getLayerTile(%s): (%d-%d),(%d-%d)\n",
552 layer->name,where->l,where->r,where->t,where->b);
553#endif
554
555 if( disjointRects(*where,layer->dim.c) ||
556 layer->opacity == 0 ) {
557 data = newTile(*where);
558 fillTile(data,0);
559 return data ;
560 }
561
562 data = getMaskOrLayerTile(&layer->dim,&layer->pixels,*where);
563 if (data == XCF_PTR_EMPTY) {
564 return XCF_PTR_EMPTY;
565 }
566 if( (data->summary & TILESUMMARY_ALLNULL) != 0 )
567 return data ;
568 if( layer->hasMask ) {
569 struct Tile *mask = getMaskOrLayerTile(&layer->dim,&layer->mask,*where);
570 if (mask == XCF_PTR_EMPTY) { /* error */
571 freeTile(data);
572 return XCF_PTR_EMPTY;
573 }
574 applyMask(data,mask);
575 }
576 if( layer->opacity < 255 ) {
577 const uint8_t *ourtable ;
578 int i ;
581 ourtable = scaletable[layer->opacity] ;
582 for( i=0; i < data->count; i++ )
583 data->pixels[i]
584 = NEWALPHA(data->pixels[i],ourtable[ALPHA(data->pixels[i])]) ;
585 }
586 return data ;
587}
struct Tile * getMaskOrLayerTile(struct tileDimensions *dim, struct xcfTiles *tiles, struct rect want)
Definition pixels.c:427
void applyMask(struct Tile *tile, struct Tile *mask)
Definition pixels.c:531
void fillTile(struct Tile *tile, rgba data)
Definition pixels.c:283
struct Tile * newTile(struct rect r)
Definition pixels.c:231
Definition pixels.h:97
int l
Definition xcftools.h:130
int r
Definition xcftools.h:130
int t
Definition xcftools.h:130
int b
Definition xcftools.h:130
struct rect c
Definition xcftools.h:166
unsigned int opacity
Definition xcftools.h:185
struct xcfTiles pixels
Definition xcftools.h:188
int hasMask
Definition xcftools.h:186
struct tileDimensions dim
Definition xcftools.h:181
const char * name
Definition xcftools.h:182
struct xcfTiles mask
Definition xcftools.h:189
#define disjointRects(A, B)
Definition xcftools.h:135

References ALPHA, applyMask(), rect::b, tileDimensions::c, Tile::count, xcfLayer::dim, disjointRects, fillTile(), freeTile(), getMaskOrLayerTile(), xcfLayer::hasMask, INIT_SCALETABLE_IF, invalidateSummary, rect::l, xcfLayer::mask, xcfLayer::name, NEWALPHA, newTile(), xcfLayer::opacity, Tile::pixels, xcfLayer::pixels, rect::r, scaletable, Tile::summary, rect::t, TILESUMMARY_ALLFULL, TILESUMMARY_ALLNULL, TILESUMMARY_CRISP, and XCF_PTR_EMPTY.

◆ getMaskOrLayerTile()

struct Tile * getMaskOrLayerTile ( struct tileDimensions * dim,
struct xcfTiles * tiles,
struct rect want )

Definition at line 427 of file pixels.c.

429{
430 struct Tile *tile = newTile(want);
431
432 if (want.l >= want.r || want.t >= want.b ) {
433 freeTile(tile);
434 return XCF_PTR_EMPTY;
435 }
436
437 if( tiles->tileptrs == 0 ) {
438 fillTile(tile,0);
439 return tile ;
440 }
441
442#ifdef xDEBUG
443 fprintf(stderr,"getMaskOrLayer: (%d-%d),(%d-%d)\n",left,right,top,bottom);
444#endif
445
446 if( isSubrect(want,dim->c) &&
447 (want.l - dim->c.l) % TILE_WIDTH == 0 &&
448 (want.t - dim->c.t) % TILE_HEIGHT == 0 ) {
449 int tx = TILE_NUM(want.l - dim->c.l);
450 int ty = TILE_NUM(want.t - dim->c.t);
451 if( want.r == TILEXn(*dim,tx+1) && want.b == TILEYn(*dim,ty+1) ) {
452 /* The common case? An entire single tile from the layer */
453 if (copyTilePixels(tile,tiles->tileptrs[tx + ty*dim->tilesx],tiles->params) != XCF_OK) {
454 freeTile(tile);
455 return XCF_PTR_EMPTY;
456 }
457 return tile ;
458 }
459 }
460
461 /* OK, we must construct the wanted tile as a jigsaw */
462 {
463 unsigned width = want.r-want.l ;
464 rgba *pixvert = tile->pixels ;
465 rgba *pixhoriz ;
466 int y, ty, l0, l1 ;
467 int x, tx, c0, c1 ;
468 unsigned lstart, lnum ;
469 unsigned cstart, cnum ;
470
471 if( !isSubrect(want,dim->c) ) {
472 if( want.l < dim->c.l ) pixvert += (dim->c.l - want.l),
473 want.l = dim->c.l ;
474 if( want.r > dim->c.r ) want.r = dim->c.r ;
475 if( want.t < dim->c.t ) pixvert += (dim->c.t - want.t) * width,
476 want.t = dim->c.t ;
477 if( want.b > dim->c.b ) want.b = dim->c.b ;
478 fillTile(tile,0);
479 } else {
480 tile->summary = -1 ; /* I.e. whatever the jigsaw pieces say */
481 }
482
483#ifdef xDEBUG
484 fprintf(stderr,"jig0 (%d-%d),(%d-%d)\n",left,right,top,bottom);
485#endif
486
487 for( y=want.t, ty=TILE_NUM(want.t-dim->c.t), l0=TILEYn(*dim,ty);
488 y<want.b;
489 pixvert += lnum*width, ty++, y=l0=l1 ) {
490 l1 = TILEYn(*dim,ty+1) ;
491 lstart = y - l0 ;
492 lnum = (l1 > want.b ? want.b : l1) - y ;
493
494 pixhoriz = pixvert ;
495 for( x=want.l, tx=TILE_NUM(want.l-dim->c.l), c0=TILEXn(*dim,tx);
496 x<want.r;
497 pixhoriz += cnum, tx++, x=c0=c1 ) {
498 c1 = TILEXn(*dim,tx+1);
499 cstart = x - c0 ;
500 cnum = (c1 > want.r ? want.r : c1) - x ;
501
502 {
503 static struct Tile tmptile ;
504 unsigned dwidth = c1-c0 ;
505 unsigned i, j ;
506 tmptile.count = (c1-c0)*(l1-l0) ;
507#ifdef xDEBUG
508 fprintf(stderr,"jig ty=%u(%u-%u-%u)(%u+%u) tx=%u(%u-%u-%u)(%u+%u)\n",
509 ty,l0,y,l1,lstart,lnum,
510 tx,c0,x,c1,cstart,cnum);
511#endif
512 if (copyTilePixels(&tmptile,
513 tiles->tileptrs[tx+ty*dim->tilesx],tiles->params) != XCF_OK) {
514 freeTile(tile);
515 return XCF_PTR_EMPTY;
516 }
517
518 for(i=0; i<lnum; i++)
519 for(j=0; j<cnum; j++)
520 pixhoriz[i*width+j]
521 = tmptile.pixels[(i+lstart)*dwidth+(j+cstart)];
522 tile->summary &= tmptile.summary ;
523 }
524 }
525 }
526 }
527 return tile ;
528}
static int copyTilePixels(struct Tile *dest, uint32_t ptr, convertParams *params)
Definition pixels.c:398
uint32_t rgba
Definition pixels.h:44
#define TILEYn(dim, ty)
Definition pixels.h:79
#define TILEXn(dim, tx)
Definition pixels.h:77
unsigned tilesx
Definition xcftools.h:168
const struct _convertParams * params
Definition xcftools.h:175
uint32_t * tileptrs
Definition xcftools.h:176
#define isSubrect(A, B)
Definition xcftools.h:133
#define TILE_HEIGHT
Definition xcftools.h:155
#define TILE_WIDTH
Definition xcftools.h:154
#define TILE_NUM(x)
Definition xcftools.h:163
#define XCF_OK
Definition xcftools.h:106

References rect::b, tileDimensions::c, copyTilePixels(), Tile::count, fillTile(), freeTile(), isSubrect, rect::l, newTile(), xcfTiles::params, Tile::pixels, rect::r, Tile::summary, rect::t, TILE_HEIGHT, TILE_NUM, TILE_WIDTH, xcfTiles::tileptrs, tileDimensions::tilesx, TILEXn, TILEYn, XCF_OK, and XCF_PTR_EMPTY.

◆ initColormap()

int initColormap ( )

Definition at line 199 of file pixels.c.

199 {
200 uint32_t ncolors ;
201 if( XCF.colormapptr == 0 ) {
202 colormapLength = 0 ;
203 return XCF_OK;
204 }
205 ncolors = xcfL(XCF.colormapptr) ;
206 if( ncolors > 256 ) {
207 FatalUnsupportedXCF(_("Color map has more than 256 entries"));
208 return XCF_ERROR;
209 }
211 return XCF_ERROR;
212 }
213 colormapLength = ncolors ;
214#ifdef xDEBUG
215 {
216 unsigned j ;
217 fprintf(stderr,"Colormap decoding OK\n");
218 for( j = 0 ; j < ncolors ; j++ ) {
219 if( j % 8 == 0 ) fprintf(stderr,"\n");
220 fprintf(stderr," %08x",colormap[j]);
221 }
222 fprintf(stderr,"\n");
223 }
224#endif
225 return XCF_OK;
226}
unsigned colormapLength
Definition pixels.c:26
static int copyStraightPixels(rgba *dest, unsigned npixels, uint32_t ptr, convertParams *params)
Definition pixels.c:299
static convertParams convertColormap
Definition pixels.c:57
rgba colormap[256]
Definition pixels.c:25
uint32_t colormapptr
Definition xcftools.h:202
struct xcfImage XCF
#define xcfL(a)
Definition xcftools.h:91
#define XCF_ERROR
Definition xcftools.h:105

References _, colormap, colormapLength, xcfImage::colormapptr, convertColormap, copyStraightPixels(), FatalUnsupportedXCF(), XCF, XCF_ERROR, XCF_OK, and xcfL.

◆ initLayer()

int initLayer ( struct xcfLayer * layer)

Definition at line 167 of file pixels.c.

167 {
168 if( layer->dim.ntiles == 0 ||
169 (layer->pixels.hierarchy == 0 && layer->mask.hierarchy == 0) )
170 return XCF_OK;
171 switch(layer->type) {
172#define DEF(X) case GIMP_##X##_IMAGE: layer->pixels.params = &convert##X; break
173 DEF(RGB);
174 DEF(RGBA);
175 DEF(GRAY);
176 DEF(GRAYA);
177 DEF(INDEXED);
178 DEF(INDEXEDA);
179 default:
180 {
181 FatalUnsupportedXCF(_("Layer type %s"),_(showGimpImageType(layer->type)));
182 return XCF_ERROR;
183 }
184
185 }
186 if (initTileDirectory(&layer->dim,&layer->pixels,
187 _(showGimpImageType(layer->type))) != XCF_OK) {
188 return XCF_ERROR;
189 }
190 layer->mask.params = &convertChannel ;
191 if (initTileDirectory(&layer->dim,&layer->mask,"layer mask") != XCF_OK) {
192 return XCF_ERROR;
193 }
194 return XCF_OK;
195}
const char * showGimpImageType(GimpImageType x)
Definition enums.c:54
static int initTileDirectory(struct tileDimensions *dim, struct xcfTiles *tiles, const char *type)
Definition pixels.c:80
static convertParams convertChannel
Definition pixels.c:58
#define DEF(X)
@ RGB
Definition psd.h:54
unsigned ntiles
Definition xcftools.h:169
GimpImageType type
Definition xcftools.h:184
uint32_t hierarchy
Definition xcftools.h:177

References _, convertChannel, DEF, xcfLayer::dim, FatalUnsupportedXCF(), xcfTiles::hierarchy, initTileDirectory(), xcfLayer::mask, tileDimensions::ntiles, xcfTiles::params, xcfLayer::pixels, RGB, RGBA, showGimpImageType(), xcfLayer::type, XCF_ERROR, and XCF_OK.

◆ mk_scaletable()

void mk_scaletable ( void )

Definition at line 26 of file scaletab.c.

27{
28 unsigned p, q, r ;
29 if( ok_scaletable ) return ;
30 for( p = 0 ; p < 128 ; p++ )
31 for( q = 0 ; q <= p ; q++ ) {
32 r = (p*q+127)/255 ;
33 scaletable[p][q] = scaletable[q][p] = r ;
34 scaletable[255-p][q] = scaletable[q][255-p] = q-r ;
35 scaletable[p][255-q] = scaletable[255-q][p] = p-r ;
36 scaletable[255-p][255-q] = scaletable[255-q][255-p] = (255-q)-(p-r) ;
37 }
38 ok_scaletable = 1 ;
39}
const Params2D p
uint8_t scaletable[256][256]
Definition scaletab.c:22
int ok_scaletable
Definition scaletab.c:23

References ok_scaletable, p, and scaletable.

◆ newTile()

struct Tile * newTile ( struct rect r)

Definition at line 231 of file pixels.c.

232{
233 unsigned npixels = (unsigned)(r.b-r.t) * (unsigned)(r.r-r.l) ;
234 struct Tile *data
235 = xcfmalloc(sizeof(struct Tile) -
236 sizeof(rgba)*(TILE_HEIGHT*TILE_WIDTH - npixels)) ;
237 data->count = npixels ;
238 data->refcount = 1 ;
239 data->summary = 0 ;
240 return data ;
241}
void * xcfmalloc(size_t size)
Definition utils.c:114

References Tile::count, Tile::refcount, Tile::summary, TILE_HEIGHT, TILE_WIDTH, and xcfmalloc().

Variable Documentation

◆ colormap

rgba colormap[256]
extern

Definition at line 25 of file pixels.c.

◆ colormapLength

unsigned colormapLength
extern

Definition at line 26 of file pixels.c.

◆ graytable

const rgba graytable[256]
extern

Definition at line 6 of file table.c.

6 {
7 (rgba)0 << RED_SHIFT | (rgba)0 << GREEN_SHIFT | (rgba)0 << BLUE_SHIFT,
8 (rgba)1 << RED_SHIFT | (rgba)1 << GREEN_SHIFT | (rgba)1 << BLUE_SHIFT,
9 (rgba)2 << RED_SHIFT | (rgba)2 << GREEN_SHIFT | (rgba)2 << BLUE_SHIFT,
10 (rgba)3 << RED_SHIFT | (rgba)3 << GREEN_SHIFT | (rgba)3 << BLUE_SHIFT,
11 (rgba)4 << RED_SHIFT | (rgba)4 << GREEN_SHIFT | (rgba)4 << BLUE_SHIFT,
12 (rgba)5 << RED_SHIFT | (rgba)5 << GREEN_SHIFT | (rgba)5 << BLUE_SHIFT,
13 (rgba)6 << RED_SHIFT | (rgba)6 << GREEN_SHIFT | (rgba)6 << BLUE_SHIFT,
14 (rgba)7 << RED_SHIFT | (rgba)7 << GREEN_SHIFT | (rgba)7 << BLUE_SHIFT,
15 (rgba)8 << RED_SHIFT | (rgba)8 << GREEN_SHIFT | (rgba)8 << BLUE_SHIFT,
16 (rgba)9 << RED_SHIFT | (rgba)9 << GREEN_SHIFT | (rgba)9 << BLUE_SHIFT,
17 (rgba)10 << RED_SHIFT | (rgba)10 << GREEN_SHIFT | (rgba)10 << BLUE_SHIFT,
18 (rgba)11 << RED_SHIFT | (rgba)11 << GREEN_SHIFT | (rgba)11 << BLUE_SHIFT,
19 (rgba)12 << RED_SHIFT | (rgba)12 << GREEN_SHIFT | (rgba)12 << BLUE_SHIFT,
20 (rgba)13 << RED_SHIFT | (rgba)13 << GREEN_SHIFT | (rgba)13 << BLUE_SHIFT,
21 (rgba)14 << RED_SHIFT | (rgba)14 << GREEN_SHIFT | (rgba)14 << BLUE_SHIFT,
22 (rgba)15 << RED_SHIFT | (rgba)15 << GREEN_SHIFT | (rgba)15 << BLUE_SHIFT,
23 (rgba)16 << RED_SHIFT | (rgba)16 << GREEN_SHIFT | (rgba)16 << BLUE_SHIFT,
24 (rgba)17 << RED_SHIFT | (rgba)17 << GREEN_SHIFT | (rgba)17 << BLUE_SHIFT,
25 (rgba)18 << RED_SHIFT | (rgba)18 << GREEN_SHIFT | (rgba)18 << BLUE_SHIFT,
26 (rgba)19 << RED_SHIFT | (rgba)19 << GREEN_SHIFT | (rgba)19 << BLUE_SHIFT,
27 (rgba)20 << RED_SHIFT | (rgba)20 << GREEN_SHIFT | (rgba)20 << BLUE_SHIFT,
28 (rgba)21 << RED_SHIFT | (rgba)21 << GREEN_SHIFT | (rgba)21 << BLUE_SHIFT,
29 (rgba)22 << RED_SHIFT | (rgba)22 << GREEN_SHIFT | (rgba)22 << BLUE_SHIFT,
30 (rgba)23 << RED_SHIFT | (rgba)23 << GREEN_SHIFT | (rgba)23 << BLUE_SHIFT,
31 (rgba)24 << RED_SHIFT | (rgba)24 << GREEN_SHIFT | (rgba)24 << BLUE_SHIFT,
32 (rgba)25 << RED_SHIFT | (rgba)25 << GREEN_SHIFT | (rgba)25 << BLUE_SHIFT,
33 (rgba)26 << RED_SHIFT | (rgba)26 << GREEN_SHIFT | (rgba)26 << BLUE_SHIFT,
34 (rgba)27 << RED_SHIFT | (rgba)27 << GREEN_SHIFT | (rgba)27 << BLUE_SHIFT,
35 (rgba)28 << RED_SHIFT | (rgba)28 << GREEN_SHIFT | (rgba)28 << BLUE_SHIFT,
36 (rgba)29 << RED_SHIFT | (rgba)29 << GREEN_SHIFT | (rgba)29 << BLUE_SHIFT,
37 (rgba)30 << RED_SHIFT | (rgba)30 << GREEN_SHIFT | (rgba)30 << BLUE_SHIFT,
38 (rgba)31 << RED_SHIFT | (rgba)31 << GREEN_SHIFT | (rgba)31 << BLUE_SHIFT,
39 (rgba)32 << RED_SHIFT | (rgba)32 << GREEN_SHIFT | (rgba)32 << BLUE_SHIFT,
40 (rgba)33 << RED_SHIFT | (rgba)33 << GREEN_SHIFT | (rgba)33 << BLUE_SHIFT,
41 (rgba)34 << RED_SHIFT | (rgba)34 << GREEN_SHIFT | (rgba)34 << BLUE_SHIFT,
42 (rgba)35 << RED_SHIFT | (rgba)35 << GREEN_SHIFT | (rgba)35 << BLUE_SHIFT,
43 (rgba)36 << RED_SHIFT | (rgba)36 << GREEN_SHIFT | (rgba)36 << BLUE_SHIFT,
44 (rgba)37 << RED_SHIFT | (rgba)37 << GREEN_SHIFT | (rgba)37 << BLUE_SHIFT,
45 (rgba)38 << RED_SHIFT | (rgba)38 << GREEN_SHIFT | (rgba)38 << BLUE_SHIFT,
46 (rgba)39 << RED_SHIFT | (rgba)39 << GREEN_SHIFT | (rgba)39 << BLUE_SHIFT,
47 (rgba)40 << RED_SHIFT | (rgba)40 << GREEN_SHIFT | (rgba)40 << BLUE_SHIFT,
48 (rgba)41 << RED_SHIFT | (rgba)41 << GREEN_SHIFT | (rgba)41 << BLUE_SHIFT,
49 (rgba)42 << RED_SHIFT | (rgba)42 << GREEN_SHIFT | (rgba)42 << BLUE_SHIFT,
50 (rgba)43 << RED_SHIFT | (rgba)43 << GREEN_SHIFT | (rgba)43 << BLUE_SHIFT,
51 (rgba)44 << RED_SHIFT | (rgba)44 << GREEN_SHIFT | (rgba)44 << BLUE_SHIFT,
52 (rgba)45 << RED_SHIFT | (rgba)45 << GREEN_SHIFT | (rgba)45 << BLUE_SHIFT,
53 (rgba)46 << RED_SHIFT | (rgba)46 << GREEN_SHIFT | (rgba)46 << BLUE_SHIFT,
54 (rgba)47 << RED_SHIFT | (rgba)47 << GREEN_SHIFT | (rgba)47 << BLUE_SHIFT,
55 (rgba)48 << RED_SHIFT | (rgba)48 << GREEN_SHIFT | (rgba)48 << BLUE_SHIFT,
56 (rgba)49 << RED_SHIFT | (rgba)49 << GREEN_SHIFT | (rgba)49 << BLUE_SHIFT,
57 (rgba)50 << RED_SHIFT | (rgba)50 << GREEN_SHIFT | (rgba)50 << BLUE_SHIFT,
58 (rgba)51 << RED_SHIFT | (rgba)51 << GREEN_SHIFT | (rgba)51 << BLUE_SHIFT,
59 (rgba)52 << RED_SHIFT | (rgba)52 << GREEN_SHIFT | (rgba)52 << BLUE_SHIFT,
60 (rgba)53 << RED_SHIFT | (rgba)53 << GREEN_SHIFT | (rgba)53 << BLUE_SHIFT,
61 (rgba)54 << RED_SHIFT | (rgba)54 << GREEN_SHIFT | (rgba)54 << BLUE_SHIFT,
62 (rgba)55 << RED_SHIFT | (rgba)55 << GREEN_SHIFT | (rgba)55 << BLUE_SHIFT,
63 (rgba)56 << RED_SHIFT | (rgba)56 << GREEN_SHIFT | (rgba)56 << BLUE_SHIFT,
64 (rgba)57 << RED_SHIFT | (rgba)57 << GREEN_SHIFT | (rgba)57 << BLUE_SHIFT,
65 (rgba)58 << RED_SHIFT | (rgba)58 << GREEN_SHIFT | (rgba)58 << BLUE_SHIFT,
66 (rgba)59 << RED_SHIFT | (rgba)59 << GREEN_SHIFT | (rgba)59 << BLUE_SHIFT,
67 (rgba)60 << RED_SHIFT | (rgba)60 << GREEN_SHIFT | (rgba)60 << BLUE_SHIFT,
68 (rgba)61 << RED_SHIFT | (rgba)61 << GREEN_SHIFT | (rgba)61 << BLUE_SHIFT,
69 (rgba)62 << RED_SHIFT | (rgba)62 << GREEN_SHIFT | (rgba)62 << BLUE_SHIFT,
70 (rgba)63 << RED_SHIFT | (rgba)63 << GREEN_SHIFT | (rgba)63 << BLUE_SHIFT,
71 (rgba)64 << RED_SHIFT | (rgba)64 << GREEN_SHIFT | (rgba)64 << BLUE_SHIFT,
72 (rgba)65 << RED_SHIFT | (rgba)65 << GREEN_SHIFT | (rgba)65 << BLUE_SHIFT,
73 (rgba)66 << RED_SHIFT | (rgba)66 << GREEN_SHIFT | (rgba)66 << BLUE_SHIFT,
74 (rgba)67 << RED_SHIFT | (rgba)67 << GREEN_SHIFT | (rgba)67 << BLUE_SHIFT,
75 (rgba)68 << RED_SHIFT | (rgba)68 << GREEN_SHIFT | (rgba)68 << BLUE_SHIFT,
76 (rgba)69 << RED_SHIFT | (rgba)69 << GREEN_SHIFT | (rgba)69 << BLUE_SHIFT,
77 (rgba)70 << RED_SHIFT | (rgba)70 << GREEN_SHIFT | (rgba)70 << BLUE_SHIFT,
78 (rgba)71 << RED_SHIFT | (rgba)71 << GREEN_SHIFT | (rgba)71 << BLUE_SHIFT,
79 (rgba)72 << RED_SHIFT | (rgba)72 << GREEN_SHIFT | (rgba)72 << BLUE_SHIFT,
80 (rgba)73 << RED_SHIFT | (rgba)73 << GREEN_SHIFT | (rgba)73 << BLUE_SHIFT,
81 (rgba)74 << RED_SHIFT | (rgba)74 << GREEN_SHIFT | (rgba)74 << BLUE_SHIFT,
82 (rgba)75 << RED_SHIFT | (rgba)75 << GREEN_SHIFT | (rgba)75 << BLUE_SHIFT,
83 (rgba)76 << RED_SHIFT | (rgba)76 << GREEN_SHIFT | (rgba)76 << BLUE_SHIFT,
84 (rgba)77 << RED_SHIFT | (rgba)77 << GREEN_SHIFT | (rgba)77 << BLUE_SHIFT,
85 (rgba)78 << RED_SHIFT | (rgba)78 << GREEN_SHIFT | (rgba)78 << BLUE_SHIFT,
86 (rgba)79 << RED_SHIFT | (rgba)79 << GREEN_SHIFT | (rgba)79 << BLUE_SHIFT,
87 (rgba)80 << RED_SHIFT | (rgba)80 << GREEN_SHIFT | (rgba)80 << BLUE_SHIFT,
88 (rgba)81 << RED_SHIFT | (rgba)81 << GREEN_SHIFT | (rgba)81 << BLUE_SHIFT,
89 (rgba)82 << RED_SHIFT | (rgba)82 << GREEN_SHIFT | (rgba)82 << BLUE_SHIFT,
90 (rgba)83 << RED_SHIFT | (rgba)83 << GREEN_SHIFT | (rgba)83 << BLUE_SHIFT,
91 (rgba)84 << RED_SHIFT | (rgba)84 << GREEN_SHIFT | (rgba)84 << BLUE_SHIFT,
92 (rgba)85 << RED_SHIFT | (rgba)85 << GREEN_SHIFT | (rgba)85 << BLUE_SHIFT,
93 (rgba)86 << RED_SHIFT | (rgba)86 << GREEN_SHIFT | (rgba)86 << BLUE_SHIFT,
94 (rgba)87 << RED_SHIFT | (rgba)87 << GREEN_SHIFT | (rgba)87 << BLUE_SHIFT,
95 (rgba)88 << RED_SHIFT | (rgba)88 << GREEN_SHIFT | (rgba)88 << BLUE_SHIFT,
96 (rgba)89 << RED_SHIFT | (rgba)89 << GREEN_SHIFT | (rgba)89 << BLUE_SHIFT,
97 (rgba)90 << RED_SHIFT | (rgba)90 << GREEN_SHIFT | (rgba)90 << BLUE_SHIFT,
98 (rgba)91 << RED_SHIFT | (rgba)91 << GREEN_SHIFT | (rgba)91 << BLUE_SHIFT,
99 (rgba)92 << RED_SHIFT | (rgba)92 << GREEN_SHIFT | (rgba)92 << BLUE_SHIFT,
100 (rgba)93 << RED_SHIFT | (rgba)93 << GREEN_SHIFT | (rgba)93 << BLUE_SHIFT,
101 (rgba)94 << RED_SHIFT | (rgba)94 << GREEN_SHIFT | (rgba)94 << BLUE_SHIFT,
102 (rgba)95 << RED_SHIFT | (rgba)95 << GREEN_SHIFT | (rgba)95 << BLUE_SHIFT,
103 (rgba)96 << RED_SHIFT | (rgba)96 << GREEN_SHIFT | (rgba)96 << BLUE_SHIFT,
104 (rgba)97 << RED_SHIFT | (rgba)97 << GREEN_SHIFT | (rgba)97 << BLUE_SHIFT,
105 (rgba)98 << RED_SHIFT | (rgba)98 << GREEN_SHIFT | (rgba)98 << BLUE_SHIFT,
106 (rgba)99 << RED_SHIFT | (rgba)99 << GREEN_SHIFT | (rgba)99 << BLUE_SHIFT,
107 (rgba)100 << RED_SHIFT | (rgba)100 << GREEN_SHIFT | (rgba)100 << BLUE_SHIFT,
108 (rgba)101 << RED_SHIFT | (rgba)101 << GREEN_SHIFT | (rgba)101 << BLUE_SHIFT,
109 (rgba)102 << RED_SHIFT | (rgba)102 << GREEN_SHIFT | (rgba)102 << BLUE_SHIFT,
110 (rgba)103 << RED_SHIFT | (rgba)103 << GREEN_SHIFT | (rgba)103 << BLUE_SHIFT,
111 (rgba)104 << RED_SHIFT | (rgba)104 << GREEN_SHIFT | (rgba)104 << BLUE_SHIFT,
112 (rgba)105 << RED_SHIFT | (rgba)105 << GREEN_SHIFT | (rgba)105 << BLUE_SHIFT,
113 (rgba)106 << RED_SHIFT | (rgba)106 << GREEN_SHIFT | (rgba)106 << BLUE_SHIFT,
114 (rgba)107 << RED_SHIFT | (rgba)107 << GREEN_SHIFT | (rgba)107 << BLUE_SHIFT,
115 (rgba)108 << RED_SHIFT | (rgba)108 << GREEN_SHIFT | (rgba)108 << BLUE_SHIFT,
116 (rgba)109 << RED_SHIFT | (rgba)109 << GREEN_SHIFT | (rgba)109 << BLUE_SHIFT,
117 (rgba)110 << RED_SHIFT | (rgba)110 << GREEN_SHIFT | (rgba)110 << BLUE_SHIFT,
118 (rgba)111 << RED_SHIFT | (rgba)111 << GREEN_SHIFT | (rgba)111 << BLUE_SHIFT,
119 (rgba)112 << RED_SHIFT | (rgba)112 << GREEN_SHIFT | (rgba)112 << BLUE_SHIFT,
120 (rgba)113 << RED_SHIFT | (rgba)113 << GREEN_SHIFT | (rgba)113 << BLUE_SHIFT,
121 (rgba)114 << RED_SHIFT | (rgba)114 << GREEN_SHIFT | (rgba)114 << BLUE_SHIFT,
122 (rgba)115 << RED_SHIFT | (rgba)115 << GREEN_SHIFT | (rgba)115 << BLUE_SHIFT,
123 (rgba)116 << RED_SHIFT | (rgba)116 << GREEN_SHIFT | (rgba)116 << BLUE_SHIFT,
124 (rgba)117 << RED_SHIFT | (rgba)117 << GREEN_SHIFT | (rgba)117 << BLUE_SHIFT,
125 (rgba)118 << RED_SHIFT | (rgba)118 << GREEN_SHIFT | (rgba)118 << BLUE_SHIFT,
126 (rgba)119 << RED_SHIFT | (rgba)119 << GREEN_SHIFT | (rgba)119 << BLUE_SHIFT,
127 (rgba)120 << RED_SHIFT | (rgba)120 << GREEN_SHIFT | (rgba)120 << BLUE_SHIFT,
128 (rgba)121 << RED_SHIFT | (rgba)121 << GREEN_SHIFT | (rgba)121 << BLUE_SHIFT,
129 (rgba)122 << RED_SHIFT | (rgba)122 << GREEN_SHIFT | (rgba)122 << BLUE_SHIFT,
130 (rgba)123 << RED_SHIFT | (rgba)123 << GREEN_SHIFT | (rgba)123 << BLUE_SHIFT,
131 (rgba)124 << RED_SHIFT | (rgba)124 << GREEN_SHIFT | (rgba)124 << BLUE_SHIFT,
132 (rgba)125 << RED_SHIFT | (rgba)125 << GREEN_SHIFT | (rgba)125 << BLUE_SHIFT,
133 (rgba)126 << RED_SHIFT | (rgba)126 << GREEN_SHIFT | (rgba)126 << BLUE_SHIFT,
134 (rgba)127 << RED_SHIFT | (rgba)127 << GREEN_SHIFT | (rgba)127 << BLUE_SHIFT,
135 (rgba)128 << RED_SHIFT | (rgba)128 << GREEN_SHIFT | (rgba)128 << BLUE_SHIFT,
136 (rgba)129 << RED_SHIFT | (rgba)129 << GREEN_SHIFT | (rgba)129 << BLUE_SHIFT,
137 (rgba)130 << RED_SHIFT | (rgba)130 << GREEN_SHIFT | (rgba)130 << BLUE_SHIFT,
138 (rgba)131 << RED_SHIFT | (rgba)131 << GREEN_SHIFT | (rgba)131 << BLUE_SHIFT,
139 (rgba)132 << RED_SHIFT | (rgba)132 << GREEN_SHIFT | (rgba)132 << BLUE_SHIFT,
140 (rgba)133 << RED_SHIFT | (rgba)133 << GREEN_SHIFT | (rgba)133 << BLUE_SHIFT,
141 (rgba)134 << RED_SHIFT | (rgba)134 << GREEN_SHIFT | (rgba)134 << BLUE_SHIFT,
142 (rgba)135 << RED_SHIFT | (rgba)135 << GREEN_SHIFT | (rgba)135 << BLUE_SHIFT,
143 (rgba)136 << RED_SHIFT | (rgba)136 << GREEN_SHIFT | (rgba)136 << BLUE_SHIFT,
144 (rgba)137 << RED_SHIFT | (rgba)137 << GREEN_SHIFT | (rgba)137 << BLUE_SHIFT,
145 (rgba)138 << RED_SHIFT | (rgba)138 << GREEN_SHIFT | (rgba)138 << BLUE_SHIFT,
146 (rgba)139 << RED_SHIFT | (rgba)139 << GREEN_SHIFT | (rgba)139 << BLUE_SHIFT,
147 (rgba)140 << RED_SHIFT | (rgba)140 << GREEN_SHIFT | (rgba)140 << BLUE_SHIFT,
148 (rgba)141 << RED_SHIFT | (rgba)141 << GREEN_SHIFT | (rgba)141 << BLUE_SHIFT,
149 (rgba)142 << RED_SHIFT | (rgba)142 << GREEN_SHIFT | (rgba)142 << BLUE_SHIFT,
150 (rgba)143 << RED_SHIFT | (rgba)143 << GREEN_SHIFT | (rgba)143 << BLUE_SHIFT,
151 (rgba)144 << RED_SHIFT | (rgba)144 << GREEN_SHIFT | (rgba)144 << BLUE_SHIFT,
152 (rgba)145 << RED_SHIFT | (rgba)145 << GREEN_SHIFT | (rgba)145 << BLUE_SHIFT,
153 (rgba)146 << RED_SHIFT | (rgba)146 << GREEN_SHIFT | (rgba)146 << BLUE_SHIFT,
154 (rgba)147 << RED_SHIFT | (rgba)147 << GREEN_SHIFT | (rgba)147 << BLUE_SHIFT,
155 (rgba)148 << RED_SHIFT | (rgba)148 << GREEN_SHIFT | (rgba)148 << BLUE_SHIFT,
156 (rgba)149 << RED_SHIFT | (rgba)149 << GREEN_SHIFT | (rgba)149 << BLUE_SHIFT,
157 (rgba)150 << RED_SHIFT | (rgba)150 << GREEN_SHIFT | (rgba)150 << BLUE_SHIFT,
158 (rgba)151 << RED_SHIFT | (rgba)151 << GREEN_SHIFT | (rgba)151 << BLUE_SHIFT,
159 (rgba)152 << RED_SHIFT | (rgba)152 << GREEN_SHIFT | (rgba)152 << BLUE_SHIFT,
160 (rgba)153 << RED_SHIFT | (rgba)153 << GREEN_SHIFT | (rgba)153 << BLUE_SHIFT,
161 (rgba)154 << RED_SHIFT | (rgba)154 << GREEN_SHIFT | (rgba)154 << BLUE_SHIFT,
162 (rgba)155 << RED_SHIFT | (rgba)155 << GREEN_SHIFT | (rgba)155 << BLUE_SHIFT,
163 (rgba)156 << RED_SHIFT | (rgba)156 << GREEN_SHIFT | (rgba)156 << BLUE_SHIFT,
164 (rgba)157 << RED_SHIFT | (rgba)157 << GREEN_SHIFT | (rgba)157 << BLUE_SHIFT,
165 (rgba)158 << RED_SHIFT | (rgba)158 << GREEN_SHIFT | (rgba)158 << BLUE_SHIFT,
166 (rgba)159 << RED_SHIFT | (rgba)159 << GREEN_SHIFT | (rgba)159 << BLUE_SHIFT,
167 (rgba)160 << RED_SHIFT | (rgba)160 << GREEN_SHIFT | (rgba)160 << BLUE_SHIFT,
168 (rgba)161 << RED_SHIFT | (rgba)161 << GREEN_SHIFT | (rgba)161 << BLUE_SHIFT,
169 (rgba)162 << RED_SHIFT | (rgba)162 << GREEN_SHIFT | (rgba)162 << BLUE_SHIFT,
170 (rgba)163 << RED_SHIFT | (rgba)163 << GREEN_SHIFT | (rgba)163 << BLUE_SHIFT,
171 (rgba)164 << RED_SHIFT | (rgba)164 << GREEN_SHIFT | (rgba)164 << BLUE_SHIFT,
172 (rgba)165 << RED_SHIFT | (rgba)165 << GREEN_SHIFT | (rgba)165 << BLUE_SHIFT,
173 (rgba)166 << RED_SHIFT | (rgba)166 << GREEN_SHIFT | (rgba)166 << BLUE_SHIFT,
174 (rgba)167 << RED_SHIFT | (rgba)167 << GREEN_SHIFT | (rgba)167 << BLUE_SHIFT,
175 (rgba)168 << RED_SHIFT | (rgba)168 << GREEN_SHIFT | (rgba)168 << BLUE_SHIFT,
176 (rgba)169 << RED_SHIFT | (rgba)169 << GREEN_SHIFT | (rgba)169 << BLUE_SHIFT,
177 (rgba)170 << RED_SHIFT | (rgba)170 << GREEN_SHIFT | (rgba)170 << BLUE_SHIFT,
178 (rgba)171 << RED_SHIFT | (rgba)171 << GREEN_SHIFT | (rgba)171 << BLUE_SHIFT,
179 (rgba)172 << RED_SHIFT | (rgba)172 << GREEN_SHIFT | (rgba)172 << BLUE_SHIFT,
180 (rgba)173 << RED_SHIFT | (rgba)173 << GREEN_SHIFT | (rgba)173 << BLUE_SHIFT,
181 (rgba)174 << RED_SHIFT | (rgba)174 << GREEN_SHIFT | (rgba)174 << BLUE_SHIFT,
182 (rgba)175 << RED_SHIFT | (rgba)175 << GREEN_SHIFT | (rgba)175 << BLUE_SHIFT,
183 (rgba)176 << RED_SHIFT | (rgba)176 << GREEN_SHIFT | (rgba)176 << BLUE_SHIFT,
184 (rgba)177 << RED_SHIFT | (rgba)177 << GREEN_SHIFT | (rgba)177 << BLUE_SHIFT,
185 (rgba)178 << RED_SHIFT | (rgba)178 << GREEN_SHIFT | (rgba)178 << BLUE_SHIFT,
186 (rgba)179 << RED_SHIFT | (rgba)179 << GREEN_SHIFT | (rgba)179 << BLUE_SHIFT,
187 (rgba)180 << RED_SHIFT | (rgba)180 << GREEN_SHIFT | (rgba)180 << BLUE_SHIFT,
188 (rgba)181 << RED_SHIFT | (rgba)181 << GREEN_SHIFT | (rgba)181 << BLUE_SHIFT,
189 (rgba)182 << RED_SHIFT | (rgba)182 << GREEN_SHIFT | (rgba)182 << BLUE_SHIFT,
190 (rgba)183 << RED_SHIFT | (rgba)183 << GREEN_SHIFT | (rgba)183 << BLUE_SHIFT,
191 (rgba)184 << RED_SHIFT | (rgba)184 << GREEN_SHIFT | (rgba)184 << BLUE_SHIFT,
192 (rgba)185 << RED_SHIFT | (rgba)185 << GREEN_SHIFT | (rgba)185 << BLUE_SHIFT,
193 (rgba)186 << RED_SHIFT | (rgba)186 << GREEN_SHIFT | (rgba)186 << BLUE_SHIFT,
194 (rgba)187 << RED_SHIFT | (rgba)187 << GREEN_SHIFT | (rgba)187 << BLUE_SHIFT,
195 (rgba)188 << RED_SHIFT | (rgba)188 << GREEN_SHIFT | (rgba)188 << BLUE_SHIFT,
196 (rgba)189 << RED_SHIFT | (rgba)189 << GREEN_SHIFT | (rgba)189 << BLUE_SHIFT,
197 (rgba)190 << RED_SHIFT | (rgba)190 << GREEN_SHIFT | (rgba)190 << BLUE_SHIFT,
198 (rgba)191 << RED_SHIFT | (rgba)191 << GREEN_SHIFT | (rgba)191 << BLUE_SHIFT,
199 (rgba)192 << RED_SHIFT | (rgba)192 << GREEN_SHIFT | (rgba)192 << BLUE_SHIFT,
200 (rgba)193 << RED_SHIFT | (rgba)193 << GREEN_SHIFT | (rgba)193 << BLUE_SHIFT,
201 (rgba)194 << RED_SHIFT | (rgba)194 << GREEN_SHIFT | (rgba)194 << BLUE_SHIFT,
202 (rgba)195 << RED_SHIFT | (rgba)195 << GREEN_SHIFT | (rgba)195 << BLUE_SHIFT,
203 (rgba)196 << RED_SHIFT | (rgba)196 << GREEN_SHIFT | (rgba)196 << BLUE_SHIFT,
204 (rgba)197 << RED_SHIFT | (rgba)197 << GREEN_SHIFT | (rgba)197 << BLUE_SHIFT,
205 (rgba)198 << RED_SHIFT | (rgba)198 << GREEN_SHIFT | (rgba)198 << BLUE_SHIFT,
206 (rgba)199 << RED_SHIFT | (rgba)199 << GREEN_SHIFT | (rgba)199 << BLUE_SHIFT,
207 (rgba)200 << RED_SHIFT | (rgba)200 << GREEN_SHIFT | (rgba)200 << BLUE_SHIFT,
208 (rgba)201 << RED_SHIFT | (rgba)201 << GREEN_SHIFT | (rgba)201 << BLUE_SHIFT,
209 (rgba)202 << RED_SHIFT | (rgba)202 << GREEN_SHIFT | (rgba)202 << BLUE_SHIFT,
210 (rgba)203 << RED_SHIFT | (rgba)203 << GREEN_SHIFT | (rgba)203 << BLUE_SHIFT,
211 (rgba)204 << RED_SHIFT | (rgba)204 << GREEN_SHIFT | (rgba)204 << BLUE_SHIFT,
212 (rgba)205 << RED_SHIFT | (rgba)205 << GREEN_SHIFT | (rgba)205 << BLUE_SHIFT,
213 (rgba)206 << RED_SHIFT | (rgba)206 << GREEN_SHIFT | (rgba)206 << BLUE_SHIFT,
214 (rgba)207 << RED_SHIFT | (rgba)207 << GREEN_SHIFT | (rgba)207 << BLUE_SHIFT,
215 (rgba)208 << RED_SHIFT | (rgba)208 << GREEN_SHIFT | (rgba)208 << BLUE_SHIFT,
216 (rgba)209 << RED_SHIFT | (rgba)209 << GREEN_SHIFT | (rgba)209 << BLUE_SHIFT,
217 (rgba)210 << RED_SHIFT | (rgba)210 << GREEN_SHIFT | (rgba)210 << BLUE_SHIFT,
218 (rgba)211 << RED_SHIFT | (rgba)211 << GREEN_SHIFT | (rgba)211 << BLUE_SHIFT,
219 (rgba)212 << RED_SHIFT | (rgba)212 << GREEN_SHIFT | (rgba)212 << BLUE_SHIFT,
220 (rgba)213 << RED_SHIFT | (rgba)213 << GREEN_SHIFT | (rgba)213 << BLUE_SHIFT,
221 (rgba)214 << RED_SHIFT | (rgba)214 << GREEN_SHIFT | (rgba)214 << BLUE_SHIFT,
222 (rgba)215 << RED_SHIFT | (rgba)215 << GREEN_SHIFT | (rgba)215 << BLUE_SHIFT,
223 (rgba)216 << RED_SHIFT | (rgba)216 << GREEN_SHIFT | (rgba)216 << BLUE_SHIFT,
224 (rgba)217 << RED_SHIFT | (rgba)217 << GREEN_SHIFT | (rgba)217 << BLUE_SHIFT,
225 (rgba)218 << RED_SHIFT | (rgba)218 << GREEN_SHIFT | (rgba)218 << BLUE_SHIFT,
226 (rgba)219 << RED_SHIFT | (rgba)219 << GREEN_SHIFT | (rgba)219 << BLUE_SHIFT,
227 (rgba)220 << RED_SHIFT | (rgba)220 << GREEN_SHIFT | (rgba)220 << BLUE_SHIFT,
228 (rgba)221 << RED_SHIFT | (rgba)221 << GREEN_SHIFT | (rgba)221 << BLUE_SHIFT,
229 (rgba)222 << RED_SHIFT | (rgba)222 << GREEN_SHIFT | (rgba)222 << BLUE_SHIFT,
230 (rgba)223 << RED_SHIFT | (rgba)223 << GREEN_SHIFT | (rgba)223 << BLUE_SHIFT,
231 (rgba)224 << RED_SHIFT | (rgba)224 << GREEN_SHIFT | (rgba)224 << BLUE_SHIFT,
232 (rgba)225 << RED_SHIFT | (rgba)225 << GREEN_SHIFT | (rgba)225 << BLUE_SHIFT,
233 (rgba)226 << RED_SHIFT | (rgba)226 << GREEN_SHIFT | (rgba)226 << BLUE_SHIFT,
234 (rgba)227 << RED_SHIFT | (rgba)227 << GREEN_SHIFT | (rgba)227 << BLUE_SHIFT,
235 (rgba)228 << RED_SHIFT | (rgba)228 << GREEN_SHIFT | (rgba)228 << BLUE_SHIFT,
236 (rgba)229 << RED_SHIFT | (rgba)229 << GREEN_SHIFT | (rgba)229 << BLUE_SHIFT,
237 (rgba)230 << RED_SHIFT | (rgba)230 << GREEN_SHIFT | (rgba)230 << BLUE_SHIFT,
238 (rgba)231 << RED_SHIFT | (rgba)231 << GREEN_SHIFT | (rgba)231 << BLUE_SHIFT,
239 (rgba)232 << RED_SHIFT | (rgba)232 << GREEN_SHIFT | (rgba)232 << BLUE_SHIFT,
240 (rgba)233 << RED_SHIFT | (rgba)233 << GREEN_SHIFT | (rgba)233 << BLUE_SHIFT,
241 (rgba)234 << RED_SHIFT | (rgba)234 << GREEN_SHIFT | (rgba)234 << BLUE_SHIFT,
242 (rgba)235 << RED_SHIFT | (rgba)235 << GREEN_SHIFT | (rgba)235 << BLUE_SHIFT,
243 (rgba)236 << RED_SHIFT | (rgba)236 << GREEN_SHIFT | (rgba)236 << BLUE_SHIFT,
244 (rgba)237 << RED_SHIFT | (rgba)237 << GREEN_SHIFT | (rgba)237 << BLUE_SHIFT,
245 (rgba)238 << RED_SHIFT | (rgba)238 << GREEN_SHIFT | (rgba)238 << BLUE_SHIFT,
246 (rgba)239 << RED_SHIFT | (rgba)239 << GREEN_SHIFT | (rgba)239 << BLUE_SHIFT,
247 (rgba)240 << RED_SHIFT | (rgba)240 << GREEN_SHIFT | (rgba)240 << BLUE_SHIFT,
248 (rgba)241 << RED_SHIFT | (rgba)241 << GREEN_SHIFT | (rgba)241 << BLUE_SHIFT,
249 (rgba)242 << RED_SHIFT | (rgba)242 << GREEN_SHIFT | (rgba)242 << BLUE_SHIFT,
250 (rgba)243 << RED_SHIFT | (rgba)243 << GREEN_SHIFT | (rgba)243 << BLUE_SHIFT,
251 (rgba)244 << RED_SHIFT | (rgba)244 << GREEN_SHIFT | (rgba)244 << BLUE_SHIFT,
252 (rgba)245 << RED_SHIFT | (rgba)245 << GREEN_SHIFT | (rgba)245 << BLUE_SHIFT,
253 (rgba)246 << RED_SHIFT | (rgba)246 << GREEN_SHIFT | (rgba)246 << BLUE_SHIFT,
254 (rgba)247 << RED_SHIFT | (rgba)247 << GREEN_SHIFT | (rgba)247 << BLUE_SHIFT,
255 (rgba)248 << RED_SHIFT | (rgba)248 << GREEN_SHIFT | (rgba)248 << BLUE_SHIFT,
256 (rgba)249 << RED_SHIFT | (rgba)249 << GREEN_SHIFT | (rgba)249 << BLUE_SHIFT,
257 (rgba)250 << RED_SHIFT | (rgba)250 << GREEN_SHIFT | (rgba)250 << BLUE_SHIFT,
258 (rgba)251 << RED_SHIFT | (rgba)251 << GREEN_SHIFT | (rgba)251 << BLUE_SHIFT,
259 (rgba)252 << RED_SHIFT | (rgba)252 << GREEN_SHIFT | (rgba)252 << BLUE_SHIFT,
260 (rgba)253 << RED_SHIFT | (rgba)253 << GREEN_SHIFT | (rgba)253 << BLUE_SHIFT,
261 (rgba)254 << RED_SHIFT | (rgba)254 << GREEN_SHIFT | (rgba)254 << BLUE_SHIFT,
262 (rgba)255 << RED_SHIFT | (rgba)255 << GREEN_SHIFT | (rgba)255 << BLUE_SHIFT,
263};

◆ ok_scaletable

int ok_scaletable
extern

Definition at line 23 of file scaletab.c.

◆ scaletable

uint8_t scaletable[256][256]
extern

Definition at line 22 of file scaletab.c.