#include "stdafx.h" #include "PaperSize.h" using namespace std; namespace Device { PaperSize::PaperSize() { InitPaperMap(); } PaperSize::~PaperSize() { } void PaperSize::InitPaperMap() { papersize.insert({ A3,CSize(297,420) }); papersize.insert({ A4,CSize(210,297) }); papersize.insert({ A5,CSize(148,210) }); papersize.insert({ A6,CSize(105,148) }); papersize.insert({ B4,CSize(250,353) }); papersize.insert({ B5,CSize(176,250) }); papersize.insert({ B6,CSize(125,176) }); #ifdef G400 papersize.insert({ MaxSize,CSize(297,420 * 1.5) }); #else papersize.insert({ MaxSize,CSize(297,420 * 2) }); #endif papersize.insert({ USStatement,CSize(297,420 * 1.5) }); papersize.insert({ USLetter,CSize(216,279) }); papersize.insert({ USLegal,CSize(216,356) }); papersize.insert({ USLedger,CSize(279,432) }); papersize.insert({ None,CSize(297,420) }); papersize.insert({ K8,CSize(270,390) }); papersize.insert({ K16,CSize(190,270) }); papersize.insert({ Trigeminy,CSize(270,560) }); } CSize PaperSize::GetPaperSize(DWORD paperType, float dpi,int orentation) { if (papersize.find((TwSS)paperType) != papersize.end() && (dpi > 99 && dpi < 601)) { CSize resize(2338,3307); if (orentation == 0){ resize.cx = papersize[(TwSS)paperType].cx * dpi / 25.4; resize.cy = papersize[(TwSS)paperType].cy * dpi / 25.4; return resize; } else{ resize.cy = papersize[(TwSS)paperType].cx * dpi / 25.4; resize.cx = papersize[(TwSS)paperType].cy * dpi / 25.4; return resize; } } return CSize(2338, 3307); //auto iter = dpiDct.find({(TwSS)paperType, dpi}); //if (iter != dpiDct.end()) { // if (orentation == 0)//不需要旋转 // return iter->second; // else if(orentation == 3)//旋转九十度 // { // CSize size; // size.cx = iter->second.cy; // size.cy = iter->second.cx; // return size; // } //} //return CSize(2338, 3307); } }