blob: 7af2255ffafd6da3e1f0d69ed89720ec4858df4e [file] [log] [blame]
// Copyright 2014 The Chromium 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 CC_RESOURCES_RECORDING_SOURCE_H_
#define CC_RESOURCES_RECORDING_SOURCE_H_
#include "cc/base/cc_export.h"
#include "cc/resources/picture.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
namespace cc {
class ContentLayerClient;
class Region;
class RasterSource;
class CC_EXPORT RecordingSource {
public:
virtual ~RecordingSource() {}
// Re-record parts of the picture that are invalid.
// Invalidations are in layer space, and will be expanded to cover everything
// that was either recorded/changed or that has no recording, leaving out only
// pieces that we had a recording for and it was not changed.
// Return true iff the pile was modified.
virtual bool UpdateAndExpandInvalidation(
ContentLayerClient* painter,
Region* invalidation,
bool can_use_lcd_text,
const gfx::Size& layer_size,
const gfx::Rect& visible_layer_rect,
int frame_number,
Picture::RecordingMode recording_mode) = 0;
virtual scoped_refptr<RasterSource> CreateRasterSource() const = 0;
virtual gfx::Size GetSize() const = 0;
virtual void SetEmptyBounds() = 0;
virtual void SetMinContentsScale(float min_contents_scale) = 0;
virtual void SetSlowdownRasterScaleFactor(int factor) = 0;
virtual bool IsSuitableForGpuRasterization() const = 0;
// TODO(hendrikw): This is an implementation detail, remove it when possible.
virtual void SetTileGridSize(const gfx::Size& tile_grid_size) = 0;
// TODO(hendrikw): Figure out how to remove this.
virtual void SetUnsuitableForGpuRasterizationForTesting() = 0;
virtual gfx::Size GetTileGridSizeForTesting() const = 0;
};
} // namespace cc
#endif // CC_RESOURCES_RECORDING_SOURCE_H_