blob: 08d432be3145933909a461a8825759ba9e5d11d3 [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.
#ifndef LIB_UI_SKETCHY_CLIENT_CANVAS_H_
#define LIB_UI_SKETCHY_CLIENT_CANVAS_H_
#include <fuchsia/ui/sketchy/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include "lib/component/cpp/startup_context.h"
#include "lib/ui/scenic/cpp/resources.h"
#include "lib/ui/scenic/cpp/session.h"
#include "lib/ui/sketchy/client/resources.h"
namespace sketchy_lib {
// Convenient C++ wrapper for ::fuchsia::ui::sketchy::Canvas service.
class Canvas final {
public:
Canvas(component::StartupContext* context, async::Loop* loop);
Canvas(::fuchsia::ui::sketchy::CanvasPtr canvas, async::Loop* loop);
void Present(uint64_t time, scenic::Session::PresentCallback callback);
private:
friend class Resource;
ResourceId AllocateResourceId();
::fuchsia::ui::sketchy::CanvasPtr canvas_;
async::Loop* const loop_;
std::vector<::fuchsia::ui::sketchy::Command> commands_;
ResourceId next_resource_id_;
};
} // namespace sketchy_lib
#endif // LIB_UI_SKETCHY_CLIENT_CANVAS_H_