annotate libmlk-ui/ui/align.h @ 243:71b3b7036de7

misc: lot of cleanups, - prefix libraries with libmlk, - move assets from source directories closes #2520, - prefix header guards closes #2519
author David Demelier <markand@malikania.fr>
date Sat, 28 Nov 2020 22:37:30 +0100
parents libui/ui/align.h@9733d379be89
children 08ab73b32832
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 */