CYD-UI
A C++ library for building native graphic user interfaces
Loading...
Searching...
No Matches
style_setters_detail.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define STYLE_BASE_FIELD(NAME)
 
#define STYLE_SETTER(NAME, TYPE, ...)
 
#define INNER_STYLE_SETTER(NAME, TYPE, INNER_NAME, INNER_TYPE, ...)
 
#define FOUR_SIDED_SETTER(NAME, TYPE, ...)
 
#define FOUR_SIDED_SETTER_POLY(NAME, TYPE, DTYPE, ...)
 
#define FOUR_SIDED_DIMENSIONAL_OVERLOADS(NAME)
 
#define FOUR_CORNERED_SETTER(NAME, TYPE, ...)
 
#define DIMENSIONAL_OVERLOADS(DIMENSION_NAME)
 
#define FOUR_CORNERED_DIMENSIONAL_OVERLOADS(NAME)
 

Macro Definition Documentation

◆ DIMENSIONAL_OVERLOADS

#define DIMENSIONAL_OVERLOADS ( DIMENSION_NAME)
Value:
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(const dimension_parameter_t& value) { \
DIMENSION_NAME(dimension_t{dimensions::screen_measure{0} + value}); \
} \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(float value) { \
DIMENSION_NAME(dimension_t{dimensions::screen_measure{value}}); \
} \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(double value) { \
DIMENSION_NAME(dimension_t{dimensions::screen_measure{value}}); \
} \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(int value) { \
DIMENSION_NAME(dimension_t{dimensions::screen_measure{static_cast<double>(value)}}); \
} \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(dimension_t& value) { \
DIMENSION_NAME(dimension_t{dimensions::screen_measure{0} + value}); \
} \
template <typename DimType> \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(const DimType& value) { \
DIMENSION_NAME(dimension_t{value}); \
} \
template <typename DimType> \
STYLE_SETTER_RETURN_TYPE DIMENSION_NAME(DimType&& value) { \
DIMENSION_NAME(dimension_t{std::forward<DimType>(value)}); \
}
#define STYLE_SETTER_RETURN_TYPE
#define STYLE_SETTER_RETURN_EXPR

Definition at line 106 of file style_setters_detail.h.

◆ FOUR_CORNERED_DIMENSIONAL_OVERLOADS

