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

Side by Side Diff: sky/engine/core/html/canvas/CanvasStyle.h

Issue 1001913003: Remove <canvas> (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 #ifndef SKY_ENGINE_CORE_HTML_CANVAS_CANVASSTYLE_H_
28 #define SKY_ENGINE_CORE_HTML_CANVAS_CANVASSTYLE_H_
29
30 #include "sky/engine/platform/graphics/Color.h"
31 #include "sky/engine/platform/heap/Handle.h"
32 #include "sky/engine/wtf/Assertions.h"
33 #include "sky/engine/wtf/RefCounted.h"
34 #include "sky/engine/wtf/text/WTFString.h"
35
36 namespace blink {
37
38 class CanvasGradient;
39 class CanvasPattern;
40 class GraphicsContext;
41 class HTMLCanvasElement;
42
43 class CanvasStyle final : public RefCounted<CanvasStyle> {
44 public:
45 static PassRefPtr<CanvasStyle> createFromRGBA(RGBA32 rgba) { return adop tRef(new CanvasStyle(rgba)); }
46 static PassRefPtr<CanvasStyle> createFromString(const String& color);
47 static PassRefPtr<CanvasStyle> createFromStringWithOverrideAlpha(const S tring& color, float alpha);
48 static PassRefPtr<CanvasStyle> createFromGrayLevelWithAlpha(float grayLe vel, float alpha) { return adoptRef(new CanvasStyle(grayLevel, alpha)); }
49 static PassRefPtr<CanvasStyle> createFromRGBAChannels(float r, float g, float b, float a) { return adoptRef(new CanvasStyle(r, g, b, a)); }
50 static PassRefPtr<CanvasStyle> createFromCMYKAChannels(float c, float m, float y, float k, float a) { return adoptRef(new CanvasStyle(c, m, y, k, a)); }
51 static PassRefPtr<CanvasStyle> createFromGradient(PassRefPtr<CanvasGradi ent>);
52 static PassRefPtr<CanvasStyle> createFromPattern(PassRefPtr<CanvasPatter n>);
53
54 bool isCurrentColor() const { return m_type == CurrentColor || m_type == CurrentColorWithOverrideAlpha; }
55 bool hasOverrideAlpha() const { return m_type == CurrentColorWithOverrid eAlpha; }
56 float overrideAlpha() const { ASSERT(m_type == CurrentColorWithOverrideA lpha); return m_overrideAlpha; }
57
58 String color() const { ASSERT(m_type == RGBA || m_type == CMYKA); return Color(m_rgba).serialized(); }
59 CanvasGradient* canvasGradient() const { return m_gradient.get(); }
60 CanvasPattern* canvasPattern() const { return m_pattern.get(); }
61
62 void applyFillColor(GraphicsContext*);
63 void applyStrokeColor(GraphicsContext*);
64
65 bool isEquivalentColor(const CanvasStyle&) const;
66 bool isEquivalentRGBA(float r, float g, float b, float a) const;
67 bool isEquivalentCMYKA(float c, float m, float y, float k, float a) cons t;
68
69 private:
70 enum Type { RGBA, CMYKA, Gradient, ImagePattern, CurrentColor, CurrentCo lorWithOverrideAlpha };
71
72 CanvasStyle(Type, float overrideAlpha = 0);
73 CanvasStyle(RGBA32 rgba);
74 CanvasStyle(float grayLevel, float alpha);
75 CanvasStyle(float r, float g, float b, float a);
76 CanvasStyle(float c, float m, float y, float k, float a);
77 CanvasStyle(PassRefPtr<CanvasGradient>);
78 CanvasStyle(PassRefPtr<CanvasPattern>);
79
80 Type m_type;
81
82 union {
83 RGBA32 m_rgba;
84 float m_overrideAlpha;
85 };
86
87 RefPtr<CanvasGradient> m_gradient;
88 RefPtr<CanvasPattern> m_pattern;
89
90 struct CMYKAValues {
91 CMYKAValues() : c(0), m(0), y(0), k(0), a(0) { }
92 CMYKAValues(float cyan, float magenta, float yellow, float black, fl oat alpha) : c(cyan), m(magenta), y(yellow), k(black), a(alpha) { }
93 float c;
94 float m;
95 float y;
96 float k;
97 float a;
98 } m_cmyka;
99 };
100
101 RGBA32 currentColor(HTMLCanvasElement*);
102 bool parseColorOrCurrentColor(RGBA32& parsedColor, const String& colorString , HTMLCanvasElement*);
103
104 } // namespace blink
105
106 #endif // SKY_ENGINE_CORE_HTML_CANVAS_CANVASSTYLE_H_
OLDNEW
« no previous file with comments | « sky/engine/core/html/canvas/CanvasRenderingContext2D.idl ('k') | sky/engine/core/html/canvas/CanvasStyle.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698