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

Side by Side Diff: cc/resources/tile_bundle.cc

Issue 62283012: cc: Added tile bundles (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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 #include "cc/resources/tile_bundle.h"
6
7 #include "cc/resources/picture_layer_tiling.h"
8 #include "cc/resources/tile.h"
9 #include "cc/resources/tile_manager.h"
10
11 namespace cc {
12
13 TileBundle::Id TileBundle::s_next_id_ = 0;
14
15 TileBundle::TileBundle(TileManager* tile_manager,
16 int width,
17 int height,
18 int offset_x,
19 int offset_y)
20 : RefCountedManaged<TileBundle>(tile_manager),
21 tiling_(NULL),
22 width_(width),
23 height_(height),
24 offset_x_(offset_x),
25 offset_y_(offset_y),
26 id_(s_next_id_++) {}
27
28 TileBundle::~TileBundle() {}
29
30 Tile* TileBundle::TileAt(int index_x, int index_y) {
31 TileMapKey key = ComputeLocalIndex(index_x, index_y);
32 TileMap::iterator it = tiles_.find(key);
33 if (it == tiles_.end())
34 return NULL;
35 return it->second.get();
36 }
37
38 TileBundle* TileBundle::GetTwinBundle() {
39 DCHECK(client_);
40 const PictureLayerTiling* twin_tiling = client_->GetTwinTiling(tiling_);
41 if (!twin_tiling)
42 return NULL;
43 return twin_tiling->TileBundleContainingTileAt(offset_x_, offset_y_);
44 }
45
46 bool TileBundle::IsRecycled() const {
47 return client_->IsRecycled();
48 }
49
50 bool TileBundle::IsActive() const {
51 return client_->IsActive();
52 }
53
54 bool TileBundle::IsPending() const {
55 return client_->IsPending();
56 }
57
58 bool TileBundle::RemoveTileAt(int index_x, int index_y) {
59 TileMapKey key = ComputeLocalIndex(index_x, index_y);
60 TileMap::iterator it = tiles_.find(key);
61 if (it == tiles_.end())
62 return false;
63
64 tiles_.erase(it);
65 return true;
66 }
67
68 void TileBundle::AddTileAt(int index_x,
69 int index_y,
70 scoped_refptr<Tile> tile) {
71 TileMapKey key = ComputeLocalIndex(index_x, index_y);
72 DCHECK(tiles_.find(key) == tiles_.end());
73 tiles_[key] = tile;
74 }
75
76 void TileBundle::DidBecomeRecycled() {
77 priority_ = TilePriority();
78 }
79
80 void TileBundle::DidBecomeActive() {
81 }
82
83 size_t TileBundle::TileCount() const {
84 return tiles_.size();
85 }
86
87 TileBundle::TileMapKey TileBundle::ComputeLocalIndex(int index_x, int index_y) {
88 index_x -= offset_x_;
89 index_y -= offset_y_;
90
91 DCHECK_GE(index_x, 0);
92 DCHECK_GE(index_y, 0);
93 DCHECK_LT(index_x, width_);
94 DCHECK_LT(index_x, height_);
95
96 return TileMapKey(index_x, index_y);
97 }
98
99 TileBundle::Iterator::Iterator(TileBundle* bundle)
100 : bundle_(bundle), iterator_(bundle_->tiles_.begin()) {}
101
102 TileBundle::Iterator::~Iterator() {}
103
104 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698