KHtml

SVGRenderStyle.cpp
1 /*
2  Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <[email protected]>
3  2004, 2005 Rob Buis <[email protected]>
4 
5  Based on khtml code by:
6  Copyright (C) 1999 Antti Koivisto ([email protected])
7  Copyright (C) 1999-2003 Lars Knoll ([email protected])
8  Copyright (C) 2002-2003 Dirk Mueller ([email protected])
9  Copyright (C) 2002 Apple Computer, Inc.
10 
11  This file is part of the KDE project
12 
13  This library is free software; you can redistribute it and/or
14  modify it under the terms of the GNU Library General Public
15  License as published by the Free Software Foundation; either
16  version 2 of the License, or (at your option) any later version.
17 
18  This library is distributed in the hope that it will be useful,
19  but WITHOUT ANY WARRANTY; without even the implied warranty of
20  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21  Library General Public License for more details.
22 
23  You should have received a copy of the GNU Library General Public License
24  along with this library; see the file COPYING.LIB. If not, write to
25  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26  Boston, MA 02110-1301, USA.
27 */
28 
29 #include "wtf/Platform.h"
30 #if ENABLE(SVG)
31 #include "SVGRenderStyle.h"
32 
33 #include "RenderObject.h"
34 #include "RenderStyle.h"
35 #include "SVGStyledElement.h"
36 
37 namespace khtml
38 {
39 
40 SVGRenderStyle::SVGRenderStyle()
41 {
42  static SVGRenderStyle *defaultStyle = new SVGRenderStyle(CreateDefault);
43 
44  fill = defaultStyle->fill;
45  stroke = defaultStyle->stroke;
46  text = defaultStyle->text;
47  stops = defaultStyle->stops;
48  clip = defaultStyle->clip;
49  mask = defaultStyle->mask;
50  misc = defaultStyle->misc;
51  markers = defaultStyle->markers;
52 
53  setBitDefaults();
54 }
55 
56 SVGRenderStyle::SVGRenderStyle(CreateDefaultType)
57 {
58  setBitDefaults();
59 
60  fill.init();
61  stroke.init();
62  text.init();
63  stops.init();
64  clip.init();
65  mask.init();
66  misc.init();
67  markers.init();
68 }
69 
70 SVGRenderStyle::SVGRenderStyle(const SVGRenderStyle &other)
71  : RefCounted<SVGRenderStyle>()
72 {
73  fill = other.fill;
74  stroke = other.stroke;
75  text = other.text;
76  stops = other.stops;
77  clip = other.clip;
78  mask = other.mask;
79  misc = other.misc;
80  markers = other.markers;
81 
82  svg_inherited_flags = other.svg_inherited_flags;
83  svg_noninherited_flags = other.svg_noninherited_flags;
84 }
85 
86 SVGRenderStyle::~SVGRenderStyle()
87 {
88 }
89 
90 bool SVGRenderStyle::operator==(const SVGRenderStyle &o) const
91 {
92  return (fill == o.fill && stroke == o.stroke && text == o.text &&
93  stops == o.stops && clip == o.clip && mask == o.mask &&
94  misc == o.misc && markers == o.markers &&
95  svg_inherited_flags == o.svg_inherited_flags &&
96  svg_noninherited_flags == o.svg_noninherited_flags);
97 }
98 
99 bool SVGRenderStyle::inheritedNotEqual(const SVGRenderStyle *other) const
100 {
101  return (fill != other->fill
102  || stroke != other->stroke
103  || markers != other->markers
104  || text != other->text
105  || svg_inherited_flags != other->svg_inherited_flags);
106 }
107 
108 void SVGRenderStyle::inheritFrom(const SVGRenderStyle *svgInheritParent)
109 {
110  if (!svgInheritParent) {
111  return;
112  }
113 
114  fill = svgInheritParent->fill;
115  stroke = svgInheritParent->stroke;
116  markers = svgInheritParent->markers;
117  text = svgInheritParent->text;
118 
119  svg_inherited_flags = svgInheritParent->svg_inherited_flags;
120 }
121 
122 float SVGRenderStyle::cssPrimitiveToLength(const RenderObject *item, DOM::CSSValueImpl *value, float defaultValue)
123 {
124  Q_UNUSED(item);
125  DOM::CSSPrimitiveValueImpl *primitive = static_cast<DOM::CSSPrimitiveValueImpl *>(value);
126  if (!primitive) {
127  return defaultValue;
128  }
129 
130  /*unsigned short cssType = (primitive ? primitive->primitiveType() : (unsigned short) DOM::CSSPrimitiveValue::CSS_UNKNOWN);
131  if (!(cssType > DOM::CSSPrimitiveValue::CSS_UNKNOWN && cssType <= DOM::CSSPrimitiveValue::CSS_PC))
132  return defaultValue;
133 
134  if (cssType == DOM::CSSPrimitiveValue::CSS_PERCENTAGE) {
135  SVGStyledElement* element = static_cast<SVGStyledElement*>(item->element());
136  SVGElement* viewportElement = (element ? element->viewportElement() : 0);
137  if (viewportElement) {
138  float result = primitive->getFloatValue() / 100.0f;
139  return SVGLength::PercentageOfViewport(result, element, LengthModeOther);
140  }
141  }
142 
143  return primitive->computeLengthFloat(const_cast<RenderStyle*>(item->style()));*/
144  return (primitive->floatValue() > 0 ? primitive->floatValue() : defaultValue);
145 }
146 
147 }
148 
149 #endif // ENABLE(SVG)
150 
This file is part of the HTML rendering engine for KDE.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Oct 25 2021 22:48:23 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.