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, const Rectangle& rect);
79 result Construct(_Canvas* pSourceCanvas, const Rectangle& subRegion);
80 result Construct(const BufferInfo& bufferInfo);
82 bool IsValid(void) const;
85 result Clear(const Rectangle& rect);
87 result Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
88 result Copy(const Rectangle& destRect, const _Canvas& srcCanvas, const Rectangle& srcRect);
89 result Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect, BlendingMode blendingMode);
90 result CopyReverse(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
92 result SetLineStyle(LineStyle style);
93 LineStyle GetLineStyle(void) const;
95 result SetLineWidth(int width, float auxWidth);
96 result SetLineWidth(float width); // floating-point version
97 int GetLineWidth(void) const;
99 result SetDashPattern(const Tizen::Graphics::_Util::AccumList<double>& dashValueList, double offset);
101 void SetDrawingQuality(BitmapDrawingQuality quality);
102 BitmapDrawingQuality GetDrawingQuality(void) const;
104 void SetBlendingMode(BlendingMode blendingMode);
105 BlendingMode GetBlendingMode(void) const;
107 result GetPixel(const Point& point, Color& color) const;
109 result SetPixel(const _Util::Point<int>& point);
110 result SetPixel(const _Util::Point<double>& point); // floating-point version
112 result DrawRectangle(const _Util::Rectangle<int>& rect);
113 result DrawRectangle(const _Util::Rectangle<double>& rect); // floating-point version
114 result FillRectangle(const Color& color, const Rectangle& rect);
115 result FillRectangle(const Color& color, const _Util::Rectangle<int>& rect);
116 result FillRectangle(const Color& color, const _Util::Rectangle<double>& rect); // floating-point version
118 result DrawRoundRectangle(const _Util::Rectangle<int>& rect, const _Util::Dimension<int>& arcDim);
119 result DrawRoundRectangle(const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim); // floating-point version
120 result FillRoundRectangle(const Color& color, const _Util::Rectangle<int>& rect, const _Util::Dimension<int>& arcDim);
121 result FillRoundRectangle(const Color& color, const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim); // floating-point version
123 result DrawEllipse(const _Util::Rectangle<int>& rect);
124 result DrawEllipse(const _Util::Rectangle<double>& rect); // floating-point version
125 result FillEllipse(const Color& color, const _Util::Rectangle<int>& rect);
126 result FillEllipse(const Color& color, const _Util::Rectangle<double>& rect); // floating-point version
128 result DrawArc(const _Util::Rectangle<double>& rect, double startAngle, double endAngle, ArcStyle arcStyle); // floating-point version
130 result DrawTriangle(const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3); // floating-point version
131 result FillTriangle(const Color& color, const _Util::Point<int>& point1, const _Util::Point<int>& point2, const _Util::Point<int>& point3);
132 result FillTriangle(const Color& color, const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3); // floating-point version
134 result DrawLine(const _Util::Point<int>& point1, const _Util::Point<int>& point2);
135 result DrawLine(const _Util::Point<double>& point1, const _Util::Point<double>& point2); // floating-point version
136 result DrawPolyline(const _Util::Point<double>* pPoints, unsigned int pointCount);
137 result DrawPolygon(const _Util::Point<double>* pPoints, unsigned int pointCount);
138 result FillPolygon(const Color& color, const _Util::Point<double>* pPoints, unsigned int pointCount);
140 result SetFont(const _Font& font);
142 result SetPriorityFont(const _Font& font);
143 void ResetPriorityFont(void);
145 result DrawText(const Point& point, const Tizen::Base::String& text);
146 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
147 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
149 result DrawBitmap(const Point& point, const _Bitmap& bitmap);
150 result DrawBitmap(const Rectangle& rect, const _Bitmap& bitmap);
151 result DrawBitmap(const Rectangle& destRect, const _Bitmap& srcBitmap, const Rectangle& srcRect);
152 result DrawBitmapForNinePatchedBitmap(const Rectangle& destRect, const _Bitmap& srcBitmap, const Rectangle& srcRect);
153 result DrawBitmap(const Point& point, const _Bitmap& bitmap, FlipDirection dir);
154 result DrawBitmap(const Point& point, const _Bitmap& bitmap, const Point& pivot, int degree);
155 result DrawNinePatchedBitmap(const Rectangle& rect, const _Bitmap& bitmap);
158 result Show(const Rectangle& rect);
160 Rectangle GetBounds(void) const;
162 result SetClipBounds(const Rectangle& rect);
163 Rectangle GetClipBounds(void) const;
165 result Lock(BufferInfo& info, long timeout = INFINITE);
168 void SetForegroundColor(const Color& color);
169 Color GetForegroundColor(void);
170 void SetBackgroundColor(const Color& color);
171 Color GetBackgroundColor(void);
173 void SetForegroundOpacity(int level);
174 int GetForegroundOpacity(void);
175 void SetBackgroundOpacity(int level);
176 int GetBackgroundOpacity(void);
178 result SetPosition(int x, int y);
180 static _Canvas* GetInstance(_CanvasImpl& canvas);
181 static const _Canvas* GetInstance(const _CanvasImpl& canvas);
184 bool _IsWindowCanvas(void) const;
185 result _SetPosition(int x, int y);
186 int _GetAlphaAttenuation(const _Bitmap& bitmap) const;
188 void _SetBlendOption(BlendOption);
189 BlendOption _GetBlendOption(void) const;
192 _Canvas(const _Canvas& canvas);
193 _Canvas& operator =(const _Canvas& value);
195 void __InitFgBgColorFromTheme(void);
197 void __ComposeFgColor(void);
198 void __ComposeBgColor(void);
200 void __GetClipBounds(Rectangle& rect) const;
202 result __Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
203 result __Copy(const Rectangle& destRect, const _Canvas& srcCanvas, const Rectangle& srcRect);
205 result __FillRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rectangle);
207 result __FillRoundRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim);
209 result __FillEllipse(unsigned long composedColor, const _Util::Rectangle<double>& bounds);
211 result __FillTriangle(unsigned long composedColor, const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3);
213 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
214 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
217 void* _pNativeGfxEngine;
220 Tizen::Graphics::_Canvas* __pParent;
221 Tizen::Graphics::_Font* __pFont; // weak reference
222 Tizen::Graphics::_Font* __pPriorityFont; // weak reference
223 Handle __windowHandle;
224 Tizen::Graphics::_Canvas::BlendOption __blendOption;
226 _Util::GenericBuffer <SystemPixel>* __pSurface;
227 _Util::ScratchPad <SystemPixel>* __pScratchPad;
231 unsigned long* __pBuffer;
232 unsigned long __fgColor;
233 unsigned long __bgColor;
234 Color __fgColorNative;
235 Color __bgColorNative;
238 _Util::ScalarHolder __lineWidth;
239 LineStyle __lineStyle;
240 bool __isClipBoundsSet;
241 Rectangle __clipBounds;
242 TextOrigin __textOrigin;
247 Tizen::Graphics::_Util::AccumList<double> pattern;
251 BitmapDrawingQuality __bitmapDrawingQuality;
252 BlendingMode __blendingMode;
254 // for performance test
255 bool __useStableRenderer;
257 friend class _CanvasImpl;
258 friend class _Bitmap;
260 friend class Tizen::Ui::Animations::_VisualElementCanvas;
264 }} // Tizen::Graphics
266 #endif // _FGRP_INTERNAL_CANVAS_H_