1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: OOXMLStreamImpl.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef INCLUDED_OOXML_STREAM_IMPL_HXX
31 #define INCLUDED_OOXML_STREAM_IMPL_HXX
33 #include <ooxml/OOXMLDocument.hxx>
34 #include <comphelper/storagehelper.hxx>
35 #include <com/sun/star/embed/XRelationshipAccess.hpp>
36 #include <com/sun/star/io/XStream.hpp>
38 namespace writerfilter
{
42 using namespace com::sun::star
;
44 class OOXMLStreamImpl
: public OOXMLStream
48 uno::Reference
<uno::XComponentContext
> mxContext
;
49 uno::Reference
<io::XInputStream
> mxStorageStream
;
50 uno::Reference
<embed::XStorage
> mxStorage
;
51 uno::Reference
<embed::XRelationshipAccess
> mxRelationshipAccess
;
52 uno::Reference
<io::XStream
> mxDocumentStream
;
53 uno::Reference
<xml::sax::XFastParser
> mxFastParser
;
54 uno::Reference
<xml::sax::XFastTokenHandler
> mxFastTokenHandler
;
56 StreamType_t mnStreamType
;
60 rtl::OUString msTarget
;
62 bool lcl_getTarget(uno::Reference
<embed::XRelationshipAccess
>
64 StreamType_t nStreamType
,
65 const ::rtl::OUString
& rId
,
66 ::rtl::OUString
& rDocumentTarget
);
68 typedef boost::shared_ptr
<OOXMLStreamImpl
> Pointer_t
;
71 (OOXMLStreamImpl
& rStream
, StreamType_t nType
);
73 (uno::Reference
<uno::XComponentContext
> xContext
,
74 uno::Reference
<io::XInputStream
> xStorageStream
,
76 OOXMLStreamImpl(OOXMLStreamImpl
& rStream
, const rtl::OUString
& rId
);
78 (uno::Reference
<uno::XComponentContext
> xContext
,
79 uno::Reference
<io::XInputStream
> xStorageStream
,
80 const rtl::OUString
& rId
);
82 virtual ~OOXMLStreamImpl();
84 virtual uno::Reference
<xml::sax::XParser
> getParser();
85 virtual uno::Reference
<xml::sax::XFastParser
> getFastParser();
86 virtual uno::Reference
<io::XInputStream
> getDocumentStream();
87 virtual uno::Reference
<io::XInputStream
> getStorageStream();
88 virtual uno::Reference
<uno::XComponentContext
> getContext();
89 virtual ::rtl::OUString
getTargetForId(const ::rtl::OUString
& rId
);
90 virtual const ::rtl::OUString
& getTarget() const;
92 virtual uno::Reference
<xml::sax::XFastTokenHandler
>
93 getFastTokenHandler(uno::Reference
<uno::XComponentContext
> rContext
);
95 void setInputStream(uno::Reference
<io::XInputStream
> rxInputStream
);
98 #endif // INCLUDED_OOXML_STREAM_IMPL_HXX