2
// AggPas 2.4 RM3 pixel format definition file
5
procedure blend_pix_bgr(p : int8u_ptr; cr ,cg ,cb ,alpha : int; cover : unsigned = 0 );
7
order_bgr(pointer(p )^ ).R:=order_bgr(pointer(p )^ ).R + ((cr - order_bgr(pointer(p )^ ).R ) * alpha ) shr base_shift;
8
order_bgr(pointer(p )^ ).G:=order_bgr(pointer(p )^ ).G + ((cg - order_bgr(pointer(p )^ ).G ) * alpha ) shr base_shift;
9
order_bgr(pointer(p )^ ).B:=order_bgr(pointer(p )^ ).B + ((cb - order_bgr(pointer(p )^ ).B ) * alpha ) shr base_shift;
13
{ copy_or_blend_pix_bgr }
14
procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr; cover : unsigned ); overload;
21
alpha:=(c.a * (cover + 1 ) ) shr 8;
23
if alpha = base_mask then
25
order_bgr(pointer(p )^ ).R:=c.r;
26
order_bgr(pointer(p )^ ).G:=c.g;
27
order_bgr(pointer(p )^ ).B:=c.b;
31
blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
37
{ copy_or_blend_pix_bgr }
38
procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr ); overload;
41
if c.a = base_mask then
43
order_bgr(pointer(p )^ ).R:=c.r;
44
order_bgr(pointer(p )^ ).G:=c.g;
45
order_bgr(pointer(p )^ ).B:=c.b;
49
blend_pix_bgr(p ,c.r ,c.g ,c.b ,c.a );
54
procedure bgr24_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr );
59
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
61
order_bgr(pointer(p )^ ).R:=c.r;
62
order_bgr(pointer(p )^ ).G:=c.g;
63
order_bgr(pointer(p )^ ).B:=c.b;
68
procedure bgr24_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
70
copy_or_blend_pix_bgr(int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ) ,c ,cover );
75
function bgr24_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr;
80
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
83
order_bgr(pointer(p )^ ).R ,
84
order_bgr(pointer(p )^ ).G ,
85
order_bgr(pointer(p )^ ).B );
90
procedure bgr24_copy_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
95
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
98
order_bgr(pointer(p )^ ).R:=c.r;
99
order_bgr(pointer(p )^ ).G:=c.g;
100
order_bgr(pointer(p )^ ).B:=c.b;
102
inc(ptrcomp(p ) ,3 );
110
procedure bgr24_copy_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
115
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
118
order_bgr(pointer(p )^ ).R:=c.r;
119
order_bgr(pointer(p )^ ).G:=c.g;
120
order_bgr(pointer(p )^ ).B:=c.b;
122
p:=this.m_rbuf.next_row(p );
130
{ bgr24_blend_hline }
131
procedure bgr24_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
140
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
142
alpha:=(c.a * (cover + 1 ) ) shr 8;
144
if alpha = base_mask then
146
order_bgr(pointer(p )^ ).R:=c.r;
147
order_bgr(pointer(p )^ ).G:=c.g;
148
order_bgr(pointer(p )^ ).B:=c.b;
150
inc(ptrcomp(p ) ,3 );
156
blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha );
158
inc(ptrcomp(p ) ,3 );
167
{ bgr24_blend_vline }
168
procedure bgr24_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
177
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
179
alpha:=(c.a * (cover + 1 ) ) shr 8;
181
if alpha = base_mask then
183
order_bgr(pointer(p )^ ).R:=c.r;
184
order_bgr(pointer(p )^ ).G:=c.g;
185
order_bgr(pointer(p )^ ).B:=c.b;
187
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
194
blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
196
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
206
{ bgr24_blend_solid_hspan }
207
procedure bgr24_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
216
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
219
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
221
if alpha = base_mask then
223
order_bgr(pointer(p )^ ).R:=c.r;
224
order_bgr(pointer(p )^ ).G:=c.g;
225
order_bgr(pointer(p )^ ).B:=c.b;
229
blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
231
inc(ptrcomp(p ) ,3 );
232
inc(ptrcomp(covers ) );
241
{ bgr24_blend_solid_vspan }
242
procedure bgr24_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
251
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
254
alpha:=(c.a * (covers^ + 1 ) ) shr 8;
256
if alpha = base_mask then
258
order_bgr(pointer(p )^ ).R:=c.r;
259
order_bgr(pointer(p )^ ).G:=c.g;
260
order_bgr(pointer(p )^ ).B:=c.b;
264
blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha,covers^ );
266
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
268
inc(ptrcomp(covers ) );
277
{ bgr24_blend_color_hspan }
278
procedure bgr24_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
283
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
285
if covers <> NIL then
287
copy_or_blend_pix_bgr(p ,colors ,covers^ );
289
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
290
inc(ptrcomp(covers ) ,sizeof(int8u ) );
291
inc(ptrcomp(p ) ,3 );
298
copy_or_blend_pix_bgr(p ,colors );
300
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
301
inc(ptrcomp(p ) ,3 );
307
copy_or_blend_pix_bgr(p ,colors ,cover );
309
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
310
inc(ptrcomp(p ) ,3 );
317
{ bgr24_blend_color_vspan }
318
procedure bgr24_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
323
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
325
if covers <> NIL then
327
copy_or_blend_pix_bgr(p ,colors ,covers^ );
329
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
330
inc(ptrcomp(covers ) ,sizeof(int8u ) );
332
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
340
copy_or_blend_pix_bgr(p ,colors );
342
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
344
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
351
copy_or_blend_pix_bgr(p ,colors ,cover );
353
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
355
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
364
procedure bgr24_blend_from(this : pixel_formats_ptr; from : pixel_formats_ptr; psrc_ : int8u_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
366
psrc ,pdst : int8u_ptr;
373
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + xdst * 3 * sizeof(int8u ) );
377
alpha:=int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^;
380
if alpha = base_mask then
382
order_bgr(pointer(pdst )^ ).R:=int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^;
383
order_bgr(pointer(pdst )^ ).G:=int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^;
384
order_bgr(pointer(pdst )^ ).B:=int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^;
390
int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
391
int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
392
int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
395
inc(ptrcomp(psrc ) ,4 );
396
inc(ptrcomp(pdst ) ,3 );
403
int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
404
int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
405
int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
406
int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
408
copy_or_blend_pix_bgr(pdst ,@color ,cover );
410
inc(ptrcomp(psrc ) ,4 );
411
inc(ptrcomp(pdst ) ,3 );
418
{ bgr24_copy_color_hspan }
419
procedure bgr24_copy_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
424
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
427
order_bgr(pointer(p )^ ).R:=colors.r;
428
order_bgr(pointer(p )^ ).G:=colors.g;
429
order_bgr(pointer(p )^ ).B:=colors.b;
431
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
432
inc(ptrcomp(p ) ,3 );
439
{ bgr24_copy_color_vspan }
440
procedure bgr24_copy_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
445
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
448
order_bgr(pointer(p )^ ).R:=colors.r;
449
order_bgr(pointer(p )^ ).G:=colors.g;
450
order_bgr(pointer(p )^ ).B:=colors.b;
452
p:=int8u_ptr(this.m_rbuf.next_row(p ) );
454
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
461
{ bgr24_blend_from_color }
462
procedure bgr24_blend_from_color(this : pixel_formats_ptr; from : pixel_formats_ptr; color : aggclr_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
466
psrc ,pdst : int8u_ptr;
469
ppsz:=from._pix_width;
470
psrc:=from.row_ptr(ysrc );
474
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
477
copy_or_blend_pix_bgr(
479
shr_int32(psrc^ * cover + base_mask ,base_shift ) );
481
inc(ptrcomp(psrc ) ,ppsz );
482
inc(ptrcomp(pdst ) ,3 );
491
{ bgr24_blend_from_lut }
492
procedure bgr24_blend_from_lut(this : pixel_formats_ptr; from : pixel_formats_ptr; color_lut : aggclr_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
496
psrc ,pdst : int8u_ptr;
501
ppsz:=from._pix_width;
502
psrc:=from.row_ptr(ysrc );
506
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
510
color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
512
blend_pix_bgr(pdst ,color.r ,color.g ,color.b ,color.a );
514
inc(ptrcomp(psrc ) ,ppsz );
515
inc(ptrcomp(pdst ) ,3 );
521
copy_or_blend_pix_bgr(
522
pdst ,aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ) ,cover);
524
inc(ptrcomp(psrc ) ,ppsz );
525
inc(ptrcomp(pdst ) ,3 );