1 /*
2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "skia_impl_factory.h"
17
18 #include "skia_adapter/skia_bitmap.h"
19 #include "skia_adapter/skia_blender.h"
20 #include "skia_adapter/skia_pixmap.h"
21 #include "skia_adapter/skia_camera.h"
22 #include "skia_adapter/skia_canvas.h"
23 #include "skia_adapter/skia_color_filter.h"
24 #include "skia_adapter/skia_color_space.h"
25 #include "skia_adapter/skia_data.h"
26 #include "skia_adapter/skia_document.h"
27 #ifdef RS_ENABLE_GPU
28 #include "skia_adapter/skia_gpu_context.h"
29 #endif
30 #include "skia_adapter/skia_file_w_stream.h"
31 #include "skia_adapter/skia_font.h"
32 #include "skia_adapter/skia_font_mgr.h"
33 #include "skia_adapter/skia_hm_symbol_config_ohos.h"
34 #include "skia_adapter/skia_image.h"
35 #include "skia_adapter/skia_image_filter.h"
36 #include "skia_adapter/skia_mask_filter.h"
37 #include "skia_adapter/skia_matrix.h"
38 #include "skia_adapter/skia_matrix44.h"
39 #include "skia_adapter/skia_path.h"
40 #include "skia_adapter/skia_path_effect.h"
41 #include "skia_adapter/skia_path_iterator.h"
42 #include "skia_adapter/skia_picture.h"
43 #include "skia_adapter/skia_picture_recorder.h"
44 #include "skia_adapter/skia_region.h"
45 #include "skia_adapter/skia_resource_holder.h"
46 #include "skia_adapter/skia_serial_procs.h"
47 #include "skia_adapter/skia_shader_effect.h"
48 #include "skia_adapter/skia_sharing_serial_context.h"
49 #include "skia_adapter/skia_runtime_blender_builder.h"
50 #include "skia_adapter/skia_runtime_effect.h"
51 #include "skia_adapter/skia_runtime_shader_builder.h"
52 #include "skia_adapter/skia_surface.h"
53 #include "skia_adapter/skia_text_blob_builder.h"
54 #include "skia_adapter/skia_trace_memory_dump.h"
55 #include "skia_adapter/skia_memory_stream.h"
56 #include "skia_adapter/skia_oplist_handle.h"
57
58 namespace OHOS {
59 namespace Rosen {
60 namespace Drawing {
CreateCoreCanvas()61 std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas()
62 {
63 return std::make_unique<SkiaCanvas>();
64 }
65
CreateCoreCanvas(DrawingType type)66 std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas(DrawingType type)
67 {
68 return std::make_unique<SkiaCanvas>(type);
69 }
70
CreateCoreCanvas(int32_t width,int32_t height)71 std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas(int32_t width, int32_t height)
72 {
73 return std::make_unique<SkiaCanvas>(width, height);
74 }
75
CreateData()76 std::unique_ptr<DataImpl> SkiaImplFactory::CreateData()
77 {
78 return std::make_unique<SkiaData>();
79 }
80
81 #ifdef RS_ENABLE_GPU
CreateGPUContext()82 std::unique_ptr<GPUContextImpl> SkiaImplFactory::CreateGPUContext()
83 {
84 return std::make_unique<SkiaGPUContext>();
85 }
86 #endif
87
CreateTraceMemoryDump(const char * categoryKey,bool itemizeType)88 std::unique_ptr<TraceMemoryDumpImpl> SkiaImplFactory::CreateTraceMemoryDump(const char* categoryKey, bool itemizeType)
89 {
90 return std::make_unique<SkiaTraceMemoryDump>(categoryKey, itemizeType);
91 }
92
CreateBitmap()93 std::unique_ptr<BitmapImpl> SkiaImplFactory::CreateBitmap()
94 {
95 return std::make_unique<SkiaBitmap>();
96 }
97
CreatePixmap()98 std::unique_ptr<PixmapImpl> SkiaImplFactory::CreatePixmap()
99 {
100 return std::make_unique<SkiaPixmap>();
101 }
102
CreatePixmap(const ImageInfo & imageInfo,const void * addr,size_t rowBytes)103 std::unique_ptr<PixmapImpl> SkiaImplFactory::CreatePixmap(const ImageInfo& imageInfo, const void* addr, size_t rowBytes)
104 {
105 return std::make_unique<SkiaPixmap>(imageInfo, addr, rowBytes);
106 }
107
CreateImage()108 std::unique_ptr<ImageImpl> SkiaImplFactory::CreateImage()
109 {
110 return std::make_unique<SkiaImage>();
111 }
112
CreateImage(void * rawImg)113 std::unique_ptr<ImageImpl> SkiaImplFactory::CreateImage(void* rawImg)
114 {
115 auto skImg = reinterpret_cast<sk_sp<SkImage>*>(rawImg);
116 return std::make_unique<SkiaImage>(*skImg);
117 }
118
CreatePicture()119 std::unique_ptr<PictureImpl> SkiaImplFactory::CreatePicture()
120 {
121 return std::make_unique<SkiaPicture>();
122 }
123
CreatePictureRecorder()124 std::unique_ptr<PictureRecorderImpl> SkiaImplFactory::CreatePictureRecorder()
125 {
126 return std::make_unique<SkiaPictureRecorder>();
127 }
128
CreateSerialProcs()129 std::unique_ptr<SerialProcsImpl> SkiaImplFactory::CreateSerialProcs()
130 {
131 return std::make_unique<SkiaSerialProcs>();
132 }
133
CreateSharingSerialContext()134 std::unique_ptr<SharingSerialContextImpl> SkiaImplFactory::CreateSharingSerialContext()
135 {
136 return std::make_unique<SkiaSharingSerialContext>();
137 }
138
CreateFileWStream(const char path[])139 std::unique_ptr<FileWStreamImpl> SkiaImplFactory::CreateFileWStream(const char path[])
140 {
141 return std::make_unique<SkiaFileWStream>(path);
142 }
143
CreatePath()144 std::unique_ptr<PathImpl> SkiaImplFactory::CreatePath()
145 {
146 return std::make_unique<SkiaPath>();
147 }
148
CreatePathIterator(const Path & path)149 std::unique_ptr<PathIteratorImpl> SkiaImplFactory::CreatePathIterator(const Path& path)
150 {
151 return std::make_unique<SkiaPathIterator>(path);
152 }
153
CreateColorFilter()154 std::unique_ptr<ColorFilterImpl> SkiaImplFactory::CreateColorFilter()
155 {
156 return std::make_unique<SkiaColorFilter>();
157 }
158
CreateMaskFilter()159 std::unique_ptr<MaskFilterImpl> SkiaImplFactory::CreateMaskFilter()
160 {
161 return std::make_unique<SkiaMaskFilter>();
162 }
163
CreateImageFilter()164 std::unique_ptr<ImageFilterImpl> SkiaImplFactory::CreateImageFilter()
165 {
166 return std::make_unique<SkiaImageFilter>();
167 }
168
CreateShaderEffect()169 std::unique_ptr<ShaderEffectImpl> SkiaImplFactory::CreateShaderEffect()
170 {
171 return std::make_unique<SkiaShaderEffect>();
172 }
173
CreateBlender()174 std::unique_ptr<BlenderImpl> SkiaImplFactory::CreateBlender()
175 {
176 return std::make_unique<SkiaBlender>();
177 }
178
CreateRuntimeEffect()179 std::unique_ptr<RuntimeEffectImpl> SkiaImplFactory::CreateRuntimeEffect()
180 {
181 return std::make_unique<SkiaRuntimeEffect>();
182 }
183
CreateRuntimeShaderBuilder(std::shared_ptr<RuntimeEffect> runtimeEffect)184 std::unique_ptr<RuntimeShaderBuilderImpl> SkiaImplFactory::CreateRuntimeShaderBuilder(
185 std::shared_ptr<RuntimeEffect> runtimeEffect)
186 {
187 return std::make_unique<SkiaRuntimeShaderBuilder>(runtimeEffect);
188 }
189
CreateRuntimeBlenderBuilder(std::shared_ptr<RuntimeEffect> runtimeEffect)190 std::unique_ptr<RuntimeBlenderBuilderImpl> SkiaImplFactory::CreateRuntimeBlenderBuilder(
191 std::shared_ptr<RuntimeEffect> runtimeEffect)
192 {
193 return std::make_unique<SkiaRuntimeBlenderBuilder>(runtimeEffect);
194 }
195
CreateSurface()196 std::unique_ptr<SurfaceImpl> SkiaImplFactory::CreateSurface()
197 {
198 return std::make_unique<SkiaSurface>();
199 }
200
CreateOplistHandle()201 std::unique_ptr<OpListHandleImpl> SkiaImplFactory::CreateOplistHandle()
202 {
203 return std::make_unique<SkiaOpListHandle>();
204 }
205
CreatePathEffect()206 std::unique_ptr<PathEffectImpl> SkiaImplFactory::CreatePathEffect()
207 {
208 return std::make_unique<SkiaPathEffect>();
209 }
210
CreateColorSpace()211 std::unique_ptr<ColorSpaceImpl> SkiaImplFactory::CreateColorSpace()
212 {
213 return std::make_unique<SkiaColorSpace>();
214 }
215
CreateMatrix()216 std::unique_ptr<MatrixImpl> SkiaImplFactory::CreateMatrix()
217 {
218 return std::make_unique<SkiaMatrix>();
219 }
220
CreateMatrix(const Matrix & other)221 std::unique_ptr<MatrixImpl> SkiaImplFactory::CreateMatrix(const Matrix& other)
222 {
223 return std::make_unique<SkiaMatrix>(other);
224 }
225
CreateMatrix44()226 std::unique_ptr<Matrix44Impl> SkiaImplFactory::CreateMatrix44()
227 {
228 return std::make_unique<SkiaMatrix44>();
229 }
230
CreateCamera()231 std::unique_ptr<CameraImpl> SkiaImplFactory::CreateCamera()
232 {
233 return std::make_unique<SkiaCamera>();
234 }
235
CreateRegion()236 std::unique_ptr<RegionImpl> SkiaImplFactory::CreateRegion()
237 {
238 return std::make_unique<SkiaRegion>();
239 }
240
CreateFont()241 std::unique_ptr<FontImpl> SkiaImplFactory::CreateFont()
242 {
243 return std::make_unique<SkiaFont>();
244 }
245
CreateFont(std::shared_ptr<Typeface> typeface,scalar size,scalar scaleX,scalar skewX)246 std::unique_ptr<FontImpl> SkiaImplFactory::CreateFont(std::shared_ptr<Typeface> typeface,
247 scalar size, scalar scaleX, scalar skewX)
248 {
249 return std::make_unique<SkiaFont>(typeface, size, scaleX, skewX);
250 }
251
CreateFont(const Font & font)252 std::unique_ptr<FontImpl> SkiaImplFactory::CreateFont(const Font& font)
253 {
254 return std::make_unique<SkiaFont>(font);
255 }
256
CreateTextBlobBuilder()257 std::unique_ptr<TextBlobBuilderImpl> SkiaImplFactory::CreateTextBlobBuilder()
258 {
259 return std::make_unique<SkiaTextBlobBuilder>();
260 }
261
CreateDefaultFontMgr()262 std::shared_ptr<FontMgrImpl> SkiaImplFactory::CreateDefaultFontMgr()
263 {
264 return SkiaFontMgr::CreateDefaultFontMgr();
265 }
266
267 #ifndef USE_TEXGINE
CreateDynamicFontMgr()268 std::shared_ptr<FontMgrImpl> SkiaImplFactory::CreateDynamicFontMgr()
269 {
270 return SkiaFontMgr::CreateDynamicFontMgr();
271 }
272 #endif
273
CreateVertices()274 std::unique_ptr<VerticesImpl> SkiaImplFactory::CreateVertices()
275 {
276 return std::make_unique<SkiaVertices>();
277 }
278
CreateVerticesBuilder()279 std::unique_ptr<VerticesImpl::BuilderImpl> SkiaImplFactory::CreateVerticesBuilder()
280 {
281 return std::make_unique<SkiaVertices::SkiaBuilder>();
282 }
283
CreateMemoryStream()284 std::shared_ptr<MemoryStreamImpl> SkiaImplFactory::CreateMemoryStream()
285 {
286 return std::make_shared<SkiaMemoryStream>();
287 }
288
CreateMemoryStream(const void * data,size_t length,bool copyData)289 std::shared_ptr<MemoryStreamImpl> SkiaImplFactory::CreateMemoryStream(const void* data, size_t length, bool copyData)
290 {
291 return std::make_shared<SkiaMemoryStream>(data, length, copyData);
292 }
293
CreateResourceHolder()294 std::shared_ptr<ResourceHolderImpl> SkiaImplFactory::CreateResourceHolder()
295 {
296 return std::make_shared<SkiaResourceHolder>();
297 }
298 } // namespace Drawing
299 } // namespace Rosen
300 } // namespace OHOS