gfx/skia/trunk/src/gpu/GrRectanizer.h

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:6262f2729126
1 /*
2 * Copyright 2010 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef GrRectanizer_DEFINED
9 #define GrRectanizer_DEFINED
10
11 #include "GrPoint.h"
12
13 class GrRectanizerPurgeListener {
14 public:
15 virtual ~GrRectanizerPurgeListener() {}
16
17 virtual void notifyPurgeStrip(void*, int yCoord) = 0;
18 };
19
20 class GrRectanizer {
21 public:
22 GrRectanizer(int width, int height) : fWidth(width), fHeight(height) {
23 SkASSERT(width >= 0);
24 SkASSERT(height >= 0);
25 }
26
27 virtual ~GrRectanizer() {}
28
29 virtual void reset() = 0;
30
31 int width() const { return fWidth; }
32 int height() const { return fHeight; }
33
34 virtual bool addRect(int width, int height, GrIPoint16* loc) = 0;
35 virtual float percentFull() const = 0;
36
37 // return the Y-coordinate of a strip that should be purged, given height
38 // i.e. return the oldest such strip, or some other criteria. Return -1
39 // if there is no candidate
40 virtual int stripToPurge(int height) const = 0;
41 virtual void purgeStripAtY(int yCoord) = 0;
42
43 /**
44 * Our factory, which returns the subclass du jour
45 */
46 static GrRectanizer* Factory(int width, int height);
47
48 private:
49 int fWidth;
50 int fHeight;
51 };
52
53 #endif

mercurial