wlmaker
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
titlebar.c File Reference
#include "titlebar.h"
#include <cairo.h>
#include <libbase/libbase.h>
#include <libbase/plist.h>
#include <stdlib.h>
#include <wlr/interfaces/wlr_buffer.h>
#include "box.h"
#include "primitives.h"
#include "style.h"
#include "titlebar_button.h"
#include "titlebar_title.h"
Include dependency graph for titlebar.c:

Classes

struct  _wlmtk_titlebar_t
 

Functions

static void _wlmtk_titlebar_element_destroy (wlmtk_element_t *element_ptr)
 
static void _wlmtk_titlebar_compute_positions (wlmtk_titlebar_t *titlebar_ptr, const struct wlmtk_titlebar_style *style_ptr)
 
static bool _wlmtk_titlebar_redraw_buffers (wlmtk_titlebar_t *titlebar_ptr, const struct wlmtk_titlebar_style *style_ptr, unsigned width)
 
static bool _wlmtk_titlebar_redraw (wlmtk_titlebar_t *titlebar_ptr, const struct wlmtk_titlebar_style *style_ptr)
 
wlmtk_titlebar_twlmtk_titlebar_create (wlmtk_window_t *window_ptr, const struct wlmtk_titlebar_style *style_ptr)
 
void wlmtk_titlebar_destroy (wlmtk_titlebar_t *titlebar_ptr)
 
bool wlmtk_titlebar_set_width (wlmtk_titlebar_t *tb, unsigned width)
 
bool wlmtk_titlebar_set_style (wlmtk_titlebar_t *tb, const struct wlmtk_titlebar_style *style_ptr)
 
void wlmtk_titlebar_set_properties (wlmtk_titlebar_t *titlebar_ptr, uint32_t properties)
 
void wlmtk_titlebar_set_activated (wlmtk_titlebar_t *titlebar_ptr, bool activated)
 
bool wlmtk_titlebar_is_activated (wlmtk_titlebar_t *titlebar_ptr)
 
void wlmtk_titlebar_set_title (wlmtk_titlebar_t *titlebar_ptr, const char *title_ptr)
 
wlmtk_element_twlmtk_titlebar_element (wlmtk_titlebar_t *titlebar_ptr)
 
static void test_variable_width (bs_test_t *test_ptr)
 
static void test_properties (bs_test_t *test_ptr)
 

Variables

const bspl_desc_t wlmtk_titlebar_style_desc []
 
static const wlmtk_element_vmt_t titlebar_element_vmt
 
static const uint32_t _wlmtk_titlebar_default_properties
 
static const bs_test_case_t _wlmtk_titlebar_test_cases []
 
const bs_test_set_t wlmtk_titlebar_test_set
 

Detailed Description

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.

Function Documentation

◆ _wlmtk_titlebar_compute_positions()

void _wlmtk_titlebar_compute_positions ( wlmtk_titlebar_t titlebar_ptr,
const struct wlmtk_titlebar_style style_ptr 
)
static

Compute positions of the titlebar elements, if configured.

This method updates wlmtk_titlebar_t::close_position, wlmtk_titlebar_t::title_position and wlmtk_titlebar_t::title_width.

Parameters
titlebar_ptr
style_ptr

◆ _wlmtk_titlebar_element_destroy()

void _wlmtk_titlebar_element_destroy ( wlmtk_element_t element_ptr)
static

Virtual destructor, wraps to our dtor.

◆ _wlmtk_titlebar_redraw()

bool _wlmtk_titlebar_redraw ( wlmtk_titlebar_t titlebar_ptr,
const struct wlmtk_titlebar_style style_ptr 
)
static

Redraws the titlebar elements.

◆ _wlmtk_titlebar_redraw_buffers()

bool _wlmtk_titlebar_redraw_buffers ( wlmtk_titlebar_t titlebar_ptr,
const struct wlmtk_titlebar_style style_ptr,
unsigned  width 
)
static

Redraws the titlebar's background in appropriate size.

◆ test_properties()

void test_properties ( bs_test_t *  test_ptr)
static

Tests titlebar with configured properties.

◆ test_variable_width()

void test_variable_width ( bs_test_t *  test_ptr)
static

Tests titlebar with variable width.

◆ wlmtk_titlebar_create()

wlmtk_titlebar_t * wlmtk_titlebar_create ( wlmtk_window_t window_ptr,
const struct wlmtk_titlebar_style style_ptr 
)

Creates a title bar, suitable as a window title.

Parameters
window_ptr
style_ptr
Returns
Pointer to the title bar state, or NULL on error. Must be free'd by calling wlmtk_titlebar_destroy.

◆ wlmtk_titlebar_destroy()

void wlmtk_titlebar_destroy ( wlmtk_titlebar_t titlebar_ptr)

Destroys the title bar.

Parameters
titlebar_ptr

◆ wlmtk_titlebar_element()

wlmtk_element_t * wlmtk_titlebar_element ( wlmtk_titlebar_t titlebar_ptr)

Returns the super Element of the titlebar.

