diff options
44 files changed, 1773 insertions, 1701 deletions
diff --git a/dbaccess/source/ui/inc/DExport.hxx b/dbaccess/source/ui/inc/DExport.hxx index 20c4a696be5f..7fc704a83bc2 100644 --- a/dbaccess/source/ui/inc/DExport.hxx +++ b/dbaccess/source/ui/inc/DExport.hxx @@ -107,9 +107,8 @@ namespace dbaui bool m_bAppendFirstLine; - virtual bool CreateTable(int nToken) = 0; virtual TypeSelectionPageFactory - getTypeSelectionPageFactory() = 0; + getTypeSelectionPageFactory() = 0; void CreateDefaultColumn(const OUString& _rColumnName); sal_Int16 CheckString(const OUString& aToken, sal_Int16 _nOldNumberFormat); diff --git a/dbaccess/source/ui/inc/HtmlReader.hxx b/dbaccess/source/ui/inc/HtmlReader.hxx index 2ba3f9e9911a..c7bd1d53badf 100644 --- a/dbaccess/source/ui/inc/HtmlReader.hxx +++ b/dbaccess/source/ui/inc/HtmlReader.hxx @@ -39,8 +39,8 @@ namespace dbaui bool m_bSDNum; protected: - virtual void NextToken( int nToken ) override; // base class - virtual bool CreateTable(int nToken) override; + virtual void NextToken( HtmlTokenId nToken ) override; // base class + bool CreateTable( HtmlTokenId nToken ); virtual TypeSelectionPageFactory getTypeSelectionPageFactory() override; diff --git a/dbaccess/source/ui/inc/RtfReader.hxx b/dbaccess/source/ui/inc/RtfReader.hxx index 50f9f3387a49..9b61853e9fa6 100644 --- a/dbaccess/source/ui/inc/RtfReader.hxx +++ b/dbaccess/source/ui/inc/RtfReader.hxx @@ -32,7 +32,7 @@ namespace dbaui std::vector<sal_Int32> m_vecColor; protected: - virtual bool CreateTable(int nToken) override; + bool CreateTable(int nToken); virtual void NextToken( int nToken ) override; // base class virtual TypeSelectionPageFactory getTypeSelectionPageFactory() override; diff --git a/dbaccess/source/ui/inc/WExtendPages.hxx b/dbaccess/source/ui/inc/WExtendPages.hxx index b1a4a9782b43..3efb77d9ddf5 100644 --- a/dbaccess/source/ui/inc/WExtendPages.hxx +++ b/dbaccess/source/ui/inc/WExtendPages.hxx @@ -28,7 +28,7 @@ namespace dbaui class OWizHTMLExtend : public OWizTypeSelect { protected: - virtual SvParser* createReader(sal_Int32 _nRows) override; + virtual void createReaderAndCallParser(sal_Int32 _nRows) override; public: OWizHTMLExtend(vcl::Window* pParent, SvStream& _rStream) : OWizTypeSelect( pParent, &_rStream ) @@ -41,7 +41,7 @@ namespace dbaui class OWizRTFExtend : public OWizTypeSelect { protected: - virtual SvParser* createReader(sal_Int32 _nRows) override; + virtual void createReaderAndCallParser(sal_Int32 _nRows) override; public: OWizRTFExtend(vcl::Window* pParent,SvStream& _rStream) : OWizTypeSelect( pParent, &_rStream ) @@ -55,7 +55,7 @@ namespace dbaui class OWizNormalExtend : public OWizTypeSelect { protected: - virtual SvParser* createReader(sal_Int32 _nRows) override; + virtual void createReaderAndCallParser(sal_Int32 _nRows) override; public: OWizNormalExtend(vcl::Window* pParent); }; diff --git a/dbaccess/source/ui/inc/WTypeSelect.hxx b/dbaccess/source/ui/inc/WTypeSelect.hxx index f9f9c6183ea7..24b9b72bccbd 100644 --- a/dbaccess/source/ui/inc/WTypeSelect.hxx +++ b/dbaccess/source/ui/inc/WTypeSelect.hxx @@ -29,7 +29,7 @@ #include <vcl/lstbox.hxx> class SvStream; -class SvParser; + namespace dbaui { class OTableDesignHelpBar; @@ -109,7 +109,7 @@ namespace dbaui bool m_bAutoIncrementEnabled; bool m_bDuplicateName; - virtual SvParser* createReader(sal_Int32 _nRows) = 0; + virtual void createReaderAndCallParser(sal_Int32 _nRows) = 0; void EnableAuto(bool bEnable); public: diff --git a/dbaccess/source/ui/misc/HtmlReader.cxx b/dbaccess/source/ui/misc/HtmlReader.cxx index 43c96c8aba4e..2cbf3202735e 100644 --- a/dbaccess/source/ui/misc/HtmlReader.cxx +++ b/dbaccess/source/ui/misc/HtmlReader.cxx @@ -117,18 +117,18 @@ SvParserState OHTMLReader::CallParser() return m_bFoundTable ? eParseState : SvParserState::Error; } -void OHTMLReader::NextToken( int nToken ) +void OHTMLReader::NextToken( HtmlTokenId nToken ) { if(m_bError || !m_nRows) // if there is an error or no more rows to check, return immediately return; - if ( nToken == HTML_META ) + if ( nToken == HtmlTokenId::META ) setTextEncoding(); if(m_xConnection.is()) // names, which CTOR was called and hence, if a table should be created { switch(nToken) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: ++m_nTableCount; { // can also be TD or TH, if there was no TABLE before const HTMLOptions& rHtmlOptions = GetOptions(); @@ -141,8 +141,8 @@ void OHTMLReader::NextToken( int nToken ) } } SAL_FALLTHROUGH; - case HTML_THEAD_ON: - case HTML_TBODY_ON: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TBODY_ON: { sal_uInt64 const nTell = rInput.Tell(); // perhaps alters position of the stream if ( !m_xTable.is() ) @@ -153,13 +153,13 @@ void OHTMLReader::NextToken( int nToken ) } } break; - case HTML_TABLE_OFF: + case HtmlTokenId::TABLE_OFF: if(!--m_nTableCount) { m_xTable = nullptr; } break; - case HTML_TABLEROW_ON: + case HtmlTokenId::TABLEROW_ON: if ( m_pUpdateHelper.get() ) { try @@ -175,21 +175,21 @@ void OHTMLReader::NextToken( int nToken ) else m_bError = true; break; - case HTML_TEXTTOKEN: - case HTML_SINGLECHAR: + case HtmlTokenId::TEXTTOKEN: + case HtmlTokenId::SINGLECHAR: if ( m_bInTbl ) //&& !m_bSDNum ) // important, as otherwise we also get the names of the fonts m_sTextToken += aToken; break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: m_sCurrent += m_sTextToken; break; - case HTML_PARABREAK_ON: + case HtmlTokenId::PARABREAK_ON: m_sTextToken.clear(); break; - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEDATA_ON: fetchOptions(); break; - case HTML_TABLEDATA_OFF: + case HtmlTokenId::TABLEDATA_OFF: { if ( !m_sCurrent.isEmpty() ) m_sTextToken = m_sCurrent; @@ -208,7 +208,7 @@ void OHTMLReader::NextToken( int nToken ) m_bSDNum = m_bInTbl = false; } break; - case HTML_TABLEROW_OFF: + case HtmlTokenId::TABLEROW_OFF: if ( !m_pUpdateHelper.get() ) { m_bError = true; @@ -228,39 +228,40 @@ void OHTMLReader::NextToken( int nToken ) } m_nColumnPos = 0; break; + default: break; } } else // branch only valid for type checking { switch(nToken) { - case HTML_THEAD_ON: - case HTML_TBODY_ON: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TBODY_ON: // The head of the column is not included if(m_bHead) { do {} - while(GetNextToken() != HTML_TABLEROW_OFF); + while(GetNextToken() != HtmlTokenId::TABLEROW_OFF); m_bHead = false; } break; - case HTML_TABLEDATA_ON: - case HTML_TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: fetchOptions(); break; - case HTML_TEXTTOKEN: - case HTML_SINGLECHAR: + case HtmlTokenId::TEXTTOKEN: + case HtmlTokenId::SINGLECHAR: if ( m_bInTbl ) // && !m_bSDNum ) // important, as otherwise we also get the names of the fonts m_sTextToken += aToken; break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: m_sCurrent += m_sTextToken; break; - case HTML_PARABREAK_ON: + case HtmlTokenId::PARABREAK_ON: m_sTextToken.clear(); break; - case HTML_TABLEDATA_OFF: + case HtmlTokenId::TABLEDATA_OFF: if ( !m_sCurrent.isEmpty() ) m_sTextToken = m_sCurrent; adjustFormat(); @@ -268,7 +269,7 @@ void OHTMLReader::NextToken( int nToken ) m_bSDNum = m_bInTbl = false; m_sCurrent.clear(); break; - case HTML_TABLEROW_OFF: + case HtmlTokenId::TABLEROW_OFF: if ( !m_sCurrent.isEmpty() ) m_sTextToken = m_sCurrent; adjustFormat(); @@ -276,6 +277,7 @@ void OHTMLReader::NextToken( int nToken ) m_nRows--; m_sCurrent.clear(); break; + default: break; } } } @@ -398,7 +400,7 @@ sal_Int16 OHTMLReader::GetWidthPixel( const HTMLOption& rOption ) } } -bool OHTMLReader::CreateTable(int nToken) +bool OHTMLReader::CreateTable(HtmlTokenId nToken) { OUString aTempName(ModuleRes(STR_TBL_TITLE)); aTempName = aTempName.getToken(0,' '); @@ -416,26 +418,26 @@ bool OHTMLReader::CreateTable(int nToken) { switch (nToken) { - case HTML_TEXTTOKEN: - case HTML_SINGLECHAR: + case HtmlTokenId::TEXTTOKEN: + case HtmlTokenId::SINGLECHAR: if(bTableHeader) aColumnName += aToken; if(bCaption) aTableName += aToken; break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: m_sCurrent += aColumnName; break; - case HTML_PARABREAK_ON: + case HtmlTokenId::PARABREAK_ON: m_sTextToken.clear(); break; - case HTML_TABLEDATA_ON: - case HTML_TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: TableDataOn(eVal); bTableHeader = true; break; - case HTML_TABLEDATA_OFF: - case HTML_TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: + case HtmlTokenId::TABLEHEADER_OFF: { aColumnName = comphelper::string::strip(aColumnName, ' ' ); if (aColumnName.isEmpty() || m_bAppendFirstLine ) @@ -453,12 +455,12 @@ bool OHTMLReader::CreateTable(int nToken) } break; - case HTML_TITLE_ON: - case HTML_CAPTION_ON: + case HtmlTokenId::TITLE_ON: + case HtmlTokenId::CAPTION_ON: bCaption = true; break; - case HTML_TITLE_OFF: - case HTML_CAPTION_OFF: + case HtmlTokenId::TITLE_OFF: + case HtmlTokenId::CAPTION_OFF: aTableName = comphelper::string::strip(aTableName, ' '); if(aTableName.isEmpty()) aTableName = ::dbtools::createUniqueName(m_xTables, aTableName); @@ -466,25 +468,26 @@ bool OHTMLReader::CreateTable(int nToken) aTableName = aTempName; bCaption = false; break; - case HTML_FONT_ON: + case HtmlTokenId::FONT_ON: TableFontOn(aFont,nTextColor); break; - case HTML_BOLD_ON: + case HtmlTokenId::BOLD_ON: aFont.Weight = css::awt::FontWeight::BOLD; break; - case HTML_ITALIC_ON: + case HtmlTokenId::ITALIC_ON: aFont.Slant = css::awt::FontSlant_ITALIC; break; - case HTML_UNDERLINE_ON: + case HtmlTokenId::UNDERLINE_ON: aFont.Underline = css::awt::FontUnderline::SINGLE; break; - case HTML_STRIKE_ON: + case HtmlTokenId::STRIKE_ON: aFont.Strikeout = css::awt::FontStrikeout::SINGLE; break; + default: break; } nToken = GetNextToken(); } - while (nToken != HTML_TABLEROW_OFF); + while (nToken != HtmlTokenId::TABLEROW_OFF); if ( !m_sCurrent.isEmpty() ) aColumnName = m_sCurrent; diff --git a/dbaccess/source/ui/misc/WExtendPages.cxx b/dbaccess/source/ui/misc/WExtendPages.cxx index 0cbe34343250..1a330f0d3a83 100644 --- a/dbaccess/source/ui/misc/WExtendPages.cxx +++ b/dbaccess/source/ui/misc/WExtendPages.cxx @@ -24,9 +24,10 @@ using namespace dbaui; using namespace com::sun::star; -SvParser* OWizHTMLExtend::createReader(sal_Int32 _nRows) + +void OWizHTMLExtend::createReaderAndCallParser(sal_Int32 _nRows) { - return new OHTMLReader(*m_pParserStream, + tools::SvRef<OHTMLReader> xParser = new OHTMLReader(*m_pParserStream, _nRows, m_pParent->GetColumnPositions(), m_pParent->GetFormatter(), @@ -34,11 +35,12 @@ SvParser* OWizHTMLExtend::createReader(sal_Int32 _nRows) &m_pParent->getDestVector(), &m_pParent->getTypeInfo(), m_pParent->shouldCreatePrimaryKey()); + xParser->CallParser(); } -SvParser* OWizRTFExtend::createReader(sal_Int32 _nRows) +void OWizRTFExtend::createReaderAndCallParser(sal_Int32 _nRows) { - return new ORTFReader(*m_pParserStream, + tools::SvRef<ORTFReader> xParser = new ORTFReader(*m_pParserStream, _nRows, m_pParent->GetColumnPositions(), m_pParent->GetFormatter(), @@ -46,6 +48,7 @@ SvParser* OWizRTFExtend::createReader(sal_Int32 _nRows) &m_pParent->getDestVector(), &m_pParent->getTypeInfo(), m_pParent->shouldCreatePrimaryKey()); + xParser->CallParser(); } OWizNormalExtend::OWizNormalExtend(vcl::Window* pParent) : OWizTypeSelect( pParent ) @@ -53,9 +56,8 @@ OWizNormalExtend::OWizNormalExtend(vcl::Window* pParent) : OWizTypeSelect( pPare EnableAuto(false); } -SvParser* OWizNormalExtend::createReader(sal_Int32 /*_nRows*/) +void OWizNormalExtend::createReaderAndCallParser(sal_Int32 /*_nRows*/) { - return nullptr; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/dbaccess/source/ui/misc/WTypeSelect.cxx b/dbaccess/source/ui/misc/WTypeSelect.cxx index 429339e3899a..b0512911f518 100644 --- a/dbaccess/source/ui/misc/WTypeSelect.cxx +++ b/dbaccess/source/ui/misc/WTypeSelect.cxx @@ -356,13 +356,7 @@ IMPL_LINK_NOARG( OWizTypeSelect, ButtonClickHdl, Button *, void ) { sal_uInt64 const nTell = m_pParserStream->Tell(); // might change seek position of stream - SvParser *pReader = createReader(nRows); - if(pReader) - { - pReader->AddFirstRef(); - pReader->CallParser(); - pReader->ReleaseRef(); - } + createReaderAndCallParser(nRows); m_pParserStream->Seek(nTell); } diff --git a/editeng/source/editeng/eehtml.cxx b/editeng/source/editeng/eehtml.cxx index 8831e472569e..e625669aea00 100644 --- a/editeng/source/editeng/eehtml.cxx +++ b/editeng/source/editeng/eehtml.cxx @@ -99,11 +99,11 @@ SvParserState EditHTMLParser::CallParser(EditEngine* pEE, const EditPaM& rPaM) return _eState; } -void EditHTMLParser::NextToken( int nToken ) +void EditHTMLParser::NextToken( HtmlTokenId nToken ) { switch( nToken ) { - case HTML_META: + case HtmlTokenId::META: { const HTMLOptions& aOptions = GetOptions(); size_t nArrLen = aOptions.size(); @@ -134,33 +134,33 @@ void EditHTMLParser::NextToken( int nToken ) } break; - case HTML_PLAINTEXT_ON: - case HTML_PLAINTEXT2_ON: + case HtmlTokenId::PLAINTEXT_ON: + case HtmlTokenId::PLAINTEXT2_ON: bInPara = true; break; - case HTML_PLAINTEXT_OFF: - case HTML_PLAINTEXT2_OFF: + case HtmlTokenId::PLAINTEXT_OFF: + case HtmlTokenId::PLAINTEXT2_OFF: bInPara = false; break; - case HTML_LINEBREAK: - case HTML_NEWPARA: + case HtmlTokenId::LINEBREAK: + case HtmlTokenId::NEWPARA: { if ( ( bInPara || nInTable ) && - ( ( nToken == HTML_LINEBREAK ) || HasTextInCurrentPara() ) ) + ( ( nToken == HtmlTokenId::LINEBREAK ) || HasTextInCurrentPara() ) ) { ImpInsertParaBreak(); } } break; - case HTML_HORZRULE: + case HtmlTokenId::HORZRULE: { if ( HasTextInCurrentPara() ) ImpInsertParaBreak(); ImpInsertParaBreak(); } break; - case HTML_NONBREAKSPACE: + case HtmlTokenId::NONBREAKSPACE: { if ( bInPara ) { @@ -168,7 +168,7 @@ void EditHTMLParser::NextToken( int nToken ) } } break; - case HTML_RAWDATA: + case HtmlTokenId::RAWDATA: if (IsReadStyle() && !aToken.isEmpty()) { // Each token represents a single line. @@ -176,7 +176,7 @@ void EditHTMLParser::NextToken( int nToken ) maStyleSource.append('\n'); } break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: { // #i110937# for <title> content, call aImportHdl (no SkipGroup), but don't insert the text into the EditEngine if (!bInTitle) @@ -210,98 +210,98 @@ void EditHTMLParser::NextToken( int nToken ) } break; - case HTML_CENTER_ON: - case HTML_CENTER_OFF: + case HtmlTokenId::CENTER_ON: + case HtmlTokenId::CENTER_OFF: { sal_Int32 nNode = mpEditEngine->GetEditDoc().GetPos( aCurSel.Max().GetNode() ); SfxItemSet aItems( aCurSel.Max().GetNode()->GetContentAttribs().GetItems() ); aItems.ClearItem( EE_PARA_JUST ); - if ( nToken == HTML_CENTER_ON ) + if ( nToken == HtmlTokenId::CENTER_ON ) aItems.Put( SvxAdjustItem( SvxAdjust::Center, EE_PARA_JUST ) ); mpEditEngine->SetParaAttribsOnly(nNode, aItems); } break; - case HTML_ANCHOR_ON: AnchorStart(); + case HtmlTokenId::ANCHOR_ON: AnchorStart(); break; - case HTML_ANCHOR_OFF: AnchorEnd(); + case HtmlTokenId::ANCHOR_OFF: AnchorEnd(); break; - case HTML_PARABREAK_ON: + case HtmlTokenId::PARABREAK_ON: if( bInPara && HasTextInCurrentPara() ) EndPara(); StartPara( true ); break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: if( bInPara ) EndPara(); break; - case HTML_HEAD1_ON: - case HTML_HEAD2_ON: - case HTML_HEAD3_ON: - case HTML_HEAD4_ON: - case HTML_HEAD5_ON: - case HTML_HEAD6_ON: + case HtmlTokenId::HEAD1_ON: + case HtmlTokenId::HEAD2_ON: + case HtmlTokenId::HEAD3_ON: + case HtmlTokenId::HEAD4_ON: + case HtmlTokenId::HEAD5_ON: + case HtmlTokenId::HEAD6_ON: { HeadingStart( nToken ); } break; - case HTML_HEAD1_OFF: - case HTML_HEAD2_OFF: - case HTML_HEAD3_OFF: - case HTML_HEAD4_OFF: - case HTML_HEAD5_OFF: - case HTML_HEAD6_OFF: + case HtmlTokenId::HEAD1_OFF: + case HtmlTokenId::HEAD2_OFF: + case HtmlTokenId::HEAD3_OFF: + case HtmlTokenId::HEAD4_OFF: + case HtmlTokenId::HEAD5_OFF: + case HtmlTokenId::HEAD6_OFF: { HeadingEnd(); } break; - case HTML_PREFORMTXT_ON: - case HTML_XMP_ON: - case HTML_LISTING_ON: + case HtmlTokenId::PREFORMTXT_ON: + case HtmlTokenId::XMP_ON: + case HtmlTokenId::LISTING_ON: { StartPara( true ); ImpSetStyleSheet( STYLE_PRE ); } break; - case HTML_DEFLIST_ON: + case HtmlTokenId::DEFLIST_ON: { nDefListLevel++; } break; - case HTML_DEFLIST_OFF: + case HtmlTokenId::DEFLIST_OFF: { if( nDefListLevel ) nDefListLevel--; } break; - case HTML_TABLE_ON: nInTable++; + case HtmlTokenId::TABLE_ON: nInTable++; break; - case HTML_TABLE_OFF: DBG_ASSERT( nInTable, "Not in Table, but TABLE_OFF?" ); + case HtmlTokenId::TABLE_OFF: DBG_ASSERT( nInTable, "Not in Table, but TABLE_OFF?" ); nInTable--; break; - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: nInCell++; SAL_FALLTHROUGH; - case HTML_BLOCKQUOTE_ON: - case HTML_BLOCKQUOTE_OFF: - case HTML_BLOCKQUOTE30_ON: - case HTML_BLOCKQUOTE30_OFF: - case HTML_LISTHEADER_ON: - case HTML_LI_ON: - case HTML_DD_ON: - case HTML_DT_ON: - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: + case HtmlTokenId::BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE_OFF: + case HtmlTokenId::BLOCKQUOTE30_ON: + case HtmlTokenId::BLOCKQUOTE30_OFF: + case HtmlTokenId::LISTHEADER_ON: + case HtmlTokenId::LI_ON: + case HtmlTokenId::DD_ON: + case HtmlTokenId::DT_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: { bool bHasText = HasTextInCurrentPara(); if ( bHasText ) @@ -310,182 +310,182 @@ void EditHTMLParser::NextToken( int nToken ) } break; - case HTML_TABLEHEADER_OFF: - case HTML_TABLEDATA_OFF: + case HtmlTokenId::TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: { if ( nInCell ) nInCell--; SAL_FALLTHROUGH; } - case HTML_LISTHEADER_OFF: - case HTML_LI_OFF: - case HTML_DD_OFF: - case HTML_DT_OFF: - case HTML_ORDERLIST_OFF: - case HTML_UNORDERLIST_OFF: EndPara(); + case HtmlTokenId::LISTHEADER_OFF: + case HtmlTokenId::LI_OFF: + case HtmlTokenId::DD_OFF: + case HtmlTokenId::DT_OFF: + case HtmlTokenId::ORDERLIST_OFF: + case HtmlTokenId::UNORDERLIST_OFF: EndPara(); break; - case HTML_TABLEROW_ON: - case HTML_TABLEROW_OFF: // A RETURN only after a CELL, for Calc + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::TABLEROW_OFF: // A RETURN only after a CELL, for Calc - case HTML_COL_ON: - case HTML_COLGROUP_ON: - case HTML_COLGROUP_OFF: break; + case HtmlTokenId::COL_ON: + case HtmlTokenId::COLGROUP_ON: + case HtmlTokenId::COLGROUP_OFF: break; - case HTML_FONT_ON: + case HtmlTokenId::FONT_ON: break; - case HTML_FONT_OFF: + case HtmlTokenId::FONT_OFF: break; - case HTML_TITLE_ON: + case HtmlTokenId::TITLE_ON: bInTitle = true; break; - case HTML_TITLE_OFF: + case HtmlTokenId::TITLE_OFF: bInTitle = false; break; // globals - case HTML_HTML_ON: - case HTML_HTML_OFF: - case HTML_STYLE_ON: - case HTML_STYLE_OFF: - case HTML_BODY_ON: - case HTML_BODY_OFF: - case HTML_HEAD_ON: - case HTML_HEAD_OFF: - case HTML_FORM_ON: - case HTML_FORM_OFF: - case HTML_THEAD_ON: - case HTML_THEAD_OFF: - case HTML_TBODY_ON: - case HTML_TBODY_OFF: + case HtmlTokenId::HTML_ON: + case HtmlTokenId::HTML_OFF: + case HtmlTokenId::STYLE_ON: + case HtmlTokenId::STYLE_OFF: + case HtmlTokenId::BODY_ON: + case HtmlTokenId::BODY_OFF: + case HtmlTokenId::HEAD_ON: + case HtmlTokenId::HEAD_OFF: + case HtmlTokenId::FORM_ON: + case HtmlTokenId::FORM_OFF: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::THEAD_OFF: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TBODY_OFF: // inline elements, structural markup // HTML 3.0 - case HTML_BANNER_ON: - case HTML_BANNER_OFF: - case HTML_DIVISION_ON: - case HTML_DIVISION_OFF: -// case HTML_LISTHEADER_ON: //! special handling -// case HTML_LISTHEADER_OFF: - case HTML_NOTE_ON: - case HTML_NOTE_OFF: + case HtmlTokenId::BANNER_ON: + case HtmlTokenId::BANNER_OFF: + case HtmlTokenId::DIVISION_ON: + case HtmlTokenId::DIVISION_OFF: +// case HtmlTokenId::LISTHEADER_ON: //! special handling +// case HtmlTokenId::LISTHEADER_OFF: + case HtmlTokenId::NOTE_ON: + case HtmlTokenId::NOTE_OFF: // inline elements, logical markup // HTML 2.0 - case HTML_ADDRESS_ON: - case HTML_ADDRESS_OFF: -// case HTML_BLOCKQUOTE_ON: //! special handling -// case HTML_BLOCKQUOTE_OFF: - case HTML_CITIATION_ON: - case HTML_CITIATION_OFF: - case HTML_CODE_ON: - case HTML_CODE_OFF: - case HTML_DEFINSTANCE_ON: - case HTML_DEFINSTANCE_OFF: - case HTML_EMPHASIS_ON: - case HTML_EMPHASIS_OFF: - case HTML_KEYBOARD_ON: - case HTML_KEYBOARD_OFF: - case HTML_SAMPLE_ON: - case HTML_SAMPLE_OFF: - case HTML_STRIKE_ON: - case HTML_STRIKE_OFF: - case HTML_STRONG_ON: - case HTML_STRONG_OFF: - case HTML_VARIABLE_ON: - case HTML_VARIABLE_OFF: + case HtmlTokenId::ADDRESS_ON: + case HtmlTokenId::ADDRESS_OFF: +// case HtmlTokenId::BLOCKQUOTE_ON: //! special handling +// case HtmlTokenId::BLOCKQUOTE_OFF: + case HtmlTokenId::CITIATION_ON: + case HtmlTokenId::CITIATION_OFF: + case HtmlTokenId::CODE_ON: + case HtmlTokenId::CODE_OFF: + case HtmlTokenId::DEFINSTANCE_ON: + case HtmlTokenId::DEFINSTANCE_OFF: + case HtmlTokenId::EMPHASIS_ON: + case HtmlTokenId::EMPHASIS_OFF: + case HtmlTokenId::KEYBOARD_ON: + case HtmlTokenId::KEYBOARD_OFF: + case HtmlTokenId::SAMPLE_ON: + case HtmlTokenId::SAMPLE_OFF: + case HtmlTokenId::STRIKE_ON: + case HtmlTokenId::STRIKE_OFF: + case HtmlTokenId::STRONG_ON: + case HtmlTokenId::STRONG_OFF: + case HtmlTokenId::VARIABLE_ON: + case HtmlTokenId::VARIABLE_OFF: // HTML 3.0 - case HTML_ABBREVIATION_ON: - case HTML_ABBREVIATION_OFF: - case HTML_ACRONYM_ON: - case HTML_ACRONYM_OFF: - case HTML_AUTHOR_ON: - case HTML_AUTHOR_OFF: -// case HTML_BLOCKQUOTE30_ON: //! special handling -// case HTML_BLOCKQUOTE30_OFF: - case HTML_DELETEDTEXT_ON: - case HTML_DELETEDTEXT_OFF: - case HTML_INSERTEDTEXT_ON: - case HTML_INSERTEDTEXT_OFF: - case HTML_LANGUAGE_ON: - case HTML_LANGUAGE_OFF: - case HTML_PERSON_ON: - case HTML_PERSON_OFF: - case HTML_SHORTQUOTE_ON: - case HTML_SHORTQUOTE_OFF: - case HTML_SUBSCRIPT_ON: - case HTML_SUBSCRIPT_OFF: - case HTML_SUPERSCRIPT_ON: - case HTML_SUPERSCRIPT_OFF: + case HtmlTokenId::ABBREVIATION_ON: + case HtmlTokenId::ABBREVIATION_OFF: + case HtmlTokenId::ACRONYM_ON: + case HtmlTokenId::ACRONYM_OFF: + case HtmlTokenId::AUTHOR_ON: + case HtmlTokenId::AUTHOR_OFF: +// case HtmlTokenId::BLOCKQUOTE30_ON: //! special handling +// case HtmlTokenId::BLOCKQUOTE30_OFF: + case HtmlTokenId::DELETEDTEXT_ON: + case HtmlTokenId::DELETEDTEXT_OFF: + case HtmlTokenId::INSERTEDTEXT_ON: + case HtmlTokenId::INSERTEDTEXT_OFF: + case HtmlTokenId::LANGUAGE_ON: + case HtmlTokenId::LANGUAGE_OFF: + case HtmlTokenId::PERSON_ON: + case HtmlTokenId::PERSON_OFF: + case HtmlTokenId::SHORTQUOTE_ON: + case HtmlTokenId::SHORTQUOTE_OFF: + case HtmlTokenId::SUBSCRIPT_ON: + case HtmlTokenId::SUBSCRIPT_OFF: + case HtmlTokenId::SUPERSCRIPT_ON: + case HtmlTokenId::SUPERSCRIPT_OFF: // inline elements, visual markup // HTML 2.0 - case HTML_BOLD_ON: - case HTML_BOLD_OFF: - case HTML_ITALIC_ON: - case HTML_ITALIC_OFF: - case HTML_TELETYPE_ON: - case HTML_TELETYPE_OFF: - case HTML_UNDERLINE_ON: - case HTML_UNDERLINE_OFF: + case HtmlTokenId::BOLD_ON: + case HtmlTokenId::BOLD_OFF: + case HtmlTokenId::ITALIC_ON: + case HtmlTokenId::ITALIC_OFF: + case HtmlTokenId::TELETYPE_ON: + case HtmlTokenId::TELETYPE_OFF: + case HtmlTokenId::UNDERLINE_ON: + case HtmlTokenId::UNDERLINE_OFF: // HTML 3.0 - case HTML_BIGPRINT_ON: - case HTML_BIGPRINT_OFF: - case HTML_STRIKETHROUGH_ON: - case HTML_STRIKETHROUGH_OFF: - case HTML_SMALLPRINT_ON: - case HTML_SMALLPRINT_OFF: + case HtmlTokenId::BIGPRINT_ON: + case HtmlTokenId::BIGPRINT_OFF: + case HtmlTokenId::STRIKETHROUGH_ON: + case HtmlTokenId::STRIKETHROUGH_OFF: + case HtmlTokenId::SMALLPRINT_ON: + case HtmlTokenId::SMALLPRINT_OFF: // figures - case HTML_FIGURE_ON: - case HTML_FIGURE_OFF: - case HTML_CAPTION_ON: - case HTML_CAPTION_OFF: - case HTML_CREDIT_ON: - case HTML_CREDIT_OFF: + case HtmlTokenId::FIGURE_ON: + case HtmlTokenId::FIGURE_OFF: + case HtmlTokenId::CAPTION_ON: + case HtmlTokenId::CAPTION_OFF: + case HtmlTokenId::CREDIT_ON: + case HtmlTokenId::CREDIT_OFF: // misc - case HTML_DIRLIST_ON: - case HTML_DIRLIST_OFF: - case HTML_FOOTNOTE_ON: //! land so im Text - case HTML_FOOTNOTE_OFF: - case HTML_MENULIST_ON: - case HTML_MENULIST_OFF: -// case HTML_PLAINTEXT_ON: //! special handling -// case HTML_PLAINTEXT_OFF: -// case HTML_PREFORMTXT_ON: //! special handling -// case HTML_PREFORMTXT_OFF: - case HTML_SPAN_ON: - case HTML_SPAN_OFF: + case HtmlTokenId::DIRLIST_ON: + case HtmlTokenId::DIRLIST_OFF: + case HtmlTokenId::FOOTNOTE_ON: //! land so im Text + case HtmlTokenId::FOOTNOTE_OFF: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::MENULIST_OFF: +// case HtmlTokenId::PLAINTEXT_ON: //! special handling +// case HtmlTokenId::PLAINTEXT_OFF: +// case HtmlTokenId::PREFORMTXT_ON: //! special handling +// case HtmlTokenId::PREFORMTXT_OFF: + case HtmlTokenId::SPAN_ON: + case HtmlTokenId::SPAN_OFF: // obsolete -// case HTML_XMP_ON: //! special handling -// case HTML_XMP_OFF: -// case HTML_LISTING_ON: //! special handling -// case HTML_LISTING_OFF: +// case HtmlTokenId::XMP_ON: //! special handling +// case HtmlTokenId::XMP_OFF: +// case HtmlTokenId::LISTING_ON: //! special handling +// case HtmlTokenId::LISTING_OFF: // Netscape - case HTML_BLINK_ON: - case HTML_BLINK_OFF: - case HTML_NOBR_ON: - case HTML_NOBR_OFF: - case HTML_NOEMBED_ON: - case HTML_NOEMBED_OFF: - case HTML_NOFRAMES_ON: - case HTML_NOFRAMES_OFF: + case HtmlTokenId::BLINK_ON: + case HtmlTokenId::BLINK_OFF: + case HtmlTokenId::NOBR_ON: + case HtmlTokenId::NOBR_OFF: + case HtmlTokenId::NOEMBED_ON: + case HtmlTokenId::NOEMBED_OFF: + case HtmlTokenId::NOFRAMES_ON: + case HtmlTokenId::NOFRAMES_OFF: // Internet Explorer - case HTML_MARQUEE_ON: - case HTML_MARQUEE_OFF: -// case HTML_PLAINTEXT2_ON: //! special handling -// case HTML_PLAINTEXT2_OFF: + case HtmlTokenId::MARQUEE_ON: + case HtmlTokenId::MARQUEE_OFF: +// case HtmlTokenId::PLAINTEXT2_ON: //! special handling +// case HtmlTokenId::PLAINTEXT2_OFF: break; default: { - if ( nToken & HTML_TOKEN_ONOFF ) + if ( nToken >= HtmlTokenId::ONOFF_START ) { - if ( ( nToken == HTML_UNKNOWNCONTROL_ON ) || ( nToken == HTML_UNKNOWNCONTROL_OFF ) ) + if ( ( nToken == HtmlTokenId::UNKNOWNCONTROL_ON ) || ( nToken == HtmlTokenId::UNKNOWNCONTROL_OFF ) ) { ; } - else if ( !(nToken & 1) ) + else if ( !isOffToken(nToken) ) { - DBG_ASSERT( !( nToken & 1 ), "No Start-Token ?!" ); - SkipGroup( nToken + 1 ); + DBG_ASSERT( !isOffToken( nToken ), "No Start-Token ?!" ); + SkipGroup( static_cast<HtmlTokenId>((int)nToken + 1) ); } } } @@ -496,9 +496,9 @@ void EditHTMLParser::NextToken( int nToken ) HtmlImportInfo aImportInfo(HtmlImportState::NextToken, this, mpEditEngine->CreateESelection(aCurSel)); aImportInfo.nToken = nToken; aImportInfo.nTokenValue = (short)nTokenValue; - if ( nToken == HTML_TEXTTOKEN ) + if ( nToken == HtmlTokenId::TEXTTOKEN ) aImportInfo.aText = aToken; - else if (nToken == HTML_STYLE_OFF) + else if (nToken == HtmlTokenId::STYLE_OFF) aImportInfo.aText = maStyleSource.makeStringAndClear(); mpEditEngine->CallHtmlImportHandler(aImportInfo); } @@ -669,26 +669,27 @@ void EditHTMLParser::ImpInsertText( const OUString& rText ) aCurSel = mpEditEngine->InsertText(aCurSel, rText); } -void EditHTMLParser::SkipGroup( int nEndToken ) +void EditHTMLParser::SkipGroup( HtmlTokenId nEndToken ) { // groups in cells are closed upon leaving the cell, because those // ******* web authors don't know their job // for example: <td><form></td> lacks a closing </form> sal_uInt8 nCellLevel = nInCell; - int nToken; - while( nCellLevel <= nInCell && ( (nToken = GetNextToken() ) != nEndToken ) && nToken ) + HtmlTokenId nToken; + while( nCellLevel <= nInCell && ( (nToken = GetNextToken() ) != nEndToken ) && nToken != HtmlTokenId::NONE ) { switch ( nToken ) { - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: nInCell++; break; - case HTML_TABLEHEADER_OFF: - case HTML_TABLEDATA_OFF: + case HtmlTokenId::TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: if ( nInCell ) nInCell--; break; + default: break; } } } @@ -793,7 +794,7 @@ void EditHTMLParser::AnchorEnd() } } -void EditHTMLParser::HeadingStart( int nToken ) +void EditHTMLParser::HeadingStart( HtmlTokenId nToken ) { bWasInPara = bInPara; StartPara( false ); @@ -802,7 +803,7 @@ void EditHTMLParser::HeadingStart( int nToken ) ImpInsertParaBreak(); sal_uInt16 nId = sal::static_int_cast< sal_uInt16 >( - 1 + ( ( nToken - HTML_HEAD1_ON ) / 2 ) ); + 1 + ( ( (int)nToken - (int)HtmlTokenId::HEAD1_ON ) / 2 ) ); DBG_ASSERT( (nId >= 1) && (nId <= 9), "HeadingStart: ID can not be correct!" ); ImpSetStyleSheet( nId ); } diff --git a/editeng/source/editeng/eehtml.hxx b/editeng/source/editeng/eehtml.hxx index 8b611b019857..4c68f0dcc69f 100644 --- a/editeng/source/editeng/eehtml.hxx +++ b/editeng/source/editeng/eehtml.hxx @@ -56,9 +56,9 @@ private: void EndPara(); void AnchorStart(); void AnchorEnd(); - void HeadingStart( int nToken ); + void HeadingStart( HtmlTokenId nToken ); void HeadingEnd(); - void SkipGroup( int nEndToken ); + void SkipGroup( HtmlTokenId nEndToken ); bool ThrowAwayBlank(); bool HasTextInCurrentPara(); @@ -68,7 +68,7 @@ private: void ImpSetStyleSheet( sal_uInt16 nHeadingLevel ); protected: - virtual void NextToken( int nToken ) override; + virtual void NextToken( HtmlTokenId nToken ) override; public: EditHTMLParser(SvStream& rIn, const OUString& rBaseURL, SvKeyValueIterator* pHTTPHeaderAttrs); diff --git a/editeng/source/editeng/eertfpar.cxx b/editeng/source/editeng/eertfpar.cxx index 95e41042008a..88c0499eb9c2 100644 --- a/editeng/source/editeng/eertfpar.cxx +++ b/editeng/source/editeng/eertfpar.cxx @@ -33,15 +33,16 @@ #include "editeng/editeng.hxx" #include <svtools/rtftoken.h> +#include <svtools/htmltokn.h> using namespace com::sun::star; -HtmlImportInfo::HtmlImportInfo( HtmlImportState eSt, SvParser* pPrsrs, const ESelection& rSel ) +HtmlImportInfo::HtmlImportInfo( HtmlImportState eSt, SvParser<HtmlTokenId>* pPrsrs, const ESelection& rSel ) : aSelection( rSel ) { pParser = pPrsrs; eState = eSt; - nToken = 0; + nToken = HtmlTokenId::NONE; nTokenValue = 0; pAttrs = nullptr; } @@ -50,7 +51,7 @@ HtmlImportInfo::~HtmlImportInfo() { } -RtfImportInfo::RtfImportInfo( RtfImportState eSt, SvParser* pPrsrs, const ESelection& rSel ) +RtfImportInfo::RtfImportInfo( RtfImportState eSt, SvParser<int>* pPrsrs, const ESelection& rSel ) : aSelection( rSel ) { pParser = pPrsrs; diff --git a/editeng/source/rtf/svxrtf.cxx b/editeng/source/rtf/svxrtf.cxx index ad244b97e66a..3eb72a55e656 100644 --- a/editeng/source/rtf/svxrtf.cxx +++ b/editeng/source/rtf/svxrtf.cxx @@ -1071,8 +1071,8 @@ void SvxRTFParser::BuildWhichTable() // Building a Which-Map 'rWhichMap' from an array of // 'pWhichIds' from Which-Ids. It has the long 'nWhichIds'. // The Which-Map is not going to be deleted. - SvParser::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPardMap), sizeof(aPardMap) / sizeof(sal_uInt16) ); - SvParser::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPlainMap), sizeof(aPlainMap) / sizeof(sal_uInt16) ); + ::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPardMap), sizeof(aPardMap) / sizeof(sal_uInt16) ); + ::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPlainMap), sizeof(aPlainMap) / sizeof(sal_uInt16) ); } const SfxItemSet& SvxRTFParser::GetRTFDefaults() diff --git a/filter/source/textfilterdetect/filterdetect.cxx b/filter/source/textfilterdetect/filterdetect.cxx index 6a392ca79230..ee93d28ddbed 100644 --- a/filter/source/textfilterdetect/filterdetect.cxx +++ b/filter/source/textfilterdetect/filterdetect.cxx @@ -108,7 +108,7 @@ bool IsHTMLStream( const uno::Reference<io::XInputStream>& xInStream ) // The string following '<' has to be a known HTML token. OString aToken = sHeader.copy( nStartOfTagIndex, i - nStartOfTagIndex ); - return GetHTMLToken( OStringToOUString( aToken.toAsciiLowerCase(), RTL_TEXTENCODING_ASCII_US ) ) != 0; + return GetHTMLToken( OStringToOUString( aToken.toAsciiLowerCase(), RTL_TEXTENCODING_ASCII_US ) ) != HtmlTokenId::NONE; } } diff --git a/include/editeng/editdata.hxx b/include/editeng/editdata.hxx index 00e8a2d65ac0..a13ecf822fcc 100644 --- a/include/editeng/editdata.hxx +++ b/include/editeng/editdata.hxx @@ -27,9 +27,10 @@ class SfxItemSet; class SfxPoolItem; -class SvParser; +template<typename T> class SvParser; class SvxFieldItem; class SvxRTFItemStackType; +enum class HtmlTokenId : sal_Int16; enum EETextFormat { EE_FORMAT_TEXT = 0x20, EE_FORMAT_RTF, EE_FORMAT_BIN = 0x31, EE_FORMAT_HTML, EE_FORMAT_XML }; enum EEHorizontalTextDirection { EE_HTEXTDIR_DEFAULT, EE_HTEXTDIR_L2R, EE_HTEXTDIR_R2L }; @@ -219,24 +220,24 @@ enum class HtmlImportState { struct HtmlImportInfo { - SvParser* pParser; + SvParser<HtmlTokenId>* pParser; ESelection aSelection; HtmlImportState eState; - int nToken; + HtmlTokenId nToken; short nTokenValue; OUString aText; SfxItemSet* pAttrs; - HtmlImportInfo( HtmlImportState eState, SvParser* pPrsrs, const ESelection& rSel ); + HtmlImportInfo( HtmlImportState eState, SvParser<HtmlTokenId>* pPrsrs, const ESelection& rSel ); ~HtmlImportInfo(); }; struct RtfImportInfo { - SvParser* pParser; + SvParser<int>* pParser; ESelection aSelection; RtfImportState eState; @@ -247,7 +248,7 @@ struct RtfImportInfo SvxRTFItemStackType* pAttrs; - RtfImportInfo( RtfImportState eState, SvParser* pPrsrs, const ESelection& rSel ); + RtfImportInfo( RtfImportState eState, SvParser<int>* pPrsrs, const ESelection& rSel ); ~RtfImportInfo(); }; diff --git a/include/svtools/htmltokn.h b/include/svtools/htmltokn.h index 8673d466c155..26706c5fc43d 100644 --- a/include/svtools/htmltokn.h +++ b/include/svtools/htmltokn.h @@ -22,17 +22,20 @@ #include <svtools/svtdllapi.h> #include <sal/types.h> +#include <cassert> +#include <stdexcept> namespace rtl { class OUString; }; enum class HtmlOptionId; +enum class HtmlTokenId : sal_Int16; // search the char for the CharName sal_Unicode GetHTMLCharName( const rtl::OUString& rName ); // search the TokenID for the token -SVT_DLLPUBLIC int GetHTMLToken( const rtl::OUString& rName ); +SVT_DLLPUBLIC HtmlTokenId GetHTMLToken( const rtl::OUString& rName ); // search the TokenId for an attribute token HtmlOptionId GetHTMLOption( const rtl::OUString& rName ); @@ -40,243 +43,257 @@ HtmlOptionId GetHTMLOption( const rtl::OUString& rName ); // search the 24-bit color for a color name (not found = ULONG_MAX) SVT_DLLPUBLIC sal_uInt32 GetHTMLColor( const rtl::OUString& rName ); -// always starting from 256 on, greater than a char -const int HTML_TOKEN_START = 0x100; -const int HTML_TOKEN_ONOFF = 0x200; -const int HTML_TOKEN_MICROSOFT = 0x1000; - -enum HTML_TOKEN_IDS +enum class HtmlTokenId : sal_Int16 { - HTML_TEXTTOKEN = HTML_TOKEN_START, - HTML_SINGLECHAR, - HTML_NEWPARA, - HTML_TABCHAR, - HTML_RAWDATA, - HTML_LINEFEEDCHAR, + INVALID = -1, + NONE = 0, +// always starting from 256 on, greater than a char + TEXTTOKEN = 0x100, + SINGLECHAR, + NEWPARA, + TABCHAR, + RAWDATA, + LINEFEEDCHAR, // these will only be turned on - HTML_AREA, // Netscape 2.0 - HTML_BASE, // HTML 3.0 - HTML_COMMENT, - HTML_DOCTYPE, - HTML_EMBED, // Netscape 2.0 ignore </EMBED> - HTML_HORZRULE, // ignore </HR> - HTML_IMAGE, // ignore </IMG> - HTML_INPUT, // ignore </INPUT> - HTML_LINEBREAK, // </BR> -> <BR> - HTML_LINK, // HTML 3.0 - HTML_META, // HTML 3.0 ignore </META> - HTML_OPTION, // ignore </OPTION> - HTML_PARAM, // HotJava - HTML_SPACER, // Netscape 3.0b5 // ignore </SPACER> + AREA, // Netscape 2.0 + BASE, // HTML 3.0 + COMMENT, + DOCTYPE, + EMBED, // Netscape 2.0 ignore </EMBED> + HORZRULE, // ignore </HR> + IMAGE, // ignore </IMG> + INPUT, // ignore </INPUT> + LINEBREAK, // </BR> -> <BR> + LINK, // HTML 3.0 + META, // HTML 3.0 ignore </META> + OPTION, // ignore </OPTION> + PARAM, // HotJava + SPACER, // Netscape 3.0b5 // ignore </SPACER> // tokens recognised using HTML character - HTML_NONBREAKSPACE, - HTML_SOFTHYPH, + NONBREAKSPACE, + SOFTHYPH, // these will be turned back off, // the off value is always located behind (+1) !! - HTML_ABBREVIATION_ON = HTML_TOKEN_ONOFF, // HTML 3.0 - HTML_ABBREVIATION_OFF, // HTML 3.0 - HTML_ACRONYM_ON, // HTML 3.0 - HTML_ACRONYM_OFF, // HTML 3.0 - HTML_ADDRESS_ON, - HTML_ADDRESS_OFF, - HTML_ANCHOR_ON, - HTML_ANCHOR_OFF, - HTML_APPLET_ON, // HotJava - HTML_APPLET_OFF, // HotJava - HTML_AUTHOR_ON, // HTML 3.0 - HTML_AUTHOR_OFF, // HTML 3.0 - HTML_BANNER_ON, // HTML 3.0 - HTML_BANNER_OFF, // HTML 3.0 - HTML_BASEFONT_ON, // Netscape - HTML_BASEFONT_OFF, // Netscape - HTML_BIGPRINT_ON, // HTML 3.0 - HTML_BIGPRINT_OFF, // HTML 3.0 - HTML_BLINK_ON, // Netscape - HTML_BLINK_OFF, // Netscape - HTML_BLOCKQUOTE30_ON, // HTML 3.0 - HTML_BLOCKQUOTE30_OFF, // HTML 3.0 - HTML_BLOCKQUOTE_ON, - HTML_BLOCKQUOTE_OFF, - HTML_BODY_ON, - HTML_BODY_OFF, - HTML_BOLD_ON, - HTML_BOLD_OFF, - HTML_CAPTION_ON, // HTML 3.0 - HTML_CAPTION_OFF, // HTML 3.0 - HTML_CENTER_ON, // Netscape - HTML_CENTER_OFF, // Netscape - HTML_CITIATION_ON, - HTML_CITIATION_OFF, - HTML_CODE_ON, - HTML_CODE_OFF, - HTML_COL_ON, // HTML3 Table Model Draft - HTML_COL_OFF, // HTML3 Table Model Draft - HTML_COLGROUP_ON, // HTML3 Table Model Draft - HTML_COLGROUP_OFF, // HTML3 Table Model Draft - HTML_CREDIT_ON, // HTML 3.0 - HTML_CREDIT_OFF, // HTML 3.0 - HTML_DD_ON, - HTML_DD_OFF, - HTML_DEFLIST_ON, - HTML_DEFLIST_OFF, - HTML_DELETEDTEXT_ON, // HTML 3.0 - HTML_DELETEDTEXT_OFF, // HTML 3.0 - HTML_DIRLIST_ON, - HTML_DIRLIST_OFF, - HTML_DIVISION_ON, // HTML 3.0 - HTML_DIVISION_OFF, // HTML 3.0 - HTML_DT_ON, - HTML_DT_OFF, - HTML_EMPHASIS_ON, - HTML_EMPHASIS_OFF, - HTML_FIGURE_ON, // HTML 3.0 - HTML_FIGURE_OFF, // HTML 3.0 - HTML_FONT_ON, // Netscape - HTML_FONT_OFF, // Netscape - HTML_FOOTNOTE_ON, // HTML 3.0 - HTML_FOOTNOTE_OFF, // HTML 3.0 - HTML_FORM_ON, - HTML_FORM_OFF, - HTML_FRAME_ON, // Netscape 2.0 - HTML_FRAME_OFF, // Netscape 2.0 - HTML_FRAMESET_ON, // Netscape 2.0 - HTML_FRAMESET_OFF, // Netscape 2.0 - HTML_HEAD1_ON, - HTML_HEAD1_OFF, - HTML_HEAD2_ON, - HTML_HEAD2_OFF, - HTML_HEAD3_ON, - HTML_HEAD3_OFF, - HTML_HEAD4_ON, - HTML_HEAD4_OFF, - HTML_HEAD5_ON, - HTML_HEAD5_OFF, - HTML_HEAD6_ON, - HTML_HEAD6_OFF, - HTML_HEAD_ON, - HTML_HEAD_OFF, - HTML_HTML_ON, - HTML_HTML_OFF, - HTML_IFRAME_ON, // IE 3.0b2 - HTML_IFRAME_OFF, // IE 3.0b2 - HTML_INSERTEDTEXT_ON, // HTML 3.0 - HTML_INSERTEDTEXT_OFF, // HTML 3.0 - HTML_ITALIC_ON, - HTML_ITALIC_OFF, - HTML_KEYBOARD_ON, - HTML_KEYBOARD_OFF, - HTML_LANGUAGE_ON, // HTML 3.0 - HTML_LANGUAGE_OFF, // HTML 3.0 - HTML_LISTHEADER_ON, // HTML 3.0 - HTML_LISTHEADER_OFF, // HTML 3.0 - HTML_LI_ON, - HTML_LI_OFF, - HTML_MAP_ON, // Netscape 2.0 - HTML_MAP_OFF, // Netscape 2.0 - HTML_MENULIST_ON, - HTML_MENULIST_OFF, - HTML_MULTICOL_ON, // Netscape 3.0b5 - HTML_MULTICOL_OFF, // Netscape 3.0b5 - HTML_NOBR_ON, // Netscape - HTML_NOBR_OFF, // Netscape - HTML_NOEMBED_ON, // Netscape 2.0 - HTML_NOEMBED_OFF, // Netscape 2.0 - HTML_NOFRAMES_ON, // Netscape 2.0 - HTML_NOFRAMES_OFF, // Netscape 2.0 - HTML_NOSCRIPT_ON, // Netscape 2.0 - HTML_NOSCRIPT_OFF, // Netscape 3.0 - HTML_NOTE_ON, // HTML 3.0 - HTML_NOTE_OFF, // HTML 3.0 - HTML_OBJECT_ON, // HotJava - HTML_OBJECT_OFF, // HotJava - HTML_ORDERLIST_ON, - HTML_ORDERLIST_OFF, - HTML_PARABREAK_ON, - HTML_PARABREAK_OFF, - HTML_PERSON_ON, // HTML 3.0 - HTML_PERSON_OFF, // HTML 3.0 - HTML_PLAINTEXT_ON, // HTML 3.0 - HTML_PLAINTEXT_OFF, // HTML 3.0 - HTML_PREFORMTXT_ON, - HTML_PREFORMTXT_OFF, - HTML_SAMPLE_ON, - HTML_SAMPLE_OFF, - HTML_SCRIPT_ON, // HTML 3.2 - HTML_SCRIPT_OFF, // HTML 3.2 - HTML_SELECT_ON, - HTML_SELECT_OFF, - HTML_SHORTQUOTE_ON, // HTML 3.0 - HTML_SHORTQUOTE_OFF, // HTML 3.0 - HTML_SMALLPRINT_ON, // HTML 3.0 - HTML_SMALLPRINT_OFF, // HTML 3.0 - HTML_SPAN_ON, // Style Sheets - HTML_SPAN_OFF, // Style Sheets - HTML_STRIKETHROUGH_ON, // HTML 3.0 - HTML_STRIKETHROUGH_OFF, // HTML 3.0 - HTML_STRONG_ON, - HTML_STRONG_OFF, - HTML_STYLE_ON, // HTML 3.0 - HTML_STYLE_OFF, // HTML 3.0 - HTML_SUBSCRIPT_ON, // HTML 3.0 - HTML_SUBSCRIPT_OFF, // HTML 3.0 - HTML_SUPERSCRIPT_ON, // HTML 3.0 - HTML_SUPERSCRIPT_OFF, // HTML 3.0 - HTML_TABLE_ON, // HTML 3.0 - HTML_TABLE_OFF, // HTML 3.0 - HTML_TABLEDATA_ON, // HTML 3.0 - HTML_TABLEDATA_OFF, // HTML 3.0 - HTML_TABLEHEADER_ON, // HTML 3.0 - HTML_TABLEHEADER_OFF, // HTML 3.0 - HTML_TABLEROW_ON, // HTML 3.0 - HTML_TABLEROW_OFF, // HTML 3.0 - HTML_TBODY_ON, // HTML3 Table Model Draft - HTML_TBODY_OFF, // HTML3 Table Model Draft - HTML_TELETYPE_ON, - HTML_TELETYPE_OFF, - HTML_TEXTAREA_ON, - HTML_TEXTAREA_OFF, - HTML_TFOOT_ON, // HTML3 Table Model Draft - HTML_TFOOT_OFF, // HTML3 Table Model Draft - HTML_THEAD_ON, // HTML3 Table Model Draft - HTML_THEAD_OFF, // HTML3 Table Model Draft - HTML_TITLE_ON, - HTML_TITLE_OFF, - HTML_UNDERLINE_ON, - HTML_UNDERLINE_OFF, - HTML_UNORDERLIST_ON, - HTML_UNORDERLIST_OFF, - HTML_VARIABLE_ON, - HTML_VARIABLE_OFF, + ONOFF_START, + ABBREVIATION_ON = ONOFF_START, // HTML 3.0 + ABBREVIATION_OFF, // HTML 3.0 + ACRONYM_ON, // HTML 3.0 + ACRONYM_OFF, // HTML 3.0 + ADDRESS_ON, + ADDRESS_OFF, + ANCHOR_ON, + ANCHOR_OFF, + APPLET_ON, // HotJava + APPLET_OFF, // HotJava + AUTHOR_ON, // HTML 3.0 + AUTHOR_OFF, // HTML 3.0 + BANNER_ON, // HTML 3.0 + BANNER_OFF, // HTML 3.0 + BASEFONT_ON, // Netscape + BASEFONT_OFF, // Netscape + BIGPRINT_ON, // HTML 3.0 + BIGPRINT_OFF, // HTML 3.0 + BLINK_ON, // Netscape + BLINK_OFF, // Netscape + BLOCKQUOTE30_ON, // HTML 3.0 + BLOCKQUOTE30_OFF, // HTML 3.0 + BLOCKQUOTE_ON, + BLOCKQUOTE_OFF, + BODY_ON, + BODY_OFF, + BOLD_ON, + BOLD_OFF, + CAPTION_ON, // HTML 3.0 + CAPTION_OFF, // HTML 3.0 + CENTER_ON, // Netscape + CENTER_OFF, // Netscape + CITIATION_ON, + CITIATION_OFF, + CODE_ON, + CODE_OFF, + COL_ON, // HTML3 Table Model Draft + COL_OFF, // HTML3 Table Model Draft + COLGROUP_ON, // HTML3 Table Model Draft + COLGROUP_OFF, // HTML3 Table Model Draft + CREDIT_ON, // HTML 3.0 + CREDIT_OFF, // HTML 3.0 + DD_ON, + DD_OFF, + DEFLIST_ON, + DEFLIST_OFF, + DELETEDTEXT_ON, // HTML 3.0 + DELETEDTEXT_OFF, // HTML 3.0 + DIRLIST_ON, + DIRLIST_OFF, + DIVISION_ON, // HTML 3.0 + DIVISION_OFF, // HTML 3.0 + DT_ON, + DT_OFF, + EMPHASIS_ON, + EMPHASIS_OFF, + FIGURE_ON, // HTML 3.0 + FIGURE_OFF, // HTML 3.0 + FONT_ON, // Netscape + FONT_OFF, // Netscape + FOOTNOTE_ON, // HTML 3.0 + FOOTNOTE_OFF, // HTML 3.0 + FORM_ON, + FORM_OFF, + FRAME_ON, // Netscape 2.0 + FRAME_OFF, // Netscape 2.0 + FRAMESET_ON, // Netscape 2.0 + FRAMESET_OFF, // Netscape 2.0 + HEAD1_ON, + HEAD1_OFF, + HEAD2_ON, + HEAD2_OFF, + HEAD3_ON, + HEAD3_OFF, + HEAD4_ON, + HEAD4_OFF, + HEAD5_ON, + HEAD5_OFF, + HEAD6_ON, + HEAD6_OFF, + HEAD_ON, + HEAD_OFF, + HTML_ON, + HTML_OFF, + IFRAME_ON, // IE 3.0b2 + IFRAME_OFF, // IE 3.0b2 + INSERTEDTEXT_ON, // HTML 3.0 + INSERTEDTEXT_OFF, // HTML 3.0 + ITALIC_ON, + ITALIC_OFF, + KEYBOARD_ON, + KEYBOARD_OFF, + LANGUAGE_ON, // HTML 3.0 + LANGUAGE_OFF, // HTML 3.0 + LISTHEADER_ON, // HTML 3.0 + LISTHEADER_OFF, // HTML 3.0 + LI_ON, + LI_OFF, + MAP_ON, // Netscape 2.0 + MAP_OFF, // Netscape 2.0 + MENULIST_ON, + MENULIST_OFF, + MULTICOL_ON, // Netscape 3.0b5 + MULTICOL_OFF, // Netscape 3.0b5 + NOBR_ON, // Netscape + NOBR_OFF, // Netscape + NOEMBED_ON, // Netscape 2.0 + NOEMBED_OFF, // Netscape 2.0 + NOFRAMES_ON, // Netscape 2.0 + NOFRAMES_OFF, // Netscape 2.0 + NOSCRIPT_ON, // Netscape 2.0 + NOSCRIPT_OFF, // Netscape 3.0 + NOTE_ON, // HTML 3.0 + NOTE_OFF, // HTML 3.0 + OBJECT_ON, // HotJava + OBJECT_OFF, // HotJava + ORDERLIST_ON, + ORDERLIST_OFF, + PARABREAK_ON, + PARABREAK_OFF, + PERSON_ON, // HTML 3.0 + PERSON_OFF, // HTML 3.0 + PLAINTEXT_ON, // HTML 3.0 + PLAINTEXT_OFF, // HTML 3.0 + PREFORMTXT_ON, + PREFORMTXT_OFF, + SAMPLE_ON, + SAMPLE_OFF, + SCRIPT_ON, // HTML 3.2 + SCRIPT_OFF, // HTML 3.2 + SELECT_ON, + SELECT_OFF, + SHORTQUOTE_ON, // HTML 3.0 + SHORTQUOTE_OFF, // HTML 3.0 + SMALLPRINT_ON, // HTML 3.0 + SMALLPRINT_OFF, // HTML 3.0 + SPAN_ON, // Style Sheets + SPAN_OFF, // Style Sheets + STRIKETHROUGH_ON, // HTML 3.0 + STRIKETHROUGH_OFF, // HTML 3.0 + STRONG_ON, + STRONG_OFF, + STYLE_ON, // HTML 3.0 + STYLE_OFF, // HTML 3.0 + SUBSCRIPT_ON, // HTML 3.0 + SUBSCRIPT_OFF, // HTML 3.0 + SUPERSCRIPT_ON, // HTML 3.0 + SUPERSCRIPT_OFF, // HTML 3.0 + TABLE_ON, // HTML 3.0 + TABLE_OFF, // HTML 3.0 + TABLEDATA_ON, // HTML 3.0 + TABLEDATA_OFF, // HTML 3.0 + TABLEHEADER_ON, // HTML 3.0 + TABLEHEADER_OFF, // HTML 3.0 + TABLEROW_ON, // HTML 3.0 + TABLEROW_OFF, // HTML 3.0 + TBODY_ON, // HTML3 Table Model Draft + TBODY_OFF, // HTML3 Table Model Draft + TELETYPE_ON, + TELETYPE_OFF, + TEXTAREA_ON, + TEXTAREA_OFF, + TFOOT_ON, // HTML3 Table Model Draft + TFOOT_OFF, // HTML3 Table Model Draft + THEAD_ON, // HTML3 Table Model Draft + THEAD_OFF, // HTML3 Table Model Draft + TITLE_ON, + TITLE_OFF, + UNDERLINE_ON, + UNDERLINE_OFF, + UNORDERLIST_ON, + UNORDERLIST_OFF, + VARIABLE_ON, + VARIABLE_OFF, // obsolete features - HTML_XMP_ON, - HTML_XMP_OFF, - HTML_LISTING_ON, - HTML_LISTING_OFF, + XMP_ON, + XMP_OFF, + LISTING_ON, + LISTING_OFF, // proposed features - HTML_DEFINSTANCE_ON, - HTML_DEFINSTANCE_OFF, - HTML_STRIKE_ON, - HTML_STRIKE_OFF, - - HTML_UNKNOWNCONTROL_ON, - HTML_UNKNOWNCONTROL_OFF, - - HTML_COMMENT2_ON = HTML_TOKEN_MICROSOFT|HTML_TOKEN_ONOFF, // HTML 2.0 ? - HTML_COMMENT2_OFF, // HTML 2.0 ? - HTML_MARQUEE_ON, - HTML_MARQUEE_OFF, - HTML_PLAINTEXT2_ON, // HTML 2.0 ? - HTML_PLAINTEXT2_OFF, // HTML 2.0 ? - - HTML_SDFIELD_ON, - HTML_SDFIELD_OFF + DEFINSTANCE_ON, + DEFINSTANCE_OFF, + STRIKE_ON, + STRIKE_OFF, + + UNKNOWNCONTROL_ON, + UNKNOWNCONTROL_OFF, + + // Microsoft features + COMMENT2_ON, // HTML 2.0 ? + COMMENT2_OFF, // HTML 2.0 ? + MARQUEE_ON, + MARQUEE_OFF, + PLAINTEXT2_ON, // HTML 2.0 ? + PLAINTEXT2_OFF, // HTML 2.0 ? + + SDFIELD_ON, + SDFIELD_OFF }; +constexpr bool isOffToken(HtmlTokenId nToken) +{ + return (nToken == HtmlTokenId::NONE || nToken >= HtmlTokenId::ONOFF_START) + ? (1 & (int)nToken) + : throw std::logic_error("Assertion failed!"); // C++11 does not do assert in constexpr +} + +constexpr HtmlTokenId getOnToken(HtmlTokenId nToken) +{ + return (nToken == HtmlTokenId::NONE || nToken >= HtmlTokenId::ONOFF_START) + ? HtmlTokenId(~1 & (int)nToken) + : throw std::logic_error("Assertion failed!"); // C++11 does not do assert in constexpr +} + // HTML attribute token (=Options) enum class HtmlOptionId diff --git a/include/svtools/parhtml.hxx b/include/svtools/parhtml.hxx index b6e7260b235c..89a0d5aeedf1 100644 --- a/include/svtools/parhtml.hxx +++ b/include/svtools/parhtml.hxx @@ -142,7 +142,7 @@ public: typedef ::std::vector<HTMLOption> HTMLOptions; -class SVT_DLLPUBLIC HTMLParser : public SvParser +class SVT_DLLPUBLIC HTMLParser : public SvParser<HtmlTokenId> { private: mutable HTMLOptions maOptions; // options of the start tag @@ -164,19 +164,19 @@ private: sal_uInt32 nPre_LinePos; // Pos in the line in the PRE-Tag - int mnPendingOffToken; ///< OFF token pending for a <XX.../> ON/OFF ON token + HtmlTokenId mnPendingOffToken; ///< OFF token pending for a <XX.../> ON/OFF ON token OUString aEndToken; protected: OUString sSaveToken; // the read tag as string - int ScanText( const sal_Unicode cBreak = 0U ); + HtmlTokenId ScanText( const sal_Unicode cBreak = 0U ); - int GetNextRawToken(); + HtmlTokenId GetNextRawToken(); // scan next token - virtual int GetNextToken_() override; + virtual HtmlTokenId GetNextToken_() override; virtual ~HTMLParser() override; @@ -198,15 +198,15 @@ public: // start PRE-/LISTING or XMP mode or filter tags respectively inline void StartPRE(); void FinishPRE() { bReadPRE = false; } - int FilterPRE( int nToken ); + HtmlTokenId FilterPRE( HtmlTokenId nToken ); inline void StartListing(); void FinishListing() { bReadListing = false; } - int FilterListing( int nToken ); + HtmlTokenId FilterListing( HtmlTokenId nToken ); inline void StartXMP(); void FinishXMP() { bReadXMP = false; } - int FilterXMP( int nToken ); + HtmlTokenId FilterXMP( HtmlTokenId nToken ); void FinishTextArea() { bReadTextArea = false; } @@ -217,7 +217,7 @@ public: // (PRE, XMP, ...) and set the flags. Is called by Continue before // NextToken is called. If you implement own loops or call // NextToken yourself, you should call this method beforehand. - int FilterToken( int nToken ); + HtmlTokenId FilterToken( HtmlTokenId nToken ); void ReadRawData( const OUString &rEndToken ) { aEndToken = rEndToken; } @@ -230,7 +230,7 @@ public: const HTMLOptions& GetOptions( HtmlOptionId *pNoConvertToken=nullptr ); // for asynchronous reading from the SvStream - virtual void Continue( int nToken ) override; + virtual void Continue( HtmlTokenId nToken ) override; protected: diff --git a/include/svtools/parrtf.hxx b/include/svtools/parrtf.hxx index 05baf76e57f9..0e870f685c89 100644 --- a/include/svtools/parrtf.hxx +++ b/include/svtools/parrtf.hxx @@ -34,7 +34,7 @@ struct RtfParserState_Impl {} }; -class SVT_DLLPUBLIC SvRTFParser : public SvParser +class SVT_DLLPUBLIC SvRTFParser : public SvParser<int> { std::stack< RtfParserState_Impl > aParserStates; int nOpenBrakets; diff --git a/include/svtools/svparser.hxx b/include/svtools/svparser.hxx index 67f77ee2ab28..136eb3a42573 100644 --- a/include/svtools/svparser.hxx +++ b/include/svtools/svparser.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SVTOOLS_SVPARSER_HXX #include <svtools/svtdllapi.h> +#include <svtools/htmltokn.h> #include <tools/link.hxx> #include <tools/ref.hxx> #include <tools/solar.h> @@ -29,7 +30,7 @@ #include <vector> #include <memory> -struct SvParser_Impl; +template<typename T> struct SvParser_Impl; class SvStream; enum class SvParserState @@ -41,6 +42,7 @@ enum class SvParserState Error }; +template<typename T> class SVT_DLLPUBLIC SvParser : public SvRefBase { DECL_LINK( NewDataRead, LinkParamNone*, void ); @@ -51,20 +53,18 @@ protected: sal_uLong nlLineNr; // current line number sal_uLong nlLinePos; // current column number - std::unique_ptr<SvParser_Impl> pImplData; // internal data + std::unique_ptr<SvParser_Impl<T>> pImplData; // internal data long nTokenValue; // additional value (RTF) bool bTokenHasValue; // indicates whether nTokenValue is valid SvParserState eState; // status also in derived classes - rtl_TextEncoding eSrcEnc; // Source encoding - - sal_uLong nNextChPos; - sal_uInt32 nNextCh; // current character codepoint in UTF32 for the "lex" + rtl_TextEncoding eSrcEnc; // Source encoding + sal_uLong nNextChPos; + sal_uInt32 nNextCh; // current character codepoint in UTF32 for the "lex" bool bUCS2BSrcEnc : 1; // or as big-endian UCS2 bool bSwitchToUCS2 : 1; // switching is allowed - bool bRTF_InTextRead : 1; // only for RTF-Parser!!! struct TokenStackType @@ -72,28 +72,23 @@ protected: OUString sToken; long nTokenValue; bool bTokenHasValue; - int nTokenId; - - TokenStackType() - : nTokenValue(0) - , bTokenHasValue(false) - , nTokenId(0) - { - } + T nTokenId; + + TokenStackType(); }; // methods for Token stack - int SkipToken( short nCnt = -1 ); // "skip" n Tokens back + T SkipToken( short nCnt = -1 ); // "skip" n Tokens back TokenStackType* GetStackPtr( short nCnt ); // scan the next token: // work off Token stack and call GetNextToken_() if necessary. // That one is responsible for the recognition of new Tokens. - int GetNextToken(); - virtual int GetNextToken_() = 0; + T GetNextToken(); + virtual T GetNextToken_() = 0; // is called for each Token that is recognized in CallParser - virtual void NextToken( int nToken ); + virtual void NextToken( T nToken ); // at times of SvRefBase derivation, not everybody may delete virtual ~SvParser() override; @@ -110,63 +105,49 @@ public: virtual SvParserState CallParser() = 0; // calling of the parser - SvParserState GetStatus() const { return eState; } // StatusInfo + SvParserState GetStatus() const; // StatusInfo - sal_uLong GetLineNr() const { return nlLineNr; } - sal_uLong GetLinePos() const { return nlLinePos; } - void IncLineNr() { ++nlLineNr; } - sal_uLong IncLinePos() { return ++nlLinePos; } - inline void SetLineNr( sal_uLong nlNum ); // inline bottom - inline void SetLinePos( sal_uLong nlPos ); // inline bottom + sal_uLong GetLineNr() const; + sal_uLong GetLinePos() const; + void IncLineNr(); + sal_uLong IncLinePos(); + void SetLineNr( sal_uLong nlNum ); + void SetLinePos( sal_uLong nlPos ); sal_uInt32 GetNextChar(); // Return next Unicode codepoint in UTF32. void RereadLookahead(); - bool IsParserWorking() const { return SvParserState::Working == eState; } + bool IsParserWorking() const; - Link<LinkParamNone*,void> GetAsynchCallLink() const - { return LINK( const_cast<SvParser*>(this), SvParser, NewDataRead ); } + Link<LinkParamNone*,void> GetAsynchCallLink() const; // for asynchronous reading from the SvStream - void SaveState( int nToken ); + void SaveState( T nToken ); void RestoreState(); - virtual void Continue( int nToken ); + virtual void Continue( T nToken ); // Set/get source encoding. The UCS2BEncoding flag is valid if source // encoding is UCS2. It specifies a big endian encoding. void SetSrcEncoding( rtl_TextEncoding eSrcEnc ); - rtl_TextEncoding GetSrcEncoding() const { return eSrcEnc; } + rtl_TextEncoding GetSrcEncoding() const; // May the character set be switched to UCS/2, if a BOM // is in the first two characters of the stream? - void SetSwitchToUCS2( bool bSet ) { bSwitchToUCS2 = bSet; } - bool IsSwitchToUCS2() const { return bSwitchToUCS2; } + void SetSwitchToUCS2( bool bSet ); + bool IsSwitchToUCS2() const; // how many bytes a character consists of - inline sal_uInt16 GetCharSize() const; + sal_uInt16 GetCharSize() const; - int GetSaveToken() const; + T GetSaveToken() const; +}; - // build a Which-Map 'rWhichMap' from an array of WhichIds - // 'pWhichIds'. It has the length 'nWhichIds'. - // The WhichMap is not deleted. - static void BuildWhichTable( std::vector<sal_uInt16> &rWhichMap, +// build a Which-Map 'rWhichMap' from an array of WhichIds +// 'pWhichIds'. It has the length 'nWhichIds'. +// The WhichMap is not deleted. +SVT_DLLPUBLIC void BuildWhichTable( std::vector<sal_uInt16> &rWhichMap, sal_uInt16 *pWhichIds, sal_uInt16 nWhichIds ); -}; - - -inline void SvParser::SetLineNr( sal_uLong nlNum ) -{ nlLineNr = nlNum; } - -inline void SvParser::SetLinePos( sal_uLong nlPos ) -{ nlLinePos = nlPos; } - -inline sal_uInt16 SvParser::GetCharSize() const -{ - return (RTL_TEXTENCODING_UCS2 == eSrcEnc) ? 2 : 1; -} - /*======================================================================== * diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index b1f5f408bdc6..9d768d53cee3 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -949,7 +949,7 @@ void ScHTMLLayoutParser::TableDataOn( HtmlImportInfo* pInfo ) TableOn( pInfo ); } bInCell = true; - bool bHorJustifyCenterTH = (pInfo->nToken == HTML_TABLEHEADER_ON); + bool bHorJustifyCenterTH = (pInfo->nToken == HtmlTokenId::TABLEHEADER_ON); const HTMLOptions& rOptions = static_cast<HTMLParser*>(pInfo->pParser)->GetOptions(); for (const auto & rOption : rOptions) { @@ -1070,7 +1070,7 @@ void ScHTMLLayoutParser::TableOn( HtmlImportInfo* pInfo ) nTableWidth = nLastWidth / static_cast<sal_uInt16>((nMaxCol - nColCntStart)); } nLastWidth = nTableWidth; - if ( pInfo->nToken == HTML_TABLE_ON ) + if ( pInfo->nToken == HtmlTokenId::TABLE_ON ) { // It can still be TD or TH, if we didn't have a TABLE earlier const HTMLOptions& rOptions = static_cast<HTMLParser*>(pInfo->pParser)->GetOptions(); for (const auto & rOption : rOptions) @@ -1129,7 +1129,7 @@ void ScHTMLLayoutParser::TableOn( HtmlImportInfo* pInfo ) if (nMaxTable > 0) nOffsetTolerance = SC_HTML_OFFSET_TOLERANCE_LARGE; nTableWidth = 0; - if ( pInfo->nToken == HTML_TABLE_ON ) + if ( pInfo->nToken == HtmlTokenId::TABLE_ON ) { // It can still be TD or TH, if we didn't have a TABLE earlier const HTMLOptions& rOptions = static_cast<HTMLParser*>(pInfo->pParser)->GetOptions(); @@ -1524,7 +1524,7 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) bool bSetLastToken = true; switch ( pInfo->nToken ) { - case HTML_META: + case HtmlTokenId::META: { HTMLParser* pParser = static_cast<HTMLParser*>(pInfo->pParser); uno::Reference<document::XDocumentPropertiesSupplier> xDPS( @@ -1534,13 +1534,13 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) mpDoc->GetDocumentShell()->GetHeaderAttributes() ); } break; - case HTML_TITLE_ON: + case HtmlTokenId::TITLE_ON: { bInTitle = true; aString.clear(); } break; - case HTML_TITLE_OFF: + case HtmlTokenId::TITLE_OFF: { if ( bInTitle && !aString.isEmpty() ) { @@ -1554,17 +1554,17 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) bInTitle = false; } break; - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: { TableOn( pInfo ); } break; - case HTML_COL_ON: + case HtmlTokenId::COL_ON: { ColOn( pInfo ); } break; - case HTML_TABLEHEADER_ON: // Opens row + case HtmlTokenId::TABLEHEADER_ON: // Opens row { if ( bInCell ) CloseEntry( pInfo ); @@ -1573,54 +1573,54 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT) ); SAL_FALLTHROUGH; } - case HTML_TABLEDATA_ON: // Opens cell + case HtmlTokenId::TABLEDATA_ON: // Opens cell { TableDataOn( pInfo ); } break; - case HTML_TABLEHEADER_OFF: - case HTML_TABLEDATA_OFF: // Closes cell + case HtmlTokenId::TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: // Closes cell { TableDataOff( pInfo ); } break; - case HTML_TABLEROW_ON: // Before first cell in row + case HtmlTokenId::TABLEROW_ON: // Before first cell in row { TableRowOn( pInfo ); } break; - case HTML_TABLEROW_OFF: // After last cell in row + case HtmlTokenId::TABLEROW_OFF: // After last cell in row { TableRowOff( pInfo ); } break; - case HTML_TABLE_OFF: + case HtmlTokenId::TABLE_OFF: { TableOff( pInfo ); } break; - case HTML_IMAGE: + case HtmlTokenId::IMAGE: { Image( pInfo ); } break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: { // We continue vertically after an image if ( pActEntry->maImageList.size() > 0 ) pActEntry->maImageList.back()->nDir = nVertical; } break; - case HTML_ANCHOR_ON: + case HtmlTokenId::ANCHOR_ON: { AnchorOn( pInfo ); } break; - case HTML_FONT_ON : + case HtmlTokenId::FONT_ON : { FontOn( pInfo ); } break; - case HTML_BIGPRINT_ON : + case HtmlTokenId::BIGPRINT_ON : { // TODO: Remember current font size and increase by 1 if ( IsAtBeginningOfText( pInfo ) ) @@ -1628,7 +1628,7 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) maFontHeights[3], 100, ATTR_FONT_HEIGHT ) ); } break; - case HTML_SMALLPRINT_ON : + case HtmlTokenId::SMALLPRINT_ON : { // TODO: Remember current font size and decrease by 1 if ( IsAtBeginningOfText( pInfo ) ) @@ -1636,28 +1636,28 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) maFontHeights[0], 100, ATTR_FONT_HEIGHT ) ); } break; - case HTML_BOLD_ON : - case HTML_STRONG_ON : + case HtmlTokenId::BOLD_ON : + case HtmlTokenId::STRONG_ON : { if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); } break; - case HTML_ITALIC_ON : - case HTML_EMPHASIS_ON : - case HTML_ADDRESS_ON : - case HTML_BLOCKQUOTE_ON : - case HTML_BLOCKQUOTE30_ON : - case HTML_CITIATION_ON : - case HTML_VARIABLE_ON : + case HtmlTokenId::ITALIC_ON : + case HtmlTokenId::EMPHASIS_ON : + case HtmlTokenId::ADDRESS_ON : + case HtmlTokenId::BLOCKQUOTE_ON : + case HtmlTokenId::BLOCKQUOTE30_ON : + case HtmlTokenId::CITIATION_ON : + case HtmlTokenId::VARIABLE_ON : { if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); } break; - case HTML_DEFINSTANCE_ON : + case HtmlTokenId::DEFINSTANCE_ON : { if ( IsAtBeginningOfText( pInfo ) ) { @@ -1668,26 +1668,26 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) } } break; - case HTML_UNDERLINE_ON : + case HtmlTokenId::UNDERLINE_ON : { if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxUnderlineItem( LINESTYLE_SINGLE, ATTR_FONT_UNDERLINE ) ); } break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: { if ( bInTitle ) aString += pInfo->aText; } break; default: - { // Don't set nLastToken! + { // Don't set nHtmlLastToken! bSetLastToken = false; } } if ( bSetLastToken ) - nLastToken = pInfo->nToken; + nHtmlLastToken = pInfo->nToken; } // HTML DATA QUERY PARSER @@ -2335,7 +2335,7 @@ bool ScHTMLTable::IsEmptyCell() const bool ScHTMLTable::IsSpaceCharInfo( const HtmlImportInfo& rInfo ) { - return (rInfo.nToken == HTML_TEXTTOKEN) && (rInfo.aText.getLength() == 1) && (rInfo.aText[ 0 ] == ' '); + return (rInfo.nToken == HtmlTokenId::TEXTTOKEN) && (rInfo.aText.getLength() == 1) && (rInfo.aText[ 0 ] == ' '); } ScHTMLTable::ScHTMLEntryPtr ScHTMLTable::CreateEntry() const @@ -2531,7 +2531,7 @@ void ScHTMLTable::ImplDataOff() void ScHTMLTable::ProcessFormatOptions( SfxItemSet& rItemSet, const HtmlImportInfo& rInfo ) { // special handling for table header cells - if( rInfo.nToken == HTML_TABLEHEADER_ON ) + if( rInfo.nToken == HtmlTokenId::TABLEHEADER_ON ) { rItemSet.Put( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); rItemSet.Put( SvxHorJustifyItem( SvxCellHorJustify::Center, ATTR_HOR_JUSTIFY ) ); @@ -2876,80 +2876,81 @@ void ScHTMLQueryParser::ProcessToken( const HtmlImportInfo& rInfo ) switch( rInfo.nToken ) { // --- meta data --- - case HTML_META: MetaOn( rInfo ); break; // <meta> + case HtmlTokenId::META: MetaOn( rInfo ); break; // <meta> // --- title handling --- - case HTML_TITLE_ON: TitleOn( rInfo ); break; // <title> - case HTML_TITLE_OFF: TitleOff( rInfo ); break; // </title> + case HtmlTokenId::TITLE_ON: TitleOn( rInfo ); break; // <title> + case HtmlTokenId::TITLE_OFF: TitleOff( rInfo ); break; // </title> - case HTML_STYLE_ON: break; - case HTML_STYLE_OFF: ParseStyle(rInfo.aText); break; + case HtmlTokenId::STYLE_ON: break; + case HtmlTokenId::STYLE_OFF: ParseStyle(rInfo.aText); break; // --- body handling --- - case HTML_BODY_ON: mpCurrTable->BodyOn( rInfo ); break; // <body> - case HTML_BODY_OFF: mpCurrTable->BodyOff( rInfo ); break; // </body> + case HtmlTokenId::BODY_ON: mpCurrTable->BodyOn( rInfo ); break; // <body> + case HtmlTokenId::BODY_OFF: mpCurrTable->BodyOff( rInfo ); break; // </body> // --- insert text --- - case HTML_TEXTTOKEN: InsertText( rInfo ); break; // any text - case HTML_LINEBREAK: mpCurrTable->BreakOn(); break; // <br> - case HTML_HEAD1_ON: // <h1> - case HTML_HEAD2_ON: // <h2> - case HTML_HEAD3_ON: // <h3> - case HTML_HEAD4_ON: // <h4> - case HTML_HEAD5_ON: // <h5> - case HTML_HEAD6_ON: // <h6> - case HTML_PARABREAK_ON: mpCurrTable->HeadingOn(); break; // <p> + case HtmlTokenId::TEXTTOKEN: InsertText( rInfo ); break; // any text + case HtmlTokenId::LINEBREAK: mpCurrTable->BreakOn(); break; // <br> + case HtmlTokenId::HEAD1_ON: // <h1> + case HtmlTokenId::HEAD2_ON: // <h2> + case HtmlTokenId::HEAD3_ON: // <h3> + case HtmlTokenId::HEAD4_ON: // <h4> + case HtmlTokenId::HEAD5_ON: // <h5> + case HtmlTokenId::HEAD6_ON: // <h6> + case HtmlTokenId::PARABREAK_ON: mpCurrTable->HeadingOn(); break; // <p> // --- misc. contents --- - case HTML_ANCHOR_ON: mpCurrTable->AnchorOn(); break; // <a> + case HtmlTokenId::ANCHOR_ON: mpCurrTable->AnchorOn(); break; // <a> // --- table handling --- - case HTML_TABLE_ON: TableOn( rInfo ); break; // <table> - case HTML_TABLE_OFF: TableOff( rInfo ); break; // </table> - case HTML_TABLEROW_ON: mpCurrTable->RowOn( rInfo ); break; // <tr> - case HTML_TABLEROW_OFF: mpCurrTable->RowOff( rInfo ); break; // </tr> - case HTML_TABLEHEADER_ON: // <th> - case HTML_TABLEDATA_ON: mpCurrTable->DataOn( rInfo ); break; // <td> - case HTML_TABLEHEADER_OFF: // </th> - case HTML_TABLEDATA_OFF: mpCurrTable->DataOff( rInfo ); break; // </td> - case HTML_PREFORMTXT_ON: PreOn( rInfo ); break; // <pre> - case HTML_PREFORMTXT_OFF: PreOff( rInfo ); break; // </pre> + case HtmlTokenId::TABLE_ON: TableOn( rInfo ); break; // <table> + case HtmlTokenId::TABLE_OFF: TableOff( rInfo ); break; // </table> + case HtmlTokenId::TABLEROW_ON: mpCurrTable->RowOn( rInfo ); break; // <tr> + case HtmlTokenId::TABLEROW_OFF: mpCurrTable->RowOff( rInfo ); break; // </tr> + case HtmlTokenId::TABLEHEADER_ON: // <th> + case HtmlTokenId::TABLEDATA_ON: mpCurrTable->DataOn( rInfo ); break; // <td> + case HtmlTokenId::TABLEHEADER_OFF: // </th> + case HtmlTokenId::TABLEDATA_OFF: mpCurrTable->DataOff( rInfo ); break; // </td> + case HtmlTokenId::PREFORMTXT_ON: PreOn( rInfo ); break; // <pre> + case HtmlTokenId::PREFORMTXT_OFF: PreOff( rInfo ); break; // </pre> // --- formatting --- - case HTML_FONT_ON: FontOn( rInfo ); break; // <font> + case HtmlTokenId::FONT_ON: FontOn( rInfo ); break; // <font> - case HTML_BIGPRINT_ON: // <big> + case HtmlTokenId::BIGPRINT_ON: // <big> //! TODO: store current font size, use following size mpCurrTable->PutItem( SvxFontHeightItem( maFontHeights[ 3 ], 100, ATTR_FONT_HEIGHT ) ); break; - case HTML_SMALLPRINT_ON: // <small> + case HtmlTokenId::SMALLPRINT_ON: // <small> //! TODO: store current font size, use preceding size mpCurrTable->PutItem( SvxFontHeightItem( maFontHeights[ 0 ], 100, ATTR_FONT_HEIGHT ) ); break; - case HTML_BOLD_ON: // <b> - case HTML_STRONG_ON: // <strong> + case HtmlTokenId::BOLD_ON: // <b> + case HtmlTokenId::STRONG_ON: // <strong> mpCurrTable->PutItem( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); break; - case HTML_ITALIC_ON: // <i> - case HTML_EMPHASIS_ON: // <em> - case HTML_ADDRESS_ON: // <address> - case HTML_BLOCKQUOTE_ON: // <blockquote> - case HTML_BLOCKQUOTE30_ON: // <bq> - case HTML_CITIATION_ON: // <cite> - case HTML_VARIABLE_ON: // <var> + case HtmlTokenId::ITALIC_ON: // <i> + case HtmlTokenId::EMPHASIS_ON: // <em> + case HtmlTokenId::ADDRESS_ON: // <address> + case HtmlTokenId::BLOCKQUOTE_ON: // <blockquote> + case HtmlTokenId::BLOCKQUOTE30_ON: // <bq> + case HtmlTokenId::CITIATION_ON: // <cite> + case HtmlTokenId::VARIABLE_ON: // <var> mpCurrTable->PutItem( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); break; - case HTML_DEFINSTANCE_ON: // <dfn> + case HtmlTokenId::DEFINSTANCE_ON: // <dfn> mpCurrTable->PutItem( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); mpCurrTable->PutItem( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); break; - case HTML_UNDERLINE_ON: // <u> + case HtmlTokenId::UNDERLINE_ON: // <u> mpCurrTable->PutItem( SvxUnderlineItem( LINESTYLE_SINGLE, ATTR_FONT_UNDERLINE ) ); break; + default: break; } } diff --git a/sc/source/filter/inc/eeparser.hxx b/sc/source/filter/inc/eeparser.hxx index 88105a159f9f..b60e633fd9ba 100644 --- a/sc/source/filter/inc/eeparser.hxx +++ b/sc/source/filter/inc/eeparser.hxx @@ -105,7 +105,8 @@ protected: ::std::vector< ScEEParseEntry* > maList; ScEEParseEntry* pActEntry; ColWidthsMap maColWidths; - int nLastToken; + int nRtfLastToken; + HtmlTokenId nHtmlLastToken; SCCOL nColCnt; SCROW nRowCnt; SCCOL nColMax; diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx index 28bb57bde052..0e6eab3bc56c 100644 --- a/sc/source/filter/rtf/eeimpars.cxx +++ b/sc/source/filter/rtf/eeimpars.cxx @@ -31,6 +31,7 @@ #include <svtools/htmlcfg.hxx> #include <sfx2/sfxhtml.hxx> #include <svtools/parhtml.hxx> +#include <svtools/htmltokn.h> #include <svl/zforlist.hxx> #include <vcl/virdev.hxx> #include <vcl/svapp.hxx> @@ -610,7 +611,8 @@ ScEEParser::ScEEParser( EditEngine* pEditP ) : pEdit( pEditP ), pPool( EditEngine::CreatePool() ), pDocPool( new ScDocumentPool ), - nLastToken(0), + nRtfLastToken(0), + nHtmlLastToken(HtmlTokenId::NONE), nColCnt(0), nRowCnt(0), nColMax(0), diff --git a/sc/source/filter/rtf/rtfparse.cxx b/sc/source/filter/rtf/rtfparse.cxx index 321bf8ec728b..d5262fd13a16 100644 --- a/sc/source/filter/rtf/rtfparse.cxx +++ b/sc/source/filter/rtf/rtfparse.cxx @@ -60,7 +60,7 @@ sal_uLong ScRTFParser::Read( SvStream& rStream, const OUString& rBaseURL ) Link<RtfImportInfo&,void> aOldLink = pEdit->GetRtfImportHdl(); pEdit->SetRtfImportHdl( LINK( this, ScRTFParser, RTFImportHdl ) ); sal_uLong nErr = pEdit->Read( rStream, rBaseURL, EE_FORMAT_RTF ); - if ( nLastToken == RTF_PAR ) + if ( nRtfLastToken == RTF_PAR ) { if ( !maList.empty() ) { @@ -274,14 +274,14 @@ void ScRTFParser::ProcToken( RtfImportInfo* pInfo ) nColCnt = 0; maDefaultList.clear(); pDefMerge = nullptr; - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; mnCurPos = 0; } break; case RTF_CLMGF: // The first cell of cells to be merged { pDefMerge = pInsDefault; - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; case RTF_CLMRG: // A cell to be merged with the preceding cell @@ -295,7 +295,7 @@ void ScRTFParser::ProcToken( RtfImportInfo* pInfo ) if ( pDefMerge ) // Else broken RTF pDefMerge->nColOverlap++; // multiple successive ones possible pInsDefault->nColOverlap = 0; // Flag: ignore these - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; case RTF_CELLX: // closes cell default @@ -308,17 +308,17 @@ void ScRTFParser::ProcToken( RtfImportInfo* pInfo ) pInsDefault = new ScRTFCellDefault( pPool ); if ( ++nColCnt > nColMax ) nColMax = nColCnt; - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; case RTF_INTBL: // before the first RTF_CELL { // Once over NextToken and once over UnknownAttrToken // or e.g. \intbl ... \cell \pard \intbl ... \cell - if ( nLastToken != RTF_INTBL && nLastToken != RTF_CELL && nLastToken != RTF_PAR ) + if ( nRtfLastToken != RTF_INTBL && nRtfLastToken != RTF_CELL && nRtfLastToken != RTF_PAR ) { NewCellRow( pInfo ); - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } } break; @@ -360,13 +360,13 @@ void ScRTFParser::ProcToken( RtfImportInfo* pInfo ) if (!maDefaultList.empty() && (mnCurPos+1) < maDefaultList.size()) pActDefault = maDefaultList[++mnCurPos].get(); - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; case RTF_ROW: // denotes the end of a row { NextRow(); - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; case RTF_PAR: // Paragraph @@ -381,11 +381,11 @@ void ScRTFParser::ProcToken( RtfImportInfo* pInfo ) NewActEntry( pActEntry ); // new pActEntry NextRow(); } - nLastToken = pInfo->nToken; + nRtfLastToken = pInfo->nToken; } break; default: - { // do not set nLastToken + { // do not set nRtfLastToken switch ( pInfo->nToken & ~(0xff | RTF_TABLEDEF) ) { case RTF_SHADINGDEF: diff --git a/svtools/source/svhtml/htmlkywd.cxx b/svtools/source/svhtml/htmlkywd.cxx index 599a3c205586..339cb36c0737 100644 --- a/svtools/source/svhtml/htmlkywd.cxx +++ b/svtools/source/svhtml/htmlkywd.cxx @@ -34,128 +34,128 @@ struct HTML_TokenEntry const sal_Char *sToken; const OUString *pUToken; }; - int nToken; + HtmlTokenId nToken; }; // Flag: RTF token table has already been sorted static bool bSortKeyWords = false; static HTML_TokenEntry aHTMLTokenTab[] = { - {{OOO_STRING_SVTOOLS_HTML_area}, HTML_AREA}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_base}, HTML_BASE}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_comment}, HTML_COMMENT}, - {{OOO_STRING_SVTOOLS_HTML_doctype}, HTML_DOCTYPE}, - {{OOO_STRING_SVTOOLS_HTML_embed}, HTML_EMBED}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_horzrule}, HTML_HORZRULE}, - {{OOO_STRING_SVTOOLS_HTML_image}, HTML_IMAGE}, - {{OOO_STRING_SVTOOLS_HTML_input}, HTML_INPUT}, - {{OOO_STRING_SVTOOLS_HTML_linebreak}, HTML_LINEBREAK}, - {{OOO_STRING_SVTOOLS_HTML_link}, HTML_LINK}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_meta}, HTML_META}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_option}, HTML_OPTION}, - {{OOO_STRING_SVTOOLS_HTML_param}, HTML_PARAM}, // HotJava - {{OOO_STRING_SVTOOLS_HTML_spacer}, HTML_SPACER}, // Netscape 3.0b5 - - {{OOO_STRING_SVTOOLS_HTML_abbreviation}, HTML_ABBREVIATION_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_acronym}, HTML_ACRONYM_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_address}, HTML_ADDRESS_ON}, - {{OOO_STRING_SVTOOLS_HTML_anchor}, HTML_ANCHOR_ON}, - {{OOO_STRING_SVTOOLS_HTML_applet}, HTML_APPLET_ON}, // HotJava - {{OOO_STRING_SVTOOLS_HTML_author}, HTML_AUTHOR_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_banner}, HTML_BANNER_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_basefont}, HTML_BASEFONT_ON}, // Netscape - {{OOO_STRING_SVTOOLS_HTML_bigprint}, HTML_BIGPRINT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_blink}, HTML_BLINK_ON}, // Netscape - {{OOO_STRING_SVTOOLS_HTML_blockquote}, HTML_BLOCKQUOTE_ON}, - {{OOO_STRING_SVTOOLS_HTML_blockquote30}, HTML_BLOCKQUOTE30_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_body}, HTML_BODY_ON}, - {{OOO_STRING_SVTOOLS_HTML_bold}, HTML_BOLD_ON}, - {{OOO_STRING_SVTOOLS_HTML_caption}, HTML_CAPTION_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_center}, HTML_CENTER_ON}, // Netscape - {{OOO_STRING_SVTOOLS_HTML_citiation}, HTML_CITIATION_ON}, - {{OOO_STRING_SVTOOLS_HTML_col}, HTML_COL_ON}, // HTML 3 Table Model Draft - {{OOO_STRING_SVTOOLS_HTML_colgroup}, HTML_COLGROUP_ON}, // HTML 3 Table Model Draft - {{OOO_STRING_SVTOOLS_HTML_code}, HTML_CODE_ON}, - {{OOO_STRING_SVTOOLS_HTML_credit}, HTML_CREDIT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_dd}, HTML_DD_ON}, - {{OOO_STRING_SVTOOLS_HTML_deflist}, HTML_DEFLIST_ON}, - {{OOO_STRING_SVTOOLS_HTML_deletedtext}, HTML_DELETEDTEXT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_dirlist}, HTML_DIRLIST_ON}, - {{OOO_STRING_SVTOOLS_HTML_division}, HTML_DIVISION_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_dt}, HTML_DT_ON}, - {{OOO_STRING_SVTOOLS_HTML_emphasis}, HTML_EMPHASIS_ON}, - {{OOO_STRING_SVTOOLS_HTML_figure}, HTML_FIGURE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_font}, HTML_FONT_ON}, // Netscape - {{OOO_STRING_SVTOOLS_HTML_footnote}, HTML_FOOTNOTE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_form}, HTML_FORM_ON}, - {{OOO_STRING_SVTOOLS_HTML_frame}, HTML_FRAME_ON}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_frameset}, HTML_FRAMESET_ON}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_head}, HTML_HEAD_ON}, - {{OOO_STRING_SVTOOLS_HTML_head1}, HTML_HEAD1_ON}, - {{OOO_STRING_SVTOOLS_HTML_head2}, HTML_HEAD2_ON}, - {{OOO_STRING_SVTOOLS_HTML_head3}, HTML_HEAD3_ON}, - {{OOO_STRING_SVTOOLS_HTML_head4}, HTML_HEAD4_ON}, - {{OOO_STRING_SVTOOLS_HTML_head5}, HTML_HEAD5_ON}, - {{OOO_STRING_SVTOOLS_HTML_head6}, HTML_HEAD6_ON}, - {{OOO_STRING_SVTOOLS_HTML_html}, HTML_HTML_ON}, - {{OOO_STRING_SVTOOLS_HTML_iframe}, HTML_IFRAME_ON}, // IE 3.0b2 - {{OOO_STRING_SVTOOLS_HTML_insertedtext}, HTML_INSERTEDTEXT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_italic}, HTML_ITALIC_ON}, - {{OOO_STRING_SVTOOLS_HTML_keyboard}, HTML_KEYBOARD_ON}, - {{OOO_STRING_SVTOOLS_HTML_language}, HTML_LANGUAGE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_li}, HTML_LI_ON}, - {{OOO_STRING_SVTOOLS_HTML_listheader}, HTML_LISTHEADER_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_map}, HTML_MAP_ON}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_menulist}, HTML_MENULIST_ON}, - {{OOO_STRING_SVTOOLS_HTML_multicol}, HTML_MULTICOL_ON}, // Netscape 3.0b5 - {{OOO_STRING_SVTOOLS_HTML_nobr}, HTML_NOBR_ON}, // Netscape - {{OOO_STRING_SVTOOLS_HTML_noembed}, HTML_NOEMBED_ON}, // Netscape 2.0 ??? - {{OOO_STRING_SVTOOLS_HTML_noframe}, HTML_NOFRAMES_ON}, // Netscape 2.0 ??? - {{OOO_STRING_SVTOOLS_HTML_noframes}, HTML_NOFRAMES_ON}, // Netscape 2.0 - {{OOO_STRING_SVTOOLS_HTML_noscript}, HTML_NOSCRIPT_ON}, // Netscape 3.0 - {{OOO_STRING_SVTOOLS_HTML_note}, HTML_NOTE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_object}, HTML_OBJECT_ON}, - {{OOO_STRING_SVTOOLS_HTML_orderlist}, HTML_ORDERLIST_ON}, - {{OOO_STRING_SVTOOLS_HTML_parabreak}, HTML_PARABREAK_ON}, - {{OOO_STRING_SVTOOLS_HTML_person}, HTML_PERSON_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_plaintext}, HTML_PLAINTEXT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_preformtxt}, HTML_PREFORMTXT_ON}, - {{OOO_STRING_SVTOOLS_HTML_sample}, HTML_SAMPLE_ON}, - {{OOO_STRING_SVTOOLS_HTML_script}, HTML_SCRIPT_ON}, // HTML 3.2 - {{OOO_STRING_SVTOOLS_HTML_select}, HTML_SELECT_ON}, - {{OOO_STRING_SVTOOLS_HTML_shortquote}, HTML_SHORTQUOTE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_smallprint}, HTML_SMALLPRINT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_span}, HTML_SPAN_ON}, // Style Sheets - {{OOO_STRING_SVTOOLS_HTML_strikethrough},HTML_STRIKETHROUGH_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_strong}, HTML_STRONG_ON}, - {{OOO_STRING_SVTOOLS_HTML_style}, HTML_STYLE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_subscript}, HTML_SUBSCRIPT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_superscript}, HTML_SUPERSCRIPT_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_table}, HTML_TABLE_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_tabledata}, HTML_TABLEDATA_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_tableheader}, HTML_TABLEHEADER_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_tablerow}, HTML_TABLEROW_ON}, // HTML 3.0 - {{OOO_STRING_SVTOOLS_HTML_tbody}, HTML_TBODY_ON}, // HTML 3 Table Model Draft - {{OOO_STRING_SVTOOLS_HTML_teletype}, HTML_TELETYPE_ON}, - {{OOO_STRING_SVTOOLS_HTML_textarea}, HTML_TEXTAREA_ON}, - {{OOO_STRING_SVTOOLS_HTML_tfoot}, HTML_TFOOT_ON}, // HTML 3 Table Model Draft - {{OOO_STRING_SVTOOLS_HTML_thead}, HTML_THEAD_ON}, // HTML 3 Table Model Draft - {{OOO_STRING_SVTOOLS_HTML_title}, HTML_TITLE_ON}, - {{OOO_STRING_SVTOOLS_HTML_underline}, HTML_UNDERLINE_ON}, - {{OOO_STRING_SVTOOLS_HTML_unorderlist}, HTML_UNORDERLIST_ON}, - {{OOO_STRING_SVTOOLS_HTML_variable}, HTML_VARIABLE_ON}, - - {{OOO_STRING_SVTOOLS_HTML_xmp}, HTML_XMP_ON}, - {{OOO_STRING_SVTOOLS_HTML_listing}, HTML_LISTING_ON}, - - {{OOO_STRING_SVTOOLS_HTML_definstance}, HTML_DEFINSTANCE_ON}, - {{OOO_STRING_SVTOOLS_HTML_strike}, HTML_STRIKE_ON}, - - {{OOO_STRING_SVTOOLS_HTML_comment2}, HTML_COMMENT2_ON}, - {{OOO_STRING_SVTOOLS_HTML_marquee}, HTML_MARQUEE_ON}, - {{OOO_STRING_SVTOOLS_HTML_plaintext2}, HTML_PLAINTEXT2_ON}, - - {{OOO_STRING_SVTOOLS_HTML_sdfield}, HTML_SDFIELD_ON} + {{OOO_STRING_SVTOOLS_HTML_area}, HtmlTokenId::AREA}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_base}, HtmlTokenId::BASE}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_comment}, HtmlTokenId::COMMENT}, + {{OOO_STRING_SVTOOLS_HTML_doctype}, HtmlTokenId::DOCTYPE}, + {{OOO_STRING_SVTOOLS_HTML_embed}, HtmlTokenId::EMBED}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_horzrule}, HtmlTokenId::HORZRULE}, + {{OOO_STRING_SVTOOLS_HTML_image}, HtmlTokenId::IMAGE}, + {{OOO_STRING_SVTOOLS_HTML_input}, HtmlTokenId::INPUT}, + {{OOO_STRING_SVTOOLS_HTML_linebreak}, HtmlTokenId::LINEBREAK}, + {{OOO_STRING_SVTOOLS_HTML_link}, HtmlTokenId::LINK}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_meta}, HtmlTokenId::META}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_option}, HtmlTokenId::OPTION}, + {{OOO_STRING_SVTOOLS_HTML_param}, HtmlTokenId::PARAM}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_spacer}, HtmlTokenId::SPACER}, // Netscape 3.0b5 + + {{OOO_STRING_SVTOOLS_HTML_abbreviation}, HtmlTokenId::ABBREVIATION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_acronym}, HtmlTokenId::ACRONYM_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_address}, HtmlTokenId::ADDRESS_ON}, + {{OOO_STRING_SVTOOLS_HTML_anchor}, HtmlTokenId::ANCHOR_ON}, + {{OOO_STRING_SVTOOLS_HTML_applet}, HtmlTokenId::APPLET_ON}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_author}, HtmlTokenId::AUTHOR_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_banner}, HtmlTokenId::BANNER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_basefont}, HtmlTokenId::BASEFONT_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_bigprint}, HtmlTokenId::BIGPRINT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_blink}, HtmlTokenId::BLINK_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_blockquote}, HtmlTokenId::BLOCKQUOTE_ON}, + {{OOO_STRING_SVTOOLS_HTML_blockquote30}, HtmlTokenId::BLOCKQUOTE30_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_body}, HtmlTokenId::BODY_ON}, + {{OOO_STRING_SVTOOLS_HTML_bold}, HtmlTokenId::BOLD_ON}, + {{OOO_STRING_SVTOOLS_HTML_caption}, HtmlTokenId::CAPTION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_center}, HtmlTokenId::CENTER_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_citiation}, HtmlTokenId::CITIATION_ON}, + {{OOO_STRING_SVTOOLS_HTML_col}, HtmlTokenId::COL_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_colgroup}, HtmlTokenId::COLGROUP_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_code}, HtmlTokenId::CODE_ON}, + {{OOO_STRING_SVTOOLS_HTML_credit}, HtmlTokenId::CREDIT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dd}, HtmlTokenId::DD_ON}, + {{OOO_STRING_SVTOOLS_HTML_deflist}, HtmlTokenId::DEFLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_deletedtext}, HtmlTokenId::DELETEDTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dirlist}, HtmlTokenId::DIRLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_division}, HtmlTokenId::DIVISION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dt}, HtmlTokenId::DT_ON}, + {{OOO_STRING_SVTOOLS_HTML_emphasis}, HtmlTokenId::EMPHASIS_ON}, + {{OOO_STRING_SVTOOLS_HTML_figure}, HtmlTokenId::FIGURE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_font}, HtmlTokenId::FONT_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_footnote}, HtmlTokenId::FOOTNOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_form}, HtmlTokenId::FORM_ON}, + {{OOO_STRING_SVTOOLS_HTML_frame}, HtmlTokenId::FRAME_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_frameset}, HtmlTokenId::FRAMESET_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_head}, HtmlTokenId::HEAD_ON}, + {{OOO_STRING_SVTOOLS_HTML_head1}, HtmlTokenId::HEAD1_ON}, + {{OOO_STRING_SVTOOLS_HTML_head2}, HtmlTokenId::HEAD2_ON}, + {{OOO_STRING_SVTOOLS_HTML_head3}, HtmlTokenId::HEAD3_ON}, + {{OOO_STRING_SVTOOLS_HTML_head4}, HtmlTokenId::HEAD4_ON}, + {{OOO_STRING_SVTOOLS_HTML_head5}, HtmlTokenId::HEAD5_ON}, + {{OOO_STRING_SVTOOLS_HTML_head6}, HtmlTokenId::HEAD6_ON}, + {{OOO_STRING_SVTOOLS_HTML_html}, HtmlTokenId::HTML_ON}, + {{OOO_STRING_SVTOOLS_HTML_iframe}, HtmlTokenId::IFRAME_ON}, // IE 3.0b2 + {{OOO_STRING_SVTOOLS_HTML_insertedtext}, HtmlTokenId::INSERTEDTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_italic}, HtmlTokenId::ITALIC_ON}, + {{OOO_STRING_SVTOOLS_HTML_keyboard}, HtmlTokenId::KEYBOARD_ON}, + {{OOO_STRING_SVTOOLS_HTML_language}, HtmlTokenId::LANGUAGE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_li}, HtmlTokenId::LI_ON}, + {{OOO_STRING_SVTOOLS_HTML_listheader}, HtmlTokenId::LISTHEADER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_map}, HtmlTokenId::MAP_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_menulist}, HtmlTokenId::MENULIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_multicol}, HtmlTokenId::MULTICOL_ON}, // Netscape 3.0b5 + {{OOO_STRING_SVTOOLS_HTML_nobr}, HtmlTokenId::NOBR_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_noembed}, HtmlTokenId::NOEMBED_ON}, // Netscape 2.0 ??? + {{OOO_STRING_SVTOOLS_HTML_noframe}, HtmlTokenId::NOFRAMES_ON}, // Netscape 2.0 ??? + {{OOO_STRING_SVTOOLS_HTML_noframes}, HtmlTokenId::NOFRAMES_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_noscript}, HtmlTokenId::NOSCRIPT_ON}, // Netscape 3.0 + {{OOO_STRING_SVTOOLS_HTML_note}, HtmlTokenId::NOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_object}, HtmlTokenId::OBJECT_ON}, + {{OOO_STRING_SVTOOLS_HTML_orderlist}, HtmlTokenId::ORDERLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_parabreak}, HtmlTokenId::PARABREAK_ON}, + {{OOO_STRING_SVTOOLS_HTML_person}, HtmlTokenId::PERSON_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_plaintext}, HtmlTokenId::PLAINTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_preformtxt}, HtmlTokenId::PREFORMTXT_ON}, + {{OOO_STRING_SVTOOLS_HTML_sample}, HtmlTokenId::SAMPLE_ON}, + {{OOO_STRING_SVTOOLS_HTML_script}, HtmlTokenId::SCRIPT_ON}, // HTML 3.2 + {{OOO_STRING_SVTOOLS_HTML_select}, HtmlTokenId::SELECT_ON}, + {{OOO_STRING_SVTOOLS_HTML_shortquote}, HtmlTokenId::SHORTQUOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_smallprint}, HtmlTokenId::SMALLPRINT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_span}, HtmlTokenId::SPAN_ON}, // Style Sheets + {{OOO_STRING_SVTOOLS_HTML_strikethrough}, HtmlTokenId::STRIKETHROUGH_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_strong}, HtmlTokenId::STRONG_ON}, + {{OOO_STRING_SVTOOLS_HTML_style}, HtmlTokenId::STYLE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_subscript}, HtmlTokenId::SUBSCRIPT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_superscript}, HtmlTokenId::SUPERSCRIPT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_table}, HtmlTokenId::TABLE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tabledata}, HtmlTokenId::TABLEDATA_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tableheader}, HtmlTokenId::TABLEHEADER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tablerow}, HtmlTokenId::TABLEROW_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tbody}, HtmlTokenId::TBODY_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_teletype}, HtmlTokenId::TELETYPE_ON}, + {{OOO_STRING_SVTOOLS_HTML_textarea}, HtmlTokenId::TEXTAREA_ON}, + {{OOO_STRING_SVTOOLS_HTML_tfoot}, HtmlTokenId::TFOOT_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_thead}, HtmlTokenId::THEAD_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_title}, HtmlTokenId::TITLE_ON}, + {{OOO_STRING_SVTOOLS_HTML_underline}, HtmlTokenId::UNDERLINE_ON}, + {{OOO_STRING_SVTOOLS_HTML_unorderlist}, HtmlTokenId::UNORDERLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_variable}, HtmlTokenId::VARIABLE_ON}, + + {{OOO_STRING_SVTOOLS_HTML_xmp}, HtmlTokenId::XMP_ON}, + {{OOO_STRING_SVTOOLS_HTML_listing}, HtmlTokenId::LISTING_ON}, + + {{OOO_STRING_SVTOOLS_HTML_definstance}, HtmlTokenId::DEFINSTANCE_ON}, + {{OOO_STRING_SVTOOLS_HTML_strike}, HtmlTokenId::STRIKE_ON}, + + {{OOO_STRING_SVTOOLS_HTML_comment2}, HtmlTokenId::COMMENT2_ON}, + {{OOO_STRING_SVTOOLS_HTML_marquee}, HtmlTokenId::MARQUEE_ON}, + {{OOO_STRING_SVTOOLS_HTML_plaintext2}, HtmlTokenId::PLAINTEXT2_ON}, + + {{OOO_STRING_SVTOOLS_HTML_sdfield}, HtmlTokenId::SDFIELD_ON} }; @@ -167,16 +167,16 @@ static int SAL_CALL HTMLKeyCompare( const void *pFirst, const void *pSecond) HTML_TokenEntry const * pFirstEntry = static_cast<HTML_TokenEntry const *>(pFirst); HTML_TokenEntry const * pSecondEntry = static_cast<HTML_TokenEntry const *>(pSecond); int nRet = 0; - if( -1 == pFirstEntry->nToken ) + if( HtmlTokenId::INVALID == pFirstEntry->nToken ) { - if( -1 == pSecondEntry->nToken ) + if( HtmlTokenId::INVALID == pSecondEntry->nToken ) nRet = pFirstEntry->pUToken->compareTo( *pSecondEntry->pUToken ); else nRet = pFirstEntry->pUToken->compareToAscii( pSecondEntry->sToken ); } else { - if( -1 == pSecondEntry->nToken ) + if( HtmlTokenId::INVALID == pSecondEntry->nToken ) nRet = -1 * pSecondEntry->pUToken->compareToAscii( pFirstEntry->sToken ); else nRet = strcmp( pFirstEntry->sToken, pSecondEntry->sToken ); @@ -187,7 +187,7 @@ static int SAL_CALL HTMLKeyCompare( const void *pFirst, const void *pSecond) } -int GetHTMLToken( const OUString& rName ) +HtmlTokenId GetHTMLToken( const OUString& rName ) { if( !bSortKeyWords ) { @@ -198,15 +198,15 @@ int GetHTMLToken( const OUString& rName ) bSortKeyWords = true; } - int nRet = 0; + HtmlTokenId nRet = HtmlTokenId::NONE; if( !rName.compareTo( OOO_STRING_SVTOOLS_HTML_comment, 3 ) ) - return HTML_COMMENT; + return HtmlTokenId::COMMENT; void* pFound; HTML_TokenEntry aSrch; aSrch.pUToken = &rName; - aSrch.nToken = -1; + aSrch.nToken = HtmlTokenId::INVALID; pFound = bsearch( &aSrch, static_cast<void*>(aHTMLTokenTab), @@ -732,7 +732,7 @@ HtmlOptionId GetHTMLOption( const OUString& rName ) void* pFound; HTML_TokenEntry aSrch; aSrch.pUToken = &rName; - aSrch.nToken = -1; + aSrch.nToken = HtmlTokenId::INVALID; if( nullptr != ( pFound = bsearch( &aSrch, static_cast<void*>(aHTMLOptionTab), diff --git a/svtools/source/svhtml/parhtml.cxx b/svtools/source/svhtml/parhtml.cxx index f0826f8acdde..c35856b9ba88 100644 --- a/svtools/source/svhtml/parhtml.cxx +++ b/svtools/source/svhtml/parhtml.cxx @@ -212,7 +212,7 @@ HTMLTableRules HTMLOption::GetTableRules() const } HTMLParser::HTMLParser( SvStream& rIn, bool bReadNewDoc ) : - SvParser( rIn ), + SvParser<HtmlTokenId>( rIn ), bNewDoc(bReadNewDoc), bIsInHeader(true), bIsInBody(false), @@ -227,7 +227,7 @@ HTMLParser::HTMLParser( SvStream& rIn, bool bReadNewDoc ) : bReadNextChar(false), bReadComment(false), nPre_LinePos(0), - mnPendingOffToken(0) + mnPendingOffToken(HtmlTokenId::NONE) { //#i76649, default to UTF-8 for HTML unless we know differently SetSrcEncoding(RTL_TEXTENCODING_UTF8); @@ -241,22 +241,22 @@ SvParserState HTMLParser::CallParser() { eState = SvParserState::Working; nNextCh = GetNextChar(); - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); nPre_LinePos = 0; bPre_IgnoreNewPara = false; AddFirstRef(); - Continue( 0 ); + Continue( HtmlTokenId::NONE ); if( SvParserState::Pending != eState ) ReleaseRef(); // Parser not needed anymore return eState; } -void HTMLParser::Continue( int nToken ) +void HTMLParser::Continue( HtmlTokenId nToken ) { - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); while( IsParserWorking() ) @@ -264,73 +264,73 @@ void HTMLParser::Continue( int nToken ) SaveState( nToken ); nToken = FilterToken( nToken ); - if( nToken ) + if( nToken != HtmlTokenId::NONE ) NextToken( nToken ); if( IsParserWorking() ) - SaveState( 0 ); // continue with new token + SaveState( HtmlTokenId::NONE ); // continue with new token nToken = GetNextToken(); } } -int HTMLParser::FilterToken( int nToken ) +HtmlTokenId HTMLParser::FilterToken( HtmlTokenId nToken ) { switch( nToken ) { - case sal_Unicode(EOF): - nToken = 0; + case HtmlTokenId(EOF): + nToken = HtmlTokenId::NONE; break; // don't pass - case HTML_HEAD_OFF: + case HtmlTokenId::HEAD_OFF: bIsInBody = true; bIsInHeader = false; break; - case HTML_HEAD_ON: + case HtmlTokenId::HEAD_ON: bIsInHeader = true; break; - case HTML_BODY_ON: + case HtmlTokenId::BODY_ON: bIsInHeader = false; bIsInBody = true; break; - case HTML_FRAMESET_ON: + case HtmlTokenId::FRAMESET_ON: bIsInHeader = false; bIsInBody = false; break; - case HTML_BODY_OFF: + case HtmlTokenId::BODY_OFF: bIsInBody = bReadPRE = bReadListing = bReadXMP = false; break; - case HTML_HTML_OFF: - nToken = 0; + case HtmlTokenId::HTML_OFF: + nToken = HtmlTokenId::NONE; bReadPRE = bReadListing = bReadXMP = false; - break; // HTML_ON hasn't been passed either ! + break; // HtmlTokenId::ON hasn't been passed either ! - case HTML_PREFORMTXT_ON: + case HtmlTokenId::PREFORMTXT_ON: StartPRE(); break; - case HTML_PREFORMTXT_OFF: + case HtmlTokenId::PREFORMTXT_OFF: FinishPRE(); break; - case HTML_LISTING_ON: + case HtmlTokenId::LISTING_ON: StartListing(); break; - case HTML_LISTING_OFF: + case HtmlTokenId::LISTING_OFF: FinishListing(); break; - case HTML_XMP_ON: + case HtmlTokenId::XMP_ON: StartXMP(); break; - case HTML_XMP_OFF: + case HtmlTokenId::XMP_OFF: FinishXMP(); break; @@ -355,7 +355,7 @@ int HTMLParser::FilterToken( int nToken ) #define HTML_ISPRINTABLE( c ) ( c >= 32 && c != 127) #define HTML_ISHEXDIGIT( c ) rtl::isAsciiHexDigit(c) -int HTMLParser::ScanText( const sal_Unicode cBreak ) +HtmlTokenId HTMLParser::ScanText( const sal_Unicode cBreak ) { OUStringBuffer sTmpBuffer( MAX_LEN ); bool bContinue = true; @@ -530,7 +530,7 @@ int HTMLParser::ScanText( const sal_Unicode cBreak ) rInput.Seek( nStreamPos ); nlLinePos = nLinePos; ClearTxtConvContext(); - return HTML_TEXTTOKEN; + return HtmlTokenId::TEXTTOKEN; } // Hack: _GetNextChar shall not read the @@ -538,9 +538,9 @@ int HTMLParser::ScanText( const sal_Unicode cBreak ) if( ';' != nNextCh ) aToken += " "; if( 1U == cChar ) - return HTML_NONBREAKSPACE; + return HtmlTokenId::NONBREAKSPACE; else //2U - return HTML_SOFTHYPH; + return HtmlTokenId::SOFTHYPH; } } } @@ -700,12 +700,12 @@ int HTMLParser::ScanText( const sal_Unicode cBreak ) { // Have seen s.th. aside from blanks? aToken += sTmpBuffer.makeStringAndClear(); - return HTML_TEXTTOKEN; + return HtmlTokenId::TEXTTOKEN; } else // Only read blanks: no text must be returned // and GetNextToken_ has to read until EOF - return 0; + return HtmlTokenId::NONE; } } while ( ' ' == nNextCh || '\t' == nNextCh || '\r' == nNextCh || '\n' == nNextCh || @@ -733,7 +733,7 @@ int HTMLParser::ScanText( const sal_Unicode cBreak ) { if( !sTmpBuffer.isEmpty() ) aToken += sTmpBuffer.makeStringAndClear(); - return HTML_TEXTTOKEN; + return HtmlTokenId::TEXTTOKEN; } } while( HTML_ISALPHA( nNextCh ) || HTML_ISDIGIT( nNextCh ) ); bNextCh = false; @@ -750,10 +750,10 @@ int HTMLParser::ScanText( const sal_Unicode cBreak ) if( !sTmpBuffer.isEmpty() ) aToken += sTmpBuffer.makeStringAndClear(); - return HTML_TEXTTOKEN; + return HtmlTokenId::TEXTTOKEN; } -int HTMLParser::GetNextRawToken() +HtmlTokenId HTMLParser::GetNextRawToken() { OUStringBuffer sTmpBuffer( MAX_LEN ); @@ -766,13 +766,13 @@ int HTMLParser::GetNextRawToken() aEndToken.clear(); bEndTokenFound = false; - return 0; + return HtmlTokenId::NONE; } - // Default return value: HTML_RAWDATA + // Default return value: HtmlTokenId::RAWDATA bool bContinue = true; - int nToken = HTML_RAWDATA; - SaveState( 0 ); + HtmlTokenId nToken = HtmlTokenId::RAWDATA; + SaveState( HtmlTokenId::NONE ); while( bContinue && IsParserWorking() ) { bool bNextCh = true; @@ -863,7 +863,7 @@ int HTMLParser::GetNextRawToken() bReadScript = false; bReadStyle = false; aEndToken.clear(); - nToken = 0; + nToken = HtmlTokenId::NONE; } else { @@ -943,7 +943,7 @@ int HTMLParser::GetNextRawToken() bReadScript = false; bReadStyle = false; aEndToken.clear(); - nToken = 0; + nToken = HtmlTokenId::NONE; } break; } @@ -963,24 +963,24 @@ int HTMLParser::GetNextRawToken() } if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); else - nToken = 0; + nToken = HtmlTokenId::NONE; return nToken; } // Scan next token -int HTMLParser::GetNextToken_() +HtmlTokenId HTMLParser::GetNextToken_() { - int nRet = 0; + HtmlTokenId nRet = HtmlTokenId::NONE; sSaveToken.clear(); - if (mnPendingOffToken) + if (mnPendingOffToken != HtmlTokenId::NONE) { - // HTML_<TOKEN>_OFF generated for HTML_<TOKEN>_ON + // HtmlTokenId::<TOKEN>_OFF generated for HtmlTokenId::<TOKEN>_ON nRet = mnPendingOffToken; - mnPendingOffToken = 0; + mnPendingOffToken = HtmlTokenId::NONE; aToken.clear(); return nRet; } @@ -990,7 +990,7 @@ int HTMLParser::GetNextToken_() maOptions.clear(); if( !IsParserWorking() ) // Don't continue if already an error occurred - return 0; + return HtmlTokenId::NONE; bool bReadNextCharSave = bReadNextChar; if( bReadNextChar ) @@ -999,14 +999,14 @@ int HTMLParser::GetNextToken_() "Read a character despite </SCRIPT> was read?" ); nNextCh = GetNextChar(); if( !IsParserWorking() ) // Don't continue if already an error occurred - return 0; + return HtmlTokenId::NONE; bReadNextChar = false; } if( bReadScript || bReadStyle || !aEndToken.isEmpty() ) { nRet = GetNextRawToken(); - if( nRet || !IsParserWorking() ) + if( nRet != HtmlTokenId::NONE || !IsParserWorking() ) return nRet; } @@ -1054,27 +1054,27 @@ int HTMLParser::GetNextToken_() // Search token in table: sSaveToken = aToken; aToken = aToken.toAsciiLowerCase(); - if( 0 == (nRet = GetHTMLToken( aToken )) ) + if( HtmlTokenId::NONE == (nRet = GetHTMLToken( aToken )) ) // Unknown control - nRet = HTML_UNKNOWNCONTROL_ON; + nRet = HtmlTokenId::UNKNOWNCONTROL_ON; // If it's a token which can be switched off... if( bOffState ) { - if( HTML_TOKEN_ONOFF & nRet ) + if( nRet >= HtmlTokenId::ONOFF_START ) { // and there is an off token, return off token instead - ++nRet; + nRet = (HtmlTokenId)((int)nRet + 1); } - else if( HTML_LINEBREAK!=nRet ) + else if( HtmlTokenId::LINEBREAK!=nRet ) { // and there is no off token, return unknown token. // (except for </BR>, that is treated like <BR>) - nRet = HTML_UNKNOWNCONTROL_OFF; + nRet = HtmlTokenId::UNKNOWNCONTROL_OFF; } } - if( nRet == HTML_COMMENT ) + if( nRet == HtmlTokenId::COMMENT ) { // fix: due to being case sensitive use sSaveToken as start of comment // and append a blank. @@ -1130,12 +1130,12 @@ int HTMLParser::GetNextToken_() ScanText( '>' ); // fdo#34666 fdo#36080 fdo#36390: closing "/>"?: - // generate pending HTML_<TOKEN>_OFF for HTML_<TOKEN>_ON - // Do not convert this to a single HTML_<TOKEN>_OFF + // generate pending HtmlTokenId::<TOKEN>_OFF for HtmlTokenId::<TOKEN>_ON + // Do not convert this to a single HtmlTokenId::<TOKEN>_OFF // which lead to fdo#56772. - if ((HTML_TOKEN_ONOFF & nRet) && aToken.endsWith("/")) + if ((nRet >= HtmlTokenId::ONOFF_START) && aToken.endsWith("/")) { - mnPendingOffToken = nRet + 1; // HTML_<TOKEN>_ON -> HTML_<TOKEN>_OFF + mnPendingOffToken = (HtmlTokenId)((int)nRet + 1); // HtmlTokenId::<TOKEN>_ON -> HtmlTokenId::<TOKEN>_OFF aToken = aToken.replaceAt( aToken.getLength()-1, 1, ""); // remove trailing '/' } if( sal_Unicode(EOF) == nNextCh && rInput.IsEof() ) @@ -1148,7 +1148,7 @@ int HTMLParser::GetNextToken_() ClearTxtConvContext(); aToken = "<"; - nRet = HTML_TEXTTOKEN; + nRet = HtmlTokenId::TEXTTOKEN; nNextCh = GetNextChar(); bNextCh = false; break; @@ -1173,7 +1173,7 @@ int HTMLParser::GetNextToken_() ClearTxtConvContext(); aToken = "<"; - nRet = HTML_TEXTTOKEN; + nRet = HtmlTokenId::TEXTTOKEN; nNextCh = GetNextChar(); bNextCh = false; break; @@ -1184,7 +1184,7 @@ int HTMLParser::GetNextToken_() } else if( '%' == nNextCh ) { - nRet = HTML_UNKNOWNCONTROL_ON; + nRet = HtmlTokenId::UNKNOWNCONTROL_ON; sal_uLong nCStreamPos = rInput.Tell(); sal_uLong nCLineNr = GetLineNr(), nCLinePos = GetLinePos(); @@ -1207,7 +1207,7 @@ int HTMLParser::GetNextToken_() SetLinePos( nCLinePos ); ClearTxtConvContext(); aToken = "<%"; - nRet = HTML_TEXTTOKEN; + nRet = HtmlTokenId::TEXTTOKEN; break; } if( IsParserWorking() ) @@ -1219,7 +1219,7 @@ int HTMLParser::GetNextToken_() else { aToken = "<"; - nRet = HTML_TEXTTOKEN; + nRet = HtmlTokenId::TEXTTOKEN; bNextCh = false; break; } @@ -1230,17 +1230,17 @@ int HTMLParser::GetNextToken_() bNextCh = '>' == nNextCh; switch( nRet ) { - case HTML_TEXTAREA_ON: + case HtmlTokenId::TEXTAREA_ON: bReadTextArea = true; break; - case HTML_TEXTAREA_OFF: + case HtmlTokenId::TEXTAREA_OFF: bReadTextArea = false; break; - case HTML_SCRIPT_ON: + case HtmlTokenId::SCRIPT_ON: if( !bReadTextArea ) bReadScript = true; break; - case HTML_SCRIPT_OFF: + case HtmlTokenId::SCRIPT_OFF: if( !bReadTextArea ) { bReadScript = false; @@ -1251,12 +1251,13 @@ int HTMLParser::GetNextToken_() } break; - case HTML_STYLE_ON: + case HtmlTokenId::STYLE_ON: bReadStyle = true; break; - case HTML_STYLE_OFF: + case HtmlTokenId::STYLE_OFF: bReadStyle = false; break; + default: break; } } } @@ -1266,7 +1267,7 @@ int HTMLParser::GetNextToken_() if( rInput.IsEof() ) { eState = SvParserState::Accepted; - nRet = nNextCh; + nRet = HtmlTokenId(nNextCh); } else { @@ -1277,7 +1278,7 @@ int HTMLParser::GetNextToken_() case '\f': // form feeds are passed upwards separately - nRet = HTML_LINEFEEDCHAR; // !!! should be FORMFEEDCHAR + nRet = HtmlTokenId::LINEFEEDCHAR; // !!! should be FORMFEEDCHAR break; case '\n': @@ -1291,14 +1292,14 @@ int HTMLParser::GetNextToken_() bNextCh = false; nNextCh = c; } - nRet = HTML_NEWPARA; + nRet = HtmlTokenId::NEWPARA; break; } SAL_FALLTHROUGH; case '\t': if( bReadPRE ) { - nRet = HTML_TABCHAR; + nRet = HtmlTokenId::TABCHAR; break; } SAL_FALLTHROUGH; @@ -1324,17 +1325,17 @@ scan_text: if( bNextCh && SvParserState::Working == eState ) { nNextCh = GetNextChar(); - if( SvParserState::Pending == eState && nRet && HTML_TEXTTOKEN != nRet ) + if( SvParserState::Pending == eState && nRet != HtmlTokenId::NONE && HtmlTokenId::TEXTTOKEN != nRet ) { bReadNextChar = true; eState = SvParserState::Working; } } - } while( !nRet && SvParserState::Working == eState ); + } while( nRet == HtmlTokenId::NONE && SvParserState::Working == eState ); if( SvParserState::Pending == eState ) - nRet = -1; // s.th. invalid + nRet = HtmlTokenId::INVALID; // s.th. invalid return nRet; } @@ -1537,22 +1538,22 @@ const HTMLOptions& HTMLParser::GetOptions( HtmlOptionId *pNoConvertToken ) return maOptions; } -int HTMLParser::FilterPRE( int nToken ) +HtmlTokenId HTMLParser::FilterPRE( HtmlTokenId nToken ) { switch( nToken ) { // in Netscape they only have impact in not empty paragraphs - case HTML_PARABREAK_ON: - nToken = HTML_LINEBREAK; + case HtmlTokenId::PARABREAK_ON: + nToken = HtmlTokenId::LINEBREAK; SAL_FALLTHROUGH; - case HTML_LINEBREAK: - case HTML_NEWPARA: + case HtmlTokenId::LINEBREAK: + case HtmlTokenId::NEWPARA: nPre_LinePos = 0; if( bPre_IgnoreNewPara ) - nToken = 0; + nToken = HtmlTokenId::NONE; break; - case HTML_TABCHAR: + case HtmlTokenId::TABCHAR: { sal_Int32 nSpaces = (8 - (nPre_LinePos % 8)); DBG_ASSERT( aToken.isEmpty(), "Why is the token not empty?" ); @@ -1563,152 +1564,152 @@ int HTMLParser::FilterPRE( int nToken ) aToken = padToLength(aBuf, nSpaces, ' ').makeStringAndClear(); } nPre_LinePos += nSpaces; - nToken = HTML_TEXTTOKEN; + nToken = HtmlTokenId::TEXTTOKEN; } break; // Keep those - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: nPre_LinePos += aToken.getLength(); break; - case HTML_SELECT_ON: - case HTML_SELECT_OFF: - case HTML_BODY_ON: - case HTML_FORM_ON: - case HTML_FORM_OFF: - case HTML_INPUT: - case HTML_OPTION: - case HTML_TEXTAREA_ON: - case HTML_TEXTAREA_OFF: - - case HTML_IMAGE: - case HTML_APPLET_ON: - case HTML_APPLET_OFF: - case HTML_PARAM: - case HTML_EMBED: - - case HTML_HEAD1_ON: - case HTML_HEAD1_OFF: - case HTML_HEAD2_ON: - case HTML_HEAD2_OFF: - case HTML_HEAD3_ON: - case HTML_HEAD3_OFF: - case HTML_HEAD4_ON: - case HTML_HEAD4_OFF: - case HTML_HEAD5_ON: - case HTML_HEAD5_OFF: - case HTML_HEAD6_ON: - case HTML_HEAD6_OFF: - case HTML_BLOCKQUOTE_ON: - case HTML_BLOCKQUOTE_OFF: - case HTML_ADDRESS_ON: - case HTML_ADDRESS_OFF: - case HTML_HORZRULE: - - case HTML_CENTER_ON: - case HTML_CENTER_OFF: - case HTML_DIVISION_ON: - case HTML_DIVISION_OFF: - - case HTML_SCRIPT_ON: - case HTML_SCRIPT_OFF: - case HTML_RAWDATA: - - case HTML_TABLE_ON: - case HTML_TABLE_OFF: - case HTML_CAPTION_ON: - case HTML_CAPTION_OFF: - case HTML_COLGROUP_ON: - case HTML_COLGROUP_OFF: - case HTML_COL_ON: - case HTML_COL_OFF: - case HTML_THEAD_ON: - case HTML_THEAD_OFF: - case HTML_TFOOT_ON: - case HTML_TFOOT_OFF: - case HTML_TBODY_ON: - case HTML_TBODY_OFF: - case HTML_TABLEROW_ON: - case HTML_TABLEROW_OFF: - case HTML_TABLEDATA_ON: - case HTML_TABLEDATA_OFF: - case HTML_TABLEHEADER_ON: - case HTML_TABLEHEADER_OFF: - - case HTML_ANCHOR_ON: - case HTML_ANCHOR_OFF: - case HTML_BOLD_ON: - case HTML_BOLD_OFF: - case HTML_ITALIC_ON: - case HTML_ITALIC_OFF: - case HTML_STRIKE_ON: - case HTML_STRIKE_OFF: - case HTML_STRIKETHROUGH_ON: - case HTML_STRIKETHROUGH_OFF: - case HTML_UNDERLINE_ON: - case HTML_UNDERLINE_OFF: - case HTML_BASEFONT_ON: - case HTML_BASEFONT_OFF: - case HTML_FONT_ON: - case HTML_FONT_OFF: - case HTML_BLINK_ON: - case HTML_BLINK_OFF: - case HTML_SPAN_ON: - case HTML_SPAN_OFF: - case HTML_SUBSCRIPT_ON: - case HTML_SUBSCRIPT_OFF: - case HTML_SUPERSCRIPT_ON: - case HTML_SUPERSCRIPT_OFF: - case HTML_BIGPRINT_ON: - case HTML_BIGPRINT_OFF: - case HTML_SMALLPRINT_OFF: - case HTML_SMALLPRINT_ON: - - case HTML_EMPHASIS_ON: - case HTML_EMPHASIS_OFF: - case HTML_CITIATION_ON: - case HTML_CITIATION_OFF: - case HTML_STRONG_ON: - case HTML_STRONG_OFF: - case HTML_CODE_ON: - case HTML_CODE_OFF: - case HTML_SAMPLE_ON: - case HTML_SAMPLE_OFF: - case HTML_KEYBOARD_ON: - case HTML_KEYBOARD_OFF: - case HTML_VARIABLE_ON: - case HTML_VARIABLE_OFF: - case HTML_DEFINSTANCE_ON: - case HTML_DEFINSTANCE_OFF: - case HTML_SHORTQUOTE_ON: - case HTML_SHORTQUOTE_OFF: - case HTML_LANGUAGE_ON: - case HTML_LANGUAGE_OFF: - case HTML_AUTHOR_ON: - case HTML_AUTHOR_OFF: - case HTML_PERSON_ON: - case HTML_PERSON_OFF: - case HTML_ACRONYM_ON: - case HTML_ACRONYM_OFF: - case HTML_ABBREVIATION_ON: - case HTML_ABBREVIATION_OFF: - case HTML_INSERTEDTEXT_ON: - case HTML_INSERTEDTEXT_OFF: - case HTML_DELETEDTEXT_ON: - case HTML_DELETEDTEXT_OFF: - case HTML_TELETYPE_ON: - case HTML_TELETYPE_OFF: + case HtmlTokenId::SELECT_ON: + case HtmlTokenId::SELECT_OFF: + case HtmlTokenId::BODY_ON: + case HtmlTokenId::FORM_ON: + case HtmlTokenId::FORM_OFF: + case HtmlTokenId::INPUT: + case HtmlTokenId::OPTION: + case HtmlTokenId::TEXTAREA_ON: + case HtmlTokenId::TEXTAREA_OFF: + + case HtmlTokenId::IMAGE: + case HtmlTokenId::APPLET_ON: + case HtmlTokenId::APPLET_OFF: + case HtmlTokenId::PARAM: + case HtmlTokenId::EMBED: + + case HtmlTokenId::HEAD1_ON: + case HtmlTokenId::HEAD1_OFF: + case HtmlTokenId::HEAD2_ON: + case HtmlTokenId::HEAD2_OFF: + case HtmlTokenId::HEAD3_ON: + case HtmlTokenId::HEAD3_OFF: + case HtmlTokenId::HEAD4_ON: + case HtmlTokenId::HEAD4_OFF: + case HtmlTokenId::HEAD5_ON: + case HtmlTokenId::HEAD5_OFF: + case HtmlTokenId::HEAD6_ON: + case HtmlTokenId::HEAD6_OFF: + case HtmlTokenId::BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE_OFF: + case HtmlTokenId::ADDRESS_ON: + case HtmlTokenId::ADDRESS_OFF: + case HtmlTokenId::HORZRULE: + + case HtmlTokenId::CENTER_ON: + case HtmlTokenId::CENTER_OFF: + case HtmlTokenId::DIVISION_ON: + case HtmlTokenId::DIVISION_OFF: + + case HtmlTokenId::SCRIPT_ON: + case HtmlTokenId::SCRIPT_OFF: + case HtmlTokenId::RAWDATA: + + case HtmlTokenId::TABLE_ON: + case HtmlTokenId::TABLE_OFF: + case HtmlTokenId::CAPTION_ON: + case HtmlTokenId::CAPTION_OFF: + case HtmlTokenId::COLGROUP_ON: + case HtmlTokenId::COLGROUP_OFF: + case HtmlTokenId::COL_ON: + case HtmlTokenId::COL_OFF: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::THEAD_OFF: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TFOOT_OFF: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TBODY_OFF: + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::TABLEROW_OFF: + case HtmlTokenId::TABLEDATA_ON: + case HtmlTokenId::TABLEDATA_OFF: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEHEADER_OFF: + + case HtmlTokenId::ANCHOR_ON: + case HtmlTokenId::ANCHOR_OFF: + case HtmlTokenId::BOLD_ON: + case HtmlTokenId::BOLD_OFF: + case HtmlTokenId::ITALIC_ON: + case HtmlTokenId::ITALIC_OFF: + case HtmlTokenId::STRIKE_ON: + case HtmlTokenId::STRIKE_OFF: + case HtmlTokenId::STRIKETHROUGH_ON: + case HtmlTokenId::STRIKETHROUGH_OFF: + case HtmlTokenId::UNDERLINE_ON: + case HtmlTokenId::UNDERLINE_OFF: + case HtmlTokenId::BASEFONT_ON: + case HtmlTokenId::BASEFONT_OFF: + case HtmlTokenId::FONT_ON: + case HtmlTokenId::FONT_OFF: + case HtmlTokenId::BLINK_ON: + case HtmlTokenId::BLINK_OFF: + case HtmlTokenId::SPAN_ON: + case HtmlTokenId::SPAN_OFF: + case HtmlTokenId::SUBSCRIPT_ON: + case HtmlTokenId::SUBSCRIPT_OFF: + case HtmlTokenId::SUPERSCRIPT_ON: + case HtmlTokenId::SUPERSCRIPT_OFF: + case HtmlTokenId::BIGPRINT_ON: + case HtmlTokenId::BIGPRINT_OFF: + case HtmlTokenId::SMALLPRINT_OFF: + case HtmlTokenId::SMALLPRINT_ON: + + case HtmlTokenId::EMPHASIS_ON: + case HtmlTokenId::EMPHASIS_OFF: + case HtmlTokenId::CITIATION_ON: + case HtmlTokenId::CITIATION_OFF: + case HtmlTokenId::STRONG_ON: + case HtmlTokenId::STRONG_OFF: + case HtmlTokenId::CODE_ON: + case HtmlTokenId::CODE_OFF: + case HtmlTokenId::SAMPLE_ON: + case HtmlTokenId::SAMPLE_OFF: + case HtmlTokenId::KEYBOARD_ON: + case HtmlTokenId::KEYBOARD_OFF: + case HtmlTokenId::VARIABLE_ON: + case HtmlTokenId::VARIABLE_OFF: + case HtmlTokenId::DEFINSTANCE_ON: + case HtmlTokenId::DEFINSTANCE_OFF: + case HtmlTokenId::SHORTQUOTE_ON: + case HtmlTokenId::SHORTQUOTE_OFF: + case HtmlTokenId::LANGUAGE_ON: + case HtmlTokenId::LANGUAGE_OFF: + case HtmlTokenId::AUTHOR_ON: + case HtmlTokenId::AUTHOR_OFF: + case HtmlTokenId::PERSON_ON: + case HtmlTokenId::PERSON_OFF: + case HtmlTokenId::ACRONYM_ON: + case HtmlTokenId::ACRONYM_OFF: + case HtmlTokenId::ABBREVIATION_ON: + case HtmlTokenId::ABBREVIATION_OFF: + case HtmlTokenId::INSERTEDTEXT_ON: + case HtmlTokenId::INSERTEDTEXT_OFF: + case HtmlTokenId::DELETEDTEXT_ON: + case HtmlTokenId::DELETEDTEXT_OFF: + case HtmlTokenId::TELETYPE_ON: + case HtmlTokenId::TELETYPE_OFF: break; // The remainder is treated as an unknown token. default: - if( nToken ) + if( nToken != HtmlTokenId::NONE ) { nToken = - ( ((HTML_TOKEN_ONOFF & nToken) && (1 & nToken)) - ? HTML_UNKNOWNCONTROL_OFF - : HTML_UNKNOWNCONTROL_ON ); + ( ((nToken >= HtmlTokenId::ONOFF_START) && isOffToken(nToken)) + ? HtmlTokenId::UNKNOWNCONTROL_OFF + : HtmlTokenId::UNKNOWNCONTROL_ON ); } break; } @@ -1718,23 +1719,23 @@ int HTMLParser::FilterPRE( int nToken ) return nToken; } -int HTMLParser::FilterXMP( int nToken ) +HtmlTokenId HTMLParser::FilterXMP( HtmlTokenId nToken ) { switch( nToken ) { - case HTML_NEWPARA: + case HtmlTokenId::NEWPARA: if( bPre_IgnoreNewPara ) - nToken = 0; + nToken = HtmlTokenId::NONE; SAL_FALLTHROUGH; - case HTML_TEXTTOKEN: - case HTML_NONBREAKSPACE: - case HTML_SOFTHYPH: + case HtmlTokenId::TEXTTOKEN: + case HtmlTokenId::NONBREAKSPACE: + case HtmlTokenId::SOFTHYPH: break; // kept default: - if( nToken ) + if( nToken != HtmlTokenId::NONE ) { - if( (HTML_TOKEN_ONOFF & nToken) && (1 & nToken) ) + if( (nToken >= HtmlTokenId::ONOFF_START) && isOffToken(nToken) ) { sSaveToken = "</" + sSaveToken; } @@ -1749,7 +1750,7 @@ int HTMLParser::FilterXMP( int nToken ) else aToken = sSaveToken; aToken += ">"; - nToken = HTML_TEXTTOKEN; + nToken = HtmlTokenId::TEXTTOKEN; } break; } @@ -1759,26 +1760,26 @@ int HTMLParser::FilterXMP( int nToken ) return nToken; } -int HTMLParser::FilterListing( int nToken ) +HtmlTokenId HTMLParser::FilterListing( HtmlTokenId nToken ) { switch( nToken ) { - case HTML_NEWPARA: + case HtmlTokenId::NEWPARA: if( bPre_IgnoreNewPara ) - nToken = 0; + nToken = HtmlTokenId::NONE; SAL_FALLTHROUGH; - case HTML_TEXTTOKEN: - case HTML_NONBREAKSPACE: - case HTML_SOFTHYPH: + case HtmlTokenId::TEXTTOKEN: + case HtmlTokenId::NONBREAKSPACE: + case HtmlTokenId::SOFTHYPH: break; // kept default: - if( nToken ) + if( nToken != HtmlTokenId::NONE ) { nToken = - ( ((HTML_TOKEN_ONOFF & nToken) && (1 & nToken)) - ? HTML_UNKNOWNCONTROL_OFF - : HTML_UNKNOWNCONTROL_ON ); + ( ((nToken >= HtmlTokenId::ONOFF_START) && isOffToken(nToken)) + ? HtmlTokenId::UNKNOWNCONTROL_OFF + : HtmlTokenId::UNKNOWNCONTROL_ON ); } break; } diff --git a/svtools/source/svrtf/parrtf.cxx b/svtools/source/svrtf/parrtf.cxx index 625288c1277e..17921cdaf718 100644 --- a/svtools/source/svrtf/parrtf.cxx +++ b/svtools/source/svrtf/parrtf.cxx @@ -36,7 +36,7 @@ const int MAX_TOKEN_LEN = 128; #define RTF_ISALPHA( c ) rtl::isAsciiAlpha(c) SvRTFParser::SvRTFParser( SvStream& rIn, sal_uInt8 nStackSize ) - : SvParser( rIn, nStackSize ) + : SvParser<int>( rIn, nStackSize ) , nOpenBrakets(0) , eCodeSet(RTL_TEXTENCODING_MS_1252) , nUCharOverread(1) diff --git a/svtools/source/svrtf/svparser.cxx b/svtools/source/svrtf/svparser.cxx index c2de091f1f0d..789464ddbdf5 100644 --- a/svtools/source/svrtf/svparser.cxx +++ b/svtools/source/svrtf/svparser.cxx @@ -28,6 +28,7 @@ #include <climits> // structure to store the actuel data +template<typename T> struct SvParser_Impl { OUString aToken; // gescanntes Token @@ -35,10 +36,10 @@ struct SvParser_Impl sal_uLong nlLineNr; // actual line number sal_uLong nlLinePos; // actual column number long nTokenValue; // extra value (RTF) - bool bTokenHasValue; // indicates whether nTokenValue is valid - int nToken; // actual Token + bool bTokenHasValue; // indicates whether nTokenValue is valid + T nToken; // actual Token sal_uInt32 nNextCh; // actual character - int nSaveToken; // the token from Continue + T nSaveToken; // the token from Continue rtl_TextToUnicodeConverter hConv; rtl_TextToUnicodeContext hContext; @@ -49,9 +50,9 @@ struct SvParser_Impl , nlLinePos(0) , nTokenValue(0) , bTokenHasValue(false) - , nToken(0) + , nToken(static_cast<T>(0)) , nNextCh(0) - , nSaveToken(0) + , nSaveToken(static_cast<T>(0)) , hConv( nullptr ) , hContext( reinterpret_cast<rtl_TextToUnicodeContext>(1) ) { @@ -60,8 +61,17 @@ struct SvParser_Impl }; -// Construktor -SvParser::SvParser( SvStream& rIn, sal_uInt8 nStackSize ) +template<typename T> +SvParser<T>::TokenStackType::TokenStackType() + : nTokenValue(0) + , bTokenHasValue(false) + , nTokenId(static_cast<T>(0)) +{ +} + +// Constructor +template<typename T> +SvParser<T>::SvParser( SvStream& rIn, sal_uInt8 nStackSize ) : rInput( rIn ) , nlLineNr( 1 ) , nlLinePos( 1 ) @@ -85,7 +95,8 @@ SvParser::SvParser( SvStream& rIn, sal_uInt8 nStackSize ) pTokenStackPos = pTokenStack; } -SvParser::~SvParser() +template<typename T> +SvParser<T>::~SvParser() { if( pImplData && pImplData->hConv ) { @@ -97,13 +108,32 @@ SvParser::~SvParser() delete [] pTokenStack; } -void SvParser::ClearTxtConvContext() +template<typename T> SvParserState SvParser<T>::GetStatus() const { return eState; } +template<typename T> sal_uLong SvParser<T>::GetLineNr() const { return nlLineNr; } +template<typename T> sal_uLong SvParser<T>::GetLinePos() const { return nlLinePos; } +template<typename T> void SvParser<T>::IncLineNr() { ++nlLineNr; } +template<typename T> sal_uLong SvParser<T>::IncLinePos() { return ++nlLinePos; } +template<typename T> void SvParser<T>::SetLineNr( sal_uLong nlNum ) { nlLineNr = nlNum; } +template<typename T> void SvParser<T>::SetLinePos( sal_uLong nlPos ) { nlLinePos = nlPos; } +template<typename T> bool SvParser<T>::IsParserWorking() const { return SvParserState::Working == eState; } +template<typename T> rtl_TextEncoding SvParser<T>::GetSrcEncoding() const { return eSrcEnc; } +template<typename T> void SvParser<T>::SetSwitchToUCS2( bool bSet ) { bSwitchToUCS2 = bSet; } +template<typename T> bool SvParser<T>::IsSwitchToUCS2() const { return bSwitchToUCS2; } +template<typename T> sal_uInt16 SvParser<T>::GetCharSize() const { return (RTL_TEXTENCODING_UCS2 == eSrcEnc) ? 2 : 1; } +template<typename T> Link<LinkParamNone*,void> SvParser<T>::GetAsynchCallLink() const +{ + return LINK( const_cast<SvParser*>(this), SvParser, NewDataRead ); +} + +template<typename T> +void SvParser<T>::ClearTxtConvContext() { if( pImplData && pImplData->hConv ) rtl_resetTextToUnicodeContext( pImplData->hConv, pImplData->hContext ); } -void SvParser::SetSrcEncoding( rtl_TextEncoding eEnc ) +template<typename T> +void SvParser<T>::SetSrcEncoding( rtl_TextEncoding eEnc ) { if( eEnc != eSrcEnc ) { @@ -121,7 +151,7 @@ void SvParser::SetSrcEncoding( rtl_TextEncoding eEnc ) { eSrcEnc = eEnc; if( !pImplData ) - pImplData.reset(new SvParser_Impl); + pImplData.reset(new SvParser_Impl<T>); pImplData->hConv = rtl_createTextToUnicodeConverter( eSrcEnc ); DBG_ASSERT( pImplData->hConv, "SvParser::SetSrcEncoding: no converter for source encoding" ); @@ -140,13 +170,15 @@ void SvParser::SetSrcEncoding( rtl_TextEncoding eEnc ) } } -void SvParser::RereadLookahead() +template<typename T> +void SvParser<T>::RereadLookahead() { rInput.Seek(nNextChPos); nNextCh = GetNextChar(); } -sal_uInt32 SvParser::GetNextChar() +template<typename T> +sal_uInt32 SvParser<T>::GetNextChar() { sal_uInt32 c = 0U; @@ -416,9 +448,10 @@ sal_uInt32 SvParser::GetNextChar() return c; } -int SvParser::GetNextToken() +template<typename T> +T SvParser<T>::GetNextToken() { - int nRet = 0; + T nRet = static_cast<T>(0); if( !nTokenStackPos ) { @@ -458,7 +491,8 @@ int SvParser::GetNextToken() return nRet; } -int SvParser::SkipToken( short nCnt ) // "skip" n Tokens backward +template<typename T> +T SvParser<T>::SkipToken( short nCnt ) // "skip" n Tokens backward { pTokenStackPos = GetStackPtr( nCnt ); short nTmp = nTokenStackPos - nCnt; @@ -476,7 +510,8 @@ int SvParser::SkipToken( short nCnt ) // "skip" n Tokens backward return pTokenStackPos->nTokenId; } -SvParser::TokenStackType* SvParser::GetStackPtr( short nCnt ) +template<typename T> +typename SvParser<T>::TokenStackType* SvParser<T>::GetStackPtr( short nCnt ) { sal_uInt8 nAktPos = sal_uInt8(pTokenStackPos - pTokenStack ); if( nCnt > 0 ) @@ -503,25 +538,28 @@ SvParser::TokenStackType* SvParser::GetStackPtr( short nCnt ) } // is called for each token which is recognised by CallParser -void SvParser::NextToken( int ) +template<typename T> +void SvParser<T>::NextToken( T ) { } // to read asynchronous from SvStream -int SvParser::GetSaveToken() const +template<typename T> +T SvParser<T>::GetSaveToken() const { - return pImplData ? pImplData->nSaveToken : 0; + return pImplData ? pImplData->nSaveToken : static_cast<T>(0); } -void SvParser::SaveState( int nToken ) +template<typename T> +void SvParser<T>::SaveState( T nToken ) { // save actual status if( !pImplData ) { - pImplData.reset(new SvParser_Impl); - pImplData->nSaveToken = 0; + pImplData.reset(new SvParser_Impl<T>); + pImplData->nSaveToken = static_cast<T>(0); } pImplData->nFilePos = rInput.Tell(); @@ -535,7 +573,8 @@ void SvParser::SaveState( int nToken ) pImplData->nNextCh = nNextCh; } -void SvParser::RestoreState() +template<typename T> +void SvParser<T>::RestoreState() { // restore old status if( pImplData ) @@ -555,13 +594,14 @@ void SvParser::RestoreState() } } -void SvParser::Continue( int ) +template<typename T> +void SvParser<T>::Continue( T ) { } -void SvParser::BuildWhichTable( std::vector<sal_uInt16> &rWhichMap, - sal_uInt16 *pWhichIds, - sal_uInt16 nWhichIds ) +void BuildWhichTable( std::vector<sal_uInt16> &rWhichMap, + sal_uInt16 *pWhichIds, + sal_uInt16 nWhichIds ) { sal_uInt16 aNewRange[2]; @@ -615,7 +655,15 @@ void SvParser::BuildWhichTable( std::vector<sal_uInt16> &rWhichMap, } -IMPL_LINK_NOARG( SvParser, NewDataRead, LinkParamNone*, void ) +// expanded out version of +// IMPL_LINK_NOARG( SvParser, NewDataRead, LinkParamNone*, void ) +// since it can't cope with template methods +template<typename T> +void SvParser<T>::LinkStubNewDataRead(void * instance, LinkParamNone* data) { + return static_cast<SvParser<T> *>(instance)->NewDataRead(data); +} +template<typename T> +void SvParser<T>::NewDataRead(SAL_UNUSED_PARAMETER LinkParamNone*) { switch( eState ) { @@ -642,6 +690,9 @@ IMPL_LINK_NOARG( SvParser, NewDataRead, LinkParamNone*, void ) } } +template class SVT_DLLPUBLIC SvParser<int>; +template class SVT_DLLPUBLIC SvParser<HtmlTokenId>; + /*======================================================================== * * SvKeyValueIterator. diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx index b817040077b2..d6005f1730ed 100644 --- a/sw/source/filter/html/htmlatr.cxx +++ b/sw/source/filter/html/htmlatr.cxx @@ -125,11 +125,11 @@ void SwHTMLWriter::OutAndSetDefList( sal_uInt16 nNewLvl ) { // output </pre> for the previous(!) paragraph, if required. // Preferable, the <pre> is exported by OutHTML_SwFormatOff for the - // previous paragraph already, but that's not possible, because a very + // previous paragraph already, but that's not possible, because a very // deep look at the next paragraph (this one) is required to figure // out that a def list starts here. - ChangeParaToken( 0 ); + ChangeParaToken( HtmlTokenId::NONE ); // write according to the level difference for( sal_uInt16 i=m_nDefListLvl; i<nNewLvl; i++ ) @@ -156,9 +156,9 @@ void SwHTMLWriter::OutAndSetDefList( sal_uInt16 nNewLvl ) m_nDefListLvl = nNewLvl; } -void SwHTMLWriter::ChangeParaToken( sal_uInt16 nNew ) +void SwHTMLWriter::ChangeParaToken( HtmlTokenId nNew ) { - if( nNew != m_nLastParaToken && HTML_PREFORMTXT_ON == m_nLastParaToken ) + if( nNew != m_nLastParaToken && HtmlTokenId::PREFORMTXT_ON == m_nLastParaToken ) { HTMLOutFuncs::Out_AsciiTag( Strm(), OOO_STRING_SVTOOLS_HTML_preformtxt, false ); m_bLFPossible = true; @@ -478,7 +478,7 @@ void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, { nNumStart = static_cast< sal_uInt16 >(pTextNd->GetActualListStartValue()); } - OSL_ENSURE( rHWrt.m_nLastParaToken == 0, + OSL_ENSURE( rHWrt.m_nLastParaToken == HtmlTokenId::NONE, "<PRE> was not closed before <LI>." ); } } @@ -502,7 +502,7 @@ void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, } // Now, we define what is possible due to the token - sal_uInt16 nToken = 0; // token for tag change + HtmlTokenId nToken = HtmlTokenId::NONE; // token for tag change bool bOutNewLine = false; // only output a single LF? if( !pFormatInfo->aToken.isEmpty() ) { @@ -526,13 +526,13 @@ void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, } else if (rInfo.aToken == OOO_STRING_SVTOOLS_HTML_preformtxt) { - if (HTML_PREFORMTXT_ON == rHWrt.m_nLastParaToken) + if (HtmlTokenId::PREFORMTXT_ON == rHWrt.m_nLastParaToken) { bOutNewLine = true; } else { - nToken = HTML_PREFORMTXT_ON; + nToken = HtmlTokenId::PREFORMTXT_ON; rHWrt.m_bNoAlign = true; bNoEndTag = true; } @@ -971,11 +971,11 @@ void OutHTML_SwFormatOff( Writer& rWrt, const SwHTMLTextCollOutputInfo& rInfo ) if( rNextInfo.GetNumRule() != rNRInfo.GetNumRule() || rNextInfo.GetDepth() != rNRInfo.GetDepth() || rNextInfo.IsNumbered() || rNextInfo.IsRestart() ) - rHWrt.ChangeParaToken( 0 ); + rHWrt.ChangeParaToken( HtmlTokenId::NONE ); OutHTML_NumBulListEnd( rHWrt, rNextInfo ); } else if( rNextInfo.GetNumRule() != nullptr ) - rHWrt.ChangeParaToken( 0 ); + rHWrt.ChangeParaToken( HtmlTokenId::NONE ); return; } @@ -2008,7 +2008,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) // MIB 8.7.97: We enclose the line in a <PRE>. This means that the // spacings are wrong, but otherwise we get an empty paragraph // after the <HR> which is even uglier. - rHTMLWrt.ChangeParaToken( 0 ); + rHTMLWrt.ChangeParaToken( HtmlTokenId::NONE ); // Output all the nodes that are anchored to a frame rHTMLWrt.OutFlyFrame( rNode.GetIndex(), 0, HtmlPosition::Any ); @@ -2120,7 +2120,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) { // ... and it is located before a table or a section rHTMLWrt.OutBookmarks(); - rHTMLWrt.m_bLFPossible = !rHTMLWrt.m_nLastParaToken; + rHTMLWrt.m_bLFPossible = rHTMLWrt.m_nLastParaToken == HtmlTokenId::NONE; // Output all frames that are anchored to this node rHTMLWrt.OutFlyFrame( rNode.GetIndex(), 0, HtmlPosition::Any ); @@ -2200,7 +2200,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) OutHTML_SwFormat( rWrt, rFormat, pNd->GetpSwAttrSet(), aFormatInfo ); // If we didn't open a new line before the paragraph tag, we do that now - rHTMLWrt.m_bLFPossible = !rHTMLWrt.m_nLastParaToken; + rHTMLWrt.m_bLFPossible = rHTMLWrt.m_nLastParaToken == HtmlTokenId::NONE; if( !bOldLFPossible && rHTMLWrt.m_bLFPossible ) rHTMLWrt.OutNewLine(); @@ -2333,7 +2333,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) aEndPosLst.OutStartAttrs( rHTMLWrt, nStrPos + nOffset ); } - bool bWriteBreak = (HTML_PREFORMTXT_ON != rHTMLWrt.m_nLastParaToken); + bool bWriteBreak = (HtmlTokenId::PREFORMTXT_ON != rHTMLWrt.m_nLastParaToken); if( bWriteBreak && pNd->GetNumRule() ) bWriteBreak = false; @@ -2412,7 +2412,8 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) if( pTextHt ) { - rHTMLWrt.m_bLFPossible = !rHTMLWrt.m_nLastParaToken && nStrPos > 0 && + rHTMLWrt.m_bLFPossible = rHTMLWrt.m_nLastParaToken == HtmlTokenId::NONE && + nStrPos > 0 && rStr[nStrPos-1] == ' '; sal_uInt16 nCSS1Script = rHTMLWrt.m_nCSS1Script; rHTMLWrt.m_nCSS1Script = aEndPosLst.GetScriptAtPos( @@ -2438,10 +2439,10 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) // try to split a line after about 255 characters // at a space character unless in a PRE-context - if( ' '==c && !rHTMLWrt.m_nLastParaToken ) + if( ' ' == c && rHTMLWrt.m_nLastParaToken == HtmlTokenId::NONE ) { sal_Int32 nLineLen; - if( rHTMLWrt.m_nLastParaToken ) + if( rHTMLWrt.m_nLastParaToken != HtmlTokenId::NONE ) nLineLen = nStrPos - nPreSplitPos; else nLineLen = rHTMLWrt.GetLineLen(); @@ -2457,7 +2458,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) HTMLOutFuncs::FlushToAscii( rWrt.Strm(), aContext ); rHTMLWrt.OutNewLine(); bOutChar = false; - if( rHTMLWrt.m_nLastParaToken ) + if( rHTMLWrt.m_nLastParaToken != HtmlTokenId::NONE ) nPreSplitPos = nStrPos+1; } } @@ -2485,7 +2486,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) // then we need to add an extra <br> // because browsers like Mozilla wouldn't add a line for the next paragraph bWriteBreak = (0x0a == c) && - (HTML_PREFORMTXT_ON != rHTMLWrt.m_nLastParaToken); + (HtmlTokenId::PREFORMTXT_ON != rHTMLWrt.m_nLastParaToken); } } } @@ -2558,7 +2559,8 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) // if an LF is not allowed already, it is allowed once the paragraphs // ends with a ' ' - if( !rHTMLWrt.m_bLFPossible && !rHTMLWrt.m_nLastParaToken && + if( !rHTMLWrt.m_bLFPossible && + rHTMLWrt.m_nLastParaToken == HtmlTokenId::NONE && nEnd > 0 && ' ' == rStr[nEnd-1] ) rHTMLWrt.m_bLFPossible = true; diff --git a/sw/source/filter/html/htmlcss1.cxx b/sw/source/filter/html/htmlcss1.cxx index 2b120556e78b..d486ffb3c45f 100644 --- a/sw/source/filter/html/htmlcss1.cxx +++ b/sw/source/filter/html/htmlcss1.cxx @@ -744,7 +744,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, OUString aClass; Css1ScriptFlags nScript; eSelType = GetTokenAndClass( pSelector, aToken2, aClass, nScript ); - int nToken2 = GetHTMLToken( aToken2 ); + HtmlTokenId nToken2 = GetHTMLToken( aToken2 ); // and also some information of the next element CSS1SelectorType eNextType = pNext ? pNext->GetType() @@ -755,7 +755,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, { switch( nToken2 ) { - case HTML_ANCHOR_ON: + case HtmlTokenId::ANCHOR_ON: if( !pNext ) { InsertTag( aToken2, rItemSet, rPropInfo ); @@ -800,7 +800,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, } } break; - case HTML_BODY_ON: + case HtmlTokenId::BODY_ON: if( !pNext ) { // BODY @@ -838,9 +838,10 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, return; } break; + default: break; } } - else if( CSS1_SELTYPE_ELEM_CLASS==eSelType && HTML_ANCHOR_ON==nToken2 && + else if( CSS1_SELTYPE_ELEM_CLASS==eSelType && HtmlTokenId::ANCHOR_ON==nToken2 && !pNext && aClass.getLength() >= 9 && ('s' == aClass[0] || 'S' == aClass[0]) ) { @@ -870,25 +871,25 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, sal_uInt16 nPoolCollId = 0; switch( nToken2 ) { - case HTML_HEAD1_ON: + case HtmlTokenId::HEAD1_ON: nPoolCollId = RES_POOLCOLL_HEADLINE1; break; - case HTML_HEAD2_ON: + case HtmlTokenId::HEAD2_ON: nPoolCollId = RES_POOLCOLL_HEADLINE2; break; - case HTML_HEAD3_ON: + case HtmlTokenId::HEAD3_ON: nPoolCollId = RES_POOLCOLL_HEADLINE3; break; - case HTML_HEAD4_ON: + case HtmlTokenId::HEAD4_ON: nPoolCollId = RES_POOLCOLL_HEADLINE4; break; - case HTML_HEAD5_ON: + case HtmlTokenId::HEAD5_ON: nPoolCollId = RES_POOLCOLL_HEADLINE5; break; - case HTML_HEAD6_ON: + case HtmlTokenId::HEAD6_ON: nPoolCollId = RES_POOLCOLL_HEADLINE6; break; - case HTML_PARABREAK_ON: + case HtmlTokenId::PARABREAK_ON: if( aClass.getLength() >= 9 && ('s' == aClass[0] || 'S' == aClass[0]) ) { @@ -907,23 +908,23 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, nPoolCollId = RES_POOLCOLL_TEXT; } break; - case HTML_ADDRESS_ON: + case HtmlTokenId::ADDRESS_ON: nPoolCollId = RES_POOLCOLL_SENDADRESS; break; - case HTML_BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE_ON: nPoolCollId = RES_POOLCOLL_HTML_BLOCKQUOTE; break; - case HTML_DT_ON: + case HtmlTokenId::DT_ON: nPoolCollId = RES_POOLCOLL_HTML_DT; break; - case HTML_DD_ON: + case HtmlTokenId::DD_ON: nPoolCollId = RES_POOLCOLL_HTML_DD; break; - case HTML_PREFORMTXT_ON: + case HtmlTokenId::PREFORMTXT_ON: nPoolCollId = RES_POOLCOLL_HTML_PRE; break; - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: if( CSS1_SELTYPE_ELEMENT==eSelType && !pNext ) { InsertTag( aToken2, rItemSet, rPropInfo ); @@ -936,7 +937,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, // not TH and TD, but TH P and TD P OUString aSubToken, aSubClass; GetTokenAndClass( pNext, aSubToken, aSubClass, nScript ); - if( HTML_PARABREAK_ON == GetHTMLToken( aSubToken ) ) + if( HtmlTokenId::PARABREAK_ON == GetHTMLToken( aSubToken ) ) { aClass = aSubClass; pNext = pNext->GetNext(); @@ -945,7 +946,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, if( !aClass.isEmpty() || pNext ) { nPoolCollId = static_cast< sal_uInt16 >( - HTML_TABLEHEADER_ON == nToken2 ? RES_POOLCOLL_TABLE_HDLN + HtmlTokenId::TABLEHEADER_ON == nToken2 ? RES_POOLCOLL_TABLE_HDLN : RES_POOLCOLL_TABLE ); } else @@ -1077,7 +1078,7 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, if( pNext ) return; - SwCharFormat *pCFormat = GetChrFormat( static_cast< sal_uInt16 >(nToken2), aEmptyOUStr ); + SwCharFormat *pCFormat = GetChrFormat( nToken2, aEmptyOUStr ); if( pCFormat ) { SwCharFormat *pParentCFormat = nullptr; @@ -1129,31 +1130,32 @@ const FontList *SwCSS1Parser::GetFontList() const return pFList; } -SwCharFormat* SwCSS1Parser::GetChrFormat( sal_uInt16 nToken2, const OUString& rClass ) const +SwCharFormat* SwCSS1Parser::GetChrFormat( HtmlTokenId nToken2, const OUString& rClass ) const { // search the corresponding style sal_uInt16 nPoolId = 0; const sal_Char* sName = nullptr; switch( nToken2 ) { - case HTML_EMPHASIS_ON: nPoolId = RES_POOLCHR_HTML_EMPHASIS; break; - case HTML_CITIATION_ON: nPoolId = RES_POOLCHR_HTML_CITIATION; break; - case HTML_STRONG_ON: nPoolId = RES_POOLCHR_HTML_STRONG; break; - case HTML_CODE_ON: nPoolId = RES_POOLCHR_HTML_CODE; break; - case HTML_SAMPLE_ON: nPoolId = RES_POOLCHR_HTML_SAMPLE; break; - case HTML_KEYBOARD_ON: nPoolId = RES_POOLCHR_HTML_KEYBOARD; break; - case HTML_VARIABLE_ON: nPoolId = RES_POOLCHR_HTML_VARIABLE; break; - case HTML_DEFINSTANCE_ON: nPoolId = RES_POOLCHR_HTML_DEFINSTANCE; break; - case HTML_TELETYPE_ON: nPoolId = RES_POOLCHR_HTML_TELETYPE; break; - - case HTML_SHORTQUOTE_ON: sName = OOO_STRING_SVTOOLS_HTML_shortquote; break; - case HTML_LANGUAGE_ON: sName = OOO_STRING_SVTOOLS_HTML_language; break; - case HTML_AUTHOR_ON: sName = OOO_STRING_SVTOOLS_HTML_author; break; - case HTML_PERSON_ON: sName = OOO_STRING_SVTOOLS_HTML_person; break; - case HTML_ACRONYM_ON: sName = OOO_STRING_SVTOOLS_HTML_acronym; break; - case HTML_ABBREVIATION_ON: sName = OOO_STRING_SVTOOLS_HTML_abbreviation; break; - case HTML_INSERTEDTEXT_ON: sName = OOO_STRING_SVTOOLS_HTML_insertedtext; break; - case HTML_DELETEDTEXT_ON: sName = OOO_STRING_SVTOOLS_HTML_deletedtext; break; + case HtmlTokenId::EMPHASIS_ON: nPoolId = RES_POOLCHR_HTML_EMPHASIS; break; + case HtmlTokenId::CITIATION_ON: nPoolId = RES_POOLCHR_HTML_CITIATION; break; + case HtmlTokenId::STRONG_ON: nPoolId = RES_POOLCHR_HTML_STRONG; break; + case HtmlTokenId::CODE_ON: nPoolId = RES_POOLCHR_HTML_CODE; break; + case HtmlTokenId::SAMPLE_ON: nPoolId = RES_POOLCHR_HTML_SAMPLE; break; + case HtmlTokenId::KEYBOARD_ON: nPoolId = RES_POOLCHR_HTML_KEYBOARD; break; + case HtmlTokenId::VARIABLE_ON: nPoolId = RES_POOLCHR_HTML_VARIABLE; break; + case HtmlTokenId::DEFINSTANCE_ON: nPoolId = RES_POOLCHR_HTML_DEFINSTANCE; break; + case HtmlTokenId::TELETYPE_ON: nPoolId = RES_POOLCHR_HTML_TELETYPE; break; + + case HtmlTokenId::SHORTQUOTE_ON: sName = OOO_STRING_SVTOOLS_HTML_shortquote; break; + case HtmlTokenId::LANGUAGE_ON: sName = OOO_STRING_SVTOOLS_HTML_language; break; + case HtmlTokenId::AUTHOR_ON: sName = OOO_STRING_SVTOOLS_HTML_author; break; + case HtmlTokenId::PERSON_ON: sName = OOO_STRING_SVTOOLS_HTML_person; break; + case HtmlTokenId::ACRONYM_ON: sName = OOO_STRING_SVTOOLS_HTML_acronym; break; + case HtmlTokenId::ABBREVIATION_ON: sName = OOO_STRING_SVTOOLS_HTML_abbreviation; break; + case HtmlTokenId::INSERTEDTEXT_ON: sName = OOO_STRING_SVTOOLS_HTML_insertedtext; break; + case HtmlTokenId::DELETEDTEXT_ON: sName = OOO_STRING_SVTOOLS_HTML_deletedtext; break; + default: break; } // search or create the style (only possible with name) @@ -1777,7 +1779,7 @@ void SwHTMLParser::InsertLink() // The style was load asynchronously and is only available // on the next continue call. Therefore we must create a // Pending stack, so that we will return to here. - m_pPendStack = new SwPendingStack( HTML_LINK, m_pPendStack ); + m_pPendStack = new SwPendingStack( HtmlTokenId::LINK, m_pPendStack ); } } else @@ -2114,25 +2116,25 @@ void SwHTMLParser::SetFrameFormatAttrs( SfxItemSet &rItemSet, } } -HTMLAttrContext *SwHTMLParser::PopContext( sal_uInt16 nToken ) +HTMLAttrContext *SwHTMLParser::PopContext( HtmlTokenId nToken ) { HTMLAttrContexts::size_type nPos = m_aContexts.size(); if( nPos <= m_nContextStMin ) return nullptr; - bool bFound = 0==nToken; - if( nToken ) + bool bFound = HtmlTokenId::NONE == nToken; + if( nToken != HtmlTokenId::NONE ) { // search for stack entry of token ... while( nPos > m_nContextStMin ) { - sal_uInt16 nCntxtToken = m_aContexts[--nPos]->GetToken(); + HtmlTokenId nCntxtToken = m_aContexts[--nPos]->GetToken(); if( nCntxtToken == nToken ) { bFound = true; break; } - else if( nCntxtToken == 0 ) // zero as token doesn't occur + else if( nCntxtToken == HtmlTokenId::NONE ) // zero as token doesn't occur { break; } diff --git a/sw/source/filter/html/htmlctxt.cxx b/sw/source/filter/html/htmlctxt.cxx index af63f258f792..f528368230b5 100644 --- a/sw/source/filter/html/htmlctxt.cxx +++ b/sw/source/filter/html/htmlctxt.cxx @@ -619,8 +619,8 @@ void SwHTMLParser::InsertAttrs( SfxItemSet &rItemSet, HTMLAttrs &rAttrs = pContext->GetAttrs(); rAttrs.push_back( m_aAttrTab.pCharBrush ); } - else if( pContext->GetToken() != HTML_TABLEHEADER_ON && - pContext->GetToken() != HTML_TABLEDATA_ON ) + else if( pContext->GetToken() != HtmlTokenId::TABLEHEADER_ON && + pContext->GetToken() != HtmlTokenId::TABLEDATA_ON ) { ppAttr = &m_aAttrTab.pBrush; } diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx index 9297c9f6153a..751f89c3cfb5 100644 --- a/sw/source/filter/html/htmlflywriter.cxx +++ b/sw/source/filter/html/htmlflywriter.cxx @@ -29,6 +29,7 @@ #include <vcl/wrkwin.hxx> #include <svtools/htmlkywd.hxx> #include <svtools/htmlout.hxx> +#include <svtools/htmltokn.h> #include <svtools/imap.hxx> #include <svtools/imapobj.hxx> #include <svtools/htmlcfg.hxx> @@ -1544,7 +1545,7 @@ static Writer & OutHTML_FrameFormatAsMulticol( Writer& rWrt, { SwHTMLWriter & rHTMLWrt = static_cast<SwHTMLWriter&>(rWrt); - rHTMLWrt.ChangeParaToken( 0 ); + rHTMLWrt.ChangeParaToken( HtmlTokenId::NONE ); // Close the current <DL>! rHTMLWrt.OutAndSetDefList( 0 ); @@ -1652,7 +1653,7 @@ static Writer& OutHTML_FrameFormatAsDivOrSpan( Writer& rWrt, const sal_Char *pStr = nullptr; if( !bSpan ) { - rHTMLWrt.ChangeParaToken( 0 ); + rHTMLWrt.ChangeParaToken( HtmlTokenId::NONE ); // Close the current <DL>! rHTMLWrt.OutAndSetDefList( 0 ); diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx index f47d1141752b..08319ee5a1bc 100644 --- a/sw/source/filter/html/htmlform.cxx +++ b/sw/source/filter/html/htmlform.cxx @@ -2071,7 +2071,7 @@ void SwHTMLParser::NewTextArea() SetControlSize( xShape, aTextSz, false, false ); // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_TEXTAREA_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::TEXTAREA_ON ); // und PRE/Listing/XMP voruebergehend aussetzen SplitPREListingXMP( pCntxt ); @@ -2098,7 +2098,7 @@ void SwHTMLParser::EndTextArea() m_pFormImpl->ReleaseFCompPropSet(); // den Kontext holen - HTMLAttrContext *pCntxt = PopContext( HTML_TEXTAREA_ON ); + HTMLAttrContext *pCntxt = PopContext( HtmlTokenId::TEXTAREA_ON ); if( pCntxt ) { // und ggf. die Attribute beenden @@ -2109,7 +2109,7 @@ void SwHTMLParser::EndTextArea() m_bTextArea = false; } -void SwHTMLParser::InsertTextAreaText( sal_uInt16 nToken ) +void SwHTMLParser::InsertTextAreaText( HtmlTokenId nToken ) { OSL_ENSURE( m_bTextArea, "keine TextArea oder falscher Typ" ); OSL_ENSURE( m_pFormImpl && m_pFormImpl->GetFCompPropSet().is(), @@ -2118,10 +2118,10 @@ void SwHTMLParser::InsertTextAreaText( sal_uInt16 nToken ) OUString& rText = m_pFormImpl->GetText(); switch( nToken) { - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: rText += aToken; break; - case HTML_NEWPARA: + case HtmlTokenId::NEWPARA: if( !m_bTAIgnoreNewPara ) rText += "\n"; // das ist hier richtig!!! break; @@ -2344,7 +2344,7 @@ void SwHTMLParser::NewSelect() SetControlSize( xShape, aTextSz, bMinWidth, bMinHeight ); // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_SELECT_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::SELECT_ON ); // und PRE/Listing/XMP voruebergehend aussetzen SplitPREListingXMP( pCntxt ); @@ -2420,7 +2420,7 @@ void SwHTMLParser::EndSelect() m_pFormImpl->ReleaseFCompPropSet(); // den Kontext holen - HTMLAttrContext *pCntxt = PopContext( HTML_SELECT_ON ); + HTMLAttrContext *pCntxt = PopContext( HtmlTokenId::SELECT_ON ); if( pCntxt ) { // und ggf. die Attribute beenden diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx index d13e02734563..1ee611cfd9f5 100644 --- a/sw/source/filter/html/htmlgrin.cxx +++ b/sw/source/filter/html/htmlgrin.cxx @@ -1049,7 +1049,7 @@ void SwHTMLParser::InsertBodyOptions() void SwHTMLParser::NewAnchor() { // end previous link if there was one - HTMLAttrContext *pOldCntxt = PopContext( HTML_ANCHOR_ON ); + HTMLAttrContext *pOldCntxt = PopContext( HtmlTokenId::ANCHOR_ON ); if( pOldCntxt ) { // and maybe end attributes @@ -1170,7 +1170,7 @@ ANCHOR_SETEVENT: } // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_ANCHOR_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::ANCHOR_ON ); bool bEnAnchor = false, bFootnoteAnchor = false, bFootnoteEnSymbol = false; OUString aFootnoteName; @@ -1262,7 +1262,7 @@ void SwHTMLParser::EndAnchor() m_bInFootEndNoteSymbol = false; } - EndTag( HTML_ANCHOR_OFF ); + EndTag( HtmlTokenId::ANCHOR_OFF ); } /* */ diff --git a/sw/source/filter/html/htmlnumreader.cxx b/sw/source/filter/html/htmlnumreader.cxx index 186f8f599bf0..66109b02cab7 100644 --- a/sw/source/filter/html/htmlnumreader.cxx +++ b/sw/source/filter/html/htmlnumreader.cxx @@ -52,7 +52,7 @@ static HTMLOptionEnum<sal_Unicode> aHTMLULTypeTable[] = }; -void SwHTMLParser::NewNumBulList( int nToken ) +void SwHTMLParser::NewNumBulList( HtmlTokenId nToken ) { SwHTMLNumRuleInfo& rInfo = GetNumInfo(); @@ -85,7 +85,7 @@ void SwHTMLParser::NewNumBulList( int nToken ) if( bNewNumFormat ) { sal_uInt16 nChrFormatPoolId = 0; - if( HTML_ORDERLIST_ON == nToken ) + if( HtmlTokenId::ORDERLIST_ON == nToken ) { aNumFormat.SetNumberingType(SVX_NUM_ARABIC); nChrFormatPoolId = RES_POOLCHR_NUM_LEVEL; @@ -144,7 +144,7 @@ void SwHTMLParser::NewNumBulList( int nToken ) { switch( nToken ) { - case HTML_ORDERLIST_ON: + case HtmlTokenId::ORDERLIST_ON: bChangeNumFormat = true; switch( rOption.GetString()[0] ) { @@ -156,11 +156,12 @@ void SwHTMLParser::NewNumBulList( int nToken ) } break; - case HTML_UNORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: aNumFormat.SetBulletChar( rOption.GetEnum( aHTMLULTypeTable,aNumFormat.GetBulletChar() ) ); bChangeNumFormat = true; break; + default: break; } } break; @@ -249,7 +250,7 @@ void SwHTMLParser::NewNumBulList( int nToken ) } // create a new context - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); // Parse styles if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) ) @@ -330,7 +331,7 @@ void SwHTMLParser::NewNumBulList( int nToken ) SetTextCollAttrs( pCntxt ); } -void SwHTMLParser::EndNumBulList( int nToken ) +void SwHTMLParser::EndNumBulList( HtmlTokenId nToken ) { SwHTMLNumRuleInfo& rInfo = GetNumInfo(); @@ -354,10 +355,10 @@ void SwHTMLParser::EndNumBulList( int nToken ) AddParSpace(); // get current context from stack - HTMLAttrContext *pCntxt = nToken!=0 ? PopContext( static_cast< sal_uInt16 >(nToken & ~1) ) : nullptr; + HTMLAttrContext *pCntxt = nToken != HtmlTokenId::NONE ? PopContext( getOnToken(nToken) ) : nullptr; // Don't end a list because of a token, if the context wasn't created or mustn't be ended - if( rInfo.GetDepth()>0 && (!nToken || pCntxt) ) + if( rInfo.GetDepth()>0 && (nToken == HtmlTokenId::NONE || pCntxt) ) { rInfo.DecDepth(); if( !rInfo.GetDepth() ) // was that the last level? @@ -418,7 +419,7 @@ void SwHTMLParser::EndNumBulList( int nToken ) bSetAttrs = true; } - if( nToken ) + if( nToken != HtmlTokenId::NONE ) SetTextCollAttrs(); if( bSetAttrs ) @@ -426,11 +427,11 @@ void SwHTMLParser::EndNumBulList( int nToken ) } -void SwHTMLParser::NewNumBulListItem( int nToken ) +void SwHTMLParser::NewNumBulListItem( HtmlTokenId nToken ) { sal_uInt8 nLevel = GetNumInfo().GetLevel(); OUString aId, aStyle, aClass, aLang, aDir; - sal_uInt16 nStart = HTML_LISTHEADER_ON != nToken + sal_uInt16 nStart = HtmlTokenId::LISTHEADER_ON != nToken ? GetNumInfo().GetNodeStartValue( nLevel ) : USHRT_MAX; if( USHRT_MAX != nStart ) @@ -469,9 +470,9 @@ void SwHTMLParser::NewNumBulListItem( int nToken ) AppendTextNode( AM_NOSPACE, false ); m_bNoParSpace = false; // no space in <LI>! - const bool bCountedInList = nToken != HTML_LISTHEADER_ON; + const bool bCountedInList = nToken != HtmlTokenId::LISTHEADER_ON; - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); OUString aNumRuleName; if( GetNumInfo().GetNumRule() ) @@ -497,11 +498,11 @@ void SwHTMLParser::NewNumBulListItem( int nToken ) m_xDoc->MakeNumRule( aNumRuleName, &aNumRule ); - OSL_ENSURE( !m_nOpenParaToken, + OSL_ENSURE( m_nOpenParaToken == HtmlTokenId::NONE, "Jetzt geht ein offenes Absatz-Element verloren" ); // We'll act like we're in a paragraph. On the next paragraph, at least numbering is gone, // that's gonna be taken over by the next AppendTextNode - m_nOpenParaToken = static_cast< sal_uInt16 >(nToken); + m_nOpenParaToken = nToken; } SwTextNode* pTextNode = m_pPam->GetNode().GetTextNode(); @@ -548,37 +549,38 @@ void SwHTMLParser::NewNumBulListItem( int nToken ) ShowStatline(); } -void SwHTMLParser::EndNumBulListItem( int nToken, bool bSetColl, +void SwHTMLParser::EndNumBulListItem( HtmlTokenId nToken, bool bSetColl, bool /*bLastPara*/ ) { // Create a new paragraph - if( !nToken && m_pPam->GetPoint()->nContent.GetIndex() ) + if( nToken == HtmlTokenId::NONE && m_pPam->GetPoint()->nContent.GetIndex() ) AppendTextNode( AM_NOSPACE ); // Get context to that token and pop it from stack HTMLAttrContext *pCntxt = nullptr; auto nPos = m_aContexts.size(); - nToken &= ~1; + nToken = getOnToken(nToken); while( !pCntxt && nPos>m_nContextStMin ) { - sal_uInt16 nCntxtToken = m_aContexts[--nPos]->GetToken(); + HtmlTokenId nCntxtToken = m_aContexts[--nPos]->GetToken(); switch( nCntxtToken ) { - case HTML_LI_ON: - case HTML_LISTHEADER_ON: - if( !nToken || nToken == nCntxtToken ) + case HtmlTokenId::LI_ON: + case HtmlTokenId::LISTHEADER_ON: + if( nToken == HtmlTokenId::NONE || nToken == nCntxtToken ) { pCntxt = m_aContexts[nPos]; m_aContexts.erase( m_aContexts.begin() + nPos ); } break; - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: - case HTML_MENULIST_ON: - case HTML_DIRLIST_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::DIRLIST_ON: // Don't care about LI/LH outside the current list nPos = m_nContextStMin; break; + default: break; } } diff --git a/sw/source/filter/html/htmlnumwriter.cxx b/sw/source/filter/html/htmlnumwriter.cxx index 01d9e6c33ef2..f363e40f49e3 100644 --- a/sw/source/filter/html/htmlnumwriter.cxx +++ b/sw/source/filter/html/htmlnumwriter.cxx @@ -170,7 +170,7 @@ Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt, } } - OSL_ENSURE( rWrt.m_nLastParaToken == 0, + OSL_ENSURE( rWrt.m_nLastParaToken == HtmlTokenId::NONE, "<PRE> was not closed before <OL>." ); sal_uInt16 nPrevDepth = (bSameRule && !rInfo.IsRestart()) ? rPrevInfo.GetDepth() : 0; @@ -291,7 +291,7 @@ Writer& OutHTML_NumBulListEnd( SwHTMLWriter& rWrt, return rWrt; } - OSL_ENSURE( rWrt.m_nLastParaToken == 0, + OSL_ENSURE( rWrt.m_nLastParaToken == HtmlTokenId::NONE, "<PRE> was not closed before </OL>." ); sal_uInt16 nNextDepth = (bSameRule && !rNextInfo.IsRestart()) ? rNextInfo.GetDepth() : 0; diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx index 4a6792e384bf..3d18e2c40e88 100644 --- a/sw/source/filter/html/htmlsect.cxx +++ b/sw/source/filter/html/htmlsect.cxx @@ -55,12 +55,12 @@ using namespace ::com::sun::star; -void SwHTMLParser::NewDivision( int nToken ) +void SwHTMLParser::NewDivision( HtmlTokenId nToken ) { OUString aId, aHRef; OUString aStyle, aLang, aDir; OUString aClass; - SvxAdjust eAdjust = HTML_CENTER_ON==nToken ? SvxAdjust::Center + SvxAdjust eAdjust = HtmlTokenId::CENTER_ON==nToken ? SvxAdjust::Center : SvxAdjust::End; bool bHeader=false, bFooter=false; @@ -74,7 +74,7 @@ void SwHTMLParser::NewDivision( int nToken ) aId = rOption.GetString(); break; case HtmlOptionId::ALIGN: - if( HTML_DIVISION_ON==nToken ) + if( HtmlTokenId::DIVISION_ON==nToken ) eAdjust = rOption.GetEnum( aHTMLPAlignTable, eAdjust ); break; case HtmlOptionId::STYLE: @@ -113,7 +113,7 @@ void SwHTMLParser::NewDivision( int nToken ) bAppended = true; } - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); bool bStyleParsed = false, bPositioned = false; SfxItemSet aItemSet( m_xDoc->GetAttrPool(), m_pCSS1Parser->GetWhichMap() ); @@ -130,7 +130,7 @@ void SwHTMLParser::NewDivision( int nToken ) NewMultiCol( aPropInfo.m_nColumnCount ); return; } - bPositioned = HTML_DIVISION_ON == nToken && !aClass.isEmpty() && + bPositioned = HtmlTokenId::DIVISION_ON == nToken && !aClass.isEmpty() && CreateContainer( aClass, aItemSet, aPropInfo, pCntxt ); if( !bPositioned ) @@ -378,7 +378,7 @@ void SwHTMLParser::NewDivision( int nToken ) PushContext( pCntxt ); } -void SwHTMLParser::EndDivision( int /*nToken*/ ) +void SwHTMLParser::EndDivision() { // search for the stack entry of the token (because we still have the div stack // we don't make a difference between DIV and CENTER) @@ -388,11 +388,12 @@ void SwHTMLParser::EndDivision( int /*nToken*/ ) { switch( m_aContexts[--nPos]->GetToken() ) { - case HTML_CENTER_ON: - case HTML_DIVISION_ON: + case HtmlTokenId::CENTER_ON: + case HtmlTokenId::DIVISION_ON: pCntxt = m_aContexts[nPos]; m_aContexts.erase( m_aContexts.begin() + nPos ); break; + default: break; } } @@ -577,7 +578,7 @@ void SwHTMLParser::NewMultiCol( sal_uInt16 columnsFromCss ) } } - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_MULTICOL_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::MULTICOL_ON ); //.is the multicol element contained in a container? That may be the // case for 5.0 documents. diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx index b5ebc4232dd3..b319109f3b26 100644 --- a/sw/source/filter/html/htmltab.cxx +++ b/sw/source/filter/html/htmltab.cxx @@ -2943,7 +2943,7 @@ void SectionSaveStruct::Restore( SwHTMLParser& rParser ) // Reset a few flags rParser.m_bNoParSpace = false; - rParser.m_nOpenParaToken = 0; + rParser.m_nOpenParaToken = HtmlTokenId::NONE; if( !rParser.m_aParaAttrs.empty() ) rParser.m_aParaAttrs.clear(); @@ -3110,15 +3110,16 @@ CellSaveStruct::CellSaveStruct( SwHTMLParser& rParser, HTMLTable *pCurTable, // Create a new context but don't anchor the drawing::Alignment attribute there, // since there's no section yet - sal_uInt16 nToken, nColl; + HtmlTokenId nToken; + sal_uInt16 nColl; if( m_bHead ) { - nToken = HTML_TABLEHEADER_ON; + nToken = HtmlTokenId::TABLEHEADER_ON; nColl = RES_POOLCOLL_TABLE_HDLN; } else { - nToken = HTML_TABLEDATA_ON; + nToken = HtmlTokenId::TABLEDATA_ON; nColl = RES_POOLCOLL_TABLE; } HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken, nColl, aEmptyOUStr, true ); @@ -3315,7 +3316,7 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, CellSaveStruct* pSaveStruct; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; bool bPending = false; if( m_pPendStack ) { @@ -3334,7 +3335,7 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, // <TH> resp. <TD> were already read if( m_pTable->IsOverflowing() ) { - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); return; } @@ -3479,7 +3480,7 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, bParentLFStripped = StripTrailingLF() > 0; // Close paragraph resp. headers - m_nOpenParaToken = 0; + m_nOpenParaToken = HtmlTokenId::NONE; m_nFontStHeadStart = m_nFontStMin; // The hard attributes on that paragraph are never gonna be invalid anymore @@ -3698,10 +3699,10 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, bReadOptions ); // If the first GetNextToken() doesn't succeed (pending input), must re-read from the beginning. - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); // Token after <TABLE> bool bDone = false; @@ -3720,24 +3721,24 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, } else switch( nToken ) { - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: - case HTML_TABLEROW_ON: - case HTML_TABLEROW_OFF: - case HTML_THEAD_ON: - case HTML_THEAD_OFF: - case HTML_TFOOT_ON: - case HTML_TFOOT_OFF: - case HTML_TBODY_ON: - case HTML_TBODY_OFF: - case HTML_TABLE_OFF: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::TABLEROW_OFF: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::THEAD_OFF: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TFOOT_OFF: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TBODY_OFF: + case HtmlTokenId::TABLE_OFF: SkipToken(); SAL_FALLTHROUGH; - case HTML_TABLEHEADER_OFF: - case HTML_TABLEDATA_OFF: + case HtmlTokenId::TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: bDone = true; break; - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: { bool bHasToFly = false; SvxAdjust eTabAdjust = SvxAdjust::End; @@ -3851,22 +3852,22 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, } break; - case HTML_NOBR_ON: + case HtmlTokenId::NOBR_ON: // HACK for MS: Is the <NOBR> at the start of the cell? pSaveStruct->StartNoBreak( *m_pPam->GetPoint() ); break; - case HTML_NOBR_OFF: + case HtmlTokenId::NOBR_OFF: pSaveStruct->EndNoBreak( *m_pPam->GetPoint() ); break; - case HTML_COMMENT: + case HtmlTokenId::COMMENT: // Spaces are not gonna be deleted with comment fields, // and we don't want a new cell for a comment NextToken( nToken ); break; - case HTML_MARQUEE_ON: + case HtmlTokenId::MARQUEE_ON: if( !pSaveStruct->IsInSection() ) { // create a new section, the PaM is gonna be there @@ -3877,7 +3878,7 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, NewMarquee( pCurTable ); break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: // Don't add a section for an empty string if( !pSaveStruct->IsInSection() && 1==aToken.getLength() && ' '==aToken[0] ) @@ -3900,7 +3901,7 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, "SwHTMLParser::BuildTableCell: There is a PendStack again" ); bPending = false; if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -3908,8 +3909,8 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, if( SvParserState::Pending == GetStatus() ) { - m_pPendStack = new SwPendingStack( bHead ? HTML_TABLEHEADER_ON - : HTML_TABLEDATA_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( bHead ? HtmlTokenId::TABLEHEADER_ON + : HtmlTokenId::TABLEDATA_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; return; @@ -4008,7 +4009,7 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, if( !IsParserWorking() && !m_pPendStack ) return; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; RowSaveStruct* pSaveStruct; bool bPending = false; @@ -4081,10 +4082,10 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, aId, aClass ); pCurTable->OpenRow( eAdjust, eVertOri, pBrushItem ); // If the first GetNextToken() doesn't succeed (pending input), must re-read from the beginning. - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); bool bDone = false; @@ -4105,7 +4106,7 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, } else switch( nToken ) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( !pCurTable->GetContext() ) { SkipToken(); @@ -4113,59 +4114,59 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, } break; - case HTML_TABLEROW_ON: - case HTML_THEAD_ON: - case HTML_THEAD_OFF: - case HTML_TBODY_ON: - case HTML_TBODY_OFF: - case HTML_TFOOT_ON: - case HTML_TFOOT_OFF: - case HTML_TABLE_OFF: + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::THEAD_OFF: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TBODY_OFF: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TFOOT_OFF: + case HtmlTokenId::TABLE_OFF: SkipToken(); SAL_FALLTHROUGH; - case HTML_TABLEROW_OFF: + case HtmlTokenId::TABLEROW_OFF: bDone = true; break; - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: - BuildTableCell( pCurTable, true, HTML_TABLEHEADER_ON==nToken ); + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: + BuildTableCell( pCurTable, true, HtmlTokenId::TABLEHEADER_ON==nToken ); if( SvParserState::Pending != GetStatus() ) { pSaveStruct->bHasCells = true; bDone = m_pTable->IsOverflowing(); } break; - case HTML_CAPTION_ON: + case HtmlTokenId::CAPTION_ON: BuildTableCaption( pCurTable ); bDone = m_pTable->IsOverflowing(); break; - case HTML_CAPTION_OFF: - case HTML_TABLEHEADER_OFF: - case HTML_TABLEDATA_OFF: - case HTML_COLGROUP_ON: - case HTML_COLGROUP_OFF: - case HTML_COL_ON: - case HTML_COL_OFF: + case HtmlTokenId::CAPTION_OFF: + case HtmlTokenId::TABLEHEADER_OFF: + case HtmlTokenId::TABLEDATA_OFF: + case HtmlTokenId::COLGROUP_ON: + case HtmlTokenId::COLGROUP_OFF: + case HtmlTokenId::COL_ON: + case HtmlTokenId::COL_OFF: // Where no cell started, there can't be a cell ending // all the other tokens are bogus anyway and only break the table break; - case HTML_MULTICOL_ON: + case HtmlTokenId::MULTICOL_ON: // we can't add columned text frames here break; - case HTML_FORM_ON: + case HtmlTokenId::FORM_ON: NewForm( false ); // don't create a new paragraph break; - case HTML_FORM_OFF: + case HtmlTokenId::FORM_OFF: EndForm( false ); // don't create a new paragraph break; - case HTML_COMMENT: + case HtmlTokenId::COMMENT: NextToken( nToken ); break; - case HTML_MAP_ON: + case HtmlTokenId::MAP_ON: // an image map doesn't add anything, so we can parse it without a cell NextToken( nToken ); break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: if( (pCurTable->GetContext() || !pCurTable->HasParentSection()) && 1==aToken.getLength() && ' '==aToken[0] ) @@ -4181,7 +4182,7 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, "SwHTMLParser::BuildTableRow: There is a PendStack again" ); bPending = false; if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -4189,7 +4190,7 @@ void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, bool bReadOptions, if( SvParserState::Pending == GetStatus() ) { - m_pPendStack = new SwPendingStack( HTML_TABLEROW_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( HtmlTokenId::TABLEROW_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; } else @@ -4209,7 +4210,7 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, if( !IsParserWorking() && !m_pPendStack ) return; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; bool bPending = false; RowSaveStruct* pSaveStruct; @@ -4255,10 +4256,10 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, } // If the first GetNextToken() doesn't succeed (pending input), must re-read from the beginning. - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); bool bDone = false; @@ -4279,7 +4280,7 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, } else switch( nToken ) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( !pCurTable->GetContext() ) { SkipToken(); @@ -4287,45 +4288,45 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, } break; - case HTML_THEAD_ON: - case HTML_TFOOT_ON: - case HTML_TBODY_ON: - case HTML_TABLE_OFF: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TABLE_OFF: SkipToken(); SAL_FALLTHROUGH; - case HTML_THEAD_OFF: - case HTML_TBODY_OFF: - case HTML_TFOOT_OFF: + case HtmlTokenId::THEAD_OFF: + case HtmlTokenId::TBODY_OFF: + case HtmlTokenId::TFOOT_OFF: bDone = true; break; - case HTML_CAPTION_ON: + case HtmlTokenId::CAPTION_ON: BuildTableCaption( pCurTable ); bDone = m_pTable->IsOverflowing(); break; - case HTML_CAPTION_OFF: + case HtmlTokenId::CAPTION_OFF: break; - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: SkipToken(); BuildTableRow( pCurTable, false, pSaveStruct->eAdjust, pSaveStruct->eVertOri ); bDone = m_pTable->IsOverflowing(); break; - case HTML_TABLEROW_ON: + case HtmlTokenId::TABLEROW_ON: BuildTableRow( pCurTable, true, pSaveStruct->eAdjust, pSaveStruct->eVertOri ); bDone = m_pTable->IsOverflowing(); break; - case HTML_MULTICOL_ON: + case HtmlTokenId::MULTICOL_ON: // we can't add columned text frames here break; - case HTML_FORM_ON: + case HtmlTokenId::FORM_ON: NewForm( false ); // don't create a new paragraph break; - case HTML_FORM_OFF: + case HtmlTokenId::FORM_OFF: EndForm( false ); // don't create a new paragraph break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: // blank strings may be a series of CR+LF and no text if( (pCurTable->GetContext() || !pCurTable->HasParentSection()) && @@ -4341,7 +4342,7 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, "SwHTMLParser::BuildTableSection: There is a PendStack again" ); bPending = false; if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -4349,8 +4350,8 @@ void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable, if( SvParserState::Pending == GetStatus() ) { - m_pPendStack = new SwPendingStack( bHead ? HTML_THEAD_ON - : HTML_TBODY_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( bHead ? HtmlTokenId::THEAD_ON + : HtmlTokenId::TBODY_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; } else @@ -4395,7 +4396,7 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, if( !IsParserWorking() && !m_pPendStack ) return; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; bool bPending = false; TableColGrpSaveStruct* pSaveStruct; @@ -4448,10 +4449,10 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, } } // If the first GetNextToken() doesn't succeed (pending input), must re-read from the beginning. - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); // naechstes Token bool bDone = false; @@ -4472,7 +4473,7 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, } else switch( nToken ) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( !pCurTable->GetContext() ) { SkipToken(); @@ -4480,18 +4481,18 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, } break; - case HTML_COLGROUP_ON: - case HTML_THEAD_ON: - case HTML_TFOOT_ON: - case HTML_TBODY_ON: - case HTML_TABLEROW_ON: - case HTML_TABLE_OFF: + case HtmlTokenId::COLGROUP_ON: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::TABLE_OFF: SkipToken(); SAL_FALLTHROUGH; - case HTML_COLGROUP_OFF: + case HtmlTokenId::COLGROUP_OFF: bDone = true; break; - case HTML_COL_ON: + case HtmlTokenId::COL_ON: { sal_uInt16 nColSpan = 1; sal_uInt16 nColWidth = pSaveStruct->nColGrpWidth; @@ -4533,12 +4534,12 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, pSaveStruct->nColGrpSpan = 0; } break; - case HTML_COL_OFF: + case HtmlTokenId::COL_OFF: break; // Ignore - case HTML_MULTICOL_ON: + case HtmlTokenId::MULTICOL_ON: // we can't add columned text frames here break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: if( (pCurTable->GetContext() || !pCurTable->HasParentSection()) && 1==aToken.getLength() && ' '==aToken[0] ) @@ -4553,7 +4554,7 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, "SwHTMLParser::BuildTableColGrp: There is a PendStack again" ); bPending = false; if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -4561,7 +4562,7 @@ void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable, if( SvParserState::Pending == GetStatus() ) { - m_pPendStack = new SwPendingStack( HTML_COL_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( HtmlTokenId::COL_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; } else @@ -4612,7 +4613,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) if( !IsParserWorking() && !m_pPendStack ) return; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; CaptionSaveStruct* pSaveStruct; if( m_pPendStack ) @@ -4631,7 +4632,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) { if( m_pTable->IsOverflowing() ) { - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); return; } @@ -4661,7 +4662,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) else pStNd = InsertTableSection( RES_POOLCOLL_TEXT ); - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_CAPTION_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::CAPTION_ON ); // Table headers are always centered NewAttr( &m_aAttrTab.pAdjust, SvxAdjustItem(SvxAdjust::Center, RES_PARATR_ADJUST) ); @@ -4675,10 +4676,10 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) pCurTable->SetCaption( pStNd, bTop ); // If the first GetNextToken() doesn't succeed (pending input), must re-read from the beginning. - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); // </CAPTION> is needed according to DTD @@ -4691,7 +4692,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) switch( nToken ) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( !m_pPendStack ) { pSaveStruct->m_pTable = m_pTable; @@ -4708,17 +4709,17 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) m_pTable = pSaveStruct->m_pTable; } break; - case HTML_TABLE_OFF: - case HTML_COLGROUP_ON: - case HTML_THEAD_ON: - case HTML_TFOOT_ON: - case HTML_TBODY_ON: - case HTML_TABLEROW_ON: + case HtmlTokenId::TABLE_OFF: + case HtmlTokenId::COLGROUP_ON: + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TBODY_ON: + case HtmlTokenId::TABLEROW_ON: SkipToken(); bDone = true; break; - case HTML_CAPTION_OFF: + case HtmlTokenId::CAPTION_OFF: bDone = true; break; default: @@ -4737,7 +4738,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) } if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -4745,7 +4746,7 @@ void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable ) if( SvParserState::Pending==GetStatus() ) { - m_pPendStack = new SwPendingStack( HTML_CAPTION_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( HtmlTokenId::CAPTION_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; return; } @@ -4978,7 +4979,7 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, if( !IsParserWorking() && !m_pPendStack ) return nullptr; - int nToken = 0; + HtmlTokenId nToken = HtmlTokenId::NONE; bool bPending = false; TableSaveStruct* pSaveStruct; @@ -5016,13 +5017,13 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, delete pTableOptions; // Is pending on the first GetNextToken, needs to be re-read on each construction - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); } HTMLTable *pCurTable = pSaveStruct->m_pCurrentTable; // </TABLE> is needed according to DTD - if( !nToken ) + if( nToken == HtmlTokenId::NONE ) nToken = GetNextToken(); bool bDone = false; @@ -5043,7 +5044,7 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, } else switch( nToken ) { - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( !pCurTable->GetContext() ) { // If there's no table added, read the next table' @@ -5052,43 +5053,43 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, } break; - case HTML_TABLE_OFF: + case HtmlTokenId::TABLE_OFF: bDone = true; break; - case HTML_CAPTION_ON: + case HtmlTokenId::CAPTION_ON: BuildTableCaption( pCurTable ); bDone = m_pTable->IsOverflowing(); break; - case HTML_COL_ON: + case HtmlTokenId::COL_ON: SkipToken(); BuildTableColGroup( pCurTable, false ); break; - case HTML_COLGROUP_ON: + case HtmlTokenId::COLGROUP_ON: BuildTableColGroup( pCurTable, true ); break; - case HTML_TABLEROW_ON: - case HTML_TABLEHEADER_ON: - case HTML_TABLEDATA_ON: + case HtmlTokenId::TABLEROW_ON: + case HtmlTokenId::TABLEHEADER_ON: + case HtmlTokenId::TABLEDATA_ON: SkipToken(); BuildTableSection( pCurTable, false, false ); bDone = m_pTable->IsOverflowing(); break; - case HTML_THEAD_ON: - case HTML_TFOOT_ON: - case HTML_TBODY_ON: - BuildTableSection( pCurTable, true, HTML_THEAD_ON==nToken ); + case HtmlTokenId::THEAD_ON: + case HtmlTokenId::TFOOT_ON: + case HtmlTokenId::TBODY_ON: + BuildTableSection( pCurTable, true, HtmlTokenId::THEAD_ON==nToken ); bDone = m_pTable->IsOverflowing(); break; - case HTML_MULTICOL_ON: + case HtmlTokenId::MULTICOL_ON: // we can't add columned text frames here break; - case HTML_FORM_ON: + case HtmlTokenId::FORM_ON: NewForm( false ); // don't add a new paragraph break; - case HTML_FORM_OFF: + case HtmlTokenId::FORM_OFF: EndForm( false ); // don't add a new paragraph break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: // blank strings may be a series of CR+LF and no text if( (pCurTable->GetContext() || !pCurTable->HasParentSection()) && @@ -5105,7 +5106,7 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, "SwHTMLParser::BuildTable: There is a PendStack again" ); bPending = false; if( IsParserWorking() ) - SaveState( 0 ); + SaveState( HtmlTokenId::NONE ); if( !bDone ) nToken = GetNextToken(); @@ -5113,7 +5114,7 @@ HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust, if( SvParserState::Pending == GetStatus() ) { - m_pPendStack = new SwPendingStack( HTML_TABLE_ON, m_pPendStack ); + m_pPendStack = new SwPendingStack( HtmlTokenId::TABLE_ON, m_pPendStack ); m_pPendStack->pData = pSaveStruct; return nullptr; } diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx index dc2cbe168c21..3be0af4f9ffb 100644 --- a/sw/source/filter/html/htmltabw.cxx +++ b/sw/source/filter/html/htmltabw.cxx @@ -601,7 +601,7 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign, } // vorhergende Aufzaehlung etc. beenden - rWrt.ChangeParaToken( 0 ); + rWrt.ChangeParaToken( HtmlTokenId::NONE ); if( rWrt.m_bLFPossible ) rWrt.OutNewLine(); // <TABLE> in neue Zeile diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx index c309fc4f0391..9910b534e074 100644 --- a/sw/source/filter/html/svxcss1.cxx +++ b/sw/source/filter/html/svxcss1.cxx @@ -767,10 +767,10 @@ SvxCSS1Parser::SvxCSS1Parser( SfxItemPool& rPool, const OUString& rBaseURL, aItemIds.nDirection = rPool.GetTrueWhich( SID_ATTR_FRAMEDIRECTION, false ); aWhichMap.insert( aWhichMap.begin(), 0 ); - SvParser::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16 *>(&aItemIds), + BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16 *>(&aItemIds), sizeof(aItemIds) / sizeof(sal_uInt16) ); if( pWhichIds && nWhichIds ) - SvParser::BuildWhichTable( aWhichMap, pWhichIds, nWhichIds ); + BuildWhichTable( aWhichMap, pWhichIds, nWhichIds ); pSheetItemSet = new SfxItemSet( rPool, &aWhichMap[0] ); pSheetPropInfo = new SvxCSS1PropertyInfo; diff --git a/sw/source/filter/html/swcss1.hxx b/sw/source/filter/html/swcss1.hxx index e8b197be6663..e3150d623451 100644 --- a/sw/source/filter/html/swcss1.hxx +++ b/sw/source/filter/html/swcss1.hxx @@ -84,7 +84,7 @@ public: virtual const FontList *GetFontList() const override; // determine the character format of a token and a maybe empty class - SwCharFormat* GetChrFormat( sal_uInt16 nToken, const OUString& rClass ) const; + SwCharFormat* GetChrFormat( HtmlTokenId nToken, const OUString& rClass ) const; // determine a TextFormatColl of a Pool-Id SwTextFormatColl *GetTextFormatColl( sal_uInt16 nTextColl, const OUString& rClass ); diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index 6122d867a2da..de58b2c52989 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -213,7 +213,7 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, // damit keiner das Doc klaut! rDoc.acquire(); sal_uLong nRet = 0; - tools::SvRef<SvParser> xParser = new SwHTMLParser( &rDoc, rPam, *pStrm, + tools::SvRef<SwHTMLParser> xParser = new SwHTMLParser( &rDoc, rPam, *pStrm, rName, rBaseURL, !bInsertMode, pMedium, IsReadUTF8(), bIgnoreHTMLComments ); @@ -271,7 +271,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn, m_nContextStMin( 0 ), m_nContextStAttrMin( 0 ), m_nSelectEntryCnt( 0 ), - m_nOpenParaToken( 0 ), + m_nOpenParaToken( HtmlTokenId::NONE ), m_eJumpTo( JUMPTO_NONE ), #ifdef DBG_UTIL m_nContinue( 0 ), @@ -554,7 +554,7 @@ SvParserState SwHTMLParser::CallParser() return eRet; } -void SwHTMLParser::Continue( int nToken ) +void SwHTMLParser::Continue( HtmlTokenId nToken ) { #ifdef DBG_UTIL OSL_ENSURE(!m_nContinue, "Continue im Continue - not supposed to happen"); @@ -613,9 +613,9 @@ void SwHTMLParser::Continue( int nToken ) // beendet wird. if( SvParserState::Error == eState ) { - OSL_ENSURE( !m_pPendStack || m_pPendStack->nToken, + OSL_ENSURE( !m_pPendStack || m_pPendStack->nToken != HtmlTokenId::NONE, "SwHTMLParser::Continue: Pending-Stack ohne Token" ); - if( m_pPendStack && m_pPendStack->nToken ) + if( m_pPendStack && m_pPendStack->nToken != HtmlTokenId::NONE ) NextToken( m_pPendStack->nToken ); OSL_ENSURE( !m_pPendStack, "SwHTMLParser::Continue: Es gibt wieder einen Pend-Stack" ); @@ -937,7 +937,7 @@ void SwHTMLParser::DocumentDetected() } // is called for every token that is recognised in CallParser -void SwHTMLParser::NextToken( int nToken ) +void SwHTMLParser::NextToken( HtmlTokenId nToken ) { if( ( m_xDoc->GetDocShell() && m_xDoc->GetDocShell()->IsAbortingImport() ) || 1 == m_xDoc->getReferenceCount() ) @@ -945,7 +945,7 @@ void SwHTMLParser::NextToken( int nToken ) // Was the import cancelled by SFX? If a pending stack // exists, clean it. eState = SvParserState::Error; - OSL_ENSURE( !m_pPendStack || m_pPendStack->nToken, + OSL_ENSURE( !m_pPendStack || m_pPendStack->nToken != HtmlTokenId::NONE, "SwHTMLParser::NextToken: Pending-Stack without token" ); if( 1 == m_xDoc->getReferenceCount() || !m_pPendStack ) return ; @@ -957,15 +957,15 @@ void SwHTMLParser::NextToken( int nToken ) switch( nToken ) { // tables are read by recursive method calls - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: // For CSS declarations we might have to wait // for a file download to finish - case HTML_LINK: + case HtmlTokenId::LINK: // For controls we might have to set the size. - case HTML_INPUT: - case HTML_TEXTAREA_ON: - case HTML_SELECT_ON: - case HTML_SELECT_OFF: + case HtmlTokenId::INPUT: + case HtmlTokenId::TEXTAREA_ON: + case HtmlTokenId::SELECT_ON: + case HtmlTokenId::SELECT_OFF: break; default: OSL_ENSURE( !m_pPendStack, "Unbekanntes Token fuer Pending-Stack" ); @@ -983,7 +983,7 @@ void SwHTMLParser::NextToken( int nToken ) { switch( nToken ) { - case HTML_TITLE_OFF: + case HtmlTokenId::TITLE_OFF: if( IsNewDoc() && !m_sTitle.isEmpty() ) { if( m_xDoc->GetDocShell() ) { @@ -1004,21 +1004,21 @@ void SwHTMLParser::NextToken( int nToken ) m_sTitle.clear(); break; - case HTML_NONBREAKSPACE: + case HtmlTokenId::NONBREAKSPACE: m_sTitle += " "; break; - case HTML_SOFTHYPH: + case HtmlTokenId::SOFTHYPH: m_sTitle += "-"; break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: m_sTitle += aToken; break; default: m_sTitle += "<"; - if( (HTML_TOKEN_ONOFF & nToken) && (1 & nToken) ) + if( (nToken >= HtmlTokenId::ONOFF_START) && isOffToken(nToken) ) m_sTitle += "/"; m_sTitle += sSaveToken; if( !aToken.isEmpty() ) @@ -1052,7 +1052,7 @@ void SwHTMLParser::NextToken( int nToken ) { // <SCRIPT> is ignored here (from us), because it is ignored in // Applets as well - if( HTML_IFRAME_OFF == nToken ) + if( HtmlTokenId::IFRAME_OFF == nToken ) { m_bCallNextToken = false; m_bInFloatingFrame = false; @@ -1064,7 +1064,7 @@ void SwHTMLParser::NextToken( int nToken ) { switch( nToken ) { - case HTML_NOEMBED_OFF: + case HtmlTokenId::NOEMBED_OFF: m_aContents = convertLineEnd(m_aContents, GetSystemLineEnd()); InsertComment( m_aContents, OOO_STRING_SVTOOLS_HTML_noembed ); m_aContents.clear(); @@ -1072,7 +1072,7 @@ void SwHTMLParser::NextToken( int nToken ) m_bInNoEmbed = false; break; - case HTML_RAWDATA: + case HtmlTokenId::RAWDATA: InsertCommentText( OOO_STRING_SVTOOLS_HTML_noembed ); break; @@ -1091,18 +1091,18 @@ void SwHTMLParser::NextToken( int nToken ) switch( nToken ) { - case HTML_APPLET_OFF: + case HtmlTokenId::APPLET_OFF: m_bCallNextToken = false; EndApplet(); break; - case HTML_OBJECT_OFF: + case HtmlTokenId::OBJECT_OFF: m_bCallNextToken = false; EndObject(); break; - - case HTML_PARAM: + case HtmlTokenId::PARAM: InsertParam(); break; + default: break; } return; @@ -1114,13 +1114,13 @@ void SwHTMLParser::NextToken( int nToken ) switch( nToken ) { - case HTML_TEXTAREA_OFF: + case HtmlTokenId::TEXTAREA_OFF: m_bCallNextToken = false; EndTextArea(); break; default: - InsertTextAreaText( static_cast< sal_uInt16 >(nToken) ); + InsertTextAreaText( nToken ); break; } @@ -1131,25 +1131,25 @@ void SwHTMLParser::NextToken( int nToken ) // HAS to be treated after bNoScript! switch( nToken ) { - case HTML_SELECT_OFF: + case HtmlTokenId::SELECT_OFF: m_bCallNextToken = false; EndSelect(); return; - case HTML_OPTION: + case HtmlTokenId::OPTION: InsertSelectOption(); return; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: InsertSelectText(); return; - case HTML_INPUT: - case HTML_SCRIPT_ON: - case HTML_SCRIPT_OFF: - case HTML_NOSCRIPT_ON: - case HTML_NOSCRIPT_OFF: - case HTML_RAWDATA: + case HtmlTokenId::INPUT: + case HtmlTokenId::SCRIPT_ON: + case HtmlTokenId::SCRIPT_OFF: + case HtmlTokenId::NOSCRIPT_ON: + case HtmlTokenId::NOSCRIPT_OFF: + case HtmlTokenId::RAWDATA: // treat in normal switch break; @@ -1165,14 +1165,15 @@ void SwHTMLParser::NextToken( int nToken ) // script. switch( nToken ) { - case HTML_MARQUEE_OFF: + case HtmlTokenId::MARQUEE_OFF: m_bCallNextToken = false; EndMarquee(); break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: InsertMarqueeText(); break; + default: break; } return; @@ -1181,14 +1182,15 @@ void SwHTMLParser::NextToken( int nToken ) { switch( nToken ) { - case HTML_SDFIELD_OFF: + case HtmlTokenId::SDFIELD_OFF: m_bCallNextToken = false; EndField(); break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: InsertFieldText(); break; + default: break; } return; @@ -1197,14 +1199,15 @@ void SwHTMLParser::NextToken( int nToken ) { switch( nToken ) { - case HTML_ANCHOR_OFF: + case HtmlTokenId::ANCHOR_OFF: EndAnchor(); m_bCallNextToken = false; break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: InsertFootEndNoteText(); break; + default: break; } return; } @@ -1231,17 +1234,17 @@ void SwHTMLParser::NextToken( int nToken ) // end-token, </HEAD> or <BODY>. Text inside is ignored. switch( nToken ) { - case HTML_UNKNOWNCONTROL_OFF: + case HtmlTokenId::UNKNOWNCONTROL_OFF: if( m_aUnknownToken != sSaveToken ) return; SAL_FALLTHROUGH; - case HTML_FRAMESET_ON: - case HTML_HEAD_OFF: - case HTML_BODY_ON: - case HTML_IMAGE: // Don't know why Netscape acts this way. + case HtmlTokenId::FRAMESET_ON: + case HtmlTokenId::HEAD_OFF: + case HtmlTokenId::BODY_ON: + case HtmlTokenId::IMAGE: // Don't know why Netscape acts this way. m_aUnknownToken.clear(); break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: return; default: m_aUnknownToken.clear(); @@ -1252,7 +1255,7 @@ void SwHTMLParser::NextToken( int nToken ) switch( nToken ) { - case HTML_BODY_ON: + case HtmlTokenId::BODY_ON: if( !m_aStyleSource.isEmpty() ) { m_pCSS1Parser->ParseStyleSheet( m_aStyleSource ); @@ -1276,11 +1279,11 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_LINK: + case HtmlTokenId::LINK: InsertLink(); break; - case HTML_BASE: + case HtmlTokenId::BASE: { const HTMLOptions& rHTMLOptions = GetOptions(); for (size_t i = rHTMLOptions.size(); i; ) @@ -1315,7 +1318,7 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_META: + case HtmlTokenId::META: { SvKeyValueIterator *pHTTPHeader = nullptr; if( IsNewDoc() ) @@ -1341,32 +1344,32 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_TITLE_ON: + case HtmlTokenId::TITLE_ON: m_bInTitle = true; break; - case HTML_SCRIPT_ON: + case HtmlTokenId::SCRIPT_ON: NewScript(); break; - case HTML_SCRIPT_OFF: + case HtmlTokenId::SCRIPT_OFF: EndScript(); break; - case HTML_NOSCRIPT_ON: - case HTML_NOSCRIPT_OFF: + case HtmlTokenId::NOSCRIPT_ON: + case HtmlTokenId::NOSCRIPT_OFF: bInsertUnknown = true; break; - case HTML_STYLE_ON: + case HtmlTokenId::STYLE_ON: NewStyle(); break; - case HTML_STYLE_OFF: + case HtmlTokenId::STYLE_OFF: EndStyle(); break; - case HTML_RAWDATA: + case HtmlTokenId::RAWDATA: if( !m_bIgnoreRawData ) { if( IsReadScript() ) @@ -1382,26 +1385,26 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_OBJECT_ON: + case HtmlTokenId::OBJECT_ON: #if HAVE_FEATURE_JAVA NewObject(); m_bCallNextToken = m_pAppletImpl!=nullptr && m_pTable!=nullptr; #endif break; - case HTML_APPLET_ON: + case HtmlTokenId::APPLET_ON: #if HAVE_FEATURE_JAVA InsertApplet(); m_bCallNextToken = m_pAppletImpl!=nullptr && m_pTable!=nullptr; #endif break; - case HTML_IFRAME_ON: + case HtmlTokenId::IFRAME_ON: InsertFloatingFrame(); m_bCallNextToken = m_bInFloatingFrame && m_pTable!=nullptr; break; - case HTML_LINEBREAK: + case HtmlTokenId::LINEBREAK: if( !IsReadPRE() ) { InsertLineBreak(); @@ -1412,10 +1415,10 @@ void SwHTMLParser::NextToken( int nToken ) // <BR>s in <PRE> resemble true LFs, hence no break SAL_FALLTHROUGH; - case HTML_NEWPARA: + case HtmlTokenId::NEWPARA: // CR in PRE/LISTING/XMP { - if( HTML_NEWPARA==nToken || + if( HtmlTokenId::NEWPARA==nToken || m_pPam->GetPoint()->nContent.GetIndex() ) { AppendTextNode(); // there is no LF at this place @@ -1428,15 +1431,15 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_NONBREAKSPACE: + case HtmlTokenId::NONBREAKSPACE: m_xDoc->getIDocumentContentOperations().InsertString( *m_pPam, OUString(CHAR_HARDBLANK) ); break; - case HTML_SOFTHYPH: + case HtmlTokenId::SOFTHYPH: m_xDoc->getIDocumentContentOperations().InsertString( *m_pPam, OUString(CHAR_SOFTHYPHEN) ); break; - case HTML_LINEFEEDCHAR: + case HtmlTokenId::LINEFEEDCHAR: if( m_pPam->GetPoint()->nContent.GetIndex() ) AppendTextNode(); if( !m_pTable && !m_xDoc->IsInHeaderFooter( m_pPam->GetPoint()->nNode ) ) @@ -1446,7 +1449,7 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_TEXTTOKEN: + case HtmlTokenId::TEXTTOKEN: // insert string without spanning attributes at the end. if( !aToken.isEmpty() && ' '==aToken[0] && !IsReadPRE() ) { @@ -1485,11 +1488,11 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_HORZRULE: + case HtmlTokenId::HORZRULE: InsertHorzRule(); break; - case HTML_IMAGE: + case HtmlTokenId::IMAGE: InsertImage(); // if only the parser references the doc, we can break and set // an error code @@ -1499,183 +1502,183 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_SPACER: + case HtmlTokenId::SPACER: InsertSpacer(); break; - case HTML_EMBED: + case HtmlTokenId::EMBED: InsertEmbed(); break; - case HTML_NOEMBED_ON: + case HtmlTokenId::NOEMBED_ON: m_bInNoEmbed = true; m_bCallNextToken = m_pTable!=nullptr; ReadRawData( OOO_STRING_SVTOOLS_HTML_noembed ); break; - case HTML_DEFLIST_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::DEFLIST_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); NewDefList(); break; - case HTML_DEFLIST_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::DEFLIST_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - EndDefListItem( 0, 1==m_nDefListDeep ); + EndDefListItem( HtmlTokenId::NONE ); EndDefList(); break; - case HTML_DD_ON: - case HTML_DT_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::DD_ON: + case HtmlTokenId::DT_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); EndDefListItem();// close <DD>/<DT> and set no template NewDefListItem( nToken ); break; - case HTML_DD_OFF: - case HTML_DT_OFF: - // c.f. HTML_LI_OFF + case HtmlTokenId::DD_OFF: + case HtmlTokenId::DT_OFF: + // c.f. HtmlTokenId::LI_OFF // Actually we should close a DD/DT now. // But neither Netscape nor Microsoft do this and so don't we. EndDefListItem( nToken ); break; // divisions - case HTML_DIVISION_ON: - case HTML_CENTER_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::DIVISION_ON: + case HtmlTokenId::CENTER_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) { if( IsReadPRE() ) - m_nOpenParaToken = 0; + m_nOpenParaToken = HtmlTokenId::NONE; else EndPara(); } NewDivision( nToken ); break; - case HTML_DIVISION_OFF: - case HTML_CENTER_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::DIVISION_OFF: + case HtmlTokenId::CENTER_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) { if( IsReadPRE() ) - m_nOpenParaToken = 0; + m_nOpenParaToken = HtmlTokenId::NONE; else EndPara(); } - EndDivision( nToken ); + EndDivision(); break; - case HTML_MULTICOL_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::MULTICOL_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); NewMultiCol(); break; - case HTML_MULTICOL_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::MULTICOL_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - EndTag( HTML_MULTICOL_ON ); + EndTag( HtmlTokenId::MULTICOL_ON ); break; - case HTML_MARQUEE_ON: + case HtmlTokenId::MARQUEE_ON: NewMarquee(); m_bCallNextToken = m_pMarquee!=nullptr && m_pTable!=nullptr; break; - case HTML_FORM_ON: + case HtmlTokenId::FORM_ON: NewForm(); break; - case HTML_FORM_OFF: + case HtmlTokenId::FORM_OFF: EndForm(); break; // templates - case HTML_PARABREAK_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::PARABREAK_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara( true ); NewPara(); break; - case HTML_PARABREAK_OFF: + case HtmlTokenId::PARABREAK_OFF: EndPara( true ); break; - case HTML_ADDRESS_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::ADDRESS_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - NewTextFormatColl( HTML_ADDRESS_ON, RES_POOLCOLL_SENDADRESS ); + NewTextFormatColl( HtmlTokenId::ADDRESS_ON, RES_POOLCOLL_SENDADRESS ); break; - case HTML_ADDRESS_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::ADDRESS_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - EndTextFormatColl( HTML_ADDRESS_OFF ); + EndTextFormatColl( HtmlTokenId::ADDRESS_OFF ); break; - case HTML_BLOCKQUOTE_ON: - case HTML_BLOCKQUOTE30_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE30_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - NewTextFormatColl( HTML_BLOCKQUOTE_ON, RES_POOLCOLL_HTML_BLOCKQUOTE ); + NewTextFormatColl( HtmlTokenId::BLOCKQUOTE_ON, RES_POOLCOLL_HTML_BLOCKQUOTE ); break; - case HTML_BLOCKQUOTE_OFF: - case HTML_BLOCKQUOTE30_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::BLOCKQUOTE_OFF: + case HtmlTokenId::BLOCKQUOTE30_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - EndTextFormatColl( HTML_BLOCKQUOTE_ON ); + EndTextFormatColl( HtmlTokenId::BLOCKQUOTE_ON ); break; - case HTML_PREFORMTXT_ON: - case HTML_LISTING_ON: - case HTML_XMP_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::PREFORMTXT_ON: + case HtmlTokenId::LISTING_ON: + case HtmlTokenId::XMP_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); NewTextFormatColl( nToken, RES_POOLCOLL_HTML_PRE ); break; - case HTML_PREFORMTXT_OFF: + case HtmlTokenId::PREFORMTXT_OFF: m_bNoParSpace = true; // the last PRE-paragraph gets a spacing - EndTextFormatColl( HTML_PREFORMTXT_OFF ); + EndTextFormatColl( HtmlTokenId::PREFORMTXT_OFF ); break; - case HTML_LISTING_OFF: - case HTML_XMP_OFF: + case HtmlTokenId::LISTING_OFF: + case HtmlTokenId::XMP_OFF: EndTextFormatColl( nToken ); break; - case HTML_HEAD1_ON: - case HTML_HEAD2_ON: - case HTML_HEAD3_ON: - case HTML_HEAD4_ON: - case HTML_HEAD5_ON: - case HTML_HEAD6_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::HEAD1_ON: + case HtmlTokenId::HEAD2_ON: + case HtmlTokenId::HEAD3_ON: + case HtmlTokenId::HEAD4_ON: + case HtmlTokenId::HEAD5_ON: + case HtmlTokenId::HEAD6_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) { if( IsReadPRE() ) - m_nOpenParaToken = 0; + m_nOpenParaToken = HtmlTokenId::NONE; else EndPara(); } NewHeading( nToken ); break; - case HTML_HEAD1_OFF: - case HTML_HEAD2_OFF: - case HTML_HEAD3_OFF: - case HTML_HEAD4_OFF: - case HTML_HEAD5_OFF: - case HTML_HEAD6_OFF: + case HtmlTokenId::HEAD1_OFF: + case HtmlTokenId::HEAD2_OFF: + case HtmlTokenId::HEAD3_OFF: + case HtmlTokenId::HEAD4_OFF: + case HtmlTokenId::HEAD5_OFF: + case HtmlTokenId::HEAD6_OFF: EndHeading(); break; - case HTML_TABLE_ON: + case HtmlTokenId::TABLE_ON: if( m_pPendStack ) BuildTable( SvxAdjust::End ); else { - if( m_nOpenParaToken ) + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); OSL_ENSURE( !m_pTable, "table in table not allowed here" ); if( !m_pTable && (IsNewDoc() || !m_pPam->GetNode().FindTableNode()) && @@ -1698,189 +1701,189 @@ void SwHTMLParser::NextToken( int nToken ) break; // lists - case HTML_DIRLIST_ON: - case HTML_MENULIST_ON: - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: - if( m_nOpenParaToken ) + case HtmlTokenId::DIRLIST_ON: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); NewNumBulList( nToken ); break; - case HTML_DIRLIST_OFF: - case HTML_MENULIST_OFF: - case HTML_ORDERLIST_OFF: - case HTML_UNORDERLIST_OFF: - if( m_nOpenParaToken ) + case HtmlTokenId::DIRLIST_OFF: + case HtmlTokenId::MENULIST_OFF: + case HtmlTokenId::ORDERLIST_OFF: + case HtmlTokenId::UNORDERLIST_OFF: + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); - EndNumBulListItem( 0, true, GetNumInfo().GetDepth()==1 ); + EndNumBulListItem( HtmlTokenId::NONE, true, GetNumInfo().GetDepth()==1 ); EndNumBulList( nToken ); break; - case HTML_LI_ON: - case HTML_LISTHEADER_ON: - if( m_nOpenParaToken && + case HtmlTokenId::LI_ON: + case HtmlTokenId::LISTHEADER_ON: + if( m_nOpenParaToken != HtmlTokenId::NONE && (m_pPam->GetPoint()->nContent.GetIndex() - || HTML_PARABREAK_ON==m_nOpenParaToken) ) + || HtmlTokenId::PARABREAK_ON==m_nOpenParaToken) ) { // only finish paragraph for <P><LI>, not for <DD><LI> EndPara(); } - EndNumBulListItem( 0, false );// close <LI>/<LH> and don't set a template + EndNumBulListItem( HtmlTokenId::NONE, false );// close <LI>/<LH> and don't set a template NewNumBulListItem( nToken ); break; - case HTML_LI_OFF: - case HTML_LISTHEADER_OFF: + case HtmlTokenId::LI_OFF: + case HtmlTokenId::LISTHEADER_OFF: EndNumBulListItem( nToken, false ); break; // Attribute : - case HTML_ITALIC_ON: + case HtmlTokenId::ITALIC_ON: { SvxPostureItem aPosture( ITALIC_NORMAL, RES_CHRATR_POSTURE ); SvxPostureItem aPostureCJK( ITALIC_NORMAL, RES_CHRATR_CJK_POSTURE ); SvxPostureItem aPostureCTL( ITALIC_NORMAL, RES_CHRATR_CTL_POSTURE ); - NewStdAttr( HTML_ITALIC_ON, + NewStdAttr( HtmlTokenId::ITALIC_ON, &m_aAttrTab.pItalic, aPosture, &m_aAttrTab.pItalicCJK, &aPostureCJK, &m_aAttrTab.pItalicCTL, &aPostureCTL ); } break; - case HTML_BOLD_ON: + case HtmlTokenId::BOLD_ON: { SvxWeightItem aWeight( WEIGHT_BOLD, RES_CHRATR_WEIGHT ); SvxWeightItem aWeightCJK( WEIGHT_BOLD, RES_CHRATR_CJK_WEIGHT ); SvxWeightItem aWeightCTL( WEIGHT_BOLD, RES_CHRATR_CTL_WEIGHT ); - NewStdAttr( HTML_BOLD_ON, + NewStdAttr( HtmlTokenId::BOLD_ON, &m_aAttrTab.pBold, aWeight, &m_aAttrTab.pBoldCJK, &aWeightCJK, &m_aAttrTab.pBoldCTL, &aWeightCTL ); } break; - case HTML_STRIKE_ON: - case HTML_STRIKETHROUGH_ON: + case HtmlTokenId::STRIKE_ON: + case HtmlTokenId::STRIKETHROUGH_ON: { - NewStdAttr( HTML_STRIKE_ON, &m_aAttrTab.pStrike, + NewStdAttr( HtmlTokenId::STRIKE_ON, &m_aAttrTab.pStrike, SvxCrossedOutItem(STRIKEOUT_SINGLE, RES_CHRATR_CROSSEDOUT) ); } break; - case HTML_UNDERLINE_ON: + case HtmlTokenId::UNDERLINE_ON: { - NewStdAttr( HTML_UNDERLINE_ON, &m_aAttrTab.pUnderline, + NewStdAttr( HtmlTokenId::UNDERLINE_ON, &m_aAttrTab.pUnderline, SvxUnderlineItem(LINESTYLE_SINGLE, RES_CHRATR_UNDERLINE) ); } break; - case HTML_SUPERSCRIPT_ON: + case HtmlTokenId::SUPERSCRIPT_ON: { - NewStdAttr( HTML_SUPERSCRIPT_ON, &m_aAttrTab.pEscapement, + NewStdAttr( HtmlTokenId::SUPERSCRIPT_ON, &m_aAttrTab.pEscapement, SvxEscapementItem(HTML_ESC_SUPER,HTML_ESC_PROP, RES_CHRATR_ESCAPEMENT) ); } break; - case HTML_SUBSCRIPT_ON: + case HtmlTokenId::SUBSCRIPT_ON: { - NewStdAttr( HTML_SUBSCRIPT_ON, &m_aAttrTab.pEscapement, + NewStdAttr( HtmlTokenId::SUBSCRIPT_ON, &m_aAttrTab.pEscapement, SvxEscapementItem(HTML_ESC_SUB,HTML_ESC_PROP, RES_CHRATR_ESCAPEMENT) ); } break; - case HTML_BLINK_ON: + case HtmlTokenId::BLINK_ON: { - NewStdAttr( HTML_BLINK_ON, &m_aAttrTab.pBlink, + NewStdAttr( HtmlTokenId::BLINK_ON, &m_aAttrTab.pBlink, SvxBlinkItem( true, RES_CHRATR_BLINK ) ); } break; - case HTML_SPAN_ON: - NewStdAttr( HTML_SPAN_ON ); + case HtmlTokenId::SPAN_ON: + NewStdAttr( HtmlTokenId::SPAN_ON ); break; - case HTML_ITALIC_OFF: - case HTML_BOLD_OFF: - case HTML_STRIKE_OFF: - case HTML_UNDERLINE_OFF: - case HTML_SUPERSCRIPT_OFF: - case HTML_SUBSCRIPT_OFF: - case HTML_BLINK_OFF: - case HTML_SPAN_OFF: + case HtmlTokenId::ITALIC_OFF: + case HtmlTokenId::BOLD_OFF: + case HtmlTokenId::STRIKE_OFF: + case HtmlTokenId::UNDERLINE_OFF: + case HtmlTokenId::SUPERSCRIPT_OFF: + case HtmlTokenId::SUBSCRIPT_OFF: + case HtmlTokenId::BLINK_OFF: + case HtmlTokenId::SPAN_OFF: EndTag( nToken ); break; - case HTML_STRIKETHROUGH_OFF: - EndTag( HTML_STRIKE_OFF ); + case HtmlTokenId::STRIKETHROUGH_OFF: + EndTag( HtmlTokenId::STRIKE_OFF ); break; - case HTML_BASEFONT_ON: + case HtmlTokenId::BASEFONT_ON: NewBasefontAttr(); break; - case HTML_BASEFONT_OFF: + case HtmlTokenId::BASEFONT_OFF: EndBasefontAttr(); break; - case HTML_FONT_ON: - case HTML_BIGPRINT_ON: - case HTML_SMALLPRINT_ON: + case HtmlTokenId::FONT_ON: + case HtmlTokenId::BIGPRINT_ON: + case HtmlTokenId::SMALLPRINT_ON: NewFontAttr( nToken ); break; - case HTML_FONT_OFF: - case HTML_BIGPRINT_OFF: - case HTML_SMALLPRINT_OFF: + case HtmlTokenId::FONT_OFF: + case HtmlTokenId::BIGPRINT_OFF: + case HtmlTokenId::SMALLPRINT_OFF: EndFontAttr( nToken ); break; - case HTML_EMPHASIS_ON: - case HTML_CITIATION_ON: - case HTML_STRONG_ON: - case HTML_CODE_ON: - case HTML_SAMPLE_ON: - case HTML_KEYBOARD_ON: - case HTML_VARIABLE_ON: - case HTML_DEFINSTANCE_ON: - case HTML_SHORTQUOTE_ON: - case HTML_LANGUAGE_ON: - case HTML_AUTHOR_ON: - case HTML_PERSON_ON: - case HTML_ACRONYM_ON: - case HTML_ABBREVIATION_ON: - case HTML_INSERTEDTEXT_ON: - case HTML_DELETEDTEXT_ON: - - case HTML_TELETYPE_ON: + case HtmlTokenId::EMPHASIS_ON: + case HtmlTokenId::CITIATION_ON: + case HtmlTokenId::STRONG_ON: + case HtmlTokenId::CODE_ON: + case HtmlTokenId::SAMPLE_ON: + case HtmlTokenId::KEYBOARD_ON: + case HtmlTokenId::VARIABLE_ON: + case HtmlTokenId::DEFINSTANCE_ON: + case HtmlTokenId::SHORTQUOTE_ON: + case HtmlTokenId::LANGUAGE_ON: + case HtmlTokenId::AUTHOR_ON: + case HtmlTokenId::PERSON_ON: + case HtmlTokenId::ACRONYM_ON: + case HtmlTokenId::ABBREVIATION_ON: + case HtmlTokenId::INSERTEDTEXT_ON: + case HtmlTokenId::DELETEDTEXT_ON: + + case HtmlTokenId::TELETYPE_ON: NewCharFormat( nToken ); break; - case HTML_SDFIELD_ON: + case HtmlTokenId::SDFIELD_ON: NewField(); m_bCallNextToken = m_bInField && m_pTable!=nullptr; break; - case HTML_EMPHASIS_OFF: - case HTML_CITIATION_OFF: - case HTML_STRONG_OFF: - case HTML_CODE_OFF: - case HTML_SAMPLE_OFF: - case HTML_KEYBOARD_OFF: - case HTML_VARIABLE_OFF: - case HTML_DEFINSTANCE_OFF: - case HTML_SHORTQUOTE_OFF: - case HTML_LANGUAGE_OFF: - case HTML_AUTHOR_OFF: - case HTML_PERSON_OFF: - case HTML_ACRONYM_OFF: - case HTML_ABBREVIATION_OFF: - case HTML_INSERTEDTEXT_OFF: - case HTML_DELETEDTEXT_OFF: - - case HTML_TELETYPE_OFF: + case HtmlTokenId::EMPHASIS_OFF: + case HtmlTokenId::CITIATION_OFF: + case HtmlTokenId::STRONG_OFF: + case HtmlTokenId::CODE_OFF: + case HtmlTokenId::SAMPLE_OFF: + case HtmlTokenId::KEYBOARD_OFF: + case HtmlTokenId::VARIABLE_OFF: + case HtmlTokenId::DEFINSTANCE_OFF: + case HtmlTokenId::SHORTQUOTE_OFF: + case HtmlTokenId::LANGUAGE_OFF: + case HtmlTokenId::AUTHOR_OFF: + case HtmlTokenId::PERSON_OFF: + case HtmlTokenId::ACRONYM_OFF: + case HtmlTokenId::ABBREVIATION_OFF: + case HtmlTokenId::INSERTEDTEXT_OFF: + case HtmlTokenId::DELETEDTEXT_OFF: + + case HtmlTokenId::TELETYPE_OFF: EndTag( nToken ); break; - case HTML_HEAD_OFF: + case HtmlTokenId::HEAD_OFF: if( !m_aStyleSource.isEmpty() ) { m_pCSS1Parser->ParseStyleSheet( m_aStyleSource ); @@ -1888,13 +1891,13 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_DOCTYPE: - case HTML_BODY_OFF: - case HTML_HTML_OFF: - case HTML_HEAD_ON: - case HTML_TITLE_OFF: + case HtmlTokenId::DOCTYPE: + case HtmlTokenId::BODY_OFF: + case HtmlTokenId::HTML_OFF: + case HtmlTokenId::HEAD_ON: + case HtmlTokenId::TITLE_OFF: break; // don't evaluate further??? - case HTML_HTML_ON: + case HtmlTokenId::HTML_ON: { const HTMLOptions& rHTMLOptions = GetOptions(); for (size_t i = rHTMLOptions.size(); i; ) @@ -1917,29 +1920,29 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_INPUT: + case HtmlTokenId::INPUT: InsertInput(); break; - case HTML_TEXTAREA_ON: + case HtmlTokenId::TEXTAREA_ON: NewTextArea(); m_bCallNextToken = m_bTextArea && m_pTable!=nullptr; break; - case HTML_SELECT_ON: + case HtmlTokenId::SELECT_ON: NewSelect(); m_bCallNextToken = m_bSelect && m_pTable!=nullptr; break; - case HTML_ANCHOR_ON: + case HtmlTokenId::ANCHOR_ON: NewAnchor(); break; - case HTML_ANCHOR_OFF: + case HtmlTokenId::ANCHOR_OFF: EndAnchor(); break; - case HTML_COMMENT: + case HtmlTokenId::COMMENT: if( ( aToken.getLength() > 5 ) && ( ! m_bIgnoreHTMLComments ) ) { // insert as Post-It @@ -1960,7 +1963,7 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_MAP_ON: + case HtmlTokenId::MAP_ON: // Image Maps are read asynchronously: At first only an image map is created // Areas are processed later. Nevertheless the // ImageMap is inserted into the IMap-Array, because it might be used @@ -1979,29 +1982,29 @@ void SwHTMLParser::NextToken( int nToken ) } break; - case HTML_MAP_OFF: + case HtmlTokenId::MAP_OFF: // there is no ImageMap anymore (don't delete IMap, because it's // already contained in the array!) m_pImageMap = nullptr; break; - case HTML_AREA: + case HtmlTokenId::AREA: if( m_pImageMap ) ParseAreaOptions( m_pImageMap, m_sBaseURL, SFX_EVENT_MOUSEOVER_OBJECT, SFX_EVENT_MOUSEOUT_OBJECT ); break; - case HTML_FRAMESET_ON: + case HtmlTokenId::FRAMESET_ON: bInsertUnknown = m_bKeepUnknown; break; - case HTML_NOFRAMES_ON: + case HtmlTokenId::NOFRAMES_ON: if( IsInHeader() ) FinishHeader( true ); bInsertUnknown = m_bKeepUnknown; break; - case HTML_UNKNOWNCONTROL_ON: + case HtmlTokenId::UNKNOWNCONTROL_ON: // Ignore content of unknown token in the header, if the token // does not start with a '!'. // (but judging from the code, also if does not start with a '%') @@ -2023,7 +2026,7 @@ void SwHTMLParser::NextToken( int nToken ) if( bInsertUnknown ) { OUString aComment("HTML: <"); - if( (HTML_TOKEN_ONOFF & nToken) != 0 && (1 & nToken) != 0 ) + if( (nToken >= HtmlTokenId::ONOFF_START) && isOffToken(nToken) ) aComment += "/"; aComment += sSaveToken; if( !aToken.isEmpty() ) @@ -3401,7 +3404,7 @@ void SwHTMLParser::InsertAttrs( HTMLAttrs& rAttrs ) } } -void SwHTMLParser::NewStdAttr( int nToken ) +void SwHTMLParser::NewStdAttr( HtmlTokenId nToken ) { OUString aId, aStyle, aLang, aDir; OUString aClass; @@ -3432,7 +3435,7 @@ void SwHTMLParser::NewStdAttr( int nToken ) } // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); // Styles parsen if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) ) @@ -3442,7 +3445,7 @@ void SwHTMLParser::NewStdAttr( int nToken ) if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo, &aLang, &aDir ) ) { - if( HTML_SPAN_ON != nToken || aClass.isEmpty() || + if( HtmlTokenId::SPAN_ON != nToken || aClass.isEmpty() || !CreateContainer( aClass, aItemSet, aPropInfo, pCntxt ) ) DoPositioning( aItemSet, aPropInfo, pCntxt ); InsertAttrs( aItemSet, aPropInfo, pCntxt, true ); @@ -3453,7 +3456,7 @@ void SwHTMLParser::NewStdAttr( int nToken ) PushContext( pCntxt ); } -void SwHTMLParser::NewStdAttr( int nToken, +void SwHTMLParser::NewStdAttr( HtmlTokenId nToken, HTMLAttr **ppAttr, const SfxPoolItem & rItem, HTMLAttr **ppAttr2, const SfxPoolItem *pItem2, HTMLAttr **ppAttr3, const SfxPoolItem *pItem3 ) @@ -3486,7 +3489,7 @@ void SwHTMLParser::NewStdAttr( int nToken, } // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); // Styles parsen if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) ) @@ -3524,10 +3527,10 @@ void SwHTMLParser::NewStdAttr( int nToken, PushContext( pCntxt ); } -void SwHTMLParser::EndTag( int nToken ) +void SwHTMLParser::EndTag( HtmlTokenId nToken ) { // den Kontext holen - HTMLAttrContext *pCntxt = PopContext( static_cast< sal_uInt16 >(nToken & ~1) ); + HTMLAttrContext *pCntxt = PopContext( getOnToken(nToken) ); if( pCntxt ) { // und ggf. die Attribute beenden @@ -3576,7 +3579,7 @@ void SwHTMLParser::NewBasefontAttr() nSize = 7; // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_BASEFONT_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::BASEFONT_ON ); // Styles parsen if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) ) @@ -3619,14 +3622,14 @@ void SwHTMLParser::NewBasefontAttr() void SwHTMLParser::EndBasefontAttr() { - EndTag( HTML_BASEFONT_ON ); + EndTag( HtmlTokenId::BASEFONT_ON ); // Stack-Unterlauf in Tabellen vermeiden if( m_aBaseFontStack.size() > m_nBaseFontStMin ) m_aBaseFontStack.erase( m_aBaseFontStack.begin() + m_aBaseFontStack.size() - 1 ); } -void SwHTMLParser::NewFontAttr( int nToken ) +void SwHTMLParser::NewFontAttr( HtmlTokenId nToken ) { sal_uInt16 nBaseSize = ( m_aBaseFontStack.size() > m_nBaseFontStMin @@ -3650,7 +3653,7 @@ void SwHTMLParser::NewFontAttr( int nToken ) switch( rOption.GetToken() ) { case HtmlOptionId::SIZE: - if( HTML_FONT_ON==nToken && !rOption.GetString().isEmpty() ) + if( HtmlTokenId::FONT_ON==nToken && !rOption.GetString().isEmpty() ) { sal_Int32 nSSize; if( '+' == rOption.GetString()[0] || @@ -3669,14 +3672,14 @@ void SwHTMLParser::NewFontAttr( int nToken ) } break; case HtmlOptionId::COLOR: - if( HTML_FONT_ON==nToken ) + if( HtmlTokenId::FONT_ON==nToken ) { rOption.GetColor( aColor ); bColor = true; } break; case HtmlOptionId::FACE: - if( HTML_FONT_ON==nToken ) + if( HtmlTokenId::FONT_ON==nToken ) aFace = rOption.GetString(); break; case HtmlOptionId::ID: @@ -3698,7 +3701,7 @@ void SwHTMLParser::NewFontAttr( int nToken ) } } - if( HTML_FONT_ON != nToken ) + if( HtmlTokenId::FONT_ON != nToken ) { // HTML_BIGPRINT_ON oder HTML_SMALLPRINT_ON @@ -3716,7 +3719,7 @@ void SwHTMLParser::NewFontAttr( int nToken ) else nPoolId = 0; - if( HTML_BIGPRINT_ON == nToken ) + if( HtmlTokenId::BIGPRINT_ON == nToken ) nSize = ( nFontSize<7 ? nFontSize+1 : 7 ); else nSize = ( nFontSize>1 ? nFontSize-1 : 1 ); @@ -3780,7 +3783,7 @@ void SwHTMLParser::NewFontAttr( int nToken ) } // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext(nToken ); // Styles parsen if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) ) @@ -3844,7 +3847,7 @@ void SwHTMLParser::NewFontAttr( int nToken ) m_aFontStack.push_back( nSize ); } -void SwHTMLParser::EndFontAttr( int nToken ) +void SwHTMLParser::EndFontAttr( HtmlTokenId nToken ) { EndTag( nToken ); @@ -3893,9 +3896,9 @@ void SwHTMLParser::NewPara() // einen neuen Kontext anlegen HTMLAttrContext *pCntxt = - !aClass.isEmpty() ? new HTMLAttrContext( HTML_PARABREAK_ON, + !aClass.isEmpty() ? new HTMLAttrContext( HtmlTokenId::PARABREAK_ON, RES_POOLCOLL_TEXT, aClass ) - : new HTMLAttrContext( HTML_PARABREAK_ON ); + : new HTMLAttrContext( HtmlTokenId::PARABREAK_ON ); // Styles parsen (Class nicht beruecksichtigen. Das geht nur, solange // keine der CSS1-Properties der Klasse hart formatiert werden muss!!!) @@ -3925,13 +3928,13 @@ void SwHTMLParser::NewPara() // Laufbalkenanzeige ShowStatline(); - OSL_ENSURE( !m_nOpenParaToken, "Jetzt geht ein offenes Absatz-Element verloren" ); - m_nOpenParaToken = HTML_PARABREAK_ON; + OSL_ENSURE( m_nOpenParaToken == HtmlTokenId::NONE, "Jetzt geht ein offenes Absatz-Element verloren" ); + m_nOpenParaToken = HtmlTokenId::PARABREAK_ON; } void SwHTMLParser::EndPara( bool bReal ) { - if( HTML_LI_ON==m_nOpenParaToken && m_pTable ) + if( HtmlTokenId::LI_ON==m_nOpenParaToken && m_pTable ) { #if OSL_DEBUG_LEVEL > 0 const SwNumRule *pNumRule = m_pPam->GetNode().GetTextNode()->GetNumRule(); @@ -3950,7 +3953,7 @@ void SwHTMLParser::EndPara( bool bReal ) // wenn ein DD oder DT offen war, handelt es sich um eine // implizite Def-Liste, die jetzt beendet werden muss - if( (m_nOpenParaToken==HTML_DT_ON || m_nOpenParaToken==HTML_DD_ON) && + if( (m_nOpenParaToken == HtmlTokenId::DT_ON || m_nOpenParaToken == HtmlTokenId::DD_ON) && m_nDefListDeep) { m_nDefListDeep--; @@ -3959,8 +3962,7 @@ void SwHTMLParser::EndPara( bool bReal ) // den Kontext vom Stack holen. Er kann auch von einer implizit // geoeffneten Definitionsliste kommen HTMLAttrContext *pCntxt = - PopContext( static_cast< sal_uInt16 >(m_nOpenParaToken ? (m_nOpenParaToken & ~1) - : HTML_PARABREAK_ON) ); + PopContext( m_nOpenParaToken != HtmlTokenId::NONE ? getOnToken(m_nOpenParaToken) : HtmlTokenId::PARABREAK_ON ); // Attribute beenden if( pCntxt ) @@ -3974,10 +3976,10 @@ void SwHTMLParser::EndPara( bool bReal ) if( bReal ) SetTextCollAttrs(); - m_nOpenParaToken = 0; + m_nOpenParaToken = HtmlTokenId::NONE; } -void SwHTMLParser::NewHeading( int nToken ) +void SwHTMLParser::NewHeading( HtmlTokenId nToken ) { m_eParaAdjust = SvxAdjust::End; @@ -4021,17 +4023,17 @@ void SwHTMLParser::NewHeading( int nToken ) sal_uInt16 nTextColl; switch( nToken ) { - case HTML_HEAD1_ON: nTextColl = RES_POOLCOLL_HEADLINE1; break; - case HTML_HEAD2_ON: nTextColl = RES_POOLCOLL_HEADLINE2; break; - case HTML_HEAD3_ON: nTextColl = RES_POOLCOLL_HEADLINE3; break; - case HTML_HEAD4_ON: nTextColl = RES_POOLCOLL_HEADLINE4; break; - case HTML_HEAD5_ON: nTextColl = RES_POOLCOLL_HEADLINE5; break; - case HTML_HEAD6_ON: nTextColl = RES_POOLCOLL_HEADLINE6; break; + case HtmlTokenId::HEAD1_ON: nTextColl = RES_POOLCOLL_HEADLINE1; break; + case HtmlTokenId::HEAD2_ON: nTextColl = RES_POOLCOLL_HEADLINE2; break; + case HtmlTokenId::HEAD3_ON: nTextColl = RES_POOLCOLL_HEADLINE3; break; + case HtmlTokenId::HEAD4_ON: nTextColl = RES_POOLCOLL_HEADLINE4; break; + case HtmlTokenId::HEAD5_ON: nTextColl = RES_POOLCOLL_HEADLINE5; break; + case HtmlTokenId::HEAD6_ON: nTextColl = RES_POOLCOLL_HEADLINE6; break; default: nTextColl = RES_POOLCOLL_STANDARD; break; } // den Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken), nTextColl, aClass ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken, nTextColl, aClass ); // Styles parsen (zu Class siehe auch NewPara) if( HasStyleOptions( aStyle, aId, aEmptyOUStr, &aLang, &aDir ) ) @@ -4078,15 +4080,16 @@ void SwHTMLParser::EndHeading() { switch( m_aContexts[--nPos]->GetToken() ) { - case HTML_HEAD1_ON: - case HTML_HEAD2_ON: - case HTML_HEAD3_ON: - case HTML_HEAD4_ON: - case HTML_HEAD5_ON: - case HTML_HEAD6_ON: + case HtmlTokenId::HEAD1_ON: + case HtmlTokenId::HEAD2_ON: + case HtmlTokenId::HEAD3_ON: + case HtmlTokenId::HEAD4_ON: + case HtmlTokenId::HEAD5_ON: + case HtmlTokenId::HEAD6_ON: pCntxt = m_aContexts[nPos]; m_aContexts.erase( m_aContexts.begin() + nPos ); break; + default: break; } } @@ -4104,7 +4107,7 @@ void SwHTMLParser::EndHeading() m_nFontStHeadStart = m_nFontStMin; } -void SwHTMLParser::NewTextFormatColl( int nToken, sal_uInt16 nColl ) +void SwHTMLParser::NewTextFormatColl( HtmlTokenId nToken, sal_uInt16 nColl ) { OUString aId, aStyle, aClass, aLang, aDir; @@ -4137,23 +4140,23 @@ void SwHTMLParser::NewTextFormatColl( int nToken, sal_uInt16 nColl ) SwHTMLAppendMode eMode = AM_NORMAL; switch( nToken ) { - case HTML_LISTING_ON: - case HTML_XMP_ON: + case HtmlTokenId::LISTING_ON: + case HtmlTokenId::XMP_ON: // Diese beiden Tags werden jetzt auf die PRE-Vorlage gemappt. // Fuer dem Fall, dass ein CLASS angegeben ist, loeschen wir // es damit wir nicht die CLASS der PRE-Vorlage bekommen. aClass = aEmptyOUStr; SAL_FALLTHROUGH; - case HTML_BLOCKQUOTE_ON: - case HTML_BLOCKQUOTE30_ON: - case HTML_PREFORMTXT_ON: + case HtmlTokenId::BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE30_ON: + case HtmlTokenId::PREFORMTXT_ON: eMode = AM_SPACE; break; - case HTML_ADDRESS_ON: + case HtmlTokenId::ADDRESS_ON: eMode = AM_NOSPACE; // ADDRESS kann auf einen <P> ohne </P> folgen break; - case HTML_DT_ON: - case HTML_DD_ON: + case HtmlTokenId::DT_ON: + case HtmlTokenId::DD_ON: eMode = AM_SOFTNOSPACE; break; default: @@ -4166,7 +4169,7 @@ void SwHTMLParser::NewTextFormatColl( int nToken, sal_uInt16 nColl ) AddParSpace(); // ... und in einem Kontext merken - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken), nColl, aClass ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken, nColl, aClass ); // Styles parsen (zu Class siehe auch NewPara) if( HasStyleOptions( aStyle, aId, aEmptyOUStr, &aLang, &aDir ) ) @@ -4192,21 +4195,21 @@ void SwHTMLParser::NewTextFormatColl( int nToken, sal_uInt16 nColl ) ShowStatline(); } -void SwHTMLParser::EndTextFormatColl( int nToken ) +void SwHTMLParser::EndTextFormatColl( HtmlTokenId nToken ) { SwHTMLAppendMode eMode = AM_NORMAL; - switch( nToken & ~1 ) + switch( getOnToken(nToken) ) { - case HTML_BLOCKQUOTE_ON: - case HTML_BLOCKQUOTE30_ON: - case HTML_PREFORMTXT_ON: - case HTML_LISTING_ON: - case HTML_XMP_ON: + case HtmlTokenId::BLOCKQUOTE_ON: + case HtmlTokenId::BLOCKQUOTE30_ON: + case HtmlTokenId::PREFORMTXT_ON: + case HtmlTokenId::LISTING_ON: + case HtmlTokenId::XMP_ON: eMode = AM_SPACE; break; - case HTML_ADDRESS_ON: - case HTML_DT_ON: - case HTML_DD_ON: + case HtmlTokenId::ADDRESS_ON: + case HtmlTokenId::DT_ON: + case HtmlTokenId::DD_ON: eMode = AM_SOFTNOSPACE; break; default: @@ -4219,7 +4222,7 @@ void SwHTMLParser::EndTextFormatColl( int nToken ) AddParSpace(); // den aktuellen Kontext vom Stack holen - HTMLAttrContext *pCntxt = PopContext( static_cast< sal_uInt16 >(nToken & ~1) ); + HTMLAttrContext *pCntxt = PopContext( getOnToken(nToken) ); // und noch Attribute beenden if( pCntxt ) @@ -4276,24 +4279,25 @@ void SwHTMLParser::NewDefList() auto nPos = m_aContexts.size(); while( !bInDD && !bNotInDD && nPos>m_nContextStMin ) { - sal_uInt16 nCntxtToken = m_aContexts[--nPos]->GetToken(); + HtmlTokenId nCntxtToken = m_aContexts[--nPos]->GetToken(); switch( nCntxtToken ) { - case HTML_DEFLIST_ON: - case HTML_DIRLIST_ON: - case HTML_MENULIST_ON: - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: + case HtmlTokenId::DEFLIST_ON: + case HtmlTokenId::DIRLIST_ON: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: bNotInDD = true; break; - case HTML_DD_ON: + case HtmlTokenId::DD_ON: bInDD = true; break; + default: break; } } // ... und in einem Kontext merken - HTMLAttrContext *pCntxt = new HTMLAttrContext( HTML_DEFLIST_ON ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( HtmlTokenId::DEFLIST_ON ); // darin auch die Raender merken sal_uInt16 nLeft=0, nRight=0; @@ -4349,7 +4353,7 @@ void SwHTMLParser::EndDefList() m_nDefListDeep--; // den aktuellen Kontext vom Stack holen - HTMLAttrContext *pCntxt = PopContext( HTML_DEFLIST_ON ); + HTMLAttrContext *pCntxt = PopContext( HtmlTokenId::DEFLIST_ON ); // und noch Attribute beenden if( pCntxt ) @@ -4363,25 +4367,26 @@ void SwHTMLParser::EndDefList() SetTextCollAttrs(); } -void SwHTMLParser::NewDefListItem( int nToken ) +void SwHTMLParser::NewDefListItem( HtmlTokenId nToken ) { // festellen, ob das DD/DT in einer DL vorkommt bool bInDefList = false, bNotInDefList = false; auto nPos = m_aContexts.size(); while( !bInDefList && !bNotInDefList && nPos>m_nContextStMin ) { - sal_uInt16 nCntxtToken = m_aContexts[--nPos]->GetToken(); + HtmlTokenId nCntxtToken = m_aContexts[--nPos]->GetToken(); switch( nCntxtToken ) { - case HTML_DEFLIST_ON: + case HtmlTokenId::DEFLIST_ON: bInDefList = true; break; - case HTML_DIRLIST_ON: - case HTML_MENULIST_ON: - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: + case HtmlTokenId::DIRLIST_ON: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: bNotInDefList = true; break; + default: break; } } @@ -4389,47 +4394,48 @@ void SwHTMLParser::NewDefListItem( int nToken ) if( !bInDefList ) { m_nDefListDeep++; - OSL_ENSURE( !m_nOpenParaToken, + OSL_ENSURE( m_nOpenParaToken == HtmlTokenId::NONE, "Jetzt geht ein offenes Absatz-Element verloren" ); - m_nOpenParaToken = static_cast< sal_uInt16 >(nToken); + m_nOpenParaToken = nToken; } - NewTextFormatColl( nToken, static_cast< sal_uInt16 >(nToken==HTML_DD_ON ? RES_POOLCOLL_HTML_DD + NewTextFormatColl( nToken, static_cast< sal_uInt16 >(nToken==HtmlTokenId::DD_ON ? RES_POOLCOLL_HTML_DD : RES_POOLCOLL_HTML_DT) ); } -void SwHTMLParser::EndDefListItem( int nToken, bool /*bLastPara*/ ) +void SwHTMLParser::EndDefListItem( HtmlTokenId nToken ) { // einen neuen Absatz aufmachen - if( !nToken && m_pPam->GetPoint()->nContent.GetIndex() ) + if( nToken == HtmlTokenId::NONE && m_pPam->GetPoint()->nContent.GetIndex() ) AppendTextNode( AM_SOFTNOSPACE ); // Kontext zu dem Token suchen und vom Stack holen - nToken &= ~1; + nToken = getOnToken(nToken); HTMLAttrContext *pCntxt = nullptr; auto nPos = m_aContexts.size(); while( !pCntxt && nPos>m_nContextStMin ) { - sal_uInt16 nCntxtToken = m_aContexts[--nPos]->GetToken(); + HtmlTokenId nCntxtToken = m_aContexts[--nPos]->GetToken(); switch( nCntxtToken ) { - case HTML_DD_ON: - case HTML_DT_ON: - if( !nToken || nToken == nCntxtToken ) + case HtmlTokenId::DD_ON: + case HtmlTokenId::DT_ON: + if( nToken == HtmlTokenId::NONE || nToken == nCntxtToken ) { pCntxt = m_aContexts[nPos]; m_aContexts.erase( m_aContexts.begin() + nPos ); } break; - case HTML_DEFLIST_ON: + case HtmlTokenId::DEFLIST_ON: // keine DD/DT ausserhalb der aktuelen DefListe betrachten - case HTML_DIRLIST_ON: - case HTML_MENULIST_ON: - case HTML_ORDERLIST_ON: - case HTML_UNORDERLIST_ON: + case HtmlTokenId::DIRLIST_ON: + case HtmlTokenId::MENULIST_ON: + case HtmlTokenId::ORDERLIST_ON: + case HtmlTokenId::UNORDERLIST_ON: // und auch nicht ausserhalb einer anderen Liste nPos = m_nContextStMin; break; + default: break; } } @@ -4742,7 +4748,7 @@ void SwHTMLParser::SetTextCollAttrs( HTMLAttrContext *pContext ) } } -void SwHTMLParser::NewCharFormat( int nToken ) +void SwHTMLParser::NewCharFormat( HtmlTokenId nToken ) { OUString aId, aStyle, aLang, aDir; OUString aClass; @@ -4773,10 +4779,10 @@ void SwHTMLParser::NewCharFormat( int nToken ) } // einen neuen Kontext anlegen - HTMLAttrContext *pCntxt = new HTMLAttrContext( static_cast< sal_uInt16 >(nToken) ); + HTMLAttrContext *pCntxt = new HTMLAttrContext( nToken ); // die Vorlage setzen und im Kontext merken - SwCharFormat* pCFormat = m_pCSS1Parser->GetChrFormat( static_cast< sal_uInt16 >(nToken), aClass ); + SwCharFormat* pCFormat = m_pCSS1Parser->GetChrFormat( nToken, aClass ); OSL_ENSURE( pCFormat, "keine Zeichenvorlage zu Token gefunden" ); // Styles parsen (zu Class siehe auch NewPara) @@ -5243,14 +5249,14 @@ void SwHTMLParser::InsertHorzRule() if( m_pPam->GetPoint()->nContent.GetIndex() ) AppendTextNode( AM_NOSPACE ); - if( m_nOpenParaToken ) + if( m_nOpenParaToken != HtmlTokenId::NONE ) EndPara(); AppendTextNode(); m_pPam->Move( fnMoveBackward ); // ... und in einem Kontext merken HTMLAttrContext *pCntxt = - new HTMLAttrContext( HTML_HORZRULE, RES_POOLCOLL_HTML_HR, aEmptyOUStr ); + new HTMLAttrContext( HtmlTokenId::HORZRULE, RES_POOLCOLL_HTML_HR, aEmptyOUStr ); PushContext( pCntxt ); @@ -5343,7 +5349,7 @@ void SwHTMLParser::InsertHorzRule() InsertBookmark( aId ); // den aktuellen Kontext vom Stack holen - HTMLAttrContext *pPoppedContext = PopContext( HTML_HORZRULE ); + HTMLAttrContext *pPoppedContext = PopContext( HtmlTokenId::HORZRULE ); OSL_ENSURE( pPoppedContext==pCntxt, "wo kommt denn da ein HR-Kontext her?" ); delete pPoppedContext; diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx index 6276bb9dd7ab..b23528a9732e 100644 --- a/sw/source/filter/html/swhtml.hxx +++ b/sw/source/filter/html/swhtml.hxx @@ -23,6 +23,7 @@ #include <sfx2/sfxhtml.hxx> #include <svl/macitem.hxx> +#include <svtools/htmltokn.h> #include <editeng/svxenum.hxx> #include <rtl/ref.hxx> #include <fmtornt.hxx> @@ -202,7 +203,7 @@ class HTMLAttrContext HTMLAttrContext_SaveDoc *pSaveDocContext; SfxItemSet *pFrameItemSet; - sal_uInt16 nToken; // the token of the context + HtmlTokenId nToken; // the token of the context sal_uInt16 nTextFormatColl; // a style created in the context or zero @@ -228,7 +229,7 @@ class HTMLAttrContext public: void ClearSaveDocContext(); - HTMLAttrContext( sal_uInt16 nTokn, sal_uInt16 nPoolId, const OUString& rClass, + HTMLAttrContext( HtmlTokenId nTokn, sal_uInt16 nPoolId, const OUString& rClass, bool bDfltColl=false ) : aClass( rClass ), pSaveDocContext( nullptr ), @@ -252,7 +253,7 @@ public: bRestartListing( false ) {} - explicit HTMLAttrContext( sal_uInt16 nTokn ) : + explicit HTMLAttrContext( HtmlTokenId nTokn ) : pSaveDocContext( nullptr ), pFrameItemSet( nullptr ), nToken( nTokn ), @@ -276,7 +277,7 @@ public: ~HTMLAttrContext() { ClearSaveDocContext(); delete pFrameItemSet; } - sal_uInt16 GetToken() const { return nToken; } + HtmlTokenId GetToken() const { return nToken; } sal_uInt16 GetTextFormatColl() const { return bDfltTextFormatColl ? 0 : nTextFormatColl; } sal_uInt16 GetDfltTextFormatColl() const { return bDfltTextFormatColl ? nTextFormatColl : 0; } @@ -426,7 +427,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient size_t m_nContextStMin; // lower limit of PopContext size_t m_nContextStAttrMin; // lower limit of attributes sal_uInt16 m_nSelectEntryCnt; // Number of entries in the actual listbox - sal_uInt16 m_nOpenParaToken; // opened paragraph element + HtmlTokenId m_nOpenParaToken; // opened paragraph element enum JumpToMarks { JUMPTO_NONE, JUMPTO_MARK, JUMPTO_TABLE, JUMPTO_FRAME, JUMPTO_REGION, JUMPTO_GRAPHIC } m_eJumpTo; @@ -561,7 +562,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient // Fetch top/specified context but not outside the context with token // nLimit. If bRemove set then remove it. - HTMLAttrContext *PopContext( sal_uInt16 nToken=0 ); + HTMLAttrContext *PopContext( HtmlTokenId nToken = HtmlTokenId::NONE ); bool GetMarginsFromContext( sal_uInt16 &nLeft, sal_uInt16 &nRight, short& nIndent, bool bIgnoreCurrent=false ) const; @@ -576,16 +577,16 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient // <P> and <H1> to <H6> void NewPara(); void EndPara( bool bReal = false ); - void NewHeading( int nToken ); + void NewHeading( HtmlTokenId nToken ); void EndHeading(); // <ADDRESS>, <BLOCKQUOTE> and <PRE> - void NewTextFormatColl( int nToken, sal_uInt16 nPoolId ); - void EndTextFormatColl( int nToken ); + void NewTextFormatColl( HtmlTokenId nToken, sal_uInt16 nPoolId ); + void EndTextFormatColl( HtmlTokenId nToken ); // <DIV> and <CENTER> - void NewDivision( int nToken ); - void EndDivision( int nToken ); + void NewDivision( HtmlTokenId nToken ); + void EndDivision(); // insert/close Fly-Frames void InsertFlyFrame( const SfxItemSet& rItemSet, HTMLAttrContext *pCntxt, @@ -609,37 +610,37 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient // Handling of lists // order list <OL> and unordered list <UL> with <LI> - void NewNumBulList( int nToken ); - void EndNumBulList( int nToken=0 ); - void NewNumBulListItem( int nToken ); - void EndNumBulListItem( int nToken, bool bSetColl, + void NewNumBulList( HtmlTokenId nToken ); + void EndNumBulList( HtmlTokenId nToken = HtmlTokenId::NONE ); + void NewNumBulListItem( HtmlTokenId nToken ); + void EndNumBulListItem( HtmlTokenId nToken, bool bSetColl, bool bLastPara=false ); // definitions lists <DL> with <DD>, <DT> void NewDefList(); void EndDefList(); - void NewDefListItem( int nToken ); - void EndDefListItem( int nToken=0, bool bLastPara=false ); + void NewDefListItem( HtmlTokenId nToken ); + void EndDefListItem( HtmlTokenId nToken = HtmlTokenId::NONE ); // Handling of tags on character level // handle tags like <B>, <I> and so, which enable/disable a certain // attribute or like <SPAN> get attributes from styles - void NewStdAttr( int nToken ); - void NewStdAttr( int nToken, + void NewStdAttr( HtmlTokenId nToken ); + void NewStdAttr( HtmlTokenId nToken, HTMLAttr **ppAttr, const SfxPoolItem & rItem, HTMLAttr **ppAttr2=nullptr, const SfxPoolItem *pItem2=nullptr, HTMLAttr **ppAttr3=nullptr, const SfxPoolItem *pItem3=nullptr ); - void EndTag( int nToken ); + void EndTag( HtmlTokenId nToken ); // handle font attributes void NewBasefontAttr(); // for <BASEFONT> void EndBasefontAttr(); - void NewFontAttr( int nToken ); // for <FONT>, <BIG> and <SMALL> - void EndFontAttr( int nToken ); + void NewFontAttr( HtmlTokenId nToken ); // for <FONT>, <BIG> and <SMALL> + void EndFontAttr( HtmlTokenId nToken ); // tags realized via character styles - void NewCharFormat( int nToken ); + void NewCharFormat( HtmlTokenId nToken ); // <SDFIELD> public: @@ -793,7 +794,7 @@ private: void InsertInput(); void NewTextArea(); - void InsertTextAreaText( sal_uInt16 nToken ); + void InsertTextAreaText( HtmlTokenId nToken ); void EndTextArea(); void NewSelect(); @@ -868,7 +869,7 @@ public: // used in tables protected: // Executed for each token recognized by CallParser - virtual void NextToken( int nToken ) override; + virtual void NextToken( HtmlTokenId nToken ) override; virtual ~SwHTMLParser() override; // If the document is removed, remove the parser as well @@ -890,7 +891,7 @@ public: static sal_uInt16 ToTwips( sal_uInt16 nPixel ); // for reading asynchronously from SvStream - virtual void Continue( int nToken ) override; + virtual void Continue( HtmlTokenId nToken ) override; virtual bool ParseMetaOptions( const css::uno::Reference<css::document::XDocumentProperties>&, SvKeyValueIterator* ) override; @@ -903,11 +904,11 @@ struct SwPendingStackData struct SwPendingStack { - int nToken; + HtmlTokenId nToken; SwPendingStackData* pData; SwPendingStack* pNext; - SwPendingStack( int nTkn, SwPendingStack* pNxt ) + SwPendingStack( HtmlTokenId nTkn, SwPendingStack* pNxt ) : nToken( nTkn ), pData( nullptr ), pNext( pNxt ) {} }; diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx index 1b84110cda90..5596225a6245 100644 --- a/sw/source/filter/html/wrthtml.cxx +++ b/sw/source/filter/html/wrthtml.cxx @@ -26,6 +26,7 @@ #include <sfx2/linkmgr.hxx> #include <svtools/htmlcfg.hxx> +#include <svtools/htmltokn.h> #include <vcl/svapp.hxx> #include <i18nlangtag/languagetag.hxx> #include <sfx2/frmhtmlw.hxx> @@ -97,7 +98,7 @@ SwHTMLWriter::SwHTMLWriter( const OUString& rBaseURL ) , m_pFormatFootnote(nullptr) , m_nWarn(0) , m_nLastLFPos(0) - , m_nLastParaToken(0) + , m_nLastParaToken(HtmlTokenId::NONE) , m_nBkmkTabPos(-1) , m_nImgMapCnt(1) , m_nFormCntrlCnt(0) @@ -375,7 +376,7 @@ sal_uLong SwHTMLWriter::WriteStream() // document is saved m_pHTMLPosFlyFrames = nullptr; CollectFlyFrames(); - m_nLastParaToken = 0; + m_nLastParaToken = HtmlTokenId::NONE; GetControls(); CollectLinkTargets(); @@ -666,7 +667,7 @@ static Writer& OutHTML_Section( Writer& rWrt, const SwSectionNode& rSectNd ) // End <PRE> and any <DL>, because a definition list's level may // change inside the section. - rHTMLWrt.ChangeParaToken( 0 ); + rHTMLWrt.ChangeParaToken( HtmlTokenId::NONE ); rHTMLWrt.OutAndSetDefList( 0 ); const SwSection& rSection = rSectNd.GetSection(); @@ -811,7 +812,7 @@ void SwHTMLWriter::Out_SwDoc( SwPaM* pPam ) m_bOutFooter = false; // after one node no footer anymore } - ChangeParaToken( 0 ); // MIB 8.7.97: We're doing it here and not at the caller + ChangeParaToken( HtmlTokenId::NONE ); // MIB 8.7.97: We're doing it here and not at the caller OutAndSetDefList( 0 ); } while( CopyNextPam( &pPam ) ); // until all PaM's processed @@ -1471,7 +1472,7 @@ HTMLSaveData::~HTMLSaveData() rWrt.SetEndPaM( pOldEnd ); rWrt.bWriteAll = bOldWriteAll; rWrt.m_nBkmkTabPos = bOldWriteAll ? rWrt.FindPos_Bkmk( *pOldPam->GetPoint() ) : -1; - rWrt.m_nLastParaToken = 0; + rWrt.m_nLastParaToken = HtmlTokenId::NONE; rWrt.m_nDefListLvl = nOldDefListLvl; rWrt.m_nDirection = nOldDirection; rWrt.m_bOutHeader = bOldOutHeader; diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx index 51a32bb2fc29..6061bd4c2eec 100644 --- a/sw/source/filter/html/wrthtml.hxx +++ b/sw/source/filter/html/wrthtml.hxx @@ -305,7 +305,7 @@ public: sal_uInt32 m_nWarn; // warning code sal_uInt32 m_nLastLFPos; // last position of LF - sal_uInt16 m_nLastParaToken; // to hold paragraphs together + HtmlTokenId m_nLastParaToken; // to hold paragraphs together sal_Int32 m_nBkmkTabPos; // current position in bookmark table sal_uInt16 m_nImgMapCnt; sal_uInt16 m_nFormCntrlCnt; @@ -476,7 +476,7 @@ public: const SfxItemSet *pItemSet=nullptr ); void OutCSS1_FrameFormatBackground( const SwFrameFormat& rFrameFormat ); - void ChangeParaToken( sal_uInt16 nNew ); + void ChangeParaToken( HtmlTokenId nNew ); void IncIndentLevel() { diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx index 26c6d5bcde8d..6ccfee3d61b1 100644 --- a/sw/source/uibase/docvw/srcedtw.cxx +++ b/sw/source/uibase/docvw/srcedtw.cxx @@ -145,8 +145,8 @@ static void lcl_Highlight(const OUString& rSource, TextPortions& aPortionList) // some string was found OUString sToken = rSource.copy(nActPos + 1, nSrchPos - nActPos - 1 ); sToken = sToken.toAsciiUpperCase(); - int nToken = ::GetHTMLToken(sToken); - if(nToken) + HtmlTokenId nToken = ::GetHTMLToken(sToken); + if(nToken != HtmlTokenId::NONE) { // Token was found eFoundType = svtools::HTMLKEYWORD; |