blob: dee37a751639d29416dc22795a3588c1c8a3fcf9 [file] [log] [blame]
// Copyright 2018 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 GARNET_LIB_UI_INPUT_VIEW_ID_H_
#define GARNET_LIB_UI_INPUT_VIEW_ID_H_
#include <ostream>
#include <vector>
#include "garnet/lib/ui/gfx/id.h"
#include "lib/escher/geometry/types.h"
namespace scenic_impl {
namespace input {
// The top-level View is index 0, and grows downward.
struct ViewStack {
struct Entry {
// We store the View's resource ID to distinguish between Views vended by a
// single Session. However, a View's RefPtr may not actually be in the
// Session's ResourceMap, so the resource ID is *not* useful for recall.
GlobalId view_id;
glm::mat4 global_transform; // The model-to-global transform for each View.
};
std::vector<Entry> stack;
// Whether the top-level View is focusable or not.
// We write this field in an ADD event and read it in a DOWN event.
bool focus_change = true;
};
std::ostream& operator<<(std::ostream& os, const ViewStack& value);
} // namespace input
} // namespace scenic_impl
#endif // GARNET_LIB_UI_INPUT_VIEW_ID_H_