diff options
Diffstat (limited to 'Source/WebKit/android/nav/DrawExtra.h')
-rw-r--r-- | Source/WebKit/android/nav/DrawExtra.h | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/Source/WebKit/android/nav/DrawExtra.h b/Source/WebKit/android/nav/DrawExtra.h index 6716a65..cc94476 100644 --- a/Source/WebKit/android/nav/DrawExtra.h +++ b/Source/WebKit/android/nav/DrawExtra.h @@ -26,11 +26,25 @@ #ifndef DrawExtra_h #define DrawExtra_h +#include "config.h" + +#include "Color.h" +#include "IntPoint.h" +#include "IntRect.h" +#include "wtf/HashMap.h" +#include "wtf/Vector.h" + +// Color of the ring copied from framework's holo_light +#define COLOR_HOLO_LIGHT 0x6633B5E5 +// Color of the ring copied from framework's holo_dark +#define COLOR_HOLO_DARK 0x660099CC + class SkCanvas; +class SkRegion; namespace WebCore { - class IntRect; class LayerAndroid; + class GLExtras; } using namespace WebCore; @@ -40,7 +54,27 @@ namespace android { class DrawExtra { public: virtual ~DrawExtra() {} - virtual void draw(SkCanvas* , LayerAndroid* , IntRect* ) = 0; + virtual void draw(SkCanvas*, LayerAndroid*) {} + virtual void drawGL(GLExtras*, const LayerAndroid*) {} +}; + +// A helper extra that has a SkRegion per LayerAndroid +class RegionLayerDrawExtra : public DrawExtra { +public: + RegionLayerDrawExtra(); + virtual ~RegionLayerDrawExtra(); + + void addHighlightRegion(const LayerAndroid* layer, const Vector<IntRect>& rects, + const IntPoint& additionalOffset = IntPoint()); + virtual void draw(SkCanvas*, LayerAndroid*); + virtual void drawGL(GLExtras*, const LayerAndroid*); + +private: + SkRegion* getHighlightRegionsForLayer(const LayerAndroid* layer); + + typedef HashMap<int, SkRegion* > HighlightRegionMap; + HighlightRegionMap m_highlightRegions; + Color m_highlightColor; }; } |