2
// AggPas 2.4 RM3 pixel format definition file
5
procedure blend_pix_bgra_pre(p : unsigned_ptr; cr ,cg ,cb ,alpha : unsigned ); overload;
7
alpha:=base_mask - alpha;
9
order_bgra(p^ ).R:=int8u(((order_bgra(p^ ).R * alpha) shr base_shift ) + cr );
10
order_bgra(p^ ).G:=int8u(((order_bgra(p^ ).G * alpha) shr base_shift ) + cg );
11
order_bgra(p^ ).B:=int8u(((order_bgra(p^ ).B * alpha) shr base_shift ) + cb );
12
order_bgra(p^ ).A:=int8u(base_mask - ((alpha * (base_mask - order_bgra(p^ ).A ) ) shr base_shift) );
16
{ blend_pix_bgra_pre }
17
procedure blend_pix_bgra_pre(p : unsigned_ptr; cr ,cg ,cb ,alpha ,cover : unsigned ); overload;
19
alpha:=base_mask - alpha;
20
cover:=(cover + 1 ) shl (base_shift - 8 );
22
order_bgra(p^ ).R:=int8u((order_bgra(p^ ).R * alpha + cr * cover ) shr base_shift );
23
order_bgra(p^ ).G:=int8u((order_bgra(p^ ).G * alpha + cg * cover ) shr base_shift );
24
order_bgra(p^ ).B:=int8u((order_bgra(p^ ).B * alpha + cb * cover ) shr base_shift );
25
order_bgra(p^ ).A:=int8u(base_mask - ((alpha * (base_mask - order_bgra(p^ ).A ) ) shr base_shift ) );
29
{ copy_or_blend_pix_bgra_pre }
30
procedure copy_or_blend_pix_bgra_pre(p : unsigned_ptr; cr ,cg ,cb ,alpha : unsigned ); overload;
33
if alpha = base_mask then
35
order_bgra(p^ ).R:=cr;
36
order_bgra(p^ ).G:=cg;
37
order_bgra(p^ ).B:=cb;
38
order_bgra(p^ ).A:=base_mask;
42
blend_pix_bgra_pre(p ,cr ,cg ,cb ,alpha );
46
{ copy_or_blend_pix_bgra_pre }
47
procedure copy_or_blend_pix_bgra_pre(p : unsigned_ptr; cr ,cg ,cb ,alpha ,cover : unsigned ); overload;
50
copy_or_blend_pix_bgra_pre(p ,cr ,cg ,cb ,alpha )
54
alpha:=(alpha * (cover + 1 ) ) shr 8;
56
if alpha = base_mask then
58
order_bgra(p^ ).R:=cr;
59
order_bgra(p^ ).G:=cg;
60
order_bgra(p^ ).B:=cb;
61
order_bgra(p^ ).A:=base_mask;
65
blend_pix_bgra_pre(p ,cr ,cg ,cb ,alpha ,cover );
71
{ bgra32_pre_blend_pixel }
72
procedure bgra32_pre_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
74
copy_or_blend_pix_bgra_pre(
75
unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) ) ,
76
c.r ,c.g ,c.b ,c.a ,cover );
80
{ bgra32_pre_blend_hline }
81
procedure bgra32_pre_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
91
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
93
alpha:=(c.a * (cover + 1 ) ) shr 8;
95
if alpha = base_mask then
97
order_bgra(v ).R:=c.r;
98
order_bgra(v ).G:=c.g;
99
order_bgra(v ).B:=c.b;
100
order_bgra(v ).A:=c.a;
105
inc(ptrcomp(p ) ,sizeof(unsigned ) );
114
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha );
116
inc(ptrcomp(p ) ,sizeof(unsigned ) );
122
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha ,cover );
124
inc(ptrcomp(p ) ,sizeof(unsigned ) );
133
{ bgra32_pre_blend_vline }
134
procedure bgra32_pre_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
144
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
146
alpha:=(c.a * (cover + 1 ) ) shr 8;
148
if alpha = base_mask then
150
order_bgra(v ).R:=c.r;
151
order_bgra(v ).G:=c.g;
152
order_bgra(v ).B:=c.b;
153
order_bgra(v ).A:=c.a;
157
p :=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
165
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha );
167
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
174
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha ,cover );
176
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
186
{ bgra32_pre_blend_solid_hspan }
187
procedure bgra32_pre_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
196
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
199
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
201
if alpha = base_mask then
203
order_bgra(p^ ).R:=c.r;
204
order_bgra(p^ ).G:=c.g;
205
order_bgra(p^ ).B:=c.b;
206
order_bgra(p^ ).A:=base_mask;
210
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
212
inc(ptrcomp(p ) ,4 );
213
inc(ptrcomp(covers ) );
223
{ bgra32_pre_blend_solid_vspan }
224
procedure bgra32_pre_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
233
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
236
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
238
if alpha = base_mask then
240
order_bgra(p^ ).R:=c.r;
241
order_bgra(p^ ).G:=c.g;
242
order_bgra(p^ ).B:=c.b;
243
order_bgra(p^ ).A:=base_mask;
247
blend_pix_bgra_pre(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
249
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
251
inc(ptrcomp(covers ) ,sizeof(int8u ) );
260
{ bgra32_pre_blend_color_hspan }
261
procedure bgra32_pre_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
266
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
268
if covers <> NIL then
270
copy_or_blend_pix_bgra_pre(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
272
inc(ptrcomp(covers ) ,sizeof(int8u ) );
273
inc(ptrcomp(p ) ,4 );
274
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
281
copy_or_blend_pix_bgra_pre(p ,colors.r ,colors.g ,colors.b ,colors.a );
283
inc(ptrcomp(p ) ,4 );
284
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
290
copy_or_blend_pix_bgra_pre(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
292
inc(ptrcomp(p ) ,4 );
293
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
300
{ bgra32_pre_blend_color_vspan }
301
procedure bgra32_pre_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
306
p:=unsigned_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) );
308
if covers <> NIL then
310
copy_or_blend_pix_bgra_pre(
318
inc(ptrcomp(covers ) ,sizeof(int8u ) );
320
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
322
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
329
copy_or_blend_pix_bgra_pre(
336
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
338
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
344
copy_or_blend_pix_bgra_pre(
352
p:=unsigned_ptr(this.m_rbuf.next_row(int8u_ptr(p ) ) );
354
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
361
{ bgra32_pre_blend_from }
362
procedure bgra32_pre_blend_from(this : pixel_formats_ptr; from : pixel_formats_ptr; psrc_ : int8u_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
364
psrc ,pdst : unsigned_ptr;
369
psrc:=unsigned_ptr(psrc_ );
370
pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + (xdst shl 2 ) * sizeof(int8u ) );
373
if ptrcomp(xdst ) > ptrcomp(xsrc ) then
375
inc(ptrcomp(psrc ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) );
376
inc(ptrcomp(pdst ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) );
384
copy_or_blend_pix_bgra_pre(
386
order_bgra(psrc^ ).R ,
387
order_bgra(psrc^ ).G ,
388
order_bgra(psrc^ ).B ,
389
order_bgra(psrc^ ).A );
391
inc(ptrcomp(psrc ) ,incp );
392
inc(ptrcomp(pdst ) ,incp );
398
copy_or_blend_pix_bgra_pre(
400
order_bgra(psrc^ ).R ,
401
order_bgra(psrc^ ).G ,
402
order_bgra(psrc^ ).B ,
403
order_bgra(psrc^ ).A ,
406
inc(ptrcomp(psrc ) ,incp );
407
inc(ptrcomp(pdst ) ,incp );
414
{ bgra32_pre_blend_from_color }
415
procedure bgra32_pre_blend_from_color(this : pixel_formats_ptr; from : pixel_formats_ptr; color : aggclr_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
423
ppsz:=from._pix_width;
424
psrc:=from.row_ptr(ysrc );
428
pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) );
431
copy_or_blend_pix_bgra_pre(
432
pdst ,color.r, color.g, color.b, color.a,
433
shr_int32(psrc^ * cover + base_mask ,base_shift ) );
435
inc(ptrcomp(psrc ) ,ppsz );
436
inc(ptrcomp(pdst ) ,4 );
445
{ bgra32_pre_blend_from_lut }
446
procedure bgra32_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 );
456
ppsz:=from._pix_width;
457
psrc:=from.row_ptr(ysrc );
461
pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) );
465
color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
467
copy_or_blend_pix_bgra_pre(pdst ,color.r, color.g, color.b, color.a );
469
inc(ptrcomp(psrc ) ,ppsz );
470
inc(ptrcomp(pdst ) ,4 );
476
color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
478
copy_or_blend_pix_bgra_pre(pdst ,color.r, color.g, color.b, color.a ,cover );
480
inc(ptrcomp(psrc ) ,ppsz );
481
inc(ptrcomp(pdst ) ,4 );