Layersets now can be moved correctly

This commit is contained in:
Unknown
2018-04-19 14:52:32 -04:00
parent c54b196f6a
commit cb62b35caa
6 changed files with 65 additions and 21 deletions

View File

@@ -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(',');
} }

View File

@@ -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];

View 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();

View File

@@ -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();

View File

@@ -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);

View File

@@ -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))