⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printer.h

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 H
字号:
// PRINTER.H
//
// Copyright (c) 1997-2001 Symbian Ltd. All rights reserved.

#ifndef __PRINTER_H__
#define __PRINTER_H__

#include <coemain.h>
#include <coeutils.h>
#include <coecntrl.h>
#include <eikenv.h>
#include <eikdll.h>
#include <e32base.h>
#include <e32hal.h>
#include <eikappui.h>
#include <e32keys.h>
#include <eikedwin.h>
#include <eikedwob.h>
#include <eikrted.h>
#include <eiktbar.h>
#include <eikcfdlg.h>
#if !defined(__UIQ__)
#include <eikpprob.h>
#include <eikprtpv.h>
#include <eikmfne.h>
#include <eikprtdg.h>
#else
#endif
#include <eikproc.h>
#include <eikapp.h>
#include <eikdoc.h>
#include <eikchkbx.h>
#include <gulutil.h>
#include <eiklabel.h>
#include <fbs.h>
#include <frmprint.h>
#include <frmvis.h>
#include <oplapi.h>
#include <opxapi.h>
#include <opldoc.h>
#include <oplerr.h>
#include <prnsetup.h>
#include <txtfmlyr.h>
#include <txtrich.h>
#include <w32std.h>
#include <eikon.hrh>
#include <eikon.rsg>
#include <eikon.mbg>

#include "picbtmap.h"

class CEikonEnv;
class COplPrintEngine;

const TInt KOpxPrinterVersion=0x600;

const TInt KOplDontTruncate=-1;
enum TTextInsertPosition
	{
	EAppend,
	EInsert
	};

// CPRINTEROpx uses OplAPI to get and return parameters and COplPrintEngine to do the work
// Public interface functions in this class correspond to those in the OPX header file, and
// thus represent the interface for the OPX
class CPRINTEROpx :public COpxBase
	{
public:
	CPRINTEROpx();
	~CPRINTEROpx();
	static CPRINTEROpx* NewL(OplAPI& aOplAPI);
	virtual void RunL(TInt aProcNum);
	virtual TBool CheckVersion(TInt aVersion);

	// Public interface functions that are called from OPL
	// These generally pop arguments from iOplAPI reference member, and then call 
	// a member of the iOplPrintEngine on those args.

	// Character/string insertion
	void SendStringToPrinterL();
	void InsertStringL();
	void SendNewParaToPrinterL();
	void InsertNewParaL();
	void SendSpecialCharToPrinterL();
	void InsertSpecialCharL();

	// Paragraph Formatting
	void SetAlignmentL();
	void InitialiseParaFormatL();
	void SetLocalParaFormatL();
	void SetGlobalParaFormatL();
	void RemoveSpecificParaFormatL();

	// Font Formatting
	void SetFontNameL();
	void SetFontHeight();
	void SetFontPosition();
	void SetFontWeight();
	void SetFontPosture();
	void SetFontStrikethrough();
	void SetFontUnderline();
	void SetGlobalCharFormatL();
	void RemoveSpecificCharFormatL();

	// Set the bitmap to be printed, using a bitmap handle
	void SendBitmapToPrinterL();
	void InsertBitmapL();
	void SendScaledBitmapToPrinterL();
	void InsertScaledBitmapL();
	void PrinterDocLength();

	// For use with pointers generated by other OPX's or opl procedure calls
	void SendRichTextToPrinterL();
	void SendBufferToPrinterL();

	// Delete all content.
	void ResetPrinting();

	// A standard Eikon Dialog to set up margins, headers, page size & orientaion etc
	void PageSetupDialogL();

	// A standard Eikon Dialog that brings up a preview plus access to furthur dialogs
	void PrintPreviewDialogL();

	// A simple dialog for number of pages
	void PrintRangeDialogL();

	// A standard Eikon Dialog for number of pages
	void PrintDialogL();
private:
	enum TExtensions
		{
		ESendStringToPrinter = 1,
		EInsertString,
		ESendNewParaToPrinter, 
		EInsertNewPara, 
		ESendSpecialCharToPrinter, 
		EInsertSpecialChar, 
		ESetAlignment, 
		EInitialiseParaFormat, 
		ESetLocalParaFormat, 
		ESetGlobalParaFormat, 
		ERemoveSpecificParaFormat, 
		ESetFontName, 
		ESetFontHeight, 
		ESetFontPosition, 
		ESetFontWeight, 
		ESetFontPosture, 
		ESetFontStrikethrough, 
		ESetFontUnderline, 
		ESetGlobalCharFormat, 
		ERemoveSpecificCharFormat, 
		ESendBitmapToPrinter, 
		EInsertBitmap, 
		ESendScaledBitmapToPrinter, 
		EInsertScaledBitmap, 
		EPrinterDocLength, 
		ESendRichTextToPrinter,
		EResetPrinting, 
		EPageSetupDialog, 
		EPrintPreviewDialog, 
		EPrintRangeDialog, 
		EPrintDialog,
		ESendBufferToPrinter
		};
private:
	void ConstructL();
	CPRINTEROpx(OplAPI& aOplAPI);
private:
	COplPrintEngine* iOplPrintEngine;
	};

// COplPrintEngine: Providing printing capability (dialogs, print control) 
// that is accessed by CPRINTEROpx. 
//
class COplPrintEngine 
 :	public CBase,
	public MCoeControlObserver, 
	public MEikEdwinObserver, 
