Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Toolbox/DebugDrawing2D.cpp @ 2156:340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 27 Sep 2024 22:14:36 +0200 |
parents | |
children | f14260c15151 |
rev | line source |
---|---|
2156
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * the License, or (at your option) any later version. |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * Lesser General Public License for more details. |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * License along with this program. If not, see |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 **/ |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 #include "DebugDrawing2D.h" |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 namespace OrthancStone |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 class DebugDrawing2D::Segment |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 private: |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 double x1_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 double y1_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 double x2_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 double y2_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 std::string color_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 bool arrow_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 public: |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 Segment(double x1, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 double y1, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 double x2, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 double y2, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 const std::string& color, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 bool arrow) : |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 x1_(x1), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 y1_(y1), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 x2_(x2), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 y2_(y2), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 color_(color), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 arrow_(arrow) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 double GetX1() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 return x1_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 double GetY1() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 return y1_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 double GetX2() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 return x2_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 double GetY2() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 return y2_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 const std::string& GetColor() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 return color_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 bool IsArrow() const |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 return arrow_; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 }; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 void DebugDrawing2D::AddSegment(double x1, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 double y1, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 double x2, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 double y2, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 const std::string& color, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 bool arrow, |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 bool addToExtent) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 if (addToExtent) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
97 extent_.AddPoint(x1, y1); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
98 extent_.AddPoint(x2, y2); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 segments_.push_back(Segment(x1, y1, x2, y2, color, arrow)); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
104 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 void DebugDrawing2D::SaveSvg(const std::string& path) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 // Size in pixels |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
108 float ww, hh; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
109 if (extent_.IsEmpty()) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
110 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
111 ww = 2048.0f; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
112 hh = 2048.0f; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
113 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 else if (extent_.GetWidth() > extent_.GetHeight()) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
116 ww = 2048.0f; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 hh = ww * extent_.GetHeight() / extent_.GetWidth(); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
118 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 else |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 hh = 2048.0f; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 ww = hh * extent_.GetWidth() / extent_.GetHeight(); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
123 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
124 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 FILE* fp = fopen(path.c_str(), "w"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 fprintf(fp, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 fprintf(fp, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 fprintf(fp, "<svg width=\"%f\" height=\"%f\" viewBox=\"0 0 %f %f\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", ww, hh, extent_.GetWidth(), extent_.GetHeight()); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 // http://thenewcode.com/1068/Making-Arrows-in-SVG |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 fprintf(fp, "<defs>\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 fprintf(fp, "<marker id=\"arrowhead\" markerWidth=\"2\" markerHeight=\"3\" \n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
133 fprintf(fp, "refX=\"2\" refY=\"1.5\" orient=\"auto\">\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
134 fprintf(fp, "<polygon points=\"0 0, 2 1.5, 0 3\" />\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 fprintf(fp, "</marker>\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 fprintf(fp, "</defs>\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 fprintf(fp, "<rect fill=\"#fff\" stroke=\"#000\" x=\"0\" y=\"0\" width=\"%f\" height=\"%f\"/>\n", extent_.GetWidth(), extent_.GetHeight()); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 for (std::list<Segment>::const_iterator it = segments_.begin(); it != segments_.end(); ++it) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 float strokeWidth = 0.1; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 std::string s; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 if (it->IsArrow()) |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 { |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 s = "marker-end=\"url(#arrowhead)\""; |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 fprintf(fp, "<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" stroke=\"%s\" stroke-width=\"%f\" %s/>\n", |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 it->GetX1() - extent_.GetX1(), it->GetY1() - extent_.GetY1(), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 it->GetX2() - extent_.GetX1(), it->GetY2() - extent_.GetY1(), |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 it->GetColor().c_str(), strokeWidth, s.c_str()); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 fprintf(fp, "</svg>\n"); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 fclose(fp); |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 } |
340bde744884
added DebugDrawing2D and GeometryToolbox::IntersectLineAndSegment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 } |