annotate examples/js-window/main.cpp @ 182:3107ce017c3a

Misc: switch back to SDL Qt Quick and QML was an exciting experiment but it's definitely not enough flexible and easy to use for game development. Using SDL2 will let us focusing on our own drawing functions without any kind of overhead. While here, start massive cleanup.
author David Demelier <markand@malikania.fr>
date Fri, 19 Oct 2018 20:18:19 +0200
parents
children 0cecdadfb5c4
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 -- test Window (JavaScript binding)
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 <chrono>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <iostream>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <thread>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <malikania/js_window.hpp>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 using namespace std::chrono_literals;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 using namespace mlk;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 using namespace mlk::client;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 void basic(dukx_context& ctx)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 auto ret = duk_peval_string(ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 "w = new Malikania.Window();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 "w.setDrawingColor('lightskyblue');"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 "w.clear();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 "w.present();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 if (ret != 0) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 throw dukx_get_exception(ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 std::this_thread::sleep_for(3s);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 void rect(dukx_context& ctx)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 auto ret = duk_peval_string(ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 "w = new Malikania.Window();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 "w.setDrawingColor('lightskyblue');"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 "w.clear();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 "w.setDrawingColor('white');"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 "w.drawRectangle({ x: 10, y: 10, width: 10, height: 10 });"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 "w.present();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 if (ret != 0) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 throw dukx_get_exception(ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 std::this_thread::sleep_for(3s);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 int main()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 dukx_context ctx;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 duk_push_object(ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 duk_put_global_string(ctx, "Malikania");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 dukx_load_window(ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 basic(ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 rect(ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 } catch (const std::exception& ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 std::cerr << ex.what() << std::endl;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 return 1;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 }