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

📄 printout.cpp

📁 Powerful and Portable GPS application -- support Linux, Windows, Windows CE GPS navigation and Map m
💻 CPP
字号:
/* *  Roadnav *  Printout.cpp * *  Copyright (c) 2004 - 2007 Richard L. Lynch <rllynch@users.sourceforge.net> * *  This program is free software; you can redistribute it and/or *  modify it under the terms of version 2 of the GNU General Public License *  as published by the Free Software Foundation. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */ ///////////////////////////////////////////////////////////////////////////////// \file////// This file contains the Printout class, which is responsible/// for making a MapControl print to a printer or preview window/////////////////////////////////////////////////////////////////////////////////#ifdef HAVE_CONFIG_H#  include <config.h>#endif#ifdef _MSC_VER#pragma warning(disable: 4786)#endif#include <wx/wx.h>#include <wx/print.h>#include "Printout.h"//////////////////////////////////////////////////////////////////////////////////// \brief Printout constructor - remember the supplied variables, call base class/// constructor/////////////////////////////////////////////////////////////////////////////////Printout::Printout(wxString strTitle, MapControl * pctlMap) : wxPrintout(strTitle), m_pctlMap(pctlMap) {}//////////////////////////////////////////////////////////////////////////////////// \brief Called to print a single page (the only page)/////////////////////////////////////////////////////////////////////////////////bool Printout::OnPrintPage(int page){	wxDC *dc = GetDC();	if (dc)	{		int ppiScreenX, ppiScreenY;		int ppiPrinterX, ppiPrinterY;		double ppiDCX, ppiDCY;		int iMarginX;		int iMarginY;		int iDrawingWidth;		int iDrawingHeight;		// real dimensions of a page		int pageWidth, pageHeight;				// dimensions we'll use for this		int iDCWidth, iDCHeight;				double fOldDrawingScale;		// these will be the same if using the printer		// but different if previewing		GetPPIScreen(&ppiScreenX, &ppiScreenY);		GetPPIPrinter(&ppiPrinterX, &ppiPrinterY);		dc->GetSize(&iDCWidth, &iDCHeight);		GetPageSizePixels(&pageWidth, &pageHeight);				ppiDCX = (double) ppiPrinterX * iDCWidth / pageWidth;		ppiDCY = (double) ppiPrinterY * iDCHeight / pageHeight;		// one inch margin						iMarginX = (int) (1.0 * ppiDCX);		iMarginY = (int) (1.0 * ppiDCY);				iDrawingWidth = iDCWidth - 2 * iMarginX;		iDrawingHeight = iDCHeight - 2 * iMarginY;				dc->SetDeviceOrigin(iMarginX, iMarginY);				dc->SetClippingRegion(0, 0, iDrawingWidth, iDrawingHeight);		fOldDrawingScale = m_pctlMap->GetDrawingScaleFactor();		m_pctlMap->SetDrawingScaleFactor(ppiDCX / ppiScreenX);		m_pctlMap->DrawAll(dc, wxSize(iDrawingWidth, iDrawingHeight), true);		m_pctlMap->SetDrawingScaleFactor(fOldDrawingScale);				dc->DestroyClippingRegion();		return TRUE;	}	else		return FALSE;}//////////////////////////////////////////////////////////////////////////////////// \brief Indicates if a certain page is present. Currently, there's only one page./////////////////////////////////////////////////////////////////////////////////bool Printout::HasPage(int page){	if (page == 1)		return true;		return false;}//////////////////////////////////////////////////////////////////////////////////// \brief Returns info about how many pages there are./////////////////////////////////////////////////////////////////////////////////void Printout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo){    *minPage = 1;    *maxPage = 1;    *selPageFrom = 1;    *selPageTo = 1;}

⌨️ 快捷键说明

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