diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-11-03 15:42:58 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-11-03 15:42:58 +0000 |
commit | e63dd5efe9187213259efd92827bfe319f4b458e (patch) | |
tree | 4c6722751d65d6db2826d53bdc1ad691aed1a85c /xmloff/source/transform/FrameOASISTContext.cxx | |
parent | 9776d25b11c4d758cf22f4d0624b98f2c5c0a3a5 (diff) |
INTEGRATION: CWS impress14 (1.2.70); FILE MERGED
2004/10/13 15:19:54 cl 1.2.70.1: #i26608# filter header&footer shapes
Diffstat (limited to 'xmloff/source/transform/FrameOASISTContext.cxx')
-rw-r--r-- | xmloff/source/transform/FrameOASISTContext.cxx | 104 |
1 files changed, 68 insertions, 36 deletions
diff --git a/xmloff/source/transform/FrameOASISTContext.cxx b/xmloff/source/transform/FrameOASISTContext.cxx index 9aaef12e5bb5..449da96e9bd0 100644 --- a/xmloff/source/transform/FrameOASISTContext.cxx +++ b/xmloff/source/transform/FrameOASISTContext.cxx @@ -2,9 +2,9 @@ * * $RCSfile: FrameOASISTContext.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: rt $ $Date: 2004-07-13 08:51:14 $ + * last change: $Author: rt $ $Date: 2004-11-03 16:42:43 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -94,7 +94,8 @@ TYPEINIT1( XMLFrameOASISTransformerContext, XMLTransformerContext ); XMLFrameOASISTransformerContext::XMLFrameOASISTransformerContext( XMLTransformerBase& rImp, const OUString& rQName ) : - XMLTransformerContext( rImp, rQName ) + XMLTransformerContext( rImp, rQName ), + m_bIgnoreElement( false ) { } @@ -106,6 +107,26 @@ void XMLFrameOASISTransformerContext::StartElement( const Reference< XAttributeList >& rAttrList ) { m_xAttrList = new XMLMutableAttributeList( rAttrList, sal_True ); + + sal_Int16 nAttrCount = rAttrList.is() ? rAttrList->getLength() : 0; + for( sal_Int16 i=0; i < nAttrCount; i++ ) + { + const OUString& rAttrName = rAttrList->getNameByIndex( i ); + OUString aLocalName; + sal_uInt16 nPrefix = + GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName, &aLocalName ); + + if( (nPrefix == XML_NAMESPACE_PRESENTATION) && IsXMLToken( aLocalName, XML_CLASS ) ) + { + const OUString& rAttrValue = rAttrList->getValueByIndex( i ); + if( IsXMLToken( rAttrValue, XML_HEADER ) || IsXMLToken( rAttrValue, XML_FOOTER ) || + IsXMLToken( rAttrValue, XML_PAGE_NUMBER ) || IsXMLToken( rAttrValue, XML_DATE_TIME ) ) + { + m_bIgnoreElement = true; + break; + } + } + } } XMLTransformerContext *XMLFrameOASISTransformerContext::CreateChildContext( @@ -116,41 +137,51 @@ XMLTransformerContext *XMLFrameOASISTransformerContext::CreateChildContext( { XMLTransformerContext *pContext = 0; - XMLTransformerActions *pActions = - GetTransformer().GetUserDefinedActions( OASIS_FRAME_ELEM_ACTIONS ); - OSL_ENSURE( pActions, "go no actions" ); - XMLTransformerActions::key_type aKey( nPrefix, rLocalName ); - XMLTransformerActions::const_iterator aIter = pActions->find( aKey ); - - if( !(aIter == pActions->end()) ) + if( m_bIgnoreElement ) + { + // do not export the frame element and all of its children + pContext = new XMLIgnoreTransformerContext( GetTransformer(), + rQName, + sal_True, sal_True ); + } + else { - switch( (*aIter).second.m_nActionType ) + XMLTransformerActions *pActions = + GetTransformer().GetUserDefinedActions( OASIS_FRAME_ELEM_ACTIONS ); + OSL_ENSURE( pActions, "go no actions" ); + XMLTransformerActions::key_type aKey( nPrefix, rLocalName ); + XMLTransformerActions::const_iterator aIter = pActions->find( aKey ); + + if( !(aIter == pActions->end()) ) { - case XML_ETACTION_COPY: - if( !m_aElemQName.getLength() ) - { - pContext = new XMLIgnoreTransformerContext( GetTransformer(), - rQName, - sal_False, sal_False ); - m_aElemQName = rQName; - static_cast< XMLMutableAttributeList * >( m_xAttrList.get() ) - ->AppendAttributeList( rAttrList ); - GetTransformer().ProcessAttrList( m_xAttrList, - OASIS_SHAPE_ACTIONS, - sal_False ); - GetTransformer().GetDocHandler()->startElement( m_aElemQName, - m_xAttrList ); - } - else + switch( (*aIter).second.m_nActionType ) { - pContext = new XMLIgnoreTransformerContext( GetTransformer(), - rQName, - sal_True, sal_True ); + case XML_ETACTION_COPY: + if( !m_aElemQName.getLength() ) + { + pContext = new XMLIgnoreTransformerContext( GetTransformer(), + rQName, + sal_False, sal_False ); + m_aElemQName = rQName; + static_cast< XMLMutableAttributeList * >( m_xAttrList.get() ) + ->AppendAttributeList( rAttrList ); + GetTransformer().ProcessAttrList( m_xAttrList, + OASIS_SHAPE_ACTIONS, + sal_False ); + GetTransformer().GetDocHandler()->startElement( m_aElemQName, + m_xAttrList ); + } + else + { + pContext = new XMLIgnoreTransformerContext( GetTransformer(), + rQName, + sal_True, sal_True ); + } + break; + default: + OSL_ENSURE( !this, "unknown action" ); + break; } - break; - default: - OSL_ENSURE( !this, "unknown action" ); - break; } } @@ -166,12 +197,13 @@ XMLTransformerContext *XMLFrameOASISTransformerContext::CreateChildContext( void XMLFrameOASISTransformerContext::EndElement() { - GetTransformer().GetDocHandler()->endElement( m_aElemQName ); + if( !m_bIgnoreElement ) + GetTransformer().GetDocHandler()->endElement( m_aElemQName ); } void XMLFrameOASISTransformerContext::Characters( const OUString& rChars ) { // ignore - if( m_aElemQName.getLength() ) + if( m_aElemQName.getLength() && !m_bIgnoreElement ) XMLTransformerContext::Characters( rChars ); } |