| // Copyright 2013 The Flutter Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ | 
 | #define FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ | 
 |  | 
 | #include <glib-object.h> | 
 |  | 
 | G_BEGIN_DECLS | 
 |  | 
 | G_DECLARE_INTERFACE(FlSettings, fl_settings, FL, SETTINGS, GObject) | 
 |  | 
 | /** | 
 |  * FlClockFormat: | 
 |  * @FL_CLOCK_FORMAT_12H: 12-hour clock format. | 
 |  * @FL_CLOCK_FORMAT_24H: 24-hour clock format. | 
 |  * | 
 |  * Available clock formats. | 
 |  */ | 
 | typedef enum { | 
 |   // NOLINTBEGIN(readability-identifier-naming) | 
 |   FL_CLOCK_FORMAT_12H, | 
 |   FL_CLOCK_FORMAT_24H, | 
 |   // NOLINTEND(readability-identifier-naming) | 
 | } FlClockFormat; | 
 |  | 
 | /** | 
 |  * FlColorScheme: | 
 |  * @FL_COLOR_SCHEME_LIGHT: Prefer light theme. | 
 |  * @FL_COLOR_SCHEME_DARK: Prefer dark theme. | 
 |  * | 
 |  * Available color schemes. | 
 |  */ | 
 | typedef enum { | 
 |   // NOLINTBEGIN(readability-identifier-naming) | 
 |   FL_COLOR_SCHEME_LIGHT, | 
 |   FL_COLOR_SCHEME_DARK, | 
 |   // NOLINTEND(readability-identifier-naming) | 
 | } FlColorScheme; | 
 |  | 
 | /** | 
 |  * FlSettings: | 
 |  * #FlSettings is and object that provides desktop settings. | 
 |  */ | 
 | struct _FlSettingsInterface { | 
 |   GTypeInterface parent; | 
 |   FlClockFormat (*get_clock_format)(FlSettings* settings); | 
 |   FlColorScheme (*get_color_scheme)(FlSettings* settings); | 
 |   gboolean (*get_enable_animations)(FlSettings* settings); | 
 |   gboolean (*get_high_contrast)(FlSettings* settings); | 
 |   gdouble (*get_text_scaling_factor)(FlSettings* settings); | 
 | }; | 
 |  | 
 | /** | 
 |  * fl_settings_new: | 
 |  * | 
 |  * Creates a new settings instance. | 
 |  * | 
 |  * Returns: a new #FlSettings. | 
 |  */ | 
 | FlSettings* fl_settings_new(); | 
 |  | 
 | /** | 
 |  * fl_settings_get_clock_format: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * Whether the clock displays in 24-hour or 12-hour format. | 
 |  * | 
 |  * This corresponds to `org.gnome.desktop.interface.clock-format` in GNOME. | 
 |  * | 
 |  * Returns: an #FlClockFormat. | 
 |  */ | 
 | FlClockFormat fl_settings_get_clock_format(FlSettings* settings); | 
 |  | 
 | /** | 
 |  * fl_settings_get_color_scheme: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * The preferred color scheme for the user interface. | 
 |  * | 
 |  * This corresponds to `org.gnome.desktop.interface.color-scheme` in GNOME. | 
 |  * | 
 |  * Returns: an #FlColorScheme. | 
 |  */ | 
 | FlColorScheme fl_settings_get_color_scheme(FlSettings* settings); | 
 |  | 
 | /** | 
 |  * fl_settings_get_enable_animations: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * Whether animations should be enabled. | 
 |  * | 
 |  * This corresponds to `org.gnome.desktop.interface.enable-animations` in GNOME. | 
 |  * | 
 |  * Returns: %TRUE if animations are enabled. | 
 |  */ | 
 | gboolean fl_settings_get_enable_animations(FlSettings* settings); | 
 |  | 
 | /** | 
 |  * fl_settings_get_high_contrast: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * Whether to use high contrast theme. | 
 |  * | 
 |  * This corresponds to `org.gnome.desktop.a11y.interface.high-contrast` in | 
 |  * GNOME. | 
 |  * | 
 |  * Returns: %TRUE if high contrast is used. | 
 |  */ | 
 | gboolean fl_settings_get_high_contrast(FlSettings* settings); | 
 |  | 
 | /** | 
 |  * fl_settings_get_text_scaling_factor: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * Factor used to enlarge or reduce text display, without changing font size. | 
 |  * | 
 |  * This corresponds to `org.gnome.desktop.interface.text-scaling-factor` in | 
 |  * GNOME. | 
 |  * | 
 |  * Returns: a floating point number. | 
 |  */ | 
 | gdouble fl_settings_get_text_scaling_factor(FlSettings* settings); | 
 |  | 
 | /** | 
 |  * fl_settings_emit_changed: | 
 |  * @settings: an #FlSettings. | 
 |  * | 
 |  * Emits the "changed" signal. Used by FlSettings implementations to notify when | 
 |  * the desktop settings have changed. | 
 |  */ | 
 | void fl_settings_emit_changed(FlSettings* settings); | 
 |  | 
 | G_END_DECLS | 
 |  | 
 | #endif  // FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ |