2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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::Point<int>& point, const _Bitmap& bitmap);
157 result DrawBitmap(const _Util::Rectangle<double>& rect, const _Bitmap& bitmap);
158 result DrawBitmap(const _Util::Rectangle<double>& destRect, const _Bitmap& srcBitmap, const _Util::Rectangle<double>& srcRect);
159 result DrawBitmapForNinePatchedBitmap(const Rectangle& destRect, const _Bitmap& srcBitmap, const Rectangle& srcRect, bool copyOnly = false);
160 result DrawBitmap(const _Util::Point<double>& point, const _Bitmap& bitmap, FlipDirection dir);
161 result DrawBitmap(const _Util::Point<double>& point, const _Bitmap& bitmap, const _Util::Point<double>& pivot, double degree);
162 result DrawNinePatchedBitmap(const Rectangle& rect, const _Bitmap& bitmap);
163 result DrawNineTiledBitmap(const Rectangle& rect, const _Bitmap& bitmap);
166 result Show(const Rectangle& rect);
168 Rectangle GetBounds(void) const;
170 result SetClipBounds(const Rectangle& rect);
171 Rectangle GetClipBounds(void) const;
173 result Lock(BufferInfo& info, long timeout = INFINITE);
176 void SetForegroundColor(const Color& color);
177 Color GetForegroundColor(void);
178 void SetBackgroundColor(const Color& color);
179 Color GetBackgroundColor(void);
181 void SetForegroundOpacity(int level);
182 int GetForegroundOpacity(void);
183 void SetBackgroundOpacity(int level);
184 int GetBackgroundOpacity(void);
186 result SetPosition(int x, int y);
188 void SetAntialiasingEnabled(bool enable);
189 bool IsAntialiasingEnabled(void) const;
191 static _Canvas* GetInstance(_CanvasImpl& canvas);
192 static const _Canvas* GetInstance(const _CanvasImpl& canvas);
195 bool _IsWindowCanvas(void) const;
196 result _SetPosition(int x, int y);
197 int _GetAlphaAttenuation(const _Bitmap& bitmap) const;
199 void _SetBlendOption(BlendOption);
200 BlendOption _GetBlendOption(void) const;
203 _Canvas(const _Canvas& canvas);
204 _Canvas& operator =(const _Canvas& value);
206 void __InitFgBgColorFromTheme(void);
208 void __ComposeFgColor(void);
209 void __ComposeBgColor(void);
211 void __GetClipBounds(Rectangle& rect) const;
213 result __Copy(const Point& destPoint, const _Canvas& srcCanvas, const Rectangle& srcRect);
214 result __Copy(const Rectangle& destRect, const _Canvas& srcCanvas, const Rectangle& srcRect);
216 result __FillRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rectangle);
218 result __FillRoundRectangle(unsigned long composedColor, const _Util::Rectangle<double>& rect, const _Util::Dimension<double>& arcDim);
220 result __FillEllipse(unsigned long composedColor, const _Util::Rectangle<double>& bounds);
222 result __FillTriangle(unsigned long composedColor, const _Util::Point<double>& point1, const _Util::Point<double>& point2, const _Util::Point<double>& point3);
224 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
225 result __DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
227 bool __IsInClipBounds(const _Util::Rectangle<double>& bounds);
230 unsigned long _magicKey;
231 void* _pNativeGfxEngine;
234 Tizen::Graphics::_Canvas* __pParent;
235 Tizen::Graphics::_Font* __pFont; // weak reference
236 Tizen::Graphics::_Font* __pPriorityFont; // weak reference
237 Handle __windowHandle;
238 Tizen::Graphics::_Canvas::BlendOption __blendOption;
240 _Util::GenericBuffer <SystemPixel>* __pSurface;
241 _Util::ScratchPad <SystemPixel>* __pScratchPad;
245 unsigned long* __pBuffer;
246 unsigned long __fgColor;
247 unsigned long __bgColor;
248 Color __fgColorNative;
249 Color __bgColorNative;
252 _Util::ScalarHolder __lineWidth;
253 LineStyle __lineStyle;
254 LineCapStyle __lineCapStyle;
255 LineJoinStyle __lineJoinStyle;
256 bool __isClipBoundsSet;
257 Rectangle __clipBounds;
258 TextOrigin __textOrigin;
262 Tizen::Graphics::_Util::AccumList<double> pattern;
266 BitmapDrawingQuality __bitmapDrawingQuality;
267 CompositeMode __compositeMode;
269 // for performance test
270 bool __useStableRenderer;
272 friend class _CanvasImpl;
273 friend class _Bitmap;
275 friend class Tizen::Ui::Animations::_VisualElementCanvas;
279 }} // Tizen::Graphics
281 #endif // _FGRP_INTERNAL_CANVAS_H_