mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-25 11:22:50 +00:00
206 lines
5 KiB
C++
206 lines
5 KiB
C++
/*
|
|
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
|
|
2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
|
|
(C) 2009 Maksim Orlovich <maksim@kde.org>
|
|
|
|
This file is part of the KDE project
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "css/css_svgvalueimpl.h"
|
|
#include "svg/SVGException.h"
|
|
|
|
namespace DOM {
|
|
|
|
SVGColorImpl::SVGColorImpl()
|
|
: m_colorType(SVG_COLORTYPE_UNKNOWN)
|
|
{
|
|
}
|
|
|
|
SVGColorImpl::SVGColorImpl(const DOMString& rgbColor)
|
|
: m_colorType(SVG_COLORTYPE_RGBCOLOR)
|
|
{
|
|
setRGBColor(rgbColor);
|
|
}
|
|
|
|
SVGColorImpl::SVGColorImpl(unsigned short colorType)
|
|
: m_colorType(colorType)
|
|
{}
|
|
|
|
SVGColorImpl::SVGColorImpl(const QColor& c)
|
|
: m_color(c)
|
|
, m_colorType(SVG_COLORTYPE_RGBCOLOR)
|
|
{}
|
|
|
|
|
|
SVGColorImpl::~SVGColorImpl()
|
|
{}
|
|
|
|
unsigned short SVGColorImpl::colorType() const
|
|
{
|
|
return m_colorType;
|
|
}
|
|
|
|
unsigned SVGColorImpl::rgbColor() const
|
|
{
|
|
return m_color.rgb();
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColor(const DOMString& rgbColor, int& ec)
|
|
{
|
|
QColor color = SVGColorImpl::colorFromRGBColorString(rgbColor);
|
|
if (color.isValid())
|
|
m_color = color;
|
|
else
|
|
ec = SVGException::SVG_INVALID_VALUE_ERR;
|
|
}
|
|
|
|
QColor SVGColorImpl::colorFromRGBColorString(const DOMString& colorDOMString)
|
|
{
|
|
|
|
// ### this used to disallow hsl, etc, but I think CSS3 color ought to win..
|
|
// ### FIXME, same as canvas... where should the helper go.
|
|
|
|
/*DOMString s = colorDOMString.stripWhiteSpace();
|
|
// hsl, hsla and rgba are not in the SVG spec.
|
|
// FIXME: rework css parser so it is more svg aware
|
|
if (s.startsWith("hsl") || s.startsWith("rgba"))
|
|
return Color();
|
|
RGBA32 color;
|
|
if (CSSParser::parseColor(color, s))
|
|
return color;
|
|
return Color();*/
|
|
return QColor(colorDOMString.string());
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColorICCColor(const DOMString& /* rgbColor */, const DOMString& /* iccColor */, int& /* ec */)
|
|
{
|
|
// ### TODO: implement me!
|
|
}
|
|
|
|
void SVGColorImpl::setColor(unsigned short colorType, const DOMString& /* rgbColor */ , const DOMString& /* iccColor */, int& /*ec*/)
|
|
{
|
|
// ### TODO: implement me!
|
|
m_colorType = colorType;
|
|
}
|
|
|
|
DOMString SVGColorImpl::cssText() const
|
|
{
|
|
if (m_colorType == SVG_COLORTYPE_RGBCOLOR)
|
|
return m_color.name();
|
|
|
|
// ### FIXME: other types?
|
|
|
|
return DOMString();
|
|
}
|
|
|
|
const QColor& SVGColorImpl::color() const
|
|
{
|
|
return m_color;
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl()
|
|
: SVGColorImpl()
|
|
, m_paintType(SVG_PAINTTYPE_UNKNOWN)
|
|
{
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl(const DOMString& uri)
|
|
: SVGColorImpl()
|
|
, m_paintType(SVG_PAINTTYPE_URI_RGBCOLOR)
|
|
{
|
|
setUri(uri);
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl(SVGPaintType paintType)
|
|
: SVGColorImpl()
|
|
, m_paintType(paintType)
|
|
{
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl(SVGPaintType paintType, const DOMString& uri, const DOMString& rgbPaint, const DOMString&)
|
|
: SVGColorImpl(rgbPaint)
|
|
, m_paintType(paintType)
|
|
{
|
|
setUri(uri);
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl(const QColor& c)
|
|
: SVGColorImpl(c)
|
|
, m_paintType(SVG_PAINTTYPE_RGBCOLOR)
|
|
{
|
|
}
|
|
|
|
SVGPaintImpl::SVGPaintImpl(const DOMString& uri, const QColor& c)
|
|
: SVGColorImpl(c)
|
|
, m_paintType(SVG_PAINTTYPE_URI_RGBCOLOR)
|
|
{
|
|
setUri(uri);
|
|
}
|
|
|
|
SVGPaintImpl::~SVGPaintImpl()
|
|
{
|
|
}
|
|
|
|
SVGPaintImpl* SVGPaintImpl::defaultFill()
|
|
{
|
|
static SVGPaintImpl* _defaultFill = new SVGPaintImpl(Qt::black);
|
|
return _defaultFill;
|
|
}
|
|
|
|
SVGPaintImpl* SVGPaintImpl::defaultStroke()
|
|
{
|
|
static SVGPaintImpl* _defaultStroke = new SVGPaintImpl(SVG_PAINTTYPE_NONE);
|
|
return _defaultStroke;
|
|
}
|
|
|
|
DOMString SVGPaintImpl::uri() const
|
|
{
|
|
return m_uri;
|
|
}
|
|
|
|
void SVGPaintImpl::setUri(const DOMString& uri)
|
|
{
|
|
m_uri = uri;
|
|
}
|
|
|
|
void SVGPaintImpl::setPaint(SVGPaintType paintType, const DOMString& uri, const DOMString& rgbPaint, const DOMString&, int&)
|
|
{
|
|
m_paintType = paintType;
|
|
|
|
if (m_paintType == SVG_PAINTTYPE_URI)
|
|
setUri(uri);
|
|
else if (m_paintType == SVG_PAINTTYPE_RGBCOLOR)
|
|
setRGBColor(rgbPaint);
|
|
}
|
|
|
|
DOMString SVGPaintImpl::cssText() const
|
|
{
|
|
if (m_paintType == SVG_PAINTTYPE_NONE)
|
|
return "none";
|
|
else if (m_paintType == SVG_PAINTTYPE_CURRENTCOLOR)
|
|
return "currentColor";
|
|
else if (m_paintType == SVG_PAINTTYPE_URI)
|
|
return m_uri; //return "url(" + m_uri + ")";
|
|
|
|
return SVGColorImpl::cssText();
|
|
}
|
|
|
|
}
|
|
|
|
// vim:ts=4
|
|
|