diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2012-03-09 12:37:16 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2012-03-09 12:37:16 +0200 |
commit | 5fdae25f717a7f0b55d2b1849b4812a06597c59e (patch) | |
tree | b41d481cbc36a8139625c330f8a7e5c3df92f47c /src/corelib/render/software/pf_bgr24.inc | |
parent | f8597f3dc0e65fc6ac2f1cf1666ed94fc7f0baba (diff) | |
download | fpGUI-5fdae25f717a7f0b55d2b1849b4812a06597c59e.tar.xz |
aggpas: fixes EOL style and file permissions.
Diffstat (limited to 'src/corelib/render/software/pf_bgr24.inc')
-rw-r--r-- | src/corelib/render/software/pf_bgr24.inc | 1066 |
1 files changed, 533 insertions, 533 deletions
diff --git a/src/corelib/render/software/pf_bgr24.inc b/src/corelib/render/software/pf_bgr24.inc index daa0bbec..58c35347 100644 --- a/src/corelib/render/software/pf_bgr24.inc +++ b/src/corelib/render/software/pf_bgr24.inc @@ -1,533 +1,533 @@ -//
-// AggPas 2.4 RM3 pixel format definition file
-//
-{ blend_pix_bgr }
-procedure blend_pix_bgr(p : int8u_ptr; cr ,cg ,cb ,alpha : int; cover : unsigned = 0 );
-begin
- order_bgr(pointer(p )^ ).R:=order_bgr(pointer(p )^ ).R + ((cr - order_bgr(pointer(p )^ ).R ) * alpha ) shr base_shift;
- order_bgr(pointer(p )^ ).G:=order_bgr(pointer(p )^ ).G + ((cg - order_bgr(pointer(p )^ ).G ) * alpha ) shr base_shift;
- order_bgr(pointer(p )^ ).B:=order_bgr(pointer(p )^ ).B + ((cb - order_bgr(pointer(p )^ ).B ) * alpha ) shr base_shift;
-
-end;
-
-{ copy_or_blend_pix_bgr }
-procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr; cover : unsigned ); overload;
-var
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- alpha:=(c.a * (cover + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- end
- else
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
-
- end;
-
-end;
-
-{ copy_or_blend_pix_bgr }
-procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr ); overload;
-begin
- if c.a <> 0 then
- if c.a = base_mask then
- begin
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- end
- else
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,c.a );
-
-end;
-
-{ bgr24_copy_pixel }
-procedure bgr24_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
-end;
-
-{ bgr24_blend_pixel }
-procedure bgr24_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
-begin
- copy_or_blend_pix_bgr(int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ) ,c ,cover );
-
-end;
-
-{ bgr24_pixel }
-function bgr24_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr;
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- result.ConstrInt(
- order_bgr(pointer(p )^ ).R ,
- order_bgr(pointer(p )^ ).G ,
- order_bgr(pointer(p )^ ).B );
-
-end;
-
-{ bgr24_copy_hline }
-procedure bgr24_copy_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_copy_vline }
-procedure bgr24_copy_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- p:=this.m_rbuf.next_row(p );
-
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_blend_hline }
-procedure bgr24_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
-var
- p : int8u_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- alpha:=(c.a * (cover + 1 ) ) shr 8;
-
- if alpha = base_mask then
- repeat
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0
- else
- repeat
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha );
-
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ bgr24_blend_vline }
-procedure bgr24_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
-var
- p : int8u_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- alpha:=(c.a * (cover + 1 ) ) shr 8;
-
- if alpha = base_mask then
- repeat
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- dec(len );
-
- until len = 0
- else
- repeat
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ bgr24_blend_solid_hspan }
-procedure bgr24_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
-var
- p : int8u_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- alpha:=(c.a * (covers^ + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- end
- else
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
-
- inc(ptrcomp(p ) ,3 );
- inc(ptrcomp(covers ) );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ bgr24_blend_solid_vspan }
-procedure bgr24_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
-var
- p : int8u_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- alpha:=(c.a * (covers^ + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- order_bgr(pointer(p )^ ).R:=c.r;
- order_bgr(pointer(p )^ ).G:=c.g;
- order_bgr(pointer(p )^ ).B:=c.b;
-
- end
- else
- blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha,covers^ );
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- inc(ptrcomp(covers ) );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ bgr24_blend_color_hspan }
-procedure bgr24_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- if covers <> NIL then
- repeat
- copy_or_blend_pix_bgr(p ,colors ,covers^ );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(covers ) ,sizeof(int8u ) );
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0
- else
- if cover = 255 then
- repeat
- copy_or_blend_pix_bgr(p ,colors );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0
- else
- repeat
- copy_or_blend_pix_bgr(p ,colors ,cover );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_blend_color_vspan }
-procedure bgr24_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- if covers <> NIL then
- repeat
- copy_or_blend_pix_bgr(p ,colors ,covers^ );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(covers ) ,sizeof(int8u ) );
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- dec(len );
-
- until len = 0
- else
- if cover = 255 then
- repeat
- copy_or_blend_pix_bgr(p ,colors );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- dec(len );
-
- until len = 0
- else
- repeat
- copy_or_blend_pix_bgr(p ,colors ,cover );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_blend_from }
-procedure bgr24_blend_from(this : pixel_formats_ptr; from : pixel_formats_ptr; psrc_ : int8u_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u );
-var
- psrc ,pdst : int8u_ptr;
-
- color : aggclr;
- alpha : unsigned;
-
-begin
- psrc:=psrc_;
- pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + xdst * 3 * sizeof(int8u ) );
-
- if cover = 255 then
- repeat
- alpha:=int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^;
-
- if alpha <> 0 then
- if alpha = base_mask then
- begin
- order_bgr(pointer(pdst )^ ).R:=int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^;
- order_bgr(pointer(pdst )^ ).G:=int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^;
- order_bgr(pointer(pdst )^ ).B:=int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^;
-
- end
- else
- blend_pix_bgr(
- pdst ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
- alpha );
-
- inc(ptrcomp(psrc ) ,4 );
- inc(ptrcomp(pdst ) ,3 );
- dec(len );
-
- until len = 0
- else
- repeat
- color.ConstrInt(
- int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
-
- copy_or_blend_pix_bgr(pdst ,@color ,cover );
-
- inc(ptrcomp(psrc ) ,4 );
- inc(ptrcomp(pdst ) ,3 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_copy_color_hspan }
-procedure bgr24_copy_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- order_bgr(pointer(p )^ ).R:=colors.r;
- order_bgr(pointer(p )^ ).G:=colors.g;
- order_bgr(pointer(p )^ ).B:=colors.b;
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(p ) ,3 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_copy_color_vspan }
-procedure bgr24_copy_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
-var
- p : int8u_ptr;
-
-begin
- p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x );
-
- repeat
- order_bgr(pointer(p )^ ).R:=colors.r;
- order_bgr(pointer(p )^ ).G:=colors.g;
- order_bgr(pointer(p )^ ).B:=colors.b;
-
- p:=int8u_ptr(this.m_rbuf.next_row(p ) );
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ bgr24_blend_from_color }
-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 );
-var
- ppsz : unsigned;
-
- psrc ,pdst : int8u_ptr;
-
-begin
- ppsz:=from._pix_width;
- psrc:=from.row_ptr(ysrc );
-
- if psrc <> NIL then
- begin
- pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
-
- repeat
- copy_or_blend_pix_bgr(
- pdst ,color ,
- shr_int32(psrc^ * cover + base_mask ,base_shift ) );
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,3 );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ bgr24_blend_from_lut }
-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 );
-var
- ppsz : unsigned;
-
- psrc ,pdst : int8u_ptr;
-
- color : aggclr_ptr;
-
-begin
- ppsz:=from._pix_width;
- psrc:=from.row_ptr(ysrc );
-
- if psrc <> NIL then
- begin
- pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) );
-
- if cover = 255 then
- repeat
- color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
-
- blend_pix_bgr(pdst ,color.r ,color.g ,color.b ,color.a );
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,3 );
- dec(len );
-
- until len = 0
- else
- repeat
- copy_or_blend_pix_bgr(
- pdst ,aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ) ,cover);
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,3 );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
+// +// AggPas 2.4 RM3 pixel format definition file +// +{ blend_pix_bgr } +procedure blend_pix_bgr(p : int8u_ptr; cr ,cg ,cb ,alpha : int; cover : unsigned = 0 ); +begin + order_bgr(pointer(p )^ ).R:=order_bgr(pointer(p )^ ).R + ((cr - order_bgr(pointer(p )^ ).R ) * alpha ) shr base_shift; + order_bgr(pointer(p )^ ).G:=order_bgr(pointer(p )^ ).G + ((cg - order_bgr(pointer(p )^ ).G ) * alpha ) shr base_shift; + order_bgr(pointer(p )^ ).B:=order_bgr(pointer(p )^ ).B + ((cb - order_bgr(pointer(p )^ ).B ) * alpha ) shr base_shift; + +end; + +{ copy_or_blend_pix_bgr } +procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr; cover : unsigned ); overload; +var + alpha : unsigned; + +begin + if c.a <> 0 then + begin + alpha:=(c.a * (cover + 1 ) ) shr 8; + + if alpha = base_mask then + begin + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + end + else + blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover ); + + end; + +end; + +{ copy_or_blend_pix_bgr } +procedure copy_or_blend_pix_bgr(p : int8u_ptr; c : aggclr_ptr ); overload; +begin + if c.a <> 0 then + if c.a = base_mask then + begin + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + end + else + blend_pix_bgr(p ,c.r ,c.g ,c.b ,c.a ); + +end; + +{ bgr24_copy_pixel } +procedure bgr24_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + +end; + +{ bgr24_blend_pixel } +procedure bgr24_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u ); +begin + copy_or_blend_pix_bgr(int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ) ,c ,cover ); + +end; + +{ bgr24_pixel } +function bgr24_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr; +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + result.ConstrInt( + order_bgr(pointer(p )^ ).R , + order_bgr(pointer(p )^ ).G , + order_bgr(pointer(p )^ ).B ); + +end; + +{ bgr24_copy_hline } +procedure bgr24_copy_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0; + +end; + +{ bgr24_copy_vline } +procedure bgr24_copy_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + p:=this.m_rbuf.next_row(p ); + + dec(len ); + + until len = 0; + +end; + +{ bgr24_blend_hline } +procedure bgr24_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u ); +var + p : int8u_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + alpha:=(c.a * (cover + 1 ) ) shr 8; + + if alpha = base_mask then + repeat + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0 + else + repeat + blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ); + + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0; + + end; + +end; + +{ bgr24_blend_vline } +procedure bgr24_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u ); +var + p : int8u_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + alpha:=(c.a * (cover + 1 ) ) shr 8; + + if alpha = base_mask then + repeat + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + dec(len ); + + until len = 0 + else + repeat + blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,cover ); + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + dec(len ); + + until len = 0; + + end; + +end; + +{ bgr24_blend_solid_hspan } +procedure bgr24_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr ); +var + p : int8u_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + alpha:=(c.a * (covers^ + 1 ) ) shr 8; + + if alpha = base_mask then + begin + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + end + else + blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + + inc(ptrcomp(p ) ,3 ); + inc(ptrcomp(covers ) ); + dec(len ); + + until len = 0; + + end; + +end; + +{ bgr24_blend_solid_vspan } +procedure bgr24_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr ); +var + p : int8u_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + alpha:=(c.a * (covers^ + 1 ) ) shr 8; + + if alpha = base_mask then + begin + order_bgr(pointer(p )^ ).R:=c.r; + order_bgr(pointer(p )^ ).G:=c.g; + order_bgr(pointer(p )^ ).B:=c.b; + + end + else + blend_pix_bgr(p ,c.r ,c.g ,c.b ,alpha,covers^ ); + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + inc(ptrcomp(covers ) ); + dec(len ); + + until len = 0; + + end; + +end; + +{ bgr24_blend_color_hspan } +procedure bgr24_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + if covers <> NIL then + repeat + copy_or_blend_pix_bgr(p ,colors ,covers^ ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(covers ) ,sizeof(int8u ) ); + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0 + else + if cover = 255 then + repeat + copy_or_blend_pix_bgr(p ,colors ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0 + else + repeat + copy_or_blend_pix_bgr(p ,colors ,cover ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0; + +end; + +{ bgr24_blend_color_vspan } +procedure bgr24_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + if covers <> NIL then + repeat + copy_or_blend_pix_bgr(p ,colors ,covers^ ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(covers ) ,sizeof(int8u ) ); + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + dec(len ); + + until len = 0 + else + if cover = 255 then + repeat + copy_or_blend_pix_bgr(p ,colors ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + dec(len ); + + until len = 0 + else + repeat + copy_or_blend_pix_bgr(p ,colors ,cover ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + dec(len ); + + until len = 0; + +end; + +{ bgr24_blend_from } +procedure bgr24_blend_from(this : pixel_formats_ptr; from : pixel_formats_ptr; psrc_ : int8u_ptr; xdst ,ydst ,xsrc ,ysrc : int; len : unsigned; cover : int8u ); +var + psrc ,pdst : int8u_ptr; + + color : aggclr; + alpha : unsigned; + +begin + psrc:=psrc_; + pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + xdst * 3 * sizeof(int8u ) ); + + if cover = 255 then + repeat + alpha:=int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^; + + if alpha <> 0 then + if alpha = base_mask then + begin + order_bgr(pointer(pdst )^ ).R:=int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^; + order_bgr(pointer(pdst )^ ).G:=int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^; + order_bgr(pointer(pdst )^ ).B:=int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^; + + end + else + blend_pix_bgr( + pdst , + int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ , + alpha ); + + inc(ptrcomp(psrc ) ,4 ); + inc(ptrcomp(pdst ) ,3 ); + dec(len ); + + until len = 0 + else + repeat + color.ConstrInt( + int8u_ptr(ptrcomp(psrc ) + from.m_order.R )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.G )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.B )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ); + + copy_or_blend_pix_bgr(pdst ,@color ,cover ); + + inc(ptrcomp(psrc ) ,4 ); + inc(ptrcomp(pdst ) ,3 ); + dec(len ); + + until len = 0; + +end; + +{ bgr24_copy_color_hspan } +procedure bgr24_copy_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + order_bgr(pointer(p )^ ).R:=colors.r; + order_bgr(pointer(p )^ ).G:=colors.g; + order_bgr(pointer(p )^ ).B:=colors.b; + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(p ) ,3 ); + dec(len ); + + until len = 0; + +end; + +{ bgr24_copy_color_vspan } +procedure bgr24_copy_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr ); +var + p : int8u_ptr; + +begin + p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + x + x + x ); + + repeat + order_bgr(pointer(p )^ ).R:=colors.r; + order_bgr(pointer(p )^ ).G:=colors.g; + order_bgr(pointer(p )^ ).B:=colors.b; + + p:=int8u_ptr(this.m_rbuf.next_row(p ) ); + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + dec(len ); + + until len = 0; + +end; + +{ bgr24_blend_from_color } +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 ); +var + ppsz : unsigned; + + psrc ,pdst : int8u_ptr; + +begin + ppsz:=from._pix_width; + psrc:=from.row_ptr(ysrc ); + + if psrc <> NIL then + begin + pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) ); + + repeat + copy_or_blend_pix_bgr( + pdst ,color , + shr_int32(psrc^ * cover + base_mask ,base_shift ) ); + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,3 ); + dec(len ); + + until len = 0; + + end; + +end; + +{ bgr24_blend_from_lut } +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 ); +var + ppsz : unsigned; + + psrc ,pdst : int8u_ptr; + + color : aggclr_ptr; + +begin + ppsz:=from._pix_width; + psrc:=from.row_ptr(ysrc ); + + if psrc <> NIL then + begin + pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + xdst * 3 * sizeof(int8u ) ); + + if cover = 255 then + repeat + color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ); + + blend_pix_bgr(pdst ,color.r ,color.g ,color.b ,color.a ); + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,3 ); + dec(len ); + + until len = 0 + else + repeat + copy_or_blend_pix_bgr( + pdst ,aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ) ,cover); + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,3 ); + dec(len ); + + until len = 0; + + end; + +end; + |