KHTML
SVGPaintServerPattern.cpp
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 00003 * 00004 * Redistribution and use in source and binary forms, with or without 00005 * modification, are permitted provided that the following conditions 00006 * are met: 00007 * 1. Redistributions of source code must retain the above copyright 00008 * notice, this list of conditions and the following disclaimer. 00009 * 2. Redistributions in binary form must reproduce the above copyright 00010 * notice, this list of conditions and the following disclaimer in the 00011 * documentation and/or other materials provided with the distribution. 00012 * 00013 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 00014 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00015 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00016 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 00017 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00018 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00019 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00020 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 00021 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00022 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00023 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00024 */ 00025 00026 #include "config.h" 00027 00028 #if ENABLE(SVG) 00029 #include "SVGPaintServerPattern.h" 00030 00031 #include "ImageBuffer.h" 00032 #include "SVGPatternElement.h" 00033 #include "SVGRenderTreeAsText.h" 00034 00035 using namespace std; 00036 00037 namespace WebCore { 00038 00039 SVGPaintServerPattern::SVGPaintServerPattern(const SVGPatternElement* owner) 00040 : m_ownerElement(owner) 00041 #if PLATFORM(CG) 00042 , m_patternSpace(0) 00043 , m_pattern(0) 00044 #endif 00045 { 00046 ASSERT(owner); 00047 } 00048 00049 SVGPaintServerPattern::~SVGPaintServerPattern() 00050 { 00051 #if PLATFORM(CG) 00052 CGPatternRelease(m_pattern); 00053 CGColorSpaceRelease(m_patternSpace); 00054 #endif 00055 } 00056 00057 FloatRect SVGPaintServerPattern::patternBoundaries() const 00058 { 00059 return m_patternBoundaries; 00060 } 00061 00062 void SVGPaintServerPattern::setPatternBoundaries(const FloatRect& rect) 00063 { 00064 m_patternBoundaries = rect; 00065 } 00066 00067 ImageBuffer* SVGPaintServerPattern::tile() const 00068 { 00069 return m_tile.get(); 00070 } 00071 00072 void SVGPaintServerPattern::setTile(auto_ptr<ImageBuffer> tile) 00073 { 00074 m_tile.set(tile.release()); 00075 } 00076 00077 AffineTransform SVGPaintServerPattern::patternTransform() const 00078 { 00079 return m_patternTransform; 00080 } 00081 00082 void SVGPaintServerPattern::setPatternTransform(const AffineTransform& transform) 00083 { 00084 m_patternTransform = transform; 00085 } 00086 00087 TextStream& SVGPaintServerPattern::externalRepresentation(TextStream& ts) const 00088 { 00089 // Gradients/patterns aren't setup, until they are used for painting. Work around that fact. 00090 m_ownerElement->buildPattern(FloatRect(0.0f, 0.0f, 1.0f, 1.0f)); 00091 00092 ts << "[type=PATTERN]" 00093 << " [bbox=" << patternBoundaries() << "]"; 00094 if (!patternTransform().isIdentity()) 00095 ts << " [pattern transform=" << patternTransform() << "]"; 00096 return ts; 00097 } 00098 00099 } // namespace WebCore 00100 00101 #endif
KDE 4.6 API Reference