diff options
Diffstat (limited to 'Source/WebCore/platform/graphics/Tile.h')
-rw-r--r-- | Source/WebCore/platform/graphics/Tile.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/Tile.h b/Source/WebCore/platform/graphics/Tile.h new file mode 100644 index 0000000..c623ec9 --- /dev/null +++ b/Source/WebCore/platform/graphics/Tile.h @@ -0,0 +1,78 @@ +/* + Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + +#ifndef Tile_h +#define Tile_h + +#if ENABLE(TILED_BACKING_STORE) + +#include "IntPoint.h" +#include "IntPointHash.h" +#include "IntRect.h" +#include <wtf/PassRefPtr.h> +#include <wtf/RefCounted.h> + +#if PLATFORM(QT) +QT_BEGIN_NAMESPACE +class QPixmap; +class QRegion; +QT_END_NAMESPACE +#endif + +namespace WebCore { + +class GraphicsContext; +class TiledBackingStore; + +class Tile : public RefCounted<Tile> { +public: + typedef IntPoint Coordinate; + + static PassRefPtr<Tile> create(TiledBackingStore* backingStore, const Coordinate& tileCoordinate) { return adoptRef(new Tile(backingStore, tileCoordinate)); } + ~Tile(); + + bool isDirty() const; + void invalidate(const IntRect&); + void updateBackBuffer(); + void swapBackBufferToFront(); + bool isReadyToPaint() const; + void paint(GraphicsContext*, const IntRect&); + + const Tile::Coordinate& coordinate() const { return m_coordinate; } + const IntRect& rect() const { return m_rect; } + + static void paintCheckerPattern(GraphicsContext*, const FloatRect&); + +private: + Tile(TiledBackingStore*, const Coordinate&); + + TiledBackingStore* m_backingStore; + Coordinate m_coordinate; + IntRect m_rect; + +#if PLATFORM(QT) + QPixmap* m_buffer; + QPixmap* m_backBuffer; + QRegion* m_dirtyRegion; +#endif +}; + +} +#endif +#endif |