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_alpha32.inc | |
parent | f8597f3dc0e65fc6ac2f1cf1666ed94fc7f0baba (diff) | |
download | fpGUI-5fdae25f717a7f0b55d2b1849b4812a06597c59e.tar.xz |
aggpas: fixes EOL style and file permissions.
Diffstat (limited to 'src/corelib/render/software/pf_alpha32.inc')
-rw-r--r-- | src/corelib/render/software/pf_alpha32.inc | 1562 |
1 files changed, 781 insertions, 781 deletions
diff --git a/src/corelib/render/software/pf_alpha32.inc b/src/corelib/render/software/pf_alpha32.inc index 8d10336b..8e8df42a 100644 --- a/src/corelib/render/software/pf_alpha32.inc +++ b/src/corelib/render/software/pf_alpha32.inc @@ -1,781 +1,781 @@ -//
-// AggPas 2.4 RM3 pixel format definition file
-//
-{ alpha32_copy_hline }
-procedure alpha32_copy_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
-var
- p : unsigned_ptr;
- v : unsigned;
-
-begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) );
-
- int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a;
-
- if len > 0 then
- repeat
- p^:=v;
-
- inc(ptrcomp(p ) ,4 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_blend_solid_hspan }
-procedure alpha32_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
-var
- p : unsigned_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) );
-
- repeat
- alpha:=(c.a * (covers^ + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=base_mask;
-
- end
- else
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
-
- end;
-
- inc(ptrcomp(p ) ,4 );
- inc(ptrcomp(covers ) );
-
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ alpha32_blend_color_hspan }
-procedure alpha32_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
-var
- p : unsigned_ptr;
-
-begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) );
-
- if covers <> NIL then
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
- 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
- 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
- 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
-
- end;
-
- inc(ptrcomp(covers ) ,sizeof(int8u ) );
- inc(ptrcomp(p ) ,4 );
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- dec(len );
-
- until len = 0
- else
- if cover = 255 then
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a );
- 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a );
- 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a );
- 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a );
-
- end;
-
- inc(ptrcomp(p ) ,4 );
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- dec(len );
-
- until len = 0
- else
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
- 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
- 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
- 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
-
- end;
-
- inc(ptrcomp(p ) ,4 );
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_blend_from }
-procedure alpha32_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 : unsigned_ptr;
-
- incp : int;
-
-begin
- psrc:=unsigned_ptr(psrc_ );
- pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) * sizeof(int8u ) );
- incp:=4;
-
- if ptrcomp(xdst ) > ptrcomp(xsrc ) then
- begin
- inc(ptrcomp(psrc ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) );
- inc(ptrcomp(pdst ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) );
-
- incp:=-4;
-
- end;
-
- if cover = 255 then
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
-
- 1 : copy_or_blend_pix_argb(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
-
- 2 : copy_or_blend_pix_bgra(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
-
- 3 : copy_or_blend_pix_abgr(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ );
-
- end;
-
- inc(ptrcomp(psrc ) ,incp );
- inc(ptrcomp(pdst ) ,incp );
- dec(len );
-
- until len = 0
- else
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ,
- cover );
-
- 1 : copy_or_blend_pix_argb(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ,
- cover );
-
- 2 : copy_or_blend_pix_bgra(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ,
- cover );
-
- 3 : copy_or_blend_pix_abgr(
- 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 )^ ,
- int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ,
- cover );
-
- end;
-
- inc(ptrcomp(psrc ) ,incp );
- inc(ptrcomp(pdst ) ,incp );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_pixel }
-function alpha32_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr;
-var
- p : unsigned_ptr;
-
-begin
- p:=unsigned_ptr(this.m_rbuf.row(y ) );
-
- if p <> NIL then
- begin
- inc(ptrcomp(p ) ,x shl 2 );
-
- result.ConstrInt(
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^ ,
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^ ,
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^ ,
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^ );
-
- end
- else
- result.Construct;
-
-end;
-
-{ alpha32_copy_pixel }
-procedure alpha32_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr );
-var
- p : unsigned_ptr;
-
-begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=c.a;
-
-end;
-
-{ alpha32_blend_pixel }
-procedure alpha32_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
-begin
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) ,
- c.r ,c.g ,c.b ,c.a ,cover );
-
- 1 : copy_or_blend_pix_argb(
- unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) ,
- c.r ,c.g ,c.b ,c.a ,cover );
-
- 2 : copy_or_blend_pix_bgra(
- unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) ,
- c.r ,c.g ,c.b ,c.a ,cover );
-
- 3 : copy_or_blend_pix_abgr(
- unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) ,
- c.r ,c.g ,c.b ,c.a ,cover );
-
- end;
-
-end;
-
-{ alpha32_copy_vline }
-procedure alpha32_copy_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr );
-var
- p : unsigned_ptr;
- v : unsigned;
-
-begin
- int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a;
-
- if len > 0 then
- repeat
- p :=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
- p^:=v;
-
- inc(y );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_blend_hline }
-procedure alpha32_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
-var
- p : unsigned_ptr;
- v : unsigned;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) );
-
- alpha:=(c.a * (cover + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a;
-
- repeat
- p^:=v;
-
- inc(ptrcomp(p ) ,sizeof(unsigned ) );
- dec(len );
-
- until len = 0;
-
- end
- else
- if cover = 255 then
- repeat
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha );
-
- end;
-
- inc(ptrcomp(p ) ,sizeof(unsigned ) );
- dec(len );
-
- until len = 0
- else
- repeat
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
-
- end;
-
- inc(ptrcomp(p ) ,sizeof(unsigned ) );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ alpha32_blend_vline }
-procedure alpha32_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
-var
- p : unsigned_ptr;
- v : unsigned;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- alpha:=(c.a * (cover + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a;
-
- repeat
- p :=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
- p^:=v;
-
- inc(y );
- dec(len );
-
- until len = 0;
-
- end
- else
- if cover = 255 then
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha );
-
- end;
-
- inc(y );
- dec(len );
-
- until len = 0
- else
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,cover );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,cover );
-
- end;
-
- inc(y );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ alpha32_blend_solid_vspan }
-procedure alpha32_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
-var
- p : unsigned_ptr;
-
- alpha : unsigned;
-
-begin
- if c.a <> 0 then
- begin
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- alpha:=(c.a * (covers^ + 1 ) ) shr 8;
-
- if alpha = base_mask then
- begin
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r;
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g;
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b;
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=base_mask;
-
- end
- else
- case this.m_order.R of
- 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
- 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ );
-
- end;
-
- inc(ptrcomp(covers ) ,sizeof(int8u ) );
- inc(y );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ alpha32_blend_color_vspan }
-procedure alpha32_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u );
-var
- p : unsigned_ptr;
-
-begin
- if covers <> NIL then
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- covers^ );
-
- 1 : copy_or_blend_pix_argb(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- covers^ );
-
- 2 : copy_or_blend_pix_bgra(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- covers^ );
-
- 3 : copy_or_blend_pix_abgr(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- covers^ );
-
- end;
-
- inc(ptrcomp(covers ) ,sizeof(int8u ) );
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(y );
- dec(len );
-
- until len = 0
- else
- if cover = 255 then
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a );
-
- 1 : copy_or_blend_pix_argb(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a );
-
- 2 : copy_or_blend_pix_bgra(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a );
-
- 3 : copy_or_blend_pix_abgr(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a );
-
- end;
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(y );
- dec(len );
-
- until len = 0
- else
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- cover );
-
- 1 : copy_or_blend_pix_argb(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- cover );
-
- 2 : copy_or_blend_pix_bgra(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- cover );
-
- 3 : copy_or_blend_pix_abgr(
- p ,
- colors.r ,
- colors.g ,
- colors.b ,
- colors.a ,
- cover );
-
- end;
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(y );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_copy_color_hspan }
-procedure alpha32_copy_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
-var
- p : unsigned_ptr;
-
-begin
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) );
-
- repeat
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=colors.r;
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=colors.g;
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=colors.b;
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=colors.a;
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(ptrcomp(p ) ,4 );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_copy_color_vspan }
-procedure alpha32_copy_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr );
-var
- p : unsigned_ptr;
-
-begin
- repeat
- p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) );
-
- int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=colors.r;
- int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=colors.g;
- int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=colors.b;
- int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=colors.a;
-
- inc(ptrcomp(colors ) ,sizeof(aggclr ) );
- inc(y );
- dec(len );
-
- until len = 0;
-
-end;
-
-{ alpha32_blend_from_color }
-procedure alpha32_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 : int8u_ptr;
- pdst : unsigned_ptr;
-
-begin
- ppsz:=from._pix_width;
- psrc:=from.row_ptr(ysrc );
-
- if psrc <> NIL then
- begin
- pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) );
-
- repeat
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(
- pdst ,color.r, color.g, color.b, color.a,
- shr_int32(psrc^ * cover + base_mask ,base_shift ) );
-
- 1 : copy_or_blend_pix_argb(
- pdst ,color.r, color.g, color.b, color.a,
- shr_int32(psrc^ * cover + base_mask ,base_shift ) );
-
- 2 : copy_or_blend_pix_bgra(
- pdst ,color.r, color.g, color.b, color.a,
- shr_int32(psrc^ * cover + base_mask ,base_shift ) );
-
- 3 : copy_or_blend_pix_abgr(
- pdst ,color.r, color.g, color.b, color.a,
- shr_int32(psrc^ * cover + base_mask ,base_shift ) );
-
- end;
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,4 );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
-{ alpha32_blend_from_lut }
-procedure alpha32_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 : int8u_ptr;
- pdst : unsigned_ptr;
-
- color : aggclr_ptr;
-
-begin
- ppsz:=from._pix_width;
- psrc:=from.row_ptr(ysrc );
-
- if psrc <> NIL then
- begin
- pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) );
-
- if cover = 255 then
- repeat
- color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
-
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(pdst ,color.r, color.g, color.b, color.a );
- 1 : copy_or_blend_pix_argb(pdst ,color.r, color.g, color.b, color.a );
- 2 : copy_or_blend_pix_bgra(pdst ,color.r, color.g, color.b, color.a );
- 3 : copy_or_blend_pix_abgr(pdst ,color.r, color.g, color.b, color.a );
-
- end;
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,4 );
- dec(len );
-
- until len = 0
- else
- repeat
- color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
-
- case this.m_order.R of
- 0 : copy_or_blend_pix_rgba(pdst ,color.r, color.g, color.b, color.a ,cover );
- 1 : copy_or_blend_pix_argb(pdst ,color.r, color.g, color.b, color.a ,cover );
- 2 : copy_or_blend_pix_bgra(pdst ,color.r, color.g, color.b, color.a ,cover );
- 3 : copy_or_blend_pix_abgr(pdst ,color.r, color.g, color.b, color.a ,cover );
-
- end;
-
- inc(ptrcomp(psrc ) ,ppsz );
- inc(ptrcomp(pdst ) ,4 );
- dec(len );
-
- until len = 0;
-
- end;
-
-end;
-
+// +// AggPas 2.4 RM3 pixel format definition file +// +{ alpha32_copy_hline } +procedure alpha32_copy_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr ); +var + p : unsigned_ptr; + v : unsigned; + +begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) ); + + int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a; + + if len > 0 then + repeat + p^:=v; + + inc(ptrcomp(p ) ,4 ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_blend_solid_hspan } +procedure alpha32_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr ); +var + p : unsigned_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) ); + + repeat + alpha:=(c.a * (covers^ + 1 ) ) shr 8; + + if alpha = base_mask then + begin + int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=base_mask; + + end + else + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + + end; + + inc(ptrcomp(p ) ,4 ); + inc(ptrcomp(covers ) ); + + dec(len ); + + until len = 0; + + end; + +end; + +{ alpha32_blend_color_hspan } +procedure alpha32_blend_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u ); +var + p : unsigned_ptr; + +begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) ); + + if covers <> NIL then + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ ); + 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ ); + 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ ); + 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ ); + + end; + + inc(ptrcomp(covers ) ,sizeof(int8u ) ); + inc(ptrcomp(p ) ,4 ); + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + dec(len ); + + until len = 0 + else + if cover = 255 then + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a ); + 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a ); + 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a ); + 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a ); + + end; + + inc(ptrcomp(p ) ,4 ); + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + dec(len ); + + until len = 0 + else + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover ); + 1 : copy_or_blend_pix_argb(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover ); + 2 : copy_or_blend_pix_bgra(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover ); + 3 : copy_or_blend_pix_abgr(p ,colors.r ,colors.g ,colors.b ,colors.a ,cover ); + + end; + + inc(ptrcomp(p ) ,4 ); + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_blend_from } +procedure alpha32_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 : unsigned_ptr; + + incp : int; + +begin + psrc:=unsigned_ptr(psrc_ ); + pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) * sizeof(int8u ) ); + incp:=4; + + if ptrcomp(xdst ) > ptrcomp(xsrc ) then + begin + inc(ptrcomp(psrc ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) ); + inc(ptrcomp(pdst ) ,((len - 1 ) shl 2 ) * sizeof(int8u ) ); + + incp:=-4; + + end; + + if cover = 255 then + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ); + + 1 : copy_or_blend_pix_argb( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ); + + 2 : copy_or_blend_pix_bgra( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ); + + 3 : copy_or_blend_pix_abgr( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ ); + + end; + + inc(ptrcomp(psrc ) ,incp ); + inc(ptrcomp(pdst ) ,incp ); + dec(len ); + + until len = 0 + else + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ , + cover ); + + 1 : copy_or_blend_pix_argb( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ , + cover ); + + 2 : copy_or_blend_pix_bgra( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ , + cover ); + + 3 : copy_or_blend_pix_abgr( + 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 )^ , + int8u_ptr(ptrcomp(psrc ) + from.m_order.A )^ , + cover ); + + end; + + inc(ptrcomp(psrc ) ,incp ); + inc(ptrcomp(pdst ) ,incp ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_pixel } +function alpha32_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr; +var + p : unsigned_ptr; + +begin + p:=unsigned_ptr(this.m_rbuf.row(y ) ); + + if p <> NIL then + begin + inc(ptrcomp(p ) ,x shl 2 ); + + result.ConstrInt( + int8u_ptr(ptrcomp(p ) + this.m_order.R )^ , + int8u_ptr(ptrcomp(p ) + this.m_order.G )^ , + int8u_ptr(ptrcomp(p ) + this.m_order.B )^ , + int8u_ptr(ptrcomp(p ) + this.m_order.A )^ ); + + end + else + result.Construct; + +end; + +{ alpha32_copy_pixel } +procedure alpha32_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr ); +var + p : unsigned_ptr; + +begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=c.a; + +end; + +{ alpha32_blend_pixel } +procedure alpha32_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u ); +begin + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) , + c.r ,c.g ,c.b ,c.a ,cover ); + + 1 : copy_or_blend_pix_argb( + unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) , + c.r ,c.g ,c.b ,c.a ,cover ); + + 2 : copy_or_blend_pix_bgra( + unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) , + c.r ,c.g ,c.b ,c.a ,cover ); + + 3 : copy_or_blend_pix_abgr( + unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ) , + c.r ,c.g ,c.b ,c.a ,cover ); + + end; + +end; + +{ alpha32_copy_vline } +procedure alpha32_copy_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr ); +var + p : unsigned_ptr; + v : unsigned; + +begin + int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a; + + if len > 0 then + repeat + p :=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + p^:=v; + + inc(y ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_blend_hline } +procedure alpha32_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u ); +var + p : unsigned_ptr; + v : unsigned; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) ); + + alpha:=(c.a * (cover + 1 ) ) shr 8; + + if alpha = base_mask then + begin + int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a; + + repeat + p^:=v; + + inc(ptrcomp(p ) ,sizeof(unsigned ) ); + dec(len ); + + until len = 0; + + end + else + if cover = 255 then + repeat + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ); + + end; + + inc(ptrcomp(p ) ,sizeof(unsigned ) ); + dec(len ); + + until len = 0 + else + repeat + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,cover ); + + end; + + inc(ptrcomp(p ) ,sizeof(unsigned ) ); + dec(len ); + + until len = 0; + + end; + +end; + +{ alpha32_blend_vline } +procedure alpha32_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u ); +var + p : unsigned_ptr; + v : unsigned; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + alpha:=(c.a * (cover + 1 ) ) shr 8; + + if alpha = base_mask then + begin + int8u_ptr(ptrcomp(@v ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(@v ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(@v ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(@v ) + this.m_order.A )^:=c.a; + + repeat + p :=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + p^:=v; + + inc(y ); + dec(len ); + + until len = 0; + + end + else + if cover = 255 then + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ); + + end; + + inc(y ); + dec(len ); + + until len = 0 + else + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,cover ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,cover ); + + end; + + inc(y ); + dec(len ); + + until len = 0; + + end; + +end; + +{ alpha32_blend_solid_vspan } +procedure alpha32_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr ); +var + p : unsigned_ptr; + + alpha : unsigned; + +begin + if c.a <> 0 then + begin + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + alpha:=(c.a * (covers^ + 1 ) ) shr 8; + + if alpha = base_mask then + begin + int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=c.r; + int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=c.g; + int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=c.b; + int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=base_mask; + + end + else + case this.m_order.R of + 0 : blend_pix_rgba(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 1 : blend_pix_argb(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 2 : blend_pix_bgra(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + 3 : blend_pix_abgr(p ,c.r ,c.g ,c.b ,alpha ,covers^ ); + + end; + + inc(ptrcomp(covers ) ,sizeof(int8u ) ); + inc(y ); + dec(len ); + + until len = 0; + + end; + +end; + +{ alpha32_blend_color_vspan } +procedure alpha32_blend_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr; covers : int8u_ptr; cover : int8u ); +var + p : unsigned_ptr; + +begin + if covers <> NIL then + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + p , + colors.r , + colors.g , + colors.b , + colors.a , + covers^ ); + + 1 : copy_or_blend_pix_argb( + p , + colors.r , + colors.g , + colors.b , + colors.a , + covers^ ); + + 2 : copy_or_blend_pix_bgra( + p , + colors.r , + colors.g , + colors.b , + colors.a , + covers^ ); + + 3 : copy_or_blend_pix_abgr( + p , + colors.r , + colors.g , + colors.b , + colors.a , + covers^ ); + + end; + + inc(ptrcomp(covers ) ,sizeof(int8u ) ); + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(y ); + dec(len ); + + until len = 0 + else + if cover = 255 then + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + p , + colors.r , + colors.g , + colors.b , + colors.a ); + + 1 : copy_or_blend_pix_argb( + p , + colors.r , + colors.g , + colors.b , + colors.a ); + + 2 : copy_or_blend_pix_bgra( + p , + colors.r , + colors.g , + colors.b , + colors.a ); + + 3 : copy_or_blend_pix_abgr( + p , + colors.r , + colors.g , + colors.b , + colors.a ); + + end; + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(y ); + dec(len ); + + until len = 0 + else + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + p , + colors.r , + colors.g , + colors.b , + colors.a , + cover ); + + 1 : copy_or_blend_pix_argb( + p , + colors.r , + colors.g , + colors.b , + colors.a , + cover ); + + 2 : copy_or_blend_pix_bgra( + p , + colors.r , + colors.g , + colors.b , + colors.a , + cover ); + + 3 : copy_or_blend_pix_abgr( + p , + colors.r , + colors.g , + colors.b , + colors.a , + cover ); + + end; + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(y ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_copy_color_hspan } +procedure alpha32_copy_color_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr ); +var + p : unsigned_ptr; + +begin + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,len ) ) + (x shl 2 ) ); + + repeat + int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=colors.r; + int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=colors.g; + int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=colors.b; + int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=colors.a; + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(ptrcomp(p ) ,4 ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_copy_color_vspan } +procedure alpha32_copy_color_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; colors : aggclr_ptr ); +var + p : unsigned_ptr; + +begin + repeat + p:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(x ,y ,1 ) ) + (x shl 2 ) ); + + int8u_ptr(ptrcomp(p ) + this.m_order.R )^:=colors.r; + int8u_ptr(ptrcomp(p ) + this.m_order.G )^:=colors.g; + int8u_ptr(ptrcomp(p ) + this.m_order.B )^:=colors.b; + int8u_ptr(ptrcomp(p ) + this.m_order.A )^:=colors.a; + + inc(ptrcomp(colors ) ,sizeof(aggclr ) ); + inc(y ); + dec(len ); + + until len = 0; + +end; + +{ alpha32_blend_from_color } +procedure alpha32_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 : int8u_ptr; + pdst : unsigned_ptr; + +begin + ppsz:=from._pix_width; + psrc:=from.row_ptr(ysrc ); + + if psrc <> NIL then + begin + pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) ); + + repeat + case this.m_order.R of + 0 : copy_or_blend_pix_rgba( + pdst ,color.r, color.g, color.b, color.a, + shr_int32(psrc^ * cover + base_mask ,base_shift ) ); + + 1 : copy_or_blend_pix_argb( + pdst ,color.r, color.g, color.b, color.a, + shr_int32(psrc^ * cover + base_mask ,base_shift ) ); + + 2 : copy_or_blend_pix_bgra( + pdst ,color.r, color.g, color.b, color.a, + shr_int32(psrc^ * cover + base_mask ,base_shift ) ); + + 3 : copy_or_blend_pix_abgr( + pdst ,color.r, color.g, color.b, color.a, + shr_int32(psrc^ * cover + base_mask ,base_shift ) ); + + end; + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,4 ); + dec(len ); + + until len = 0; + + end; + +end; + +{ alpha32_blend_from_lut } +procedure alpha32_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 : int8u_ptr; + pdst : unsigned_ptr; + + color : aggclr_ptr; + +begin + ppsz:=from._pix_width; + psrc:=from.row_ptr(ysrc ); + + if psrc <> NIL then + begin + pdst:=unsigned_ptr(ptrcomp(this.m_rbuf.row_xy(xdst ,ydst ,len ) ) + (xdst shl 2 ) ); + + if cover = 255 then + repeat + color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ); + + case this.m_order.R of + 0 : copy_or_blend_pix_rgba(pdst ,color.r, color.g, color.b, color.a ); + 1 : copy_or_blend_pix_argb(pdst ,color.r, color.g, color.b, color.a ); + 2 : copy_or_blend_pix_bgra(pdst ,color.r, color.g, color.b, color.a ); + 3 : copy_or_blend_pix_abgr(pdst ,color.r, color.g, color.b, color.a ); + + end; + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,4 ); + dec(len ); + + until len = 0 + else + repeat + color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) ); + + case this.m_order.R of + 0 : copy_or_blend_pix_rgba(pdst ,color.r, color.g, color.b, color.a ,cover ); + 1 : copy_or_blend_pix_argb(pdst ,color.r, color.g, color.b, color.a ,cover ); + 2 : copy_or_blend_pix_bgra(pdst ,color.r, color.g, color.b, color.a ,cover ); + 3 : copy_or_blend_pix_abgr(pdst ,color.r, color.g, color.b, color.a ,cover ); + + end; + + inc(ptrcomp(psrc ) ,ppsz ); + inc(ptrcomp(pdst ) ,4 ); + dec(len ); + + until len = 0; + + end; + +end; + |