| /* | 
 |  * Copyright 2010 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #ifndef GrRectanizer_DEFINED | 
 | #define GrRectanizer_DEFINED | 
 |  | 
 | #include "GrTypes.h" | 
 |  | 
 | struct SkIPoint16; | 
 |  | 
 | class GrRectanizer { | 
 | public: | 
 |     GrRectanizer(int width, int height) : fWidth(width), fHeight(height) { | 
 |         SkASSERT(width >= 0); | 
 |         SkASSERT(height >= 0); | 
 |     } | 
 |  | 
 |     virtual ~GrRectanizer() {} | 
 |  | 
 |     virtual void reset() = 0; | 
 |  | 
 |     int width() const { return fWidth; } | 
 |     int height() const { return fHeight; } | 
 |  | 
 |     // Attempt to add a rect. Return true on success; false on failure. If | 
 |     // successful the position in the atlas is returned in 'loc'. | 
 |     virtual bool addRect(int width, int height, SkIPoint16* loc) = 0; | 
 |     virtual float percentFull() const = 0; | 
 |  | 
 |     /** | 
 |      *  Our factory, which returns the subclass du jour | 
 |      */ | 
 |     static GrRectanizer* Factory(int width, int height); | 
 |  | 
 | private: | 
 |     int fWidth; | 
 |     int fHeight; | 
 | }; | 
 |  | 
 | #endif |