| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.accessibility; |
| |
| enum SettingsManagerStatus { |
| OK = 0; |
| ERROR = 1; |
| }; |
| |
| /// Specifies color correction mode. |
| enum ColorCorrection { |
| // No color correction enabled. |
| DISABLED = 0; |
| |
| // Color correction enabled for protoanomaly (red-green -- reduced sensitivity to red light). |
| CORRECT_PROTANOMALY = 1; |
| |
| // Color correction enabled for deuteranomaly (red-green -- reduced sensitivy to green light). |
| CORRECT_DEUTERANOMALY = 2; |
| |
| // Color correction enabled for tritanomaly (blue-yellow -- reduced sensitivity to blude light). |
| CORRECT_TRITANOMALY = 3; |
| }; |
| |
| /// Settings is used to represent all the Accessibility Settings along with Matrix |
| /// needed to apply Color Correction and Color Inversion. |
| /// This table will be used to transfer Settings information between different services to |
| /// either modify or get notified about Accessibility Settings. |
| table Settings { |
| /// When magnification_enabled == true, user can specify an area of the screen to be magnified. |
| /// Note that actually magnifying the region requires an addition input (gesture, button, etc.). |
| // TODO(FIDL-609): Default to false. |
| 1: bool magnification_enabled; |
| |
| /// Degree of magnification for magnified area. |
| // TODO(FIDL-609): Default to 1.0. |
| 2: float32 magnification_zoom_factor; |
| |
| /// When screen_reader_enabled == true, user can specify elements of the UI to be described |
| /// audibly. |
| /// Note that reading a particular element requires an additional input. |
| // TODO(FIDL-609): Default to false. |
| 3: bool screen_reader_enabled; |
| |
| /// When color_inversion_enabled == true, certain colors are inverted across the entire screen. |
| /// No additional user input is required for the inversion to take place once enabled. |
| /// Colors will continue to be inverted until color_inversion_enabled is set to false. |
| // TODO(FIDL-609): Default to false. |
| 4: bool color_inversion_enabled; |
| |
| /// When color_correction is set to DISABLED, colors are displayed normally. |
| /// When color_correction has a different value, colors are modified to correct for the specified |
| /// type of color-blindness. |
| /// No additional user input is required for correction to take place once enabled. |
| /// Correction will continue to occur until color_correction is set to DISABLED. |
| // TODO(FIDL-609), TODO(FIDL-486): Default to ColorCorrection.DISABLED. |
| 5: ColorCorrection color_correction; |
| |
| /// 3x3 Matrix in row-major form which will be used by the SettingsManager |
| /// client for applying Color Correction and Color Inversion. Display |
| /// adapter expects a 3x3 row major matrix and A11y manager stores the |
| /// matrix in the same format. |
| /// Color Adjustment matrix is used to modify onscreen colors for either |
| /// of Deuteranomaly, Protanomaly and Tritanomaly or it can be used for |
| /// performing Color Inversion. |
| 6: array<float32>:9 color_adjustment_matrix; |
| }; |
| |
| /// SettingsManager will be implemented by Accessibility Manager. |
| /// The accessibility settings manager is an interface that allows other services to: |
| /// 1. register as a settings provider. In return, SettingsManager will provide an interface |
| /// to modify individual settings. |
| /// 2. register themselves to get notified whenever there is a change in Settings. |
| /// Ideally there should be just 1 Settings Provider and there can be multiple watchers. |
| /// "Settings Service" will be settings Provider for Accessibility. There could be multiple |
| /// settings watchers like Root Presenter, Flutter, Chrome, etc. |
| [Discoverable] |
| protocol SettingsManager { |
| // Register Accessibility settings provider to make modification to accessibility settings. |
| RegisterSettingProvider(request<SettingsProvider> settings_provider_request); |
| |
| // Registers a watcher to observe changes in accessibility settings. |
| // When a watcher is registered by calling Watch(), SettingsManager will send all the |
| // Settings as part of registration. |
| Watch(SettingsWatcher watcher); |
| }; |
| |
| /// Interface to update Accessibility Settings. Various Accessibility Settings can be |
| /// modified individually. |
| protocol SettingsProvider { |
| // Enables or disables magnification depending on |magnification_enabled|. |
| // When |magnification_enabled| is different from the existing setting, |
| // the zoom factor is reset to 1.0. |
| SetMagnificationEnabled(bool magnification_enabled) |
| -> (SettingsManagerStatus status); |
| |
| // Sets value of zoom factor, provided that magnification is enabled. |
| // Zoom factor must be > 1.0. |
| // Returns ERROR if zoom is disabled or if magnification_zoom_factor < 1.0. |
| SetMagnificationZoomFactor(float32 magnification_zoom_factor) |
| -> (SettingsManagerStatus status); |
| |
| // Sets value of screen_reader_enabled, and returns OK. |
| SetScreenReaderEnabled(bool screen_reader_enabled) |
| -> (SettingsManagerStatus status); |
| |
| // Sets value of color_inversion_enabled, and returns OK. |
| SetColorInversionEnabled(bool color_inversion_enabled) |
| -> (SettingsManagerStatus status); |
| |
| // Sets value of color_correction, and returns OK. |
| SetColorCorrection(ColorCorrection color_correction) |
| -> (SettingsManagerStatus status); |
| }; |
| |
| /// SettingsWatcher is the client side interface that Settings Manager can |
| /// use to notify clients whenever Accessibility Settings change. |
| protocol SettingsWatcher { |
| // Called when accessibility settings elections change. |
| OnSettingsChange(Settings accessibility_settings); |
| }; |