1 /*
2 * DISTRHO Plugin Framework (DPF)
3 * Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any purpose with
6 * or without fee is hereby granted, provided that the above copyright notice and this
7 * permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
10 * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
11 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
12 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #include "DemoWidgetBanner.hpp"
18
19 #include "Cairo.hpp"
20 #include "Window.hpp"
21
22 START_NAMESPACE_DGL
23
24 // -----------------------------------------------------------------------
25
26 static const char* banner =
27 " "
28 " * * * * * "
29 " ** ** * * * * "
30 " * * * * * * * "
31 " * * * **** *** * **** * * ** **** * *** "
32 " * * * * ** * * * * * * ** * "
33 " * * ***** * * ****** * * * * * * * "
34 " * * * * * * * * * * * * * * "
35 " * * * ** * ** * * * * * * * * * * "
36 " * * *** * *** * **** ** ** ***** ** * * "
37 " "
38 " "
39 " "
40 " ***** **** ***** "
41 " * * * * * "
42 " * * * * * "
43 " * * * * * "
44 " * * **** **** "
45 " * * * * "
46 " * * * * "
47 " * * * * "
48 " ***** * * "
49 " ";
50
51 enum
52 {
53 rows = 23,
54 columns = 72,
55 };
56
DemoWidgetBanner(Widget * group)57 DemoWidgetBanner::DemoWidgetBanner(Widget* group)
58 : Widget(group)
59 {
60 }
61
onDisplay()62 void DemoWidgetBanner::onDisplay()
63 {
64 cairo_t* cr = getParentWindow().getGraphicsContext().cairo;
65
66 Size<uint> sz = getSize();
67 int w = sz.getWidth();
68 int h = sz.getHeight();
69
70 double diameter = (double)w / columns;
71 double radius = 0.5 * diameter;
72 double xoff = 0;
73 double yoff = 0.5 * (h - rows * diameter);
74 for (int r = 0; r < rows; ++r)
75 {
76 for (int c = 0; c < columns; ++c)
77 {
78 double cx = xoff + radius + c * diameter;
79 double cy = yoff + radius + r * diameter;
80
81 char ch = banner[c + r * columns];
82 if (ch != ' ')
83 cairo_set_source_rgb(cr, 0.5, 0.9, 0.2);
84 else
85 cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
86
87 cairo_save(cr);
88 cairo_translate(cr, cx, cy);
89 cairo_scale(cr, radius, radius);
90 cairo_arc(cr, 0.0, 0.0, 1.0, 0.0, 2 * M_PI);
91 cairo_restore(cr);
92
93 cairo_fill(cr);
94 }
95 }
96 }
97
98 // -----------------------------------------------------------------------
99
100 END_NAMESPACE_DGL
101