1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
6#define CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
7
8#include <vector>
9
10#include "cc/base/cc_export.h"
11#include "cc/output/viewport_selection_bound.h"
12#include "ui/events/latency_info.h"
13#include "ui/gfx/geometry/size_f.h"
14#include "ui/gfx/geometry/vector2d_f.h"
15
16namespace cc {
17
18class CC_EXPORT CompositorFrameMetadata {
19 public:
20  CompositorFrameMetadata();
21  ~CompositorFrameMetadata();
22
23  // The device scale factor used to generate this compositor frame.
24  float device_scale_factor;
25
26  // Scroll offset and scale of the root layer. This can be used for tasks
27  // like positioning windowed plugins.
28  gfx::Vector2dF root_scroll_offset;
29  float page_scale_factor;
30
31  // These limits can be used together with the scroll/scale fields above to
32  // determine if scrolling/scaling in a particular direction is possible.
33  gfx::SizeF scrollable_viewport_size;
34  gfx::SizeF root_layer_size;
35  float min_page_scale_factor;
36  float max_page_scale_factor;
37
38  // Used to position the Android location top bar and page content, whose
39  // precise position is computed by the renderer compositor.
40  gfx::Vector2dF location_bar_offset;
41  gfx::Vector2dF location_bar_content_translation;
42
43  // Provides selection region updates relative to the current viewport. If the
44  // selection is empty or otherwise unused, the bound types will indicate such.
45  ViewportSelectionBound selection_start;
46  ViewportSelectionBound selection_end;
47
48  std::vector<ui::LatencyInfo> latency_info;
49};
50
51}  // namespace cc
52
53#endif  // CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
54