18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2006, 2009 Apple Inc. All rights reserved. 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2007 Rob Buis <buis@kde.org> 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2009 Google, Inc. 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com> 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * This library is free software; you can redistribute it and/or 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modify it under the terms of the GNU Library General Public 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * License as published by the Free Software Foundation; either 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * version 2 of the License, or (at your option) any later version. 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * This library is distributed in the hope that it will be useful, 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Library General Public License for more details. 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * You should have received a copy of the GNU Library General Public License 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Boston, MA 02110-1301, USA. 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderSVGImage_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderSVGImage_h 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 288a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#include "AffineTransform.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FloatRect.h" 305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "RenderSVGModelObject.h" 31d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "SVGPreserveAspectRatio.h" 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "SVGRenderSupport.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass RenderImageResource; 37692e5dbf12901edacf14812a6fae25462920af42Steve Blockclass SVGImageElement; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 395ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass RenderSVGImage : public RenderSVGModelObject { 40692e5dbf12901edacf14812a6fae25462920af42Steve Blockpublic: 41692e5dbf12901edacf14812a6fae25462920af42Steve Block RenderSVGImage(SVGImageElement*); 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual ~RenderSVGImage(); 435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; } 45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void updateFromElement(); 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen RenderImageResource* imageResource() { return m_imageResource.get(); } 485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const RenderImageResource* imageResource() const { return m_imageResource.get(); } 495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 50692e5dbf12901edacf14812a6fae25462920af42Steve Blockprivate: 51692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual const char* renderName() const { return "RenderSVGImage"; } 52692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual bool isSVGImage() const { return true; } 535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 54692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual const AffineTransform& localToParentTransform() const { return m_localTransform; } 555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual FloatRect objectBoundingBox() const { return m_objectBoundingBox; } 57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual FloatRect strokeBoundingBox() const { return m_objectBoundingBox; } 58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual FloatRect repaintRectInLocalCoordinates() const { return m_repaintBoundingBox; } 595f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 60692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual void addFocusRingRects(Vector<IntRect>&, int tx, int ty); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 62692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual void imageChanged(WrappedImagePtr, const IntRect* = 0); 635ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 64692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual void layout(); 65692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual void paint(PaintInfo&, int parentX, int parentY); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 67692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual bool requiresLayer() const { return false; } 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 69692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual bool nodeAtFloatPoint(const HitTestRequest&, HitTestResult&, const FloatPoint& pointInParent, HitTestAction); 705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 71692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual AffineTransform localTransform() const { return m_localTransform; } 72692e5dbf12901edacf14812a6fae25462920af42Steve Block 73a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool m_updateCachedRepaintRect : 1; 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool m_needsTransformUpdate : 1; 75692e5dbf12901edacf14812a6fae25462920af42Steve Block AffineTransform m_localTransform; 76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch FloatRect m_objectBoundingBox; 77a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch FloatRect m_repaintBoundingBox; 785ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen OwnPtr<RenderImageResource> m_imageResource; 79692e5dbf12901edacf14812a6fae25462920af42Steve Block}; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 81f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickinline RenderSVGImage* toRenderSVGImage(RenderObject* object) 82f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 83f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick ASSERT(!object || object->isSVGImage()); 84f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return static_cast<RenderSVGImage*>(object); 85f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 86f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 87f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickinline const RenderSVGImage* toRenderSVGImage(const RenderObject* object) 88f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 89f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick ASSERT(!object || object->isSVGImage()); 90f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return static_cast<const RenderSVGImage*>(object); 91f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 92f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 93f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// This will catch anyone doing an unnecessary cast. 94f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid toRenderSVGImage(const RenderSVGImage*); 95f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG) 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // RenderSVGImage_h 100