mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
61 lines
2 KiB
C++
61 lines
2 KiB
C++
#include <CtrlLib/CtrlLib.h>
|
|
|
|
using namespace Upp;
|
|
|
|
struct MyApp : TopWindow {
|
|
virtual void Paint(Draw& w);
|
|
};
|
|
|
|
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));
|
|
|
|
Point tr[] = { Point(50, 5), Point(80, 50), Point(20, 50) };
|
|
w.DrawPolygon(tr, 3, Green());
|
|
w.DrawPolyline(tr, 3, 2, Magenta());
|
|
|
|
w.DrawEllipse(5, 70, 70, 40, Green(), 2, Magenta());
|
|
w.DrawEllipse(5, 150, 70, 40, Green());
|
|
}
|
|
|
|
GUI_APP_MAIN
|
|
{
|
|
MyApp().Run();
|
|
}
|