2
// AggPas 2.4 RM3 pixel format definition file
5
procedure blend_pix_bgr_pre(p : int8u_ptr; cr ,cg ,cb ,alpha ,cover : unsigned ); overload;
7
alpha:=base_mask - alpha;
8
cover:=(cover + 1 ) shl (base_shift - 8 );
10
order_bgr(pointer(p )^ ).R:=int8u((order_bgr(pointer(p )^ ).R * alpha + cr * cover ) shr base_shift );
11
order_bgr(pointer(p )^ ).G:=int8u((order_bgr(pointer(p )^ ).G * alpha + cg * cover ) shr base_shift );
12
order_bgr(pointer(p )^ ).B:=int8u((order_bgr(pointer(p )^ ).B * alpha + cb * cover ) shr base_shift );
17
procedure blend_pix_bgr_pre(p : int8u_ptr; cr ,cg ,cb ,alpha : unsigned ); overload;
19
alpha:=base_mask - alpha;
21
order_bgr(pointer(p )^ ).R:=int8u(((order_bgr(pointer(p )^ ).R * alpha ) shr base_shift ) + cr );
22
order_bgr(pointer(p )^ ).G:=int8u(((order_bgr(pointer(p )^ ).G * alpha ) shr base_shift ) + cg );
23
order_bgr(pointer(p )^ ).B:=int8u(((order_bgr(pointer(p )^ ).B * alpha ) shr base_shift ) + cb );
27
{ copy_or_blend_pix_bgr_pre }
28
procedure copy_or_blend_pix_bgr_pre(p : int8u_ptr; c : aggclr_ptr; cover : unsigned ); overload;
35
alpha:=(c.a * (cover + 1 ) ) shr 8;
37
if alpha = base_mask then
39
order_bgr(pointer(p )^ ).R:=c.r;
40
order_bgr(pointer(p )^ ).G:=c.g;
41
order_bgr(pointer(p )^ ).B:=c.b;
45
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,alpha ,cover );
51
{ copy_or_blend_pix_bgr_pre }
52
procedure copy_or_blend_pix_bgr_pre(p : int8u_ptr; c : aggclr_ptr ); overload;
55
if c.a = base_mask then
57
order_bgr(pointer(p )^ ).R:=c.r;
58
order_bgr(pointer(p )^ ).G:=c.g;
59
order_bgr(pointer(p )^ ).B:=c.b;
63
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,c.a );
67
{ bgr24_pre_blend_pixel }
68
procedure bgr24_pre_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
70
copy_or_blend_pix_bgr_pre(int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ) ,c ,cover );
74
{ bgr24_pre_blend_hline }
75
procedure bgr24_pre_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
84
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
86
alpha:=(c.a * (cover + 1 ) ) shr 8;
88
if alpha = base_mask then
90
order_bgr(pointer(p )^ ).R:=c.r;
91
order_bgr(pointer(p )^ ).G:=c.g;
92
order_bgr(pointer(p )^ ).B:=c.b;
100
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,alpha );
102
inc(ptrcomp(p ) ,3 );
111
{ bgr24_pre_blend_vline }
112
procedure bgr24_pre_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
121
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
123
alpha:=(c.a * (cover + 1 ) ) shr 8;
125
if alpha = base_mask then
127
order_bgr(pointer(p )^ ).R:=c.r;
128
order_bgr(pointer(p )^ ).G:=c.g;
129
order_bgr(pointer(p )^ ).B:=c.b;
131
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
138
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,alpha ,cover );
140
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
150
{ bgr24_pre_blend_solid_hspan }
151
procedure bgr24_pre_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
160
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
163
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
165
if alpha = base_mask then
167
order_bgr(pointer(p )^ ).R:=c.r;
168
order_bgr(pointer(p )^ ).G:=c.g;
169
order_bgr(pointer(p )^ ).B:=c.b;
173
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
175
inc(ptrcomp(p ) ,3 );
176
inc(ptrcomp(covers ) );
185
{ bgr24_pre_blend_solid_vspan }
186
procedure bgr24_pre_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
195
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
198
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
200
if alpha = base_mask then
202
order_bgr(pointer(p )^ ).R:=c.r;
203
order_bgr(pointer(p )^ ).G:=c.g;
204
order_bgr(pointer(p )^ ).B:=c.b;
208
blend_pix_bgr_pre(p ,c.r ,c.g ,c.b ,alpha,covers^ );
210
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
212
inc(ptrcomp(covers ) );
221
{ bgr24_pre_blend_color_hspan }
222
procedure bgr24_pre_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
227
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
229
if covers <> NIL then
231
copy_or_blend_pix_bgr_pre(p ,colors ,covers^ );
233
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
234
inc(ptrcomp(covers ) ,sizeof(int8u ) );
235
inc(ptrcomp(p ) ,3 );
242
copy_or_blend_pix_bgr_pre(p ,colors );
244
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
245
inc(ptrcomp(p ) ,3 );
251
copy_or_blend_pix_bgr_pre(p ,colors ,cover );
253
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
254
inc(ptrcomp(p ) ,3 );
261
{ bgr24_pre_blend_color_vspan }
262
procedure bgr24_pre_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
267
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
269
if covers <> NIL then
271
copy_or_blend_pix_bgr_pre(p ,colors ,covers^ );
273
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
274
inc(ptrcomp(covers ) ,sizeof(int8u ) );
276
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
284
copy_or_blend_pix_bgr_pre(p ,colors );
286
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
288
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
295
copy_or_blend_pix_bgr_pre(p ,colors ,cover );
297
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
299
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
307
{ bgr24_pre_blend_from }
308
procedure bgr24_pre_blend_from(this : pixel_formats_ptr; from : pixel_formats_ptr; psrc_ : int8u_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
310
psrc ,pdst : int8u_ptr;
317
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + xdst * 3 * sizeof(int8u ) );
321
alpha:=int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^;
324
if alpha = base_mask then
326
order_bgr(pointer(pdst )^ ).R:=int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^;
327
order_bgr(pointer(pdst )^ ).G:=int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^;
328
order_bgr(pointer(pdst )^ ).B:=int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^;
334
int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
335
int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
336
int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
339
inc(ptrcomp(psrc ) ,4 );
340
inc(ptrcomp(pdst ) ,3 );
347
int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
348
int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
349
int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
350
int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
352
copy_or_blend_pix_bgr_pre(pdst ,@color ,cover );
354
inc(ptrcomp(psrc ) ,4 );
355
inc(ptrcomp(pdst ) ,3 );
362
{ bgr24_pre_blend_from_color }
363
procedure bgr24_pre_blend_from_color(this : pixel_formats_ptr; from : pixel_formats_ptr; color : aggclr_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
367
psrc ,pdst : int8u_ptr;
370
ppsz:=from._pix_width;
371
psrc:=from.row_ptr(ysrc );
375
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
378
copy_or_blend_pix_bgr_pre(
380
shr_int32(psrc^ * cover + base_mask ,base_shift ) );
382
inc(ptrcomp(psrc ) ,ppsz );
383
inc(ptrcomp(pdst ) ,3 );
392
{ bgr24_pre_blend_from_lut }
393
procedure bgr24_pre_blend_from_lut(this : pixel_formats_ptr; from : pixel_formats_ptr; color_lut : aggclr_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
397
psrc ,pdst : int8u_ptr;
402
ppsz:=from._pix_width;
403
psrc:=from.row_ptr(ysrc );
407
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
411
color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
413
blend_pix_bgr_pre(pdst ,color.r ,color.g ,color.b ,color.a );
415
inc(ptrcomp(psrc ) ,ppsz );
416
inc(ptrcomp(pdst ) ,3 );
422
copy_or_blend_pix_bgr_pre(
423
pdst ,aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ) ,cover);
425
inc(ptrcomp(psrc ) ,ppsz );
426
inc(ptrcomp(pdst ) ,3 );