130 lines
4.7 KiB
C++
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
|