sot/inc/sot/stg.hxx | 3 +++ sot/inc/sot/storage.hxx | 1 + sot/source/sdstor/stg.cxx | 7 +++++++ sot/source/sdstor/storage.cxx | 7 +++++++ sot/source/sdstor/ucbstorage.cxx | 5 +++++ sw/source/core/inc/scriptinfo.hxx | 8 ++++---- sw/source/core/text/porlay.cxx | 22 +++++++++++----------- tools/inc/tools/stream.hxx | 3 ++- tools/source/stream/stream.cxx | 6 +++--- uui/source/iahndl-errorhandler.cxx | 2 +- uui/source/iahndl-ssl.cxx | 6 +++--- uui/source/iahndl.cxx | 7 +++---- uui/source/iahndl.hxx | 20 +------------------- 13 files changed, 51 insertions(+), 46 deletions(-)
New commits: commit d726281e9020ebaddfdf6659ecfe7a0454014dff Author: Caolán McNamara <[email protected]> Date: Thu May 3 00:05:37 2012 +0100 Related: fdo#47644 compound storage backend is poor at knowing stream size Change-Id: Ie4aa6939f9f37e04fda5425a6e28c5d846a9cb62 diff --git a/sot/inc/sot/stg.hxx b/sot/inc/sot/stg.hxx index 225c89e..ab567f3 100644 --- a/sot/inc/sot/stg.hxx +++ b/sot/inc/sot/stg.hxx @@ -94,6 +94,7 @@ public: virtual sal_Bool Commit() = 0; virtual sal_Bool Revert() = 0; virtual sal_Bool Equals( const BaseStorageStream& rStream ) const = 0; + virtual sal_Size remainingSize() = 0; }; class BaseStorage : public StorageBase @@ -178,6 +179,7 @@ public: virtual sal_Bool ValidateMode( StreamMode ) const; const SvStream* GetSvStream() const; virtual sal_Bool Equals( const BaseStorageStream& rStream ) const; + virtual sal_Size remainingSize(); }; class UCBStorageStream; @@ -270,6 +272,7 @@ public: virtual sal_Bool Revert(); virtual sal_Bool Validate( sal_Bool=sal_False ) const; virtual sal_Bool ValidateMode( StreamMode ) const; + virtual sal_Size remainingSize(); const SvStream* GetSvStream() const; virtual sal_Bool Equals( const BaseStorageStream& rStream ) const; sal_Bool SetProperty( const String& rName, const ::com::sun::star::uno::Any& rValue ); diff --git a/sot/inc/sot/storage.hxx b/sot/inc/sot/storage.hxx index b77d6dd..925ae42 100644 --- a/sot/inc/sot/storage.hxx +++ b/sot/inc/sot/storage.hxx @@ -95,6 +95,7 @@ public: sal_Bool GetProperty( const String& rName, ::com::sun::star::uno::Any& rValue ); ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetXInputStream() const; + virtual sal_Size remainingSize(); }; #ifndef SOT_DECL_SOTSTORAGESTREAM_DEFINED diff --git a/sot/source/sdstor/stg.cxx b/sot/source/sdstor/stg.cxx index 27c95c8..4f4e991 100644 --- a/sot/source/sdstor/stg.cxx +++ b/sot/source/sdstor/stg.cxx @@ -234,6 +234,13 @@ sal_uLong StorageStream::Seek( sal_uLong n ) return n; } +sal_Size StorageStream::remainingSize() +{ + if( Validate() ) + return pEntry->GetSize() - Tell(); + return 0; +} + void StorageStream::Flush() { // Flushing means committing, since streams are never transacted diff --git a/sot/source/sdstor/storage.cxx b/sot/source/sdstor/storage.cxx index 1006b7c..67b270f 100644 --- a/sot/source/sdstor/storage.cxx +++ b/sot/source/sdstor/storage.cxx @@ -286,6 +286,13 @@ sal_uInt32 SotStorageStream::GetSize() const return nSize; } +sal_Size SotStorageStream::remainingSize() +{ + if (pOwnStm) + return pOwnStm->remainingSize(); + return SvStream::remainingSize(); +} + /************************************************************************* |* SotStorageStream::CopyTo() |* diff --git a/sot/source/sdstor/ucbstorage.cxx b/sot/source/sdstor/ucbstorage.cxx index 0254ef2..2a1a000 100644 --- a/sot/source/sdstor/ucbstorage.cxx +++ b/sot/source/sdstor/ucbstorage.cxx @@ -1554,6 +1554,11 @@ sal_Bool UCBStorageStream::GetProperty( const String& rName, ::com::sun::star::u return sal_False; } +sal_Size UCBStorageStream::remainingSize() +{ + return pImp->GetSize() - Tell(); +} + UCBStorage::UCBStorage( SvStream& rStrm, sal_Bool bDirect ) { String aURL = GetLinkedFile( rStrm ); diff --git a/tools/inc/tools/stream.hxx b/tools/inc/tools/stream.hxx index dc4505a..d60f9e6 100644 --- a/tools/inc/tools/stream.hxx +++ b/tools/inc/tools/stream.hxx @@ -374,7 +374,7 @@ public: sal_Size SeekRel( sal_sSize nPos ); sal_Size Tell() const { return nBufFilePos+nBufActualPos; } //length between current (Tell()) pos and end of stream - sal_Size remainingSize(); + virtual sal_Size remainingSize(); void Flush(); sal_Bool IsEof() const { return bIsEof; } // next Tell() <= nSize @@ -789,6 +789,7 @@ public: sal_Bool IsObjectMemoryOwner() { return bOwnsData; } void SetResizeOffset( sal_Size nNewResize ) { nResize = nNewResize; } sal_Size GetResizeOffset() const { return nResize; } + virtual sal_Size remainingSize() { return GetSize() - Tell(); } }; // -------------------- diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx index 96cabc2..c1f06a7 100644 --- a/tools/source/stream/stream.cxx +++ b/tools/source/stream/stream.cxx @@ -1703,9 +1703,9 @@ sal_Size SvStream::Seek( sal_Size nFilePos ) return nBufFilePos + nBufActualPos; } -//probably not as inefficient as it looks seeing as STREAM_SEEK_TO_END in the -//Seek backends is nomally special cased feel free to make this virtual and add -//good implementations for SvFileStream etc +//STREAM_SEEK_TO_END in the some of the Seek backends is special cased to be +//efficient, in others e.g. SotStorageStream it's really horribly slow, and in +//those this should be overridden sal_Size SvStream::remainingSize() { sal_Size nCurr = Tell(); commit 80fdb3498c68f9e7f9bdd98674e762cb084fce57 Author: Caolán McNamara <[email protected]> Date: Wed May 2 22:45:52 2012 +0100 drop ensure for non-NULL pointer and use a ref Change-Id: I492c576a9a04874538f07769f5ac40f84e2d4308 diff --git a/uui/source/iahndl-errorhandler.cxx b/uui/source/iahndl-errorhandler.cxx index f3abea7..aa89315 100644 --- a/uui/source/iahndl-errorhandler.cxx +++ b/uui/source/iahndl-errorhandler.cxx @@ -185,7 +185,7 @@ UUIInteractionHelper::handleErrorHandlerRequest( if (!xManager.get()) return; ResId aResId(aId[eSource], *xManager.get()); - if (!ErrorResource(aResId).getString(nErrorCode, &aMessage)) + if (!ErrorResource(aResId).getString(nErrorCode, aMessage)) return; } diff --git a/uui/source/iahndl-ssl.cxx b/uui/source/iahndl-ssl.cxx index 5bd3832..2b860ff 100644 --- a/uui/source/iahndl-ssl.cxx +++ b/uui/source/iahndl-ssl.cxx @@ -172,7 +172,7 @@ executeUnknownAuthDialog( { ResId aResId(RID_UUI_ERRHDL, *xManager.get()); if (ErrorResource(aResId).getString( - ERRCODE_UUI_UNKNOWNAUTH_UNTRUSTED, &aMessage)) + ERRCODE_UUI_UNKNOWNAUTH_UNTRUSTED, aMessage)) { aMessage = UUIInteractionHelper::replaceMessageWithArguments( aMessage, aArguments ); @@ -241,7 +241,7 @@ executeSSLWarnDialog( ResId aResId(RID_UUI_ERRHDL, *xManager.get()); if (ErrorResource(aResId).getString( ERRCODE_AREA_UUI_UNKNOWNAUTH + failure + DESCRIPTION_1, - &aMessage_1)) + aMessage_1)) { aMessage_1 = UUIInteractionHelper::replaceMessageWithArguments( aMessage_1, aArguments_1 ); @@ -250,7 +250,7 @@ executeSSLWarnDialog( rtl::OUString aTitle; ErrorResource(aResId).getString( - ERRCODE_AREA_UUI_UNKNOWNAUTH + failure + TITLE, &aTitle); + ERRCODE_AREA_UUI_UNKNOWNAUTH + failure + TITLE, aTitle); xDialog->SetText( aTitle ); } diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index 2406b40..8816ea9 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -1488,7 +1488,7 @@ UUIInteractionHelper::handleBrokenPackageRequest( return; ResId aResId( RID_UUI_ERRHDL, *xManager.get() ); - if ( !ErrorResource(aResId).getString(nErrorCode, &aMessage) ) + if ( !ErrorResource(aResId).getString(nErrorCode, aMessage) ) return; } @@ -1545,17 +1545,16 @@ UUIInteractionHelper::handleBrokenPackageRequest( //========================================================================= bool -ErrorResource::getString(ErrCode nErrorCode, rtl::OUString * pString) +ErrorResource::getString(ErrCode nErrorCode, rtl::OUString &rString) const SAL_THROW(()) { - OSL_ENSURE(pString, "specification violation"); ResId aResId(static_cast< sal_uInt16 >(nErrorCode & ERRCODE_RES_MASK), *m_pResMgr); aResId.SetRT(RSC_STRING); if (!IsAvailableRes(aResId)) return false; aResId.SetAutoRelease(false); - *pString = UniString(aResId); + rString = aResId.toString(); m_pResMgr->PopContext(); return true; } diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx index df1edde..3306e27 100644 --- a/uui/source/iahndl.hxx +++ b/uui/source/iahndl.hxx @@ -346,28 +346,10 @@ public: inline ~ErrorResource() SAL_THROW(()) { FreeResource(); } - bool getString(ErrCode nErrorCode, rtl::OUString * pString) const + bool getString(ErrCode nErrorCode, rtl::OUString &rString) const SAL_THROW(()); }; -/* -class InteractionRequest -{ -public: - InteractionRequest( - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionRequest > const & rRequest) - : m_aRequest( rRequest ) {} - - virtual bool toString( rtl::OUString & rString ) = 0; - virtual bool handle( rtl::OUString & rString ) = 0; - -private: - com::sun::star::uno::Reference< - com::sun::star::task::XInteractionRequest > m_aRequest; -}; -*/ - #endif // UUI_IAHNDL_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 4312651dfc47a9bb6eff5c18862e67dded1cf385 Author: Caolán McNamara <[email protected]> Date: Wed May 2 22:40:44 2012 +0100 XubString->rtl::OUString Change-Id: I21b785169788e20c8bb05c2fdc9333068f1c69ab diff --git a/sw/source/core/inc/scriptinfo.hxx b/sw/source/core/inc/scriptinfo.hxx index aa636fc..b58dbb2 100644 --- a/sw/source/core/inc/scriptinfo.hxx +++ b/sw/source/core/inc/scriptinfo.hxx @@ -291,7 +291,7 @@ public: Start index of the text @return Returns if the language is an Arabic language */ - static sal_Bool IsArabicText( const XubString& rTxt, xub_StrLen nStt, xub_StrLen nLen ); + static bool IsArabicText( const rtl::OUString& rTxt, sal_Int32 nStt, sal_Int32 nLen ); /** Performes a thai justification on the kerning array @@ -311,9 +311,9 @@ public: The value which has to be added to the cells. @return The number of extra spaces in the given range */ - static sal_uInt16 ThaiJustify( const XubString& rTxt, sal_Int32* pKernArray, - sal_Int32* pScrArray, xub_StrLen nIdx, - xub_StrLen nLen, xub_StrLen nNumberOfBlanks = 0, + static sal_Int32 ThaiJustify( const rtl::OUString& rTxt, sal_Int32* pKernArray, + sal_Int32* pScrArray, sal_Int32 nIdx, + sal_Int32 nLen, sal_Int32 nNumberOfBlanks = 0, long nSpaceAdd = 0 ); static SwScriptInfo* GetScriptInfo( const SwTxtNode& rNode, diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index 7f0e387..7d8bdee 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -1851,7 +1851,7 @@ sal_uInt16 SwScriptInfo::KashidaJustify( sal_Int32* pKernArray, * character has to be checked because a ctl portion only contains one * script, see NewTxtPortion *************************************************************************/ -sal_Bool SwScriptInfo::IsArabicText( const XubString& rTxt, xub_StrLen nStt, xub_StrLen nLen ) +bool SwScriptInfo::IsArabicText( const rtl::OUString& rTxt, sal_Int32 nStt, sal_Int32 nLen ) { using namespace ::com::sun::star::i18n; static ScriptTypeList typeList[] = { @@ -1862,7 +1862,7 @@ sal_Bool SwScriptInfo::IsArabicText( const XubString& rTxt, xub_StrLen nStt, xub // go forward if current position does not hold a regular character: const CharClass& rCC = GetAppCharClass(); sal_Int32 nIdx = nStt; - const xub_StrLen nEnd = nStt + nLen; + const sal_Int32 nEnd = nStt + nLen; while ( nIdx < nEnd && !rCC.isLetterNumeric( rTxt, (xub_StrLen)nIdx ) ) { ++nIdx; @@ -1880,11 +1880,11 @@ sal_Bool SwScriptInfo::IsArabicText( const XubString& rTxt, xub_StrLen nStt, xub if( nIdx >= 0 ) { - const xub_Unicode cCh = rTxt.GetChar( (xub_StrLen)nIdx ); + const xub_Unicode cCh = rTxt[nIdx]; const sal_Int16 type = unicode::getUnicodeScriptType( cCh, typeList, UnicodeScript_kScriptCount ); return type == UnicodeScript_kArabic; } - return sal_False; + return false; } /************************************************************************* @@ -2075,22 +2075,22 @@ bool SwScriptInfo::MarkKashidasInvalid ( xub_StrLen nCnt, xub_StrLen* pKashidaPo * SwScriptInfo::ThaiJustify() *************************************************************************/ -sal_uInt16 SwScriptInfo::ThaiJustify( const XubString& rTxt, sal_Int32* pKernArray, - sal_Int32* pScrArray, xub_StrLen nStt, - xub_StrLen nLen, xub_StrLen nNumberOfBlanks, +sal_Int32 SwScriptInfo::ThaiJustify( const rtl::OUString& rTxt, sal_Int32* pKernArray, + sal_Int32* pScrArray, sal_Int32 nStt, + sal_Int32 nLen, sal_Int32 nNumberOfBlanks, long nSpaceAdd ) { - OSL_ENSURE( nStt + nLen <= rTxt.Len(), "String in ThaiJustify too small" ); + OSL_ENSURE( nStt + nLen <= rTxt.getLength(), "String in ThaiJustify too small" ); SwTwips nNumOfTwipsToDistribute = nSpaceAdd * nNumberOfBlanks / SPACING_PRECISION_FACTOR; long nSpaceSum = 0; - sal_uInt16 nCnt = 0; + sal_Int32 nCnt = 0; - for ( sal_uInt16 nI = 0; nI < nLen; ++nI ) + for (sal_Int32 nI = 0; nI < nLen; ++nI) { - const xub_Unicode cCh = rTxt.GetChar( nStt + nI ); + const xub_Unicode cCh = rTxt[nStt + nI]; // check if character is not above or below base if ( ( 0xE34 > cCh || cCh > 0xE3A ) &&
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
