Home | History | Annotate | Download | only in svg
      1 /*
      2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox (at) kde.org>
      3                   2004, 2005, 2006, 2007 Rob Buis <buis (at) kde.org>
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Library General Public
      7     License as published by the Free Software Foundation; either
      8     version 2 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Library General Public License for more details.
     14 
     15     You should have received a copy of the GNU Library General Public License
     16     along with this library; see the file COPYING.LIB.  If not, write to
     17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     18     Boston, MA 02110-1301, USA.
     19 */
     20 
     21 #ifndef SVGColor_h
     22 #define SVGColor_h
     23 #if ENABLE(SVG)
     24 
     25 #include "CSSValue.h"
     26 #include "Color.h"
     27 #include <wtf/PassRefPtr.h>
     28 
     29 namespace WebCore {
     30 
     31     class RGBColor;
     32 
     33     class SVGColor : public CSSValue {
     34     public:
     35         static PassRefPtr<SVGColor> create(const String& color)
     36         {
     37             return adoptRef(new SVGColor(color));
     38         }
     39         static PassRefPtr<SVGColor> create(const Color& color)
     40         {
     41             return adoptRef(new SVGColor(color));
     42         }
     43         static PassRefPtr<SVGColor> createCurrentColor()
     44         {
     45             return adoptRef(new SVGColor(SVG_COLORTYPE_CURRENTCOLOR));
     46         }
     47 
     48         virtual ~SVGColor();
     49 
     50         enum SVGColorType {
     51             SVG_COLORTYPE_UNKNOWN                   = 0,
     52             SVG_COLORTYPE_RGBCOLOR                  = 1,
     53             SVG_COLORTYPE_RGBCOLOR_ICCCOLOR         = 2,
     54             SVG_COLORTYPE_CURRENTCOLOR              = 3
     55         };
     56 
     57         // 'SVGColor' functions
     58         unsigned short colorType() const;
     59 
     60         PassRefPtr<RGBColor> rgbColor() const;
     61 
     62         static Color colorFromRGBColorString(const String&);
     63 
     64         void setRGBColor(const String& rgbColor) { ExceptionCode ignored = 0; setRGBColor(rgbColor, ignored); }
     65         void setRGBColor(const String& rgbColor, ExceptionCode&);
     66         void setRGBColorICCColor(const String& rgbColor, const String& iccColor, ExceptionCode&);
     67         void setColor(unsigned short colorType, const String& rgbColor, const String& iccColor, ExceptionCode&);
     68 
     69         virtual String cssText() const;
     70 
     71         // Helpers
     72         const Color& color() const;
     73 
     74     protected:
     75         SVGColor();
     76         SVGColor(const String& color);
     77         SVGColor(const Color&);
     78 
     79     private:
     80         SVGColor(SVGColorType);
     81 
     82         static void create(int); // compile-time guard
     83 
     84         virtual bool isSVGColor() const { return true; }
     85 
     86         Color m_color;
     87         unsigned short m_colorType;
     88     };
     89 
     90 } // namespace WebCore
     91 
     92 #endif // ENABLE(SVG)
     93 #endif // SVGColor_h
     94 
     95 // vim:ts=4:noet
     96