MyScript Interactive Ink SDK  3.1.3
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/FillRule.h>
8 #include <iink/graphics/InkPoint.h>
9 #include <iink/graphics/IPath.h>
10 #include <iink/graphics/LineCap.h>
11 #include <iink/graphics/LineJoin.h>
12 #include <iink/graphics/Transform.h>
13 
14 #include <memory>
15 #include <vector>
16 
17 namespace myscript {
18 namespace iink {
19 namespace graphics {
20 
24 class ICanvas
25 {
26 public:
27 
28  virtual ~ICanvas() = default;
29 
41  virtual void startDraw(int x, int y, int width, int height) noexcept {}
42 
48  virtual void endDraw() noexcept {}
49 
55  virtual Transform getTransform() noexcept = 0;
56 
62  virtual void setTransform(const Transform& transform) noexcept = 0;
63 
69  virtual void setStrokeColor(Color color) noexcept = 0;
70 
76  virtual void setStrokeWidth(float width) noexcept = 0;
77 
83  virtual void setStrokeLineCap(LineCap lineCap) noexcept = 0;
84 
90  virtual void setStrokeLineJoin(LineJoin lineJoin) noexcept = 0;
91 
97  virtual void setStrokeMiterLimit(float limit) noexcept = 0;
98 
105  virtual void setStrokeDashArray(const float* array, size_t size) noexcept = 0;
106 
112  virtual void setStrokeDashOffset(float offset) noexcept = 0;
113 
119  virtual void setFillColor(Color color) noexcept = 0;
120 
126  virtual void setFillRule(FillRule rule) noexcept = 0;
127 
136  virtual void setDropShadow(float xOffset, float yOffset, float radius, Color color) noexcept {};
137 
148  virtual void setFontProperties(const String& family, float lineHeight, float size, const String& style, const String& variant, int weight) noexcept = 0;
149 
161  virtual void startGroup(const String& id, float x, float y, float width, float height, bool clipContent) noexcept = 0;
162 
168  virtual void endGroup(const String& id) noexcept = 0;
169 
175  virtual void startItem(const String& id) noexcept = 0;
176 
182  virtual void endItem(const String& id) noexcept = 0;
183 
195  virtual std::shared_ptr<IPath> createPath() noexcept = 0;
196 
202  virtual void drawPath(std::shared_ptr<IPath> path) noexcept = 0;
203 
211  virtual bool isExtraBrushSupported(const String& brushName) noexcept
212  {
213  return false;
214  }
215 
227  virtual void drawStrokeWithExtraBrush(const std::vector<InkPoints>& vInkPoints, unsigned int temporaryPoints, float strokeWidth, const String& brushName, 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:30
Definition: ICanvas.h:25
virtual void startDraw(int x, int y, int width, int height) noexcept
Definition: ICanvas.h:41
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:211
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:136
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 drawStrokeWithExtraBrush(const std::vector< InkPoints > &vInkPoints, unsigned int temporaryPoints, float strokeWidth, const String &brushName, bool fullStroke, int64_t id) noexcept
Definition: ICanvas.h:227
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 endDraw() noexcept
Definition: ICanvas.h:48
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: Transform.h:31