Repository URL to install this package:
|
Version:
1.6 ▾
|
//
// AggPas 2.4 RM3 pixel format definition file
//
{ cubl_copy_pixel }
procedure cubl_copy_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr );
begin
this.blender(
this ,this.m_comp_op ,
int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) ) ,
c.r ,c.g ,c.b ,c.a ,255 );
end;
{ cubl_blend_pixel }
procedure cubl_blend_pixel(this : pixel_formats_ptr; x ,y : int; c : aggclr_ptr; cover : int8u );
begin
this.blender(
this ,this.m_comp_op ,
int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) ) ,
c.r ,c.g ,c.b ,c.a ,cover );
end;
{ cubl_pixel }
function cubl_pixel(this : pixel_formats_ptr; x ,y : int ) : aggclr;
var
p : int8u_ptr;
begin
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) );
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;
{ cubl_copy_hline }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,255 );
inc(ptrcomp(p ) ,4 );
dec(len );
until len = 0;
end;
{ cubl_copy_vline }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,255 );
p:=this.m_rbuf.next_row(p );
dec(len );
until len = 0;
end;
{ cubl_blend_hline }
procedure cubl_blend_hline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
var
p : int8u_ptr;
begin
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,cover );
inc(ptrcomp(p ) ,4 );
dec(len );
until len = 0;
end;
{ cubl_blend_vline }
procedure cubl_blend_vline(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; cover : int8u );
var
p : int8u_ptr;
begin
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,cover );
p:=this.m_rbuf.next_row(p );
dec(len );
until len = 0;
end;
{ cubl_blend_solid_hspan }
procedure cubl_blend_solid_hspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
var
p : int8u_ptr;
begin
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,covers^ );
inc(ptrcomp(covers ) ,sizeof(int8u ) );
inc(ptrcomp(p ) ,4 );
dec(len );
until len = 0;
end;
{ cubl_blend_solid_vspan }
procedure cubl_blend_solid_vspan(this : pixel_formats_ptr; x ,y : int; len : unsigned; c : aggclr_ptr; covers : int8u_ptr );
var
p : int8u_ptr;
begin
p:=int8u_ptr(ptrcomp(this.m_rbuf.row(y ) ) + (x shl 2 ) * sizeof(int8u ) );
repeat
this.blender(this ,this.m_comp_op ,p ,c.r ,c.g ,c.b ,c.a ,covers^ );
inc(ptrcomp(covers ) ,sizeof(int8u ) );
p:=this.m_rbuf.next_row(p );
dec(len );
until len = 0;
end;
{ cubl_blend_color_hspan }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
repeat
if covers <> NIL then
begin
this.blender(this ,this.m_comp_op ,p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
inc(ptrcomp(covers ) ,sizeof(int8u ) );
end
else
this.blender(this ,this.m_comp_op ,p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
inc(ptrcomp(p ) ,4 );
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
dec(len );
until len = 0;
end;
{ cubl_blend_color_vspan }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
repeat
if covers <> NIL then
begin
this.blender(this ,this.m_comp_op ,p ,colors.r ,colors.g ,colors.b ,colors.a ,covers^ );
inc(ptrcomp(covers ) ,sizeof(int8u ) );
end
else
this.blender(this ,this.m_comp_op ,p ,colors.r ,colors.g ,colors.b ,colors.a ,cover );
p:=this.m_rbuf.next_row(p );
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
dec(len );
until len = 0;
end;
{ cubl_blend_from }
procedure cubl_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;
incp : int;
begin
psrc:=psrc_;
pdst:=int8u_ptr(ptrcomp(this.m_rbuf.row(ydst ) ) + (xdst shl 2 ) * sizeof(int8u ) );
incp:=4;
if xdst > xsrc then
begin
inc(ptrcomp(psrc ) ,(len - 1 ) shl 2 );
inc(ptrcomp(pdst ) ,(len - 1 ) shl 2 );
incp:=-4;
end;
repeat
this.blender(
this ,this.m_comp_op ,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 );
inc(ptrcomp(psrc ) ,incp );
inc(ptrcomp(pdst ) ,incp );
dec(len );
until len = 0;
end;
{ cubl_copy_color_hspan }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
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;
{ cubl_copy_color_vspan }
procedure cubl_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 shl 2 ) * sizeof(int8u ) );
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;
p:=this.m_rbuf.next_row(p );
inc(ptrcomp(colors ) ,sizeof(aggclr ) );
dec(len );
until len = 0;
end;
{ cubl_blend_from_color }
procedure cubl_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 shl 2 ) );
repeat
this.blender(
this ,this.m_comp_op ,pdst ,
color.r ,color.g ,color.b ,color.a ,
shr_int32(psrc^ * cover + base_mask ,base_shift ) );
inc(ptrcomp(psrc ) ,ppsz );
inc(ptrcomp(pdst ) ,4 );
dec(len );
until len = 0;
end;
end;
{ cubl_blend_from_lut }
procedure cubl_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 shl 2 ) );
repeat
color:=aggclr_ptr(ptrcomp(color_lut ) + psrc^ * sizeof(aggclr ) );
this.blender(
this ,this.m_comp_op ,pdst ,
color.r ,color.g ,color.b ,color.a ,
shr_int32(psrc^ * cover + base_mask ,base_shift ) );
inc(ptrcomp(psrc ) ,ppsz );
inc(ptrcomp(pdst ) ,4 );
dec(len );
until len = 0;
end;
end;