2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
20 * @brief This is the header file for the _Canvas class.
24 #ifndef _FGRP_INTERNAL_CANVAS_H_
25 #define _FGRP_INTERNAL_CANVAS_H_
27 #include <FGrpRectangle.h>
28 #include <FGrpFloatRectangle.h>
30 #include <FGrpColor.h>
32 #include "FGrp_CanvasImpl.h"
34 #include "util/FGrp_UtilPixmap.h"
35 #include "util/FGrp_UtilScratchpad.h"
36 #include "util/FGrp_UtilTemplate.h"
37 #include "util/FGrp_Util.h"
40 namespace Tizen { namespace Ui {namespace Animations
42 class _VisualElementCanvas;
43 }}} // Tizen::Ui::Animations
45 namespace Tizen { namespace Graphics
62 typedef unsigned long SystemPixel;
67 BLEND_COPY = BLEND_MIN,
74 virtual ~_Canvas(void);
76 result Construct(void);
77 result Construct(const Rectangle& rect);
78 result Construct(Handle windowHandle);
79 result Construct(Handle windowHandle, const Rectangle& rect);
80 result Construct(_Canvas* pSourceCanvas, const Rectangle& subRegion);
81 result Construct(const BufferInfo& bufferInfo);
83 bool IsValid(void) const;
86 result Clear(const Rectangle& rect);
88 result Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
89 result Copy(const Rectangle& destRect, const _Canvas& srcCanvas, const Rectangle& srcRect);
90 result Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect, CompositeMode compositeMode);
91 result CopyReverse(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
93 result SetLineStyle(LineStyle style);
94 LineStyle GetLineStyle(void) const;
96 result SetLineWidth(int width, float auxWidth);
97 result SetLineWidth(float width); // floating-point version
98 int GetLineWidth(void) const;
100 result SetLineCapStyle(LineCapStyle lineCapStyle);
101 LineCapStyle GetLineCapStyle(void) const;
102 result SetLineJoinStyle(LineJoinStyle lineJoinStyle);
103 LineJoinStyle GetLineJoinStyle(void) const;
105 result SetDashPattern(const Tizen::Graphics::_Util::AccumList<double>& dashValueList, double offset);
107 void SetDrawingQuality(BitmapDrawingQuality quality);
108 BitmapDrawingQuality GetDrawingQuality(void) const;
110 void SetCompositeMode(CompositeMode compositeMode);
111 CompositeMode GetCompositeMode(void) const;
113 result GetPixel(const Point& point, Color& color) const;
115 result SetPixel(const _Util::Point<int>& point);
116 result SetPixel(const _Util::Point<double>& point); // floating-point version
118 result DrawRectangle(const _Util::Rectangle<int>& rect);
119 result DrawRectangle(const _Util::Rectangle<double>& rect); // floating-point version
120 result FillRectangle(const Color& color, const Rectangle& rect);
121 result FillRectangle(const Color& color, const _Util::Rectangle<int>& rect);
122 result FillRectangle(const Color& color, const _Util::Rectangle<double>& rect); // floating-point version
124 result DrawRoundRectangle(const _Util::Rectangle<int>& rect, const _Util::Dimension<int>& arcDim);
125 result DrawRoundRectangle(const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim); // floating-point version
126 result FillRoundRectangle(const Color& color, const _Util::Rectangle<int>& rect, const _Util::Dimension<int>& arcDim);
127 result FillRoundRectangle(const Color& color, const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim); // floating-point version
129 result DrawEllipse(const _Util::Rectangle<int>& rect);
130 result DrawEllipse(const _Util::Rectangle<double>& rect); // floating-point version
131 result FillEllipse(const Color& color, const _Util::Rectangle<int>& rect);
132 result FillEllipse(const Color& color, const _Util::Rectangle<double>& rect); // floating-point version
134 result DrawArc(const _Util::Rectangle<double>& rect, double startAngle, double endAngle, ArcStyle arcStyle); // floating-point version
136 result DrawTriangle(const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3); // floating-point version
137 result FillTriangle(const Color& color, const _Util::Point<int>& point1, const _Util::Point<int>& point2, const _Util::Point<int>& point3);
138 result FillTriangle(const Color& color, const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3); // floating-point version
140 result DrawLine(const _Util::Point<int>& point1, const _Util::Point<int>& point2);
141 result DrawLine(const _Util::Point<double>& point1, const _Util::Point<double>& point2); // floating-point version
142 result DrawPolyline(const _Util::Point<double>* pPoints, unsigned int pointCount);
143 result DrawPolygon(const _Util::Point<double>* pPoints, unsigned int pointCount);
144 result FillPolygon(const Color& color, const _Util::Point<double>* pPoints, unsigned int pointCount);
146 result SetFont(const _Font& font);
148 result SetPriorityFont(const _Font& font);
149 void ResetPriorityFont(void);
151 result DrawText(const Point& point, const Tizen::Base::String& text);
152 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
153 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
155 result DrawBitmap(const _Util::Point<double>& point, const _Bitmap& bitmap);
156 result DrawBitmap(const _Util::Rectangle<double>& rect, const _Bitmap& bitmap);
157 result DrawBitmap(const _Util::Rectangle<double>& destRect, const _Bitmap& srcBitmap, const _Util::Rectangle<double>& srcRect);
158 result DrawBitmapForNinePatchedBitmap(const Rectangle& destRect, const _Bitmap& srcBitmap, const Rectangle& srcRect, bool copyOnly = false);
159 result DrawBitmap(const _Util::Point<double>& point, const _Bitmap& bitmap, FlipDirection dir);
160 result DrawBitmap(const _Util::Point<double>& point, const _Bitmap& bitmap, const _Util::Point<double>& pivot, double degree);
161 result DrawNinePatchedBitmap(const Rectangle& rect, const _Bitmap& bitmap);
162 result DrawNineTiledBitmap(const Rectangle& rect, const _Bitmap& bitmap);
165 result Show(const Rectangle& rect);
167 Rectangle GetBounds(void) const;
169 result SetClipBounds(const Rectangle& rect);
170 Rectangle GetClipBounds(void) const;
172 result Lock(BufferInfo& info, long timeout = INFINITE);
175 void SetForegroundColor(const Color& color);
176 Color GetForegroundColor(void);
177 void SetBackgroundColor(const Color& color);
178 Color GetBackgroundColor(void);
180 void SetForegroundOpacity(int level);
181 int GetForegroundOpacity(void);
182 void SetBackgroundOpacity(int level);
183 int GetBackgroundOpacity(void);
185 result SetPosition(int x, int y);
187 void SetAntialiasingEnabled(bool enable);
188 bool IsAntialiasingEnabled(void) const;
190 static _Canvas* GetInstance(_CanvasImpl& canvas);
191 static const _Canvas* GetInstance(const _CanvasImpl& canvas);
194 bool _IsWindowCanvas(void) const;
195 result _SetPosition(int x, int y);
196 int _GetAlphaAttenuation(const _Bitmap& bitmap) const;
198 void _SetBlendOption(BlendOption);
199 BlendOption _GetBlendOption(void) const;
202 _Canvas(const _Canvas& canvas);
203 _Canvas& operator =(const _Canvas& value);
205 void __InitFgBgColorFromTheme(void);
207 void __ComposeFgColor(void);
208 void __ComposeBgColor(void);
210 void __GetClipBounds(Rectangle& rect) const;
212 result __Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
213 result __Copy(const Rectangle& destRect, const _Canvas& srcCanvas, const Rectangle& srcRect);
215 result __FillRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rectangle);
217 result __FillRoundRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim);
219 result __FillEllipse(unsigned long composedColor, const _Util::Rectangle<double>& bounds);
221 result __FillTriangle(unsigned long composedColor, const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3);
223 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
224 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
226 bool __IsInClipBounds(const _Util::Rectangle<double>& bounds);
229 void* _pNativeGfxEngine;
232 Tizen::Graphics::_Canvas* __pParent;
233 Tizen::Graphics::_Font* __pFont; // weak reference
234 Tizen::Graphics::_Font* __pPriorityFont; // weak reference
235 Handle __windowHandle;
236 Tizen::Graphics::_Canvas::BlendOption __blendOption;
238 _Util::GenericBuffer <SystemPixel>* __pSurface;
239 _Util::ScratchPad <SystemPixel>* __pScratchPad;
243 unsigned long* __pBuffer;
244 unsigned long __fgColor;
245 unsigned long __bgColor;
246 Color __fgColorNative;
247 Color __bgColorNative;
250 _Util::ScalarHolder __lineWidth;
251 LineStyle __lineStyle;
252 LineCapStyle __lineCapStyle;
253 LineJoinStyle __lineJoinStyle;
254 bool __isClipBoundsSet;
255 Rectangle __clipBounds;
256 TextOrigin __textOrigin;
261 Tizen::Graphics::_Util::AccumList<double> pattern;
265 BitmapDrawingQuality __bitmapDrawingQuality;
266 CompositeMode __compositeMode;
268 // for performance test
269 bool __useStableRenderer;
271 friend class _CanvasImpl;
272 friend class _Bitmap;
274 friend class Tizen::Ui::Animations::_VisualElementCanvas;
278 }} // Tizen::Graphics
280 #endif // _FGRP_INTERNAL_CANVAS_H_