Last active
September 25, 2019 19:49
-
-
Save 1nVitr0/8e3f16d22ff5760f183453c2df4873db to your computer and use it in GitHub Desktop.
Photoshop Script to generate a random letter pattern. Includes a generous option dialog.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by Aram Becker - 09/25/2019 | |
* You are free to use and modify this by any means, but it would be great | |
* if you would credit me. | |
* | |
* http://arambecker.de | |
**/ | |
function coupleSlider(slider, box, round) { | |
round = typeof round == "number" ? Math.pow(10, round) : 100; | |
regex = round == 1 ? /\d+/ : /\d+\.?\d*/; | |
box.onChange = function() { | |
if (!regex.test(box.text)) box.text = Math.round(slider.value * round) / round; | |
slider.value = parseFloat(box.text); | |
}; | |
slider.onChange = function() { box.text = Math.round(slider.value * round) / round; }; | |
} | |
function coupleEnable(radioButton, target) { | |
if (!(target instanceof Array)) target = [target]; | |
function update() { for (var i = 0; i < target.length; i++) target[i].enabled = radioButton.value; } | |
radioButton.onClick = update; | |
for (var i = 0; i < radioButton.parent.children.length; i++) | |
radioButton.parent.children[i].onClick = update; | |
} | |
// DIALOG | |
// ====== | |
var dialog = new Window("dialog"); | |
dialog.text = "Generate Random Letters"; | |
dialog.orientation = "column"; | |
dialog.alignChildren = ["center","top"]; | |
dialog.spacing = 10; | |
dialog.margins = 16; | |
// LETTER_SETTINGS | |
// =============== | |
var letter_settings = dialog.add("panel", undefined, undefined, {name: "letter_settings"}); | |
letter_settings.text = "Letter Settings"; | |
letter_settings.preferredSize.width = 512; | |
letter_settings.orientation = "column"; | |
letter_settings.alignChildren = ["left","top"]; | |
letter_settings.spacing = 10; | |
letter_settings.margins = 10; | |
// GROUP0 | |
// ====== | |
var group0 = letter_settings.add("group", undefined, {name: "group0"}); | |
group0.orientation = "row"; | |
group0.alignChildren = ["left","center"]; | |
group0.spacing = 10; | |
group0.margins = 0; | |
var statictext0 = group0.add("statictext", undefined, undefined, {name: "statictext0"}); | |
statictext0.text = "Font:"; | |
statictext0.preferredSize.width = 64; | |
var font_array = []; | |
for (var i = 0; i < app.fonts.length; i++) font_array.push(app.fonts[i].name); | |
font_array.sort(); | |
var font = group0.add("dropdownlist", undefined, undefined, {name: "font", items: font_array}); | |
font.preferredSize.width = 212; | |
font.selection = 0; | |
var font_bold = group0.add("checkbox", undefined, undefined, {name: "font_bold"}); | |
font_bold.text = "Bold"; | |
var font_italic = group0.add("checkbox", undefined, undefined, {name: "font_italic"}); | |
font_italic.text = "Italic"; | |
var preview = group0.add("statictext", undefined, undefined, {name: "preview"}); | |
preview.text = "ABCD abcd 1234 #?!."; | |
preview.preferredSize.width = 196; | |
preview.graphics.font = font_array[0]; | |
font.onChange = font_bold.onClick = font_italic.onClick = function() { | |
preview.graphics.font = ScriptUI.newFont(font_array[parseInt(font.selection)], font_bold.value ? (font_italic.value ? 3 : 1) : (font_italic.value ? 2 : 0), 12); | |
} | |
var select | |
// GROUP1 | |
// ====== | |
var group1 = letter_settings.add("group", undefined, {name: "group1"}); | |
group1.orientation = "row"; | |
group1.alignChildren = ["left","center"]; | |
group1.spacing = 10; | |
group1.margins = 0; | |
var statictext1 = group1.add("statictext", undefined, undefined, {name: "statictext1"}); | |
statictext1.text = "Number:"; | |
statictext1.preferredSize.width = 64; | |
var letter_count_slider = group1.add("slider", undefined, undefined, undefined, undefined, {name: "letter_count_slider"}); | |
letter_count_slider.minvalue = 0; | |
letter_count_slider.maxvalue = 200; | |
letter_count_slider.value = 10; | |
letter_count_slider.preferredSize.width = 256; | |
var letter_count_box = group1.add('edittext {justify: "right", properties: {name: "letter_count_box", enterKeySignalsOnChange: true}}'); | |
letter_count_box.text = "10"; | |
letter_count_box.preferredSize.width = 64; | |
var letter_count_reset = group1.add("button", undefined, undefined, {name: "letter_size_reset"}); | |
letter_count_reset.text = "Reset"; | |
letter_count_reset.alignment = ["left","top"]; | |
coupleSlider(letter_count_slider, letter_count_box, 0); | |
letter_count_reset.onClick = function() { | |
letter_count_slider.value = 10; | |
letter_count_box.text = "10"; | |
} | |
// LETTER_SETTINGS | |
// =============== | |
var divider1 = letter_settings.add("panel", undefined, undefined, {name: "divider1"}); | |
divider1.alignment = "fill"; | |
// GROUP2 | |
// ====== | |
var group2 = letter_settings.add("group", undefined, {name: "group2"}); | |
group2.orientation = "row"; | |
group2.alignChildren = ["left","center"]; | |
group2.spacing = 10; | |
group2.margins = 0; | |
var statictext2 = group2.add("statictext", undefined, undefined, {name: "statictext2"}); | |
statictext2.text = "Min Size:"; | |
statictext2.preferredSize.width = 64; | |
var letter_min_size_slider = group2.add("slider", undefined, undefined, undefined, undefined, {name: "letter_min_size_slider"}); | |
letter_min_size_slider.minvalue = 0; | |
letter_min_size_slider.maxvalue = 100; | |
letter_min_size_slider.value = 16; | |
letter_min_size_slider.preferredSize.width = 256; | |
var letter_min_size_box = group2.add('edittext {justify: "right", properties: {name: "letter_min_size_box", enterKeySignalsOnChange: true}}'); | |
letter_min_size_box.text = "16"; | |
letter_min_size_box.preferredSize.width = 64; | |
coupleSlider(letter_min_size_slider, letter_min_size_box, 1); | |
// GROUP3 | |
// ====== | |
var group3 = letter_settings.add("group", undefined, {name: "group3"}); | |
group3.orientation = "row"; | |
group3.alignChildren = ["left","center"]; | |
group3.spacing = 10; | |
group3.margins = 0; | |
var statictext3 = group3.add("statictext", undefined, undefined, {name: "statictext3"}); | |
statictext3.text = "Max Size:"; | |
statictext3.preferredSize.width = 64; | |
var letter_max_size_slider = group3.add("slider", undefined, undefined, undefined, undefined, {name: "letter_max_size_slider"}); | |
letter_max_size_slider.minvalue = 0; | |
letter_max_size_slider.maxvalue = 100; | |
letter_max_size_slider.value = 20; | |
letter_max_size_slider.preferredSize.width = 256; | |
var letter_max_size_box = group3.add('edittext {justify: "right", properties: {name: "letter_max_size_box", enterKeySignalsOnChange: true}}'); | |
letter_max_size_box.text = "20"; | |
letter_max_size_box.preferredSize.width = 64; | |
var letter_size_reset = group3.add("button", undefined, undefined, {name: "letter_size_reset"}); | |
letter_size_reset.text = "Reset"; | |
letter_size_reset.alignment = ["left","top"]; | |
coupleSlider(letter_max_size_slider, letter_max_size_box, 1); | |
letter_size_reset.onClick = function() { | |
letter_min_size_slider.value = 16; | |
letter_min_size_box.text = "16"; | |
letter_max_size_slider.value = 20; | |
letter_max_size_box.text = "20"; | |
} | |
// LETTER_SETTINGS | |
// =============== | |
var divider2 = letter_settings.add("panel", undefined, undefined, {name: "divider2"}); | |
divider2.alignment = "fill"; | |
// GROUP4 | |
// ====== | |
var group4 = letter_settings.add("group", undefined, {name: "group4"}); | |
group4.orientation = "row"; | |
group4.alignChildren = ["left","center"]; | |
group4.spacing = 10; | |
group4.margins = 0; | |
var statictext4 = group4.add("statictext", undefined, undefined, {name: "statictext4"}); | |
statictext4.text = "Letters:"; | |
statictext4.preferredSize.width = 64; | |
var letter_caps = group4.add("radiobutton", undefined, undefined, {name: "letter_caps"}); | |
letter_caps.text = "CAPS"; | |
var letter_small = group4.add("radiobutton", undefined, undefined, {name: "letter_small"}); | |
letter_small.text = "small"; | |
var letter_mixed = group4.add("radiobutton", undefined, undefined, {name: "letter_mixed"}); | |
letter_mixed.text = "MiXeD"; | |
var letter_numbers = group4.add("checkbox", undefined, undefined, {name: "letter_numbers"}); | |
letter_numbers.text = "Numbers"; | |
var divider_custom = group4.add("panel", undefined, undefined, {name: "divider_custom"}); | |
divider_custom.alignment = "fill"; | |
var letter_custom = group4.add("radiobutton", undefined, undefined, {name: "letter_custom"}); | |
letter_custom.text = "Custom"; | |
// GROUP5 | |
// ====== | |
var group5 = letter_settings.add("group", undefined, {name: "group5"}); | |
group5.orientation = "row"; | |
group5.alignChildren = ["left","center"]; | |
group5.spacing = 10; | |
group5.margins = 0; | |
group5.enabled = false; | |
var statictext5 = group5.add("statictext", undefined, undefined, {name: "statictext5"}); | |
statictext5.preferredSize.width = 64; | |
var letter_custom_regex = group5.add('edittext {properties: {name: "letter_custom_regex"}}'); | |
letter_custom_regex.text = "A-Za-z0-9"; | |
letter_custom_regex.preferredSize.width = 320; | |
var letter_custom_reset = group5.add("button", undefined, undefined, {name: "letter_custom_reset"}); | |
letter_custom_reset.text = "Default"; | |
coupleEnable(letter_custom, group5); | |
// PANEL1 | |
// ====== | |
var panel1 = dialog.add("panel", undefined, undefined, {name: "panel1"}); | |
panel1.text = "Positioning"; | |
panel1.preferredSize.width = 512; | |
panel1.orientation = "column"; | |
panel1.alignChildren = ["left","top"]; | |
panel1.spacing = 10; | |
panel1.margins = 10; | |
// GROUP6 | |
// ====== | |
var group6 = panel1.add("group", undefined, {name: "group6"}); | |
group6.orientation = "row"; | |
group6.alignChildren = ["left","center"]; | |
group6.spacing = 10; | |
group6.margins = 0; | |
var statictext6 = group6.add("statictext", undefined, undefined, {name: "statictext6"}); | |
statictext6.text = "Random:"; | |
statictext6.preferredSize.width = 64; | |
var position_random = group6.add("checkbox", undefined, undefined, {name: "position_random"}); | |
position_random.text = "Position"; | |
position_random.value = true; | |
var rotation_random = group6.add("checkbox", undefined, undefined, {name: "rotation_random"}); | |
rotation_random.text = "Rotation"; | |
rotation_random.value = true; | |
var divider3 = group6.add("panel", undefined, undefined, {name: "divider3"}); | |
divider3.alignment = "fill"; | |
var position_reset = group6.add("button", undefined, undefined, {name: "position_reset"}); | |
position_reset.text = "Reset Position"; | |
var rotation_reset = group6.add("button", undefined, undefined, {name: "rotation_reset"}); | |
rotation_reset.text = "Reset Rotation"; | |
// GROUP7 | |
// ====== | |
var group7 = panel1.add("group", undefined, {name: "group7"}); | |
group7.orientation = "row"; | |
group7.alignChildren = ["left","center"]; | |
group7.spacing = 10; | |
group7.margins = 0; | |
var statictext7 = group7.add("statictext", undefined, undefined, {name: "statictext7"}); | |
statictext7.text = "Position:"; | |
statictext7.preferredSize.width = 64; | |
var statictext8 = group7.add("statictext", undefined, undefined, {name: "statictext8"}); | |
statictext8.text = "X:"; | |
var position_from_x = group7.add('edittext {properties: {name: "position_from_x"}}'); | |
position_from_x.text = "0"; | |
position_from_x.preferredSize.width = 64; | |
var statictext9 = group7.add("statictext", undefined, undefined, {name: "statictext9"}); | |
statictext9.text = "to"; | |
var position_to_x = group7.add('edittext {properties: {name: "position_to_x"}}'); | |
position_to_x.text = activeDocument.width.as("px"); | |
position_to_x.preferredSize.width = 64; | |
var divider4 = group7.add("panel", undefined, undefined, {name: "divider4"}); | |
divider4.alignment = "fill"; | |
var statictext10 = group7.add("statictext", undefined, undefined, {name: "statictext10"}); | |
statictext10.text = "Y:"; | |
var position_from_y = group7.add('edittext {properties: {name: "position_from_y"}}'); | |
position_from_y.text = "0"; | |
position_from_y.preferredSize.width = 64; | |
var statictext11 = group7.add("statictext", undefined, undefined, {name: "statictext11"}); | |
statictext11.text = "to"; | |
var position_to_y = group7.add('edittext {properties: {name: "position_to_y"}}'); | |
position_to_y.text = activeDocument.height.as("px"); | |
position_to_y.preferredSize.width = 64; | |
coupleEnable(position_random, [position_to_x, position_to_y]); | |
position_reset.onClick = function() { | |
position_from_x.text = "0"; | |
position_to_x.text = activeDocument.width.as("px"); | |
position_from_y.text = "0"; | |
position_to_y.text = activeDocument.height.as("px"); | |
} | |
// GROUP8 | |
// ====== | |
var group8 = panel1.add("group", undefined, {name: "group8"}); | |
group8.orientation = "row"; | |
group8.alignChildren = ["left","center"]; | |
group8.spacing = 10; | |
group8.margins = 0; | |
var statictext12 = group8.add("statictext", undefined, undefined, {name: "statictext12"}); | |
statictext12.text = "Rotation:"; | |
statictext12.preferredSize.width = 64; | |
var rotation_from = group8.add('edittext {properties: {name: "rotation_from"}}'); | |
rotation_from.text = "0"; | |
rotation_from.preferredSize.width = 64; | |
var statictext13 = group8.add("statictext", undefined, undefined, {name: "statictext13"}); | |
statictext13.text = "to"; | |
var rotation_to = group8.add('edittext {properties: {name: "rotation_to"}}'); | |
rotation_to.text = "360"; | |
rotation_to.preferredSize.width = 64; | |
var divider5 = group8.add("panel", undefined, undefined, {name: "divider5"}); | |
divider5.alignment = "fill"; | |
var statictext14 = group8.add("statictext", undefined, undefined, {name: "statictext14"}); | |
statictext14.text = "Pivot:"; | |
var pivot_center = group8.add("radiobutton", undefined, undefined, {name: "pivot_center"}); | |
pivot_center.text = "Center"; | |
var pivot_corner = group8.add("radiobutton", undefined, undefined, {name: "pivot_corner"}); | |
pivot_corner.text = "Top Left"; | |
coupleEnable(rotation_random, rotation_to); | |
rotation_reset.onClick = function() { | |
pivot_center.value = true; | |
rotation_from.text = "0"; | |
rotation_to.text = "360"; | |
} | |
// PANEL2 | |
// ====== | |
var panel2 = dialog.add("panel", undefined, undefined, {name: "panel2"}); | |
panel2.text = "Colors"; | |
panel2.preferredSize.width = 512; | |
panel2.orientation = "column"; | |
panel2.alignChildren = ["left","top"]; | |
panel2.spacing = 10; | |
panel2.margins = 10; | |
// GROUP9 | |
// ====== | |
var group9 = panel2.add("group", undefined, {name: "group9"}); | |
group9.orientation = "row"; | |
group9.alignChildren = ["left","center"]; | |
group9.spacing = 10; | |
group9.margins = 0; | |
var statictext15 = group9.add("statictext", undefined, undefined, {name: "statictext15"}); | |
statictext15.text = "Colors:"; | |
statictext15.preferredSize.width = 64; | |
var colors_all = group9.add("radiobutton", undefined, undefined, {name: "colors_all"}); | |
colors_all.text = "All"; | |
var colors_gray = group9.add("radiobutton", undefined, undefined, {name: "colors_gray"}); | |
colors_gray.text = "Grayscale"; | |
var colors_mono = group9.add("radiobutton", undefined, undefined, {name: "colors_mono"}); | |
colors_mono.text = "Monochrome"; | |
var colors_mono_color_array = ["Red","Green","Blue"]; | |
var colors_mono_color = group9.add("dropdownlist", undefined, undefined, {name: "colors_mono_color", items: colors_mono_color_array}); | |
colors_mono_color.enabled = false; | |
colors_mono_color.selection = 0; | |
var colors_custom = group9.add("radiobutton", undefined, undefined, {name: "colors_custom"}); | |
colors_custom.text = "Custom"; | |
coupleEnable(colors_mono, colors_mono_color); | |
// GROUP10 | |
// ======= | |
var group10 = panel2.add("group", undefined, {name: "group10"}); | |
group10.enabled = false; | |
group10.orientation = "row"; | |
group10.alignChildren = ["left","center"]; | |
group10.spacing = 10; | |
group10.margins = 0; | |
var statictext16 = group10.add("statictext", undefined, undefined, {name: "statictext16"}); | |
statictext16.preferredSize.width = 64; | |
var statictext17 = group10.add("statictext", undefined, undefined, {name: "statictext17"}); | |
statictext17.text = "Red:"; | |
statictext17.preferredSize.width = 48; | |
var colors_red_from_slider = group10.add("slider", undefined, undefined, undefined, undefined, {name: "colors_red_from_slider"}); | |
colors_red_from_slider.minvalue = 0; | |
colors_red_from_slider.maxvalue = 255; | |
colors_red_from_slider.value = 0; | |
colors_red_from_slider.preferredSize.width = 98; | |
var colors_red_from_box = group10.add('edittext {properties: {name: "colors_red_from_box"}}'); | |
colors_red_from_box.text = "0"; | |
colors_red_from_box.preferredSize.width = 48; | |
var statictext18 = group10.add("statictext", undefined, undefined, {name: "statictext18"}); | |
statictext18.text = "to"; | |
var colors_red_to_slider = group10.add("slider", undefined, undefined, undefined, undefined, {name: "colors_red_to_slider"}); | |
colors_red_to_slider.minvalue = 0; | |
colors_red_to_slider.maxvalue = 255; | |
colors_red_to_slider.value = 255; | |
colors_red_to_slider.preferredSize.width = 98; | |
var colors_red_to_box = group10.add('edittext {properties: {name: "colors_red_to_box"}}'); | |
colors_red_to_box.text = "255"; | |
colors_red_to_box.preferredSize.width = 48; | |
coupleSlider(colors_red_from_slider, colors_red_from_box, 0); | |
coupleSlider(colors_red_to_slider, colors_red_to_box, 0); | |
// GROUP11 | |
// ======= | |
var group11 = panel2.add("group", undefined, {name: "group11"}); | |
group11.enabled = false; | |
group11.orientation = "row"; | |
group11.alignChildren = ["left","center"]; | |
group11.spacing = 10; | |
group11.margins = 0; | |
var statictext19 = group11.add("statictext", undefined, undefined, {name: "statictext19"}); | |
statictext19.preferredSize.width = 64; | |
var statictext20 = group11.add("statictext", undefined, undefined, {name: "statictext20"}); | |
statictext20.text = "Green:"; | |
statictext20.preferredSize.width = 48; | |
var colors_green_from_slider = group11.add("slider", undefined, undefined, undefined, undefined, {name: "colors_green_from_slider"}); | |
colors_green_from_slider.minvalue = 0; | |
colors_green_from_slider.maxvalue = 255; | |
colors_green_from_slider.value = 0; | |
colors_green_from_slider.preferredSize.width = 98; | |
var colors_green_from_box = group11.add('edittext {properties: {name: "colors_green_from_box"}}'); | |
colors_green_from_box.text = "0"; | |
colors_green_from_box.preferredSize.width = 48; | |
var statictext21 = group11.add("statictext", undefined, undefined, {name: "statictext21"}); | |
statictext21.text = "to"; | |
var colors_green_to_slider = group11.add("slider", undefined, undefined, undefined, undefined, {name: "colors_green_to_slider"}); | |
colors_green_to_slider.minvalue = 0; | |
colors_green_to_slider.maxvalue = 255; | |
colors_green_to_slider.value = 255; | |
colors_green_to_slider.preferredSize.width = 98; | |
var colors_green_to_box = group11.add('edittext {properties: {name: "colors_green_to_box"}}'); | |
colors_green_to_box.text = "255"; | |
colors_green_to_box.preferredSize.width = 48; | |
coupleSlider(colors_green_from_slider, colors_green_from_box, 0); | |
coupleSlider(colors_green_to_slider, colors_green_to_box, 0); | |
// GROUP12 | |
// ======= | |
var group12 = panel2.add("group", undefined, {name: "group12"}); | |
group12.enabled = false; | |
group12.orientation = "row"; | |
group12.alignChildren = ["left","center"]; | |
group12.spacing = 10; | |
group12.margins = 0; | |
var statictext22 = group12.add("statictext", undefined, undefined, {name: "statictext22"}); | |
statictext22.preferredSize.width = 64; | |
var statictext23 = group12.add("statictext", undefined, undefined, {name: "statictext23"}); | |
statictext23.text = "Blue:"; | |
statictext23.preferredSize.width = 48; | |
var colors_blue_from_slider = group12.add("slider", undefined, undefined, undefined, undefined, {name: "colors_blue_from_slider"}); | |
colors_blue_from_slider.minvalue = 0; | |
colors_blue_from_slider.maxvalue = 255; | |
colors_blue_from_slider.value = 0; | |
colors_blue_from_slider.preferredSize.width = 98; | |
var colors_blue_from_box = group12.add('edittext {properties: {name: "colors_blue_from_box"}}'); | |
colors_blue_from_box.text = "0"; | |
colors_blue_from_box.preferredSize.width = 48; | |
var statictext24 = group12.add("statictext", undefined, undefined, {name: "statictext24"}); | |
statictext24.text = "to"; | |
var colors_blue_to_slider = group12.add("slider", undefined, undefined, undefined, undefined, {name: "colors_blue_to_slider"}); | |
colors_blue_to_slider.minvalue = 0; | |
colors_blue_to_slider.maxvalue = 255; | |
colors_blue_to_slider.value = 255; | |
colors_blue_to_slider.preferredSize.width = 98; | |
var colors_blue_to_box = group12.add('edittext {properties: {name: "colors_blue_to_box"}}'); | |
colors_blue_to_box.text = "255"; | |
colors_blue_to_box.preferredSize.width = 48; | |
coupleSlider(colors_blue_from_slider, colors_blue_from_box, 0); | |
coupleSlider(colors_blue_to_slider, colors_blue_to_box, 0); | |
// GROUP15 | |
// ======= | |
var group15 = panel2.add("group", undefined, {name: "group15"}); | |
group15.enabled = false; | |
group15.orientation = "row"; | |
group15.alignChildren = ["left","center"]; | |
group15.spacing = 10; | |
group15.margins = 0; | |
var statictextAlpha = group15.add("statictext", undefined, undefined, {name: "statictextAlpha"}); | |
statictextAlpha.preferredSize.width = 64; | |
var statictextAlpha1 = group15.add("statictext", undefined, undefined, {name: "statictextAlpha1"}); | |
statictextAlpha1.text = "Alpha:"; | |
statictextAlpha1.preferredSize.width = 48; | |
var colors_alpha_from_slider = group15.add("slider", undefined, undefined, undefined, undefined, {name: "colors_alpha_from_slider"}); | |
colors_alpha_from_slider.minvalue = 0; | |
colors_alpha_from_slider.maxvalue = 100; | |
colors_alpha_from_slider.value = 0; | |
colors_alpha_from_slider.preferredSize.width = 98; | |
var colors_alpha_from_box = group15.add('edittext {properties: {name: "colors_alpha_from_box"}}'); | |
colors_alpha_from_box.text = "0"; | |
colors_alpha_from_box.preferredSize.width = 48; | |
var statictextAlpha2 = group15.add("statictext", undefined, undefined, {name: "statictextAlpha2"}); | |
statictextAlpha2.text = "to"; | |
var colors_alpha_to_slider = group15.add("slider", undefined, undefined, undefined, undefined, {name: "colors_alpha_to_slider"}); | |
colors_alpha_to_slider.minvalue = 0; | |
colors_alpha_to_slider.maxvalue = 100; | |
colors_alpha_to_slider.value = 100; | |
colors_alpha_to_slider.preferredSize.width = 98; | |
var colors_alpha_to_box = group15.add('edittext {properties: {name: "colors_alpha_to_box"}}'); | |
colors_alpha_to_box.text = "100"; | |
colors_alpha_to_box.preferredSize.width = 48; | |
coupleSlider(colors_alpha_from_slider, colors_alpha_from_box, 0); | |
coupleSlider(colors_alpha_to_slider, colors_alpha_to_box, 0); | |
coupleEnable(colors_custom, [group10, group11, group12, group15]); | |
// PANEL3 | |
// ====== | |
var panel3 = dialog.add("panel", undefined, undefined, {name: "panel2"}); | |
panel3.text = "Layers"; | |
panel3.preferredSize.width = 512; | |
panel3.orientation = "column"; | |
panel3.alignChildren = ["left","top"]; | |
panel3.spacing = 10; | |
panel3.margins = 10; | |
// GROUP14 | |
// ====== | |
var group14 = panel3.add("group", undefined, {name: "group14"}); | |
group14.orientation = "row"; | |
group14.alignChildren = ["left","center"]; | |
group14.spacing = 10; | |
group14.margins = 0; | |
var statictextLayer = group2.add("statictext", undefined, undefined, {name: "statictextLayer"}); | |
statictextLayer.text = "Layer Mode:"; | |
statictextLayer.preferredSize.width = 64; | |
var keep = group14.add("radiobutton", undefined, undefined, {name: "keep"}); | |
keep.text = "Keep as Text"; | |
var rasterize = group14.add("radiobutton", undefined, undefined, {name: "rasterize"}); | |
rasterize.text = "Rasterize"; | |
var merge = group14.add("radiobutton", undefined, undefined, {name: "merge"}); | |
merge.text = "Merge"; | |
var fillBackground = group14.add("radiobutton", undefined, undefined, {name: "fillBackground"}); | |
fillBackground.text = "Fill Background"; | |
// GROUP13 | |
// ======= | |
var group13 = dialog.add("group", undefined, {name: "group13"}); | |
group13.orientation = "row"; | |
group13.alignChildren = ["left","center"]; | |
group13.spacing = 10; | |
group13.margins = 0; | |
group13.alignment = ["right","top"]; | |
var cancel = group13.add("button", undefined, undefined, {name: "cancel"}); | |
cancel.text = "Cancel"; | |
cancel.alignment = ["left","top"]; | |
var generate = group13.add("button", undefined, undefined, {name: "generate"}); | |
generate.text = "Generate"; | |
generate.alignment = ["left","bottom"]; | |
letter_caps.value = true; | |
pivot_center.value = true; | |
colors_all.value = true; | |
keep.value = true; | |
// Progress Dialog | |
var progress = new Window("palette", "Generating Letters...", undefined, {closeButton: false}); | |
progress.orientation = "column"; | |
progress.alignChildren = ["center","top"]; | |
progress.spacing = 10; | |
progress.margins = 16; | |
var group20 = progress.add("group", undefined, {name: "group20"}); | |
group20.orientation = "row"; | |
group20.alignChildren = ["left","center"]; | |
group20.spacing = 10; | |
group20.margins = 0; | |
group20.alignment = ["right","top"]; | |
var progressbar = group20.add("progressbar", undefined, undefined, undefined, undefined, {name: "progressbar"}); | |
progressbar.minvalue = 0; | |
progressbar.maxvalue = 100; | |
progressbar.value = 0; | |
progressbar.preferredSize.width = 256; | |
var percentage = group20.add("statictext", undefined, undefined, {name: "percentage"}); | |
percentage.text = "0%"; | |
percentage.preferredSize.width = 64; | |
generate.onClick = function() { | |
var settings = { | |
count: parseInt(letter_count_box.text), | |
font: ScriptUI.newFont(font_array[parseInt(font.selection)], font_bold.value ? (font_italic.value ? 3 : 1) : (font_italic.value ? 2 : 0), 12) | |
.toString().split(":")[0], | |
size: [parseFloat(letter_min_size_box.text), parseFloat(letter_max_size_box.text)], | |
letters: "", | |
position: position_random.value ? [{ x: parseFloat(position_from_x.text), y: parseFloat(position_from_y.text) }, | |
{ x: parseFloat(position_to_x.text), y: parseFloat(position_to_y.text) }] : | |
{ x: parseFloat(position_from_x.text), y: parseFloat(position_from_y.text) }, | |
rotation: rotation_random.value ? [ parseFloat(rotation_from.text) , parseFloat(rotation_to.text) ] : | |
parseFloat(rotation_from.text), | |
pivotCenter: pivot_center.value, | |
colors: {}, | |
grayscale: colors_gray.value, | |
rasterize: rasterize.value, | |
merge: merge.value, | |
fillBackground: fillBackground.value | |
} | |
var letterRegex = letter_numbers.value ? "0-9" : ""; | |
if (letter_caps.value) letterRegex += "A-Z"; | |
else if (letter_small.value) letterRegex += "a-z"; | |
else if (letter_mixed.value) letterRegex += "A-Za-z"; | |
else letterRegex = letter_custom_regex.text; | |
letterRegex = letterRegex.replace(/-/g, ""); | |
for (var i = 0; i < letterRegex.length; i += 2) { | |
if (i+1 >= letterRegex.length) letterRegex += letterRegex[i]; | |
else { | |
for (var c = letterRegex.charCodeAt(i); c < letterRegex.charCodeAt(i+1); c++) | |
settings.letters += String.fromCharCode(c); | |
} | |
} | |
if (colors_all.value) { | |
settings.colors.r = [0, 255]; | |
settings.colors.g = [0, 255]; | |
settings.colors.b = [0, 255]; | |
} | |
if (colors_mono.value) { | |
settings.colors.r = [0, 0]; | |
settings.colors.g = [0, 0]; | |
settings.colors.b = [0, 0]; | |
switch(colors_mono_color.selection) { | |
case "0": | |
settings.colors.r[1] = 255; | |
break; | |
case "1": | |
settings.colors.g[1] = 255; | |
break; | |
case "2": | |
settings.colors.b[1] = 255; | |
break; | |
} | |
} | |
if (colors_custom.value) { | |
settings.colors.r = [parseInt(colors_red_from_box.text), parseInt(colors_red_to_box.text)]; | |
settings.colors.g = [parseInt(colors_green_from_box.text), parseInt(colors_green_to_box.text)]; | |
settings.colors.b = [parseInt(colors_blue_from_box.text), parseInt(colors_blue_to_box.text)]; | |
settings.colors.a = [parseInt(colors_alpha_from_box.text), parseInt(colors_alpha_to_box.text)]; | |
} | |
dialog.close(); | |
progress.show(); | |
try { | |
generateLetters(settings); | |
} catch(e) { | |
alert("An Error occured: " + e.message); | |
} | |
progress.close(); | |
} | |
dialog.show(); | |
function generateLetters(settings) { | |
var layers = activeDocument.artLayers; | |
progressbar.maxvalue = settings.count; | |
if (settings.fillBackground || settings.merge) { | |
progressbar.maxvalue++; | |
var layer = layers.add(); | |
layer.name = "Random Letters"; | |
if (settings.fillBackground ) | |
activeDocument.selection.fill(backgroundColor ); | |
progressbar.value++; | |
} | |
for (var i = 0; i < settings.count; i++) { | |
var content = settings.letters[Math.floor(Math.random()*settings.letters.length)]; | |
var layer = layers.add(); | |
layer.kind = LayerKind.TEXT; | |
layer.textItem.name = content; | |
layer.textItem.contents = content; | |
layer.textItem.font = settings.font; | |
layer.textItem.size = Math.random()*(settings.size[1]-settings.size[0])+settings.size[0]; | |
if (typeof settings.rotation == "number") layer.rotate(settings.rotation, settings.pivotCenter ? AnchorPosition.MIDDLECENTER : AnchorPosition.TOPLEFT); | |
else layer.rotate((Math.random()*(settings.rotation[1] - settings.rotation[0]) + settings.rotation[0]), | |
settings.pivotCenter ? AnchorPosition.MIDDLECENTER : AnchorPosition.TOPLEFT); | |
var color = new SolidColor(); | |
if (settings.grayscale) { | |
color.rgb.red = color.rgb.green = color.rgb.blue = Math.round(Math.random()*255); | |
} else { | |
color.rgb.red = Math.round(Math.random()*(settings.colors.r[1] - settings.colors.r[0]) + settings.colors.r[0]); | |
color.rgb.green = Math.round(Math.random()*(settings.colors.g[1] - settings.colors.g[0]) + settings.colors.g[0]);; | |
color.rgb.blue = Math.round(Math.random()*(settings.colors.b[1] - settings.colors.b[0]) + settings.colors.b[0]);; | |
} | |
layer.textItem.color = color; | |
if (settings.colors.a) { | |
layer.opacity = Math.random()*(settings.colors.a[1]-settings.colors.a[0])+settings.colors.a[0]; | |
} | |
var bounds = [layer.bounds[0].as("px")*0.5+layer.bounds[2].as("px")*0.5, layer.bounds[1].as("px")*0.5+layer.bounds[3].as("px")*0.5]; | |
layer.translate(-bounds[0], -bounds[1]); | |
if (!(settings.position instanceof Array)) layer.translate(settings.position.x, settings.position.y); | |
else layer.translate(Math.random()*(settings.position[1].x - settings.position[0].x) + settings.position[0].x, | |
Math.random()*(settings.position[1].y - settings.position[0].y) + settings.position[0].y); | |
if (settings.rasterize || settings.merge || settings.fillBackground) layer.rasterize(RasterizeType.TEXTCONTENTS); | |
if (settings.merge || settings.fillBackground) layer.merge(); | |
progressbar.value++; | |
percentage = Math.round(i / settings.count * 100) + "%"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For an Example: https://imgur.com/a/3GmRVNH