1
Fork 0

Separate PSD blend mode calculation into it's own function

This commit is contained in:
Joshua Goins 2022-02-28 12:19:08 -04:00
parent d637f65851
commit 7c36cc864f

View file

@ -30,6 +30,107 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations {
savePanel.accessoryView = accessoryView as NSView 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) { @IBAction func exportAction(_ sender: Any) {
let document = NSApplication.shared.keyWindow?.windowController?.document as? Document; 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) 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) { if(layer.mask != nil) {
writer?.addLayer(with: document!.makeBlendImage(layer), andName: layer.name + " (Mask)", andOpacity: 1.0, andOffset: .zero) writer?.addLayer(with: document!.makeBlendImage(layer), andName: layer.name + " (Mask)", andOpacity: 1.0, andOffset: .zero)
} }