// // KMPageSizeTool.swift // PDF Reader Pro // // Created by tangchao on 2023/9/26. // import Cocoa let KMNPaperSizeNameA3: String = KMLocalizedString("A3") let KMNPaperSizeNameA4: String = KMLocalizedString("A4") let KMNPaperSizeNameA5: String = KMLocalizedString("A5") let KMNPaperSizeNameB5: String = KMLocalizedString("B5") let KMNPaperSizeNameEnvelope10: String = KMLocalizedString("Envelope #10") let KMNPaperSizeNameEnvelopeChoukei: String = KMLocalizedString("Envelope Choukei 3") let KMNPaperSizeNameEnvelopeDL: String = KMLocalizedString("Envelope DL") let KMNPaperSizeNameJISB5: String = KMLocalizedString("JIS B5") let KMNPaperSizeNameROC16K: String = KMLocalizedString("ROC 16K") let KMNPaperSizeNameSuper: String = KMLocalizedString("Super B/A3") let KMNPaperSizeNameTabloid: String = KMLocalizedString("Tabloid") let KMNPaperSizeNameTabloidOversize: String = KMLocalizedString("Tabloid Oversize") let KMNPaperSizeNameUSLegal: String = KMLocalizedString("US Legal") let KMNPaperSizeNameUSLetter: String = KMLocalizedString("US Letter") @objcMembers class KMNPageSizeTool: NSObject { static func paperSize() -> [String] { return [KMNPaperSizeNameA3, KMNPaperSizeNameA4, KMNPaperSizeNameA5, KMNPaperSizeNameB5, KMNPaperSizeNameEnvelope10, KMNPaperSizeNameEnvelopeChoukei, KMNPaperSizeNameEnvelopeDL, KMNPaperSizeNameJISB5, KMNPaperSizeNameROC16K, KMNPaperSizeNameSuper, KMNPaperSizeNameTabloid, KMNPaperSizeNameTabloidOversize, KMNPaperSizeNameUSLegal, KMNPaperSizeNameUSLetter] } static func getPaperSize(paperName: String) -> NSSize { var size: NSSize = .zero if (paperName == KMNPaperSizeNameA3) { size = NSMakeSize(297, 420) } else if (paperName == KMNPaperSizeNameA4){ size = NSMakeSize(210, 297) } else if (paperName == KMNPaperSizeNameA5){ size = NSMakeSize(148, 210) } else if (paperName == KMNPaperSizeNameB5){ size = NSMakeSize(176, 250) } else if (paperName == KMNPaperSizeNameEnvelope10){ size = NSMakeSize(105, 241) } else if (paperName == KMNPaperSizeNameEnvelopeChoukei){ size = NSMakeSize(120, 235) } else if (paperName == KMNPaperSizeNameEnvelopeDL){ size = NSMakeSize(110, 220) } else if (paperName == KMNPaperSizeNameJISB5){ size = NSMakeSize(182, 257) } else if (paperName == KMNPaperSizeNameROC16K){ size = NSMakeSize(197, 273) } else if (paperName == KMNPaperSizeNameSuper){ size = NSMakeSize(330, 483) } else if (paperName == KMNPaperSizeNameTabloid){ size = NSMakeSize(279, 432) } else if (paperName == KMNPaperSizeNameTabloidOversize){ size = NSMakeSize(305, 457) } else if (paperName == KMNPaperSizeNameUSLegal){ size = NSMakeSize(216, 356) } else if (paperName == KMNPaperSizeNameUSLetter){ size = NSMakeSize(216, 279) } return size } static func conversion(withUnit: String, value: CGFloat) -> String { var f = value if (withUnit == "cm") { f = value / 10.0 } else if (withUnit == "in") { f = value / 25.4 } else { f = value } if (fmod(f, 1) == 0) { //如果有一位小数点 return String(format: "%.0f", f) } else if (fmod(value * 10, 1) == 0) { //如果有两位小数点 return String(format: "%.1f", f) } else { return String(format: "%.2f", f) } } static func conversion(with unit: String, from funit: String, value: CGFloat) -> String { var f = value if (unit == funit) { } else if(unit == "cm") { if(funit == "mm") { f = value/10.0 } else if(funit == "in") { f = value * 25.4 } } else if(unit == "mm") { if(funit == "cm") { f = value * 10.0 } else if(funit == "in") { f = value * 10 * 25.4 } } else if(unit == "in") { if(funit == "cm") { f = value/25.4 } else if(funit == "mm") { f = value/10.0 f = f/25.4 } } if (fmod(f, 1) == 0) { //如果有一位小数点 return String(format: "%.0f", f) } else if (fmod(value * 10, 1) == 0) { //如果有两位小数点 return String(format: "%.1f", f) } else { return String(format: "%.2f", f) } } }