| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 #include "config.h" | 6 #include "config.h" |
| 7 | 7 |
| 8 #include "cc/layer_tiling_data.h" | 8 #include "cc/layer_tiling_data.h" |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 | 11 |
| 12 using namespace std; | 12 using namespace std; |
| 13 | 13 |
| 14 namespace cc { | 14 namespace cc { |
| 15 | 15 |
| 16 scoped_ptr<LayerTilingData> LayerTilingData::create(const IntSize& tileSize, Bor
derTexelOption border) | 16 scoped_ptr<LayerTilingData> LayerTilingData::create(const gfx::Size& tileSize, B
orderTexelOption border) |
| 17 { | 17 { |
| 18 return make_scoped_ptr(new LayerTilingData(tileSize, border)); | 18 return make_scoped_ptr(new LayerTilingData(tileSize, border)); |
| 19 } | 19 } |
| 20 | 20 |
| 21 LayerTilingData::LayerTilingData(const IntSize& tileSize, BorderTexelOption bord
er) | 21 LayerTilingData::LayerTilingData(const gfx::Size& tileSize, BorderTexelOption bo
rder) |
| 22 : m_tilingData(tileSize, IntSize(), border == HasBorderTexels) | 22 : m_tilingData(cc::IntSize(tileSize), cc::IntSize(), border == HasBorderTexe
ls) |
| 23 { | 23 { |
| 24 setTileSize(tileSize); | 24 setTileSize(tileSize); |
| 25 } | 25 } |
| 26 | 26 |
| 27 LayerTilingData::~LayerTilingData() | 27 LayerTilingData::~LayerTilingData() |
| 28 { | 28 { |
| 29 } | 29 } |
| 30 | 30 |
| 31 void LayerTilingData::setTileSize(const IntSize& size) | 31 void LayerTilingData::setTileSize(const gfx::Size& size) |
| 32 { | 32 { |
| 33 if (tileSize() == size) | 33 if (tileSize() == size) |
| 34 return; | 34 return; |
| 35 | 35 |
| 36 reset(); | 36 reset(); |
| 37 | 37 |
| 38 m_tilingData.setMaxTextureSize(size); | 38 m_tilingData.setMaxTextureSize(cc::IntSize(size)); |
| 39 } | 39 } |
| 40 | 40 |
| 41 IntSize LayerTilingData::tileSize() const | 41 gfx::Size LayerTilingData::tileSize() const |
| 42 { | 42 { |
| 43 return m_tilingData.maxTextureSize(); | 43 return cc::IntSize(m_tilingData.maxTextureSize()); |
| 44 } | 44 } |
| 45 | 45 |
| 46 void LayerTilingData::setBorderTexelOption(BorderTexelOption borderTexelOption) | 46 void LayerTilingData::setBorderTexelOption(BorderTexelOption borderTexelOption) |
| 47 { | 47 { |
| 48 bool borderTexels = borderTexelOption == HasBorderTexels; | 48 bool borderTexels = borderTexelOption == HasBorderTexels; |
| 49 if (hasBorderTexels() == borderTexels) | 49 if (hasBorderTexels() == borderTexels) |
| 50 return; | 50 return; |
| 51 | 51 |
| 52 reset(); | 52 reset(); |
| 53 m_tilingData.setHasBorderTexels(borderTexels); | 53 m_tilingData.setHasBorderTexels(borderTexels); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 75 LayerTilingData::Tile* LayerTilingData::tileAt(int i, int j) const | 75 LayerTilingData::Tile* LayerTilingData::tileAt(int i, int j) const |
| 76 { | 76 { |
| 77 return m_tiles.get(make_pair(i, j)); | 77 return m_tiles.get(make_pair(i, j)); |
| 78 } | 78 } |
| 79 | 79 |
| 80 void LayerTilingData::reset() | 80 void LayerTilingData::reset() |
| 81 { | 81 { |
| 82 m_tiles.clear(); | 82 m_tiles.clear(); |
| 83 } | 83 } |
| 84 | 84 |
| 85 void LayerTilingData::contentRectToTileIndices(const IntRect& contentRect, int&
left, int& top, int& right, int& bottom) const | 85 void LayerTilingData::contentRectToTileIndices(const gfx::Rect& contentRect, int
& left, int& top, int& right, int& bottom) const |
| 86 { | 86 { |
| 87 // An empty rect doesn't result in an empty set of tiles, so don't pass an e
mpty rect. | 87 // An empty rect doesn't result in an empty set of tiles, so don't pass an e
mpty rect. |
| 88 // FIXME: Possibly we should fill a vector of tiles instead, | 88 // FIXME: Possibly we should fill a vector of tiles instead, |
| 89 // since the normal use of this function is to enumerate some tiles. | 89 // since the normal use of this function is to enumerate some tiles. |
| 90 DCHECK(!contentRect.isEmpty()); | 90 DCHECK(!contentRect.IsEmpty()); |
| 91 | 91 |
| 92 left = m_tilingData.tileXIndexFromSrcCoord(contentRect.x()); | 92 left = m_tilingData.tileXIndexFromSrcCoord(contentRect.x()); |
| 93 top = m_tilingData.tileYIndexFromSrcCoord(contentRect.y()); | 93 top = m_tilingData.tileYIndexFromSrcCoord(contentRect.y()); |
| 94 right = m_tilingData.tileXIndexFromSrcCoord(contentRect.maxX() - 1); | 94 right = m_tilingData.tileXIndexFromSrcCoord(contentRect.right() - 1); |
| 95 bottom = m_tilingData.tileYIndexFromSrcCoord(contentRect.maxY() - 1); | 95 bottom = m_tilingData.tileYIndexFromSrcCoord(contentRect.bottom() - 1); |
| 96 } | 96 } |
| 97 | 97 |
| 98 IntRect LayerTilingData::tileRect(const Tile* tile) const | 98 gfx::Rect LayerTilingData::tileRect(const Tile* tile) const |
| 99 { | 99 { |
| 100 IntRect tileRect = m_tilingData.tileBoundsWithBorder(tile->i(), tile->j()); | 100 gfx::Rect tileRect = cc::IntRect(m_tilingData.tileBoundsWithBorder(tile->i()
, tile->j())); |
| 101 tileRect.setSize(tileSize()); | 101 tileRect.set_size(tileSize()); |
| 102 return tileRect; | 102 return tileRect; |
| 103 } | 103 } |
| 104 | 104 |
| 105 Region LayerTilingData::opaqueRegionInContentRect(const IntRect& contentRect) co
nst | 105 Region LayerTilingData::opaqueRegionInContentRect(const gfx::Rect& contentRect)
const |
| 106 { | 106 { |
| 107 if (contentRect.isEmpty()) | 107 if (contentRect.IsEmpty()) |
| 108 return Region(); | 108 return Region(); |
| 109 | 109 |
| 110 Region opaqueRegion; | 110 Region opaqueRegion; |
| 111 int left, top, right, bottom; | 111 int left, top, right, bottom; |
| 112 contentRectToTileIndices(contentRect, left, top, right, bottom); | 112 contentRectToTileIndices(contentRect, left, top, right, bottom); |
| 113 for (int j = top; j <= bottom; ++j) { | 113 for (int j = top; j <= bottom; ++j) { |
| 114 for (int i = left; i <= right; ++i) { | 114 for (int i = left; i <= right; ++i) { |
| 115 Tile* tile = tileAt(i, j); | 115 Tile* tile = tileAt(i, j); |
| 116 if (!tile) | 116 if (!tile) |
| 117 continue; | 117 continue; |
| 118 | 118 |
| 119 IntRect tileOpaqueRect = intersection(contentRect, tile->opaqueRect(
)); | 119 gfx::Rect tileOpaqueRect = gfx::IntersectRects(contentRect, tile->op
aqueRect()); |
| 120 opaqueRegion.unite(tileOpaqueRect); | 120 opaqueRegion.unite(cc::IntRect(tileOpaqueRect)); |
| 121 } | 121 } |
| 122 } | 122 } |
| 123 return opaqueRegion; | 123 return opaqueRegion; |
| 124 } | 124 } |
| 125 | 125 |
| 126 void LayerTilingData::setBounds(const IntSize& size) | 126 void LayerTilingData::setBounds(const gfx::Size& size) |
| 127 { | 127 { |
| 128 m_tilingData.setTotalSize(size); | 128 m_tilingData.setTotalSize(cc::IntSize(size)); |
| 129 if (size.isEmpty()) { | 129 if (size.IsEmpty()) { |
| 130 m_tiles.clear(); | 130 m_tiles.clear(); |
| 131 return; | 131 return; |
| 132 } | 132 } |
| 133 | 133 |
| 134 // Any tiles completely outside our new bounds are invalid and should be dro
pped. | 134 // Any tiles completely outside our new bounds are invalid and should be dro
pped. |
| 135 int left, top, right, bottom; | 135 int left, top, right, bottom; |
| 136 contentRectToTileIndices(IntRect(IntPoint(), size), left, top, right, bottom
); | 136 contentRectToTileIndices(gfx::Rect(gfx::Point(), size), left, top, right, bo
ttom); |
| 137 std::vector<TileMapKey> invalidTileKeys; | 137 std::vector<TileMapKey> invalidTileKeys; |
| 138 for (TileMap::const_iterator it = m_tiles.begin(); it != m_tiles.end(); ++it
) { | 138 for (TileMap::const_iterator it = m_tiles.begin(); it != m_tiles.end(); ++it
) { |
| 139 if (it->first.first > right || it->first.second > bottom) | 139 if (it->first.first > right || it->first.second > bottom) |
| 140 invalidTileKeys.push_back(it->first); | 140 invalidTileKeys.push_back(it->first); |
| 141 } | 141 } |
| 142 for (size_t i = 0; i < invalidTileKeys.size(); ++i) | 142 for (size_t i = 0; i < invalidTileKeys.size(); ++i) |
| 143 m_tiles.erase(invalidTileKeys[i]); | 143 m_tiles.erase(invalidTileKeys[i]); |
| 144 } | 144 } |
| 145 | 145 |
| 146 IntSize LayerTilingData::bounds() const | 146 gfx::Size LayerTilingData::bounds() const |
| 147 { | 147 { |
| 148 return m_tilingData.totalSize(); | 148 return cc::IntSize(m_tilingData.totalSize()); |
| 149 } | 149 } |
| 150 | 150 |
| 151 } // namespace cc | 151 } // namespace cc |
| OLD | NEW |