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