18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2004, 2005, 2006, 2007, 2009 Apple Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderReplaced_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderReplaced_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderBox.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderReplaced : public RenderBox { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderReplaced(Node*); 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderReplaced(Node*, const IntSize& intrinsicSize); 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~RenderReplaced(); 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 35c9773ed4ca308bb2b8e70f49ba7fbaa35b1f46a2Steve Block virtual void destroy(); 36c9773ed4ca308bb2b8e70f49ba7fbaa35b1f46a2Steve Block 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprotected: 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void layout(); 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual IntSize intrinsicSize() const; 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual int computeReplacedLogicalWidth(bool includeMaxWidth = true) const; 43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual int computeReplacedLogicalHeight() const; 4468513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual int minimumReplacedHeight() const { return 0; } 4568513a70bcd92384395513322f1b801e7bf9c729Steve Block 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void setSelectionState(SelectionState); 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool isSelected() const; 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setIntrinsicSize(const IntSize&); 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void intrinsicSizeChanged(); 5468513a70bcd92384395513322f1b801e7bf9c729Steve Block void setHasIntrinsicSize() { m_hasIntrinsicSize = true; } 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 56d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void paint(PaintInfo&, int tx, int ty); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool shouldPaint(PaintInfo&, int& tx, int& ty); 586b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner IntRect localSelectionRect(bool checkWhetherSelected = true) const; // This is in local coordinates, but it's a physical rect (so the top left corner is physical top left). 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual const char* renderName() const { return "RenderReplaced"; } 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool canHaveChildren() const { return false; } 648f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 65bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void computePreferredLogicalWidths(); 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int calcAspectRatioLogicalWidth() const; 68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch int calcAspectRatioLogicalHeight() const; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void paintReplaced(PaintInfo&, int /*tx*/, int /*ty*/) { } 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer); 73635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual unsigned caretMaxRenderedOffset() const; 758f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual VisiblePosition positionForPoint(const IntPoint&); 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canBeSelectionLeaf() const { return true; } 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual IntRect selectionRectForRepaint(RenderBoxModelObject* repaintContainer, bool clipToVisibleContent = true); 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntSize m_intrinsicSize; 8268513a70bcd92384395513322f1b801e7bf9c729Steve Block bool m_hasIntrinsicSize; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 88