// Copyright 2017 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.ui.policy; using fuchsia.ui.gfx; using fuchsia.ui.input; // |Presentation.CaptureKeyboardEvent| will consume this listener interface and // call |OnEvent| when the registered keyboard event occurs. interface KeyboardCaptureListenerHACK { 1: OnEvent(fuchsia.ui.input.KeyboardEvent event); }; // |Presentation.CapturePointerEvent| will consume this listener interface and // call |OnEvent| when a pointer event occurs. interface PointerCaptureListenerHACK { 1: OnPointerEvent(fuchsia.ui.input.PointerEvent event); }; // Allows clients of Presenter.Present() to control a presentation. // Experimental. [Discoverable] interface Presentation { // Enable or disable clipping for the Scenic renderer associated with the // presentation. 1: EnableClipping(bool enabled); 2: UseOrthographicView(); 3: UsePerspectiveView(); // Set parameters such as the shadow algorithm used to render the scene. // NOTE: a single param would be better than an array; see TO-529. 4: SetRendererParams(vector<fuchsia.ui.gfx.RendererParam> params); // Override the intended usage of the display. 5: SetDisplayUsage(DisplayUsage usage); // Rotates the display. 11: SetDisplayRotation(float32 display_rotation_degrees, bool animate); // Override the dimensions of the display. Values must be less than the actual // size of the display. If either of the values are 0, then they are ignored // and the actual size of the display is used. 7: SetDisplaySizeInMm(float32 width_in_mm, float32 height_in_mm); // This call exists so that base shell can capture hotkeys and do special // things with it (e.g., switch a session shell). Phase and modifiers are always // matched, and valid (non-zero) code points are matched. If there is no // valid code point, the filter will match against the hid usage value. // The full KeyboardEvent is supplied to |listener|'s OnEvent. // TODO: Figure out the feasibility of this feature and the best place to put // it. 6: CaptureKeyboardEventHACK(fuchsia.ui.input.KeyboardEvent event_to_capture, KeyboardCaptureListenerHACK listener); // This call exists so that base shell can capture pointer events. // TODO: Figure out the feasibility of this feature and the best place to put // it. This call will be replaced by gesture disambiguation system in future. 10: CapturePointerEventsHACK(PointerCaptureListenerHACK listener); // TODO(SCN-650): Determine better place for PresentationMode API. 8: GetPresentationMode() -> (PresentationMode mode); 9: SetPresentationModeListener(PresentationModeListener listener); }; // Screen modes that can be detected via sensor data. // N.B. We use accelerometers to measure gravity when at rest, so detection is // limited to earth-relative orientations. enum PresentationMode { CLOSED = 0; LAPTOP = 1; TABLET = 2; TENT = 3; }; // Tell client that the screen mode has changed, according to sensors. // N.B. There can be a race where the actual mode continues to change, after // the listener has been notified. The client must call GetPresentationMode(), // which will return the latest detected mode. interface PresentationModeListener { 1: OnModeChanged(); };