printsession.cpp

来自「这是VCF框架的代码」· C++ 代码 · 共 274 行

CPP
274
字号
//PrintSession.cpp#include "vcf/GraphicsKit/GraphicsKit.h"#include "vcf/GraphicsKit/PrintSession.h"#include "vcf/GraphicsKit/PrintSessionPeer.h"using namespace VCF;PrintSession::PrintSession():	peer_(NULL),	errorDuringPrinting_(false),	currentPage_(PrintSession::UnknownPage){		peer_ = GraphicsToolkit::createPrintSessionPeer();	if ( NULL == peer_ ) {	}}PrintSession::~PrintSession(){	delete peer_;}double PrintSession::getDPI(){	return peer_->getDPI();}String PrintSession::getTitle(){	return title_;}void PrintSession::setTitle( const String& title ){	title_ = title;	peer_->setTitle( title_ );}void PrintSession::setDefaultPageSettings(){	peer_->setDefaultPageSettings();}Size PrintSession::getPageSize(){	return peer_->getPageSize();}Size PrintSession::getPageSizeIn( PrintSession::PageSizeUnits units ){		Size adjustedPageSize(peer_->getPageSize());	double dpi = peer_->getDPI();	switch( units ) {		case psuPoints : {			adjustedPageSize.width_ = (adjustedPageSize.width_/dpi) * 72.0;			adjustedPageSize.height_ = (adjustedPageSize.height_/dpi) * 72.0;		}		break;		case psuInches : {			adjustedPageSize.width_ = adjustedPageSize.width_ / dpi;			adjustedPageSize.height_ = adjustedPageSize.height_ / dpi;		}		break;		case psuMillimeters : {			adjustedPageSize.width_ = (adjustedPageSize.width_/dpi) * 25.40;			adjustedPageSize.height_ = (adjustedPageSize.height_/dpi) * 25.40;		}		break;		case psuTwips : {			adjustedPageSize.width_ = (adjustedPageSize.width_/dpi) * 1400.0;			adjustedPageSize.height_ = (adjustedPageSize.height_/dpi) * 1400;					}		break;	}	return adjustedPageSize;}void PrintSession::setPageSize( const Size& pageSize ){	peer_->setPageSize(pageSize);}void PrintSession::setPageSizeIn( const Size& pageSize, PrintSession::PageSizeUnits units ){	Size adjustedPageSize(pageSize);	double dpi = peer_->getDPI();	switch( units ) {		case psuPoints : {			adjustedPageSize.width_ = (pageSize.width_/72.0) * dpi;			adjustedPageSize.height_ = (pageSize.height_/72.0) * dpi;		}		break;		case psuInches : {			adjustedPageSize.width_ = pageSize.width_ * dpi;			adjustedPageSize.height_ = pageSize.height_ * dpi;		}		break;		case psuMillimeters : {			adjustedPageSize.width_ = (pageSize.width_/25.40) * dpi;			adjustedPageSize.height_ = (pageSize.height_/25.40) * dpi;		}		break;		case psuTwips : {			adjustedPageSize.width_ = (pageSize.width_/1400.0) * dpi;			adjustedPageSize.height_ = (pageSize.height_/1400.0) * dpi;		}		break;	}		peer_->setPageSize(adjustedPageSize);}void PrintSession::setStandardPageSize( const PageSize& pageSize ){	peer_->setStandardPageSize(pageSize);}void PrintSession::setStartPage( const ulong32& startPage ){	peer_->setStartPage(startPage);}ulong32 PrintSession::getStartPage(){	return peer_->getStartPage();}void PrintSession::setEndPage( const ulong32& endPage ){	peer_->setEndPage(endPage);}ulong32 PrintSession::getEndPage(){	return peer_->getEndPage();}std::vector<ulong32> PrintSession::getPrintablePages(){	return peer_->getPrintablePages();}void PrintSession::setPrintablePages( const std::vector<ulong32>& printablePages ){	peer_->setPrintablePages( printablePages );}Rect PrintSession::getPageDrawingRect(){	return peer_->getPageDrawingRect();}void PrintSession::setPageDrawingRect( const Rect& drawingRect ){	peer_->setPageDrawingRect( drawingRect );}PrintInfoHandle PrintSession::getPrintInfoHandle(){	return peer_->getPrintInfoHandle();}void PrintSession::setPrintInfoHandle( PrintInfoHandle info ){	peer_->setPrintInfoHandle( info );}void PrintSession::abort(){	peer_->abort();}PrintContext* PrintSession::beginPrintingDocument(){	errorDuringPrinting_ = false;	PrintContext* result = peer_->beginPrintingDocument();	result->setViewableBounds( getPageDrawingRect() );	PrintEvent event( this, result, PrintSession::UnknownPage, PrintingBegunEvent );	PrintingBegun.fireEvent( &event );	return result;}void PrintSession::endPrintingDocument(){	try {		peer_->endPrintingDocument();		PrintEvent event( this, NULL, PrintSession::UnknownPage, PrintingFinishedEvent );		PrintingFinished.fireEvent( &event );	}	catch ( BasicException& ) {		errorDuringPrinting_ = true;	}}void PrintSession::beginPage( PrintContext* context ){	try {		peer_->beginPage( context );		PrintEvent event( this, context, currentPage_, PageBegunEvent );		PageBegun.fireEvent( &event );	}	catch ( BasicException& ) {		errorDuringPrinting_ = true;	}}void PrintSession::endPage( PrintContext* context ){	try {		peer_->endPage( context );		PrintEvent event( this, context, currentPage_, PageDoneEvent );		PageDone.fireEvent( &event );	}	catch ( BasicException& ) {		errorDuringPrinting_ = true;	}}void PrintSession::runDefaultPrintLoop() {	errorDuringPrinting_ = false;	currentPage_ = PrintSession::UnknownPage;	int firstPage = this->getStartPage();	int lastPage = this->getEndPage();	PrintContext* printCtx = beginPrintingDocument();	if ( NULL == printCtx ) {		throw RuntimeException( MAKE_ERROR_MSG_2("Failed to create a Printer Context") );	}	int page = firstPage;	while ( page <= lastPage ) {		currentPage_ = page;		beginPage( printCtx );		endPage( printCtx );						page++;	}	endPrintingDocument();	printCtx->free();}

⌨️ 快捷键说明

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