// 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();
|
};
|