#include "PaperSize.h" using namespace std; namespace Device { PaperSize::PaperSize(int pid):pid_(pid) { InitPaperMap(); } PaperSize::~PaperSize() { } void PaperSize::InitPaperMap() { papersize.insert({ A3,SIZE{297,420} }); papersize.insert({ A4,SIZE{210,297} }); papersize.insert({ A5,SIZE{148,210} }); papersize.insert({ A6,SIZE{105,148} }); papersize.insert({ B4,SIZE{250,353} }); papersize.insert({ B5,SIZE{176,250} }); papersize.insert({ B6,SIZE{125,176} }); if(pid_ == 0x400) papersize.insert({ MaxSize,SIZE{297,(long)(420 * 1.5)} }); else if(pid_ == 0x300) papersize.insert({ MaxSize,SIZE{210,297 * 2} }); else papersize.insert({ MaxSize,SIZE{297,420 * 2} }); if(pid_ == 0x300) papersize.insert({ USStatement,SIZE{210,(long)(297 * 1.5)} }); else papersize.insert({ USStatement,SIZE{297,(long)(420 * 1.5)} }); papersize.insert({ USLetter,SIZE{216,279} }); papersize.insert({ USLegal,SIZE{216,356} }); papersize.insert({ USLedger,SIZE{216,559} }); papersize.insert({ None,SIZE{297,420} }); papersize.insert({ K8,SIZE{270,390} }); papersize.insert({ K16,SIZE{190,270} }); papersize.insert({ Trigeminy,SIZE{270,560} }); } SIZE PaperSize::GetPaperSize(DWORD paperType, float dpi,int orentation) { if (papersize.find((TwSS)paperType) != papersize.end() && (dpi > 99 && dpi < 601)) { SIZE 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 SIZE{2338, 3307}; //auto iter = dpiDct.find({(TwSS)paperType, dpi}); //if (iter != dpiDct.end()) { // if (orentation == 0) // return iter->second; // else if(orentation == 3) // { // SIZE size; // size.cx = iter->second.cy; // size.cy = iter->second.cx; // return size; // } //} //return SIZE(2338, 3307); } }