Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: Source/core/rendering/svg/RenderSVGResourceMasker.h

Issue 23643003: ImageBuffer-less SVG masking and clipping. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix the Win build. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 15 matching lines...) Expand all
26 #include "core/platform/graphics/IntSize.h" 26 #include "core/platform/graphics/IntSize.h"
27 #include "core/rendering/svg/RenderSVGResourceContainer.h" 27 #include "core/rendering/svg/RenderSVGResourceContainer.h"
28 #include "core/svg/SVGMaskElement.h" 28 #include "core/svg/SVGMaskElement.h"
29 #include "core/svg/SVGUnitTypes.h" 29 #include "core/svg/SVGUnitTypes.h"
30 30
31 #include "wtf/HashMap.h" 31 #include "wtf/HashMap.h"
32 #include "wtf/OwnPtr.h" 32 #include "wtf/OwnPtr.h"
33 33
34 namespace WebCore { 34 namespace WebCore {
35 35
36 struct MaskerData {
37 OwnPtr<ImageBuffer> maskImage;
38 };
39
40 class RenderSVGResourceMasker FINAL : public RenderSVGResourceContainer { 36 class RenderSVGResourceMasker FINAL : public RenderSVGResourceContainer {
41 public: 37 public:
42 RenderSVGResourceMasker(SVGMaskElement*); 38 RenderSVGResourceMasker(SVGMaskElement*);
43 virtual ~RenderSVGResourceMasker(); 39 virtual ~RenderSVGResourceMasker();
44 40
45 virtual const char* renderName() const { return "RenderSVGResourceMasker"; } 41 virtual const char* renderName() const { return "RenderSVGResourceMasker"; }
46 42
47 virtual void removeAllClientsFromCache(bool markForInvalidation = true); 43 virtual void removeAllClientsFromCache(bool markForInvalidation = true);
48 virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true); 44 virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true);
49 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, u nsigned short resourceMode); 45 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, u nsigned short resourceMode) OVERRIDE;
46 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned sh ort, const Path*, const RenderSVGShape*) OVERRIDE;
50 virtual FloatRect resourceBoundingBox(RenderObject*); 47 virtual FloatRect resourceBoundingBox(RenderObject*);
51 48
52 SVGUnitTypes::SVGUnitType maskUnits() const { return toSVGMaskElement(node() )->maskUnitsCurrentValue(); } 49 SVGUnitTypes::SVGUnitType maskUnits() const { return toSVGMaskElement(node() )->maskUnitsCurrentValue(); }
53 SVGUnitTypes::SVGUnitType maskContentUnits() const { return toSVGMaskElement (node())->maskContentUnitsCurrentValue(); } 50 SVGUnitTypes::SVGUnitType maskContentUnits() const { return toSVGMaskElement (node())->maskContentUnitsCurrentValue(); }
54 51
55 virtual RenderSVGResourceType resourceType() const { return s_resourceType; } 52 virtual RenderSVGResourceType resourceType() const { return s_resourceType; }
56 static RenderSVGResourceType s_resourceType; 53 static RenderSVGResourceType s_resourceType;
57 54
58 private: 55 private:
59 bool drawContentIntoMaskImage(MaskerData*, ColorSpace, const SVGMaskElement* , RenderObject*);
60 void calculateMaskContentRepaintRect(); 56 void calculateMaskContentRepaintRect();
57 void drawMaskContent(GraphicsContext*, const FloatRect& targetBoundingBox);
61 58
62 FloatRect m_maskContentBoundaries; 59 FloatRect m_maskContentBoundaries;
63 HashMap<RenderObject*, MaskerData*> m_masker;
64 }; 60 };
65 61
66 } 62 }
67 63
68 #endif 64 #endif
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/RenderSVGResourceClipper.cpp ('k') | Source/core/rendering/svg/RenderSVGResourceMasker.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698