1 //----------------------------------------------------------------------------
2 // Anti-Grain Geometry - Version 2.4
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 //----------------------------------------------------------------------------
16 #ifndef AGG_TRANS_DOUBLE_PATH_INCLUDED
17 #define AGG_TRANS_DOUBLE_PATH_INCLUDED
19 #include "agg_basics.h"
20 #include "agg_vertex_sequence.h"
25 // See also: agg_trans_double_path.cpp
27 //-------------------------------------------------------trans_double_path
28 class trans_double_path
38 typedef vertex_sequence
<vertex_dist
, 6> vertex_storage
;
42 //--------------------------------------------------------------------
43 void base_length(double v
) { m_base_length
= v
; }
44 double base_length() const { return m_base_length
; }
46 //--------------------------------------------------------------------
47 void base_height(double v
) { m_base_height
= v
; }
48 double base_height() const { return m_base_height
; }
50 //--------------------------------------------------------------------
51 void preserve_x_scale(bool f
) { m_preserve_x_scale
= f
; }
52 bool preserve_x_scale() const { return m_preserve_x_scale
; }
54 //--------------------------------------------------------------------
56 void move_to1(double x
, double y
);
57 void line_to1(double x
, double y
);
58 void move_to2(double x
, double y
);
59 void line_to2(double x
, double y
);
60 void finalize_paths();
62 //--------------------------------------------------------------------
63 template<class VertexSource1
, class VertexSource2
>
64 void add_paths(VertexSource1
& vs1
, VertexSource2
& vs2
,
65 unsigned path1_id
=0, unsigned path2_id
=0)
73 while(!is_stop(cmd
= vs1
.vertex(&x
, &y
)))
89 while(!is_stop(cmd
= vs2
.vertex(&x
, &y
)))
106 //--------------------------------------------------------------------
107 double total_length1() const;
108 double total_length2() const;
109 void transform(double *x
, double *y
) const;
112 double finalize_path(vertex_storage
& vertices
);
113 void transform1(const vertex_storage
& vertices
,
114 double kindex
, double kx
,
115 double *x
, double* y
) const;
117 vertex_storage m_src_vertices1
;
118 vertex_storage m_src_vertices2
;
119 double m_base_length
;
120 double m_base_height
;
125 bool m_preserve_x_scale
;