1 /* 2 * Copyright (C) 2000 Lars Knoll (knoll (at) kde.org) 3 * (C) 2000 Antti Koivisto (koivisto (at) kde.org) 4 * (C) 2000 Dirk Mueller (mueller (at) kde.org) 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Library General Public 9 * License as published by the Free Software Foundation; either 10 * version 2 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Library General Public License for more details. 16 * 17 * You should have received a copy of the GNU Library General Public License 18 * along with this library; see the file COPYING.LIB. If not, write to 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20 * Boston, MA 02110-1301, USA. 21 * 22 */ 23 24 #ifndef StyleGeneratedImage_h 25 #define StyleGeneratedImage_h 26 27 #include "StyleImage.h" 28 29 namespace WebCore { 30 31 class CSSValue; 32 class CSSImageGeneratorValue; 33 34 class StyleGeneratedImage : public StyleImage { 35 public: 36 static PassRefPtr<StyleGeneratedImage> create(CSSImageGeneratorValue* val, bool fixedSize) 37 { 38 return adoptRef(new StyleGeneratedImage(val, fixedSize)); 39 } 40 41 virtual WrappedImagePtr data() const { return m_generator; } 42 43 virtual bool isGeneratedImage() const { return true; } 44 45 virtual PassRefPtr<CSSValue> cssValue() const; 46 47 virtual IntSize imageSize(const RenderObject*, float multiplier) const; 48 virtual bool imageHasRelativeWidth() const { return !m_fixedSize; } 49 virtual bool imageHasRelativeHeight() const { return !m_fixedSize; } 50 virtual bool usesImageContainerSize() const { return !m_fixedSize; } 51 virtual void setImageContainerSize(const IntSize&); 52 virtual void addClient(RenderObject*); 53 virtual void removeClient(RenderObject*); 54 virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) const; 55 56 private: 57 StyleGeneratedImage(CSSImageGeneratorValue* val, bool fixedSize) 58 : m_generator(val) 59 , m_fixedSize(fixedSize) 60 { 61 } 62 63 CSSImageGeneratorValue* m_generator; // The generator holds a reference to us. 64 IntSize m_containerSize; 65 bool m_fixedSize; 66 }; 67 68 } 69 #endif 70