• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KHTML

  • khtml
  • svg
  • graphics
  • filters
SVGFilterEffect.cpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
3 2004, 2005 Rob Buis <buis@kde.org>
4 2005 Eric Seidel <eric@webkit.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 aint with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#include "config.h"
23
24#if ENABLE(SVG) && ENABLE(SVG_FILTERS)
25#include "SVGFilterEffect.h"
26
27#include "SVGRenderTreeAsText.h"
28#include "SVGResourceFilter.h"
29
30namespace WebCore {
31
32SVGFilterEffect::SVGFilterEffect(SVGResourceFilter* filter)
33 : m_filter(filter)
34 , m_xBBoxMode(false)
35 , m_yBBoxMode(false)
36 , m_widthBBoxMode(false)
37 , m_heightBBoxMode(false)
38{
39}
40
41FloatRect SVGFilterEffect::primitiveBBoxForFilterBBox(const FloatRect& filterBBox, const FloatRect& itemBBox) const
42{
43 FloatRect subRegionBBox = subRegion();
44 FloatRect useBBox = filterBBox;
45
46 ASSERT(m_filter);
47 if (!m_filter)
48 return FloatRect();
49
50 if (m_filter->effectBoundingBoxMode()) {
51 if (!m_filter->filterBoundingBoxMode())
52 useBBox = itemBBox;
53
54 subRegionBBox = FloatRect(useBBox.x() + subRegionBBox.x() * useBBox.width(),
55 useBBox.y() + subRegionBBox.y() * useBBox.height(),
56 subRegionBBox.width() * useBBox.width(),
57 subRegionBBox.height() * useBBox.height());
58 } else {
59 if (xBoundingBoxMode())
60 subRegionBBox.setX(useBBox.x() + subRegionBBox.x() * useBBox.width());
61
62 if (yBoundingBoxMode())
63 subRegionBBox.setY(useBBox.y() + subRegionBBox.y() * useBBox.height());
64
65 if (widthBoundingBoxMode())
66 subRegionBBox.setWidth(subRegionBBox.width() * useBBox.width());
67
68 if (heightBoundingBoxMode())
69 subRegionBBox.setHeight(subRegionBBox.height() * useBBox.height());
70 }
71
72 return subRegionBBox;
73}
74
75FloatRect SVGFilterEffect::subRegion() const
76{
77 return m_subRegion;
78}
79
80void SVGFilterEffect::setSubRegion(const FloatRect& subRegion)
81{
82 m_subRegion = subRegion;
83}
84
85String SVGFilterEffect::in() const
86{
87 return m_in;
88}
89
90void SVGFilterEffect::setIn(const String& in)
91{
92 m_in = in;
93}
94
95String SVGFilterEffect::result() const
96{
97 return m_result;
98}
99
100void SVGFilterEffect::setResult(const String& result)
101{
102 m_result = result;
103}
104
105SVGResourceFilter* SVGFilterEffect::filter() const
106{
107 return m_filter;
108}
109
110void SVGFilterEffect::setFilter(SVGResourceFilter* filter)
111{
112 m_filter = filter;
113}
114
115TextStream& SVGFilterEffect::externalRepresentation(TextStream& ts) const
116{
117 if (!in().isEmpty())
118 ts << "[in=\"" << in() << "\"]";
119 if (!result().isEmpty())
120 ts << " [result=\"" << result() << "\"]";
121 if (!subRegion().isEmpty())
122 ts << " [subregion=\"" << subRegion() << "\"]";
123 return ts;
124}
125
126TextStream& operator<<(TextStream& ts, const SVGFilterEffect& e)
127{
128 return e.externalRepresentation(ts);
129}
130
131} // namespace WebCore
132
133#endif // ENABLE(SVG) && ENABLE(SVG_FILTERS)
SVGFilterEffect.h
SVGResourceFilter.h
operator<<
QDataStream & operator<<(QDataStream &d, const ActionReply &reply)
WebCore
Definition: CSSHelper.h:7
WebCore::String
DOM::DOMString String
Definition: PlatformString.h:8
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KHTML

Skip menu "KHTML"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal