1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_sfx2.hxx"
30 #include <tools/stream.hxx>
31 #include <tools/cachestr.hxx>
33 #include <sot/storage.hxx>
34 #include <sot/formats.hxx>
36 #include <sfx2/mieclip.hxx>
37 #include <sfx2/sfxuno.hxx>
39 MSE40HTMLClipFormatObj::~MSE40HTMLClipFormatObj()
44 SvStream
* MSE40HTMLClipFormatObj::IsValid( SvStream
& rStream
)
46 sal_Bool bRet
= sal_False
;
48 delete pStrm
, pStrm
= 0;
50 ByteString sLine
, sVersion
;
51 sal_uIntPtr nStt
= 0, nEnd
= 0;
52 sal_uInt16 nIndex
= 0;
54 rStream
.Seek(STREAM_SEEK_TO_BEGIN
);
57 if( rStream
.ReadLine( sLine
) &&
58 sLine
.GetToken( 0, ':', nIndex
) == "Version" )
60 sVersion
= sLine
.Copy( nIndex
);
61 while( rStream
.ReadLine( sLine
) )
64 ByteString
sTmp( sLine
.GetToken( 0, ':', nIndex
) );
65 if( sTmp
== "StartHTML" )
66 nStt
= (sal_uIntPtr
)(sLine
.Erase( 0, nIndex
).ToInt32());
67 else if( sTmp
== "EndHTML" )
68 nEnd
= (sal_uIntPtr
)(sLine
.Erase( 0, nIndex
).ToInt32());
69 else if( sTmp
== "SourceURL" )
70 sBaseURL
= String(S2U(sLine
.Erase( 0, nIndex
)));
73 ( sBaseURL
.Len() || rStream
.Tell() >= nStt
))
85 pStrm
= new SvCacheStream( ( nEnd
- nStt
< 0x10000l
89 pStrm
->SetStreamSize( nEnd
- nStt
+ 1L );
90 pStrm
->Seek( STREAM_SEEK_TO_BEGIN
);