diff options
-rw-r--r-- | writerfilter/Library_rtftok.mk | 1 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfskipdestination.cxx | 66 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfskipdestination.hxx | 56 |
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: */ |