mirror of
https://github.com/sbrow/ps.git
synced 2025-12-29 18:47:38 -05:00
Layersets now can be moved correctly
This commit is contained in:
@@ -29,7 +29,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 + '"}');
|
stdout.write('{"Name": "' + set.name + '", "Visible":'+ set.visible +'}');
|
||||||
if (i+1 != sets.length)
|
if (i+1 != sets.length)
|
||||||
stdout.write(',');
|
stdout.write(',');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include lib.js
|
#include lib.js
|
||||||
var stdout = newFile(arguments[0]);
|
var stdout = newFile(arguments[0]);
|
||||||
var set = eval(arguments[1]);
|
var set = eval(arguments[1]);
|
||||||
stdout.writeln('{"Name": "'+set.name+'", "ArtLayers":[');
|
stdout.writeln('{"Name": "'+set.name+'", "Visible": '+ set.visible +', "ArtLayers":[');
|
||||||
stdout.flush();
|
stdout.flush();
|
||||||
for (var i = 0; i < set.artLayers.length; i++) {
|
for (var i = 0; i < set.artLayers.length; i++) {
|
||||||
var lyr = set.artLayers[i];
|
var lyr = set.artLayers[i];
|
||||||
|
|||||||
11
scripts/layerSetBounds.jsx
Normal file
11
scripts/layerSetBounds.jsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#include lib.js
|
||||||
|
var stdout = newFile(arguments[0]);
|
||||||
|
var set = eval(arguments[1]);
|
||||||
|
app.activeDocument.activeLayer=set;
|
||||||
|
set.merge();
|
||||||
|
set=eval(arguments[2]);
|
||||||
|
stdout.write(('[[' + set.bounds[0] + ',' +
|
||||||
|
set.bounds[1] + '],[' + set.bounds[2] + ',' +
|
||||||
|
set.bounds[3] + ']]').replace(/ px/g, ""));
|
||||||
|
Undo();
|
||||||
|
stdout.close();
|
||||||
@@ -3,11 +3,9 @@ var stdout = newFile(arguments[0]);
|
|||||||
var lyr = eval(arguments[1]);
|
var lyr = eval(arguments[1]);
|
||||||
lyr.translate((Number)(arguments[2]), (Number)(arguments[3]));
|
lyr.translate((Number)(arguments[2]), (Number)(arguments[3]));
|
||||||
if (lyr.typename == 'LayerSet') {
|
if (lyr.typename == 'LayerSet') {
|
||||||
alert(lyr.name + "\n" + lyr.typename)
|
lyr.merge()
|
||||||
alert(lyr)
|
lyr=eval(arguments[4])
|
||||||
// lyr.merge()
|
Undo();
|
||||||
// lyr=eval(arguments[4])
|
|
||||||
// Undo();
|
|
||||||
}
|
}
|
||||||
stdout.writeln('{' + bounds(lyr) + '}')
|
stdout.writeln('{' + bounds(lyr) + '}')
|
||||||
stdout.close();
|
stdout.close();
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
#include lib.js
|
#include lib.js
|
||||||
|
|
||||||
// var saveFile = File(arguments[0]);
|
// var saveFile = File(arguments[0]);
|
||||||
var arg = 'app.activeDocument.layerSets.getByName("Indicators").layerSets.getByName("Deck")';
|
var arg = 'app.activeDocument.layerSets.getByName("ResolveGem");';
|
||||||
alert(arg.replace(/[^(?:layerSets)]*(layerSets)/, "artLayers"))
|
var set = eval(arg);
|
||||||
|
set.visible=false;
|
||||||
|
alert(set.visible)
|
||||||
// var doc=app.activeDocument
|
// var doc=app.activeDocument
|
||||||
// doc.layerSets.getByName("ResolveGem").merge();
|
// doc.layerSets.getByName("ResolveGem").merge();
|
||||||
// alert(doc.artLayers.getByName("ResolveGem").bounds);
|
// alert(doc.artLayers.getByName("ResolveGem").bounds);
|
||||||
|
|||||||
55
structs.go
55
structs.go
@@ -91,6 +91,9 @@ func (d *Document) LayerSets() []*LayerSet {
|
|||||||
func (d *Document) LayerSet(name string) *LayerSet {
|
func (d *Document) LayerSet(name string) *LayerSet {
|
||||||
for _, set := range d.layerSets {
|
for _, set := range d.layerSets {
|
||||||
if set.name == name {
|
if set.name == name {
|
||||||
|
if Mode != Fast && !set.current {
|
||||||
|
set.Refresh()
|
||||||
|
}
|
||||||
return set
|
return set
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,8 +127,8 @@ func ActiveDocument() (*Document, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
d.name = string(byt)
|
d.name = strings.TrimRight(string(byt), "\r\n")
|
||||||
if Mode != 1 {
|
if Mode != Safe {
|
||||||
byt, err = ioutil.ReadFile(d.Filename())
|
byt, err = ioutil.ReadFile(d.Filename())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Println("Previous version found, loading")
|
log.Println("Previous version found, loading")
|
||||||
@@ -137,7 +140,15 @@ func ActiveDocument() (*Document, error) {
|
|||||||
}
|
}
|
||||||
log.Println("Loading manually (This could take awhile)")
|
log.Println("Loading manually (This could take awhile)")
|
||||||
byt, err = DoJs("getActiveDoc.jsx")
|
byt, err = DoJs("getActiveDoc.jsx")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
err = json.Unmarshal(byt, &d)
|
err = json.Unmarshal(byt, &d)
|
||||||
|
if err != nil {
|
||||||
|
d.Dump()
|
||||||
|
fmt.Println(string(byt))
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
for _, lyr := range d.artLayers {
|
for _, lyr := range d.artLayers {
|
||||||
lyr.SetParent(d)
|
lyr.SetParent(d)
|
||||||
}
|
}
|
||||||
@@ -317,6 +328,9 @@ func (a *ArtLayer) SetStroke(stk Stroke, fill Color) {
|
|||||||
a.SetColor(fill)
|
a.SetColor(fill)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if fill == nil {
|
||||||
|
fill = a.Color
|
||||||
|
}
|
||||||
if stk.Size == a.Stroke.Size && stk.Color.RGB() == a.Stroke.Color.RGB() {
|
if stk.Size == a.Stroke.Size && stk.Color.RGB() == a.Stroke.Color.RGB() {
|
||||||
if a.Color.RGB() == fill.RGB() {
|
if a.Color.RGB() == fill.RGB() {
|
||||||
if Mode == 2 || (Mode == 0 && a.current) {
|
if Mode == 2 || (Mode == 0 && a.current) {
|
||||||
@@ -466,6 +480,7 @@ type LayerSet struct {
|
|||||||
type LayerSetJSON struct {
|
type LayerSetJSON struct {
|
||||||
Name string
|
Name string
|
||||||
Bounds [2][2]int
|
Bounds [2][2]int
|
||||||
|
Visible bool
|
||||||
ArtLayers []*ArtLayer
|
ArtLayers []*ArtLayer
|
||||||
LayerSets []*LayerSet
|
LayerSets []*LayerSet
|
||||||
}
|
}
|
||||||
@@ -474,6 +489,7 @@ func (l *LayerSet) MarshalJSON() ([]byte, error) {
|
|||||||
return json.Marshal(&LayerSetJSON{
|
return json.Marshal(&LayerSetJSON{
|
||||||
Name: l.name,
|
Name: l.name,
|
||||||
Bounds: l.bounds,
|
Bounds: l.bounds,
|
||||||
|
Visible: l.visible,
|
||||||
ArtLayers: l.artLayers,
|
ArtLayers: l.artLayers,
|
||||||
LayerSets: l.layerSets,
|
LayerSets: l.layerSets,
|
||||||
})
|
})
|
||||||
@@ -486,6 +502,7 @@ func (l *LayerSet) UnmarshalJSON(b []byte) error {
|
|||||||
}
|
}
|
||||||
l.name = tmp.Name
|
l.name = tmp.Name
|
||||||
l.bounds = tmp.Bounds
|
l.bounds = tmp.Bounds
|
||||||
|
l.visible = tmp.Visible
|
||||||
l.artLayers = tmp.ArtLayers
|
l.artLayers = tmp.ArtLayers
|
||||||
for _, lyr := range l.artLayers {
|
for _, lyr := range l.artLayers {
|
||||||
lyr.SetParent(l)
|
lyr.SetParent(l)
|
||||||
@@ -608,27 +625,44 @@ func NewLayerSet(path string, g Group) (*LayerSet, error) {
|
|||||||
out.layerSets[i] = s
|
out.layerSets[i] = s
|
||||||
s.SetParent(out)
|
s.SetParent(out)
|
||||||
}
|
}
|
||||||
|
out.current = true
|
||||||
return out, err
|
return out, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *LayerSet) Visible() bool {
|
||||||
|
return l.visible
|
||||||
|
}
|
||||||
|
|
||||||
// SetVisible makes the LayerSet visible.
|
// SetVisible makes the LayerSet visible.
|
||||||
func (l *LayerSet) SetVisible(b bool) {
|
func (l *LayerSet) SetVisible(b bool) {
|
||||||
if l.visible == b {
|
if l.visible == b {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
l.visible = b
|
js := fmt.Sprintf("%s.visible=%v;", strings.TrimRight(
|
||||||
js := fmt.Sprintf("%s%v", JSLayer(strings.TrimRight(l.Path(), ";")), b)
|
JSLayer(l.Path()), ";"), b)
|
||||||
DoJs("compilejs.jsx", js)
|
DoJs("compilejs.jsx", js)
|
||||||
|
l.visible = b
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetPos snaps the given layerset boundry to the given point.
|
// SetPos snaps the given layerset boundry to the given point.
|
||||||
// Valid options for bound are: "TL", "TR", "BL", "BR"
|
// Valid options for bound are: "TL", "TR", "BL", "BR"
|
||||||
//
|
|
||||||
// TODO: Test TR and BR
|
|
||||||
func (l *LayerSet) SetPos(x, y int, bound string) {
|
func (l *LayerSet) SetPos(x, y int, bound string) {
|
||||||
// if !l.visible || (x == 0 && y == 0) {
|
if !l.visible || (x == 0 && y == 0) {
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
|
byt, err := DoJs("LayerSetBounds.jsx", JSLayer(l.Path()),
|
||||||
|
JSLayer(l.Path(), true))
|
||||||
|
if err != nil {
|
||||||
|
log.Println(string(byt))
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
var bnds *[2][2]int
|
||||||
|
err = json.Unmarshal(byt, &bnds)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(string(byt))
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
l.bounds = *bnds
|
||||||
var lyrX, lyrY int
|
var lyrX, lyrY int
|
||||||
switch bound[:1] {
|
switch bound[:1] {
|
||||||
case "B":
|
case "B":
|
||||||
@@ -646,8 +680,7 @@ func (l *LayerSet) SetPos(x, y int, bound string) {
|
|||||||
default:
|
default:
|
||||||
lyrX = l.bounds[0][0]
|
lyrX = l.bounds[0][0]
|
||||||
}
|
}
|
||||||
fmt.Println(JSLayer(l.Path()), fmt.Sprint(x-lyrX), fmt.Sprint(y-lyrY))
|
byt, err = DoJs("moveLayer.jsx", JSLayer(l.Path()), fmt.Sprint(x-lyrX),
|
||||||
byt, err := DoJs("moveLayer.jsx", JSLayer(l.Path()), fmt.Sprint(x-lyrX),
|
|
||||||
fmt.Sprint(y-lyrY), JSLayer(l.Path(), true))
|
fmt.Sprint(y-lyrY), JSLayer(l.Path(), true))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("byte:", string(byt))
|
fmt.Println("byte:", string(byt))
|
||||||
|
|||||||
Reference in New Issue
Block a user