blob: 9a6847d3c46a6dd49d285c82a79daa0218d675e9 [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_LIB_UI_WINDOW_WINDOW_H_
#define FLUTTER_LIB_UI_WINDOW_WINDOW_H_
#include <functional>
#include <string>
#include <unordered_map>
#include <vector>
#include "flutter/lib/ui/window/key_data_packet.h"
#include "flutter/lib/ui/window/platform_message.h"
#include "flutter/lib/ui/window/pointer_data_packet.h"
#include "flutter/lib/ui/window/viewport_metrics.h"
#include "third_party/skia/include/gpu/GrDirectContext.h"
#include "third_party/tonic/dart_persistent_value.h"
namespace flutter {
class Window final {
public:
Window(int64_t window_id, ViewportMetrics metrics);
~Window();
int window_id() const { return window_id_; }
const ViewportMetrics& viewport_metrics() const { return viewport_metrics_; }
// Dispatch a packet to the framework that indicates one or a few pointer
// events.
void DispatchPointerDataPacket(const PointerDataPacket& packet);
// Dispatch a packet to the framework that indicates a key event.
//
// The `response_id` is used to label the response of whether the key event
// is handled by the framework, typically the return value of
// PlatformConfiguration::RegisterKeyDataResponse.
// It should be used later in
// PlatformConfiguration::CompleteKeyDataResponse.
void DispatchKeyDataPacket(const KeyDataPacket& packet, uint64_t response_id);
void UpdateWindowMetrics(const ViewportMetrics& metrics);
private:
tonic::DartPersistentValue library_;
int64_t window_id_;
ViewportMetrics viewport_metrics_;
};
} // namespace flutter
#endif // FLUTTER_LIB_UI_WINDOW_WINDOW_H_