From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- hwpfilter/source/hwpreader.hxx | 164 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 hwpfilter/source/hwpreader.hxx (limited to 'hwpfilter/source/hwpreader.hxx') diff --git a/hwpfilter/source/hwpreader.hxx b/hwpfilter/source/hwpreader.hxx new file mode 100644 index 000000000..0cb9e62c0 --- /dev/null +++ b/hwpfilter/source/hwpreader.hxx @@ -0,0 +1,164 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_HWPFILTER_SOURCE_HWPREADER_HXX +#define INCLUDED_HWPFILTER_SOURCE_HWPREADER_HXX + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +using namespace ::cppu; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::io; +using namespace ::com::sun::star::registry; +using namespace ::com::sun::star::document; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::xml::sax; + +#include + +#include + +#include "hwpfile.h" +#include "hcode.h" +#include "hbox.h" +#include "htags.h" +#include "hstream.hxx" +#include "drawdef.h" +#include "attributes.hxx" + +inline constexpr OUStringLiteral WRITER_IMPORTER_NAME = u"com.sun.star.comp.Writer.XMLImporter"; + +struct HwpReaderPrivate; +/** + * This class implements the external Parser interface + */ +class HwpReader : public WeakImplHelper +{ + +public: + HwpReader(); + virtual ~HwpReader() override; + +public: + /** + * parseStream does Parser-startup initializations + */ + virtual sal_Bool SAL_CALL filter(const Sequence< PropertyValue >& aDescriptor) override; + virtual void SAL_CALL cancel() override {} + void setDocumentHandler(Reference< XDocumentHandler > const & xHandler) + { + m_rxDocumentHandler = xHandler; + } + + bool importHStream(std::unique_ptr stream); +private: + Reference< XDocumentHandler > m_rxDocumentHandler; + rtl::Reference mxList; + HWPFile hwpfile; + std::unique_ptr d; +private: + /* -------- Document Parsing --------- */ + void makeMeta(); + void makeStyles(); + void makeDrawMiscStyle(HWPDrawingObject *); + void makeAutoStyles(); + void makeMasterStyles(); + void makeBody(); + + void makeTextDecls(); + + /* -------- Paragraph Parsing --------- */ + void parsePara(HWPPara *para); + void make_text_p0(HWPPara *para, bool bParaStart); + void make_text_p1(HWPPara *para, bool bParaStart); + void make_text_p3(HWPPara *para, bool bParaStart); + + /* -------- rDocument->characters(x) --------- */ + void makeChars(hchar_string & rStr); + + /* -------- Special Char Parsing --------- */ + void makeFieldCode(hchar_string const & rStr, FieldCode const *hbox); //6 + void makeBookmark(Bookmark const *hbox); //6 + void makeDateFormat(DateCode *hbox); //7 + void makeDateCode(DateCode *hbox); //8 + void makeTab(); //9 + void makeTable(TxtBox *hbox); + void makeTextBox(TxtBox *hbox); + void makeFormula(TxtBox *hbox); + void makeHyperText(TxtBox *hbox); + void makePicture(Picture *hbox); + void makePictureDRAW(HWPDrawingObject *drawobj, const Picture *hbox); + void makeLine(); + void makeHidden(Hidden *hbox); + void makeFootnote(Footnote *hbox); + void makeAutoNum(AutoNum const *hbox); + void makeShowPageNum(); + void makeMailMerge(MailMerge *hbox); + void makeOutline(Outline const *hbox); + + /* --------- Styles Parsing ------------ */ + void makePageStyle(); + void makeColumns(ColumnDef const *); + void makeTStyle(CharShape const *); + void makePStyle(ParaShape const *); + void makeFStyle(FBoxStyle *); + void makeCaptionStyle(FBoxStyle *); + void makeDrawStyle(HWPDrawingObject *,FBoxStyle *); + void makeTableStyle(Table *); + void parseCharShape(CharShape const *); + void parseParaShape(ParaShape const *); + static OUString getTStyleName(int); + static OUString getPStyleName(int); + + void startEl(const OUString& el); + void endEl(const OUString& el); + void chars(const OUString& s); +}; + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3