• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB.  If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef Tile_h
21 #define Tile_h
22 
23 #if ENABLE(TILED_BACKING_STORE)
24 
25 #include "IntPoint.h"
26 #include "IntPointHash.h"
27 #include "IntRect.h"
28 #include <wtf/PassRefPtr.h>
29 #include <wtf/RefCounted.h>
30 
31 #if PLATFORM(QT)
32 QT_BEGIN_NAMESPACE
33 class QPixmap;
34 class QRegion;
35 QT_END_NAMESPACE
36 #endif
37 
38 namespace WebCore {
39 
40 class GraphicsContext;
41 class TiledBackingStore;
42 
43 class Tile : public RefCounted<Tile> {
44 public:
45     typedef IntPoint Coordinate;
46 
create(TiledBackingStore * backingStore,const Coordinate & tileCoordinate)47     static PassRefPtr<Tile> create(TiledBackingStore* backingStore, const Coordinate& tileCoordinate) { return adoptRef(new Tile(backingStore, tileCoordinate)); }
48     ~Tile();
49 
50     bool isDirty() const;
51     void invalidate(const IntRect&);
52     Vector<IntRect> updateBackBuffer();
53     void swapBackBufferToFront();
54     bool isReadyToPaint() const;
55     void paint(GraphicsContext*, const IntRect&);
56 
coordinate()57     const Tile::Coordinate& coordinate() const { return m_coordinate; }
rect()58     const IntRect& rect() const { return m_rect; }
59 
60     static void paintCheckerPattern(GraphicsContext*, const FloatRect&);
61 
62 private:
63     Tile(TiledBackingStore*, const Coordinate&);
64 
65     TiledBackingStore* m_backingStore;
66     Coordinate m_coordinate;
67     IntRect m_rect;
68 
69 #if PLATFORM(QT)
70     QPixmap* m_buffer;
71     QPixmap* m_backBuffer;
72     QRegion* m_dirtyRegion;
73 #endif
74 };
75 
76 }
77 #endif
78 #endif
79