summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--writerfilter/Library_rtftok.mk1
-rw-r--r--writerfilter/source/rtftok/rtfskipdestination.cxx66
-rw-r--r--writerfilter/source/rtftok/rtfskipdestination.hxx56
3 files changed, 123 insertions, 0 deletions
diff --git a/writerfilter/Library_rtftok.mk b/writerfilter/Library_rtftok.mk
index d5d536da08c2..e53f7a8e826f 100644
--- a/writerfilter/Library_rtftok.mk
+++ b/writerfilter/Library_rtftok.mk
@@ -65,6 +65,7 @@ $(eval $(call gb_Library_add_exception_objects,rtftok,\
writerfilter/source/rtftok/rtfdocumentimpl \
writerfilter/source/rtftok/rtfsdrimport \
writerfilter/source/rtftok/rtftokenizer \
+ writerfilter/source/rtftok/rtfskipdestination \
writerfilter/source/rtftok/rtfcontrolwords \
writerfilter/source/rtftok/rtfcharsets \
writerfilter/source/rtftok/rtfreferenceproperties \
diff --git a/writerfilter/source/rtftok/rtfskipdestination.cxx b/writerfilter/source/rtftok/rtfskipdestination.cxx
new file mode 100644
index 000000000000..9ad1d1d5e14f
--- /dev/null
+++ b/writerfilter/source/rtftok/rtfskipdestination.cxx
@@ -0,0 +1,66 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Miklos Vajna <vmiklos@frugalware.org>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include <rtfskipdestination.hxx>
+
+namespace writerfilter {
+namespace rtftok {
+
+RTFSkipDestination::RTFSkipDestination(RTFDocumentImpl& rImport)
+ : m_rImport(rImport),
+ m_bParsed(true),
+ m_bReset(true)
+{
+}
+
+RTFSkipDestination::~RTFSkipDestination()
+{
+ if (m_rImport.getSkipUnknown() && m_bReset)
+ {
+ if (!m_bParsed)
+ {
+ OSL_TRACE("%s: skipping destination", OSL_THIS_FUNC);
+ m_rImport.getState().nDestinationState = DESTINATION_SKIP;
+ }
+ m_rImport.setSkipUnknown(false);
+ }
+}
+
+void RTFSkipDestination::setParsed(bool bParsed)
+{
+ m_bParsed = bParsed;
+}
+
+void RTFSkipDestination::setReset(bool bReset)
+{
+ m_bReset = bReset;
+}
+
+} // namespace rtftok
+} // namespace writerfilter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/rtftok/rtfskipdestination.hxx b/writerfilter/source/rtftok/rtfskipdestination.hxx
new file mode 100644
index 000000000000..31f016478032
--- /dev/null
+++ b/writerfilter/source/rtftok/rtfskipdestination.hxx
@@ -0,0 +1,56 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Miklos Vajna <vmiklos@frugalware.org>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef _RTFSKIPDESTINATION_HXX_
+#define _RTFSKIPDESTINATION_HXX_
+
+#include <rtfdocumentimpl.hxx>
+
+class SvStream;
+
+namespace writerfilter {
+ namespace rtftok {
+ /// Skips a destination after a not parsed control word if it was prefixed with \*
+ class RTFSkipDestination
+ {
+ public:
+ RTFSkipDestination(RTFDocumentImpl& rImport);
+ virtual ~RTFSkipDestination();
+ void setParsed(bool bParsed);
+ void setReset(bool bReset);
+ private:
+ RTFDocumentImpl& m_rImport;
+ bool m_bParsed;
+ /// If false, the destructor is a noop, required by the \* symbol itself.
+ bool m_bReset;
+ };
+ } // namespace rtftok
+} // namespace writerfilter
+
+#endif // _RTFSKIPDESTINATION_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */