• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_DIALOG_THEME_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_DIALOG_THEME_H
18 
19 #include "base/utils/system_properties.h"
20 #include "core/common/container.h"
21 #include "core/components/common/properties/color.h"
22 #include "core/components/common/properties/edge.h"
23 #include "core/components/common/properties/radius.h"
24 #include "core/components/common/properties/text_style.h"
25 #include "core/components/theme/theme.h"
26 #include "core/components/theme/theme_constants.h"
27 #include "core/components/theme/theme_constants_defines.h"
28 
29 namespace OHOS::Ace {
30 namespace {
31 constexpr double PRIMARY_RGBA_OPACITY = 0.9f;
32 constexpr double SECONDARY_RGBA_OPACITY = 0.6f;
33 constexpr int DEFAULT_ANIMATION_DURATION_OUT = 220;
34 constexpr int DEFAULT_ANIMATION_DURATION_IN = 250;
35 } // namespace
36 /**
37  * DialogTheme defines color and styles of DialogComponent. DialogTheme should be built
38  * using DialogTheme::Builder.
39  */
40 class DialogTheme : public virtual Theme {
41     DECLARE_ACE_TYPE(DialogTheme, Theme);
42 
43 public:
44     class Builder {
45     public:
46         Builder() = default;
47         ~Builder() = default;
48 
Build(const RefPtr<ThemeConstants> & themeConstants)49         RefPtr<DialogTheme> Build(const RefPtr<ThemeConstants>& themeConstants) const
50         {
51             RefPtr<DialogTheme> theme = AceType::Claim(new DialogTheme());
52             if (!themeConstants) {
53                 return theme;
54             }
55             // init theme from global data
56             ParseNewPattern(themeConstants, theme);
57             ParsePattern(themeConstants, theme);
58             return theme;
59         }
60 
ParsePattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<DialogTheme> & theme)61         void ParsePattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<DialogTheme>& theme) const
62         {
63             auto themeStyle = themeConstants->GetThemeStyle();
64             if (!themeStyle) {
65                 return;
66             }
67             RefPtr<ThemeStyle> dialogPattern = themeConstants->GetPatternByName(THEME_PATTERN_DIALOG);
68             if (!dialogPattern) {
69                 return;
70             }
71             theme->backgroundColor_ = dialogPattern->GetAttr<Color>(PATTERN_BG_COLOR, Color(0xd9ffffff));
72             theme->titleTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("title_text_color", Color::BLACK));
73             theme->titleTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("title_text_font_size", 20.0_fp));
74             theme->titleTextStyle_.SetFontWeight(FontWeight::MEDIUM);
75             theme->subtitleTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("subtitle_text_color", Color::BLACK));
76             theme->subtitleTextStyle_.SetFontSize(
77                 dialogPattern->GetAttr<Dimension>("subtitle_text_font_size", 14.0_fp));
78             theme->contentTextStyle_.SetTextColor(dialogPattern->GetAttr<Color>("content_text_color", Color::BLACK));
79             theme->contentTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("content_text_font_size", 16.0_fp));
80             theme->buttonBackgroundColor_ = dialogPattern->GetAttr<Color>("button_bg_color", Color::BLACK);
81             theme->radius_ = Radius(dialogPattern->GetAttr<Dimension>("radius", 24.0_vp));
82             theme->dividerLength_ = dialogPattern->GetAttr<Dimension>(DIALOG_DIVIDER_LENGTH, 24.0_vp);
83             theme->dividerBetweenButtonWidth_ =
84                 dialogPattern->GetAttr<Dimension>(DIALOG_DIVIDER_BETWEEN_BUTTON_WIDTH, 2.0_px);
85             theme->dividerColor_ = dialogPattern->GetAttr<Color>("divider_color", Color(0x33000000));
86 
87             auto defaultPadding = dialogPattern->GetAttr<Dimension>(DIALOG_CONTENT_TOP_PADDING, 24.0_vp);
88             theme->contentAdjustPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, 0.0_vp);
89             theme->defaultPaddingBottomFixed_ =
90                 dialogPattern->GetAttr<Dimension>("default_padding_bottom_fixed", 24.0_vp);
91             theme->defaultDialogMarginBottom_ =
92                 dialogPattern->GetAttr<Dimension>("default_dialog_margin_bottom", 16.0_vp);
93             theme->buttonHighlightBgColor_ =
94                 dialogPattern->GetAttr<Color>("button_bg_highlight_color", Color(0xff007dff));
95             theme->buttonHighlightFontColor_ = dialogPattern->GetAttr<Color>("first_button_text_color", Color::WHITE);
96             theme->buttonDefaultBgColor_ = dialogPattern->GetAttr<Color>("button_default_bg_color", Color::TRANSPARENT);
97             theme->buttonDefaultFontColor_ =
98                 dialogPattern->GetAttr<Color>("button_default_font_color", Color(0xff007dff));
99             theme->buttonPaddingBottom_ = dialogPattern->GetAttr<Dimension>("button_padding_bottom", 16.0_vp);
100             theme->singleButtonPaddingStart_ =
101                 dialogPattern->GetAttr<Dimension>("single_button_padding_start", 16.0_vp);
102             theme->singleButtonPaddingEnd_ = dialogPattern->GetAttr<Dimension>("single_button_padding_end", 16.0_vp);
103             theme->mutiButtonPaddingStart_ = dialogPattern->GetAttr<Dimension>("muti_button_padding_start", 16.0_vp);
104             theme->mutiButtonPaddingEnd_ = dialogPattern->GetAttr<Dimension>("muti_button_padding_end", 16.0_vp);
105             theme->mutiButtonPaddingHorizontal_ =
106                 dialogPattern->GetAttr<Dimension>("muti_button_padding_horizontal", 8.0_vp);
107             theme->mutiButtonPaddingVertical_ =
108                 dialogPattern->GetAttr<Dimension>("muti_button_padding_vertical", 4.0_vp);
109             theme->multipleDialogDisplay_ = dialogPattern->GetAttr<std::string>("multiple_dialog_display", "stack");
110             theme->actionsPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_actions_left", 16.0_vp),
111                 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_top", 8.0_vp),
112                 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_right", 16.0_vp),
113                 dialogPattern->GetAttr<Dimension>("dialog_padding_actions_bottom", 16.0_vp));
114             theme->buttonWithContentPadding_ =
115                 dialogPattern->GetAttr<Dimension>("dialog_buttonwithcontent_padding", 8.0_vp);
116             if (Container::LessThanAPIVersion(PlatformVersion::VERSION_ELEVEN)) {
117                 theme->expandDisplay_ = false;
118             } else {
119                 std::string expandDisplay = dialogPattern->GetAttr<std::string>("dialog_expand_display", "");
120                 theme->expandDisplay_ = (expandDisplay == "true");
121             }
122             if (SystemProperties::GetDeviceType() != DeviceType::CAR) {
123                 return;
124             }
125             auto titlePadding = dialogPattern->GetAttr<Dimension>(DIALOG_TITLE_TOP_PADDING, 0.0_vp);
126             auto actionsTopPadding = dialogPattern->GetAttr<Dimension>(DIALOG_ACTIONS_TOP_PADDING, 0.0_vp);
127             theme->titleAdjustPadding_ = Edge(defaultPadding, titlePadding, defaultPadding, titlePadding);
128             theme->titleDefaultPadding_ = Edge(defaultPadding, titlePadding, defaultPadding, titlePadding);
129             theme->defaultPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, defaultPadding);
130             theme->adjustPadding_ = Edge(defaultPadding, defaultPadding, defaultPadding, 0.0_vp);
131             theme->contentDefaultPadding_ = Edge(defaultPadding, 0.0_vp, defaultPadding, defaultPadding);
132             theme->contentAdjustPadding_ = Edge(defaultPadding, 0.0_vp, defaultPadding, 0.0_vp);
133             theme->buttonHeight_ = dialogPattern->GetAttr<Dimension>(DIALOG_BUTTON_HEIGHT, 0.0_vp);
134             theme->titleMaxLines_ = static_cast<uint32_t>(dialogPattern->GetAttr<int32_t>(DIALOG_TITLE_MAX_LINES, 2));
135             theme->buttonSpacingHorizontal_ = actionsTopPadding;
136             theme->commonButtonTextColor_ =
137                 dialogPattern->GetAttr<Color>(DIALOG_COMMON_BUTTON_TEXT_COLOR, Color::WHITE);
138             theme->buttonMinTextSize_ = dialogPattern->GetAttr<Dimension>(DIALOG_MIN_BUTTON_TEXT_SIZE, 10.0_vp);
139             theme->minButtonWidth_ = dialogPattern->GetAttr<Dimension>(DIALOG_MIN_BUTTON_WIDTH, 104.0_vp);
140             theme->maxButtonWidth_ = dialogPattern->GetAttr<Dimension>(DIALOG_MAX_BUTTON_WIDTH, 260.0_vp);
141             theme->maskColorEnd_ = dialogPattern->GetAttr<Color>(DIALOG_MASK_COLOR_END, Color::WHITE);
142             // pattern config
143             theme->titleTextStyle_.SetFontSize(dialogPattern->GetAttr<Dimension>("title_text_font_size", 20.0_vp));
144             theme->titleMinFontSize_ = dialogPattern->GetAttr<Dimension>("title_text_font_size_min", 20.0_vp);
145             theme->commonButtonBgColor_ = dialogPattern->GetAttr<Color>("common_button_bg_color", Color::GRAY);
146             theme->emphasizeButtonBgColor_ = dialogPattern->GetAttr<Color>("first_button_bg_color", Color::BLACK);
147             theme->emphasizeButtonTextColor_ = dialogPattern->GetAttr<Color>("first_button_text_color", Color::WHITE);
148             theme->buttonTextSize_ = dialogPattern->GetAttr<Dimension>("button_text_font_size", 16.0_vp);
149             theme->buttonClickedColor_ = dialogPattern->GetAttr<Color>("button_bg_color_clicked", Color::BLACK);
150             theme->contentTextStyle_.SetFontSize(themeStyle->GetAttr<Dimension>("content_text_font_size", 16.0_vp));
151             theme->contentMinFontSize_ = themeStyle->GetAttr<Dimension>("content_text_font_size_min", 16.0_vp);
152         }
153 
ParseNewPattern(const RefPtr<ThemeConstants> & themeConstants,const RefPtr<DialogTheme> & theme)154         void ParseNewPattern(const RefPtr<ThemeConstants>& themeConstants, const RefPtr<DialogTheme>& theme) const
155         {
156             RefPtr<ThemeStyle> dialogPattern = themeConstants->GetPatternByName(THEME_PATTERN_DIALOG);
157             if (!dialogPattern) {
158                 return;
159             }
160             theme->titleMinFontSize_ = dialogPattern->GetAttr<Dimension>("dialog_title_text_font_size_min", 15.0_fp);
161             theme->contentMinFontSize_ = dialogPattern->GetAttr<Dimension>("content_text_font_size_min", 16.0_fp);
162             auto titleMaxLines = dialogPattern->GetAttr<int>("dialog_title_text_max_lines", 2);
163             theme->titleMaxLines_ = titleMaxLines < 0 ? theme->titleMaxLines_ : static_cast<uint32_t>(titleMaxLines);
164             theme->defaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp),
165                 dialogPattern->GetAttr<Dimension>("dialog_padding_top", 24.0_vp),
166                 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp),
167                 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom", 24.0_vp));
168             theme->adjustPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left_adjust", 24.0_vp),
169                 dialogPattern->GetAttr<Dimension>("dialog_padding_top_adjust", 24.0_vp),
170                 dialogPattern->GetAttr<Dimension>("dialog_padding_right_adjust", 24.0_vp),
171                 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom_adjust", 0.0_vp));
172             theme->titleDefaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp),
173                 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp),
174                 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp),
175                 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp));
176             theme->titleAdjustPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left_adjust", 24.0_vp),
177                 dialogPattern->GetAttr<Dimension>("button_title_padding_vertical", 14.0_vp),
178                 dialogPattern->GetAttr<Dimension>("dialog_padding_right_adjust", 24.0_vp),
179                 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom_adjust", 0.0_vp));
180             theme->contentDefaultPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_left", 24.0_vp),
181                 dialogPattern->GetAttr<Dimension>("dialog_padding_top", 24.0_vp),
182                 dialogPattern->GetAttr<Dimension>("dialog_padding_right", 24.0_vp),
183                 dialogPattern->GetAttr<Dimension>("dialog_padding_bottom", 24.0_vp));
184             theme->buttonPaddingLeft_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_padding_min", 4.0_vp).Value(),
185                 0.0, 0.0, 0.0, DimensionUnit::VP);
186             theme->buttonPaddingRight_ = Edge(0.0, 0.0,
187                 dialogPattern->GetAttr<Dimension>("dialog_padding_min", 4.0_vp).Value(), 0.0, DimensionUnit::VP);
188             theme->buttonPaddingCenter_ = Edge(0.0,
189                 dialogPattern->GetAttr<Dimension>("dialog_padding_mid", 8.0_vp).Value(),
190                 0.0, dialogPattern->GetAttr<Dimension>("dialog_padding_mid", 8.0_vp).Value(), DimensionUnit::VP);
191             theme->buttonSpacingHorizontal_ = dialogPattern->GetAttr<Dimension>("dialog_button_spacing_vertical",
192                 8.0_vp);
193             theme->buttonSpacingVertical_ = dialogPattern->GetAttr<Dimension>("dialog_button_spacing_vertical",
194                 8.0_vp);
195             theme->buttonClickedColor_ = dialogPattern->GetAttr<Color>("button_color_clicked", Color(0x19182431));
196             theme->frameStart_ = dialogPattern->GetAttr<double>("dialog_frame_start", 0.0f);
197             theme->frameEnd_ = dialogPattern->GetAttr<double>("dialog_frame_end", 1.0f);
198             theme->scaleStart_ = dialogPattern->GetAttr<double>("dialog_scale_start", 0.85f);
199             theme->scaleEnd_ = dialogPattern->GetAttr<double>("dialog_scale_end", 1.0f);
200             theme->opacityStart_ = dialogPattern->GetAttr<double>("dialog_opacity_start", 0.0f);
201             theme->opacityEnd_ = dialogPattern->GetAttr<double>("dialog_opacity_end", 1.0f);
202             theme->maskColorStart_ = dialogPattern->GetAttr<Color>("dialog_mask_color_start", Color(0x00000000));
203             theme->maskColorEnd_ = dialogPattern->GetAttr<Color>("dialog_mask_color_end", Color(0x33000000));
204             theme->animationDurationIn_ = dialogPattern->GetAttr<int>("dialog_animation_duration_in",
205                 DEFAULT_ANIMATION_DURATION_IN);
206             theme->animationDurationOut_ = dialogPattern->GetAttr<int>("dialog_animation_duration_out",
207                 DEFAULT_ANIMATION_DURATION_OUT);
208             theme->translateValue_ = Dimension(dialogPattern->GetAttr<double>("dialog_translate", 500.0f),
209                 DimensionUnit::PX);
210             theme->dividerWidth_ = dialogPattern->GetAttr<Dimension>("dialog_divider_width", 1.0_vp);
211             theme->dividerHeight_ = dialogPattern->GetAttr<Dimension>("dialog_divider_height", 24.0_vp);
212             theme->dividerPadding_ = Edge(dialogPattern->GetAttr<Dimension>("dialog_divider_padding_horizon", 4.0_vp),
213                 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_vertical", 6.0_vp),
214                 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_horizon", 4.0_vp),
215                 dialogPattern->GetAttr<Dimension>("dialog_divider_padding_vertical", 6.0_vp));
216             theme->marginBottom_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_bottom", 16.0_vp);
217             theme->marginLeft_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_start", 12.0_vp);
218             theme->marginRight_ = dialogPattern->GetAttr<Dimension>("dialog_dimension_end", 12.0_vp);
219         }
220     };
221 
222     ~DialogTheme() override = default;
223 
GetRadius()224     const Radius& GetRadius() const
225     {
226         return radius_;
227     }
228 
GetBackgroundColor()229     const Color& GetBackgroundColor() const
230     {
231         return backgroundColor_;
232     }
233 
GetCommonButtonBgColor()234     const Color& GetCommonButtonBgColor() const
235     {
236         return commonButtonBgColor_;
237     }
238 
GetEmphasizeButtonBgColor()239     const Color& GetEmphasizeButtonBgColor() const
240     {
241         return emphasizeButtonBgColor_;
242     }
243 
GetTitleTextStyle()244     const TextStyle& GetTitleTextStyle() const
245     {
246         return titleTextStyle_;
247     }
248 
GetSubTitleTextStyle()249     const TextStyle& GetSubTitleTextStyle() const
250     {
251         return subtitleTextStyle_;
252     }
253 
GetTitleMinFontSize()254     const Dimension& GetTitleMinFontSize() const
255     {
256         return titleMinFontSize_;
257     }
258 
GetContentMinFontSize()259     const Dimension& GetContentMinFontSize() const
260     {
261         return contentMinFontSize_;
262     }
263 
GetTitleMaxLines()264     uint32_t GetTitleMaxLines() const
265     {
266         return titleMaxLines_;
267     }
268 
GetContentTextStyle()269     const TextStyle& GetContentTextStyle() const
270     {
271         return contentTextStyle_;
272     }
273 
GetDefaultPadding()274     const Edge& GetDefaultPadding() const
275     {
276         return defaultPadding_;
277     }
278 
GetAdjustPadding()279     const Edge& GetAdjustPadding() const
280     {
281         return adjustPadding_;
282     }
283 
GetTitleDefaultPadding()284     const Edge& GetTitleDefaultPadding() const
285     {
286         return titleDefaultPadding_;
287     }
288 
GetTitleAdjustPadding()289     const Edge& GetTitleAdjustPadding() const
290     {
291         return titleAdjustPadding_;
292     }
293 
GetContentDefaultPadding()294     const Edge& GetContentDefaultPadding() const
295     {
296         return contentDefaultPadding_;
297     }
298 
GetContentAdjustPadding()299     const Edge& GetContentAdjustPadding() const
300     {
301         return contentAdjustPadding_;
302     }
303 
GetActionsPadding()304     const Edge& GetActionsPadding() const
305     {
306         return actionsPadding_;
307     }
308 
GetButtonPaddingLeft()309     const Edge& GetButtonPaddingLeft() const
310     {
311         return buttonPaddingLeft_;
312     }
313 
GetButtonPaddingRight()314     const Edge& GetButtonPaddingRight() const
315     {
316         return buttonPaddingRight_;
317     }
318 
GetButtonPaddingCenter()319     const Edge& GetButtonPaddingCenter() const
320     {
321         return buttonPaddingCenter_;
322     }
323 
GetButtonPaddingBottom()324     const Dimension& GetButtonPaddingBottom() const
325     {
326         return buttonPaddingBottom_;
327     }
328 
GetSingleButtonPaddingStart()329     const Dimension& GetSingleButtonPaddingStart() const
330     {
331         return singleButtonPaddingStart_;
332     }
333 
GetSingleButtonPaddingEnd()334     const Dimension& GetSingleButtonPaddingEnd() const
335     {
336         return singleButtonPaddingEnd_;
337     }
338 
GetMutiButtonPaddingStart()339     const Dimension& GetMutiButtonPaddingStart() const
340     {
341         return mutiButtonPaddingStart_;
342     }
343 
GetMutiButtonPaddingEnd()344     const Dimension& GetMutiButtonPaddingEnd() const
345     {
346         return mutiButtonPaddingEnd_;
347     }
348 
GetMutiButtonPaddingHorizontal()349     const Dimension& GetMutiButtonPaddingHorizontal() const
350     {
351         return mutiButtonPaddingHorizontal_;
352     }
353 
GetMutiButtonPaddingVertical()354     const Dimension& GetMutiButtonPaddingVertical() const
355     {
356         return mutiButtonPaddingVertical_;
357     }
358 
GetButtonSpacingHorizontal()359     const Dimension& GetButtonSpacingHorizontal() const
360     {
361         return buttonSpacingHorizontal_;
362     }
363 
GetButtonSpacingVertical()364     const Dimension& GetButtonSpacingVertical() const
365     {
366         return buttonSpacingVertical_;
367     }
368 
GetDividerLength()369     const Dimension& GetDividerLength() const
370     {
371         return dividerLength_;
372     }
373 
GetDividerBetweenButtonWidth_()374     const Dimension& GetDividerBetweenButtonWidth_() const
375     {
376         return dividerBetweenButtonWidth_;
377     }
378 
GetButtonBackgroundColor()379     const Color& GetButtonBackgroundColor() const
380     {
381         return buttonBackgroundColor_;
382     }
383 
GetButtonClickedColor()384     const Color& GetButtonClickedColor() const
385     {
386         return buttonClickedColor_;
387     }
388 
GetButtonHighlightBgColor()389     const Color& GetButtonHighlightBgColor() const
390     {
391         return buttonHighlightBgColor_;
392     }
393 
GetButtonHighlightFontColor()394     const Color& GetButtonHighlightFontColor() const
395     {
396         return buttonHighlightFontColor_;
397     }
398 
GetButtonDefaultBgColor()399     const Color& GetButtonDefaultBgColor() const
400     {
401         return buttonDefaultBgColor_;
402     }
403 
GetButtonDefaultFontColor()404     const Color& GetButtonDefaultFontColor() const
405     {
406         return buttonDefaultFontColor_;
407     }
408 
GetFrameStart()409     double GetFrameStart() const
410     {
411         return frameStart_;
412     }
413 
GetFrameEnd()414     double GetFrameEnd() const
415     {
416         return frameEnd_;
417     }
418 
GetScaleStart()419     double GetScaleStart() const
420     {
421         return scaleStart_;
422     }
423 
GetScaleEnd()424     double GetScaleEnd() const
425     {
426         return scaleEnd_;
427     }
428 
GetOpacityStart()429     double GetOpacityStart() const
430     {
431         return opacityStart_;
432     }
433 
GetOpacityEnd()434     double GetOpacityEnd() const
435     {
436         return opacityEnd_;
437     }
438 
GetTranslateValue()439     const Dimension& GetTranslateValue() const
440     {
441         return translateValue_;
442     }
443 
GetMaskColorStart()444     const Color& GetMaskColorStart() const
445     {
446         return maskColorStart_;
447     }
448 
GetMaskColorEnd()449     const Color& GetMaskColorEnd() const
450     {
451         return maskColorEnd_;
452     }
453 
GetCommonButtonTextColor()454     const Color& GetCommonButtonTextColor() const
455     {
456         return commonButtonTextColor_;
457     }
458 
GetEmphasizeButtonTextColor()459     const Color& GetEmphasizeButtonTextColor() const
460     {
461         return emphasizeButtonTextColor_;
462     }
463 
GetOpacityAnimationDurIn()464     int32_t GetOpacityAnimationDurIn() const
465     {
466         return opacityAnimationDurIn_;
467     }
468 
GetAnimationDurationIn()469     int32_t GetAnimationDurationIn() const
470     {
471         return animationDurationIn_;
472     }
473 
GetAnimationDurationOut()474     int32_t GetAnimationDurationOut() const
475     {
476         return animationDurationOut_;
477     }
478 
GetDividerColor()479     const Color& GetDividerColor()
480     {
481         return dividerColor_;
482     }
483 
GetDividerWidth()484     const Dimension& GetDividerWidth()
485     {
486         return dividerWidth_;
487     }
488 
GetDividerHeight()489     const Dimension& GetDividerHeight()
490     {
491         return dividerHeight_;
492     }
493 
GetDividerPadding()494     const Edge& GetDividerPadding()
495     {
496         return dividerPadding_;
497     }
498 
GetMarginBottom()499     const Dimension& GetMarginBottom() const
500     {
501         return marginBottom_;
502     }
503 
GetMarginLeft()504     const Dimension& GetMarginLeft() const
505     {
506         return marginLeft_;
507     }
508 
GetMarginRight()509     const Dimension& GetMarginRight() const
510     {
511         return marginRight_;
512     }
513 
GetButtonHeight()514     const Dimension& GetButtonHeight() const
515     {
516         return buttonHeight_;
517     }
518 
GetButtonTextSize()519     const Dimension& GetButtonTextSize() const
520     {
521         return buttonTextSize_;
522     }
523 
GetMinButtonTextSize()524     const Dimension& GetMinButtonTextSize() const
525     {
526         return buttonMinTextSize_;
527     }
528 
GetDefaultPaddingBottomFixed()529     const Dimension& GetDefaultPaddingBottomFixed()
530     {
531         return defaultPaddingBottomFixed_;
532     }
533 
GetDefaultDialogMarginBottom()534     const Dimension& GetDefaultDialogMarginBottom()
535     {
536         return defaultDialogMarginBottom_;
537     }
GetMultipleDialogDisplay()538     const std::string& GetMultipleDialogDisplay()
539     {
540         return multipleDialogDisplay_;
541     }
542 
GetExpandDisplay()543     bool GetExpandDisplay() const
544     {
545         return expandDisplay_;
546     }
547 
GetButtonWithContentPadding()548     const Dimension& GetButtonWithContentPadding() const
549     {
550         return buttonWithContentPadding_;
551     }
552 protected:
553     DialogTheme() = default;
554 
555 private:
556     Radius radius_;
557     Color backgroundColor_;
558     TextStyle titleTextStyle_;
559     TextStyle subtitleTextStyle_;
560     TextStyle contentTextStyle_;
561     Dimension titleMinFontSize_;
562     Dimension contentMinFontSize_;
563     uint32_t titleMaxLines_ = 1;
564     Edge defaultPadding_;
565     Edge adjustPadding_;
566     Edge titleDefaultPadding_;
567     Edge titleAdjustPadding_;
568     Edge contentDefaultPadding_;
569     Edge contentAdjustPadding_;
570     Edge actionsPadding_;
571     Edge buttonPaddingLeft_;
572     Edge buttonPaddingRight_;
573     Edge buttonPaddingCenter_;
574     Dimension buttonSpacingHorizontal_;
575     Dimension buttonSpacingVertical_;
576     Dimension dividerLength_;
577     Dimension dividerBetweenButtonWidth_;
578     Color buttonBackgroundColor_;
579     Color buttonClickedColor_;
580     Color buttonHighlightBgColor_;
581     Color buttonHighlightFontColor_;
582     Color buttonDefaultBgColor_;
583     Color buttonDefaultFontColor_;
584     Color emphasizeButtonTextColor_;
585     Dimension translateValue_;
586     double frameStart_ = 0.0;
587     double frameEnd_ = 1.0;
588     double scaleStart_ = 0.0;
589     double scaleEnd_ = 1.0;
590     double opacityStart_ = 0.0;
591     double opacityEnd_ = 1.0;
592     int32_t animationDurationIn_ = 250;
593     int32_t opacityAnimationDurIn_ = 150;
594     int32_t animationDurationOut_ = 250;
595     Color maskColorStart_;
596     Color maskColorEnd_;
597     Color dividerColor_;
598     Color commonButtonBgColor_;
599     Color commonButtonTextColor_;
600     Color emphasizeButtonBgColor_;
601     Dimension dividerWidth_;
602     Dimension dividerHeight_;
603     Edge dividerPadding_;
604     Dimension marginLeft_;
605     Dimension marginRight_;
606     Dimension marginBottom_;
607     Dimension buttonHeight_;
608     Dimension buttonTextSize_;
609     Dimension buttonMinTextSize_;
610     Dimension minButtonWidth_;
611     Dimension maxButtonWidth_;
612     Dimension defaultPaddingBottomFixed_;
613     Dimension defaultDialogMarginBottom_;
614     Dimension buttonPaddingBottom_;
615     Dimension singleButtonPaddingStart_;
616     Dimension singleButtonPaddingEnd_;
617     Dimension mutiButtonPaddingStart_;
618     Dimension mutiButtonPaddingEnd_;
619     Dimension mutiButtonPaddingHorizontal_;
620     Dimension mutiButtonPaddingVertical_;
621     std::string multipleDialogDisplay_;
622     bool expandDisplay_ = false;
623     Dimension buttonWithContentPadding_;
624 };
625 
626 } // namespace OHOS::Ace
627 
628 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_DIALOG_THEME_H
629