1 #ifndef DALI_INTERNAL_VECTOR_IMAGE_RENDERER_IMPL_H
2 #define DALI_INTERNAL_VECTOR_IMAGE_RENDERER_IMPL_H
5 * Copyright (c) 2022 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-object.h>
23 #include <dali/public-api/signals/connection-tracker.h>
29 #include <dali/devel-api/adaptor-framework/pixel-buffer.h>
30 #include <dali/devel-api/adaptor-framework/vector-image-renderer.h>
32 #ifndef THORVG_SUPPORT
33 struct NSVGrasterizer;
43 class VectorImageRenderer;
44 using VectorImageRendererPtr = IntrusivePtr<VectorImageRenderer>;
47 * Dali internal VectorImageRenderer.
49 class VectorImageRenderer : public BaseObject
53 * @brief Creates a VectorImageRenderer object.
55 * @return A handle to a newly allocated VectorImageRenderer
57 static VectorImageRendererPtr New();
60 * @copydoc Dali::VectorImageRenderer::Load()
62 bool Load(const Vector<uint8_t>& data, float dpi);
65 * @copydoc Dali::VectorImageRenderer::IsLoaded()
67 bool IsLoaded() const;
70 * @copydoc Dali::VectorImageRenderer::Rasterize()
72 Dali::Devel::PixelBuffer Rasterize(uint32_t width, uint32_t height);
75 * @copydoc Dali::VectorImageRenderer::GetDefaultSize()
77 void GetDefaultSize(uint32_t& width, uint32_t& height) const;
79 VectorImageRenderer(const VectorImageRenderer&) = delete;
80 VectorImageRenderer& operator=(VectorImageRenderer&) = delete;
81 VectorImageRenderer(VectorImageRenderer&&) = delete;
82 VectorImageRenderer& operator=(VectorImageRenderer&&) = delete;
88 VectorImageRenderer();
93 virtual ~VectorImageRenderer();
96 * @brief Initializes member data.
101 #ifdef THORVG_SUPPORT
102 std::unique_ptr<tvg::SwCanvas> mSwCanvas{nullptr};
103 tvg::Picture* mPicture{nullptr}; ///< The pointer to the picture
105 NSVGimage* mParsedImage{nullptr};
106 NSVGrasterizer* mRasterizer{nullptr};
108 uint32_t mDefaultWidth{0}; ///< The default width of the file
109 uint32_t mDefaultHeight{0}; ///< The default height of the file
112 } // namespace Adaptor
114 } // namespace Internal
116 inline static Internal::Adaptor::VectorImageRenderer& GetImplementation(Dali::VectorImageRenderer& renderer)
118 DALI_ASSERT_ALWAYS(renderer && "VectorImageRenderer handle is empty.");
120 BaseObject& handle = renderer.GetBaseObject();
122 return static_cast<Internal::Adaptor::VectorImageRenderer&>(handle);
125 inline static const Internal::Adaptor::VectorImageRenderer& GetImplementation(const Dali::VectorImageRenderer& renderer)
127 DALI_ASSERT_ALWAYS(renderer && "VectorImageRenderer handle is empty.");
129 const BaseObject& handle = renderer.GetBaseObject();
131 return static_cast<const Internal::Adaptor::VectorImageRenderer&>(handle);
136 #endif // DALI_INTERNAL_VECTOR_IMAGE_RENDERER_IMPL_H