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.
19 * @file FGrp_CanvasImpl.h
20 * @brief This is the header file for the _CanvasImpl class.
22 * This header file contains the declarations of the %_CanvasImpl class.
26 #ifndef _FGRP_INTERNAL_CANVASIMPL_H_
27 #define _FGRP_INTERNAL_CANVASIMPL_H_
30 #include <FBaseObject.h>
31 #include <FGrpCanvasCommon.h>
32 #include <FBaseColArrayListT.h>
35 namespace Tizen { namespace Base { namespace Collection
38 }}} // Tizen::Base::Collection
40 namespace Tizen { namespace Ui { namespace Animations
42 class _VisualElementCanvas;
43 }}} // Tizen::Ui::Animations
45 namespace Tizen { namespace Graphics
64 // * @enum BitmapDrawingQuality
66 // * Defines the bitmap drawing quality.
70 enum BitmapDrawingQuality
72 BITMAP_DRAWING_QUALITY_LOW, // The low-quality but high-performance
73 BITMAP_DRAWING_QUALITY_MID, // The mid-quality
74 BITMAP_DRAWING_QUALITY_HIGH // The high-quality but low-performance
83 class _OSP_EXPORT_ _CanvasImpl
84 : public Tizen::Base::Object
88 virtual ~_CanvasImpl(void);
90 result Construct(void);
91 result Construct(const Rectangle& rect);
92 result Construct(const BufferInfo& bufferInfo);
93 result Construct(Handle windowHandle);
94 result Construct(Handle windowHandle, const Rectangle& rect);
96 result Construct(const FloatRectangle& rect);
97 result Construct(Handle windowHandle, const FloatRectangle& rect);
99 bool IsConstructed(void) const;
102 result Clear(const Rectangle& rect);
103 result Clear(const FloatRectangle& rect);
105 result Copy(const Point& destPoint, const _CanvasImpl& srcCanvas, const Rectangle& srcRect);
106 result Copy(const FloatPoint& destPoint, const _CanvasImpl& srcCanvas, const FloatRectangle& srcRect);
107 result Copy(const Rectangle& destRect, const _CanvasImpl& srcCanvas, const Rectangle& srcRect);
108 result Copy(const FloatRectangle& destRect, const _CanvasImpl& srcCanvas, const FloatRectangle& srcRect);
109 result Copy(const Point& destPoint, const _CanvasImpl& srcCanvas, const Rectangle& srcRect, CompositeMode compositeMode);
110 result Copy(const FloatPoint& destPoint, const _CanvasImpl& srcCanvas, const FloatRectangle& srcRect, CompositeMode compositeMode);
112 result CopyEx(const Point& destPoint, const _CanvasImpl& srcCanvas, const Rectangle& srcRect);
113 result CopyEx(const FloatPoint& destPoint, const _CanvasImpl& srcCanvas, const FloatRectangle& srcRect);
115 LineStyle GetLineStyle(void) const;
116 int GetLineWidth(void) const;
117 float GetLineWidthF(void) const;
118 LineCapStyle GetLineCapStyle(void) const;
119 LineJoinStyle GetLineJoinStyle(void) const;
120 result SetLineStyle(LineStyle style);
121 result SetLineWidth(int width);
122 result SetLineWidth(float width);
123 result SetLineCapStyle(LineCapStyle lineCapStyle);
124 result SetLineJoinStyle(LineJoinStyle lineJoinStyle);
126 result GetDashPattern(Tizen::Base::Collection::IListT<int>& pattern, int& offset);
127 result GetDashPattern(Tizen::Base::Collection::IListT<float>& pattern, float& offset);
128 result SetDashPattern(const Tizen::Base::Collection::IListT<int>& pattern, int offset);
129 result SetDashPattern(const Tizen::Base::Collection::IListT<float>& pattern, float offset);
131 result SetDrawingQuality(BitmapDrawingQuality quality);
132 BitmapDrawingQuality GetDrawingQuality(void) const;
134 result SetCompositeMode(CompositeMode compositeMode);
135 CompositeMode GetCompositeMode(void) const;
137 result GetPixel(const Point& point, Color& color) const;
138 result GetPixel(const FloatPoint& point, Color& color) const;
140 result SetPixel(const Point& point);
141 result SetPixel(const FloatPoint& point);
143 result DrawRectangle(const Rectangle& rect);
144 result DrawRectangle(const FloatRectangle& rect);
145 result FillRectangle(const Color& color, const Rectangle& rect);
146 result FillRectangle(const Color& color, const FloatRectangle& rect);
148 result DrawRoundRectangle(const Rectangle& rect, const Dimension& arcDim);
149 result DrawRoundRectangle(const FloatRectangle& rect, const FloatDimension& arcDim);
150 result FillRoundRectangle(const Color& color, const Rectangle& rect, const Dimension& arcDim);
151 result FillRoundRectangle(const Color& color, const FloatRectangle& rect, const FloatDimension& arcDim);
153 result DrawEllipse(const Rectangle& rect);
154 result DrawEllipse(const FloatRectangle& rect);
155 result FillEllipse(const Color& color, const Rectangle& rect);
156 result FillEllipse(const Color& color, const FloatRectangle& rect);
158 result DrawArc(const Rectangle& rect, int startAngle, int endAngle, ArcStyle arcStyle);
159 result DrawArc(const FloatRectangle& rect, float startAngle, float endAngle, ArcStyle arcStyle);
161 result DrawTriangle(const Point& point1, const Point& point2, const Point& point3);
162 result DrawTriangle(const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& point3);
163 result FillTriangle(const Color& color, const Point& point1, const Point& point2, const Point& point3);
164 result FillTriangle(const Color& color, const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& point3);
166 result DrawLine(const Point& point1, const Point& point2);
167 result DrawLine(const FloatPoint& point1, const FloatPoint& point2);
168 result DrawPolyline(const Tizen::Base::Collection::IList& points);
169 result DrawPolygon(const Tizen::Base::Collection::IList& points);
170 result FillPolygon(const Color& color, const Tizen::Base::Collection::IList& points);
172 result SetFont(const Font& font);
173 Font* GetFontN(void);
175 void SetTextOrigin(TextOrigin origin);
177 result DrawText(const Point& point, const Tizen::Base::String& text);
178 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length);
179 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, const Color& outlineColor);
180 result DrawText(const Point& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
181 result DrawText(const Point& point, const EnrichedText& enrichedText);
183 result DrawText(const FloatPoint& point, const Tizen::Base::String& text);
184 result DrawText(const FloatPoint& point, const Tizen::Base::String& text, int startIndex, int length);
185 result DrawText(const FloatPoint& point, const Tizen::Base::String& text, int startIndex, const Color& outlineColor);
186 result DrawText(const FloatPoint& point, const Tizen::Base::String& text, int startIndex, int length, const Color& outlineColor);
187 result DrawText(const FloatPoint& point, const EnrichedText& enrichedText);
189 result DrawBitmap(const Point& point, const _BitmapImpl& bitmap);
190 result DrawBitmap(const FloatPoint& point, const _BitmapImpl& bitmap);
191 result DrawBitmap(const Rectangle& rect, const _BitmapImpl& bitmap);
192 result DrawBitmap(const FloatRectangle& rect, const _BitmapImpl& bitmap);
193 result DrawBitmap(const Rectangle& destRect, const _BitmapImpl& srcBitmap, const Rectangle& srcRect);
194 result DrawBitmap(const FloatRectangle& destRect, const _BitmapImpl& srcBitmap, const FloatRectangle& srcRect);
195 result DrawBitmap(const Point& point, const _BitmapImpl& bitmap, FlipDirection dir);
196 result DrawBitmap(const FloatPoint& point, const _BitmapImpl& bitmap, FlipDirection dir);
197 result DrawBitmap(const Point& point, const _BitmapImpl& bitmap, const Point& pivot, int degree);
198 result DrawBitmap(const FloatPoint& point, const _BitmapImpl& bitmap, const FloatPoint& pivot, float degree);
199 result DrawNinePatchedBitmap(const Rectangle& rect, const _BitmapImpl& bitmap);
200 result DrawNinePatchedBitmap(const FloatRectangle& rect, const _BitmapImpl& bitmap);
201 result DrawNineTiledBitmap(const Rectangle& rect, const _BitmapImpl& bitmap);
204 result Show(const Rectangle& rect);
206 Rectangle GetBounds(void) const;
207 FloatRectangle GetBoundsF(void) const;
208 FloatRectangle GetActualBounds(void) const;
210 result SetClipBounds(const Rectangle& rect);
211 result SetClipBounds(const FloatRectangle& rect);
212 Rectangle GetClipBounds(void) const;
213 FloatRectangle GetClipBoundsF(void) const;
215 result Lock(BufferInfo& info, long timeout = INFINITE);
218 void SetForegroundColor(const Color& color);
219 Color GetForegroundColor(void) const;
220 void SetBackgroundColor(const Color& color);
221 Color GetBackgroundColor(void) const;
223 result SetPosition(const Point& point);
224 result SetPosition(int x, int y);
226 Canvas* GetSubCanvasN(const Rectangle& subRegion) const;
227 Canvas* GetSubCanvasFN(const FloatRectangle& subRegion) const;
229 void SetAntialiasingEnabled(bool enable);
230 bool IsAntialiasingEnabled(void) const;
233 * Sets a priority font to the %_CanvasImpl. This font have priority at user font which is installed through _CanvasImpl::SetFont()
235 * @return An error code
236 * @param[in] pFont The font @n
237 * It should be constructed before being passed to this method.
238 * @exception E_SUCCESS The method is successful.
239 * @exception E_INVALID_ARG The specified input parameter is invalid.
240 * @exception E_OPERATION_FAILED This instance is in an invalid state.
242 result SetPriorityFont(const Font& font);
245 * Resets a priority font
247 void ResetPriorityFont(void);
249 // for performance test
250 void SetStableRenderer(bool isStable);
252 // for removing the Ui dependency
253 static void SetFrameInfoCallback(void* (*pGetDefaultFrameNativeHandle)(void), void* (*pGetDefaultFrameHandle)(void));
254 static void SetThemeInfoCallback(Color (*pGetDefaultForegroundColor)(void), Color (*pGetDefaultBackgroundColor)(void));
256 static _CanvasImpl* GetInstance(Canvas& canvas);
257 static const _CanvasImpl* GetInstance(const Canvas& canvas);
260 _CanvasImpl(const _CanvasImpl& canvas);
261 _CanvasImpl& operator =(const _CanvasImpl& value);
264 unsigned long _magicKey;
265 _Canvas* _pNativeCanvas;
266 struct _CanvasCoordHolder* _pCoordHolder;
268 Font* _pPriorityFont;
269 Tizen::Base::Collection::ArrayListT<float> _dashList;
271 bool (* _pShowCallbackFunc)(void*);
272 void* _pShowCallbackParam;
274 friend class _Canvas;
275 friend class _CanvasImplPrivate;
276 friend class _BitmapImpl;
277 friend class TextElement;
278 friend class Tizen::Ui::Animations::_VisualElementCanvas;
282 }} // Tizen::Graphics
284 #endif // _FGRP_INTERNAL_CANVASIMPL_H_