1 #ifndef DALI_CANVAS_RENDERER_H
2 #define DALI_CANVAS_RENDERER_H
5 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/object/base-handle.h>
25 #include <dali/devel-api/adaptor-framework/pixel-buffer.h>
26 #include <dali/public-api/dali-adaptor-common.h>
31 * @addtogroup dali_adaptor_framework
35 namespace Internal DALI_INTERNAL
41 } // namespace DALI_INTERNAL
44 * @brief Used for rendering a vector primitives
46 class DALI_ADAPTOR_API CanvasRenderer : public BaseHandle
50 * @brief Creates an initialized handle to a new CanvasRenderer.
51 * @param[in] viewBox The viewBox of canvas.
52 * @return A handle to a newly allocated CanvasRenderer
54 static CanvasRenderer New(const Vector2& viewBox);
58 * @brief Creates an empty handle.
59 * Use CanvasRenderer::New() to create an initialized object.
70 * @brief This copy constructor is required for (smart) pointer semantics.
72 * @param[in] handle A reference to the copied handle
74 CanvasRenderer(const CanvasRenderer& handle) = default;
77 * @brief This assignment operator is required for (smart) pointer semantics.
79 * @param[in] rhs A reference to the copied handle
80 * @return A reference to this
82 CanvasRenderer& operator=(const CanvasRenderer& rhs) = default;
90 * @brief Draw inner canvas the contexts added to the CanvasRenderer.
95 * @brief Add drawable object to the Canvas. This method is similar to registration.
96 * The added drawable object(shape) is drawn on the inner canvas using @ref Commit().
97 * @param[in] drawable The drawable object.
98 * @return Returns True when it's successful. False otherwise.
100 bool AddDrawable(Drawable& drawable);
103 * @brief Returns the PixelBuffer, which is the Render buffer of Canvas.
105 * @return Returns the pixel buffer.
107 Devel::PixelBuffer GetPixelBuffer();
110 * @brief This is the size of the buffer in the Canvas.
111 * @param[in] size The size of canvas buffer.
112 * @return Returns True when it's successful. False otherwise.
114 bool SetSize(const Vector2& size);
117 * @brief This is the size of the Buffer in the Canvas.
118 * @return Returns The size of canvas buffer.
120 const Vector2& GetSize();
122 public: // Not intended for application developers
125 * @brief The constructor.
126 * @note Not intended for application developers.
128 * @param[in] pointer A pointer to a newly allocated CanvasRenderer
130 explicit DALI_INTERNAL CanvasRenderer(Internal::Adaptor::CanvasRenderer* internal);
139 #endif // DALI_CANVAS_RENDERER_H