64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#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{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};
|
|
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};
|
|
}
|
|
} |