-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathlayer.js
137 lines (112 loc) · 4.66 KB
/
layer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
(function () {
var VERSION = 1.0;
var MODULE_PATH = "layer";
var thisModule = Sky.getUtil(MODULE_PATH);
if( thisModule && thisModule.version >= VERSION) {
return;
};
//--------------------------
// Start layer class
function moduleClass() {
var layerModule = this;
layerModule.version = VERSION;
layerModule.description = "Some layer utilities for InDesign";
layerModule.getByName = function( Doc, layerName, createBool ) {
// Returns requested layer reference || undefined,
// if createBool == true; returns new layer with layerName
// Parse input
if (!Doc.isValid) return new Error("Not a valid document...");
var createBool = createBool === true;
var layerName = String(layerName);
for (var i=0; i < Doc.layers.length; i++) {
if (Doc.layers[i].name == layerName) return Doc.layers[i];
};
if( createBool ) {
return Doc.layers.add({name:layerName});
} else {
return undefined;
};
};
layerModule.get = function( Doc, layerRefOrName, createBool ) {
// Returns requested layer reference || undefined,
// if createBool == true; returns new layer with layerName
var createBool = createBool === true;
if (typeof layerRefOrName === 'string' || layerRefOrName instanceof String ) {
// type of string
return layerModule.getByName( Doc, layerRefOrName, createBool );
} else {
if( layerRefOrName && layerRefOrName.constructor.name === "Layer" ) {
// type of layer-ref
if( layerRefOrName.isValid ) return layerRefOrName;
return layerModule.getByName( Doc, layerRefOrName.name, createBool );
} else {
// Not a layer
return undefined;
};
};
};
layerModule.select = function( Doc, layerRefOrName, createBool ) {
// returns LayerRef or Error
var createBool = createBool === true;
var LayerRef = layerModule.get( Doc, layerRefOrName, createBool );
try {
Doc.activeLayer = LayerRef;
return LayerRef;
} catch ( error ) {
return error;
};
};
layerModule.move = function( Doc, layerRefOrName, afterLayerNo, createBool ) {
// returns LayerRef or Error
var createBool = createBool === true;
var LayerRef = layerModule.get( Doc, layerRefOrName, createBool );
if( LayerRef === undefined ) {
return new Error("Could not resolve layer reference.");
};
try {
LayerRef.move( LocationOptions.AFTER, Doc.layers[afterLayerNo] );
return LayerRef;
} catch ( error ) {
return error;
};
};
layerModule.moveAndSelect = function( Doc, layerRefOrName, afterLayerNo, createBool ) {
var createBool = createBool === true;
var LayerRef = layerModule.select(Doc, layerRefOrName, createBool);
if( LayerRef.isValid ) {
return layerModule.move( Doc, LayerRef, afterLayerNo);
} else {
if (LayerRef instanceof Error) {
return LayerRef;
} else {
return new Error("Could not resolve layer reference.");
};
};
};
layerModule.locker = function( LayerRef, lockBool ) {
// lockBool: True: layer will be locked
// lockBool: False: layer will be unlocked
// lockBool: Not true nor false: Layer lock will be toggled
// Returns: The previous lock state
var prevLockState = LayerRef.locked;
if(typeof lockBool !== 'boolean'){
// Toggle!
var lockBool = !prevLockState;
};
if(lockBool){
LayerRef.locked = true;
return prevLockState;
} else {
LayerRef.locked = false;
return prevLockState;
};
};
layerModule.validOr = function( LayerRef, orValue ) {
return ( LayerRef && LayerRef.constructor.name === "Layer" &&
LayerRef.isValid ) ? LayerRef : orValue;
};
}; // End moduleClass
//--------------------------
// End layer class
Sky.setUtil(MODULE_PATH, new moduleClass() );
})();