tizen beta release
[framework/web/webkit-efl.git] / Source / WebCore / platform / graphics / efl / LayerHTMLContents.h
1 /*
2     Copyright (C) 2011-2012 Samsung Electronics
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 LayerHTMLContents_h
21 #define LayerHTMLContents_h
22
23 #if ENABLE(TIZEN_ACCELERATED_COMPOSITING)
24
25 #include "LayerContents.h"
26
27 namespace WebCore {
28
29 class LayerHTMLContents : public LayerContents {
30 public:
31     static PassRefPtr<LayerContents> create(EflLayer* owner);
32
33     virtual ~LayerHTMLContents();
34
35     virtual EflLayer::ContentsType type() const { return EflLayer::HTMLContentsType; }
36
37     virtual void drawContents(const FloatRect& contentRect, const FloatRect& dirtyRect, float zoomFactor);
38     virtual void updateTexture(LayerTextureManager*);
39
40     virtual void saveImage(int frame, int tileIndex, const String& dir);
41
42 #if ENABLE(TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION)
43     virtual void drawScrollingLayerContents(EflLayer* scrollingLayer, EflLayer* scrollingContentsLayer, const IntSize&, const FloatSize&, float zoomFactor);
44     virtual cairo_surface_t* imageSurface() { return m_cairoSurface; }
45 #endif
46 protected:
47     LayerHTMLContents(EflLayer* owner);
48
49     void calculateTextureSize(const FloatRect& scaledContentRect);
50     void calculateDrawRect(const FloatRect& dirtyRect, float zoomFactor);
51
52     bool createCairoSurface();
53     void destroyCairoSurface();
54     cairo_t* createCairoContext();
55
56     cairo_surface_t* m_cairoSurface;
57
58     IntRect m_scaledDrawRect;
59     IntRect m_texRect;
60
61     bool m_texSizeChanged;
62     bool m_needToUpdateTexture;
63
64     void* m_contentPixels;
65 };
66
67 } // namespace WebCore
68
69 #endif // ENABLE(TIZEN_ACCELERATED_COMPOSITING)
70 #endif // LayerHTMLContents_h