Skip to content

Commit 9405570

Browse files
authored
Merge pull request #554 from vizzuhq/resolution_v2
Canvas line resolution
2 parents bf9ff70 + 523e8e9 commit 9405570

25 files changed

+441
-441
lines changed

src/apps/weblib/cinterface.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ void vizzu_wheel(APIHandles::Chart chart,
178178

179179
void vizzu_update(APIHandles::Chart chart, double timeInMSecs)
180180
{
181-
return Interface::getInstance().update(chart, timeInMSecs);
181+
Interface::getInstance().update(chart, timeInMSecs);
182182
}
183183

184184
void vizzu_render(APIHandles::Chart chart,
@@ -192,6 +192,13 @@ void vizzu_render(APIHandles::Chart chart,
192192
height);
193193
}
194194

195+
void vizzu_setLineResolution(APIHandles::Canvas canvas,
196+
double dMax,
197+
double hMax)
198+
{
199+
Interface::getInstance().setLineResolution(canvas, dMax, hMax);
200+
}
201+
195202
const char *style_getList() { return Interface::getStyleList(); }
196203

197204
void style_setValue(APIHandles::Chart chart,

src/apps/weblib/cinterface.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ extern void vizzu_render(APIHandles::Chart chart,
6868
APIHandles::Canvas canvas,
6969
double width,
7070
double height);
71+
extern void vizzu_setLineResolution(APIHandles::Canvas canvas,
72+
double dMax,
73+
double hMax);
74+
7175
extern const char *vizzu_errorMessage(
7276
APIHandles::Exception exceptionPtr,
7377
const std::type_info *typeinfo);

src/apps/weblib/interface.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,15 @@ void Interface::render(ObjectRegistryHandle chart,
403403
ptr->frameEnd();
404404
}
405405

406+
void Interface::setLineResolution(ObjectRegistryHandle canvas,
407+
double dMax,
408+
double hMax)
409+
{
410+
static_cast<Draw::Painter *>(
411+
objects.get<Gfx::ICanvas>(canvas)->getPainter())
412+
->setPathSamplerOptions({dMax, hMax});
413+
}
414+
406415
void Interface::pointerDown(ObjectRegistryHandle chart,
407416
ObjectRegistryHandle,
408417
int pointerId,

src/apps/weblib/interface.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ class Interface
5555
ObjectRegistryHandle canvas,
5656
double width,
5757
double height);
58+
void setLineResolution(ObjectRegistryHandle canvas,
59+
double dMax,
60+
double hMax);
5861

5962
ObjectRegistryHandle storeAnim(ObjectRegistryHandle chart);
6063
void restoreAnim(ObjectRegistryHandle chart,

src/apps/weblib/ts-api/cvizzu.types.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ export interface CVizzu {
9191
_vizzu_pointerLeave(chart: CChartPtr, canvas: CCanvasPtr, pointerId: number): void
9292
_vizzu_wheel(chart: CChartPtr, canvas: CCanvasPtr, delta: number): void
9393
_vizzu_setLogging(enable: boolean): void
94-
_vizzu_update(chart: CChartPtr, time: number): void
94+
_vizzu_update(chart: CChartPtr, time: number): CString
95+
_vizzu_setLineResolution(canvas: CCanvasPtr, dMax: number, hMax: number): void
9596
_vizzu_render(chart: CChartPtr, canvas: CCanvasPtr, width: number, height: number): void
9697

9798
_vizzu_errorMessage(exceptionPtr: CException, typeinfo: CTypeInfo): CString

src/base/gfx/pathsampler.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ void PathSampler::path(const Geom::Point &pConv0,
3232
auto height = 2 * area / (pConv1 - pConv0).abs();
3333

3434
auto needMore =
35-
height > hMax
35+
height > options.hMax
3636
|| ((pConv1 - pConv0).sqrAbs() < (pConv - pConv0).sqrAbs())
3737
|| ((pConv1 - pConv0).sqrAbs() < (pConv - pConv1).sqrAbs());
3838

3939
if (needMore) {
40-
if ((pConv - pConv0).sqrAbs() > dMax)
40+
if ((pConv - pConv0).sqrAbs() > options.dMax)
4141
path(pConv0, pConv, i0, i, recurseCnt + 1);
4242
}
4343

4444
addPoint(pConv);
4545

4646
if (needMore) {
47-
if ((pConv - pConv1).sqrAbs() > dMax)
47+
if ((pConv - pConv1).sqrAbs() > options.dMax)
4848
path(pConv, pConv1, i, i1, recurseCnt + 1);
4949
}
5050
}

src/base/gfx/pathsampler.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,17 @@ namespace Gfx
1111
class PathSampler
1212
{
1313
public:
14-
PathSampler(double dMax, double hMax) : dMax(dMax), hMax(hMax) {}
14+
struct Options
15+
{
16+
double dMax;
17+
double hMax;
18+
};
19+
explicit PathSampler(const Options &options) : options(options) {}
1520

1621
virtual ~PathSampler() = default;
1722

1823
protected:
19-
double dMax;
20-
double hMax;
24+
Options options;
2125

2226
virtual void addPoint(const Geom::Point &) = 0;
2327
virtual Geom::Point getPoint(double f) = 0;

src/chart/main/chart.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "base/anim/control.h"
99
#include "base/gfx/canvas.h"
10+
#include "base/gfx/pathsampler.h"
1011
#include "base/util/eventdispatcher.h"
1112
#include "chart/animator/animator.h"
1213
#include "chart/generator/plotptr.h"

src/chart/rendering/drawplot.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ void DrawPlot::drawPlotArea(Gfx::ICanvas &canvas,
5555
auto rect = Geom::Rect::Ident();
5656
painter.setPolygonToCircleFactor(0.0);
5757
painter.setPolygonStraightFactor(0.0);
58-
painter.setResMode(ResolutionMode::High);
5958

6059
if (clip) { painter.drawPolygon(rect.points(), true); }
6160
else {

src/chart/rendering/markerrenderer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ void MarkerRenderer::draw(Gfx::ICanvas &canvas,
225225
: static_cast<double>(abstractMarker.morphToCircle));
226226
painter.setPolygonStraightFactor(
227227
static_cast<double>(abstractMarker.linear));
228-
painter.setResMode(ResolutionMode::High);
229228

230229
auto colors = getColor(abstractMarker, factor);
231230

0 commit comments

Comments
 (0)