OSDN Git Service

Fix image layer codepath
[android-x86/external-webkit.git] / Source / WebCore / platform / graphics / android / PaintedSurface.h
1 /*
2  * Copyright 2011, The Android Open Source Project
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
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.
12  *
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.
24  */
25
26 #ifndef PaintedSurface_h
27 #define PaintedSurface_h
28
29 #include "BaseTileTexture.h"
30 #include "ClassTracker.h"
31 #include "IntRect.h"
32 #include "LayerAndroid.h"
33 #include "SkRefCnt.h"
34 #include "TextureOwner.h"
35 #include "TilesManager.h"
36 #include "TilePainter.h"
37 #include "TransformationMatrix.h"
38
39 class SkCanvas;
40 class SkRegion;
41
42 namespace WebCore {
43
44 class DualTiledTexture;
45
46 class PaintedSurface : public SurfacePainter {
47 public:
48     PaintedSurface();
49     virtual ~PaintedSurface();
50
51     // PaintedSurface methods
52
53     void prepare(GLWebViewState*);
54     bool draw();
55     bool paint(SkCanvas*);
56
57     void setDrawingLayer(LayerAndroid* layer) { m_drawingLayer = layer; }
58     LayerAndroid* drawingLayer() { return m_drawingLayer; }
59
60     void setPaintingLayer(LayerAndroid* layer, const SkRegion& dirtyArea);
61     void clearPaintingLayer() { m_paintingLayer = 0; }
62     LayerAndroid* paintingLayer() { return m_paintingLayer; }
63
64     void swapTiles();
65     bool isReady();
66
67     bool owns(BaseTileTexture* texture);
68
69     void computeTexturesAmount(TexturesResult*);
70     IntRect computeVisibleArea(LayerAndroid*);
71
72     // TilePainter methods for TiledTexture
73     virtual const TransformationMatrix* transform();
74     virtual float opacity();
75
76     // used by TiledTexture
77     float scale() { return m_scale; }
78     unsigned int pictureUsed() { return m_pictureUsed; }
79
80 private:
81     LayerAndroid* m_drawingLayer;
82     LayerAndroid* m_paintingLayer;
83     DualTiledTexture* m_tiledTexture;
84
85     float m_scale;
86
87     unsigned int m_pictureUsed;
88
89     android::Mutex m_layerLock;
90 };
91
92 } // namespace WebCore
93
94 #endif // PaintedSurface_h