• 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     useSkiaSvg_ = useSkiaSvg;
179 }
180 
SetAutoResize(bool autoResize)181 void ImageComponent::SetAutoResize(bool autoResize)
182 {
183     autoResize_ = autoResize;
184 }
185 
SetSyncMode(bool syncMode)186 void ImageComponent::SetSyncMode(bool syncMode)
187 {
188     syncMode_ = syncMode;
189 }
190 
GetSyncMode()191 bool ImageComponent::GetSyncMode()
192 {
193     return syncMode_;
194 }
195 
MakeFromOtherWithoutSourceAndEvent(const RefPtr<ImageComponent> & other)196 RefPtr<ImageComponent> ImageComponent::MakeFromOtherWithoutSourceAndEvent(const RefPtr<ImageComponent>& other)
197 {
198     RefPtr<ImageComponent> imageComponent = AceType::MakeRefPtr<ImageComponent>("");
199     imageComponent->SetAlignment(other->GetAlignment());
200     imageComponent->SetImageFill(other->GetImageFill());
201     imageComponent->SetColor(other->GetColor());
202     imageComponent->SetBorder(other->GetBorder());
203     imageComponent->SetFitMaxSize(other->GetFitMaxSize());
204     imageComponent->SetMatchTextDirection(other->IsMatchTextDirection());
205     imageComponent->SetImageFit(other->GetImageFit());
206     imageComponent->SetImageInterpolation(other->GetImageInterpolation());
207     imageComponent->SetImageRenderMode(other->GetImageRenderMode());
208     imageComponent->SetImageRepeat(other->GetImageRepeat());
209     imageComponent->SetImageSourceSize(other->GetImageSourceSize());
210     imageComponent->SetUseSkiaSvg(other->GetUseSkiaSvg());
211     imageComponent->SetAutoResize(other->GetAutoResize());
212     return imageComponent;
213 }
214 
GetImageFill() const215 const std::optional<Color>& ImageComponent::GetImageFill() const
216 {
217     return fillColor_;
218 }
219 
GetFitMaxSize() const220 bool ImageComponent::GetFitMaxSize() const
221 {
222     return fitMaxSize_;
223 }
224 
GetImageFit() const225 ImageFit ImageComponent::GetImageFit() const
226 {
227     return imageFit_;
228 }
229 
GetImageInterpolation() const230 ImageInterpolation ImageComponent::GetImageInterpolation() const
231 {
232     return imageInterpolation_;
233 }
234 
GetImageRenderMode() const235 ImageRenderMode ImageComponent::GetImageRenderMode() const
236 {
237     return imageRenderMode_;
238 }
239 
GetImageRepeat() const240 ImageRepeat ImageComponent::GetImageRepeat() const
241 {
242     return imageRepeat_;
243 }
244 
GetImageSourceSize() const245 const std::pair<Dimension, Dimension>& ImageComponent::GetImageSourceSize() const
246 {
247     return imageSourceSize_;
248 }
249 
GetUseSkiaSvg() const250 bool ImageComponent::GetUseSkiaSvg() const
251 {
252     return useSkiaSvg_;
253 }
254 
GetAutoResize() const255 bool ImageComponent::GetAutoResize() const
256 {
257     return autoResize_;
258 }
259 
IsSvgSuffix(const std::string & src)260 bool ImageComponent::IsSvgSuffix(const std::string& src)
261 {
262     // 4 is the length of ".svg".
263     return (src.size() > 4 && src.substr(src.size() - 4) == ".svg");
264 }
265 
SetPixmap(const RefPtr<PixelMap> & pixmap)266 void ImageComponent::SetPixmap(const RefPtr<PixelMap>& pixmap)
267 {
268     pixmap_ = pixmap;
269 }
270 
GetPixmap() const271 const RefPtr<PixelMap>& ImageComponent::GetPixmap() const
272 {
273     return pixmap_;
274 }
275 
SetHasObjectPosition(bool hasObjectPosition)276 void ImageComponent::SetHasObjectPosition(bool hasObjectPosition)
277 {
278     hasObjectPosition_ = hasObjectPosition;
279 }
280 
GetHasObjectPosition() const281 bool ImageComponent::GetHasObjectPosition() const
282 {
283     return hasObjectPosition_;
284 }
285 
SetImageObjectPosition(const ImageObjectPosition & imageObjectPosition)286 void ImageComponent::SetImageObjectPosition(const ImageObjectPosition& imageObjectPosition)
287 {
288     imageObjectPosition_ = imageObjectPosition;
289     SetHasObjectPosition(true);
290 }
291 
GetImageObjectPosition() const292 const ImageObjectPosition& ImageComponent::GetImageObjectPosition() const
293 {
294     return imageObjectPosition_;
295 }
296 
GetCopyOption() const297 const CopyOptions& ImageComponent::GetCopyOption() const
298 {
299     return copyOption_;
300 }
301 
SetCopyOption(const CopyOptions & copyOption)302 void ImageComponent::SetCopyOption(const CopyOptions& copyOption)
303 {
304     copyOption_ = copyOption;
305 }
306 
307 } // namespace OHOS::Ace
308