1 /* 2 * Copyright (c) 2021 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 "core/components/image/image_component.h" 17 #include "core/components/common/properties/decoration.h" 18 #include "core/components/image/image_element.h" 19 #include "core/components/image/render_image.h" 20 21 namespace OHOS::Ace { 22 ImageComponent(const std::string & src)23ImageComponent::ImageComponent(const std::string& src) : src_(src) {} 24 CreateRenderNode()25RefPtr<RenderNode> ImageComponent::CreateRenderNode() 26 { 27 return RenderImage::Create(); 28 } 29 CreateElement()30RefPtr<Element> ImageComponent::CreateElement() 31 { 32 return AceType::MakeRefPtr<ImageElement>(); 33 } 34 SetSrc(const std::string & src)35void ImageComponent::SetSrc(const std::string& src) 36 { 37 src_ = src; 38 } 39 SetImageFill(const std::optional<Color> & color)40void ImageComponent::SetImageFill(const std::optional<Color>& color) 41 { 42 fillColor_ = color; 43 } 44 SetAlignment(const Alignment & alignment)45void ImageComponent::SetAlignment(const Alignment& alignment) 46 { 47 alignment_ = alignment; 48 } 49 GetAlignment() const50const Alignment& ImageComponent::GetAlignment() const 51 { 52 return alignment_; 53 } 54 GetBorder() const55const Border& ImageComponent::GetBorder() const 56 { 57 return border_; 58 } 59 GetSrc() const60const std::string& ImageComponent::GetSrc() const 61 { 62 return src_; 63 } 64 SetAlt(const std::string & alt)65void ImageComponent::SetAlt(const std::string& alt) 66 { 67 alt_ = alt; 68 } 69 GetAlt() const70const std::string& ImageComponent::GetAlt() const 71 { 72 return alt_; 73 } 74 SetColor(const std::optional<Color> & color)75void ImageComponent::SetColor(const std::optional<Color>& color) 76 { 77 color_ = color; 78 } 79 IsMatchTextDirection() const80bool ImageComponent::IsMatchTextDirection() const 81 { 82 return matchTextDirection_; 83 } 84 IsSrcSvgImage() const85bool ImageComponent::IsSrcSvgImage() const 86 { 87 return IsSvgSuffix(src_); 88 } 89 GetColor() const90const std::optional<Color>& ImageComponent::GetColor() const 91 { 92 return color_; 93 } 94 SetLoadSuccessEvent(const EventMarker & loadSuccessEvent)95void ImageComponent::SetLoadSuccessEvent(const EventMarker& loadSuccessEvent) 96 { 97 loadSuccessEvent_ = loadSuccessEvent; 98 } 99 GetLoadSuccessEvent() const100const EventMarker& ImageComponent::GetLoadSuccessEvent() const 101 { 102 return loadSuccessEvent_; 103 } 104 SetLoadFailEvent(const EventMarker & loadFailEvent)105void ImageComponent::SetLoadFailEvent(const EventMarker& loadFailEvent) 106 { 107 loadFailEvent_ = loadFailEvent; 108 } 109 GetLoadFailEvent() const110const EventMarker& ImageComponent::GetLoadFailEvent() const 111 { 112 return loadFailEvent_; 113 } 114 SetSvgAnimatorFinishEvent(const EventMarker & svgAnimatorFinishEvent)115void ImageComponent::SetSvgAnimatorFinishEvent(const EventMarker& svgAnimatorFinishEvent) 116 { 117 svgAnimatorFinishEvent_ = svgAnimatorFinishEvent; 118 } 119 GetSvgAnimatorFinishEvent() const120const EventMarker& ImageComponent::GetSvgAnimatorFinishEvent() const 121 { 122 return svgAnimatorFinishEvent_; 123 } 124 GetResourceId() const125InternalResource::ResourceId ImageComponent::GetResourceId() const 126 { 127 return resourceId_; 128 } 129 SetResourceId(InternalResource::ResourceId resourceId)130void ImageComponent::SetResourceId(InternalResource::ResourceId resourceId) 131 { 132 resourceId_ = resourceId; 133 } 134 SetBorder(const Border & border)135void ImageComponent::SetBorder(const Border& border) 136 { 137 border_ = border; 138 } 139 SetMatchTextDirection(bool matchTextDirection)140void ImageComponent::SetMatchTextDirection(bool matchTextDirection) 141 { 142 matchTextDirection_ = matchTextDirection; 143 } 144 SetFitMaxSize(bool fitMaxSize)145void ImageComponent::SetFitMaxSize(bool fitMaxSize) 146 { 147 fitMaxSize_ = fitMaxSize; 148 } 149 SetImageFit(ImageFit imageFit)150void ImageComponent::SetImageFit(ImageFit imageFit) 151 { 152 imageFit_ = imageFit; 153 } 154 SetImageInterpolation(ImageInterpolation imageInterpolation)155void ImageComponent::SetImageInterpolation(ImageInterpolation imageInterpolation) 156 { 157 imageInterpolation_ = imageInterpolation; 158 } 159 SetImageRenderMode(ImageRenderMode imageRenderMode)160void ImageComponent::SetImageRenderMode(ImageRenderMode imageRenderMode) 161 { 162 imageRenderMode_ = imageRenderMode; 163 } 164 SetImageRepeat(ImageRepeat imageRepeat)165void ImageComponent::SetImageRepeat(ImageRepeat imageRepeat) 166 { 167 imageRepeat_ = imageRepeat; 168 } 169 SetImageSourceSize(const std::pair<Dimension,Dimension> & sourceSize)170void ImageComponent::SetImageSourceSize(const std::pair<Dimension, Dimension>& sourceSize) 171 { 172 imageSourceSize_ = sourceSize; 173 } 174 SetUseSkiaSvg(bool useSkiaSvg)175void ImageComponent::SetUseSkiaSvg(bool useSkiaSvg) 176 { 177 useSkiaSvg_ = useSkiaSvg; 178 } 179 SetAutoResize(bool autoResize)180void ImageComponent::SetAutoResize(bool autoResize) 181 { 182 autoResize_ = autoResize; 183 } 184 SetSyncMode(bool syncMode)185void ImageComponent::SetSyncMode(bool syncMode) 186 { 187 syncMode_ = syncMode; 188 } 189 GetSyncMode()190bool ImageComponent::GetSyncMode() 191 { 192 return syncMode_; 193 } 194 MakeFromOtherWithoutSourceAndEvent(const RefPtr<ImageComponent> & other)195RefPtr<ImageComponent> ImageComponent::MakeFromOtherWithoutSourceAndEvent(const RefPtr<ImageComponent>& other) 196 { 197 RefPtr<ImageComponent> imageComponent = AceType::MakeRefPtr<ImageComponent>(""); 198 imageComponent->SetAlignment(other->GetAlignment()); 199 imageComponent->SetImageFill(other->GetImageFill()); 200 imageComponent->SetColor(other->GetColor()); 201 imageComponent->SetBorder(other->GetBorder()); 202 imageComponent->SetFitMaxSize(other->GetFitMaxSize()); 203 imageComponent->SetMatchTextDirection(other->IsMatchTextDirection()); 204 imageComponent->SetImageFit(other->GetImageFit()); 205 imageComponent->SetImageInterpolation(other->GetImageInterpolation()); 206 imageComponent->SetImageRenderMode(other->GetImageRenderMode()); 207 imageComponent->SetImageRepeat(other->GetImageRepeat()); 208 imageComponent->SetImageSourceSize(other->GetImageSourceSize()); 209 imageComponent->SetUseSkiaSvg(other->GetUseSkiaSvg()); 210 imageComponent->SetAutoResize(other->GetAutoResize()); 211 return imageComponent; 212 } 213 GetImageFill() const214const std::optional<Color>& ImageComponent::GetImageFill() const 215 { 216 return fillColor_; 217 } 218 GetFitMaxSize() const219bool ImageComponent::GetFitMaxSize() const 220 { 221 return fitMaxSize_; 222 } 223 GetImageFit() const224ImageFit ImageComponent::GetImageFit() const 225 { 226 return imageFit_; 227 } 228 GetImageInterpolation() const229ImageInterpolation ImageComponent::GetImageInterpolation() const 230 { 231 return imageInterpolation_; 232 } 233 GetImageRenderMode() const234ImageRenderMode ImageComponent::GetImageRenderMode() const 235 { 236 return imageRenderMode_; 237 } 238 GetImageRepeat() const239ImageRepeat ImageComponent::GetImageRepeat() const 240 { 241 return imageRepeat_; 242 } 243 GetImageSourceSize() const244const std::pair<Dimension, Dimension>& ImageComponent::GetImageSourceSize() const 245 { 246 return imageSourceSize_; 247 } 248 GetUseSkiaSvg() const249bool ImageComponent::GetUseSkiaSvg() const 250 { 251 return useSkiaSvg_; 252 } 253 GetAutoResize() const254bool ImageComponent::GetAutoResize() const 255 { 256 return autoResize_; 257 } 258 IsSvgSuffix(const std::string & src)259bool ImageComponent::IsSvgSuffix(const std::string& src) 260 { 261 // 4 is the length of ".svg". 262 return (src.size() > 4 && src.substr(src.size() - 4) == ".svg"); 263 } 264 SetPixmap(const RefPtr<PixelMap> & pixmap)265void ImageComponent::SetPixmap(const RefPtr<PixelMap>& pixmap) 266 { 267 pixmap_ = pixmap; 268 } 269 GetPixmap() const270const RefPtr<PixelMap>& ImageComponent::GetPixmap() const 271 { 272 return pixmap_; 273 } 274 SetHasObjectPosition(bool hasObjectPosition)275void ImageComponent::SetHasObjectPosition(bool hasObjectPosition) 276 { 277 hasObjectPosition_ = hasObjectPosition; 278 } 279 GetHasObjectPosition() const280bool ImageComponent::GetHasObjectPosition() const 281 { 282 return hasObjectPosition_; 283 } 284 SetImageObjectPosition(const ImageObjectPosition & imageObjectPosition)285void ImageComponent::SetImageObjectPosition(const ImageObjectPosition& imageObjectPosition) 286 { 287 imageObjectPosition_ = imageObjectPosition; 288 SetHasObjectPosition(true); 289 } 290 GetImageObjectPosition() const291const ImageObjectPosition& ImageComponent::GetImageObjectPosition() const 292 { 293 return imageObjectPosition_; 294 } 295 GetCopyOption() const296const CopyOptions& ImageComponent::GetCopyOption() const 297 { 298 return copyOption_; 299 } 300 SetCopyOption(const CopyOptions & copyOption)301void ImageComponent::SetCopyOption(const CopyOptions& copyOption) 302 { 303 copyOption_ = copyOption; 304 } 305 306 } // namespace OHOS::Ace 307