⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgresourcefilter.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
字号:
/*    Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>                  2004, 2005 Rob Buis <buis@kde.org>                  2005 Eric Seidel <eric@webkit.org>    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    aint 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 "config.h"#if ENABLE(SVG) && ENABLE(SVG_FILTERS)#include "SVGResourceFilter.h"#include "SVGRenderTreeAsText.h"#include "SVGFilterEffect.h"namespace WebCore {SVGResourceFilter::SVGResourceFilter()    : m_platformData(createPlatformData())    , m_filterBBoxMode(false)    , m_effectBBoxMode(false)    , m_xBBoxMode(false)    , m_yBBoxMode(false){}void SVGResourceFilter::clearEffects(){    m_effects.clear();}void SVGResourceFilter::addFilterEffect(SVGFilterEffect* effect){    ASSERT(effect);    if (effect) {        ASSERT(effect->filter() == this);        m_effects.append(effect);    }}FloatRect SVGResourceFilter::filterBBoxForItemBBox(const FloatRect& itemBBox) const{    FloatRect filterBBox = filterRect();    float xOffset = 0.0f;    float yOffset = 0.0f;    if (!effectBoundingBoxMode()) {        xOffset = itemBBox.x();        yOffset = itemBBox.y();    }    if (filterBoundingBoxMode()) {        filterBBox = FloatRect(xOffset + filterBBox.x() * itemBBox.width(),                               yOffset + filterBBox.y() * itemBBox.height(),                               filterBBox.width() * itemBBox.width(),                               filterBBox.height() * itemBBox.height());    } else {        if (xBoundingBoxMode())            filterBBox.setX(xOffset + filterBBox.x());        if (yBoundingBoxMode())            filterBBox.setY(yOffset + filterBBox.y());    }    return filterBBox;}TextStream& SVGResourceFilter::externalRepresentation(TextStream& ts) const{    ts << "[type=FILTER] ";    FloatRect bbox = filterRect();    static FloatRect defaultFilterRect(0, 0, 1, 1);    if (!filterBoundingBoxMode() || bbox != defaultFilterRect) {        ts << " [bounding box=";        if (filterBoundingBoxMode()) {            bbox.scale(100.f);            ts << "at (" << bbox.x() << "%," <<  bbox.y() << "%) size " << bbox.width() << "%x" << bbox.height() << "%";        } else            ts << filterRect();        ts << "]";    }    if (!filterBoundingBoxMode()) // default is true        ts << " [bounding box mode=" << filterBoundingBoxMode() << "]";    if (effectBoundingBoxMode()) // default is false        ts << " [effect bounding box mode=" << effectBoundingBoxMode() << "]";    if (m_effects.size() > 0)        ts << " [effects=" << m_effects << "]";    return ts;}SVGResourceFilter* getFilterById(Document* document, const AtomicString& id){    SVGResource* resource = getResourceById(document, id);    if (resource && resource->isFilter())        return static_cast<SVGResourceFilter*>(resource);    return 0;}} // namespace WebCore#endif // ENABLE(SVG)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -