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