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;