Parameters
titlebar_ptr
Returns
Pointer to the wlmtk_element_t base instantiation to titlebar_ptr.

◆ wlmtk_titlebar_is_activated()

bool wlmtk_titlebar_is_activated ( wlmtk_titlebar_t titlebar_ptr)

Returns whether the title bar is activated.

◆ wlmtk_titlebar_set_activated()

void wlmtk_titlebar_set_activated ( wlmtk_titlebar_t titlebar_ptr,
bool  activated 
)

Sets whether the title bar is activated.

Parameters
titlebar_ptr
activated

◆ wlmtk_titlebar_set_properties()

void wlmtk_titlebar_set_properties ( wlmtk_titlebar_t titlebar_ptr,
uint32_t  properties 
)

Sets the properties of the title bar.

Parameters
titlebar_ptr
propertiesSee wlmtk_titlebar_property_t.

◆ wlmtk_titlebar_set_style()

bool wlmtk_titlebar_set_style ( wlmtk_titlebar_t titlebar_ptr,
const struct wlmtk_titlebar_style style_ptr 
)

Sets the style of the title bar.

Parameters
titlebar_ptr
style_ptr
Returns
true on success.

◆ wlmtk_titlebar_set_title()

void wlmtk_titlebar_set_title ( wlmtk_titlebar_t titlebar_ptr,
const char *  title_ptr 
)

Updates the title text of the titlebar.

Parameters
titlebar_ptr
title_ptrExpected to remain valid until the next call of wlmtk_titlebar_set_title or until the titlebar_ptr is destroyed.

◆ wlmtk_titlebar_set_width()

bool wlmtk_titlebar_set_width ( wlmtk_titlebar_t titlebar_ptr,
unsigned  width 
)

Sets the width of the title bar.

Parameters
titlebar_ptr
width
Returns
Whether the operation was successful.

Variable Documentation

◆ _wlmtk_titlebar_default_properties

const uint32_t _wlmtk_titlebar_default_properties
static
Initial value:
=
@ WLMTK_TITLEBAR_PROPERTY_CLOSE
Definition titlebar.h:41
@ WLMTK_TITLEBAR_PROPERTY_ICONIFY
Definition titlebar.h:39

Default properties: All buttons shown.

◆ _wlmtk_titlebar_test_cases

const bs_test_case_t _wlmtk_titlebar_test_cases[]
static
Initial value:
= {
{ 1, "variable_width", test_variable_width },
{ 1, "properties", test_properties },
}
static void test_properties(bs_test_t *test_ptr)
Definition titlebar.c:543
static void test_variable_width(bs_test_t *test_ptr)
Definition titlebar.c:487

Test cases

◆ titlebar_element_vmt

const wlmtk_element_vmt_t titlebar_element_vmt
static
Initial value:
= {
}
static void _wlmtk_titlebar_element_destroy(wlmtk_element_t *element_ptr)
Definition titlebar.c:312

Virtual method table extension for the titlebar's element superclass.

◆ wlmtk_titlebar_style_desc

const bspl_desc_t wlmtk_titlebar_style_desc[]
Initial value:
= {
BSPL_DESC_CUSTOM(
"FocussedFill", true, struct wlmtk_titlebar_style, focussed_fill,
focussed_fill, wlmtk_style_decode_fill, NULL, NULL, NULL),
BSPL_DESC_ARGB32(
"FocussedTextColor", true, struct wlmtk_titlebar_style,
focussed_text_color, focussed_text_color, 0),
BSPL_DESC_CUSTOM(
"BlurredFill", true, struct wlmtk_titlebar_style, blurred_fill,
blurred_fill, wlmtk_style_decode_fill, NULL, NULL, NULL),
BSPL_DESC_ARGB32(
"BlurredTextColor", true, struct wlmtk_titlebar_style,
blurred_text_color, blurred_text_color, 0),
BSPL_DESC_UINT64(
"Height", true, struct wlmtk_titlebar_style, height, height, 22),
BSPL_DESC_UINT64(
"BezelWidth", true, struct wlmtk_titlebar_style,
bezel_width, bezel_width, 1),
BSPL_DESC_DICT(
"Margin", true, struct wlmtk_titlebar_style, margin, margin,
BSPL_DESC_DICT(
"Font", true, struct wlmtk_titlebar_style, font, font,
}
Definition style.h:124
const bspl_desc_t wlmtk_style_font_desc[]
Definition style.c:44
const bspl_desc_t wlmtk_style_margin_desc[]
Definition style.c:29
bool wlmtk_style_decode_fill(bspl_object_t *object_ptr, const union bspl_desc_value *desc_value_ptr, void *value_ptr)
Definition style.c:107

Descriptor for decoding the "TitleBar" dict below "Window".

◆ wlmtk_titlebar_test_set

const bs_test_set_t wlmtk_titlebar_test_set
Initial value:
= BS_TEST_SET(
true, "titlebar", _wlmtk_titlebar_test_cases)
static const bs_test_case_t _wlmtk_titlebar_test_cases[]
Definition titlebar.c:476

Unit test cases.