sc/Library_scfilt.mk | 1 sc/source/filter/inc/biff.hxx | 47 -------------------- sc/source/filter/inc/qpro.hxx | 17 +++++-- sc/source/filter/qpro/biff.cxx | 95 ----------------------------------------- sc/source/filter/qpro/qpro.cxx | 64 ++++++++++++++++++++++++--- 5 files changed, 69 insertions(+), 155 deletions(-)
New commits: commit afdd4606e947cfd564aee66ed9ce419091350482 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Wed Nov 2 14:32:22 2016 +0200 merge ScBiffReader and ScQProReader Change-Id: I7267ffb4ad5c874d6c836a8d6ab823d63f8e2610 Reviewed-on: https://gerrit.libreoffice.org/30488 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/Library_scfilt.mk b/sc/Library_scfilt.mk index 308eecb..98445c8 100644 --- a/sc/Library_scfilt.mk +++ b/sc/Library_scfilt.mk @@ -145,7 +145,6 @@ $(eval $(call gb_Library_add_exception_objects,scfilt,\ sc/source/filter/lotus/op \ sc/source/filter/lotus/optab \ sc/source/filter/lotus/tool \ - sc/source/filter/qpro/biff \ sc/source/filter/qpro/qpro \ sc/source/filter/qpro/qproform \ sc/source/filter/qpro/qprostyle \ diff --git a/sc/source/filter/inc/biff.hxx b/sc/source/filter/inc/biff.hxx deleted file mode 100644 index 29735fe..0000000 --- a/sc/source/filter/inc/biff.hxx +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#ifndef INCLUDED_SC_SOURCE_FILTER_INC_BIFF_HXX -#define INCLUDED_SC_SOURCE_FILTER_INC_BIFF_HXX - -#include <sal/config.h> -#include "filter.hxx" - -#include "flttypes.hxx" -#include "ftools.hxx" - -// Stream wrapper class -class ScBiffReader -{ -protected: - sal_uInt16 mnId; - sal_uInt16 mnLength; - sal_uInt32 mnOffset; - SvStream *mpStream; - bool mbEndOfFile; - -public: - ScBiffReader( SfxMedium& rMedium ); - ~ScBiffReader(); - bool recordsLeft() { return mpStream && !mpStream->IsEof(); } - bool nextRecord(); -}; -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/inc/qpro.hxx b/sc/source/filter/inc/qpro.hxx index b2b7c3e..751ec85 100644 --- a/sc/source/filter/inc/qpro.hxx +++ b/sc/source/filter/inc/qpro.hxx @@ -27,22 +27,29 @@ #include "flttypes.hxx" #include "ftools.hxx" #include "qprostyle.hxx" -#include "biff.hxx" class ScDocument; // Stream wrapper class -class ScQProReader : public ScBiffReader +class ScQProReader { - public: + sal_uInt16 mnId; + sal_uInt16 mnLength; + sal_uInt32 mnOffset; + SvStream *mpStream; + bool mbEndOfFile; + +public: + ScQProReader( SfxMedium &rMedium ); + ~ScQProReader(); + bool recordsLeft(); void SetEof( bool bValue ){ mbEndOfFile = bValue; } bool nextRecord(); sal_uInt16 getId() { return mnId; } sal_uInt16 getLength() { return mnLength; } void readString( OUString &rString, sal_uInt16 nLength ); - ScQProReader( SfxMedium &rMedium ); - ~ScQProReader(){ }; + FltError import( ScDocument *pDoc ); FltError readSheet( SCTAB nTab, ScDocument* pDoc, ScQProStyle *pStyle ); }; diff --git a/sc/source/filter/qpro/biff.cxx b/sc/source/filter/qpro/biff.cxx deleted file mode 100644 index ce02767..0000000 --- a/sc/source/filter/qpro/biff.cxx +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#include <sal/config.h> -#include <stdio.h> -#include <sfx2/docfile.hxx> - -#include "global.hxx" -#include "scerrors.hxx" -#include "docpool.hxx" -#include "patattr.hxx" -#include "filter.hxx" -#include "document.hxx" -#include "formulacell.hxx" -#include "biff.hxx" - -ScBiffReader::ScBiffReader(SfxMedium& rMedium) - : mnId(0) - , mnLength(0) - , mnOffset(0) - , mbEndOfFile(false) -{ - mpStream = rMedium.GetInStream(); - if( mpStream ) - { - mpStream->SetBufferSize( 65535 ); - mpStream->SetStreamCharSet( RTL_TEXTENCODING_MS_1252 ); - } -} - -ScBiffReader::~ScBiffReader() -{ - if( mpStream ) - mpStream->SetBufferSize( 0 ); -} - -bool ScBiffReader::nextRecord() -{ - if( !recordsLeft() ) - return false; - - if( mbEndOfFile ) - return false; - - sal_uInt32 nPos = mpStream->Tell(); - if( nPos != mnOffset + mnLength ) - mpStream->Seek( mnOffset + mnLength ); - - mnLength = mnId = 0; - mpStream->ReadUInt16( mnId ).ReadUInt16( mnLength ); - - mnOffset = mpStream->Tell(); -#ifdef DEBUG_SC_QPRO - fprintf( stderr, "Read record 0x%x length 0x%x at offset 0x%x\n", - (unsigned)mnId, (unsigned)mnLength, (unsigned)mnOffset ); - -#if 1 // rather verbose - int len = mnLength; - while (len > 0) { - int i, chunk = len < 16 ? len : 16; - unsigned char data[16]; - mpStream->Read( data, chunk ); - - for (i = 0; i < chunk; i++) - fprintf( stderr, "%.2x ", data[i] ); - fprintf( stderr, "| " ); - for (i = 0; i < chunk; i++) - fprintf( stderr, "%c", data[i] < 127 && data[i] > 30 ? data[i] : '.' ); - fprintf( stderr, "\n" ); - - len -= chunk; - } - mpStream->Seek( mnOffset ); -#endif -#endif - return true; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx index 77334a2..96c9acf 100644 --- a/sc/source/filter/qpro/qpro.cxx +++ b/sc/source/filter/qpro/qpro.cxx @@ -31,7 +31,6 @@ #include "filter.hxx" #include "document.hxx" #include "formulacell.hxx" -#include "biff.hxx" #include <tools/stream.hxx> #include <memory> @@ -131,11 +130,27 @@ FltError ScFormatFilterPluginImpl::ScImportQuattroPro( SfxMedium &rMedium, ScDoc return eRet; } -ScQProReader::ScQProReader( SfxMedium &rMedium ): - ScBiffReader( rMedium ) +ScQProReader::ScQProReader( SfxMedium &rMedium ) + : mnId(0) + , mnLength(0) + , mnOffset(0) + , mbEndOfFile(false) { + mpStream = rMedium.GetInStream(); + if( mpStream ) + { + mpStream->SetBufferSize( 65535 ); + mpStream->SetStreamCharSet( RTL_TEXTENCODING_MS_1252 ); + } +} + +ScQProReader::~ScQProReader() +{ + if( mpStream ) + mpStream->SetBufferSize( 0 ); } + FltError ScQProReader::import( ScDocument *pDoc ) { FltError eRet = eERR_OK; @@ -211,14 +226,49 @@ FltError ScQProReader::import( ScDocument *pDoc ) bool ScQProReader::recordsLeft() { - bool bValue = ScBiffReader::recordsLeft(); - return bValue; + return mpStream && !mpStream->IsEof(); } bool ScQProReader::nextRecord() { - bool bValue = ScBiffReader::nextRecord(); - return bValue; + if( !recordsLeft() ) + return false; + + if( mbEndOfFile ) + return false; + + sal_uInt32 nPos = mpStream->Tell(); + if( nPos != mnOffset + mnLength ) + mpStream->Seek( mnOffset + mnLength ); + + mnLength = mnId = 0; + mpStream->ReadUInt16( mnId ).ReadUInt16( mnLength ); + + mnOffset = mpStream->Tell(); +#ifdef DEBUG_SC_QPRO + fprintf( stderr, "Read record 0x%x length 0x%x at offset 0x%x\n", + (unsigned)mnId, (unsigned)mnLength, (unsigned)mnOffset ); + +#if 1 // rather verbose + int len = mnLength; + while (len > 0) { + int i, chunk = len < 16 ? len : 16; + unsigned char data[16]; + mpStream->Read( data, chunk ); + + for (i = 0; i < chunk; i++) + fprintf( stderr, "%.2x ", data[i] ); + fprintf( stderr, "| " ); + for (i = 0; i < chunk; i++) + fprintf( stderr, "%c", data[i] < 127 && data[i] > 30 ? data[i] : '.' ); + fprintf( stderr, "\n" ); + + len -= chunk; + } + mpStream->Seek( mnOffset ); +#endif +#endif + return true; } void ScQProReader::readString( OUString &rString, sal_uInt16 nLength ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits