12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2010 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_BASE_TILING_DATA_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_BASE_TILING_DATA_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <utility> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/cc_export.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/size.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace gfx { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Vector2d; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT TilingData { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TilingData(); 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TilingData(const gfx::Size& max_texture_size, 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels); 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TilingData(const gfx::Size& max_texture_size, 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int border_texels); 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Size tiling_size() const { return tiling_size_; } 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SetTilingSize(const gfx::Size& tiling_size); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Size max_texture_size() const { return max_texture_size_; } 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetMaxTextureSize(const gfx::Size& max_texture_size); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int border_texels() const { return border_texels_; } 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetHasBorderTexels(bool has_border_texels); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetBorderTexels(int border_texels); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool has_empty_bounds() const { return !num_tiles_x_ || !num_tiles_y_; } 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_tiles_x() const { return num_tiles_x_; } 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_tiles_y() const { return num_tiles_y_; } 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Return the tile index whose non-border texels include src_position. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TileXIndexFromSrcCoord(int src_position) const; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TileYIndexFromSrcCoord(int src_position) const; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Return the lowest tile index whose border texels include src_position. 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int FirstBorderTileXIndexFromSrcCoord(int src_position) const; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int FirstBorderTileYIndexFromSrcCoord(int src_position) const; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Return the highest tile index whose border texels include src_position. 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int LastBorderTileXIndexFromSrcCoord(int src_position) const; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int LastBorderTileYIndexFromSrcCoord(int src_position) const; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect ExpandRectIgnoringBordersToTileBounds(const gfx::Rect& rect) const; 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect ExpandRectToTileBounds(const gfx::Rect& rect) const; 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect TileBounds(int i, int j) const; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect TileBoundsWithBorder(int i, int j) const; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TilePositionX(int x_index) const; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TilePositionY(int y_index) const; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TileSizeX(int x_index) const; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int TileSizeY(int y_index) const; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Difference between TileBound's and TileBoundWithBorder's origin(). 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Vector2d TextureOffset(int x_index, int y_index) const; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) class CC_EXPORT BaseIterator { 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) operator bool() const { return index_x_ != -1 && index_y_ != -1; } 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int index_x() const { return index_x_; } 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int index_y() const { return index_y_; } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::pair<int, int> index() const { 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return std::make_pair(index_x_, index_y_); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit BaseIterator(const TilingData* tiling_data); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void done() { 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) index_x_ = -1; 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) index_y_ = -1; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const TilingData* tiling_data_; 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int index_x_; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int index_y_; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Iterate through tiles whose bounds + optional border intersect with |rect|. 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) class CC_EXPORT Iterator : public BaseIterator { 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Iterator(); 9423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Iterator(const TilingData* tiling_data, 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Rect& consider_rect, 9623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool include_borders); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Iterator& operator++(); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int left_; 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int right_; 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int bottom_; 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Iterate through all indices whose bounds (not including borders) intersect 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // with |consider| but which also do not intersect with |ignore|. 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) class CC_EXPORT DifferenceIterator : public BaseIterator { 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DifferenceIterator(const TilingData* tiling_data, 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Rect& consider_rect, 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Rect& ignore_rect); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DifferenceIterator& operator++(); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_ignore_rect() const { 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return index_x_ >= ignore_left_ && index_x_ <= ignore_right_ && 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) index_y_ >= ignore_top_ && index_y_ <= ignore_bottom_; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int consider_left_; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int consider_top_; 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int consider_right_; 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int consider_bottom_; 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ignore_left_; 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ignore_top_; 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ignore_right_; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ignore_bottom_; 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Iterate through all indices whose bounds + border intersect with 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // |consider| but which also do not intersect with |ignore|. The iterator 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // order is a counterclockwise spiral around the given center. 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) class CC_EXPORT SpiralDifferenceIterator : public BaseIterator { 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SpiralDifferenceIterator(); 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SpiralDifferenceIterator(const TilingData* tiling_data, 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& consider_rect, 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& ignore_rect, 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& center_rect); 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SpiralDifferenceIterator& operator++(); 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool in_consider_rect() const { 144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return index_x_ >= consider_left_ && index_x_ <= consider_right_ && 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) index_y_ >= consider_top_ && index_y_ <= consider_bottom_; 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool in_ignore_rect() const { 148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return index_x_ >= ignore_left_ && index_x_ <= ignore_right_ && 149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) index_y_ >= ignore_top_ && index_y_ <= ignore_bottom_; 150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool valid_column() const { 152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return index_x_ >= consider_left_ && index_x_ <= consider_right_; 153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool valid_row() const { 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return index_y_ >= consider_top_ && index_y_ <= consider_bottom_; 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int current_step_count() const { 159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return (direction_ == UP || direction_ == DOWN) ? vertical_step_count_ 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : horizontal_step_count_; 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool needs_direction_switch() const; 164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void switch_direction(); 165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 166a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int consider_left_; 167a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int consider_top_; 168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int consider_right_; 169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int consider_bottom_; 170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int ignore_left_; 171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int ignore_top_; 172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int ignore_right_; 173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int ignore_bottom_; 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) enum Direction { UP, LEFT, DOWN, RIGHT }; 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Direction direction_; 178a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int delta_x_; 179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int delta_y_; 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int current_step_; 181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int horizontal_step_count_; 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int vertical_step_count_; 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) }; 184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AssertTile(int i, int j) const { 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_GE(i, 0); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_LT(i, num_tiles_x_); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_GE(j, 0); 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_LT(j, num_tiles_y_); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RecomputeNumTiles(); 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Size max_texture_size_; 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Size tiling_size_; 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int border_texels_; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These are computed values. 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_tiles_x_; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_tiles_y_; 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_BASE_TILING_DATA_H_ 207