1 //----------------------------------------------------------------------------
2 // Anti-Grain Geometry - Version 2.3
3 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5 // Permission to copy, use, modify, sell and distribute this software
6 // is granted provided this copyright notice appears in all copies.
7 // This software is provided "as is" without express or implied
8 // warranty, and with no claim as to its suitability for any purpose.
10 //----------------------------------------------------------------------------
11 // Contact: mcseem@antigrain.com
12 // mcseemagg@yahoo.com
13 // http://www.antigrain.com
14 //----------------------------------------------------------------------------
18 //----------------------------------------------------------------------------
20 #ifndef AGG_GSV_TEXT_INCLUDED
21 #define AGG_GSV_TEXT_INCLUDED
23 #include "agg_basics.h"
24 #include "agg_conv_stroke.h"
25 #include "agg_conv_transform.h"
31 //---------------------------------------------------------------gsv_text
33 // See Implementation agg_gsv_text.cpp
49 void font(const void* font
);
50 void flip(bool flip_y
) { m_flip
= flip_y
; }
51 void load_font(const char* file
);
52 void size(double height
, double width
=0.0);
53 void space(double space
);
54 void line_space(double line_space
);
55 void start_point(double x
, double y
);
56 void text(const char* text
);
58 void rewind(unsigned id
);
59 unsigned vertex(double* x
, double* y
);
62 // not supposed to be copied
63 gsv_text(const gsv_text
&);
64 const gsv_text
& operator = (const gsv_text
&);
66 int16u
value(const int8u
* p
) const
72 *((int8u
*)&v
+ 1) = p
[0];
77 *((int8u
*)&v
+ 1) = p
[1];
112 //--------------------------------------------------------gsv_text_outline
113 template<class Transformer
= trans_affine
> class gsv_text_outline
116 gsv_text_outline(gsv_text
& text
, const Transformer
& trans
) :
118 m_trans(m_polyline
, trans
)
127 void transformer(const Transformer
* trans
)
129 m_trans
->transformer(trans
);
132 void rewind(unsigned id
)
135 m_polyline
.line_join(round_join
);
136 m_polyline
.line_cap(round_cap
);
139 unsigned vertex(double* x
, double* y
)
141 return m_trans
.vertex(x
, y
);
145 conv_stroke
<gsv_text
> m_polyline
;
146 conv_transform
<conv_stroke
<gsv_text
>, Transformer
> m_trans
;