summaryrefslogtreecommitdiffstats
path: root/tdehtml/xml/dom2_rangeimpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdehtml/xml/dom2_rangeimpl.h')
-rw-r--r--tdehtml/xml/dom2_rangeimpl.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/tdehtml/xml/dom2_rangeimpl.h b/tdehtml/xml/dom2_rangeimpl.h
new file mode 100644
index 000000000..9cf7a3b23
--- /dev/null
+++ b/tdehtml/xml/dom2_rangeimpl.h
@@ -0,0 +1,127 @@
+/*
+ * This file is part of the DOM implementation for KDE.
+ *
+ * (C) 1999 Lars Knoll (knoll@kde.org)
+ * (C) 2000 Gunnstein Lye (gunnstein@netcom.no)
+ * (C) 2000 Frederik Holljen (frederik.holljen@hig.no)
+ * (C) 2001 Peter Kelly (pmk@post.com)
+ *
+ * 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.
+ *
+ */
+
+#ifndef _DOM2_RangeImpl_h_
+#define _DOM2_RangeImpl_h_
+
+#include "dom/dom2_range.h"
+#include "misc/shared.h"
+
+namespace DOM {
+
+class RangeImpl : public tdehtml::Shared<RangeImpl>
+{
+ friend class DocumentImpl;
+public:
+ RangeImpl(DocumentImpl *_ownerDocument);
+ RangeImpl(DocumentImpl *_ownerDocument,
+ NodeImpl *_startContainer, long _startOffset,
+ NodeImpl *_endContainer, long _endOffset);
+
+ ~RangeImpl();
+
+ NodeImpl *startContainer(int &exceptioncode) const;
+ long startOffset(int &exceptioncode) const;
+ NodeImpl *endContainer(int &exceptioncode) const;
+ long endOffset(int &exceptioncode) const;
+ bool collapsed(int &exceptioncode) const;
+
+ NodeImpl *commonAncestorContainer(int &exceptioncode);
+ static NodeImpl *commonAncestorContainer(NodeImpl *containerA, NodeImpl *containerB);
+ void setStart ( NodeImpl *refNode, long offset, int &exceptioncode );
+ void setEnd ( NodeImpl *refNode, long offset, int &exceptioncode );
+ void collapse ( bool toStart, int &exceptioncode );
+ short compareBoundaryPoints ( Range::CompareHow how, RangeImpl *sourceRange, int &exceptioncode );
+ static short compareBoundaryPoints ( NodeImpl *containerA, long offsetA, NodeImpl *containerB, long offsetB );
+ bool boundaryPointsValid ( );
+ void deleteContents ( int &exceptioncode );
+ DocumentFragmentImpl *extractContents ( int &exceptioncode );
+ DocumentFragmentImpl *cloneContents ( int &exceptioncode );
+ void insertNode( NodeImpl *newNode, int &exceptioncode );
+ DOMString toString ( int &exceptioncode );
+ /** Converts the selection to HTML. The returned string will have matching
+ * tags, and all td, tr, etc tags will be inside a table tag. CSS is not
+ * used at this stage - This needs to be fixed.
+ *
+ * This is guaranteed to produce an xml valid snippet, no matter how crappy the input
+ * html page is. It will have html and body tags.
+ *
+ * Any urls in images or links will be expanded to full urls <em>with passwords stripped</em>
+ * for security reasons.
+ *
+ * Note: Originally this function didn't have the exceptioncode argument. I added it
+ * since all the other functions do. If this is correct, please remove this comment.
+ *
+ * @param exceptioncode This will be set if m_detached is true.
+ * @return A string with html tags for this range.
+ *
+ * @since 3.4
+ */
+ DOMString toHTML ( int &exceptioncode );
+
+ DocumentFragment createContextualFragment ( const DOMString &html, int &exceptioncode );
+
+ void detach ( int &exceptioncode );
+ bool isDetached() const;
+ RangeImpl *cloneRange(int &exceptioncode);
+
+ void setStartAfter( NodeImpl *refNode, int &exceptioncode );
+ void setEndBefore( NodeImpl *refNode, int &exceptioncode );
+ void setEndAfter( NodeImpl *refNode, int &exceptioncode );
+ void selectNode( NodeImpl *refNode, int &exceptioncode );
+ void selectNodeContents( NodeImpl *refNode, int &exceptioncode );
+ void surroundContents( NodeImpl *newParent, int &exceptioncode );
+ void setStartBefore( NodeImpl *refNode, int &exceptioncode );
+
+ enum ActionType {
+ DELETE_CONTENTS,
+ EXTRACT_CONTENTS,
+ CLONE_CONTENTS
+ };
+ DocumentFragmentImpl *processContents ( ActionType action, int &exceptioncode );
+
+ bool readOnly() { return false; }
+
+protected:
+ DocumentImpl *m_ownerDocument;
+ NodeImpl *m_startContainer;
+ unsigned long m_startOffset;
+ NodeImpl *m_endContainer;
+ unsigned long m_endOffset;
+ bool m_detached;
+
+private:
+ void checkNodeWOffset( NodeImpl *n, int offset, int &exceptioncode) const;
+ void checkNodeBA( NodeImpl *n, int &exceptioncode ) const;
+ void setStartContainer(NodeImpl *_startContainer);
+ void setEndContainer(NodeImpl *_endContainer);
+ void checkDeleteExtract(int &exceptioncode);
+ bool containedByReadOnly();
+};
+
+} // namespace
+
+#endif
+