1 /* 2 * Copyright (C) 2006, 2008 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 CanvasStyle_h 27 #define CanvasStyle_h 28 29 #include "PlatformString.h" 30 31 namespace WebCore { 32 33 class CanvasGradient; 34 class CanvasPattern; 35 class GraphicsContext; 36 37 class CanvasStyle : public RefCounted<CanvasStyle> { 38 public: create(const String & color)39 static PassRefPtr<CanvasStyle> create(const String& color) { return adoptRef(new CanvasStyle(color)); } create(float grayLevel)40 static PassRefPtr<CanvasStyle> create(float grayLevel) { return adoptRef(new CanvasStyle(grayLevel)); } create(const String & color,float alpha)41 static PassRefPtr<CanvasStyle> create(const String& color, float alpha) { return adoptRef(new CanvasStyle(color, alpha)); } create(float grayLevel,float alpha)42 static PassRefPtr<CanvasStyle> create(float grayLevel, float alpha) { return adoptRef(new CanvasStyle(grayLevel, alpha)); } create(float r,float g,float b,float a)43 static PassRefPtr<CanvasStyle> create(float r, float g, float b, float a) { return adoptRef(new CanvasStyle(r, g, b, a)); } create(float c,float m,float y,float k,float a)44 static PassRefPtr<CanvasStyle> create(float c, float m, float y, float k, float a) { return adoptRef(new CanvasStyle(c, m, y, k, a)); } create(PassRefPtr<CanvasGradient> gradient)45 static PassRefPtr<CanvasStyle> create(PassRefPtr<CanvasGradient> gradient) { return adoptRef(new CanvasStyle(gradient)); } create(PassRefPtr<CanvasPattern> pattern)46 static PassRefPtr<CanvasStyle> create(PassRefPtr<CanvasPattern> pattern) { return adoptRef(new CanvasStyle(pattern)); } 47 color()48 String color() const { return m_color; } canvasGradient()49 CanvasGradient* canvasGradient() const { return m_gradient.get(); } canvasPattern()50 CanvasPattern* canvasPattern() const { return m_pattern.get(); } 51 52 void applyFillColor(GraphicsContext*); 53 void applyStrokeColor(GraphicsContext*); 54 55 private: 56 CanvasStyle(const String& color); 57 CanvasStyle(float grayLevel); 58 CanvasStyle(const String& color, float alpha); 59 CanvasStyle(float grayLevel, float alpha); 60 CanvasStyle(float r, float g, float b, float a); 61 CanvasStyle(float c, float m, float y, float k, float a); 62 CanvasStyle(PassRefPtr<CanvasGradient>); 63 CanvasStyle(PassRefPtr<CanvasPattern>); 64 65 enum Type { ColorString, ColorStringWithAlpha, GrayLevel, RGBA, CMYKA, Gradient, ImagePattern }; 66 67 Type m_type; 68 69 String m_color; 70 RefPtr<CanvasGradient> m_gradient; 71 RefPtr<CanvasPattern> m_pattern; 72 73 float m_alpha; 74 75 float m_grayLevel; 76 77 float m_red; 78 float m_green; 79 float m_blue; 80 81 float m_cyan; 82 float m_magenta; 83 float m_yellow; 84 float m_black; 85 }; 86 87 } // namespace WebCore 88 89 #endif 90