#include "PaperSize.h" using namespace std; namespace Device { PaperSize::PaperSize(int pid):pid_(pid) { InitPaperMap(); } 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 || pid_ == 0x402) 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{297,432} }); 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}; long cx = papersize[(TwSS)paperType].cx * dpi / 25.4; long cy = papersize[(TwSS)paperType].cy * dpi / 25.4; if (orentation == 0) { resize.cx = cx; resize.cy = cy; } else { resize.cx = cy; resize.cy = cx; } return resize; } return SIZE{2338, 3307}; } }