17 std::vector<QLineF> positions;
20 setFlag(ItemStacksBehindParent);
21 setFlag(ItemUsesExtendedStyleOption);
28 QRectF boundingRect()
const override
33 positions.front().x1(), 0, positions.back().x1() - positions.front().x1(),
37 void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget)
43 painter->setRenderHint(QPainter::Antialiasing,
true);
44#if defined(SCORE_DEBUG_REDRAWS)
47 c.setRedF(0.5 *
double(rand()) / RAND_MAX);
48 c.setGreenF(0.5 *
double(rand()) / RAND_MAX);
49 c.setBlueF(0.5 *
double(rand()) / RAND_MAX);
51 painter->setPen(QPen(c, 2));
54 painter->setPen(score::Skin::instance().DarkGray.main.pen_cosmetic);
58 int end = positions.size();
59 for(
int i = 0; i < positions.size(); i++)
61 auto x = positions[i].x1();
62 if(x >= option->exposedRect.left())
68 for(
int i = begin; i < positions.size(); i++)
70 auto x = positions[i].x1();
71 if(x > option->exposedRect.right())
79 x, option->exposedRect.top(), x, option->exposedRect.bottom());
83 if(begin < positions.size() && end - begin > 0)
85 painter->drawLines(positions.data() + begin, end - begin);
89 QLineF& operator[](
int i)
91 if(i >= std::ssize(positions))
93 positions.resize((i + 1) * 1.2);
100 prepareGeometryChange();
103 int type()
const override {
return 90077; }
109 std::vector<QLineF> positions;
112 setFlag(ItemStacksBehindParent);
113 setFlag(ItemUsesExtendedStyleOption);
120 QRectF boundingRect()
const override
122 if(positions.empty())
125 positions.front().x1(), 0, positions.back().x1() - positions.front().x1(),
129 void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget)
132 painter->setRenderHint(QPainter::Antialiasing,
true);
134#if defined(SCORE_DEBUG_REDRAWS)
137 c.setRedF(0.5 *
double(rand()) / RAND_MAX);
138 c.setGreenF(0.5 *
double(rand()) / RAND_MAX);
139 c.setBlueF(0.5 *
double(rand()) / RAND_MAX);
141 painter->setPen(QPen(c, 2));
144 painter->setPen(score::Skin::instance().DarkGray.darker300.pen_cosmetic);
148 int end = positions.size();
149 for(
int i = 0; i < positions.size(); i++)
151 auto x = positions[i].x1();
152 if(x >= option->exposedRect.left())
158 for(
int i = begin; i < positions.size(); i++)
160 auto x = positions[i].x1();
161 if(x > option->exposedRect.right())
168 positions[i].setLine(
169 x, option->exposedRect.top(), x, option->exposedRect.bottom());
173 if(begin < positions.size() && end - begin > 0)
174 painter->drawLines(positions.data() + begin, end - begin);
177 QLineF& operator[](
int i)
179 if(i >= std::ssize(positions))
181 positions.resize((i + 1) * 1.2);
188 prepareGeometryChange();
191 int type()
const override {
return 90078; }