diff options
Diffstat (limited to 'binfilter/bf_sw/source/filter/xml/sw_xmlfonte.cxx')
-rw-r--r-- | binfilter/bf_sw/source/filter/xml/sw_xmlfonte.cxx | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/binfilter/bf_sw/source/filter/xml/sw_xmlfonte.cxx b/binfilter/bf_sw/source/filter/xml/sw_xmlfonte.cxx new file mode 100644 index 000000000000..12b1b349cb95 --- /dev/null +++ b/binfilter/bf_sw/source/filter/xml/sw_xmlfonte.cxx @@ -0,0 +1,119 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + + +#ifdef _MSC_VER +#pragma hdrstop +#endif + +#include "hintids.hxx" + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <bf_xmloff/XMLFontAutoStylePool.hxx> +#include <bf_svx/fontitem.hxx> + +#include <errhdl.hxx> + +#include <unoobj.hxx> + +#include <horiornt.hxx> + +#include <doc.hxx> + +#include <xmlexp.hxx> +namespace binfilter { + +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::text; + +class SwXMLFontAutoStylePool_Impl: public XMLFontAutoStylePool +{ + public: + + SwXMLFontAutoStylePool_Impl( SwXMLExport& rExport ); + +}; + +SwXMLFontAutoStylePool_Impl::SwXMLFontAutoStylePool_Impl( + SwXMLExport& rExport ) : + XMLFontAutoStylePool( rExport ) +{ + sal_uInt16 aWhichIds[3] = { RES_CHRATR_FONT, RES_CHRATR_CJK_FONT, + RES_CHRATR_CTL_FONT }; + + Reference < XTextDocument > xTextDoc( rExport.GetModel(), UNO_QUERY ); + Reference < XText > xText = xTextDoc->getText(); + Reference<XUnoTunnel> xTextTunnel( xText, UNO_QUERY); + ASSERT( xTextTunnel.is(), "missing XUnoTunnel for Cursor" ); + if( !xTextTunnel.is() ) + return; + + SwXText *pText = (SwXText *)xTextTunnel->getSomething( + SwXText::getUnoTunnelId() ); + ASSERT( pText, "SwXText missing" ); + if( !pText ) + return; + + const SfxItemPool& rPool = pText->GetDoc()->GetAttrPool(); + const SfxPoolItem* pItem; + for( sal_uInt16 i=0; i<3; i++ ) + { + sal_uInt16 nWhichId = aWhichIds[i]; + + const SvxFontItem& rFont = + (const SvxFontItem&)rPool.GetDefaultItem( nWhichId ); + Add( rFont.GetFamilyName(), rFont.GetStyleName(), + rFont.GetFamily(), rFont.GetPitch(), rFont.GetCharSet() ); + sal_uInt16 nItems = rPool.GetItemCount( nWhichId ); + for( sal_uInt16 j = 0; j < nItems; ++j ) + { + if( 0 != (pItem = rPool.GetItem( nWhichId, j ) ) ) + { + const SvxFontItem *pFont = + (const SvxFontItem *)pItem; + Add( pFont->GetFamilyName(), pFont->GetStyleName(), + pFont->GetFamily(), pFont->GetPitch(), + pFont->GetCharSet() ); + } + } + } +} + + +XMLFontAutoStylePool* SwXMLExport::CreateFontAutoStylePool() +{ + return new SwXMLFontAutoStylePool_Impl( *this ); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |