Separate PSD blend mode calculation into it's own function
This commit is contained in:
parent
d637f65851
commit
7c36cc864f
1 changed files with 101 additions and 83 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue