annotate mlk-client/main.cpp @ 208:263122adef77

client: add texture and painter closes #966 @2h closes #967 @2h
author David Demelier <markand@malikania.fr>
date Wed, 05 Dec 2018 22:24:44 +0100
parents 12873699ad8b
children 1599919b5de6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- main client file
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <iostream>
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
20 #include <chrono>
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
21 #include <thread>
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
23 #include <malikania/client/color.hpp>
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
24 #include <malikania/client/button.hpp>
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <malikania/client/window.hpp>
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
26 #include <malikania/client/sprite.hpp>
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
27 #include <malikania/client/theme.hpp>
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
28 #include <malikania/client/painter.hpp>
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
205
c973501abe36 windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents: 200
diff changeset
30 #include <assets/ui.hpp>
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
31
206
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
32 using namespace std::chrono_literals;
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
33
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
34 int main(int, char**)
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 {
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
36 mlk::client::window win(1920/2, 1080/2, "Hello");
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
37 mlk::client::image image(std::string(ui, sizeof (ui)));
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
38 mlk::client::sprite sprite(std::move(image), {16, 16});
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
39 mlk::client::painter painter(win);
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
40
206
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
41 for (;;) {
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
42 while (auto ev = win.poll()) {
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
43 if (std::holds_alternative<mlk::client::quit_event>(ev))
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
44 return 0;
12873699ad8b client: create variant instead of dispatcher
David Demelier <markand@malikania.fr>
parents: 205
diff changeset
45 }
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
46
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
47 painter.clear();
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
48 painter.set_drawing_color(mlk::client::color::from_hex(0xffffffff));
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
49
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
50 const auto width = 200;
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
51 const auto height = 150;
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
52
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
53 // top
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
54 sprite.draw(painter, 0, mlk::point{10, 10});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
55 sprite.draw(painter, 1, mlk::rectangle{10 + 16, 10, width, 16});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
56 sprite.draw(painter, 2, mlk::point{10 + 16 + width, 10});
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
57
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
58 // middle
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
59 sprite.draw(painter, 32, mlk::rectangle{10, 10 + 16, 16, height});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
60 sprite.draw(painter, 33, mlk::rectangle{10 + 16, 10 + 16, width, height});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
61 sprite.draw(painter, 34, mlk::rectangle{10 + 16 + width, 10 + 16, 16, height});
191
bfc6b9c9081a Client: widget store position and size
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
62
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
63 // bottom
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
64 sprite.draw(painter, 64, mlk::point{10, 10 + 16 + height});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
65 sprite.draw(painter, 65, mlk::rectangle{10 + 16, 10 + 16 + height, width, 16});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
66 sprite.draw(painter, 66, mlk::point{10 + 16 + width, 10 + 16 + height});
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
68 // input
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
69 sprite.draw(painter, 3, mlk::point{10 + 8, 10 + 8});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
70 sprite.draw(painter, 4, mlk::rectangle{10 + 8 + 16, 10 + 8, width - 16, 16});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
71 sprite.draw(painter, 5, mlk::point{10 + 8 + width, 10 + 8});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
72 sprite.draw(painter, 35, mlk::point{10 + 8, 10 + 8 + 16});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
73 sprite.draw(painter, 36, mlk::rectangle{10 + 8 + 16, 10 + 8 + 16, width - 16, 16});
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
74 sprite.draw(painter, 37, mlk::point{10 + 8 + width, 10 + 8 + 16});
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
208
263122adef77 client: add texture and painter
David Demelier <markand@malikania.fr>
parents: 206
diff changeset
76 painter.present();
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
77 }
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
78
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 193
diff changeset
79 return 0;
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }