15ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen/* 25ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 1999 Lars Knoll <knoll@kde.org> 35ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 1999 Antti Koivisto <koivisto@kde.org> 45ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2006 Allan Sandfeld Jensen <kde@carewolf.com> 55ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 65ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010 Apple Inc. All rights reserved. 75ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com> 85ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 95ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * This library is free software; you can redistribute it and/or 105ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * modify it under the terms of the GNU Library General Public 115ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * License as published by the Free Software Foundation; either 125ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * version 2 of the License, or (at your option) any later version. 135ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 145ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * This library is distributed in the hope that it will be useful, 155ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * but WITHOUT ANY WARRANTY; without even the implied warranty of 165ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 175ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Library General Public License for more details. 185ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 195ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * You should have received a copy of the GNU Library General Public License 205ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * along with this library; see the file COPYING.LIB. If not, write to 215ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 225ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Boston, MA 02110-1301, USA. 235ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen */ 255ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 265ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#ifndef RenderImageResource_h 275ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#define RenderImageResource_h 285ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 295ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "CachedImage.h" 305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "CachedResourceHandle.h" 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "Image.h" 325ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "StyleImage.h" 335ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsennamespace WebCore { 355ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass RenderObject; 375ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 38ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass RenderImageResource { 39ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(RenderImageResource); WTF_MAKE_FAST_ALLOCATED; 405ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenpublic: 415ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual ~RenderImageResource(); 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen static PassOwnPtr<RenderImageResource> create() 445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen { 455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return adoptPtr(new RenderImageResource); 465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen } 475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual void initialize(RenderObject*); 495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual void shutdown(); 505ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 515ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen void setCachedImage(CachedImage*); 525ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen CachedImage* cachedImage() const { return m_cachedImage.get(); } 535ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool hasImage() const { return m_cachedImage; } 545ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 555ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen void resetAnimation(); 565ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual PassRefPtr<Image> image(int /* width */ = 0, int /* height */ = 0) const { return m_cachedImage ? m_cachedImage->image() : nullImage(); } 585ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool errorOccurred() const { return m_cachedImage && m_cachedImage->errorOccurred(); } 595ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 605ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual void setImageContainerSize(const IntSize& size) const; 615ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool usesImageContainerSize() const { return m_cachedImage ? m_cachedImage->usesImageContainerSize() : false; } 625ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool imageHasRelativeWidth() const { return m_cachedImage ? m_cachedImage->imageHasRelativeWidth() : false; } 635ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool imageHasRelativeHeight() const { return m_cachedImage ? m_cachedImage->imageHasRelativeHeight() : false; } 645ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 655ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual IntSize imageSize(float multiplier) const { return m_cachedImage ? m_cachedImage->imageSize(multiplier) : IntSize(); } 665ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 675ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual WrappedImagePtr imagePtr() const { return m_cachedImage.get(); } 685ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 695ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenprotected: 705ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen RenderImageResource(); 715ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen RenderObject* m_renderer; 725ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen CachedResourceHandle<CachedImage> m_cachedImage; 735ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 745ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenprivate: 755ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen static Image* nullImage(); 765ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen}; 775ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 785ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} // namespace WebCore 795ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 805ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#endif // RenderImage_h 81