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_camera.h" 20 #include "skia_adapter/skia_canvas.h" 21 #include "skia_adapter/skia_color_filter.h" 22 #include "skia_adapter/skia_color_space.h" 23 #include "skia_adapter/skia_data.h" 24 #ifdef ACE_ENABLE_GPU 25 #include "skia_adapter/skia_gpu_context.h" 26 #endif 27 #include "skia_adapter/skia_image.h" 28 #include "skia_adapter/skia_image_filter.h" 29 #include "skia_adapter/skia_mask_filter.h" 30 #include "skia_adapter/skia_matrix.h" 31 #include "skia_adapter/skia_matrix44.h" 32 #include "skia_adapter/skia_path.h" 33 #include "skia_adapter/skia_path_effect.h" 34 #include "skia_adapter/skia_picture.h" 35 #include "skia_adapter/skia_region.h" 36 #include "skia_adapter/skia_shader_effect.h" 37 #include "skia_adapter/skia_surface.h" 38 39 namespace OHOS { 40 namespace Rosen { 41 namespace Drawing { CreateCoreCanvas()42std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas() 43 { 44 return std::make_unique<SkiaCanvas>(); 45 } 46 CreateCoreCanvas(void * rawCanvas)47std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas(void* rawCanvas) 48 { 49 auto skCanvasPtr = reinterpret_cast<std::shared_ptr<SkCanvas>*>(rawCanvas); 50 return std::make_unique<SkiaCanvas>(*skCanvasPtr); 51 } 52 CreateCoreCanvas(int32_t width,int32_t height)53std::unique_ptr<CoreCanvasImpl> SkiaImplFactory::CreateCoreCanvas(int32_t width, int32_t height) 54 { 55 return std::make_unique<SkiaCanvas>(width, height); 56 } 57 CreateData()58std::unique_ptr<DataImpl> SkiaImplFactory::CreateData() 59 { 60 return std::make_unique<SkiaData>(); 61 } 62 63 #ifdef ACE_ENABLE_GPU CreateGPUContext()64std::unique_ptr<GPUContextImpl> SkiaImplFactory::CreateGPUContext() 65 { 66 return std::make_unique<SkiaGPUContext>(); 67 } 68 #endif 69 CreateBitmap()70std::unique_ptr<BitmapImpl> SkiaImplFactory::CreateBitmap() 71 { 72 return std::make_unique<SkiaBitmap>(); 73 } 74 CreateImage()75std::unique_ptr<ImageImpl> SkiaImplFactory::CreateImage() 76 { 77 return std::make_unique<SkiaImage>(); 78 } 79 CreateImage(void * rawImg)80std::unique_ptr<ImageImpl> SkiaImplFactory::CreateImage(void* rawImg) 81 { 82 auto skImg = reinterpret_cast<sk_sp<SkImage>*>(rawImg); 83 return std::make_unique<SkiaImage>(*skImg); 84 } 85 CreatePicture()86std::unique_ptr<PictureImpl> SkiaImplFactory::CreatePicture() 87 { 88 return std::make_unique<SkiaPicture>(); 89 } 90 CreatePath()91std::unique_ptr<PathImpl> SkiaImplFactory::CreatePath() 92 { 93 return std::make_unique<SkiaPath>(); 94 } 95 CreateColorFilter()96std::unique_ptr<ColorFilterImpl> SkiaImplFactory::CreateColorFilter() 97 { 98 return std::make_unique<SkiaColorFilter>(); 99 } 100 CreateMaskFilter()101std::unique_ptr<MaskFilterImpl> SkiaImplFactory::CreateMaskFilter() 102 { 103 return std::make_unique<SkiaMaskFilter>(); 104 } 105 CreateImageFilter()106std::unique_ptr<ImageFilterImpl> SkiaImplFactory::CreateImageFilter() 107 { 108 return std::make_unique<SkiaImageFilter>(); 109 } 110 CreateShaderEffect()111std::unique_ptr<ShaderEffectImpl> SkiaImplFactory::CreateShaderEffect() 112 { 113 return std::make_unique<SkiaShaderEffect>(); 114 } 115 CreateSurface()116std::unique_ptr<SurfaceImpl> SkiaImplFactory::CreateSurface() 117 { 118 return std::make_unique<SkiaSurface>(); 119 } 120 CreatePathEffect()121std::unique_ptr<PathEffectImpl> SkiaImplFactory::CreatePathEffect() 122 { 123 return std::make_unique<SkiaPathEffect>(); 124 } 125 CreateColorSpace()126std::unique_ptr<ColorSpaceImpl> SkiaImplFactory::CreateColorSpace() 127 { 128 return std::make_unique<SkiaColorSpace>(); 129 } 130 CreateMatrix()131std::unique_ptr<MatrixImpl> SkiaImplFactory::CreateMatrix() 132 { 133 return std::make_unique<SkiaMatrix>(); 134 } 135 CreateMatrix44()136std::unique_ptr<Matrix44Impl> SkiaImplFactory::CreateMatrix44() 137 { 138 return std::make_unique<SkiaMatrix44>(); 139 } 140 CreateCamera()141std::unique_ptr<CameraImpl> SkiaImplFactory::CreateCamera() 142 { 143 return std::make_unique<SkiaCamera>(); 144 } 145 CreateRegion()146std::unique_ptr<RegionImpl> SkiaImplFactory::CreateRegion() 147 { 148 return std::make_unique<SkiaRegion>(); 149 } 150 } // namespace Drawing 151 } // namespace Rosen 152 } // namespace OHOS