From 7c36cc864faf97658652938986927d1d9e1be83f Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 28 Feb 2022 12:19:08 -0400 Subject: [PATCH] Separate PSD blend mode calculation into it's own function --- SilicaViewer/AppDelegate.swift | 184 ++++++++++++++++++--------------- 1 file changed, 101 insertions(+), 83 deletions(-) diff --git a/SilicaViewer/AppDelegate.swift b/SilicaViewer/AppDelegate.swift index 078b405..c8ea0b5 100644 --- a/SilicaViewer/AppDelegate.swift +++ b/SilicaViewer/AppDelegate.swift @@ -30,6 +30,107 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations { savePanel.accessoryView = accessoryView as NSView } + func getBitmapType(_ ext : String) -> NSBitmapImageRep.FileType { + switch(ext) { + case "tiff": + return .tiff + case "bmp": + return .bmp + case "jpeg": + return .jpeg + case "png": + return .png + default: + return .png + } + } + + func getPSDBlendMode(_ layer : SilicaLayer) -> PSDBlendModes { + if layer.data.blendMode == 1 { + return kPSDBlendModeMultiply + } + if layer.data.blendMode == 10 { + return kPSDBlendModeColorBurn + } + if layer.data.blendMode == 19 { + return kPSDBlendModeDarken + } + if layer.data.blendMode == 8 { + return kPSDBlendModeLinearBurn + } + if layer.data.blendMode == 4 { + return kPSDBlendModeLighten + } + if layer.data.blendMode == 2 { + return kPSDBlendModeScreen + } + if layer.data.blendMode == 13 { + //blendMode = kPSDBlendModeHardLight + } + if layer.data.blendMode == 9 { + return kPSDBlendModeColorDodge + } + if layer.data.blendMode == 3 { + //blendMode = kPSDBlendModeSubtract + } + if layer.data.blendMode == 0 && layer.data.blendMode != layer.data.extendedBlend { + if layer.data.extendedBlend == 25 { + return kPSDBlendModeDarkerColor + } + if layer.data.extendedBlend == 24 { + //blendMode = kPSDBlendModeLighterColor + } + if layer.data.extendedBlend == 21 { + //blendMode = kPSDBlendModeVividLight + } + if layer.data.extendedBlend == 22 { + //blendMode = kPSdBlendModeLinearLight + } + if layer.data.extendedBlend == 23 { + //blendMode = kPSDBlendModePinLight + } + if layer.data.extendedBlend == 20 { + //blendMode = kPSDBlendModeHardMix + } + if layer.data.extendedBlend == 26 { + //blendMode = kPSDBlendModeDivide + } + } + + if layer.data.blendMode == 11 { + //blendMode = kPSDBlendModeOverlay + } + if layer.data.blendMode == 17 { + //return .softLight + } + if layer.data.blendMode == 12 { + //return .hardLight + } + if layer.data.blendMode == 6 { + //return .difference + } + if layer.data.blendMode == 5 { + //return .exclusion + } + if layer.data.blendMode == 7 { + //return .componentAdd + } + if layer.data.blendMode == 15 { + //return .hue + } + if layer.data.blendMode == 16 { + //return .saturation + } + if layer.data.blendMode == 13 { + //return .color + } + if layer.data.blendMode == 14 { + //return .luminosity + } + + return kPSDBlendModeNormal + } + @IBAction func exportAction(_ sender: Any) { let document = NSApplication.shared.keyWindow?.windowController?.document as? Document; @@ -92,89 +193,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations { let finalCgImage = context.createCGImage(masterImage, from: document!.info.cgRect, format: .RGBA8, colorSpace: document!.info.colorSpace) - var blendMode: PSDBlendModes = kPSDBlendModeNormal - if layer.data.blendMode == 1 { - blendMode = kPSDBlendModeMultiply - } - if layer.data.blendMode == 10 { - blendMode = kPSDBlendModeColorBurn - } - if layer.data.blendMode == 19 { - blendMode = kPSDBlendModeDarken - } - if layer.data.blendMode == 8 { - blendMode = kPSDBlendModeLinearBurn - } - if layer.data.blendMode == 4 { - blendMode = kPSDBlendModeLighten - } - if layer.data.blendMode == 2 { - blendMode = kPSDBlendModeScreen - } - if layer.data.blendMode == 13 { - //blendMode = kPSDBlendModeHardLight - } - if layer.data.blendMode == 9 { - blendMode = kPSDBlendModeColorDodge - } - if layer.data.blendMode == 3 { - //blendMode = kPSDBlendModeSubtract - } - if layer.data.blendMode == 0 && layer.data.blendMode != layer.data.extendedBlend { - if layer.data.extendedBlend == 25 { - blendMode = kPSDBlendModeDarkerColor - } - if layer.data.extendedBlend == 24 { - //blendMode = kPSDBlendModeLighterColor - } - if layer.data.extendedBlend == 21 { - //blendMode = kPSDBlendModeVividLight - } - if layer.data.extendedBlend == 22 { - //blendMode = kPSdBlendModeLinearLight - } - if layer.data.extendedBlend == 23 { - //blendMode = kPSDBlendModePinLight - } - if layer.data.extendedBlend == 20 { - //blendMode = kPSDBlendModeHardMix - } - if layer.data.extendedBlend == 26 { - //blendMode = kPSDBlendModeDivide - } - } - - if layer.data.blendMode == 11 { - //blendMode = kPSDBlendModeOverlay - } - if layer.data.blendMode == 17 { - //return .softLight - } - if layer.data.blendMode == 12 { - //return .hardLight - } - if layer.data.blendMode == 6 { - //return .difference - } - if layer.data.blendMode == 5 { - //return .exclusion - } - if layer.data.blendMode == 7 { - //return .componentAdd - } - if layer.data.blendMode == 15 { - //return .hue - } - if layer.data.blendMode == 16 { - //return .saturation - } - if layer.data.blendMode == 13 { - //return .color - } - if layer.data.blendMode == 14 { - //return .luminosity - } - if(layer.mask != nil) { writer?.addLayer(with: document!.makeBlendImage(layer), andName: layer.name + " (Mask)", andOpacity: 1.0, andOffset: .zero) }