// 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;

/// Exposes a privileged magnifier API for camera control, typically on a
/// `fuchsia.ui.policy.Presentation`.
protocol MagnificationHandler {
    /// Sets clip-space x-offset, y-offset, and scale for the presentation.
    /// x and y are in Vulkan NDC and are applied after scaling, which occurs
    /// about the center of the presentation. The callback indicates when the
    /// update has been presented. The identity transform (0, 0, 1) is the
    /// natural state.
    SetClipSpaceTransform(struct {
        x float32;
        y float32;
        scale float32;
    }) -> ();
};

@discoverable
protocol Magnifier {
    /// Registers the camera control to be used for applying magnification. If
    /// a previous handler had been registered, that handler is dropped.
    RegisterHandler(resource struct {
        handler client_end:MagnificationHandler;
    });
};
