#include "paper.h" #include #include namespace paper { class paper_init { std::map 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); } void swap_size(SIZE& s) { s.cx ^= s.cy; s.cy ^= s.cx; s.cx ^= s.cy; } };