18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1997 Martin Jones (mjones@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1997 Torben Weis (weis@kde.org)
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1998 Waldo Bastian (bastian@kde.org)
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1999 Lars Knoll (knoll@kde.org)
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1999 Antti Koivisto (koivisto@kde.org)
70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderTableCol_h
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderTableCol_h
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "RenderBox.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass RenderTable;
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass RenderTableCol : public RenderBox {
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
37a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    explicit RenderTableCol(Node*);
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    const RenderObjectChildList* children() const { return &m_children; }
408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    RenderObjectChildList* children() { return &m_children; }
418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
42bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void computePreferredLogicalWidths();
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    int span() const { return m_span; }
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setSpan(int span) { m_span = span; }
460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate:
480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual RenderObjectChildList* virtualChildren() { return children(); }
490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual const RenderObjectChildList* virtualChildren() const { return children(); }
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual const char* renderName() const { return "RenderTableCol"; }
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isTableCol() const { return true; }
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void updateFromElement();
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isChildAllowed(RenderObject*, RenderStyle*) const;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool canHaveChildren() const;
57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool requiresLayer() const { return false; }
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer);
60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void imageChanged(WrappedImagePtr, const IntRect* = 0);
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    RenderTable* table() const;
630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
648f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    RenderObjectChildList m_children;
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int m_span;
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline RenderTableCol* toRenderTableCol(RenderObject* object)
690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(!object || object->isTableCol());
710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return static_cast<RenderTableCol*>(object);
720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline const RenderTableCol* toRenderTableCol(const RenderObject* object)
750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(!object || object->isTableCol());
770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return static_cast<const RenderTableCol*>(object);
780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// This will catch anyone doing an unnecessary cast.
810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid toRenderTableCol(const RenderTableCol*);
820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
86