Swiftray  1.0
group-context.h
Go to the documentation of this file.
1 #include <QDebug>
2 #include <QColor>
3 #include <layer.h>
5 #include <iostream>
6 
7 #pragma once
8 
9 namespace Parser {
10 
11 class GroupContext : public BaseContext {
12 public:
13  explicit GroupContext(BaseContext const &parent) :
14  BaseContext(parent), is_sub_group_(false) {
15  data_color_ = Qt::black;
16  layer_ptr_ = nullptr;
17  qInfo() << "<g>" << this;
18  }
19 
20  explicit GroupContext(const GroupContext &parent) :
21  BaseContext(parent), is_sub_group_(true) {
22  data_color_ = Qt::black;
23  layer_ptr_ = nullptr;
24  qInfo() << "<gg>" << this;
25  }
26 
27  void set(svgpp::tag::attribute::data_strength, double val) {
28  qInfo() << "[SVGPP] Set layer data-Strength" << val;
29  layer().setStrength(val);
30  }
31 
32  void set(svgpp::tag::attribute::data_speed, double val) {
33  qInfo() << "[SVGPP] Set layer data-Speed" << val;
34  layer().setSpeed(val);
35  }
36 
37  void set(svgpp::tag::attribute::data_repeat, int val) {
38  layer().setRepeat(val);
39  }
40 
41  void set(svgpp::tag::attribute::data_height, double val) {
42  layer().setTargetHeight(val);
43  }
44 
45  void set(svgpp::tag::attribute::data_diode, int val) {
46  layer().setUseDiode(val);
47  }
48 
49  void set(svgpp::tag::attribute::data_zstep, double val) {
50  layer().setStepHeight(val);
51  }
52 
53  void set(svgpp::tag::attribute::data_name, RangedChar fragment) {
54  layer().setName(QString::fromStdString(std::string(fragment.begin(), fragment.end())));
55  }
56 
57  void set(svgpp::tag::attribute::data_color, RangedChar fragment) {
58  data_color_ = QColor(QString::fromStdString(std::string(fragment.begin(), fragment.end())));
59  }
60 
61  void set(svgpp::tag::attribute::data_config_name, RangedChar fragment) {
62  // TODO (load layer config)
63  qInfo() << "[SVGPP] Layer config strong"
64  << QString::fromStdString(
65  std::string(fragment.begin(), fragment.end()));
66  }
67 
68  Layer &layer() {
69  if (layer_ptr_ == nullptr) {
70  qInfo() << "[SVGPP] Created an empty layer";
71  layer_ptr_ = make_shared<Layer>();
72  }
74  return *layer_ptr_;
75  }
76 
77  void on_exit_element() {
78  if (layer_ptr_ != nullptr) {
79  layer_ptr_->setColor(data_color_);
83 
84  layer_ptr_ = nullptr;
85  data_color_ = Qt::black;
86  }
87  if (is_sub_group_) {
88  qInfo() << "</gg>";
89  } else {
90  qInfo() << "</g>";
91  }
92  }
93 
94  string type() {
95  return "g";
96  }
97 
98  using BaseContext::set;
99  using ObjectContext::set;
100  using StylableContext::set;
101  QColor data_color_;
104 };
105 
106 }
Definition: layer.h:10
void setRepeat(int repeat)
Definition: layer.cpp:154
void setStrength(int strength)
Definition: layer.cpp:150
void setSpeed(int speed)
Definition: layer.cpp:146
void setName(const QString &name)
Definition: layer.cpp:142
void setStepHeight(double step_height)
Definition: layer.cpp:162
void setUseDiode(bool is_diode)
Definition: layer.cpp:158
void setTargetHeight(double height)
Definition: layer.cpp:138
Definition: base-context.h:10
void set(tag::attribute::width, double val)
Definition: object-context.h:9
Definition: group-context.h:11
void set(svgpp::tag::attribute::data_height, double val)
Definition: group-context.h:41
GroupContext(const GroupContext &parent)
Definition: group-context.h:20
void set(svgpp::tag::attribute::data_diode, int val)
Definition: group-context.h:45
void on_exit_element()
Definition: group-context.h:77
void set(svgpp::tag::attribute::data_repeat, int val)
Definition: group-context.h:37
GroupContext(BaseContext const &parent)
Definition: group-context.h:13
void set(svgpp::tag::attribute::data_speed, double val)
Definition: group-context.h:32
void set(svgpp::tag::attribute::data_strength, double val)
Definition: group-context.h:27
void set(svgpp::tag::attribute::data_zstep, double val)
Definition: group-context.h:49
bool is_sub_group_
Definition: group-context.h:103
void set(svgpp::tag::attribute::data_name, RangedChar fragment)
Definition: group-context.h:53
void set(svgpp::tag::attribute::data_config_name, RangedChar fragment)
Definition: group-context.h:61
Layer & layer()
Definition: group-context.h:68
QColor data_color_
Definition: group-context.h:101
LayerPtr layer_ptr_
Definition: group-context.h:102
void set(svgpp::tag::attribute::data_color, RangedChar fragment)
Definition: group-context.h:57
string type()
Definition: group-context.h:94
void set(tag::attribute::width, double val)
Definition: object-context.h:9
void set(svgpp::tag::attribute::display, svgpp::tag::value::none)
Definition: stylable-context.h:150
shared_ptr< Layer > LayerPtr
Definition: layer.h:127
Definition: base-context.h:8
void svgpp_unset_active_layer()
Definition: svgpp-impl.cpp:250
boost::iterator_range< const char * > RangedChar
Definition: svgpp-defs.h:13
void svgpp_add_layer(LayerPtr &layer)
Definition: svgpp-impl.cpp:254
void svgpp_set_active_layer(LayerPtr &layer)
Definition: svgpp-impl.cpp:246