#if !defined(__UIQ__)
	public MPrintPreviewDialogObserver,
#endif
	public MFieldNumPagesInfo, 
	public MFieldFileNameInfo
	{
public:
	static COplPrintEngine* NewL(OplAPI& aOplAPI);
	~COplPrintEngine();

	void RunPageSetupDialogL();
	void RunPrintPreviewDialogL();
	TBool RunPaginationDialogL();
	void RunPrintDialogL();
	void SendStringToPrinterL(TDesC& string);
	void SendBitmapToPrinterL(const TInt aHandle);
	void SendRichTextToPrinterL(CRichText* aRichText);
	TInt NumberOfPagesInDoc();
	inline CPrintSetup* ReturnPrintSetup() {return iPrintSetup;}
	void InsertStringL(TDesC& aString,const TInt aPos,TTextInsertPosition aTIP = EInsert);
	void InsertBitmapL(const TInt aPos,const TInt aHandle,TTextInsertPosition aTIP = EInsert, TInt aXScale = 1000, TInt aYScale = 1000);
	TInt DocumentLength();
	void InsertSpecialCharacterL(TInt16 aSpecialChar, const TInt aPos, TTextInsertPosition aTIP = EInsert);
	void SetFontNameL(TDesC& aName);
	void SetFontHeight(const TInt16 aHeight);
	void SetFontPosition(const TInt16 aPosition);
	void SetFontWeight(const TInt16 aWeight);
	void SetFontPosture(const TInt16 aPosture);
	void SetFontStrikethrough(const TInt16 aStrikethrough);
	void SetFontUnderline(const TInt16 aUnderline);
	void ResetPrinting();
	void SetAlignmentL(CParaFormat::TAlignment aAlignment);
	void InitialiseParaFormatL(
		TInt16 aRed,
		TInt16 aGreen,
		TInt16 aBlue,
		TInt32 aLeftMarginInTwips,
		TInt32 aRightMarginInTwips,
		TInt32 aIndentInTwips,
		CParaFormat::TAlignment aHorizontalAlignment,
		CParaFormat::TAlignment aVerticalAlignment,
		TInt32 aLineSpacingInTwips,
		CParaFormat::TLineSpacingControl aLineSpacingControl,
		TInt32 aSpaceBeforeInTwips,
		TInt32 aSpaceAfterInTwips,
		TBool aKeepTogether,
		TBool aKeepWithNext,
		TBool aStartNewPage,
		TBool aWidowOrphan,
		TBool aWrap,
		TInt32 aBorderMarginInTwips,
		TUint32 aDefaultTabWidthInTwips);
	void SetLocalParaFormatL();
	void SetGlobalParaFormatL();
	void RemoveSpecificParaFormatL();
	void SetGlobalCharFormatL();
	void RemoveSpecificCharFormatL();
public:	// MPrintPreviewDialogObserver
	virtual TBool PageSetupChangedL(CPrintSetup* aPrintSetup, TInt& aNumPagesInDoc);	//return true if cancelled
	virtual TBool RunPrintRangeDialogL(CPrintSetup* aPrintSetup, TInt& aNumPagesInDoc);	//return true if cancelled
public: // MCoeControlObserver
	virtual void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
public: // MEikEdwinObserver
	virtual void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType);
public: // MFieldNumPagesInfo
	virtual int UpdateFieldNumPages(void)const;
public: // MFieldFileNameInfo
	virtual int UpdateFieldFileName(class TPtr16 &)const;
private:
	void ConstructL(OplAPI& aOplAPI);
	void ResetFormatL(const TInt aPos);
	TInt SetInsertPositon(const TInt aPos, const TTextInsertPosition aTIP);
	void DefaultFormatting();
	TDisplayMode DefaultDisplayMode() const;
	TBool RemoveUnnessaryParaSettings(const CParaFormat *aParaFormat,TParaFormatMask *aParaMask,long pos);
	TBool RemoveUnnessaryCharSettings(const TCharFormat *pCharFormat,TCharFormatMask *pCharMask,long Pos);
	TBool RemoveUnnessaryParaSettings2(const CParaFormat *pBaseParaFormat,const CParaFormat *pParaFormat,TParaFormatMask *pParaMask);
	TBool RemoveUnnessaryCharSettings2(const TCharFormat *pBaseCharFormat,const TCharFormat *pCharFormat,TCharFormatMask *pCharMask);
private:
	CPrintSetup* iPrintSetup;
	CParaFormatLayer* iParaFormatLayer;
	CCharFormatLayer* iCharFormatLayer;
	CTextPageRegionPrinter* iPrint;
	CRichText* iRichText;
	CRichText* iMyRichText;
	TPrintParameters iPrintParameters;
	CArrayFix<TInt>* iCharsPerPage;
	OplAPI* iOplAPI;
	TBool iInitialised ;
	TBool iDocumentChanged;
	TBool iFormatChanged;
	TInt iNumPages;
	TBool iPaginateDialogCalled;
	TBufC<KMaxTypefaceNameLength> iFontName;
	TCharFormatMask iCharFormatMask;
	TCharFormat iCharFormat;
	CParaFormat* iParaFormat;
	TParaFormatMask iParaFormatMask;
	TInt16 iFontHeight;
	};

#endif // __PRINTER_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -