wlmaker
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
output_config.c File Reference
#include "output_config.h"
#include <fnmatch.h>
#include <libbase/libbase.h>
#include <libbase/plist.h>
#include <stdlib.h>
#include <string.h>
#include <wayland-server-core.h>
#include <wayland-util.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_output_layout.h>
#include "toolkit/toolkit.h"
Include dependency graph for output_config.c:

Classes

struct  _wlmbe_output_config_t
 

Functions

static bool _wlmbe_output_position_decode (bspl_object_t *object_ptr, void *dest_ptr)
 
static bool _wlmbe_output_position_decode_init (void *dest_ptr)
 
static bool _wlmbe_output_mode_decode (bspl_object_t *object_ptr, void *dest_ptr)
 
static bool _wlmbe_output_mode_decode_init (void *dest_ptr)
 
wlmbe_output_config_twlmbe_output_config_from_dlnode (bs_dllist_node_t *dlnode_ptr)
 
bs_dllist_node_t * wlmbe_dlnode_from_output_config (wlmbe_output_config_t *config_ptr)
 
wlmbe_output_config_attributes_twlmbe_output_config_attributes (wlmbe_output_config_t *config_ptr)
 
wlmbe_output_config_twlmbe_output_config_create_from_wlr (struct wlr_output *wlr_output_ptr)
 
wlmbe_output_config_twlmbe_output_config_create_from_plist (bspl_dict_t *dict_ptr)
 
void wlmbe_output_config_destroy (wlmbe_output_config_t *config_ptr)
 
bool wlmbe_output_config_equals (bs_dllist_node_t *dlnode_ptr, void *ud_ptr)
 
bool wlmbe_output_config_fnmatches (bs_dllist_node_t *dlnode_ptr, void *ud_ptr)
 
bool wlmbe_output_description_init_from_plist (wlmbe_output_description_t *desc_ptr, bspl_dict_t *dict_ptr)
 
void wlmbe_output_description_fini (wlmbe_output_description_t *desc_ptr)
 
bool wlmbe_output_description_equals (wlmbe_output_description_t *desc_ptr, struct wlr_output *wlr_output_ptr)
 
bool wlmbe_output_description_fnmatches (wlmbe_output_description_t *desc_ptr, struct wlr_output *wlr_output_ptr)
 
struct wlr_output * wlmbe_output_description_first_fnmatch (wlmbe_output_description_t *desc_ptr, struct wlr_output_layout *wlr_output_layout_ptr)
 
static void _wlmbe_output_test_config_parse (bs_test_t *test_ptr)
 
static void _wlmbe_output_test_decode_position (bs_test_t *test_ptr)
 
static void _wlmbe_output_test_decode_mode (bs_test_t *test_ptr)
 
static void _wlmbe_output_test_first_fnmatch (bs_test_t *test_ptr)
 

Variables

static const bspl_enum_desc_t _wlmbe_output_transformation_desc []
 
static const bspl_desc_t _wlmbe_output_description_desc []
 
static const bspl_desc_t _wlmbe_output_config_desc []
 
const bs_test_case_t wlmbe_output_config_test_cases []
 

Detailed Description

Copyright (c) 2025 by Philipp Kaeser kaese.nosp@m.r@gu.nosp@m.bbe.c.nosp@m.h

Function Documentation

◆ _wlmbe_output_mode_decode()

bool _wlmbe_output_mode_decode ( bspl_object_t *  object_ptr,
void *  dest_ptr 
)
static

Decodes a plist "WxH@R" string into wlmbe_output_config_mode_t.

◆ _wlmbe_output_mode_decode_init()

bool _wlmbe_output_mode_decode_init ( void *  dest_ptr)
static

Initializes wlmbe_output_config_mode_t at dest_ptr.

◆ _wlmbe_output_position_decode()

bool _wlmbe_output_position_decode ( bspl_object_t *  object_ptr,
void *  dest_ptr 
)
static

Decodes a plist "x,y" string into wlmbe_output_config_position_t.

◆ _wlmbe_output_position_decode_init()

bool _wlmbe_output_position_decode_init ( void *  dest_ptr)
static

Initializes wlmbe_output_config_position_t at dest_ptr.

◆ _wlmbe_output_test_config_parse()

void _wlmbe_output_test_config_parse ( bs_test_t *  test_ptr)
static

Verifies parsing.

◆ _wlmbe_output_test_decode_mode()

void _wlmbe_output_test_decode_mode ( bs_test_t *  test_ptr)
static

Tests decoding of a position field.

◆ _wlmbe_output_test_decode_position()

void _wlmbe_output_test_decode_position ( bs_test_t *  test_ptr)
static

Tests decoding of a position field.

◆ _wlmbe_output_test_first_fnmatch()

void _wlmbe_output_test_first_fnmatch ( bs_test_t *  test_ptr)
static

◆ wlmbe_dlnode_from_output_config()

bs_dllist_node_t * wlmbe_dlnode_from_output_config ( wlmbe_output_config_t config_ptr)

Returns the base pointer from the wlmbe_output_config_t::dlnode.

◆ wlmbe_output_config_attributes()

wlmbe_output_config_attributes_t * wlmbe_output_config_attributes ( wlmbe_output_config_t config_ptr)

Returns pointer to wlmbe_output_config_t::attributes.

◆ wlmbe_output_config_create_from_plist()

wlmbe_output_config_t * wlmbe_output_config_create_from_plist ( bspl_dict_t *  dict_ptr)

Creates a new output config from the plist dictionnary dict_ptr.

Parameters
dict_ptr
Returns
New output configuration or NULL on error.

◆ wlmbe_output_config_create_from_wlr()

wlmbe_output_config_t * wlmbe_output_config_create_from_wlr ( struct wlr_output *  wlr_output_ptr)

Creates a new output config from wlr_output.

Parameters
wlr_output_ptr
Returns
New output configuration or NULL on error.

◆ wlmbe_output_config_destroy()

void wlmbe_output_config_destroy ( wlmbe_output_config_t config_ptr)

Destroys the output configuration.

◆ wlmbe_output_config_equals()

bool wlmbe_output_config_equals ( bs_dllist_node_t *  dlnode_ptr,
void *  ud_ptr 
)

Returns whether the backend configuration equals the wlr_output attributes.

Parameters
dlnode_ptrTo wlmbe_output_config_t::dlnode.
ud_ptrTo a struct wlr_output.
Returns
true if it equals.

◆ wlmbe_output_config_fnmatches()

bool wlmbe_output_config_fnmatches ( bs_dllist_node_t *  dlnode_ptr,
void *  ud_ptr 
)

Returns if the backend configuration fnmatches the wlr_output attributes.

Parameters
dlnode_ptrTo wlmbe_output_config_t::dlnode.
ud_ptrTo a struct wlr_output.
Returns
true if it matches.

◆ wlmbe_output_config_from_dlnode()

wlmbe_output_config_t * wlmbe_output_config_from_dlnode ( bs_dllist_node_t *  dlnode_ptr)

Returns the base pointer from the wlmbe_output_config_t::dlnode.

◆ wlmbe_output_description_equals()

bool wlmbe_output_description_equals ( wlmbe_output_description_t desc_ptr,
struct wlr_output *  wlr_output_ptr 
)

Returns whether the output description equals the wlr_output's attributes.

Parameters
desc_ptr
wlr_output_ptr
Returns
True if all fields (Name, Manufacturer, Model, Serial) have the same presence in both description and wlr_output_ptr, and (if present) their values are equal.

◆ wlmbe_output_description_fini()

void wlmbe_output_description_fini ( wlmbe_output_description_t desc_ptr)

Un-initializes the output description.

◆ wlmbe_output_description_first_fnmatch()

struct wlr_output * wlmbe_output_description_first_fnmatch ( wlmbe_output_description_t desc_ptr,
struct wlr_output_layout *  wlr_output_layout_ptr 
)

Returns the first wlr_output_layout output that matches desc_ptr.

Parameters
desc_ptr
wlr_output_layout_ptr
Returns
A pointer to the first wlr_output found in wlr_output_layout_ptr that matches desc_ptr. See wlmbe_output_description_fnmatches for matching details.

◆ wlmbe_output_description_fnmatches()

bool wlmbe_output_description_fnmatches ( wlmbe_output_description_t desc_ptr,
struct wlr_output *  wlr_output_ptr 
)

Returns whether the output description matches the wlr_output's attributes.

Parameters
desc_ptr
wlr_output_ptr
Returns
For all fields present in the description, returns the aggregate AND of whether a fnmatch() of the field matches the corresponding wlr_output field.

◆ wlmbe_output_description_init_from_plist()

bool wlmbe_output_description_init_from_plist ( wlmbe_output_description_t desc_ptr,
bspl_dict_t *  dict_ptr 
)

Initializes the output description from the plist dictionary.

