Auto-Photoshop-StableDiffus.../utility/layer.js

111 lines
2.8 KiB
JavaScript

const { batchPlay } = require('photoshop').action
const { executeAsModal } = require('photoshop').core
const { cleanLayers, getLayerIndex, selectLayers } = require('../psapi')
async function createNewLayerExe(layerName) {
await executeAsModal(async () => {
await createNewLayerCommand(layerName)
})
const new_layer = await app.activeDocument.activeLayers[0]
return new_layer
}
async function createNewLayerCommand(layerName) {
return await app.activeDocument.createLayer({
name: layerName,
opacity: 100,
mode: 'normal',
})
}
async function deleteLayers(layers) {
try {
await cleanLayers(layers)
} catch (e) {
console.warn(e)
}
}
async function getIndexCommand() {
const command = {
_obj: 'get',
_target: [
{
_property: 'itemIndex',
},
{
_ref: 'layer',
_enum: 'ordinal',
_value: 'targetEnum',
},
],
}
const result = await batchPlay([command], {
synchronousExecution: true,
modalBehavior: 'execute',
})
return result
}
async function getIndexExe() {
let index
await executeAsModal(async () => {
index = await getIndexCommand()
})
return index
}
const photoshop = require('photoshop')
const collapseFolderCommand = async (expand = false, recursive = false) => {
let result
try {
result = await batchPlay(
[
{
_obj: 'set',
_target: {
_ref: [
{ _property: 'layerSectionExpanded' },
{
_ref: 'layer',
_enum: 'ordinal',
_value: 'targetEnum',
},
],
},
to: expand,
recursive,
_options: { dialogOptions: 'dontDisplay' },
},
],
{ synchronousExecution: true }
)
} catch (e) {
console.error(e.message)
}
return result
}
async function collapseFolderExe(layers, expand = false, recursive = false) {
for (let layer of layers) {
try {
await executeAsModal(async () => {
const is_visible = await layer.visible // don't change the visiblity of the layer when collapsing
await selectLayers([layer])
await collapseFolderCommand(expand, recursive)
layer.visible = is_visible
})
} catch (e) {
console.warn(e)
}
}
}
module.exports = {
createNewLayerExe,
deleteLayers,
getIndexExe,
collapseFolderExe,
}