|
@@ -22,18 +22,12 @@ let FontColor_USERDEFAULTS = "CEditPDFTextDefaultFontColor"
|
|
|
let FONTNAME_DEFAULT = "Helvetica"
|
|
|
let FONTStyle_DEFAULT = "Regular"
|
|
|
let FONTSIZE_DEFAULT = 12.0
|
|
|
-let CHANGE_DEFAULT = false
|
|
|
-let REDEFINE_DEFAULT = false
|
|
|
let ALIGNMENT_DEFAULT = NSTextAlignment.left
|
|
|
-let COLOR_DEFAULT = "#000000"
|
|
|
|
|
|
|
|
|
let FONTNAME_KEY = "fontName"
|
|
|
let FONTStyle_KEY = "fontStyle"
|
|
|
let FONTSIZE_KEY = "fontSize"
|
|
|
-let CHANGE_KEY = "change"
|
|
|
-let REDEFINE_KEY = "redefine"
|
|
|
-let COLOR_KEY = "fontColor"
|
|
|
let ALIGNMENT_KEY = "FontAlignment"
|
|
|
let Bold_KEY = "bold"
|
|
|
let Italic_KEY = "italic"
|
|
@@ -79,14 +73,15 @@ enum KMEditPDFTextFontType: String, CaseIterable {
|
|
|
|
|
|
|
|
|
let defaultTextPresupposition: NSDictionary = [
|
|
|
- KMEditPDFTextFontType.commonly.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "12.0", REDEFINE_KEY: false, CHANGE_KEY: false, COLOR_KEY: COLOR_DEFAULT, ALIGNMENT_KEY: ALIGNMENT_DEFAULT, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.customize.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "12.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.h1.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold",FONTSIZE_KEY: "36.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.h2.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold", FONTSIZE_KEY: "24.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.h3.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold",FONTSIZE_KEY: "18.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.b1.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "14.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.b2.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "12.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
- KMEditPDFTextFontType.b3.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "11.0", REDEFINE_KEY: false, CHANGE_KEY: false, Bold_KEY : false, Italic_KEY : false] as [String : Any]]
|
|
|
+ KMEditPDFTextFontType.commonly.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "12.0", ALIGNMENT_KEY: ALIGNMENT_DEFAULT, Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.customize.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular",FONTSIZE_KEY: "12.0", Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.h1.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold", FONTSIZE_KEY: "28.0", Bold_KEY : true, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.h2.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold", FONTSIZE_KEY: "20.0", Bold_KEY : true, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.h3.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Bold", FONTSIZE_KEY: "16.0", Bold_KEY : true, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.b1.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular", FONTSIZE_KEY: "14.0", Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.b2.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular", FONTSIZE_KEY: "12.0", Bold_KEY : false, Italic_KEY : false] as [String : Any],
|
|
|
+ KMEditPDFTextFontType.b3.rawValue: [FONTNAME_KEY: "Helvetica", FONTStyle_KEY : "Regular", FONTSIZE_KEY: "8.0", Bold_KEY : false, Italic_KEY : false] as [String : Any]
|
|
|
+]
|
|
|
|
|
|
|
|
|
class KMEditPDFTextFontTypeWrapper: NSObject {
|
|
@@ -101,8 +96,6 @@ class KMEditPDFTextFontModel: NSObject {
|
|
|
var fontName: String = FONTNAME_DEFAULT
|
|
|
var fontStyle: String = FONTStyle_DEFAULT
|
|
|
var fontSize: CGFloat = FONTSIZE_DEFAULT
|
|
|
- var change: Bool = CHANGE_DEFAULT
|
|
|
- var redefine: Bool = REDEFINE_DEFAULT
|
|
|
var type: KMEditPDFTextFontType = .customize
|
|
|
var color: NSColor = NSColor.black
|
|
|
var alignment: NSTextAlignment = ALIGNMENT_DEFAULT
|
|
@@ -118,75 +111,119 @@ class KMEditPDFTextFontModel: NSObject {
|
|
|
|
|
|
var textFontNames: [String] = []
|
|
|
var textPresuppositionArray: [KMEditPDFTextFontModel] = []
|
|
|
- var textPresuppositionFontNameArray: [String] = []
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-@objc extension KMEditPDFTextManager {
|
|
|
- @objc func resetTextPresupposition(type: String) {
|
|
|
- let dic: NSDictionary = defaultTextPresupposition[type] as! NSDictionary
|
|
|
- self.setTextPresupposition(fontName: dic[FONTNAME_KEY] as! String,
|
|
|
- fontStyle: dic[FONTStyle_KEY] as? String ?? FONTStyle_DEFAULT,
|
|
|
- fontSize: CGFloat(Float(dic[FONTSIZE_KEY] as? String ?? "12") ?? Float(FONTSIZE_DEFAULT)),
|
|
|
- redefine: false,
|
|
|
- change: false,
|
|
|
- type: KMEditPDFTextFontType(rawValue: type) ?? .customize,
|
|
|
- bold: dic[Bold_KEY] as? Bool ?? false, italic: dic[Italic_KEY] as? Bool ?? false)
|
|
|
- }
|
|
|
|
|
|
- @objc func changeTextPresupposition(fontName: String, fontStyle: String, fontSize: CGFloat, type: String) {
|
|
|
- self.setTextPresupposition(fontName: fontName,
|
|
|
- fontStyle: fontStyle,
|
|
|
- fontSize: fontSize,
|
|
|
- change: true,
|
|
|
- type: KMEditPDFTextFontType(rawValue: type) ?? .customize, bold: nil, italic: nil)
|
|
|
+
|
|
|
+ override init() {
|
|
|
+ super.init()
|
|
|
+
|
|
|
+ let _ = self.fetchAllUserDefaultData()
|
|
|
}
|
|
|
|
|
|
- @objc func reDefineTextPresupposition(fontName: String, fontStyle: String, fontSize: CGFloat, type: String) {
|
|
|
- self.setTextPresupposition(fontName: fontName,
|
|
|
- fontStyle: fontStyle,
|
|
|
- fontSize: fontSize,
|
|
|
- redefine: true,
|
|
|
- change: false,
|
|
|
- type: KMEditPDFTextFontType(rawValue: type) ?? .customize,
|
|
|
- bold: nil, italic: nil)
|
|
|
+
|
|
|
+ private func setTextPresupposition(type: KMEditPDFTextFontType,
|
|
|
+ fontName: String,
|
|
|
+ fontStyle: String,
|
|
|
+ fontSize: CGFloat,
|
|
|
+ bold: Bool,
|
|
|
+ italic: Bool,
|
|
|
+ alignment: NSTextAlignment) {
|
|
|
+
|
|
|
+ let fontDic: NSDictionary = [FONTNAME_KEY: fontName,
|
|
|
+ FONTStyle_KEY : fontStyle,
|
|
|
+ FONTSIZE_KEY: String(format: "%.0f", fontSize),
|
|
|
+ ALIGNMENT_KEY: alignment.rawValue,
|
|
|
+ Bold_KEY : bold,
|
|
|
+ Italic_KEY : italic]
|
|
|
+
|
|
|
+ let userDefaults = UserDefaults.standard
|
|
|
+ switch type {
|
|
|
+ case .commonly:
|
|
|
+ userDefaults.set(fontDic, forKey: Commonly_USERDEFAULTS)
|
|
|
+ case .customize:
|
|
|
+ userDefaults.set(fontDic, forKey: Customize_USERDEFAULTS)
|
|
|
+ case .h1:
|
|
|
+ userDefaults.set(fontDic, forKey: H1_USERDEFAULTS)
|
|
|
+ case .h2:
|
|
|
+ userDefaults.set(fontDic, forKey: H2_USERDEFAULTS)
|
|
|
+ case .h3:
|
|
|
+ userDefaults.set(fontDic, forKey: H3_USERDEFAULTS)
|
|
|
+ case .b1:
|
|
|
+ userDefaults.set(fontDic, forKey: B1_USERDEFAULTS)
|
|
|
+ case .b2:
|
|
|
+ userDefaults.set(fontDic, forKey: B2_USERDEFAULTS)
|
|
|
+ case .b3:
|
|
|
+ userDefaults.set(fontDic, forKey: B3_USERDEFAULTS)
|
|
|
+ }
|
|
|
+ userDefaults.synchronize()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
extension KMEditPDFTextManager {
|
|
|
-
|
|
|
- func changeTextPresupposition(fontName: String, fontStyle: String,fontSize: CGFloat, type: KMEditPDFTextFontType, bold: Bool?, italic: Bool?) {
|
|
|
- self.setTextPresupposition(fontName: fontName,
|
|
|
- fontStyle: fontStyle,
|
|
|
- fontSize: fontSize,
|
|
|
- change: true,
|
|
|
- type: type, bold: bold, italic: italic)
|
|
|
+ func isModelChanged(type: KMEditPDFTextFontType,
|
|
|
+ fontName: String,
|
|
|
+ fontStyle: String,
|
|
|
+ fontSize: CGFloat,
|
|
|
+ bold: Bool,
|
|
|
+ italic: Bool,
|
|
|
+ alignment: NSTextAlignment) -> Bool {
|
|
|
+
|
|
|
+ let model = self.fetchUserDefaultData(type: type)
|
|
|
+
|
|
|
+ if model.fontName != fontName {
|
|
|
+ return true
|
|
|
+ } else if model.fontStyle != fontStyle {
|
|
|
+ return true
|
|
|
+ } else if model.fontSize != fontSize {
|
|
|
+ return true
|
|
|
+ } else if model.bold != bold {
|
|
|
+ return true
|
|
|
+ } else if model.italic != italic {
|
|
|
+ return true
|
|
|
+ } else if model.alignment != alignment {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
-
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+extension KMEditPDFTextManager {
|
|
|
|
|
|
- func reDefineTextPresupposition(fontName: String, fontStyle: String, fontSize: CGFloat, type: KMEditPDFTextFontType) {
|
|
|
- self.setTextPresupposition(fontName: fontName,
|
|
|
+ func reDefineTextPresupposition(type: KMEditPDFTextFontType,
|
|
|
+ fontName: String,
|
|
|
+ fontStyle: String,
|
|
|
+ fontSize: CGFloat,
|
|
|
+ bold: Bool,
|
|
|
+ italic: Bool,
|
|
|
+ alignment: NSTextAlignment) {
|
|
|
+
|
|
|
+ self.setTextPresupposition(type: type,
|
|
|
+ fontName: fontName,
|
|
|
fontStyle: fontStyle,
|
|
|
fontSize: fontSize,
|
|
|
- redefine: true,
|
|
|
- change: false,
|
|
|
- type: type,
|
|
|
- bold: nil, italic: nil)
|
|
|
+ bold: bold, italic:
|
|
|
+ italic,
|
|
|
+ alignment: alignment)
|
|
|
}
|
|
|
|
|
|
|
|
|
func resetTextPresupposition(type: KMEditPDFTextFontType) {
|
|
|
let dic: NSDictionary = defaultTextPresupposition[type.rawValue] as! NSDictionary
|
|
|
- self.setTextPresupposition(fontName: dic[FONTNAME_KEY] as! String,
|
|
|
+ self.setTextPresupposition(type: type,
|
|
|
+ fontName: dic[FONTNAME_KEY] as! String,
|
|
|
fontStyle: dic[FONTStyle_KEY] as? String ?? FONTStyle_DEFAULT,
|
|
|
fontSize: CGFloat(Float(dic[FONTSIZE_KEY] as? String ?? "12") ?? Float(FONTSIZE_DEFAULT)),
|
|
|
- redefine: false,
|
|
|
- change: false,
|
|
|
- type: type,
|
|
|
- bold: dic[Bold_KEY] as? Bool ?? false, italic: dic[Italic_KEY] as? Bool ?? false)
|
|
|
+ bold: dic[Bold_KEY] as? Bool ?? false,
|
|
|
+ italic: dic[Italic_KEY] as? Bool ?? false,
|
|
|
+ alignment: NSTextAlignment(rawValue: dic[ALIGNMENT_KEY] as? Int ?? 0) ?? NSTextAlignment.left)
|
|
|
}
|
|
|
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+extension KMEditPDFTextManager {
|
|
|
+
|
|
|
|
|
|
func fetchAllUserDefaultData() -> [KMEditPDFTextFontModel] {
|
|
|
var resultArray: [KMEditPDFTextFontModel] = []
|
|
@@ -203,224 +240,6 @@ extension KMEditPDFTextManager {
|
|
|
return resultArray
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- func updateTextPresuppositionFontNameArray() -> [String] {
|
|
|
- let textPresuppositionArray = self.fetchAllUserDefaultData()
|
|
|
- let textNameArray: [String] = KMEditPDFTextFontType.allValues()
|
|
|
-
|
|
|
- var resultArray: [String] = []
|
|
|
- for index in 0...textNameArray.count - 1 {
|
|
|
- let model = textPresuppositionArray[index]
|
|
|
- var string = textNameArray[index]
|
|
|
- let change: Bool = model.change
|
|
|
- if change && model.type != .customize {
|
|
|
- string = "*" + string
|
|
|
- } else {
|
|
|
- string = string.replacingOccurrences(of: "*", with: "")
|
|
|
- }
|
|
|
- resultArray.append(string)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- self.textPresuppositionFontNameArray = resultArray
|
|
|
- return resultArray
|
|
|
- }
|
|
|
-
|
|
|
- func fetchTextImage(textString: String = "Sample", alignment: NSTextAlignment, fontName: String, fontSize: CGFloat, color: NSColor, imageSize: CGSize) -> NSImage {
|
|
|
- let string = NSLocalizedString(textString, comment: "")
|
|
|
- let paragraphStyle = NSMutableParagraphStyle()
|
|
|
- paragraphStyle.alignment = .center
|
|
|
- let tempFontName = self.fetchFontName(fontName: fontName)
|
|
|
- let style = self.fetchFontStyle(fontName: fontName)
|
|
|
-
|
|
|
- let fontCurrentColor: NSColor = color
|
|
|
- var attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family: tempFontName])
|
|
|
- if style.count > 0 {
|
|
|
- attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family: tempFontName, NSFontDescriptor.AttributeName.face : style])
|
|
|
- }
|
|
|
- var font = NSFont.init(descriptor: attributeFontDescriptor, size: CGFloat(fontSize))
|
|
|
- if font == nil {
|
|
|
- attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family: FONTNAME_DEFAULT])
|
|
|
- font = NSFont.init(descriptor: attributeFontDescriptor, size: fontSize)
|
|
|
- }
|
|
|
- KMPrint("----------------" + tempFontName + "----------------" + style + "----------------")
|
|
|
- if font == nil {
|
|
|
- return NSImage()
|
|
|
- }
|
|
|
-
|
|
|
- var red : CGFloat = 0.0
|
|
|
- var green : CGFloat = 0.0
|
|
|
- var blue : CGFloat = 0.0
|
|
|
- var alpha : CGFloat = 0.0
|
|
|
- var color : NSColor = NSColor.white
|
|
|
-
|
|
|
- fontCurrentColor.usingColorSpaceName(NSColorSpaceName.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
|
|
|
- color = NSColor(red: red, green: green, blue: blue, alpha: alpha)
|
|
|
-
|
|
|
- let attributes = [NSAttributedString.Key.font: font,
|
|
|
- NSAttributedString.Key.foregroundColor: color,
|
|
|
- NSAttributedString.Key.paragraphStyle: paragraphStyle]
|
|
|
-
|
|
|
- let size = string.size(withAttributes:attributes as [NSAttributedString.Key : Any])
|
|
|
- let image = NSImage(size: NSSize(width: imageSize.width, height: size.height))
|
|
|
- if image.size.width != 0 && image.size.height != 0 {
|
|
|
- image.lockFocus()
|
|
|
- NSGraphicsContext.current?.imageInterpolation = .high
|
|
|
- NSString(string: string).draw(in: NSRect(x: 0, y: 0, width: imageSize.width, height: image.size.height), withAttributes: attributes as [NSAttributedString.Key : Any])
|
|
|
- NSGraphicsContext.current?.imageInterpolation = .default
|
|
|
- image.unlockFocus()
|
|
|
- }
|
|
|
- return image
|
|
|
- }
|
|
|
-
|
|
|
- func setCommonlyFontColor(color: NSColor) {
|
|
|
-
|
|
|
- let userDefaults = UserDefaults.standard
|
|
|
- let model = self.fetchUserDefaultData(type: .commonly)
|
|
|
- let colorString: String = color.toHex(alpha: true) ?? ""
|
|
|
- let fontDic: NSDictionary = [FONTNAME_KEY: model.fontName, FONTSIZE_KEY: model.fontSize.description, REDEFINE_KEY: model.redefine, CHANGE_KEY: model.change, COLOR_KEY: colorString, ALIGNMENT_KEY: model.alignment.rawValue]
|
|
|
- userDefaults.set(fontDic, forKey: Commonly_USERDEFAULTS)
|
|
|
- userDefaults.synchronize()
|
|
|
- }
|
|
|
-
|
|
|
- func setFontAlignment(alignment: NSTextAlignment) {
|
|
|
- let userDefaults = UserDefaults.standard
|
|
|
- let model = self.fetchUserDefaultData(type: .commonly)
|
|
|
- let colorString: String = model.color.toHex(alpha: true) ?? ""
|
|
|
- let fontDic: NSDictionary = [FONTNAME_KEY: model.fontName, FONTSIZE_KEY: model.fontSize.description, REDEFINE_KEY: model.redefine, CHANGE_KEY: model.change, COLOR_KEY: colorString, ALIGNMENT_KEY: alignment.rawValue]
|
|
|
- userDefaults.set(fontDic, forKey: Commonly_USERDEFAULTS)
|
|
|
- userDefaults.synchronize()
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-extension KMEditPDFTextManager {
|
|
|
- func checkFontStyle(style: String) -> String {
|
|
|
- var result = style
|
|
|
- if style == "Regular" || style == "Roman" {
|
|
|
- result = ""
|
|
|
- }
|
|
|
-
|
|
|
- if style.contains("BoldOblique") || style.contains("BoldItalic") {
|
|
|
-
|
|
|
- }
|
|
|
- return result
|
|
|
- }
|
|
|
-
|
|
|
- func checkFontName(fontName: String) -> String {
|
|
|
- let fontNameArray = self.separatedFontName(string: fontName)
|
|
|
-
|
|
|
- var name = ""
|
|
|
- var style = ""
|
|
|
- if fontNameArray.count > 0 {
|
|
|
- name = fontNameArray.first!
|
|
|
- } else {
|
|
|
- name = "Helvetica"
|
|
|
- }
|
|
|
- if fontNameArray.count == 2 {
|
|
|
- style = fontNameArray.last!
|
|
|
- style = self.checkFontStyle(style: style)
|
|
|
- if style.count != 0 {
|
|
|
- name = name + "-" + style
|
|
|
- }
|
|
|
- }
|
|
|
- return name
|
|
|
- }
|
|
|
-
|
|
|
- func fetchFontName(fontName: String) -> String {
|
|
|
- let fontNameArray = self.separatedFontName(string: fontName)
|
|
|
-
|
|
|
- var name = ""
|
|
|
- if fontNameArray.count > 0 {
|
|
|
- name = fontNameArray.first!
|
|
|
- } else {
|
|
|
- name = "Helvetica"
|
|
|
- }
|
|
|
- return name
|
|
|
- }
|
|
|
-
|
|
|
- func fetchFontStyle(fontName: String) -> String {
|
|
|
- let fontNameArray = self.separatedFontName(string: fontName)
|
|
|
- var style = ""
|
|
|
- if fontNameArray.count == 2 {
|
|
|
- style = fontNameArray.last!
|
|
|
- style = self.checkFontStyle(style: style)
|
|
|
- }
|
|
|
- return style
|
|
|
- }
|
|
|
-
|
|
|
- func separatedFontName(string: String) -> [String] {
|
|
|
- var fontNameArray = string.components(separatedBy: "-")
|
|
|
- if fontNameArray.count <= 1 {
|
|
|
- fontNameArray = string.components(separatedBy: " ")
|
|
|
- }
|
|
|
- return fontNameArray
|
|
|
- }
|
|
|
-
|
|
|
- func fetchFont(fontName: String, style: String, size: CGFloat) -> NSFont {
|
|
|
- var fontStyle = style
|
|
|
-
|
|
|
- var attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family: fontName])
|
|
|
- if fontStyle.count > 0 {
|
|
|
- if fontStyle == "Regular" || fontStyle == "Roman" {
|
|
|
- attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family : fontName])
|
|
|
- } else {
|
|
|
- attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family : fontName,NSFontDescriptor.AttributeName.face : fontStyle])
|
|
|
- }
|
|
|
- }
|
|
|
- var font = NSFont.init(descriptor: attributeFontDescriptor, size: size)
|
|
|
- if font == nil {
|
|
|
- attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family: FONTNAME_DEFAULT])
|
|
|
- font = NSFont.init(descriptor: attributeFontDescriptor, size: size)
|
|
|
- }
|
|
|
-
|
|
|
- return font!
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-extension KMEditPDFTextManager {
|
|
|
-
|
|
|
- private func setTextPresupposition(fontName: String, fontStyle: String, fontSize: CGFloat, redefine: Bool = false, change: Bool = false, type: KMEditPDFTextFontType, bold: Bool?, italic: Bool?) {
|
|
|
- let model = self.fetchUserDefaultData(type: type)
|
|
|
- let colorString: String = model.color.toHex(alpha: true) ?? ""
|
|
|
- var boldV = model.bold
|
|
|
- if let data = bold {
|
|
|
- boldV = data
|
|
|
- }
|
|
|
- var italicV = model.italic
|
|
|
- if let data = italic {
|
|
|
- italicV = data
|
|
|
- }
|
|
|
- let fontDic: NSDictionary = [FONTNAME_KEY: fontName, FONTStyle_KEY : fontStyle, FONTSIZE_KEY: fontSize.description, REDEFINE_KEY: redefine, CHANGE_KEY: change, COLOR_KEY: colorString, ALIGNMENT_KEY: model.alignment.rawValue, Bold_KEY : boldV, Italic_KEY : italicV]
|
|
|
-
|
|
|
- let userDefaults = UserDefaults.standard
|
|
|
- switch type {
|
|
|
- case .commonly:
|
|
|
- userDefaults.set(fontDic, forKey: Commonly_USERDEFAULTS)
|
|
|
- case .customize:
|
|
|
- userDefaults.set(fontDic, forKey: Customize_USERDEFAULTS)
|
|
|
- case .h1:
|
|
|
- userDefaults.set(fontDic, forKey: H1_USERDEFAULTS)
|
|
|
- case .h2:
|
|
|
- userDefaults.set(fontDic, forKey: H2_USERDEFAULTS)
|
|
|
- case .h3:
|
|
|
- userDefaults.set(fontDic, forKey: H3_USERDEFAULTS)
|
|
|
- case .b1:
|
|
|
- userDefaults.set(fontDic, forKey: B1_USERDEFAULTS)
|
|
|
- case .b2:
|
|
|
- userDefaults.set(fontDic, forKey: B2_USERDEFAULTS)
|
|
|
- case .b3:
|
|
|
- userDefaults.set(fontDic, forKey: B3_USERDEFAULTS)
|
|
|
- default:
|
|
|
- userDefaults.set(fontDic, forKey: Customize_USERDEFAULTS)
|
|
|
- break
|
|
|
- }
|
|
|
- userDefaults.synchronize()
|
|
|
-
|
|
|
- _ = self.updateTextPresuppositionFontNameArray()
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
@objc func fetchUserDefaultDataWithTypeString(type: NSString) -> KMEditPDFTextFontModel {
|
|
|
return self.fetchUserDefaultData(type: KMEditPDFTextFontType(rawValue: type as String)!)
|
|
@@ -446,38 +265,27 @@ extension KMEditPDFTextManager {
|
|
|
data = (userDefaults.object(forKey: B2_USERDEFAULTS) ?? [String: Any]()) as! NSDictionary
|
|
|
case .b3:
|
|
|
data = (userDefaults.object(forKey: B3_USERDEFAULTS) ?? [String: Any]()) as! NSDictionary
|
|
|
- default:
|
|
|
- data = defaultTextPresupposition[KMEditPDFTextFontType.customize.rawValue] as! NSDictionary
|
|
|
- break
|
|
|
}
|
|
|
if data.count == 0 {
|
|
|
data = defaultTextPresupposition[type.rawValue] as! NSDictionary
|
|
|
}
|
|
|
|
|
|
let fontName = data[FONTNAME_KEY] as? String ?? FONTNAME_DEFAULT
|
|
|
+ let fontStyle = data[FONTStyle_KEY] as? String ?? FONTStyle_DEFAULT
|
|
|
let fontSize: CGFloat = CGFloat(Float(data[FONTSIZE_KEY] as? String ?? "12") ?? Float(FONTSIZE_DEFAULT))
|
|
|
- let redefine = data[REDEFINE_KEY] as? Bool ?? REDEFINE_DEFAULT
|
|
|
- let change = data[CHANGE_KEY] as? Bool ?? CHANGE_DEFAULT
|
|
|
- let colorString = data[COLOR_KEY] as? String ?? COLOR_DEFAULT
|
|
|
let alignment = NSTextAlignment(rawValue: data[ALIGNMENT_KEY] as? Int ?? 0) ?? NSTextAlignment.left
|
|
|
-
|
|
|
- let fontStyle = data[FONTStyle_KEY] as? String ?? FONTStyle_DEFAULT
|
|
|
let bold = data[Bold_KEY] as? Bool ?? false
|
|
|
let italic = data[Italic_KEY] as? Bool ?? false
|
|
|
|
|
|
let resultModel: KMEditPDFTextFontModel = KMEditPDFTextFontModel()
|
|
|
+ resultModel.type = type
|
|
|
resultModel.fontName = fontName
|
|
|
+ resultModel.fontStyle = fontStyle
|
|
|
resultModel.fontSize = fontSize
|
|
|
- resultModel.redefine = redefine
|
|
|
- resultModel.change = change
|
|
|
- resultModel.type = type
|
|
|
- resultModel.color = NSColor.km_init(hex: colorString)
|
|
|
resultModel.alignment = alignment
|
|
|
-
|
|
|
- resultModel.fontStyle = fontStyle
|
|
|
resultModel.bold = bold
|
|
|
resultModel.italic = italic
|
|
|
-
|
|
|
+
|
|
|
return resultModel
|
|
|
}
|
|
|
}
|