1/*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
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 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. 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 APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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 GraphicsContextPrivate_h
27#define GraphicsContextPrivate_h
28
29#include "Gradient.h"
30#include "GraphicsContext.h"
31#include "Pattern.h"
32#include "TransformationMatrix.h"
33
34namespace WebCore {
35
36    struct GraphicsContextState {
37        GraphicsContextState()
38            : textDrawingMode(cTextFill)
39            , strokeStyle(SolidStroke)
40            , strokeThickness(0)
41            , strokeColor(Color::black)
42            , strokeColorSpace(DeviceColorSpace)
43            , fillRule(RULE_NONZERO)
44            , fillColor(Color::black)
45            , fillColorSpace(DeviceColorSpace)
46            , shouldAntialias(true)
47            , paintingDisabled(false)
48            , shadowBlur(0)
49            , shadowsIgnoreTransforms(false)
50#if PLATFORM(CAIRO)
51            , globalAlpha(1)
52#endif
53        {
54        }
55
56        int textDrawingMode;
57
58        StrokeStyle strokeStyle;
59        float strokeThickness;
60        Color strokeColor;
61        ColorSpace strokeColorSpace;
62        RefPtr<Gradient> strokeGradient;
63        RefPtr<Pattern> strokePattern;
64
65        WindRule fillRule;
66        Color fillColor;
67        ColorSpace fillColorSpace;
68        RefPtr<Gradient> fillGradient;
69        RefPtr<Pattern> fillPattern;
70
71        bool shouldAntialias;
72
73        bool paintingDisabled;
74
75        IntSize shadowSize;
76        unsigned shadowBlur;
77        Color shadowColor;
78
79        bool shadowsIgnoreTransforms;
80#if PLATFORM(CAIRO)
81        float globalAlpha;
82#elif PLATFORM(QT)
83        TransformationMatrix pathTransform;
84#endif
85    };
86
87    class GraphicsContextPrivate : public Noncopyable {
88    public:
89        GraphicsContextPrivate()
90            : m_updatingControlTints(false)
91        {
92        }
93
94        GraphicsContextState state;
95        Vector<GraphicsContextState> stack;
96        bool m_updatingControlTints;
97    };
98
99} // namespace WebCore
100
101#endif // GraphicsContextPrivate_h
102