| /* |
| * Copyright (C) 1997 Martin Jones (mjones@kde.org) |
| * (C) 1997 Torben Weis (weis@kde.org) |
| * (C) 1998 Waldo Bastian (bastian@kde.org) |
| * (C) 1999 Lars Knoll (knoll@kde.org) |
| * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| * Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public License |
| * along with this library; see the file COPYING.LIB. If not, write to |
| * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| * |
| */ |
| |
| #pragma once |
| |
| #include "HTMLElement.h" |
| |
| namespace WebCore { |
| |
| class HTMLCollection; |
| class HTMLTableCaptionElement; |
| class HTMLTableRowsCollection; |
| class HTMLTableSectionElement; |
| |
| class HTMLTableElement final : public HTMLElement { |
| WTF_MAKE_ISO_ALLOCATED(HTMLTableElement); |
| public: |
| static Ref<HTMLTableElement> create(Document&); |
| static Ref<HTMLTableElement> create(const QualifiedName&, Document&); |
| |
| WEBCORE_EXPORT RefPtr<HTMLTableCaptionElement> caption() const; |
| WEBCORE_EXPORT ExceptionOr<void> setCaption(RefPtr<HTMLTableCaptionElement>&&); |
| |
| WEBCORE_EXPORT RefPtr<HTMLTableSectionElement> tHead() const; |
| WEBCORE_EXPORT ExceptionOr<void> setTHead(RefPtr<HTMLTableSectionElement>&&); |
| |
| WEBCORE_EXPORT RefPtr<HTMLTableSectionElement> tFoot() const; |
| WEBCORE_EXPORT ExceptionOr<void> setTFoot(RefPtr<HTMLTableSectionElement>&&); |
| |
| WEBCORE_EXPORT Ref<HTMLTableSectionElement> createTHead(); |
| WEBCORE_EXPORT void deleteTHead(); |
| WEBCORE_EXPORT Ref<HTMLTableSectionElement> createTFoot(); |
| WEBCORE_EXPORT void deleteTFoot(); |
| WEBCORE_EXPORT Ref<HTMLTableSectionElement> createTBody(); |
| WEBCORE_EXPORT Ref<HTMLTableCaptionElement> createCaption(); |
| WEBCORE_EXPORT void deleteCaption(); |
| WEBCORE_EXPORT ExceptionOr<Ref<HTMLElement>> insertRow(int index = -1); |
| WEBCORE_EXPORT ExceptionOr<void> deleteRow(int index); |
| |
| WEBCORE_EXPORT Ref<HTMLCollection> rows(); |
| WEBCORE_EXPORT Ref<HTMLCollection> tBodies(); |
| |
| const AtomString& rules() const; |
| const AtomString& summary() const; |
| |
| const StyleProperties* additionalCellStyle() const; |
| const StyleProperties* additionalGroupStyle(bool rows) const; |
| |
| private: |
| HTMLTableElement(const QualifiedName&, Document&); |
| |
| void parseAttribute(const QualifiedName&, const AtomString&) final; |
| bool hasPresentationalHintsForAttribute(const QualifiedName&) const final; |
| void collectPresentationalHintsForAttribute(const QualifiedName&, const AtomString&, MutableStyleProperties&) final; |
| bool isURLAttribute(const Attribute&) const final; |
| |
| // Used to obtain either a solid or outset border decl and to deal with the frame and rules attributes. |
| const StyleProperties* additionalPresentationalHintStyle() const final; |
| |
| void addSubresourceAttributeURLs(ListHashSet<URL>&) const final; |
| |
| enum TableRules { UnsetRules, NoneRules, GroupsRules, RowsRules, ColsRules, AllRules }; |
| enum CellBorders { NoBorders, SolidBorders, InsetBorders, SolidBordersColsOnly, SolidBordersRowsOnly }; |
| |
| CellBorders cellBorders() const; |
| |
| Ref<StyleProperties> createSharedCellStyle() const; |
| |
| HTMLTableSectionElement* lastBody() const; |
| |
| bool m_borderAttr { false }; // Sets a precise border width and creates an outset border for the table and for its cells. |
| bool m_borderColorAttr { false }; // Overrides the outset border and makes it solid for the table and cells instead. |
| bool m_frameAttr { false }; // Implies a thin border width if no border is set and then a certain set of solid/hidden borders based off the value. |
| TableRules m_rulesAttr { UnsetRules }; // Implies a thin border width, a collapsing border model, and all borders on the table becoming set to hidden (if frame/border are present, to none otherwise). |
| unsigned short m_padding { 1 }; |
| mutable RefPtr<const StyleProperties> m_sharedCellStyle; |
| }; |
| |
| } //namespace |