• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)23 ImageComponent::ImageComponent(const std::string& src) : src_(src) {}
24 
CreateRenderNode()25 RefPtr<RenderNode> ImageComponent::CreateRenderNode()
26 {
27     return RenderImage::Create();
28 }
29 
CreateElement()30 RefPtr<Element> ImageComponent::CreateElement()
31 {
32     return AceType::MakeRefPtr<ImageElement>();
33 }
34 
SetSrc(const std::string & src)35 void ImageComponent::SetSrc(const std::string& src)
36 {
37     src_ = src;
38 }
39 
SetImageFill(const std::optional<Color> & color)40 void ImageComponent::SetImageFill(const std::optional<Color>& color)
41 {
42     fillColor_ = color;
43 }
44 
SetAlignment(const Alignment & alignment)45 void ImageComponent::SetAlignment(const Alignment& alignment)
46 {
47     alignment_ = alignment;
48 }
49 
GetAlignment() const50 const Alignment& ImageComponent::GetAlignment() const
51 {
52     return alignment_;
53 }
54 
GetBorder() const55 const Border& ImageComponent::GetBorder() const
56 {
57     return border_;
58 }
59 
GetSrc() const60 const std::string& ImageComponent::GetSrc() const
61 {
62     return src_;
63 }
64 
SetAlt(const std::string & alt)65 void ImageComponent::SetAlt(const std::string& alt)
66 {
67     alt_ = alt;
68 }
69 
GetAlt() const70 const std::string& ImageComponent::GetAlt() const
71 {
72     return alt_;
73 }
74 
SetColor(const std::optional<Color> & color)75 void ImageComponent::SetColor(const std::optional<Color>& color)
76 {
77     color_ = color;
78 }
79 
IsMatchTextDirection() const80 bool ImageComponent::IsMatchTextDirection() const
81 {
82     return matchTextDirection_;
83 }
84 
IsSrcSvgImage() const85 bool ImageComponent::IsSrcSvgImage() const
86 {
87     return IsSvgSuffix(src_);
88 }
89 
GetColor() const90 const std::optional<Color>& ImageComponent::GetColor() const
91 {
92     return color_;
93 }
94 
SetLoadSuccessEvent(const EventMarker & loadSuccessEvent)95 void ImageComponent::SetLoadSuccessEvent(const EventMarker& loadSuccessEvent)
96 {
97     loadSuccessEvent_ = loadSuccessEvent;
98 }
99 
GetLoadSuccessEvent() const100 const EventMarker& ImageComponent::GetLoadSuccessEvent() const
101 {
102     return loadSuccessEvent_;
103 }
104 
SetLoadFailEvent(const EventMarker & loadFailEvent)105 void ImageComponent::SetLoadFailEvent(const EventMarker& loadFailEvent)
106 {
107     loadFailEvent_ = loadFailEvent;
108 }
109 
GetLoadFailEvent() const110 const EventMarker& ImageComponent::GetLoadFailEvent() const
111 {
112     return loadFailEvent_;
113 }
114 
SetSvgAnimatorFinishEvent(const EventMarker & svgAnimatorFinishEvent)115 void ImageComponent::SetSvgAnimatorFinishEvent(const EventMarker& svgAnimatorFinishEvent)
116 {
117     svgAnimatorFinishEvent_ = svgAnimatorFinishEvent;
118 }
119 
GetSvgAnimatorFinishEvent() const120 const EventMarker& ImageComponent::GetSvgAnimatorFinishEvent() const
121 {
122     return svgAnimatorFinishEvent_;
123 }
124 
GetResourceId() const125 InternalResource::ResourceId ImageComponent::GetResourceId() const
126 {
127     return resourceId_;
128 }
129 
SetResourceId(InternalResource::ResourceId resourceId)130 void ImageComponent::SetResourceId(InternalResource::ResourceId resourceId)
131 {
132     resourceId_ = resourceId;
133 }
134 
SetBorder(const Border & border)135 void ImageComponent::SetBorder(const Border& border)
136 {
137     border_ = border;
138 }
139 
SetMatchTextDirection(bool matchTextDirection)140 void ImageComponent::SetMatchTextDirection(bool matchTextDirection)
141 {
142     matchTextDirection_ = matchTextDirection;
143 }
144 
SetFitMaxSize(bool fitMaxSize)145 void ImageComponent::SetFitMaxSize(bool fitMaxSize)
146 {
147     fitMaxSize_ = fitMaxSize;
148 }
149 
SetImageFit(ImageFit imageFit)150 void ImageComponent::SetImageFit(ImageFit imageFit)
151 {
152     imageFit_ = imageFit;
153 }
154 
SetImageInterpolation(ImageInterpolation imageInterpolation)155 void ImageComponent::SetImageInterpolation(ImageInterpolation imageInterpolation)
156 {
157     imageInterpolation_ = imageInterpolation;
158 }
159 
SetImageRenderMode(ImageRenderMode imageRenderMode)160 void ImageComponent::SetImageRenderMode(ImageRenderMode imageRenderMode)
161 {
162     imageRenderMode_ = imageRenderMode;
163 }
164 
SetImageRepeat(ImageRepeat imageRepeat)165 void ImageComponent::SetImageRepeat(ImageRepeat imageRepeat)
166 {
167     imageRepeat_ = imageRepeat;
168 }
169 
SetImageSourceSize(const std::pair<Dimension,Dimension> & sourceSize)170 void ImageComponent::SetImageSourceSize(const std::pair<Dimension, Dimension>& sourceSize)
171 {
172     imageSourceSize_ = sourceSize;
173 }
174 
SetUseSkiaSvg(bool useSkiaSvg)175 void ImageComponent::SetUseSkiaSvg(bool useSkiaSvg)
176 {
177     useSkiaSvg_ = useSkiaSvg;
178 }
179 
SetAutoResize(bool autoResize)180 void ImageComponent::SetAutoResize(bool autoResize)
181 {
182     autoResize_ = autoResize;
183 }
184 
SetSyncMode(bool syncMode)185 void ImageComponent::SetSyncMode(bool syncMode)
186 {
187     syncMode_ = syncMode;
188 }
189 
GetSyncMode()190 bool ImageComponent::GetSyncMode()
191 {
192     return syncMode_;
193 }
194 
MakeFromOtherWithoutSourceAndEvent(const RefPtr<ImageComponent> & other)195 RefPtr<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() const214 const std::optional<Color>& ImageComponent::GetImageFill() const
215 {
216     return fillColor_;
217 }
218 
GetFitMaxSize() const219 bool ImageComponent::GetFitMaxSize() const
220 {
221     return fitMaxSize_;
222 }
223 
GetImageFit() const224 ImageFit ImageComponent::GetImageFit() const
225 {
226     return imageFit_;
227 }
228 
GetImageInterpolation() const229 ImageInterpolation ImageComponent::GetImageInterpolation() const
230 {
231     return imageInterpolation_;
232 }
233 
GetImageRenderMode() const234 ImageRenderMode ImageComponent::GetImageRenderMode() const
235 {
236     return imageRenderMode_;
237 }
238 
GetImageRepeat() const239 ImageRepeat ImageComponent::GetImageRepeat() const
240 {
241     return imageRepeat_;
242 }
243 
GetImageSourceSize() const244 const std::pair<Dimension, Dimension>& ImageComponent::GetImageSourceSize() const
245 {
246     return imageSourceSize_;
247 }
248 
GetUseSkiaSvg() const249 bool ImageComponent::GetUseSkiaSvg() const
250 {
251     return useSkiaSvg_;
252 }
253 
GetAutoResize() const254 bool ImageComponent::GetAutoResize() const
255 {
256     return autoResize_;
257 }
258 
IsSvgSuffix(const std::string & src)259 bool 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)265 void ImageComponent::SetPixmap(const RefPtr<PixelMap>& pixmap)
266 {
267     pixmap_ = pixmap;
268 }
269 
GetPixmap() const270 const RefPtr<PixelMap>& ImageComponent::GetPixmap() const
271 {
272     return pixmap_;
273 }
274 
SetHasObjectPosition(bool hasObjectPosition)275 void ImageComponent::SetHasObjectPosition(bool hasObjectPosition)
276 {
277     hasObjectPosition_ = hasObjectPosition;
278 }
279 
GetHasObjectPosition() const280 bool ImageComponent::GetHasObjectPosition() const
281 {
282     return hasObjectPosition_;
283 }
284 
SetImageObjectPosition(const ImageObjectPosition & imageObjectPosition)285 void ImageComponent::SetImageObjectPosition(const ImageObjectPosition& imageObjectPosition)
286 {
287     imageObjectPosition_ = imageObjectPosition;
288     SetHasObjectPosition(true);
289 }
290 
GetImageObjectPosition() const291 const ImageObjectPosition& ImageComponent::GetImageObjectPosition() const
292 {
293     return imageObjectPosition_;
294 }
295 
GetCopyOption() const296 const CopyOptions& ImageComponent::GetCopyOption() const
297 {
298     return copyOption_;
299 }
300 
SetCopyOption(const CopyOptions & copyOption)301 void ImageComponent::SetCopyOption(const CopyOptions& copyOption)
302 {
303     copyOption_ = copyOption;
304 }
305 
306 } // namespace OHOS::Ace
307