~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Source/WebCore/rendering/svg/RenderSVGResourceGradient.h

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
 
3
 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
 
4
 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
 
5
 *
 
6
 * This library is free software; you can redistribute it and/or
 
7
 * modify it under the terms of the GNU Library General Public
 
8
 * License as published by the Free Software Foundation; either
 
9
 * version 2 of the License, or (at your option) any later version.
 
10
 *
 
11
 * This library is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
14
 * Library General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU Library General Public License
 
17
 * along with this library; see the file COPYING.LIB.  If not, write to
 
18
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
19
 * Boston, MA 02110-1301, USA.
 
20
 */
 
21
 
 
22
#ifndef RenderSVGResourceGradient_h
 
23
#define RenderSVGResourceGradient_h
 
24
 
 
25
#if ENABLE(SVG)
 
26
#include "AffineTransform.h"
 
27
#include "FloatRect.h"
 
28
#include "Gradient.h"
 
29
#include "ImageBuffer.h"
 
30
#include "RenderSVGResourceContainer.h"
 
31
#include "SVGGradientElement.h"
 
32
 
 
33
#include <wtf/HashMap.h>
 
34
 
 
35
namespace WebCore {
 
36
 
 
37
struct GradientData {
 
38
    WTF_MAKE_FAST_ALLOCATED;
 
39
public:
 
40
    RefPtr<Gradient> gradient;
 
41
    AffineTransform userspaceTransform;
 
42
};
 
43
 
 
44
class GraphicsContext;
 
45
 
 
46
class RenderSVGResourceGradient : public RenderSVGResourceContainer {
 
47
public:
 
48
    RenderSVGResourceGradient(SVGGradientElement*);
 
49
 
 
50
    virtual void removeAllClientsFromCache(bool markForInvalidation = true);
 
51
    virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true);
 
52
 
 
53
    virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode);
 
54
    virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*);
 
55
    virtual FloatRect resourceBoundingBox(RenderObject*) { return FloatRect(); }
 
56
 
 
57
protected:
 
58
    void addStops(GradientData*, const Vector<Gradient::ColorStop>&) const;
 
59
 
 
60
    virtual SVGUnitTypes::SVGUnitType gradientUnits() const = 0;
 
61
    virtual void calculateGradientTransform(AffineTransform&) = 0;
 
62
    virtual bool collectGradientAttributes(SVGGradientElement*) = 0;
 
63
    virtual void buildGradient(GradientData*) const = 0;
 
64
 
 
65
    GradientSpreadMethod platformSpreadMethodFromSVGType(SVGSpreadMethodType) const;
 
66
 
 
67
private:
 
68
    bool m_shouldCollectGradientAttributes : 1;
 
69
    HashMap<RenderObject*, OwnPtr<GradientData> > m_gradientMap;
 
70
 
 
71
#if USE(CG)
 
72
    GraphicsContext* m_savedContext;
 
73
    OwnPtr<ImageBuffer> m_imageBuffer;
 
74
#endif
 
75
};
 
76
 
 
77
}
 
78
 
 
79
#endif
 
80
#endif