瀏覽代碼

LibHTML: Add is<T> helpers for the table-related LayoutNode subclasses

Andreas Kling 5 年之前
父節點
當前提交
b4c2621ed7

+ 3 - 0
Libraries/LibHTML/Layout/LayoutNode.h

@@ -50,6 +50,9 @@ public:
     virtual bool is_block() const { return false; }
     virtual bool is_replaced() const { return false; }
     virtual bool is_box() const { return false; }
+    virtual bool is_table() const { return false; }
+    virtual bool is_table_row() const { return false; }
+    virtual bool is_table_cell() const { return false; }
     bool has_style() const { return m_has_style; }
 
     bool is_inline() const { return m_inline; }

+ 7 - 0
Libraries/LibHTML/Layout/LayoutTable.h

@@ -10,5 +10,12 @@ public:
     virtual void layout() override;
 
 private:
+    virtual bool is_table() const override { return true; }
     virtual const char* class_name() const override { return "LayoutTable"; }
 };
+
+template<>
+inline bool is<LayoutTable>(const LayoutNode& node)
+{
+    return node.is_table();
+}

+ 7 - 0
Libraries/LibHTML/Layout/LayoutTableCell.h

@@ -8,5 +8,12 @@ public:
     virtual ~LayoutTableCell() override;
 
 private:
+    virtual bool is_table_cell() const override { return true; }
     virtual const char* class_name() const override { return "LayoutTableCell"; }
 };
+
+template<>
+inline bool is<LayoutTableCell>(const LayoutNode& node)
+{
+    return node.is_table_cell();
+}

+ 7 - 0
Libraries/LibHTML/Layout/LayoutTableRow.h

@@ -10,5 +10,12 @@ public:
     virtual void layout() override;
 
 private:
+    virtual bool is_table_row() const override { return true; }
     virtual const char* class_name() const override { return "LayoutTableRow"; }
 };
+
+template<>
+inline bool is<LayoutTableRow>(const LayoutNode& node)
+{
+    return node.is_table_row();
+}