-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathouterspace.js
183 lines (144 loc) · 7.28 KB
/
outerspace.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
(function () {
var VERSION = 0.1;
var MODULE_PATH = "outerspace";
var thisModule = Sky.getModule(MODULE_PATH);
if( thisModule && thisModule.version >= VERSION) {
return;
};
//--------------------------
// Start outerspace class
function moduleClass() {
var outerspace = this;
outerspace.version = VERSION;
outerspace.description = "Bleed and Slug tools for InDesign.";
var LoadCallback = function ( err, module ){
// Throws an error when dependency could not be loaded...
if( err instanceof Error || err instanceof TypeError ) {
throw new TypeError( err.message, $.fileName, $.line );
};
return module;
};
// Load any needed dependencies
var Rulers = Sky.getUtil("rulers", LoadCallback );
var Font = Sky.getUtil("font", LoadCallback );
//- - - - - - - - - - - - - - - - - - - - - -
// Module code here...
//- - - - - - - - - - - - - - - - - - - - - -
// Default font to use in outer space
var _Settings = { registration_font: undefined };
outerspace.getSetting = function() {
return _Settings;
};
outerspace.setSettings = function( Settings ) {
// A way for a user to load custom settings.
// We need write this more fool proof
_Settings = Settings;
};
outerspace.getRegistrationFontFamilyName = function ( ){
return Font.createFontObject( _Settings.registration_font ).familyName;
};
outerspace.getRegistrationFontStyleName = function ( ) {
return Font.createFontObject( _Settings.registration_font ).styleName;
};
outerspace.getMeasureParagraphStyle = function( Doc, options ) {
var doc = options.doc || undefined;
return true;
};
function getMeasureParagraphStyle( Doc, psName, newFontName) {
// Param psName: Name of valid Paragraph Style to be returned
// newFontName: The name of the font we want to set the paragraph style
function setParagraphStyleFont( Doc, measureParagraphStyle, myNewFontName, saveAsStandard){
// This function will try and set the font style for given paragraph style
// User will be asked for alternate font if given font is not loaded
var myNewFontObj = Font.createFontObject(myNewFontName);
var saveAsStandard = (saveAsStandard || false);
try{
measureParagraphStyle.appliedFont = myNewFontObj.fullName;
} catch (e) {
try{
// Let the user pick a font
var userInput = Font.userChooseFont();
if(typeof userInput == 'object') {
var userFontObject = Font.createFontObject(userInput.fontName);
if(userFontObject.familyName != undefined) {
saveAsStandard = userInput.savePrefs;
try {
measureParagraphStyle.appliedFont = userFontObject.familyName;
measureParagraphStyle.appliedStyle = userFontObject.styleName;
} catch ( anyErr ) {
// Do nothing
}
if(saveAsStandard){
// we need to save this font in Settings, so this dialog will not come up next time
outerspace.Settings.registration_font = userFontObject.fullName;
outerspace.saveSettings();
}
}
}
} catch (e) {
alert("CoverBuilder Error:\n" + e.message + " (Line " + e.line + " in file " + e.fileName + ")");
// This should never happen but if it does
// font will be missing in document
}
}
}
// Use standard font if create a style from scratch
// Don't change the font if the paragraph style already exist
var myNewFontName = String(outerspace.Settings.registration_font);
var changeFont = false;
if( typeof newFontName == "string" ){
if(newFontName != "undefined"){
// The returned paragraph style should use the requested font
// If it is not available alternate will be requested from user
myNewFontName = newFontName;
changeFont = true;
}
}
var measureParagraphStyle = Doc.paragraphStyles.item(psName);
if( measureParagraphStyle.isValid ) {
if(changeFont){
setParagraphStyleFont(Doc, measureParagraphStyle, myNewFontName, false);
}
} else {
// Create the measure style
var measureParagraphStyle = Doc.paragraphStyles.add({name:psName});
setParagraphStyleFont( Doc, measureParagraphStyle, myNewFontName, true);
measureParagraphStyle.pointSize = "8pt";
measureParagraphStyle.fillColor = "Registration";
measureParagraphStyle.fillTint = 100;
measureParagraphStyle.justification = 1667591796;
}
// Always returns a valid paragraph style
return measureParagraphStyle;
};
outerspace.getSlugs = function( Doc, Units ){
// Returns array of measurements in `Units`
// In a similar fashion as geometricBounds
// [Left, Top, Right, Bottom]
// Use ruler units when undefined
// How to resolve conflict horizontal vertical?
// Set and save document ruler units
var originalState = Rulers.set( Doc, Units );
var slugSizes = [ Doc.documentPreferences.slugBottomOffset,
Doc.documentPreferences.slugInsideOrLeftOffset,
Doc.documentPreferences.slugRightOrOutsideOffset,
Doc.documentPreferences.slugTopOffset];
};
Rulers.set( Doc, originalState );
return maxSlug;
};
outerspace.getMaxSlug = function( Doc, Units ){
//This function returns the maximum slug size in `Units`
var slugSizes = outerspace.getSlugs( Doc, Units );
return Math.max( slugSizes[0], slugSizes[1], slugSizes[2], slugSizes[3] );
};
outerspace.getMinSlug = function( Doc, Units ){
//This function returns the maximum slug size in `Units`
var slugSizes = outerspace.getSlugs( Doc, Units );
return Math.min( slugSizes[0], slugSizes[1], slugSizes[2], slugSizes[3] );
};
};
//--------------------------
// End outerspace class
Sky.setUtil(MODULE_PATH, new moduleClass() );
})();