35#include "style_get_value.h" 
   36#include "property_hash.h" 
   46#if defined(MICROSOFT_FINALLY_IMPLEMENTED_CONSTEXPR_TEN_YEARS_AFTER_EVERYONE_ELSE) 
   48        class PropertyNameConst
 
   51                template<std::
size_t Length>
 
   52                constexpr PropertyNameConst(
const char(&text)[Length]) : text(text), 
length(Length - 1) { }
 
   54                constexpr char operator[](std::size_t index)
 const { 
return index < 
length ? text[index] : 
throw std::out_of_range(
"PropertyNameConst operator[] out of bounds"); }
 
   55                constexpr std::size_t size()
 const { 
return length; }
 
   56                constexpr std::size_t 
hash()
 const { 
return hash(2166136261U, 0); }
 
   59                constexpr std::size_t 
hash(std::size_t value, std::size_t index)
 const { 
return index == 
length ? value : 
hash((value ^ (std::size_t)text[index]) * 16777619U, index + 1); }
 
   61                const char * 
const text;
 
2D Graphics Canvas
Definition canvas.h:72
Font class.
Definition font.h:60
Definition property_hash.h:35
Style value resolver.
Definition style_cascade.h:68
int array_size(PropertyHash hash) const
Value array size for the property.
StyleCascade(std::vector< Style * > cascade, const StyleCascade *parent=nullptr)
Definition style_cascade.h:71
StyleGetValue compute_resolution(const StyleGetValue &resolution) const
Convert resolution to dots per px unit (pixel ratio scale)
StyleCascade()
Definition style_cascade.h:70
StyleGetValue cascade_value(PropertyHash hash) const
Find the first declared value in the cascade for the specified property.
void render_border(Canvas &canvas, const ViewGeometry &geometry) const
Render styled border.
void render_background(Canvas &canvas, const ViewGeometry &geometry) const
Render styled background.
StyleGetValue compute_frequency(const StyleGetValue &frequency) const
Convert frequency to Hz.
StyleGetValue computed_value(PropertyHash hash) const
StyleGetValue compute_length(const StyleGetValue &length) const
Convert length into px (device independent pixel) units.
Font font(Canvas &canvas) const
Font used by this style cascade.
StyleGetValue specified_value(PropertyHash hash) const
Resolve any inheritance or initial values for the cascade value.
StyleGetValue compute_time(const StyleGetValue &time) const
Convert time to seconds.
StyleGetValue compute_angle(const StyleGetValue &angle) const
Convert angle into radians.
std::vector< Style * > cascade
Property sets to be examined.
Definition style_cascade.h:74
const StyleCascade * parent
Parent cascade used for inheritance.
Definition style_cascade.h:77
Style value returned by style classes.
Definition style_get_value.h:40
Definition view_geometry.h:39
@ length
value is a keyword
@ resolution
value is a frequency
@ frequency
value is a time