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
// [Pascal Port History] -----------------------------------------------------
23
// 23.06.2006-Milano: ptrcomp adjustments
24
// 13.02.2006-Milano: Unit port establishment
26
{ agg_renderer_raster_text.pas }
28
agg_renderer_raster_text ;
38
agg_renderer_scanline ,
40
agg_glyph_raster_bin ;
44
renderer_raster_htext_solid = object
45
m_ren : renderer_base_ptr;
46
m_glyph : glyph_raster_bin_ptr;
49
constructor Construct(ren : renderer_base_ptr; glyph : glyph_raster_bin_ptr );
51
procedure color_(c : aggclr_ptr );
52
function _color : aggclr_ptr;
54
procedure render_text(x ,y : double; str : PChar; flip : boolean = false );
58
renderer_raster_vtext_solid = object
59
m_ren : renderer_base_ptr;
60
m_glyph : glyph_raster_bin_ptr;
63
constructor Construct(ren : renderer_base_ptr; glyph : glyph_raster_bin_ptr );
65
procedure color_(c : aggclr_ptr );
66
function _color : aggclr_ptr;
68
procedure render_text(x ,y : double; str : PChar; flip : boolean = false );
72
const_span_ptr = ^const_span;
78
constructor Construct(x_ : int; len_ : unsigned; covers_ : int8u_ptr );
82
scanline_single_span = object(scanline )
86
constructor Construct(x_ ,y_ : int; len_ : unsigned; covers_ : int8u_ptr );
88
function y : int; virtual;
89
function num_spans : unsigned; virtual;
90
function begin_ : pointer; virtual;
92
function sz_of_span : unsigned; virtual;
96
renderer_raster_htext = object
97
m_ren : renderer_scanline_ptr;
98
m_glyph : glyph_raster_bin_ptr;
100
constructor Construct(ren : renderer_scanline_ptr; glyph : glyph_raster_bin_ptr );
102
procedure render_text(x ,y : double; str : PChar; flip : boolean = false );
106
{ GLOBAL PROCEDURES }
110
{ LOCAL VARIABLES & CONSTANTS }
111
{ UNIT IMPLEMENTATION }
113
constructor renderer_raster_htext_solid.Construct;
123
procedure renderer_raster_htext_solid.color_;
130
function renderer_raster_htext_solid._color;
137
procedure renderer_raster_htext_solid.render_text;
143
while int8u_ptr(str )^ <> 0 do
145
m_glyph.prepare(@r ,x ,y ,int8u_ptr(str )^ ,flip );
154
m_ren.blend_solid_hspan(
155
r.x1 ,i ,r.x2 - r.x1 + 1 ,
157
m_glyph.span(r.y2 - i ) );
170
m_ren.blend_solid_hspan(
171
r.x1 ,i ,r.x2 - r.x1 + 1 ,
173
m_glyph.span(i - r.y1 ) );
191
constructor renderer_raster_vtext_solid.Construct;
201
procedure renderer_raster_vtext_solid.color_;
208
function renderer_raster_vtext_solid._color;
215
procedure renderer_raster_vtext_solid.render_text;
221
while int8u_ptr(str )^ <> 0 do
223
m_glyph.prepare(@r ,x ,y ,int8u_ptr(str )^ ,flip );
232
m_ren.blend_solid_vspan(
233
i ,r.x1 ,r.x2 - r.x1 + 1 ,
235
m_glyph.span(i - r.y1 ) );
248
m_ren.blend_solid_vspan(
249
i ,r.x1 ,r.x2 - r.x1 + 1 ,
251
m_glyph.span(r.y2 - i ) );
269
constructor const_span.Construct;
278
constructor scanline_single_span.Construct;
282
m_span.Construct(x_ ,len_ ,covers_ );
287
function scanline_single_span.y;
294
function scanline_single_span.num_spans;
301
function scanline_single_span.begin_;
308
function scanline_single_span.sz_of_span;
310
result:=sizeof(const_span );
315
constructor renderer_raster_htext.Construct;
323
procedure renderer_raster_htext.render_text;
327
s : scanline_single_span;
330
while int8u_ptr(str )^ <> 0 do
332
m_glyph.prepare(@r ,x ,y ,int8u_ptr(str )^ ,flip );
336
m_ren.prepare(r.x2 - r.x1 + 1 );
345
r.x1 ,i ,r.x2 - r.x1 + 1 ,
346
m_glyph.span(r.y2 - i ) );
362
r.x1 ,i ,(r.x2 - r.x1 + 1 ) ,
363
m_glyph.span(i - r.y1 ) );