1
//----------------------------------------------------------------------------
2
// Anti-Grain Geometry - Version 2.4 (Public License)
3
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5
// Anti-Grain Geometry - Version 2.4 Release Milano 3 (AggPas 2.4 RM3)
6
// Pascal Port By: Milan Marusinec alias Milano
8
// http://www.aggpas.org
9
// Copyright (c) 2005-2006
11
// Permission to copy, use, modify, sell and distribute this software
12
// is granted provided this copyright notice appears in all copies.
13
// This software is provided "as is" without express or implied
14
// warranty, and with no claim as to its suitability for any purpose.
16
//----------------------------------------------------------------------------
17
// Contact: mcseem@antigrain.com
18
// mcseemagg@yahoo.com
19
// http://www.antigrain.com
21
//----------------------------------------------------------------------------
23
// Adaptation for high precision colors has been sponsored by
24
// Liberty Technology Systems, Inc., visit http://lib-sys.com
26
// Liberty Technology Systems, Inc. is the provider of
27
// PostScript and PDF technology for software developers.
29
// [Pascal Port History] -----------------------------------------------------
31
// 23.06.2006-Milano: ptrcomp adjustments
32
// 06.03.2006-Milano: Unit port establishment
34
{ agg_span_pattern_rgb.pas {untested}
36
agg_span_pattern_rgb ;
50
agg_rendering_buffer ;
54
base_shift = agg_color.base_shift;
55
base_mask = agg_color.base_mask;
58
span_pattern_rgb_ptr = ^span_pattern_rgb;
59
span_pattern_rgb = object(span_pattern_base )
61
m_wrap_mode_y : wrap_mode_ptr;
65
constructor Construct(alloc : span_allocator_ptr; WX ,WY : wrap_mode_ptr; order : order_type ); overload;
66
constructor Construct(
67
alloc : span_allocator_ptr;
68
src : rendering_buffer_ptr;
69
offset_x ,offset_y : unsigned;
70
WX ,WY : wrap_mode_ptr;
72
alpha : int8u = base_mask ); overload;
74
procedure source_image_(src : rendering_buffer_ptr );
76
function generate(x ,y : int; len : unsigned ) : aggclr_ptr; virtual;
84
{ LOCAL VARIABLES & CONSTANTS }
85
{ UNIT IMPLEMENTATION }
87
constructor span_pattern_rgb.Construct(alloc : span_allocator_ptr; WX ,WY : wrap_mode_ptr; order : order_type );
89
inherited Construct(alloc );
96
m_wrap_mode_x.init(1 );
97
m_wrap_mode_y.init(1 );
102
constructor span_pattern_rgb.Construct(
103
alloc : span_allocator_ptr;
104
src : rendering_buffer_ptr;
105
offset_x ,offset_y : unsigned;
106
WX ,WY : wrap_mode_ptr;
108
alpha : int8u = base_mask );
110
inherited Construct(alloc ,src ,offset_x ,offset_y ,alpha );
117
m_wrap_mode_x.init(src._width );
118
m_wrap_mode_y.init(src._height );
123
procedure span_pattern_rgb.source_image_;
125
inherited source_image_(src );
127
m_wrap_mode_x.init(src._width );
128
m_wrap_mode_y.init(src._height );
133
function span_pattern_rgb.generate;
139
row_ptr ,p : int8u_ptr;
142
span:=_allocator.span;
143
sx :=m_wrap_mode_x.func_operator(_offset_x + x );
145
row_ptr:=_source_image.row(m_wrap_mode_y.func_operator(_offset_y + y ) );
148
p:=int8u_ptr(ptrcomp(row_ptr ) + (sx + sx + sx ) * sizeof(int8u ) );
150
span.r:=int8u_ptr(ptrcomp(p ) + m_order.R * sizeof(int8u ) )^;
151
span.g:=int8u_ptr(ptrcomp(p ) + m_order.G * sizeof(int8u ) )^;
152
span.b:=int8u_ptr(ptrcomp(p ) + m_order.B * sizeof(int8u ) )^;
155
sx:=m_wrap_mode_x.inc_operator;
157
inc(ptrcomp(span ) ,sizeof(aggclr ) );
162
result:=_allocator.span;