Mercurial > molko
annotate libmlk-ui/ui/align.h @ 261:bfde372bf152
core: prefix utilities with util_
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 06 Dec 2020 23:06:34 +0100 |
parents | 71b3b7036de7 |
children | 08ab73b32832 |
rev | line source |
---|---|
150
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * align.h -- user interface alignment |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
243
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
150
diff
changeset
|
19 #ifndef MOLKO_UI_ALIGN_H |
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
150
diff
changeset
|
20 #define MOLKO_UI_ALIGN_H |
150
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 /** |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 * \file align.h |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 * \brief User interface alignment. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 /** |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 * \brief Label alignment in bounding box. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 * The alignment is described as following: |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 * ``` |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 * +---------------------+ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 * | 2 3 4 | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 * | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 * | 9 1 5 | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 * | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 * | 8 7 6 | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 * +---------------------+ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 * ``` |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 * The default value of 0 (LABEL_ALIGN_NONE) means the alignment isn't used. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 enum align { |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 ALIGN_NONE, /*!< No alignment. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 ALIGN_CENTER, /*!< Align to the center. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 ALIGN_TOP_LEFT, /*!< Top left. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 ALIGN_TOP, /*!< Top center (aligned horizontally). */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 ALIGN_TOP_RIGHT, /*!< Top right. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 ALIGN_RIGHT, /*!< Right (aligned vertically). */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 ALIGN_BOTTOM_RIGHT, /*!< Bottom right. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 ALIGN_BOTTOM, /*!< Bottom (aligned horizontally). */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 ALIGN_BOTTOM_LEFT, /*!< Bottom left. */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 ALIGN_LEFT /*!< Left (aligned vertically). */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 }; |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 /** |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 * Align the given object relative to its parent region. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 * The arguments are described as following: |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 * ``` |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 * Example of ALIGN_LEFT (centered vertically but placed on the left.) |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 * px, py |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 * +----------pw----------+ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 * | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 * | x, y | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 * | +---w---+ | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 * ph h | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 * | +-------+ | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 * | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 * | | |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 * +----------------------+ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 * ``` |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 * As a convenience, x and y are left untouched if align is ALIGN_NONE which |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 * means you can set the coordinates to default values and still call the align |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 * function without need to check. |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 * |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 * \param align the desired alignment |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 * \param x the pointer to x coordinate to modify (may be NULL) |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 * \param y the pointer yo y coordinate to modify (may be NULL) |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 * \param w the object width |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 * \param h the object height |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 * \param px the parent region start |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 * \param py the parent region start |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 * \param pw the parent region width |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 * \param ph the parent region height |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 */ |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 void |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 align(enum align align, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 int *x, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 int *y, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 unsigned int w, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 unsigned int h, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 int px, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 int py, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 unsigned int pw, |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 unsigned int ph); |
9733d379be89
ui: add a standalone align() function
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 |
243
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
150
diff
changeset
|
102 #endif /* !MOLKO_UI_ALIGN_H */ |