diff -r 17af172ffa5f -r 630d2f34d719 fax/faxclientandserver/FAXCLI/CFAXTSRC.CPP --- a/fax/faxclientandserver/FAXCLI/CFAXTSRC.CPP Thu Aug 19 11:03:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,262 +0,0 @@ -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file -*/ - - -#include "CFAX32.H" - -/********************************************************************/ - -CFaxTransferSource *CFaxTransferSource::NewLC() - { - CFaxTransferSource *self = new(ELeave) CFaxTransferSource; - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } -/********************************************************************/ - -CFaxTransferSource *CFaxTransferSource::NewL() - { - CFaxTransferSource *self = NewLC(); - CleanupStack::Pop(); - return self; - } -/********************************************************************/ - -void CFaxTransferSource::ConstructL () - { - iSources = CBufSeg::NewL (256); - } -/********************************************************************/ - -CFaxTransferSource::~CFaxTransferSource () - { - delete iSources; - iSources = NULL; - } -/********************************************************************/ - -// we come here with a document and a page or range of pages -//EXPORT_C void CFaxTransferSource::AddSourceL (const TFileName & aFaxPageStore, const TFileName & aFaxPageStore2) -// { -// AddSourceL(aFaxPageStore,1); -// AddSourceL(aFaxPageStore2,1); -// iFaxPages=iFaxPages/2; -// } - -EXPORT_C void CFaxTransferSource::AddSourceL (const TFileName & aFaxPageStore, TFaxPreferredCompression aPreferredCompression) -/** -@capability WriteUserData -*/ - { - AddSourceL (aFaxPageStore, 1, aPreferredCompression); - } - -EXPORT_C void CFaxTransferSource::AddSourceL (const TFileName & aFaxPageStore, TInt aStartPage, TFaxPreferredCompression aPreferredCompression) -/** -@capability WriteUserData -*/ - { - if (aStartPage < 1) - User::Leave (KErrUnderflow); - TInt lastPage = OpenFaxOutL (aFaxPageStore); - CloseFaxStore (); - AddSourceL (aFaxPageStore, aStartPage, lastPage, aPreferredCompression); - } - -EXPORT_C void CFaxTransferSource::AddSourceL (const TFileName & aFaxPageStore, TInt aStartPage, TInt aEndPage, TFaxPreferredCompression aPreferredCompression) -/** -@capability WriteUserData -*/ - { - iPage = 0; - if (aStartPage < 1) - User::Leave (KErrUnderflow); - else - { - if (aStartPage > aEndPage) - User::Leave (KErrOverflow); - else - { - iOurFaxEntry.iFaxPageStore = aFaxPageStore; - iOurFaxEntry.iStartPage = aStartPage; - iOurFaxEntry.iPageCount = (aEndPage - aStartPage + 1); - - iOutstream.Append (*iSources); - iOutstream << iOurFaxEntry; - iOutstream.CommitL (); - - iFaxListEntries++; - iFaxPages += iOurFaxEntry.iPageCount; - iOurPreferredCompression=aPreferredCompression; - } - } - } -/********************************************************************/ - -EXPORT_C void CFaxTransferSource::RemoveAllSources () -/** -@capability WriteUserData -*/ - { - iFaxPages = 0; - iFaxListEntries = 0; - iSources->Reset (); - } -/********************************************************************/ - -// this gets the next page of the fax -// and makes it all ready to be sent - -// the iInstream is opened already, and -// we never call this if iFaxListEntries -// and iOurFaxEntry.iPageCount are both zero - -void CFaxTransferSource::GetNextPageReadyL () - { - // if no pages in a current open document we need to get the next doc - - if (iOurFaxEntry.iPageCount == 0) - { - - // if page count is 0 we haven't started yet - // otherwise close the finished document - // then read the next entry in - // mark one less entry to deal with - // and open the next document - - if (iPage != 0) - CloseFaxStore (); - - iInstream >> iOurFaxEntry; - - --iFaxListEntries; - OpenFaxOutL (iOurFaxEntry.iFaxPageStore); - - // skip pages if we don't send from page 1 - - for (--iOurFaxEntry.iStartPage; iOurFaxEntry.iStartPage; --iOurFaxEntry.iStartPage) - ReadPageParmsL (); - } - ReadPageParmsL (); - iPage++; - --iOurFaxEntry.iPageCount; - } -/********************************************************************/ - -void CFaxTransferSource::OpenFaxInL (const TDesC & aFileName) - { - if (iWriteFaxFile == NULL) - iWriteFaxFile = CWriteFaxFile::NewL (); - iWriteFaxFile->OpenL (aFileName, 0); - } - -void CFaxTransferSource::PagePrepare () - { - iLines = 0; - ++iPage; - } - -void CFaxTransferSource::WriteFaxDataL (const TDesC8 & aBuffer) - { - iWriteFaxFile->iWriteFaxPages->AddEncodedScanLineL (aBuffer); - if (aBuffer.Length () != KMaxT4Des) - iLines++; - } - -void CFaxTransferSource::WritePageParmsL (TFaxBufSenderId & aSenderId) - { - iWriteFaxFile->iWriteFaxPages->EndPageL (TFaxResolution (iResolu), aSenderId, TFaxCompression (iCompression)); - iWriteFaxFile->CommitL (); - } - -void CFaxTransferSource::CloseFaxInStore () - { - iWriteFaxFile->Close (); // was CloseL till 6/3/97 - delete iWriteFaxFile; - iWriteFaxFile = NULL; - } -/*******************************************************************/ - -TInt CFaxTransferSource::OpenFaxOutL (const TDesC & aFileName) - { - CReadFaxFile *fax = iReadFaxFile; - if (fax == NULL) - iReadFaxFile = fax = CReadFaxFile::NewL (); - fax->OpenL (aFileName); - iPageInCurrentFile = 0; - return (fax->iReadFaxPages->NumPages ()); - } - -TInt CFaxTransferSource::NextPageFind () - { - return (iReadFaxFile->iReadFaxPages->NumPages ()) - iPageInCurrentFile; - } - -void CFaxTransferSource::ReadPageParmsL () - { - CReadFaxPages & pages = *iReadFaxFile->iReadFaxPages; - pages.SetPageL (iPageInCurrentFile++); - const TFaxPageInfo & info = pages.CurrentPageInfo (); - iLines = info.iNumScanLines; - iResolu = info.iResolution; - iCompression = info.iCompression; - } - -void CFaxTransferSource::ReadFaxData(TDes8& aBuffer) - { - // Discard the following error - TRAP_IGNORE(iReadFaxFile->iReadFaxPages->GetEncodedScanLineL(aBuffer)); - } - -void CFaxTransferSource::PreviousPageFindL() - { - --iPageInCurrentFile; - ReadPageParmsL(); - } - -void CFaxTransferSource::CloseFaxStore () - { - if (iReadFaxFile != NULL) - { - iReadFaxFile->Close (); - delete iReadFaxFile; - iReadFaxFile = NULL; - } - } - - -/*******************************************************************/ - -// we've also got a small subclass to handle the details of pages in the fax - -void TFaxEntry::ExternalizeL (RWriteStream & aStream) const - { - aStream << iFaxPageStore; - aStream.WriteUint8L (iStartPage); - aStream.WriteUint8L (iPageCount); - } - -void TFaxEntry::InternalizeL (RReadStream & aStream) - { - aStream >> iFaxPageStore; - iStartPage = aStream.ReadUint8L (); - iPageCount = aStream.ReadUint8L (); - } -/********************************************************************/