File: titlebar.h

package info (click to toggle)
wlmaker 0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,884 kB
  • sloc: ansic: 54,832; xml: 1,424; python: 1,400; yacc: 118; lex: 70; sh: 16; makefile: 8
file content (131 lines) | stat: -rw-r--r-- 3,515 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* ========================================================================= */
/**
 * @file titlebar.h
 *
 * @copyright
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef __WLMTK_TITLEBAR_H__
#define __WLMTK_TITLEBAR_H__

#include <libbase/libbase.h>
#include <stdbool.h>
#include <stdint.h>

/** Forward declaration: Title bar. */
typedef struct _wlmtk_titlebar_t wlmtk_titlebar_t;

#include "element.h"
#include "style.h"
#include "window.h"  // IWYU pragma: keep

/** Properties of the titlebar: Which buttons to show. */
typedef enum {
    /** Whether the 'iconify' button is shown. */
    WLMTK_TITLEBAR_PROPERTY_ICONIFY = UINT32_C(1) << 0,
    /** Whether the 'close' button is shown. */
    WLMTK_TITLEBAR_PROPERTY_CLOSE = UINT32_C(1) << 1
} wlmtk_titlebar_property_t;

#ifdef __cplusplus
extern "C" {
#endif  // __cplusplus

/**
 * Creates a title bar, suitable as a window title.
 *
 * @param window_ptr
 * @param style_ptr
 *
 * @return Pointer to the title bar state, or NULL on error. Must be free'd
 *     by calling @ref wlmtk_titlebar_destroy.
 */
wlmtk_titlebar_t *wlmtk_titlebar2_create(
    wlmtk_window_t *window_ptr,
    const wlmtk_titlebar_style_t *style_ptr);

/**
 * Destroys the title bar.
 *
 * @param titlebar_ptr
 */
void wlmtk_titlebar_destroy(wlmtk_titlebar_t *titlebar_ptr);

/**
 * Sets the width of the title bar.
 *
 * @param titlebar_ptr
 * @param width
 *
 * @return Whether the operation was successful.
 */
bool wlmtk_titlebar_set_width(
    wlmtk_titlebar_t *titlebar_ptr,
    unsigned width);

/**
 * Sets the properties of the title bar.
 *
 * @param titlebar_ptr
 * @param properties          See @ref wlmtk_titlebar_property_t.
 */
void wlmtk_titlebar_set_properties(
    wlmtk_titlebar_t *titlebar_ptr,
    uint32_t properties);

/**
 * Sets whether the title bar is activated.
 *
 * @param titlebar_ptr
 * @param activated
 */
void wlmtk_titlebar_set_activated(
    wlmtk_titlebar_t *titlebar_ptr,
    bool activated);

/** Returns whether the title bar is activated. */
bool wlmtk_titlebar_is_activated(wlmtk_titlebar_t *titlebar_ptr);

/**
 * Updates the title text of the titlebar.
 *
 * @param titlebar_ptr
 * @param title_ptr           Expected to remain valid until the next call of
 *                            @ref wlmtk_titlebar_set_title or until the
 *                            `titlebar_ptr` is destroyed.
 */
void wlmtk_titlebar_set_title(
    wlmtk_titlebar_t *titlebar_ptr,
    const char *title_ptr);

/**
 * Returns the super Element of the titlebar.
 *
 * @param titlebar_ptr
 *
 * @return Pointer to the @ref wlmtk_element_t base instantiation to
 *     titlebar_ptr.
 */
wlmtk_element_t *wlmtk_titlebar_element(wlmtk_titlebar_t *titlebar_ptr);

/** Unit test cases. */
extern const bs_test_case_t wlmtk_titlebar_test_cases[];

#ifdef __cplusplus
}  // extern "C"
#endif  // __cplusplus

#endif /* __WLMTK_TITLEBAR_H__ */
/* == End of titlebar.h ==================================================== */