diff options
Diffstat (limited to 'xmloff/source/text/txtparaimphint.hxx')
-rw-r--r-- | xmloff/source/text/txtparaimphint.hxx | 296 |
1 files changed, 296 insertions, 0 deletions
diff --git a/xmloff/source/text/txtparaimphint.hxx b/xmloff/source/text/txtparaimphint.hxx new file mode 100644 index 000000000000..17c1a155692c --- /dev/null +++ b/xmloff/source/text/txtparaimphint.hxx @@ -0,0 +1,296 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _XMLOFF_TXTPARAIMPHINT_HXX +#define _XMLOFF_TXTPARAIMPHINT_HXX + +#include <rtl/ustring.hxx> +#include <rtl/ustrbuf.hxx> +#include <tools/debug.hxx> +#include <svl/svarray.hxx> +#include <xmloff/xmlimp.hxx> +#include "XMLTextFrameContext.hxx" +#include <xmloff/XMLEventsImportContext.hxx> + +using ::rtl::OUString; +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::text; +using namespace ::xmloff::token; + +// --------------------------------------------------------------------- + +#define XML_HINT_STYLE 1 +#define XML_HINT_REFERENCE 2 +#define XML_HINT_HYPERLINK 3 +#define XML_HINT_INDEX_MARK 5 +#define XML_HINT_TEXT_FRAME 6 +// --> DVO, OD 2004-07-14 #i26791# +#define XML_HINT_DRAW 7 +// <-- + +class XMLHint_Impl +{ + Reference < XTextRange > xStart; + Reference < XTextRange > xEnd; + + sal_uInt8 nType; + +public: + + XMLHint_Impl( sal_uInt8 nTyp, + const Reference < XTextRange > & rS, + const Reference < XTextRange > & rE ) : + xStart( rS ), + xEnd( rE ), + nType( nTyp ) + { + } + + XMLHint_Impl( sal_uInt8 nTyp, + const Reference < XTextRange > & rS ) : + xStart( rS ), + nType( nTyp ) + { + } + + virtual ~XMLHint_Impl() {} + + const Reference < XTextRange > & GetStart() const { return xStart; } + const Reference < XTextRange > & GetEnd() const { return xEnd; } + void SetEnd( const Reference < XTextRange > & rPos ) { xEnd = rPos; } + + // We don't use virtual methods to differ between the sub classes, + // because this seems to be to expensive if compared to inline methods. + sal_uInt8 GetType() const { return nType; } + sal_Bool IsStyle() { return XML_HINT_STYLE==nType; } + sal_Bool IsReference() { return XML_HINT_REFERENCE==nType; } + sal_Bool IsHyperlink() { return XML_HINT_HYPERLINK==nType; } + sal_Bool IsIndexMark() { return XML_HINT_INDEX_MARK==nType; } +}; + +class XMLStyleHint_Impl : public XMLHint_Impl +{ + OUString sStyleName; + +public: + + XMLStyleHint_Impl( const OUString& rStyleName, + const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_STYLE, rPos, rPos ), + sStyleName( rStyleName ) + { + } + virtual ~XMLStyleHint_Impl() {} + + const OUString& GetStyleName() const { return sStyleName; } +}; + +class XMLReferenceHint_Impl : public XMLHint_Impl +{ + OUString sRefName; + +public: + + XMLReferenceHint_Impl( const OUString& rRefName, + const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_REFERENCE, rPos, rPos ), + sRefName( rRefName ) + { + } + + virtual ~XMLReferenceHint_Impl() {} + + const OUString& GetRefName() const { return sRefName; } +}; + +class XMLHyperlinkHint_Impl : public XMLHint_Impl +{ + OUString sHRef; + OUString sName; + OUString sTargetFrameName; + OUString sStyleName; + OUString sVisitedStyleName; + XMLEventsImportContext* pEvents; + +public: + + XMLHyperlinkHint_Impl( const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_HYPERLINK, rPos, rPos ), + pEvents( NULL ) + { + } + + virtual ~XMLHyperlinkHint_Impl() + { + if (NULL != pEvents) + pEvents->ReleaseRef(); + } + + void SetHRef( const OUString& s ) { sHRef = s; } + const OUString& GetHRef() const { return sHRef; } + void SetName( const OUString& s ) { sName = s; } + const OUString& GetName() const { return sName; } + void SetTargetFrameName( const OUString& s ) { sTargetFrameName = s; } + const OUString& GetTargetFrameName() const { return sTargetFrameName; } + void SetStyleName( const OUString& s ) { sStyleName = s; } + const OUString& GetStyleName() const { return sStyleName; } + void SetVisitedStyleName( const OUString& s ) { sVisitedStyleName = s; } + const OUString& GetVisitedStyleName() const { return sVisitedStyleName; } + XMLEventsImportContext* GetEventsContext() const + { + return pEvents; + } + void SetEventsContext( XMLEventsImportContext* pCtxt ) + { + pEvents = pCtxt; + if (pEvents != NULL) + pEvents->AddRef(); + } +}; + + +class XMLIndexMarkHint_Impl : public XMLHint_Impl +{ + const Reference<beans::XPropertySet> xIndexMarkPropSet; + + const OUString sID; + +public: + + XMLIndexMarkHint_Impl( const Reference < beans::XPropertySet > & rPropSet, + const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_INDEX_MARK, rPos, rPos ), + xIndexMarkPropSet( rPropSet ), + sID() + { + } + + XMLIndexMarkHint_Impl( const Reference < beans::XPropertySet > & rPropSet, + const Reference < XTextRange > & rPos, + OUString sIDString) : + XMLHint_Impl( XML_HINT_INDEX_MARK, rPos, rPos ), + xIndexMarkPropSet( rPropSet ), + sID(sIDString) + { + } + + virtual ~XMLIndexMarkHint_Impl() {} + + const Reference<beans::XPropertySet> & GetMark() const + { return xIndexMarkPropSet; } + const OUString& GetID() const { return sID; } +}; + + +class XMLTextFrameHint_Impl : public XMLHint_Impl +{ + // OD 2004-04-20 #i26791# + SvXMLImportContextRef xContext; + +public: + + XMLTextFrameHint_Impl( SvXMLImportContext* pContext, + const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_TEXT_FRAME, rPos, rPos ), + xContext( pContext ) + { + } + + virtual ~XMLTextFrameHint_Impl() + { + } + + Reference < XTextContent > GetTextContent() const + { + Reference <XTextContent > xTxt; + SvXMLImportContext *pContext = &xContext; + if( pContext->ISA( XMLTextFrameContext ) ) + xTxt = PTR_CAST( XMLTextFrameContext, pContext )->GetTextContent(); + else if( pContext->ISA( XMLTextFrameHyperlinkContext ) ) + xTxt = PTR_CAST( XMLTextFrameHyperlinkContext, pContext ) + ->GetTextContent(); + + return xTxt; + } + + // --> OD 2004-08-24 #i33242# + Reference < drawing::XShape > GetShape() const + { + Reference < drawing::XShape > xShape; + SvXMLImportContext *pContext = &xContext; + if( pContext->ISA( XMLTextFrameContext ) ) + xShape = PTR_CAST( XMLTextFrameContext, pContext )->GetShape(); + else if( pContext->ISA( XMLTextFrameHyperlinkContext ) ) + xShape = PTR_CAST( XMLTextFrameHyperlinkContext, pContext )->GetShape(); + + return xShape; + } + // <-- + + sal_Bool IsBoundAtChar() const + { + sal_Bool bRet = sal_False; + SvXMLImportContext *pContext = &xContext; + if( pContext->ISA( XMLTextFrameContext ) ) + bRet = TextContentAnchorType_AT_CHARACTER == + PTR_CAST( XMLTextFrameContext, pContext ) + ->GetAnchorType(); + else if( pContext->ISA( XMLTextFrameHyperlinkContext ) ) + bRet = TextContentAnchorType_AT_CHARACTER == + PTR_CAST( XMLTextFrameHyperlinkContext, pContext ) + ->GetAnchorType(); + return bRet; + } +}; + +// --> DVO, OD 2004-07-14 #i26791# +class XMLDrawHint_Impl : public XMLHint_Impl +{ + SvXMLImportContextRef xContext; + +public: + + XMLDrawHint_Impl( SvXMLShapeContext* pContext, + const Reference < XTextRange > & rPos ) : + XMLHint_Impl( XML_HINT_DRAW, rPos, rPos ), + xContext( pContext ) + { + } + + virtual ~XMLDrawHint_Impl() + { + } + + // --> OD 2004-08-24 #i33242# + Reference < drawing::XShape > GetShape() const + { + return static_cast<SvXMLShapeContext*>(&xContext)->getShape(); + } + // <-- +}; +// <-- +#endif |