121939df44de1705786c545cd1bf519d47250322dBen Murdoch/* 221939df44de1705786c545cd1bf519d47250322dBen Murdoch * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 321939df44de1705786c545cd1bf519d47250322dBen Murdoch * Copyright (C) Research In Motion Limited 2010. All rights reserved. 421939df44de1705786c545cd1bf519d47250322dBen Murdoch * 521939df44de1705786c545cd1bf519d47250322dBen Murdoch * This library is free software; you can redistribute it and/or 621939df44de1705786c545cd1bf519d47250322dBen Murdoch * modify it under the terms of the GNU Library General Public 721939df44de1705786c545cd1bf519d47250322dBen Murdoch * License as published by the Free Software Foundation; either 821939df44de1705786c545cd1bf519d47250322dBen Murdoch * version 2 of the License, or (at your option) any later version. 921939df44de1705786c545cd1bf519d47250322dBen Murdoch * 1021939df44de1705786c545cd1bf519d47250322dBen Murdoch * This library is distributed in the hope that it will be useful, 1121939df44de1705786c545cd1bf519d47250322dBen Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 1221939df44de1705786c545cd1bf519d47250322dBen Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1321939df44de1705786c545cd1bf519d47250322dBen Murdoch * Library General Public License for more details. 1421939df44de1705786c545cd1bf519d47250322dBen Murdoch * 1521939df44de1705786c545cd1bf519d47250322dBen Murdoch * You should have received a copy of the GNU Library General Public License 1621939df44de1705786c545cd1bf519d47250322dBen Murdoch * along with this library; see the file COPYING.LIB. If not, write to 1721939df44de1705786c545cd1bf519d47250322dBen Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 1821939df44de1705786c545cd1bf519d47250322dBen Murdoch * Boston, MA 02110-1301, USA. 1921939df44de1705786c545cd1bf519d47250322dBen Murdoch */ 2021939df44de1705786c545cd1bf519d47250322dBen Murdoch 2121939df44de1705786c545cd1bf519d47250322dBen Murdoch#ifndef RenderSVGResourcePattern_h 2221939df44de1705786c545cd1bf519d47250322dBen Murdoch#define RenderSVGResourcePattern_h 2321939df44de1705786c545cd1bf519d47250322dBen Murdoch 2421939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(SVG) 2521939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "AffineTransform.h" 2621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "FloatRect.h" 2721939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "ImageBuffer.h" 2821939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "Pattern.h" 29a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "PatternAttributes.h" 3021939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "RenderSVGResourceContainer.h" 3121939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SVGPatternElement.h" 3221939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SVGUnitTypes.h" 3321939df44de1705786c545cd1bf519d47250322dBen Murdoch 3421939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <wtf/HashMap.h> 3521939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <wtf/OwnPtr.h> 3621939df44de1705786c545cd1bf519d47250322dBen Murdoch 3721939df44de1705786c545cd1bf519d47250322dBen Murdochnamespace WebCore { 3821939df44de1705786c545cd1bf519d47250322dBen Murdoch 3921939df44de1705786c545cd1bf519d47250322dBen Murdochstruct PatternData { 4021939df44de1705786c545cd1bf519d47250322dBen Murdoch RefPtr<Pattern> pattern; 41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch AffineTransform transform; 4221939df44de1705786c545cd1bf519d47250322dBen Murdoch}; 4321939df44de1705786c545cd1bf519d47250322dBen Murdoch 4421939df44de1705786c545cd1bf519d47250322dBen Murdochclass RenderSVGResourcePattern : public RenderSVGResourceContainer { 4521939df44de1705786c545cd1bf519d47250322dBen Murdochpublic: 4621939df44de1705786c545cd1bf519d47250322dBen Murdoch RenderSVGResourcePattern(SVGPatternElement*); 4721939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual ~RenderSVGResourcePattern(); 4821939df44de1705786c545cd1bf519d47250322dBen Murdoch 4921939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual const char* renderName() const { return "RenderSVGResourcePattern"; } 5021939df44de1705786c545cd1bf519d47250322dBen Murdoch 51f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void removeAllClientsFromCache(bool markForInvalidation = true); 52f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true); 5321939df44de1705786c545cd1bf519d47250322dBen Murdoch 5421939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode); 55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*); 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual FloatRect resourceBoundingBox(RenderObject*) { return FloatRect(); } 5721939df44de1705786c545cd1bf519d47250322dBen Murdoch 5821939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual RenderSVGResourceType resourceType() const { return s_resourceType; } 5921939df44de1705786c545cd1bf519d47250322dBen Murdoch static RenderSVGResourceType s_resourceType; 6021939df44de1705786c545cd1bf519d47250322dBen Murdoch 6121939df44de1705786c545cd1bf519d47250322dBen Murdochprivate: 62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool buildTileImageTransform(RenderObject*, const PatternAttributes&, const SVGPatternElement*, FloatRect& patternBoundaries, AffineTransform& tileImageTransform) const; 63e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 64e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block PassOwnPtr<ImageBuffer> createTileImage(RenderObject*, const PatternAttributes&, const FloatRect& tileBoundaries, 65e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block const FloatRect& absoluteTileBoundaries, const AffineTransform& tileImageTransform) const; 6621939df44de1705786c545cd1bf519d47250322dBen Murdoch 67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool m_shouldCollectPatternAttributes : 1; 68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch PatternAttributes m_attributes; 6921939df44de1705786c545cd1bf519d47250322dBen Murdoch HashMap<RenderObject*, PatternData*> m_pattern; 7021939df44de1705786c545cd1bf519d47250322dBen Murdoch}; 7121939df44de1705786c545cd1bf519d47250322dBen Murdoch 7221939df44de1705786c545cd1bf519d47250322dBen Murdoch} 7321939df44de1705786c545cd1bf519d47250322dBen Murdoch 7421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 7521939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 76