annotate libclient/malikania/layout.hpp @ 76:858621081b95

Happy new year!
author David Demelier <markand@malikania.fr>
date Sun, 01 Jan 2017 13:35:37 +0100
parents 4bc4732fa1dd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
52
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * layout.hpp -- generic layout manager inside a frame
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
76
858621081b95 Happy new year!
David Demelier <markand@malikania.fr>
parents: 52
diff changeset
4 * Copyright (c) 2013-2017 Malikania Authors
52
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef MALIKANIA_CLIENT_LAYOUT_HPP
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define MALIKANIA_CLIENT_LAYOUT_HPP
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \brief Generic layout manager inside a frame.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 namespace mlk {
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 class mouse_click_event;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 class rectangle;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 class size;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 class window;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 * \brief Manages the widgets inside a frame.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 * Layouts are responsible of positioning the widgets inside a frame. They
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * handle their positions and dispatch events if applicable.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 * \see grid_layout
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 class layout {
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 public:
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * Virtual destructor defaulted.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 virtual ~layout() noexcept = default;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * Handle mouse down.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 * \param ev the mouse event
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 virtual void handle_mouse_down(const mouse_click_event& ev) = 0;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * Handle mouse up.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 * \param ev the event
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 virtual void handle_mouse_up(const mouse_click_event& ev) = 0;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * Return the required minimum size to draw the whole layout.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 virtual mlk::size size(window& win) const = 0;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 /**
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 * Draw the layout content at the given position.
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 *
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * \param win the window
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 */
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 virtual void draw(window& win, const rectangle& dst) = 0;
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 };
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 } // !mlk
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
4bc4732fa1dd Client: add basic button, closes #601
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 #endif // !MALIKANIA_CLIENT_LAYOUT_HPP