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