2 * Copyright 2011, The Android Open Source Project
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef PaintedSurface_h
27 #define PaintedSurface_h
29 #include "BaseTileTexture.h"
30 #include "ClassTracker.h"
32 #include "LayerAndroid.h"
34 #include "TextureOwner.h"
35 #include "TilesManager.h"
36 #include "TilePainter.h"
37 #include "TransformationMatrix.h"
44 class DualTiledTexture;
46 class PaintedSurface : public SurfacePainter {
49 virtual ~PaintedSurface();
51 // PaintedSurface methods
53 void prepare(GLWebViewState*);
55 bool paint(SkCanvas*);
57 void setDrawingLayer(LayerAndroid* layer) { m_drawingLayer = layer; }
58 LayerAndroid* drawingLayer() { return m_drawingLayer; }
60 void setPaintingLayer(LayerAndroid* layer, const SkRegion& dirtyArea);
61 void clearPaintingLayer() { m_paintingLayer = 0; }
62 LayerAndroid* paintingLayer() { return m_paintingLayer; }
67 bool owns(BaseTileTexture* texture);
69 void computeTexturesAmount(TexturesResult*);
70 IntRect computeVisibleArea(LayerAndroid*);
72 // TilePainter methods for TiledTexture
73 virtual const TransformationMatrix* transform();
74 virtual float opacity();
76 // used by TiledTexture
77 float scale() { return m_scale; }
78 unsigned int pictureUsed() { return m_pictureUsed; }
81 LayerAndroid* m_drawingLayer;
82 LayerAndroid* m_paintingLayer;
83 DualTiledTexture* m_tiledTexture;
87 unsigned int m_pictureUsed;
89 android::Mutex m_layerLock;
92 } // namespace WebCore
94 #endif // PaintedSurface_h