blob: 00282830cf4e2cdfc9abc994cd8301d97516b4a2 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#include <ooxml/resourceids.hxx>
#include <resourcemodel/QNameToString.hxx>
#include "Handler.hxx"
namespace writerfilter {
namespace ooxml
{
/*
class OOXMLFootnoteHandler
*/
OOXMLFootnoteHandler::OOXMLFootnoteHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLFootnoteHandler::~OOXMLFootnoteHandler()
{
}
void OOXMLFootnoteHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_FtnEdnRef_id:
mpFastContext->resolveFootnote(val.getInt());
break;
default:
break;
}
}
void OOXMLFootnoteHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLEndnoteHandler
*/
OOXMLEndnoteHandler::OOXMLEndnoteHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLEndnoteHandler::~OOXMLEndnoteHandler()
{
}
void OOXMLEndnoteHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_FtnEdnRef_id:
mpFastContext->resolveEndnote(val.getInt());
break;
default:
break;
}
}
void OOXMLEndnoteHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLCommentHandler
*/
OOXMLCommentHandler::OOXMLCommentHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLCommentHandler::~OOXMLCommentHandler()
{
}
void OOXMLCommentHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_Markup_id:
mpFastContext->resolveComment(val.getInt());
break;
default:
;
}
}
void OOXMLCommentHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLOLEHandler
*/
OOXMLOLEHandler::OOXMLOLEHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLOLEHandler::~OOXMLOLEHandler()
{
}
void OOXMLOLEHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_OLEObject_r_id:
mpFastContext->resolveOLE(val.getString());
break;
default:
;
}
}
void OOXMLOLEHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLFooterHandler
*/
OOXMLFooterHandler::OOXMLFooterHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext), msStreamId(), mnType(0)
{
}
OOXMLFooterHandler::~OOXMLFooterHandler()
{
mpFastContext->resolveFooter(mnType, msStreamId);
}
void OOXMLFooterHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_HdrFtrRef_id:
msStreamId = val.getString();
break;
case NS_ooxml::LN_CT_HdrFtrRef_type:
mnType = val.getInt();
break;
default:
break;
}
}
void OOXMLFooterHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLHeaderHandler
*/
OOXMLHeaderHandler::OOXMLHeaderHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext), msStreamId(), mnType(0)
{
}
OOXMLHeaderHandler::~OOXMLHeaderHandler()
{
mpFastContext->resolveHeader(mnType, msStreamId);
}
void OOXMLHeaderHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_HdrFtrRef_id:
msStreamId = val.getString();
break;
case NS_ooxml::LN_CT_HdrFtrRef_type:
mnType = val.getInt();
break;
default:
break;
}
}
void OOXMLHeaderHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLBreakHandler
*/
OOXMLBreakHandler::OOXMLBreakHandler(Stream &rStream,
OOXMLFastContextHandler * pContext)
: mpFastContext(pContext), mnType(0), mnClear(0),
mrStream(rStream)
{
}
OOXMLBreakHandler::~OOXMLBreakHandler()
{
sal_uInt8 tmpBreak[1];
switch (mnType)
{
case NS_ooxml::LN_Value_ST_BrType_column:
tmpBreak[0] = 0x0E;
break;
case NS_ooxml::LN_Value_ST_BrType_page:
tmpBreak[0] = 0x0C;
break;
case NS_ooxml::LN_Value_ST_BrType_textWrapping:
default: // when no attribute type is present, the spec assume textWrapping
tmpBreak[0] = 0x0A;
break;
}
mrStream.text(&tmpBreak[0], 1);
}
void OOXMLBreakHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_Br_type:
mnType = val.getInt();
break;
case NS_ooxml::LN_CT_Br_clear:
mnClear = val.getInt();
break;
default:
break;
}
}
void OOXMLBreakHandler::sprm(Sprm & /*sprm*/)
{
}
/*
class OOXMLPictureHandler
*/
OOXMLPictureHandler::OOXMLPictureHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLPictureHandler::~OOXMLPictureHandler()
{
}
void OOXMLPictureHandler::attribute(Id name, Value & val)
{
if (name == NS_ooxml::LN_AG_Blob_r_embed)
mpFastContext->resolvePicture(val.getString());
else
{
writerfilter::Reference<Properties>::Pointer_t pProps
(val.getProperties());
if (pProps.get() != NULL)
pProps->resolve(*this);
}
}
void OOXMLPictureHandler::sprm(Sprm & rSprm)
{
writerfilter::Reference<Properties>::Pointer_t pProps
(rSprm.getProps());
if (pProps.get() != NULL)
pProps->resolve(*this);
}
/**
class OOXMLHyperlinkHandler
*/
OOXMLHyperlinkHandler::OOXMLHyperlinkHandler(OOXMLFastContextHandler * pContext)
: mpFastContext(pContext)
{
}
OOXMLHyperlinkHandler::~OOXMLHyperlinkHandler()
{
::rtl::OUString sReturn(RTL_CONSTASCII_USTRINGPARAM(" HYPERLINK \""));
sReturn += mURL;
sReturn += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
sReturn += mFieldCode;
mpFastContext->characters(sReturn);
}
void OOXMLHyperlinkHandler::attribute(Id name, Value & val)
{
switch (name)
{
case NS_ooxml::LN_CT_Hyperlink_tgtFrame:
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\t \""));
mFieldCode += val.getString();
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
break;
case NS_ooxml::LN_CT_Hyperlink_tooltip:
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\o \""));
mFieldCode += val.getString();
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
break;
case NS_ooxml::LN_CT_Hyperlink_docLocation:
break;
case NS_ooxml::LN_CT_Hyperlink_history:
break;
case NS_ooxml::LN_CT_Hyperlink_anchor:
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\l \""));
mFieldCode += val.getString();
mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
break;
case NS_ooxml::LN_CT_Hyperlink_r_id:
mURL = mpFastContext->getTargetForId(val.getString());
break;
default:
break;
}
}
void OOXMLHyperlinkHandler::sprm(Sprm & /*rSprm*/)
{
}
}}