Chromium Code Reviews| Index: cc/tiling_data.cc |
| diff --git a/cc/tiling_data.cc b/cc/tiling_data.cc |
| index 357c17b4a05f174c0ac6162708ba906aeb834485..c64bb1f8ab4858a438b0b2f7f3bfbb269e81124b 100644 |
| --- a/cc/tiling_data.cc |
| +++ b/cc/tiling_data.cc |
| @@ -68,9 +68,9 @@ int TilingData::TileXIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_x_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.width() - 2 * border_texels_, 0); |
| + DCHECK_GT(inner_tile_size_.width(), 0); |
| int x = (src_position - border_texels_) / |
| - (max_texture_size_.width() - 2 * border_texels_); |
| + (inner_tile_size_.width()); |
| return std::min(std::max(x, 0), num_tiles_x_ - 1); |
| } |
| @@ -78,9 +78,9 @@ int TilingData::TileYIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_y_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.height() - 2 * border_texels_, 0); |
| + DCHECK_GT(inner_tile_size_.height(), 0); |
| int y = (src_position - border_texels_) / |
| - (max_texture_size_.height() - 2 * border_texels_); |
| + (inner_tile_size_.height()); |
| return std::min(std::max(y, 0), num_tiles_y_ - 1); |
| } |
| @@ -88,9 +88,8 @@ int TilingData::FirstBorderTileXIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_x_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.width() - 2 * border_texels_, 0); |
| - int inner_tile_size = max_texture_size_.width() - 2 * border_texels_; |
| - int x = (src_position - 2 * border_texels_) / inner_tile_size; |
| + DCHECK_GT(inner_tile_size_.width(), 0); |
| + int x = (src_position - 2 * border_texels_) / inner_tile_size_.width(); |
| return std::min(std::max(x, 0), num_tiles_x_ - 1); |
| } |
| @@ -98,9 +97,8 @@ int TilingData::FirstBorderTileYIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_y_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.height() - 2 * border_texels_, 0); |
| - int inner_tile_size = max_texture_size_.height() - 2 * border_texels_; |
| - int y = (src_position - 2 * border_texels_) / inner_tile_size; |
| + DCHECK_GT(inner_tile_size_.height(), 0); |
| + int y = (src_position - 2 * border_texels_) / inner_tile_size_.height(); |
| return std::min(std::max(y, 0), num_tiles_y_ - 1); |
| } |
| @@ -108,9 +106,8 @@ int TilingData::LastBorderTileXIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_x_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.width() - 2 * border_texels_, 0); |
| - int inner_tile_size = max_texture_size_.width() - 2 * border_texels_; |
| - int x = src_position / inner_tile_size; |
| + DCHECK_GT(inner_tile_size_.width(), 0); |
| + int x = src_position / inner_tile_size_.width(); |
| return std::min(std::max(x, 0), num_tiles_x_ - 1); |
| } |
| @@ -118,16 +115,15 @@ int TilingData::LastBorderTileYIndexFromSrcCoord(int src_position) const { |
| if (num_tiles_y_ <= 1) |
| return 0; |
| - DCHECK_GT(max_texture_size_.height() - 2 * border_texels_, 0); |
| - int inner_tile_size = max_texture_size_.height() - 2 * border_texels_; |
| - int y = src_position / inner_tile_size; |
| + DCHECK_GT(inner_tile_size_.height(), 0); |
| + int y = src_position / inner_tile_size_.height(); |
| return std::min(std::max(y, 0), num_tiles_y_ - 1); |
| } |
| gfx::Rect TilingData::TileBounds(int i, int j) const { |
| AssertTile(i, j); |
| - int max_texture_size_x = max_texture_size_.width() - 2 * border_texels_; |
| - int max_texture_size_y = max_texture_size_.height() - 2 * border_texels_; |
| + int max_texture_size_x = inner_tile_size_.width(); |
| + int max_texture_size_y = inner_tile_size_.height(); |
| int total_size_x = total_size_.width(); |
| int total_size_y = total_size_.height(); |
| @@ -192,7 +188,7 @@ int TilingData::TilePositionX(int x_index) const { |
| DCHECK_GE(x_index, 0); |
| DCHECK_LT(x_index, num_tiles_x_); |
| - int pos = (max_texture_size_.width() - 2 * border_texels_) * x_index; |
| + int pos = inner_tile_size_.width() * x_index; |
| if (x_index != 0) |
| pos += border_texels_; |
| @@ -203,7 +199,7 @@ int TilingData::TilePositionY(int y_index) const { |
| DCHECK_GE(y_index, 0); |
| DCHECK_LT(y_index, num_tiles_y_); |
| - int pos = (max_texture_size_.height() - 2 * border_texels_) * y_index; |
| + int pos = inner_tile_size_.height() * y_index; |
| if (y_index != 0) |
| pos += border_texels_; |
| @@ -219,7 +215,7 @@ int TilingData::TileSizeX(int x_index) const { |
| if (!x_index && num_tiles_x_ > 1) |
| return max_texture_size_.width() - border_texels_; |
|
danakj
2013/02/07 20:40:01
I'm not sure about the inner_tile_size concept bec
|
| if (x_index < num_tiles_x_ - 1) |
| - return max_texture_size_.width() - 2 * border_texels_; |
| + return inner_tile_size_.width(); |
| if (x_index == num_tiles_x_ - 1) |
| return total_size_.width() - TilePositionX(x_index); |
| @@ -236,7 +232,7 @@ int TilingData::TileSizeY(int y_index) const { |
| if (!y_index && num_tiles_y_ > 1) |
| return max_texture_size_.height() - border_texels_; |
| if (y_index < num_tiles_y_ - 1) |
| - return max_texture_size_.height() - 2 * border_texels_; |
| + return inner_tile_size_.height(); |
| if (y_index == num_tiles_y_ - 1) |
| return total_size_.height() - TilePositionY(y_index); |
| @@ -252,6 +248,8 @@ gfx::Vector2d TilingData::TextureOffset(int x_index, int y_index) const { |
| } |
| void TilingData::RecomputeNumTiles() { |
| + inner_tile_size_ = max_texture_size_; |
| + inner_tile_size_.Enlarge(- 2 * border_texels_, - 2 * border_texels_); |
| num_tiles_x_ = ComputeNumTiles(max_texture_size_.width(), total_size_.width(), border_texels_); |
| num_tiles_y_ = ComputeNumTiles(max_texture_size_.height(), total_size_.height(), border_texels_); |
| } |