📄 printer.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 + -