Parameters
desc_ptr
dict_ptrDictionary describing the output. It may contain keys and values beyond of what's described in _wlmbe_output_description_desc.

Variable Documentation

◆ _wlmbe_output_config_desc

const bspl_desc_t _wlmbe_output_config_desc[]
static
Initial value:
= {
BSPL_DESC_ENUM(
"Transformation", true, wlmbe_output_config_t,
attributes.transformation, attributes.transformation,
WL_OUTPUT_TRANSFORM_NORMAL, _wlmbe_output_transformation_desc),
BSPL_DESC_DOUBLE(
"Scale", true, wlmbe_output_config_t,
attributes.scale, attributes.scale, 1.0),
BSPL_DESC_BOOL(
"Enabled", false, wlmbe_output_config_t,
attributes.enabled, attributes.enabled, true),
BSPL_DESC_CUSTOM(
"Position", false, wlmbe_output_config_t,
attributes.position, attributes.has_position,
NULL),
BSPL_DESC_CUSTOM(
"Mode", false, wlmbe_output_config_t,
attributes.mode, attributes.has_mode,
NULL),
}
static const bspl_enum_desc_t _wlmbe_output_transformation_desc[]
Definition output_config.c:53
static bool _wlmbe_output_position_decode(bspl_object_t *object_ptr, void *dest_ptr)
Definition output_config.c:365
static bool _wlmbe_output_mode_decode_init(void *dest_ptr)
Definition output_config.c:461
static bool _wlmbe_output_mode_decode(bspl_object_t *object_ptr, void *dest_ptr)
Definition output_config.c:407
static bool _wlmbe_output_position_decode_init(void *dest_ptr)
Definition output_config.c:398
Definition output_config.c:26

Descriptor for the output configuration.

◆ _wlmbe_output_description_desc

const bspl_desc_t _wlmbe_output_description_desc[]
static
Initial value:
= {
BSPL_DESC_STRING(
name_ptr, has_name, "*"),
BSPL_DESC_STRING(
"Manufacturer", false, wlmbe_output_description_t,
manufacturer_ptr, has_manufacturer, ""),
BSPL_DESC_STRING(
"Model", false, wlmbe_output_description_t,
model_ptr, has_model, ""),
BSPL_DESC_STRING(
"Serial", false, wlmbe_output_description_t,
serial_ptr, has_serial, ""),
}
Definition output_config.h:58

[OutputTransformation] Plist descriptor for wlmbe_output_description_t.

◆ _wlmbe_output_transformation_desc

const bspl_enum_desc_t _wlmbe_output_transformation_desc[]
static
Initial value:
= {
BSPL_ENUM("Normal", WL_OUTPUT_TRANSFORM_NORMAL),
BSPL_ENUM("Rotate90", WL_OUTPUT_TRANSFORM_90),
BSPL_ENUM("Rotate180", WL_OUTPUT_TRANSFORM_180),
BSPL_ENUM("Rotate270", WL_OUTPUT_TRANSFORM_270),
BSPL_ENUM("Flip", WL_OUTPUT_TRANSFORM_FLIPPED),
BSPL_ENUM("FlipAndRotate90", WL_OUTPUT_TRANSFORM_FLIPPED_90),
BSPL_ENUM("FlipAndRotate180", WL_OUTPUT_TRANSFORM_FLIPPED_180),
BSPL_ENUM("FlipAndRotate270", WL_OUTPUT_TRANSFORM_FLIPPED_270),
BSPL_ENUM_SENTINEL(),
}

Descriptor for output transformations. [OutputTransformation]

◆ wlmbe_output_config_test_cases

const bs_test_case_t wlmbe_output_config_test_cases[]
Initial value:
= {
{ 1, "config_parse", _wlmbe_output_test_config_parse },
{ 1, "decode_position", _wlmbe_output_test_decode_position },
{ 1, "decode_mode", _wlmbe_output_test_decode_mode },
{ 1, "first_fnmatch", _wlmbe_output_test_first_fnmatch },
{ 0, NULL, NULL }
}
static void _wlmbe_output_test_decode_mode(bs_test_t *test_ptr)
Definition output_config.c:536
static void _wlmbe_output_test_decode_position(bs_test_t *test_ptr)
Definition output_config.c:507
static void _wlmbe_output_test_first_fnmatch(bs_test_t *test_ptr)
Definition output_config.c:578
static void _wlmbe_output_test_config_parse(bs_test_t *test_ptr)
Definition output_config.c:485

Unit tests for the output module.