Files
autosample/vendor/lunasvg/source/svglayoutstate.h

130 lines
4.7 KiB
C++

#ifndef LUNASVG_SVGLAYOUTSTATE_H
#define LUNASVG_SVGLAYOUTSTATE_H
#include "svgproperty.h"
namespace lunasvg {
class SVGLayoutState {
public:
SVGLayoutState() = default;
SVGLayoutState(const SVGLayoutState& parent, const SVGElement* element);
const SVGLayoutState* parent() const { return m_parent; }
const SVGElement* element() const { return m_element; }
const Paint& fill() const { return m_fill; }
const Paint& stroke() const { return m_stroke; }
const Color& color() const { return m_color; }
const Color& stop_color() const { return m_stop_color; }
float opacity() const { return m_opacity; }
float stop_opacity() const { return m_stop_opacity; }
float fill_opacity() const { return m_fill_opacity; }
float stroke_opacity() const { return m_stroke_opacity; }
float stroke_miterlimit() const { return m_stroke_miterlimit; }
float font_size() const { return m_font_size; }
const Length& letter_spacing() const { return m_letter_spacing; }
const Length& word_spacing() const { return m_word_spacing; }
const BaselineShift& baseline_shift() const { return m_baseline_shift; }
const Length& stroke_width() const { return m_stroke_width; }
const Length& stroke_dashoffset() const { return m_stroke_dashoffset; }
const LengthList& stroke_dasharray() const { return m_stroke_dasharray; }
LineCap stroke_linecap() const { return m_stroke_linecap; }
LineJoin stroke_linejoin() const { return m_stroke_linejoin; }
FillRule fill_rule() const { return m_fill_rule; }
FillRule clip_rule() const { return m_clip_rule; }
FontWeight font_weight() const { return m_font_weight; }
FontStyle font_style() const { return m_font_style; }
AlignmentBaseline alignment_baseline() const { return m_alignment_baseline; }
DominantBaseline dominant_baseline() const { return m_dominant_baseline; }
TextAnchor text_anchor() const { return m_text_anchor; }
WhiteSpace white_space() const { return m_white_space; }
WritingMode writing_mode() const { return m_writing_mode; }
TextOrientation text_orientation() const { return m_text_orientation; }
Direction direction() const { return m_direction; }
Display display() const { return m_display; }
Visibility visibility() const { return m_visibility; }
Overflow overflow() const { return m_overflow; }
PointerEvents pointer_events() const { return m_pointer_events; }
MaskType mask_type() const { return m_mask_type; }
const std::string& mask() const { return m_mask; }
const std::string& clip_path() const { return m_clip_path; }
const std::string& marker_start() const { return m_marker_start; }
const std::string& marker_mid() const { return m_marker_mid; }
const std::string& marker_end() const { return m_marker_end; }
const std::string& font_family() const { return m_font_family; }
Font font() const;
private:
const SVGLayoutState* m_parent = nullptr;
const SVGElement* m_element = nullptr;
Paint m_fill{Color::Black};
Paint m_stroke{Color::Transparent};
Color m_color = Color::Black;
Color m_stop_color = Color::Black;
float m_opacity = 1.f;
float m_fill_opacity = 1.f;
float m_stroke_opacity = 1.f;
float m_stop_opacity = 1.f;
float m_stroke_miterlimit = 4.f;
float m_font_size = 12.f;
Length m_letter_spacing{0.f, LengthUnits::None};
Length m_word_spacing{0.f, LengthUnits::None};
BaselineShift m_baseline_shift;
Length m_stroke_width{1.f, LengthUnits::None};
Length m_stroke_dashoffset{0.f, LengthUnits::None};
LengthList m_stroke_dasharray;
LineCap m_stroke_linecap = LineCap::Butt;
LineJoin m_stroke_linejoin = LineJoin::Miter;
FillRule m_fill_rule = FillRule::NonZero;
FillRule m_clip_rule = FillRule::NonZero;
FontWeight m_font_weight = FontWeight::Normal;
FontStyle m_font_style = FontStyle::Normal;
AlignmentBaseline m_alignment_baseline = AlignmentBaseline::Auto;
DominantBaseline m_dominant_baseline = DominantBaseline::Auto;
TextAnchor m_text_anchor = TextAnchor::Start;
WhiteSpace m_white_space = WhiteSpace::Default;
WritingMode m_writing_mode = WritingMode::Horizontal;
TextOrientation m_text_orientation = TextOrientation::Mixed;
Direction m_direction = Direction::Ltr;
Display m_display = Display::Inline;
Visibility m_visibility = Visibility::Visible;
Overflow m_overflow = Overflow::Visible;
PointerEvents m_pointer_events = PointerEvents::Auto;
MaskType m_mask_type = MaskType::Luminance;
std::string m_mask;
std::string m_clip_path;
std::string m_marker_start;
std::string m_marker_mid;
std::string m_marker_end;
std::string m_font_family;
};
} // namespace lunasvg
#endif // LUNASVG_SVGLAYOUTSTATE_H