12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <vector>
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/cc_export.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/output/viewport_selection_bound.h"
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/latency_info.h"
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gfx/geometry/size_f.h"
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gfx/geometry/vector2d_f.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT CompositorFrameMetadata {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CompositorFrameMetadata();
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ~CompositorFrameMetadata();
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The device scale factor used to generate this compositor frame.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  float device_scale_factor;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Scroll offset and scale of the root layer. This can be used for tasks
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // like positioning windowed plugins.
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Vector2dF root_scroll_offset;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  float page_scale_factor;
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // These limits can be used together with the scroll/scale fields above to
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // determine if scrolling/scaling in a particular direction is possible.
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  gfx::SizeF scrollable_viewport_size;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::SizeF root_layer_size;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  float min_page_scale_factor;
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  float max_page_scale_factor;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used to position the Android location top bar and page content, whose
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // precise position is computed by the renderer compositor.
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Vector2dF location_bar_offset;
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Vector2dF location_bar_content_translation;
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Provides selection region updates relative to the current viewport. If the
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // selection is empty or otherwise unused, the bound types will indicate such.
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ViewportSelectionBound selection_start;
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ViewportSelectionBound selection_end;
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  std::vector<ui::LatencyInfo> latency_info;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CC_OUTPUT_COMPOSITOR_FRAME_METADATA_H_
54