newtx/sdk/base/paper.cpp

72 lines
1.9 KiB
C++
Raw Normal View History

2024-01-11 09:59:23 +00:00
#include "paper.h"
#include <string>
#include <map>
namespace paper
{
class paper_init
{
std::map<std::string, SIZE> papers_;
public:
paper_init()
{
papers_["A3"] = {297, 420};
papers_["A4"] = {210, 297};
papers_["A5"] = {148, 210};
papers_["A6"] = {105, 148};
papers_["B4"] = {250, 352};
papers_["B5"] = {176, 250};
papers_["B6"] = {125, 176};
papers_["8\345\274\200"] = {285, 420}; // 8开
papers_["16\345\274\200"] = {210, 285}; // 16开
papers_["Letter"] = {216, 322}; // Letter+
papers_["Double Letter"] = {322, 432};
papers_["LEGAL"] = {236, 381}; // Legal+
// 匹配原始尺寸
papers_["\345\214\271\351\205\215\345\216\237\345\247\213\345\260\272\345\257\270"] = papers_["A3"];
// 最大扫描尺寸
papers_["\346\234\200\345\244\247\346\211\253\346\217\217\345\260\272\345\257\270"] = papers_["A3"];
// 最大扫描尺寸自动裁切
papers_["\346\234\200\345\244\247\346\211\253\346\217\217\345\260\272\345\257\270\350\207\252\345\212\250\350\243\201\345\210\207"] = papers_["A3"];
// 三联试卷
papers_["\344\270\211\350\201\224\350\257\225\345\215\267"] = {216, 356};
}
~paper_init()
{
papers_.clear();
}
public:
SIZE size(const char* name)
{
if(papers_.count(name))
return papers_[name];
return {0, 0};
}
};
static paper_init paperi;
// get known paper size in mm
SIZE size(const char* name)
{
return paperi.size(name);
}
2024-01-24 04:05:05 +00:00
void swap_size(SIZE& s)
{
s.cx ^= s.cy;
s.cy ^= s.cx;
s.cx ^= s.cy;
}
2024-01-11 09:59:23 +00:00
};