Mercurial > malikania
annotate examples/js-font/main.cpp @ 188:0cecdadfb5c4
Misc: rework javascript bindings, closes #916
While here, create new test libraries for future unit tests.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 24 Oct 2018 21:13:12 +0200 |
parents | 3107ce017c3a |
children | f28cb6d04731 |
rev | line source |
---|---|
182 | 1 /* |
2 * main.cpp -- test Font (JavaScript binding) | |
3 * | |
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <chrono> | |
20 #include <iostream> | |
21 #include <thread> | |
22 | |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
23 #include <malikania/locator.hpp> |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
24 |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
25 #include <malikania/client/loader.hpp> |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
26 |
182 | 27 #include <malikania/js_client_resources_loader.hpp> |
28 #include <malikania/js_font.hpp> | |
29 #include <malikania/js_window.hpp> | |
30 | |
31 using namespace std::chrono_literals; | |
32 | |
33 using namespace mlk; | |
34 using namespace mlk::client; | |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
35 using namespace mlk::duk; |
182 | 36 |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
37 void basic(duk_context* ctx) |
182 | 38 { |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
39 const auto ret = duk_peval_string(ctx, |
182 | 40 "w = new Malikania.Window();" |
41 "f = new Malikania.Font('DejaVuSans.ttf', 10);" | |
42 "w.setDrawingColor('lightskyblue');" | |
43 "w.clear();" | |
44 "s = 'The world is Malikania.';" | |
45 "c = f.clip(s);" | |
46 "w.setDrawingColor('white');" | |
47 "w.drawText(s, f, { x: 320 - (c.width / 2), y: 240 - (c.height / 2) });" | |
48 "w.present();" | |
49 ); | |
50 | |
51 if (ret != 0) | |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
52 throw get_stack(ctx, -1); |
182 | 53 |
54 std::this_thread::sleep_for(3s); | |
55 } | |
56 | |
57 int main() | |
58 { | |
59 try { | |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
60 directory_locator locator(CMAKE_CURRENT_SOURCE_DIR "/resources"); |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
61 client::loader loader(locator); |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
62 context ctx; |
182 | 63 |
64 duk_push_object(ctx); | |
65 duk_put_global_string(ctx, "Malikania"); | |
66 | |
188
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
67 load_font_api(ctx); |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
68 load_window_api(ctx); |
0cecdadfb5c4
Misc: rework javascript bindings, closes #916
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
69 put(ctx, loader); |
182 | 70 basic(ctx); |
71 } catch (const std::exception& ex) { | |
72 std::cerr << ex.what() << std::endl; | |
73 return 1; | |
74 } | |
75 } |