summaryrefslogtreecommitdiff
path: root/oox/source/ole/axbinaryreader.cxx
diff options
context:
space:
mode:
authorThorsten Behrens <tbehrens@novell.com>2011-04-27 01:31:35 +0200
committerThorsten Behrens <tbehrens@novell.com>2011-04-27 01:31:35 +0200
commit48c61f72dd9e205f3d44838ae21cde0419538f1c (patch)
tree22eb884e19dd4f7c5b7dfaa0ba10bb77e12e3f19 /oox/source/ole/axbinaryreader.cxx
parentf433a86839499662cfc1356882b0538f01d850b6 (diff)
parent275e5c6544ff2f90cf6bd57b6a8a6293fe10943c (diff)
Merge commit 'ooo/DEV300_m106' into integration/dev300_m106
Conflicts: binfilter/bf_svtools/source/filter.vcl/jpeg/svt_jpegc.c filter/source/config/fragments/filters/SVG___Scalable_Vector_Graphics.xcu filter/source/config/fragments/internalgraphicfilters/svg_Import.xcu filter/source/config/fragments/types/svg_Scalable_Vector_Graphics.xcu filter/source/graphicfilter/eos2met/eos2met.cxx filter/source/msfilter/msvbahelper.cxx filter/source/svg/makefile.mk filter/source/svg/svgexport.cxx filter/source/svg/svgfilter.cxx filter/source/svg/svgfilter.hxx filter/source/svg/svgfontexport.cxx filter/source/svg/svgfontexport.hxx filter/source/svg/svgwriter.cxx filter/source/svg/svgwriter.hxx oox/inc/oox/core/relations.hxx oox/inc/oox/core/relationshandler.hxx oox/inc/oox/dump/biffdumper.hxx oox/inc/oox/dump/dffdumper.hxx oox/inc/oox/dump/dumperbase.hxx oox/inc/oox/dump/oledumper.hxx oox/inc/oox/dump/pptxdumper.hxx oox/inc/oox/helper/containerhelper.hxx oox/inc/oox/helper/propertyset.hxx oox/inc/oox/xls/commentsbuffer.hxx oox/inc/oox/xls/sharedformulabuffer.hxx oox/source/drawingml/shape.cxx oox/source/dump/oledumper.cxx oox/source/helper/binaryinputstream.cxx oox/source/helper/binaryoutputstream.cxx oox/source/helper/binarystreambase.cxx oox/source/helper/propertyset.cxx oox/source/ole/vbacontrol.cxx oox/source/ole/vbaproject.cxx oox/source/token/namespaces.hxx.tail oox/source/vml/vmlshape.cxx oox/source/xls/commentsbuffer.cxx oox/source/xls/condformatbuffer.cxx oox/source/xls/drawingfragment.cxx oox/source/xls/formulaparser.cxx oox/source/xls/pivotcachebuffer.cxx oox/source/xls/richstring.cxx oox/source/xls/sharedformulabuffer.cxx oox/source/xls/sheetdatacontext.cxx oox/source/xls/worksheethelper.cxx writerfilter/source/dmapper/DomainMapper_Impl.cxx
Diffstat (limited to 'oox/source/ole/axbinaryreader.cxx')
-rw-r--r--oox/source/ole/axbinaryreader.cxx59
1 files changed, 42 insertions, 17 deletions
diff --git a/oox/source/ole/axbinaryreader.cxx b/oox/source/ole/axbinaryreader.cxx
index d6780b17eb39..af3076477c56 100644
--- a/oox/source/ole/axbinaryreader.cxx
+++ b/oox/source/ole/axbinaryreader.cxx
@@ -49,14 +49,22 @@ const sal_uInt32 AX_STRING_COMPRESSED = 0x80000000;
// ============================================================================
AxAlignedInputStream::AxAlignedInputStream( BinaryInputStream& rInStrm ) :
- mrInStrm( rInStrm ),
- mnStrmPos( 0 )
+ BinaryStreamBase( false ),
+ mpInStrm( &rInStrm ),
+ mnStrmPos( 0 ),
+ mnStrmSize( rInStrm.getRemaining() )
{
+ mbEof = mbEof || rInStrm.isEof();
+}
+
+sal_Int64 AxAlignedInputStream::size() const
+{
+ return mpInStrm ? mnStrmSize : -1;
}
sal_Int64 AxAlignedInputStream::tell() const
{
- return mnStrmPos;
+ return mpInStrm ? mnStrmPos : -1;
}
void AxAlignedInputStream::seek( sal_Int64 nPos )
@@ -66,24 +74,44 @@ void AxAlignedInputStream::seek( sal_Int64 nPos )
skip( static_cast< sal_Int32 >( nPos - mnStrmPos ) );
}
-sal_Int32 AxAlignedInputStream::readData( StreamDataSequence& orData, sal_Int32 nBytes )
+void AxAlignedInputStream::close()
+{
+ mpInStrm = 0;
+ mbEof = true;
+}
+
+sal_Int32 AxAlignedInputStream::readData( StreamDataSequence& orData, sal_Int32 nBytes, size_t nAtomSize )
{
- sal_Int32 nReadSize = mrInStrm.readData( orData, nBytes );
- mnStrmPos += nReadSize;
+ sal_Int32 nReadSize = 0;
+ if( !mbEof )
+ {
+ nReadSize = mpInStrm->readData( orData, nBytes, nAtomSize );
+ mnStrmPos += nReadSize;
+ mbEof = mpInStrm->isEof();
+ }
return nReadSize;
}
-sal_Int32 AxAlignedInputStream::readMemory( void* opMem, sal_Int32 nBytes )
+sal_Int32 AxAlignedInputStream::readMemory( void* opMem, sal_Int32 nBytes, size_t nAtomSize )
{
- sal_Int32 nReadSize = mrInStrm.readMemory( opMem, nBytes );
- mnStrmPos += nReadSize;
+ sal_Int32 nReadSize = 0;
+ if( !mbEof )
+ {
+ nReadSize = mpInStrm->readMemory( opMem, nBytes, nAtomSize );
+ mnStrmPos += nReadSize;
+ mbEof = mpInStrm->isEof();
+ }
return nReadSize;
}
-void AxAlignedInputStream::skip( sal_Int32 nBytes )
+void AxAlignedInputStream::skip( sal_Int32 nBytes, size_t nAtomSize )
{
- mrInStrm.skip( nBytes );
- mnStrmPos += nBytes;
+ if( !mbEof )
+ {
+ mpInStrm->skip( nBytes, nAtomSize );
+ mnStrmPos += nBytes;
+ mbEof = mpInStrm->isEof();
+ }
}
void AxAlignedInputStream::align( size_t nSize )
@@ -175,10 +203,7 @@ bool lclReadString( AxAlignedInputStream& rInStrm, OUString& rValue, sal_uInt32
OSL_ENSURE( bValidChars, "lclReadString - string too long" );
sal_Int64 nEndPos = rInStrm.tell() + nChars * (bCompressed ? 1 : 2);
nChars = ::std::min< sal_Int32 >( nChars, 65536 );
- rValue = bCompressed ?
- // ISO-8859-1 maps all byte values xx to the same Unicode code point U+00xx
- rInStrm.readCharArrayUC( nChars, RTL_TEXTENCODING_ISO_8859_1 ) :
- rInStrm.readUnicodeArray( nChars );
+ rValue = rInStrm.readCompressedUnicodeArray( nChars, bCompressed );
rInStrm.seek( nEndPos );
return bValidChars;
}
@@ -348,4 +373,4 @@ bool AxBinaryPropertyReader::startNextProperty()
} // namespace ole
} // namespace oox
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ \ No newline at end of file
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */