From 2d28b590bfbf25e5176db418594edc8b32c84e89 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 31 Aug 2018 16:31:33 +0000 Subject: [PATCH] .upptst git-svn-id: svn://ultimatepp.org/upp/trunk@12216 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- upptst/DrawPolyPolygon/main.cpp | 40 ++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/upptst/DrawPolyPolygon/main.cpp b/upptst/DrawPolyPolygon/main.cpp index fd7a451b3..f427fbaa2 100644 --- a/upptst/DrawPolyPolygon/main.cpp +++ b/upptst/DrawPolyPolygon/main.cpp @@ -8,9 +8,47 @@ struct MyApp : TopWindow { void MyApp::Paint(Draw& w) { - + w.DrawRect(GetSize(), White()); + Point points[12][2][4]; + int subpolygon_counts[12][2]; + int disjunct_counts[12]; + Point lpoints[12][5]; + int lcounts[12][2]; + Pointf center(400, 300); + static const double out_delta = 2 * M_PI / 24; + static const double in_delta = 2 * M_PI / 48; + for(int i = 0; i < 12; i++) { + double angle = i * 2 * M_PI / 12; + points[i][0][0] = Polar(center, 200, angle); + points[i][0][1] = Polar(center, 120, angle - out_delta); + points[i][0][2] = Polar(center, 40, angle); + points[i][0][3] = Polar(center, 120, angle + out_delta); + points[i][1][0] = Polar(center, 160, angle); + points[i][1][1] = Polar(center, 120, angle + in_delta); + points[i][1][2] = Polar(center, 80, angle); + points[i][1][3] = Polar(center, 120, angle - in_delta); + subpolygon_counts[i][0] = 4; + subpolygon_counts[i][1] = 4; + disjunct_counts[i] = subpolygon_counts[i][0] + subpolygon_counts[i][1]; + + lpoints[i][0] = Polar(center, 260, angle + in_delta); + lpoints[i][1] = Polar(center, 230, angle); + lpoints[i][2] = Polar(center, 260, angle - in_delta); + lcounts[i][0] = 3; + lpoints[i][3] = Polar(center, 280, angle + in_delta); + lpoints[i][4] = Polar(center, 280, angle - in_delta); + lcounts[i][1] = 2; + } + w.DrawPolyPolyPolygon(points[0][0], sizeof(points) / sizeof(Point), + subpolygon_counts[0], sizeof(subpolygon_counts) / sizeof(int), + disjunct_counts, sizeof(disjunct_counts) / sizeof(int), + LtBlue(), 4, LtRed(), I64(0xF0F0F0F00F0F0F0F)); + w.DrawPolyPolyline(lpoints[0], sizeof(lpoints) / sizeof(Point), + lcounts[0], sizeof(lcounts) / sizeof(int), + 4, Color(0, 192, 0)); } GUI_APP_MAIN { + MyApp().Run(); }