Skip to content

Commit 3182d97

Browse files
committed
Add center point
1 parent fedb777 commit 3182d97

File tree

10 files changed

+28
-15
lines changed

10 files changed

+28
-15
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
### Added
1818

19-
- Add marker top position to draw event
19+
- Add marker top and center position to draw event
2020

2121
## [0.14.0] - 2024-10-03
2222

src/apps/weblib/ts-api/events.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ export interface Area extends Element {
141141
/** Marker element position structure helper for tooltip */
142142
export interface MarkerPosition {
143143
top: Point
144+
center: Point
144145
}
145146

146147
/** Plot marker element of the chart representing a data point. */

src/chart/main/events.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ class Events
250250
struct DataPosition
251251
{
252252
Geom::Point top;
253+
Geom::Point center;
253254
} position;
254255

255256
explicit Marker(const Gen::Marker &marker,

src/chart/rendering/markers/abstractmarker.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,17 @@ AbstractMarker AbstractMarker::createInterpolated(
133133
return aMarker;
134134
}
135135

136+
void AbstractMarker::setDataPosition(const CoordinateSystem &coordSys)
137+
{
138+
dataPosition = {
139+
this->getLabelPos(Styles::MarkerLabel::Position::top,
140+
coordSys)
141+
.end,
142+
this->getLabelPos(Styles::MarkerLabel::Position::center,
143+
coordSys)
144+
.begin};
145+
}
146+
136147
Geom::Rect AbstractMarker::getBoundary() const
137148
{
138149
return Geom::Rect::Boundary(points);

src/chart/rendering/markers/abstractmarker.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class AbstractMarker
5252
const Gen::Marker &marker,
5353
const Gen::ShapeType &shapeType,
5454
::Anim::InterpolateIndex lineIndex);
55+
56+
void setDataPosition(const CoordinateSystem &coordSys);
5557
};
5658

5759
class SingleDrawMarker : public AbstractMarker

src/chart/rendering/markers/circlemarker.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,7 @@ CircleMarker::CircleMarker(const Gen::Marker &marker,
3939
dataRect.size = Geom::Size();
4040
radius = fabs(coordSys.verConvert(r));
4141

42-
dataPosition = {
43-
this->getLabelPos(Styles::MarkerLabel::Position::top,
44-
coordSys)
45-
.end};
42+
setDataPosition(coordSys);
4643
}
4744

4845
}

src/chart/rendering/markers/connectingmarker.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,7 @@ ConnectingMarker::ConnectingMarker(const DrawingContext &ctx,
159159
dataRect.pos = isLine ? points[2] : points[1];
160160
dataRect.size = Geom::Size{points[2] - dataRect.pos};
161161

162-
dataPosition = {
163-
this->getLabelPos(Styles::MarkerLabel::Position::top,
164-
ctx.coordSys)
165-
.end};
162+
setDataPosition(ctx.coordSys);
166163
}
167164

168165
const Gen::Marker *ConnectingMarker::getPrev(

src/chart/rendering/markers/rectanglemarker.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,7 @@ RectangleMarker::RectangleMarker(const Gen::Marker &marker,
8585
dataRect.size = Geom::Size{points[2] - points[0]};
8686
radius = 0;
8787

88-
dataPosition = {
89-
this->getLabelPos(Styles::MarkerLabel::Position::top,
90-
coordSys)
91-
.end};
88+
setDataPosition(coordSys);
9289
}
9390

9491
}

test/e2e/tests/features.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"refs": ["ba17dad"]
1515
},
1616
"events/drawing_events": {
17-
"refs": ["6873391"]
17+
"refs": ["c3169b0"]
1818
},
1919
"subtitle_caption": {
2020
"refs": ["f6dabf0"]

test/e2e/tests/features/events/drawing_events.mjs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ function overlay(e, chart) {
3434
ctx.arc(top.x, top.y, 2, 0, 2 * Math.PI)
3535
ctx.fill()
3636
ctx.restore()
37+
const center = e.target.position.center
38+
ctx.save()
39+
ctx.fillStyle = '#000000F0'
40+
ctx.moveTo(center.x, center.y)
41+
ctx.arc(center.x, center.y, 2, 0, 2 * Math.PI)
42+
ctx.fill()
43+
ctx.restore()
3744
}
3845
ctx.save()
3946
ctx.fillStyle = '#FF00000F'
@@ -117,7 +124,7 @@ function setupEvents(chart) {
117124
})
118125
})
119126
chart.on('draw-complete', (e) => {
120-
const references = [1393906603, 585199799]
127+
const references = [329751708, -2021415194]
121128
receivedEvents.push(e)
122129
const result = JSON.stringify(receivedEvents, null, 2)
123130
const hash = (str) =>

0 commit comments

Comments
 (0)