blob: 087a53f82fec1a5bc60a994565a39d7bd9ffa6cb [file] [log] [blame]
// 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.sketchy;
using fuchsia.images;
// A Canvas allows clients to draw strokes, which are dynamically tessellated
// and inserted into the global Scenic scene-graph.
[Discoverable]
protocol Canvas {
// Init() must be called once, before invoking any other operations.
Init(CanvasListener? listener);
// Enqueue a list of operations, which will not take effect until Present() is
// called. It is allowable to call Enqueue() several times before calling
// Present(); the effect is the same as if all operations had been
// concatenated into a single Enqueue() call.
//
// Akin to fuchsia::ui::gfx::Session.Enqueue(); see scenic/session.fidl for details.
Enqueue(vector<Command> commands);
// Present all previously enqueued operations. In order to pipeline the
// preparation of the resources required to render the scene, two lists of
// fences (implemented as events) are passed.
//
// Akin to fuchsia::ui::gfx::Session.Present(); see scenic/session.fidl for details.
Present(uint64 presentation_time)
-> (fuchsia.images.PresentationInfo presentation_info);
};
// Allows clients to observe canvas events.
protocol CanvasListener {
OnError(string description);
OnStrokeFinished(uint32 stroke_id, StrokePath path);
OnPageViewerInvalidated(uint32 viewer_id);
};