Mercurial > molko
annotate libmlk-ui/mlk/ui/debug.c @ 591:bca466732620
misc: update .hgignore
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 20 Mar 2023 21:12:15 +0100 |
parents | c027304ced27 |
children | ed1d3244ed57 |
rev | line source |
---|---|
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * debug.c -- debugging interfaces |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
433
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdio.h> |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
22 #include <mlk/core/font.h> |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
23 #include <mlk/core/texture.h> |
148
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
133
diff
changeset
|
24 |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include "debug.h" |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
26 #include "ui.h" |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
28 struct mlk_debug_options mlk_debug_options = { |
133
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
131
diff
changeset
|
29 #if !defined(NDEBUG) |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
30 .enable = 1 |
571
cba66f7d8a53
misc: various windows fixes
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
31 #else |
587
c027304ced27
misc: add NLS for ui/rpg
David Demelier <markand@malikania.fr>
parents:
571
diff
changeset
|
32 .enable = 0 |
133
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
131
diff
changeset
|
33 #endif |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 }; |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 void |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
37 mlk_debugf(struct mlk_debug_report *report, const char *fmt, ...) |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 { |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 assert(report); |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 assert(fmt); |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
42 if (!mlk_debug_options.enable) |
133
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
131
diff
changeset
|
43 return; |
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
131
diff
changeset
|
44 |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 va_list ap; |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 va_start(ap, fmt); |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
48 mlk_debugva(report, fmt, ap); |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 va_end(ap); |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 void |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
53 mlk_debugva(struct mlk_debug_report *report, const char *fmt, va_list ap) |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 assert(report); |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 assert(fmt); |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
490
d4e50da7e5c5
ui: debug -> mlk_debug
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
58 char line[MLK_DEBUG_LINE_MAX]; |
451
90a097b1aa0f
core: font -> mlk_font
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
59 struct mlk_font *font; |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
451
diff
changeset
|
60 struct mlk_texture tex; |
154
2252f9efac9a
ui: remove style from debug_report, closes #2499
David Demelier <markand@malikania.fr>
parents:
148
diff
changeset
|
61 int x, y; |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
63 if (!mlk_debug_options.enable) |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
64 return; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
65 |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 vsnprintf(line, sizeof (line), fmt, ap); |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
79
diff
changeset
|
67 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
68 // TODO: add style support. |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
69 font = mlk_ui_fonts[MLK_UI_FONT_INTERFACE]; |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
71 if (mlk_font_render(font, &tex, line, MLK_UI_COLOR_DEBUG) < 0) |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 return; |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
74 // TODO: same here. |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
75 x = 10; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
76 y = (10 * (report->count + 1)) + (tex.h * (report->count)); |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 report->count++; |
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
451
diff
changeset
|
79 mlk_texture_draw(&tex, x, y); |
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
451
diff
changeset
|
80 mlk_texture_finish(&tex); |
79
8f95462ac5f8
core: create a debugging API, closes #2469 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 } |