#define FOUR_CORNERED_DIMENSIONAL_OVERLOADS ( NAME)
Value:
DIMENSIONAL_OVERLOADS(NAME##_top_left) \
DIMENSIONAL_OVERLOADS(NAME##_top_right) \
DIMENSIONAL_OVERLOADS(NAME##_bottom_right) \
DIMENSIONAL_OVERLOADS(NAME##_bottom_left) \
DIMENSIONAL_OVERLOADS(NAME)
#define DIMENSIONAL_OVERLOADS(DIMENSION_NAME)

Definition at line 138 of file style_setters_detail.h.

◆ FOUR_CORNERED_SETTER

#define FOUR_CORNERED_SETTER ( NAME,
TYPE,
... )
Value:
INNER_STYLE_SETTER(NAME, four_cornered_property<TYPE>, top_left, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_cornered_property<TYPE>, top_right, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_cornered_property<TYPE>, bottom_right, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_cornered_property<TYPE>, bottom_left, TYPE, __VA_ARGS__) \
STYLE_SETTER_RETURN_TYPE NAME(const TYPE& value) { \
NAME##_top_left(value); \
NAME##_top_right(value); \
NAME##_bottom_right(value); \
NAME##_bottom_left(value); \
} \
STYLE_SETTER_RETURN_TYPE NAME(TYPE&& value) { \
NAME##_top_left(value); \
NAME##_top_right(value); \
NAME##_bottom_right(value); \
NAME##_bottom_left(value); \
}
#define INNER_STYLE_SETTER(NAME, TYPE, INNER_NAME, INNER_TYPE,...)

Definition at line 86 of file style_setters_detail.h.

◆ FOUR_SIDED_DIMENSIONAL_OVERLOADS

#define FOUR_SIDED_DIMENSIONAL_OVERLOADS ( NAME)
Value:
DIMENSIONAL_OVERLOADS(NAME##_top) \
DIMENSIONAL_OVERLOADS(NAME##_right) \
DIMENSIONAL_OVERLOADS(NAME##_bottom) \
DIMENSIONAL_OVERLOADS(NAME##_left) \
DIMENSIONAL_OVERLOADS(NAME)

Definition at line 79 of file style_setters_detail.h.

◆ FOUR_SIDED_SETTER

#define FOUR_SIDED_SETTER ( NAME,
TYPE,
... )
Value:
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, top, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, right, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, bottom, TYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, left, TYPE, __VA_ARGS__) \
STYLE_SETTER_RETURN_TYPE NAME(const TYPE& value) { \
NAME##_top(value); \
NAME##_right(value); \
NAME##_bottom(value); \
NAME##_left(value); \
} \
STYLE_SETTER_RETURN_TYPE NAME(TYPE&& value) { \
NAME##_top(value); \
NAME##_right(value); \
NAME##_bottom(value); \
NAME##_left(value); \
}

Definition at line 41 of file style_setters_detail.h.

◆ FOUR_SIDED_SETTER_POLY

#define FOUR_SIDED_SETTER_POLY ( NAME,
TYPE,
DTYPE,
... )
Value:
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, top, DTYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, right, DTYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, bottom, DTYPE, __VA_ARGS__) \
INNER_STYLE_SETTER(NAME, four_sided_property<TYPE>, left, DTYPE, __VA_ARGS__) \
STYLE_SETTER_RETURN_TYPE NAME(const DTYPE& value) { \
NAME##_top(value); \
NAME##_right(value); \
NAME##_bottom(value); \
NAME##_left(value); \
} \
STYLE_SETTER_RETURN_TYPE NAME(DTYPE&& value) { \
NAME##_top(value); \
NAME##_right(value); \
NAME##_bottom(value); \
NAME##_left(value); \
}

Definition at line 60 of file style_setters_detail.h.

◆ INNER_STYLE_SETTER

#define INNER_STYLE_SETTER ( NAME,
TYPE,
INNER_NAME,
INNER_TYPE,
... )
Value:
STYLE_SETTER_RETURN_TYPE NAME##_##INNER_NAME(const INNER_TYPE& value) { \
static const auto* field = \
refl::type_info::from<style_base_t>().field_by_offset(offsetof(style_base_t, NAME)).value(); \
static const auto* inner_field = \
field->type().field_by_offset(offsetof(TYPE, INNER_NAME)).value(); \
auto val = [&] -> auto __VA_ARGS__(); \
this->get_style_data().set_base_field_override({field, inner_field}, refl::any::make(val)); \
} \
STYLE_SETTER_RETURN_TYPE NAME##_##INNER_NAME(INNER_TYPE&& value) { \
static const auto* field = \
refl::type_info::from<style_base_t>().field_by_offset(offsetof(style_base_t, NAME)).value(); \
static const auto* inner_field = \
field->type().field_by_offset(offsetof(TYPE, INNER_NAME)).value(); \
auto val = [&] -> auto __VA_ARGS__(); \
this->get_style_data().set_base_field_override({field, inner_field}, refl::any::make(val)); \
}

Definition at line 21 of file style_setters_detail.h.

◆ STYLE_BASE_FIELD

#define STYLE_BASE_FIELD ( NAME)
Value:
refl::type_info::from<style_base_t>() \
.field_by_offset(offsetof(cydui::components::style_base_t, NAME)) \
.value()

Definition at line 2 of file style_setters_detail.h.

◆ STYLE_SETTER

#define STYLE_SETTER ( NAME,
TYPE,
... )
Value:
STYLE_SETTER_RETURN_TYPE NAME(const TYPE& value) { \
static const auto* field = STYLE_BASE_FIELD(NAME); \
auto val = [&] -> auto __VA_ARGS__(); \
this->get_style_data().set_base_field_override(field, refl::any::make(val)); \
} \
STYLE_SETTER_RETURN_TYPE NAME(TYPE&& value) { \
static const auto* field = STYLE_BASE_FIELD(NAME); \
auto val = [&] -> auto __VA_ARGS__(); \
this->get_style_data().set_base_field_override(field, refl::any::make(val)); \
}
#define STYLE_BASE_FIELD(NAME)

Definition at line 7 of file style_setters_detail.h.