MyScript Interactive Ink SDK  4.0.0
ICanvas.h
1 // Copyright @ MyScript. All rights reserved.
2 
3 #pragma once
4 
5 #include <iink/Engine.h>
6 #include <iink/graphics/Color.h>
7 #include <iink/graphics/ExtraBrushStyle.h>
8 #include <iink/graphics/FillRule.h>
9 #include <iink/graphics/InkPoint.h>
10 #include <iink/graphics/IPath.h>
11 #include <iink/graphics/LineCap.h>
12 #include <iink/graphics/LineJoin.h>
13 #include <iink/graphics/Transform.h>
14 
15 #include <memory>
16 #include <vector>
17 
18 namespace myscript {
19 namespace iink {
20 namespace graphics {
21 
25 class ICanvas
26 {
27 public:
28 
29  virtual ~ICanvas() = default;
30 
42  virtual void startDraw(int x, int y, int width, int height) noexcept {}
43 
49  virtual void endDraw() noexcept {}
50 
56  virtual Transform getTransform() noexcept = 0;
57 
63  virtual void setTransform(const Transform& transform) noexcept = 0;
64 
70  virtual void setStrokeColor(Color color) noexcept = 0;
71 
77  virtual void setStrokeWidth(float width) noexcept = 0;
78 
84  virtual void setStrokeLineCap(LineCap lineCap) noexcept = 0;
85 
91  virtual void setStrokeLineJoin(LineJoin lineJoin) noexcept = 0;
92 
98  virtual void setStrokeMiterLimit(float limit) noexcept = 0;
99 
106  virtual void setStrokeDashArray(const float* array, size_t size) noexcept = 0;
107 
113  virtual void setStrokeDashOffset(float offset) noexcept = 0;
114 
120  virtual void setFillColor(Color color) noexcept = 0;
121 
127  virtual void setFillRule(FillRule rule) noexcept = 0;
128 
137  virtual void setDropShadow(float xOffset, float yOffset, float radius, Color color) noexcept {};
138 
149  virtual void setFontProperties(const String& family, float lineHeight, float size, const String& style, const String& variant, int weight) noexcept = 0;
150 
162  virtual void startGroup(const String& id, float x, float y, float width, float height, bool clipContent) noexcept = 0;
163 
169  virtual void endGroup(const String& id) noexcept = 0;
170 
176  virtual void startItem(const String& id) noexcept = 0;
177 
183  virtual void endItem(const String& id) noexcept = 0;
184 
196  virtual std::shared_ptr<IPath> createPath() noexcept = 0;
197 
203  virtual void drawPath(std::shared_ptr<IPath> path) noexcept = 0;
204 
212  virtual bool isExtraBrushSupported(const String& brushName) noexcept
213  {
214  return false;
215  }
216 
227  virtual void drawStrokeWithExtraBrush(const std::vector<InkPoints>& vInkPoints, unsigned int temporaryPoints, const ExtraBrushStyle& style, bool fullStroke, int64_t id) noexcept {}
228 
237  virtual void drawRectangle(float x, float y, float width, float height) noexcept = 0;
238 
247  virtual void drawLine(float x1, float y1, float x2, float y2) noexcept = 0;
248 
264  virtual void drawObject(const String& url, const String& mimeType, float x, float y, float width, float height) noexcept = 0;
265 
280  virtual void drawText(const String& label, float x, float y, float xmin, float ymin, float xmax, float ymax) noexcept = 0;
281 
298  virtual void blendOffscreen(uint32_t id,
299  float src_x, float src_y, float src_width, float src_height,
300  float dest_x, float dest_y, float dest_width, float dest_height,
301  Color color = 0xFFFFFFFF) noexcept {}
302 };
303 
304 }
305 }
306 }
Definition: String.h:27
Definition: ICanvas.h:26
virtual void startDraw(int x, int y, int width, int height) noexcept
Definition: ICanvas.h:42
virtual void drawObject(const String &url, const String &mimeType, float x, float y, float width, float height) noexcept=0
virtual void startItem(const String &id) noexcept=0
virtual bool isExtraBrushSupported(const String &brushName) noexcept
Definition: ICanvas.h:212
virtual void drawRectangle(float x, float y, float width, float height) noexcept=0
virtual void setDropShadow(float xOffset, float yOffset, float radius, Color color) noexcept
Definition: ICanvas.h:137
virtual void setFillColor(Color color) noexcept=0
virtual void setStrokeDashOffset(float offset) noexcept=0
virtual void setFontProperties(const String &family, float lineHeight, float size, const String &style, const String &variant, int weight) noexcept=0
virtual void setStrokeLineCap(LineCap lineCap) noexcept=0
virtual void setTransform(const Transform &transform) noexcept=0
virtual void endItem(const String &id) noexcept=0
virtual void setStrokeMiterLimit(float limit) noexcept=0
virtual void drawText(const String &label, float x, float y, float xmin, float ymin, float xmax, float ymax) noexcept=0
virtual void startGroup(const String &id, float x, float y, float width, float height, bool clipContent) noexcept=0
virtual void setStrokeDashArray(const float *array, size_t size) noexcept=0
virtual void setStrokeLineJoin(LineJoin lineJoin) noexcept=0
virtual std::shared_ptr< IPath > createPath() noexcept=0
virtual void setStrokeWidth(float width) noexcept=0
virtual void blendOffscreen(uint32_t id, float src_x, float src_y, float src_width, float src_height, float dest_x, float dest_y, float dest_width, float dest_height, Color color=0xFFFFFFFF) noexcept
Definition: ICanvas.h:298
virtual void drawPath(std::shared_ptr< IPath > path) noexcept=0
virtual Transform getTransform() noexcept=0
virtual void endGroup(const String &id) noexcept=0
virtual void setStrokeColor(Color color) noexcept=0
virtual void setFillRule(FillRule rule) noexcept=0
virtual void drawStrokeWithExtraBrush(const std::vector< InkPoints > &vInkPoints, unsigned int temporaryPoints, const ExtraBrushStyle &style, bool fullStroke, int64_t id) noexcept
Definition: ICanvas.h:227
virtual void endDraw() noexcept
Definition: ICanvas.h:49
virtual void drawLine(float x1, float y1, float x2, float y2) noexcept=0
Definition: IPath.h:29
FillRule
Definition: FillRule.h:13
LineJoin
Definition: LineJoin.h:13
LineCap
Definition: LineCap.h:13
Definition: Configuration.h:11
Definition: Color.h:19
Definition: ExtraBrushStyle.h:16
Definition: Transform.h:31