1 /* 2 * Copyright (c) 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 "drawing_image.h" 17 18 #include "drawing_canvas_utils.h" 19 20 #include "image/image.h" 21 #include "utils/data.h" 22 23 using namespace OHOS; 24 using namespace Rosen; 25 using namespace Drawing; 26 CastToImage(OH_Drawing_Image * cImage)27static Image* CastToImage(OH_Drawing_Image* cImage) 28 { 29 return reinterpret_cast<Image*>(cImage); 30 } 31 CastToBitmap(OH_Drawing_Bitmap & cBitmap)32static Bitmap& CastToBitmap(OH_Drawing_Bitmap& cBitmap) 33 { 34 return reinterpret_cast<Bitmap&>(cBitmap); 35 } 36 OH_Drawing_ImageCreate()37OH_Drawing_Image* OH_Drawing_ImageCreate() 38 { 39 return (OH_Drawing_Image*)new Image(); 40 } 41 OH_Drawing_ImageDestroy(OH_Drawing_Image * cImage)42void OH_Drawing_ImageDestroy(OH_Drawing_Image* cImage) 43 { 44 if (!cImage) { 45 return; 46 } 47 delete CastToImage(cImage); 48 } 49 OH_Drawing_ImageBuildFromBitmap(OH_Drawing_Image * cImage,OH_Drawing_Bitmap * cBitmap)50bool OH_Drawing_ImageBuildFromBitmap(OH_Drawing_Image* cImage, OH_Drawing_Bitmap* cBitmap) 51 { 52 if (cImage == nullptr || cBitmap == nullptr) { 53 g_drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 54 return false; 55 } 56 return CastToImage(cImage)->BuildFromBitmap(CastToBitmap(*cBitmap)); 57 } 58 OH_Drawing_ImageGetWidth(OH_Drawing_Image * cImage)59int32_t OH_Drawing_ImageGetWidth(OH_Drawing_Image* cImage) 60 { 61 if (cImage == nullptr) { 62 g_drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 63 return -1; 64 } 65 return CastToImage(cImage)->GetWidth(); 66 } 67 OH_Drawing_ImageGetHeight(OH_Drawing_Image * cImage)68int32_t OH_Drawing_ImageGetHeight(OH_Drawing_Image* cImage) 69 { 70 if (cImage == nullptr) { 71 g_drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 72 return -1; 73 } 74 return CastToImage(cImage)->GetHeight(); 75 } 76 OH_Drawing_ImageGetImageInfo(OH_Drawing_Image * cImage,OH_Drawing_Image_Info * cImageInfo)77void OH_Drawing_ImageGetImageInfo(OH_Drawing_Image* cImage, OH_Drawing_Image_Info* cImageInfo) 78 { 79 if (cImage == nullptr || cImageInfo == nullptr) { 80 g_drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 81 return; 82 } 83 ImageInfo imageInfo = CastToImage(cImage)->GetImageInfo(); 84 85 cImageInfo->width = imageInfo.GetWidth(); 86 cImageInfo->height = imageInfo.GetHeight(); 87 cImageInfo->colorType = static_cast<OH_Drawing_ColorFormat>(imageInfo.GetColorType()); 88 cImageInfo->alphaType = static_cast<OH_Drawing_AlphaFormat>(imageInfo.GetAlphaType()); 89 }