Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3476)

Unified Diff: cc/playback/display_item_list.h

Issue 2748263002: Move cc::DisplayItemList and related classes into cc/paint/ (Closed)
Patch Set: Merge branch 'master' into ccpaint Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/playback/display_item.h ('k') | cc/playback/display_item_list.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/playback/display_item_list.h
diff --git a/cc/playback/display_item_list.h b/cc/playback/display_item_list.h
deleted file mode 100644
index 1f78694386223e55f18c8a064d91a57a0d6bd0ce..0000000000000000000000000000000000000000
--- a/cc/playback/display_item_list.h
+++ /dev/null
@@ -1,208 +0,0 @@
-// 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_PLAYBACK_DISPLAY_ITEM_LIST_H_
-#define CC_PLAYBACK_DISPLAY_ITEM_LIST_H_
-
-#include <stddef.h>
-
-#include <memory>
-#include <utility>
-
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/trace_event/trace_event.h"
-#include "cc/base/cc_export.h"
-#include "cc/base/contiguous_container.h"
-#include "cc/base/rtree.h"
-#include "cc/playback/discardable_image_map.h"
-#include "cc/playback/display_item.h"
-#include "cc/playback/image_id.h"
-#include "third_party/skia/include/core/SkPicture.h"
-#include "ui/gfx/color_space.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/geometry/rect_conversions.h"
-
-class SkCanvas;
-
-namespace base {
-namespace trace_event {
-class TracedValue;
-}
-}
-
-namespace cc {
-class DisplayItem;
-
-class CC_EXPORT DisplayItemList
- : public base::RefCountedThreadSafe<DisplayItemList> {
- public:
- DisplayItemList();
-
- // TODO(trchen): Deprecated. Apply clip and scale on the canvas instead.
- void Raster(SkCanvas* canvas,
- SkPicture::AbortCallback* callback,
- const gfx::Rect& canvas_target_playback_rect,
- float contents_scale) const;
-
- void Raster(SkCanvas* canvas, SkPicture::AbortCallback* callback) const;
-
- // Because processing happens in these CreateAndAppend functions, all the set
- // up for the item should be done via the args, which is why the return type
- // needs to be const, to prevent set-after-processing mistakes.
-
- // Most paired begin item types default to an empty visual rect, which will
- // subsequently be grown as needed to encompass any contained items that draw
- // content, such as drawing or filter items.
- template <typename DisplayItemType, typename... Args>
- const DisplayItemType& CreateAndAppendPairedBeginItem(Args&&... args) {
- return CreateAndAppendPairedBeginItemWithVisualRect<DisplayItemType>(
- gfx::Rect(), std::forward<Args>(args)...);
- }
-
- // This method variant is exposed to allow filters to specify their visual
- // rect since they may draw content despite containing no drawing items.
- template <typename DisplayItemType, typename... Args>
- const DisplayItemType& CreateAndAppendPairedBeginItemWithVisualRect(
- const gfx::Rect& visual_rect,
- Args&&... args) {
- size_t item_index = visual_rects_.size();
- visual_rects_.push_back(visual_rect);
- begin_item_indices_.push_back(item_index);
-
- return AllocateAndConstruct<DisplayItemType>(std::forward<Args>(args)...);
- }
-
- template <typename DisplayItemType, typename... Args>
- const DisplayItemType& CreateAndAppendPairedEndItem(Args&&... args) {
- DCHECK(!begin_item_indices_.empty());
- size_t last_begin_index = begin_item_indices_.back();
- begin_item_indices_.pop_back();
-
- // Note that we are doing two separate things below:
- //
- // 1. Appending a new rect to the |visual_rects| list associated with
- // the newly-being-added paired end item, with that visual rect
- // having same bounds as its paired begin item, referenced via
- // |last_begin_index|. The paired begin item may or may not be the
- // current last visual rect in |visual_rects|, and its bounds has
- // potentially been grown via calls to CreateAndAppendDrawingItem().
- //
- // 2. If there is still a containing paired begin item after closing the
- // pair ended in this method call, growing that item's visual rect to
- // incorporate the bounds of the now-finished pair.
- //
- // Thus we're carefully pushing and growing by the visual rect of the
- // paired begin item we're closing in this method call, which is not
- // necessarily the same as |visual_rects.back()|, and given that the
- // |visual_rects| list is mutated in step 1 before step 2, we also can't
- // shorten the reference via a |const auto| reference. We could make a
- // copy of the rect before list mutation, but that would incur copy
- // overhead.
-
- // Ending bounds match the starting bounds.
- visual_rects_.push_back(visual_rects_[last_begin_index]);
-
- // The block that ended needs to be included in the bounds of the enclosing
- // block.
- GrowCurrentBeginItemVisualRect(visual_rects_[last_begin_index]);
-
- return AllocateAndConstruct<DisplayItemType>(std::forward<Args>(args)...);
- }
-
- template <typename DisplayItemType, typename... Args>
- const DisplayItemType& CreateAndAppendDrawingItem(
- const gfx::Rect& visual_rect,
- Args&&... args) {
- visual_rects_.push_back(visual_rect);
- GrowCurrentBeginItemVisualRect(visual_rect);
-
- return AllocateAndConstruct<DisplayItemType>(std::forward<Args>(args)...);
- }
-
- // Called after all items are appended, to process the items and, if
- // applicable, create an internally cached SkPicture.
- void Finalize();
-
- void SetIsSuitableForGpuRasterization(bool is_suitable) {
- all_items_are_suitable_for_gpu_rasterization_ = is_suitable;
- }
- bool IsSuitableForGpuRasterization() const;
-
- int ApproximateOpCount() const;
- size_t ApproximateMemoryUsage() const;
- bool ShouldBeAnalyzedForSolidColor() const;
-
- void EmitTraceSnapshot() const;
-
- void GenerateDiscardableImagesMetadata();
- void GetDiscardableImagesInRect(const gfx::Rect& rect,
- float contents_scale,
- std::vector<DrawImage>* images);
- gfx::Rect GetRectForImage(ImageId image_id) const;
-
- void SetRetainVisualRectsForTesting(bool retain) {
- retain_visual_rects_ = retain;
- }
-
- size_t size() const { return items_.size(); }
-
- gfx::Rect VisualRectForTesting(int index) { return visual_rects_[index]; }
-
- ContiguousContainer<DisplayItem>::const_iterator begin() const {
- return items_.begin();
- }
-
- ContiguousContainer<DisplayItem>::const_iterator end() const {
- return items_.end();
- }
-
- private:
- FRIEND_TEST_ALL_PREFIXES(DisplayItemListTest, AsValueWithNoItems);
- FRIEND_TEST_ALL_PREFIXES(DisplayItemListTest, AsValueWithItems);
-
- ~DisplayItemList();
-
- std::unique_ptr<base::trace_event::TracedValue> CreateTracedValue(
- bool include_items) const;
-
- // If we're currently within a paired display item block, unions the
- // given visual rect with the begin display item's visual rect.
- void GrowCurrentBeginItemVisualRect(const gfx::Rect& visual_rect);
-
- template <typename DisplayItemType, typename... Args>
- const DisplayItemType& AllocateAndConstruct(Args&&... args) {
- auto* item = &items_.AllocateAndConstruct<DisplayItemType>(
- std::forward<Args>(args)...);
- approximate_op_count_ += item->ApproximateOpCount();
- return *item;
- }
-
- RTree rtree_;
- DiscardableImageMap image_map_;
- ContiguousContainer<DisplayItem> items_;
-
- // The visual rects associated with each of the display items in the
- // display item list. There is one rect per display item, and the
- // position in |visual_rects| matches the position of the item in
- // |items| . These rects are intentionally kept separate
- // because they are not needed while walking the |items| for raster.
- std::vector<gfx::Rect> visual_rects_;
- std::vector<size_t> begin_item_indices_;
-
- int approximate_op_count_ = 0;
- bool all_items_are_suitable_for_gpu_rasterization_ = true;
- // For testing purposes only. Whether to keep visual rects across calls to
- // Finalize().
- bool retain_visual_rects_ = false;
-
- friend class base::RefCountedThreadSafe<DisplayItemList>;
- FRIEND_TEST_ALL_PREFIXES(DisplayItemListTest, ApproximateMemoryUsage);
- DISALLOW_COPY_AND_ASSIGN(DisplayItemList);
-};
-
-} // namespace cc
-
-#endif // CC_PLAYBACK_DISPLAY_ITEM_LIST_H_
« no previous file with comments | « cc/playback/display_item.h ('k') | cc/playback/display_item_list.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698