summary refs log tree commit diff stats
path: root/Source/Panel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Panel.cpp')
-rw-r--r--Source/Panel.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/Source/Panel.cpp b/Source/Panel.cpp index 8642461..b6aa504 100644 --- a/Source/Panel.cpp +++ b/Source/Panel.cpp
@@ -22,6 +22,9 @@ Panel::Panel(int id) {
22 ReadDecorations(id); 22 ReadDecorations(id);
23} 23}
24 24
25// For testing
26Panel::Panel() {}
27
25void Panel::Write(int id) { 28void Panel::Write(int id) {
26 WriteIntersections(id); 29 WriteIntersections(id);
27 WriteDecorations(id); 30 WriteDecorations(id);
@@ -147,8 +150,7 @@ void Panel::ReadIntersections(int id) {
147 } else { 150 } else {
148 dir = Endpoint::Direction::DOWN; 151 dir = Endpoint::Direction::DOWN;
149 } 152 }
150 int x = 2 * (location % ((_width + 1) / 2)); 153 auto [x, y] = loc_to_xy(location);
151 int y = (_height - 1) - 2 * (location / ((_width + 1) / 2));
152 _endpoints.push_back(Endpoint(x, y, dir)); 154 _endpoints.push_back(Endpoint(x, y, dir));
153 } 155 }
154 } 156 }
@@ -163,15 +165,15 @@ void Panel::WriteIntersections(int id) {
163 165
164 double min = 0.1; 166 double min = 0.1;
165 double max = 0.9; 167 double max = 0.9;
166 double width_interval = (max - min) / (_width - 1); 168 double width_interval = (max - min) / (_width/2);
167 double height_interval = (max - min) / (_height - 1); 169 double height_interval = (max - min) / (_height/2);
168 170
169 for (int y=0; y<_height; y++) { 171 for (int y=0; y<_height/2; y++) {
170 for (int x=0; x<_width; x++) { 172 for (int x=0; x<_width/2; x++) {
171 intersections.push_back(static_cast<float>(min + x * width_interval)); 173 intersections.push_back(static_cast<float>(min + x * width_interval));
172 intersections.push_back(static_cast<float>(min + y * height_interval)); 174 intersections.push_back(static_cast<float>(min + y * height_interval));
173 int flags = 0; 175 int flags = 0;
174 if (find(_startpoints, {x, y}) != -1) flags |= IntersectionFlags::IS_STARTPOINT; 176 if (find(_startpoints, {2*x, 2*y}) != -1) flags |= IntersectionFlags::IS_STARTPOINT;
175 intersectionFlags.push_back(flags); 177 intersectionFlags.push_back(flags);
176 if (y > 0) { 178 if (y > 0) {
177 connections.first.push_back(y * _width + x); 179 connections.first.push_back(y * _width + x);