code_device/hgdriver/hgdev/PaperSize.cpp

73 lines
1.9 KiB
C++

#include "PaperSize.h"
using namespace std;
namespace Device {
PaperSize::PaperSize()
{
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} });
#ifdef G400
papersize.insert({ MaxSize,SIZE{297,420 * 1.5} });
#else
papersize.insert({ MaxSize,SIZE{297,420 * 2} });
#endif
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{279,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};
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);
}
}