epoc32/include/frmpage.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
--- a/epoc32/include/frmpage.h	Wed Mar 31 12:27:01 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#ifndef __FRMPAGE_H__
-#define __FRMPAGE_H__
-
-#include <e32std.h>
-#include <e32base.h>
-#include <gdi.h>
-
-class MLayDoc;
-class CTextLayout;
-class CParaFormat;
-
-//
-// The following two classes are for internal use only
-//
-
-/**
-@internalComponent
-*/
-struct TPageLine
-	{
-	TInt iDocPos;
-	TInt iLineHeight;
-	TBool iKeepWithNext;
-	TBool iStartNewPage;
-	};
-
-/**
-@internalComponent
-*/
-class TLinePaginator
-	{
-public:
-	TLinePaginator();
-	TBool AppendLineL(TPageLine aLine);
- 	void FlushL(TInt aEndDocPos);
-	void SetPageHeight(TInt aPageHeight);
-	void SetArray(CArrayFix<TInt>* aCharsPerPage);
-	void Reset();
-private:
-	void ResetArray();
- 	void InsertPageBreakL();
-	void SetPotentialBreakPoint(TInt aDocPos);
-	void CheckTallLineL(TPageLine& aLine);
-private:
-	CArrayFix<TInt>* iPageList;	 // This is created and destroyed by the application running the paginator.
-	TInt iDocPos;
-	TBool iKeepWithPrev;
-	TInt iPageHeight;
-	TInt iHeightRem;
-	TBool iBreakOnPage;
-	TInt iPrevPageBreak;
-	TInt iHeightLines;
-	TBool iFirstLine;  // Used to prevent page break being inserted at top of document.
-	};
-
-/** 
-An abstract class which must be mixed with application calling the active object.
-It specifies the protocol for a pagination observer. A
-pagination observer may be used when paginating a document in the background
-(using CTextPaginator::PaginateCompleteDocumentL()). It notifies the client
-on page completion, document completion, and on errors.
-
-The observer is set up using the function CTextPaginator::SetObserver().
-@publishedAll
-@released
-*/
-class MPaginateObserver
-	{
-public:
-
-	/** Notifies the client on completion of document pagination. */
-	virtual void NotifyCompletion()=0;
-
-	/** Notifies the client when a leave is trapped or when the pagination is cancelled.
-	Implements error handling.
-	@param anErrorCode Error code - indicates the type of error. */
-	virtual void NotifyError(TInt anErrorCode)=0;
-
-	/** Called by the paginator when each page has been completed.
-	@param aCurrentPageNum The number of the page. */
-	virtual void NotifyPageCompletion(TInt aCurrentPageNum)=0;
-	};
-
-
-
-/** 
-Paginates a document.
-
-Sets the page dimensions, the printer device and the source document to paginate. 
-Uses a page list, which is an array of characters-per-page values.
-
-There are two ways of paginating a document; either in the background using 
-an active object or by incrementally adding text to the document and repeatedly 
-notifying the CTextPaginator object to paginate the added text. If an active 
-object is used, the client may be notified on completion of pages, on trapped 
-leaves and on completion of the pagination by an optional pagination observer. 
-@publishedAll
-@released
-*/
-class CTextPaginator : public CActive
-	{
-public:
-// 2 phase ctor: automatically adds self to active scheduler 
-	IMPORT_C static CTextPaginator* NewL(CPrinterDevice* aPrinterDevice,CArrayFix<TInt>* aCharsPerPage,TInt aPriority);	
-	IMPORT_C ~CTextPaginator();
-	IMPORT_C void SetDocumentL(MLayDoc* aLayDoc); // Must call before anything else
-	IMPORT_C void SetPrinterDevice(CPrinterDevice* aPrinterDevice);
-	IMPORT_C void SetPageSpecInTwips(const TPageSpec& aPageSpec);  // Physical size of page.
-	IMPORT_C void SetPageMarginsInTwips(const TMargins& aPageMargins); // Default are all zero.
-	IMPORT_C void SetTextMarginWidthsInTwips(TInt aLabelMarginWidth,TInt aGutterMarginWidth); // label margins (if any)
-// Called to initiate paginating a document using active object
-	IMPORT_C void SetObserver(MPaginateObserver* aObserver);
-	IMPORT_C void PaginateCompleteDocumentL();
-// Called to paginate incrementally, without active object
-	IMPORT_C TInt AppendTextL(TInt& aCumulativeDocPos);	// returns number of page breaks so far
-	IMPORT_C TInt PaginationCompletedL();	// called at end of incremental pagination	- returns total number of page breaks
-private:
-	enum TPaginateMode
-		{
-		EFPaginateCompleteDocument,
-		EFPaginateIncrementally
-		};
-	enum 
-		{
-		EPageLineArrayGranularity=10,
-		EPageListArrayGranularity=5
-		};
-	enum
-		{
-		EFMaximumNumberLinesInBlock=20
-		};
-private:
-	CTextPaginator(TInt aPriority);
-	void RunL(); // Active scheduler is friend - can access 
-	void DoCancel();  // Called by CActive::Cancel()
-	void ConstructL(CPrinterDevice* aPrinterDevice,CArrayFix<TInt>* aCharsPerPage);
-	void SetLayoutDimensions();
-	void SetOrReplaceDocumentL(MLayDoc* aLayDoc);
-	TRect TextRectInTwips() const;
-	TSize TextSizeInPixels() const;
-	void TrapPaginateParagraphL();
-	void PaginateParagraphL();
-	void PageCompleted();
-	void Reque();
-	void ResetPaginator();
-	void CopyTempPageListL();  // Copies temporary page list to real one.
-	void LeaveL(TInt aErr);
-private:
-	MLayDoc* iLayDoc;
-	MPaginateObserver* iObserver;
-	CPrinterDevice* iPrinterDevice;
-	TLinePaginator iPaginator;
-	CTextLayout* iLayout;
-	CArrayFix<TInt>* iPageList;
-	CArrayFixFlat<TInt>* iTempPageList;
-	CArrayFixFlat<TPageLine>* iPageLineArray;
-	TSize iPageSizeInTwips;
-	TMargins iPageMarginsInTwips;
-	TInt iGutterMarginWidthInTwips;   // Gap between labels and text proper - in twips
-	TInt iLabelMarginWidthInTwips;
-	TInt iDocPos;				// Within the laydoc
-	TBool iPageBreakChar;
-	TPaginateMode iMode;
-	};
-
-#endif