mirror of
https://github.com/sbrow/ps.git
synced 2025-12-29 18:47:38 -05:00
Document now accessible through go
This commit is contained in:
2
ps.go
2
ps.go
@@ -181,7 +181,9 @@ func ApplyDataset(name string) ([]byte, error) {
|
|||||||
|
|
||||||
// JSLayer retrurns javascript code to get the layer with a given path.
|
// JSLayer retrurns javascript code to get the layer with a given path.
|
||||||
func JSLayer(path string) string {
|
func JSLayer(path string) string {
|
||||||
|
path = strings.TrimLeft(path, "/")
|
||||||
pth := strings.Split(path, "/")
|
pth := strings.Split(path, "/")
|
||||||
|
// fmt.Println(path)
|
||||||
js := "app.activeDocument"
|
js := "app.activeDocument"
|
||||||
last := len(pth) - 1
|
last := len(pth) - 1
|
||||||
if last > 0 {
|
if last > 0 {
|
||||||
|
|||||||
103
ps_test.go
103
ps_test.go
@@ -2,11 +2,12 @@ package ps
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
// "os"
|
||||||
"path/filepath"
|
// "path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
func TestPkgPath(t *testing.T) {
|
func TestPkgPath(t *testing.T) {
|
||||||
out := filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "sbrow", "ps")
|
out := filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "sbrow", "ps")
|
||||||
if filepath.Join(pkgpath) != out {
|
if filepath.Join(pkgpath) != out {
|
||||||
@@ -21,7 +22,6 @@ func TestStart(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func TestOpen(t *testing.T) {
|
func TestOpen(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("Skipping \"TestOpen\"")
|
t.Skip("Skipping \"TestOpen\"")
|
||||||
@@ -31,8 +31,7 @@ func TestOpen(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
/*
|
|
||||||
func TestClose(t *testing.T) {
|
func TestClose(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("Skipping \"TestClose\"")
|
t.Skip("Skipping \"TestClose\"")
|
||||||
@@ -107,81 +106,55 @@ func TestSaveAs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLayers(t *testing.T) {
|
func TestLayerSet(t *testing.T) {
|
||||||
l, err := Layers("Areas/TitleBackground/")
|
_, err := NewLayerSet("Areas/TitleBackground/")
|
||||||
fmt.Println(l)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
/*
|
|
||||||
func TestLayer(t *testing.T) {
|
func TestLayer(t *testing.T) {
|
||||||
_, err := Layer("Border/Inner Border")
|
_, err := Layer("Border/Inner Border")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/*func TestMove(t *testing.T) {
|
|
||||||
|
func TestMove(t *testing.T) {
|
||||||
lyr, err := Layer("Group 1/Layer 1")
|
lyr, err := Layer("Group 1/Layer 1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
lyr.Position(100, 50, "top")
|
lyr.Position(100, 50, "top")
|
||||||
}*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
func TestLayerSet(t *testing.T) {
|
|
||||||
set, err := GetLayerSet("Indicators/")
|
|
||||||
fmt.Println(set)
|
|
||||||
fmt.Println(set.ArtLayers[0].Parent)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
func TestActiveDocument(t *testing.T) {
|
||||||
func TestDocument(t *testing.T) {
|
if testing.Short() {
|
||||||
d, err := GetDocument()
|
t.Skip("Skipping \"TestDocument\"")
|
||||||
fmt.Println(d)
|
}
|
||||||
fmt.Println(d.ArtLayers[0])
|
d, err := ActiveDocument()
|
||||||
fmt.Println(d.ArtLayers[0].Parent)
|
|
||||||
fmt.Println(d.LayerSets[0])
|
|
||||||
fmt.Println(d.LayerSets[0].Parent)
|
|
||||||
fmt.Println(d.LayerSets[0].ArtLayers[0])
|
|
||||||
fmt.Println(d.LayerSets[0].ArtLayers[0].Parent)
|
|
||||||
fmt.Println(d.LayerSets[0].ArtLayers[0].Parent.Parent())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if d != d.ArtLayers[0].Parent {
|
if d != d.ArtLayers[0].Parent() {
|
||||||
t.Fatal("Fucked")
|
fmt.Println(d)
|
||||||
|
fmt.Println(d.ArtLayers[0].Parent())
|
||||||
|
t.Fatal("ArtLayers do not have doc as parent.")
|
||||||
}
|
}
|
||||||
if d != d.LayerSets[0].Parent() {
|
if d != d.LayerSets[0].Parent() {
|
||||||
t.Fatal("Fucked")
|
fmt.Println(d)
|
||||||
|
fmt.Println(d.LayerSets[0].Parent())
|
||||||
|
t.Fatal("LayerSets do not have doc as parent.")
|
||||||
}
|
}
|
||||||
if d.LayerSets[0] != d.LayerSets[0].ArtLayers[0].Parent {
|
if d.LayerSets[0] != d.LayerSets[0].ArtLayers[0].Parent() {
|
||||||
t.Fatal("Fucked")
|
fmt.Println(d.LayerSets[0])
|
||||||
}
|
fmt.Println(d.LayerSets[0].ArtLayers[0])
|
||||||
|
fmt.Println(d.LayerSets[0].ArtLayers[0].Parent())
|
||||||
}
|
t.Fatal("Layerset's ArtLayers do not have correct parents")
|
||||||
|
|
||||||
/*func TestActiveDocument(t *testing.T) {
|
|
||||||
e, err := DoJs("compilejs.jsx", "alert('testing!')")
|
|
||||||
fmt.Println(string(e))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
doc, err := ActiveDocument()
|
|
||||||
fmt.Println(doc)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
func TestApplyDataset(t *testing.T) {
|
func TestApplyDataset(t *testing.T) {
|
||||||
out := []byte("done!\r\n")
|
out := []byte("done!\r\n")
|
||||||
ret, err := ApplyDataset("Anger")
|
ret, err := ApplyDataset("Anger")
|
||||||
@@ -197,14 +170,26 @@ func TestApplyDataset(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
func TestDoJs_HideLayer(t *testing.T) {
|
||||||
|
err := Open("F:\\GitLab\\dreamkeepers-psd\\Template009.1.psd")
|
||||||
/*func TestDoJs_HideLayer(t *testing.T) {
|
|
||||||
_, err := DoJs("setLayerVisibility.jsx", "Areas/TitleBackground", "false")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}*/
|
lyr, err := NewLayerSet("Areas/TitleBackground")
|
||||||
|
lyr.SetVisible(false)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkDoc_Go(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
_, err := ActiveDocument()
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//.8s
|
//.8s
|
||||||
//.15
|
//.15
|
||||||
|
|||||||
@@ -24,11 +24,7 @@ function lyrSets(sets, nm) {
|
|||||||
for (var i = 0; i < sets.length; i++) {
|
for (var i = 0; i < sets.length; i++) {
|
||||||
var set = sets[i];
|
var set = sets[i];
|
||||||
var name = nm + set.name + "/";
|
var name = nm + set.name + "/";
|
||||||
stdout.write('{"Name": "' + set.name + '", "LayerSets": [');
|
stdout.write('{"Name": "' + set.name + '"}');
|
||||||
// lyrSets(set.layerSets, name);
|
|
||||||
stdout.write('], "ArtLayers": [');
|
|
||||||
layers(set.artLayers);
|
|
||||||
stdout.write(']}');
|
|
||||||
if (i+1 != sets.length)
|
if (i+1 != sets.length)
|
||||||
stdout.write(',');
|
stdout.write(',');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
#include lib.js
|
|
||||||
|
|
||||||
var stdout = newFile(arguments[0]);
|
|
||||||
var doc = app.activeDocument;
|
|
||||||
|
|
||||||
stdout.write(('{"Name": "' + doc.name +'", "Height":' +doc.height +
|
|
||||||
', "Width":' + doc.width + ", ").replace(/ px/g, ""));
|
|
||||||
|
|
||||||
function layersNsets(obj) {
|
|
||||||
stdout.write('"ArtLayers": [');
|
|
||||||
lyrss(obj.artLayers, "")
|
|
||||||
stdout.write('], "LayerSets": [');
|
|
||||||
lyrSets(obj.layerSets, "");
|
|
||||||
// stdout.write('], "LayerSets": [');
|
|
||||||
}
|
|
||||||
|
|
||||||
function lyrss(lyrs, set) {
|
|
||||||
if (typeof lyrs === 'undefined')
|
|
||||||
return;
|
|
||||||
for (var i = 0; i < lyrs.length; i++) {
|
|
||||||
var lyr = lyrs[i];
|
|
||||||
stdout.write(('{"Name":"' + lyr.name + '", "Bounds": [[' + lyr.bounds[0] + ',' +
|
|
||||||
lyr.bounds[1] + '],[' + lyr.bounds[2] + ',' +
|
|
||||||
lyr.bounds[3] + ']], "Path": "' + set +
|
|
||||||
'", "Visible": ' + lyr.visible + '}').replace(/ px/g, ""));
|
|
||||||
if (i+1 != lyrs.length)
|
|
||||||
stdout.write(',');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function lyrSets(sets, nm) {
|
|
||||||
if (typeof sets === 'undefined')
|
|
||||||
return;
|
|
||||||
for (var i = 0; i < sets.length; i++) {
|
|
||||||
var set = sets[i];
|
|
||||||
var name = nm + set.name + "/";
|
|
||||||
stdout.write('{"Name": "' + set.name + '", "LayerSets": [');
|
|
||||||
lyrSets(set.layerSets, name);
|
|
||||||
stdout.write('], "Layers": [');
|
|
||||||
lyrss(set.artLayers, name);
|
|
||||||
stdout.write(']}');
|
|
||||||
if (i+1 != sets.length)
|
|
||||||
stdout.write(',');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
layersNsets(doc)
|
|
||||||
stdout.writeln(']}');
|
|
||||||
|
|
||||||
alert(doc.layerSets.getByName("Group 2").layerSets.getByName("Group 1").layers.getByName("Layer 1").name)
|
|
||||||
stdout.close();
|
|
||||||
@@ -11,5 +11,12 @@ for (var i = 0; i < set.artLayers.length; i++) {
|
|||||||
if (i != set.artLayers.length - 1)
|
if (i != set.artLayers.length - 1)
|
||||||
stdout.writeln(",");
|
stdout.writeln(",");
|
||||||
}
|
}
|
||||||
|
stdout.write('], "LayerSets": [')
|
||||||
|
for (var i = 0; i < set.layerSets.length; i++) {
|
||||||
|
var set = set.layerSets[i];
|
||||||
|
stdout.write('{"Name": "'+ set.name +'"}');
|
||||||
|
if (i < set.layerSets.length - 1)
|
||||||
|
stdout.writeln(",");
|
||||||
|
}
|
||||||
stdout.write("]}")
|
stdout.write("]}")
|
||||||
stdout.close();
|
stdout.close();
|
||||||
161
structs.go
161
structs.go
@@ -3,15 +3,43 @@ package ps
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Group represents a Document or LayerSet.
|
||||||
type Group interface {
|
type Group interface {
|
||||||
|
Name() string
|
||||||
Parent() Group
|
Parent() Group
|
||||||
|
SetParent(Group)
|
||||||
|
Path() string
|
||||||
GetArtLayers() []*ArtLayer
|
GetArtLayers() []*ArtLayer
|
||||||
GetLayerSets() []*LayerSet
|
GetLayerSets() []*LayerSet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Document represents a Photoshop document (PSD file).
|
||||||
type Document struct {
|
type Document struct {
|
||||||
|
name string
|
||||||
|
Height int
|
||||||
|
Width int
|
||||||
|
ArtLayers []*ArtLayer
|
||||||
|
LayerSets []*LayerSet
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Document) UnmarshalJSON(b []byte) error {
|
||||||
|
tmp := &DocumentJSON{}
|
||||||
|
if err := json.Unmarshal(b, &tmp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
d.name = tmp.Name
|
||||||
|
d.Height = tmp.Height
|
||||||
|
d.Width = tmp.Width
|
||||||
|
d.ArtLayers = tmp.ArtLayers
|
||||||
|
d.LayerSets = tmp.LayerSets
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type DocumentJSON struct {
|
||||||
Name string
|
Name string
|
||||||
Height int
|
Height int
|
||||||
Width int
|
Width int
|
||||||
@@ -19,6 +47,9 @@ type Document struct {
|
|||||||
LayerSets []*LayerSet
|
LayerSets []*LayerSet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Document) Name() string {
|
||||||
|
return d.name
|
||||||
|
}
|
||||||
func (d *Document) GetArtLayers() []*ArtLayer {
|
func (d *Document) GetArtLayers() []*ArtLayer {
|
||||||
return d.ArtLayers
|
return d.ArtLayers
|
||||||
}
|
}
|
||||||
@@ -30,45 +61,68 @@ func (d *Document) GetLayerSets() []*LayerSet {
|
|||||||
func (d *Document) Parent() Group {
|
func (d *Document) Parent() Group {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (d *Document) SetParent(g Group) {}
|
||||||
|
|
||||||
// ActiveDocument returns a Document object from Photoshop's active document.
|
func (d *Document) Path() string {
|
||||||
func ActiveDocument() (Document, error) {
|
return ""
|
||||||
byt, err := DoJs("getActiveDocument.jsx")
|
|
||||||
var d Document
|
|
||||||
err = json.Unmarshal(byt, &d)
|
|
||||||
fmt.Println(string(byt))
|
|
||||||
return d, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDocument() (*Document, error) {
|
func ActiveDocument() (*Document, error) {
|
||||||
byt, err := DoJs("getActiveDoc.jsx")
|
byt, err := DoJs("getActiveDoc.jsx")
|
||||||
var d *Document
|
var d *Document
|
||||||
err = json.Unmarshal(byt, &d)
|
err = json.Unmarshal(byt, &d)
|
||||||
for _, lyr := range d.ArtLayers {
|
for _, lyr := range d.ArtLayers {
|
||||||
lyr.Parent = d
|
lyr.SetParent(d)
|
||||||
}
|
}
|
||||||
for _, set := range d.LayerSets {
|
for i, set := range d.LayerSets {
|
||||||
set.parent = d
|
s, err := NewLayerSet(set.Path() + "/")
|
||||||
for _, lyr := range set.ArtLayers {
|
if err != nil {
|
||||||
lyr.Parent = set
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
d.LayerSets[i] = s
|
||||||
|
s.SetParent(d)
|
||||||
}
|
}
|
||||||
fmt.Println(string(byt))
|
|
||||||
return d, err
|
return d, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type ArtLayer struct {
|
type ArtLayer struct {
|
||||||
Name string
|
name string
|
||||||
// TextItem string
|
// TextItem string
|
||||||
Bounds [2][2]int
|
Bounds [2][2]int
|
||||||
Parent Group
|
parent Group
|
||||||
Path string
|
|
||||||
Visiblity bool
|
Visiblity bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (a *ArtLayer) setParent(c Group) {
|
type ArtLayerJSON struct {
|
||||||
// ArtLayer.Parent = c
|
Name string
|
||||||
// }
|
Bounds [2][2]int
|
||||||
|
Parent Group
|
||||||
|
Visible bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArtLayer) UnmarshalJSON(b []byte) error {
|
||||||
|
tmp := &ArtLayerJSON{}
|
||||||
|
if err := json.Unmarshal(b, &tmp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
a.name = tmp.Name
|
||||||
|
a.Bounds = tmp.Bounds
|
||||||
|
a.parent = tmp.Parent
|
||||||
|
a.Visiblity = tmp.Visible
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArtLayer) SetParent(c Group) {
|
||||||
|
a.parent = c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArtLayer) Parent() Group {
|
||||||
|
return a.parent
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArtLayer) Path() string {
|
||||||
|
return fmt.Sprintf("%s%s", a.parent.Path(), a.name)
|
||||||
|
}
|
||||||
|
|
||||||
// Layer returns an ArtLayer from the active document given a specified
|
// Layer returns an ArtLayer from the active document given a specified
|
||||||
// path string.
|
// path string.
|
||||||
@@ -79,13 +133,12 @@ func Layer(path string) (ArtLayer, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return ArtLayer{}, err
|
return ArtLayer{}, err
|
||||||
}
|
}
|
||||||
out.Path = path
|
|
||||||
return out, err
|
return out, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetVisible makes the layer visible.
|
// SetVisible makes the layer visible.
|
||||||
func (a *ArtLayer) SetVisible() {
|
func (a *ArtLayer) SetVisible() {
|
||||||
js := JSLayer(a.Path) + fmt.Sprintf(".visible=%s;", true)
|
js := JSLayer(a.Path()) + fmt.Sprintf(".visible=%s;", true)
|
||||||
DoJs("compilejs.jsx", js)
|
DoJs("compilejs.jsx", js)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +153,7 @@ func (a *ArtLayer) Position(x, y int, align string) {
|
|||||||
} else {
|
} else {
|
||||||
lyrY = a.Bounds[1][1]
|
lyrY = a.Bounds[1][1]
|
||||||
}
|
}
|
||||||
byt, err := DoJs("moveLayer.jsx", JSLayer(a.Path), fmt.Sprint(x-lyrX), fmt.Sprint(y-lyrY))
|
byt, err := DoJs("moveLayer.jsx", JSLayer(a.Path()), fmt.Sprint(x-lyrX), fmt.Sprint(y-lyrY))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -111,12 +164,35 @@ func (a *ArtLayer) Position(x, y int, align string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type LayerSet struct {
|
type LayerSet struct {
|
||||||
Name string
|
name string
|
||||||
parent Group
|
parent Group
|
||||||
ArtLayers []*ArtLayer
|
ArtLayers []*ArtLayer
|
||||||
LayerSets []*LayerSet
|
LayerSets []*LayerSet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type LayerSetJSON struct {
|
||||||
|
Name string
|
||||||
|
Parent Group
|
||||||
|
ArtLayers []*ArtLayer
|
||||||
|
LayerSets []*LayerSet
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LayerSet) UnmarshalJSON(b []byte) error {
|
||||||
|
tmp := &LayerSetJSON{}
|
||||||
|
if err := json.Unmarshal(b, &tmp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
l.name = tmp.Name
|
||||||
|
l.parent = tmp.Parent
|
||||||
|
l.ArtLayers = tmp.ArtLayers
|
||||||
|
l.LayerSets = tmp.LayerSets
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LayerSet) Name() string {
|
||||||
|
return l.name
|
||||||
|
}
|
||||||
|
|
||||||
func (l *LayerSet) GetArtLayers() []*ArtLayer {
|
func (l *LayerSet) GetArtLayers() []*ArtLayer {
|
||||||
return l.ArtLayers
|
return l.ArtLayers
|
||||||
}
|
}
|
||||||
@@ -125,20 +201,47 @@ func (l *LayerSet) GetLayerSets() []*LayerSet {
|
|||||||
return l.LayerSets
|
return l.LayerSets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *LayerSet) SetParent(c Group) {
|
||||||
|
l.parent = c
|
||||||
|
}
|
||||||
|
|
||||||
func (l *LayerSet) Parent() Group {
|
func (l *LayerSet) Parent() Group {
|
||||||
return l.parent
|
return l.parent
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetLayerSet(path string) (LayerSet, error) {
|
func (l *LayerSet) Path() string {
|
||||||
|
if l.parent == nil {
|
||||||
|
return l.name
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s%s/", l.parent.Path(), l.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewLayerSet(path string) (*LayerSet, error) {
|
||||||
byt, err := DoJs("getLayerSet.jsx", JSLayer(path))
|
byt, err := DoJs("getLayerSet.jsx", JSLayer(path))
|
||||||
var out LayerSet
|
// fmt.Println(string(byt))
|
||||||
fmt.Println(string(byt)) // TODO: Debug
|
var out *LayerSet
|
||||||
err = json.Unmarshal(byt, &out)
|
err = json.Unmarshal(byt, &out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return LayerSet{}, err
|
return &LayerSet{}, err
|
||||||
}
|
}
|
||||||
for _, lyr := range out.ArtLayers {
|
for _, lyr := range out.ArtLayers {
|
||||||
lyr.Parent = &out
|
lyr.SetParent(out)
|
||||||
|
}
|
||||||
|
for i, set := range out.LayerSets {
|
||||||
|
s, err := NewLayerSet(fmt.Sprintf("%s%s/", path, set.Name()))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
out.LayerSets[i] = s
|
||||||
|
s.SetParent(out)
|
||||||
}
|
}
|
||||||
return out, err
|
return out, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetVisible makes the LayerSet visible.
|
||||||
|
func (s *LayerSet) SetVisible(b bool) {
|
||||||
|
fmt.Println(s.Path())
|
||||||
|
fmt.Println(JSLayer(s.Path()))
|
||||||
|
js := JSLayer(strings.TrimRight(s.Path(), ";") + fmt.Sprintf(".visible=%v;", b))
|
||||||
|
DoJs("compilejs.jsx", js)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user