blob: c14353e1ee51f0bb3261d37783b9d6efe9b86abf [file] [log] [blame]
// 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;
/// Specifies color correction mode.
type ColorCorrectionMode = strict enum {
/// No color correction.
DISABLED = 0;
/// Color correction for protanomaly (red-green -- reduced sensitivity to red light).
CORRECT_PROTANOMALY = 1;
/// Color correction for deuteranomaly (red-green -- reduced sensitivity to green light).
CORRECT_DEUTERANOMALY = 2;
/// Color correction for tritanomaly (blue-yellow -- reduced sensitivity to blue light).
CORRECT_TRITANOMALY = 3;
};
/// The current configuration for accessibility color transforms, which includes color inversion and
/// color correction. This always includes the matrix required to apply the appropriate transforms.
/// Color correction and color inversion may be active simultaneously.
///
/// For original RGB value (r, g, b) (each component ranged between 0 and 1), the RGB value of
/// corrected color (r', g', b') is
/// (r', g', b') = color_adjustment_post_offset
/// + color_adjustment_matrix . ((r, g, b) + color_adjustment_pre_offset).
type ColorTransformConfiguration = table {
/// When color_inversion_enabled is true, certain colors are inverted across the entire screen.
/// If this field is omitted behavior should remain unchanged.
1: color_inversion_enabled bool;
/// When color_correction is set to DISABLED, colors are displayed normally. When
/// color_correction has different value, colors are modified to correct for the specified type
/// of color blindness. If this field is omitted behavior should remain unchanged.
2: color_correction ColorCorrectionMode;
/// 3x3 Matrix in row-major form which will be used by root presenter to apply color correction
/// and color inversion, or a combination fo the two. This field should always be set.
3: color_adjustment_matrix array<float32, 9>;
/// 3x1 vector which is used by root presenter as an offset added to the original RGB color,
/// before it multiplies with the |color_adjustment_matrix|. This field should always be set.
4: color_adjustment_pre_offset array<float32, 3>;
/// 3x1 vector which is used by root presenter as an offset added to the multiplied result
/// of |color_adjustment_matrix| and original RGB color. This field should always be set.
5: color_adjustment_post_offset array<float32, 3>;
};
/// Handler implemented by the owner of the presentation. Accessibility manager uses this protocol
/// to make changes to the screen's color transform.
closed protocol ColorTransformHandler {
/// Called when the color transform configuration has changed.
strict SetColorTransformConfiguration(struct {
configuration ColorTransformConfiguration;
}) -> ();
};
/// Allows a presentation owner to register a handler for color transforms. This API is implemented
/// by the Accessibility manager and called by Root Presenter.
@discoverable
closed protocol ColorTransform {
/// Registers a handler for changes in the color transform configuration.
strict RegisterColorTransformHandler(resource struct {
handler client_end:ColorTransformHandler;
});
};