572 lines
17 KiB
JavaScript
572 lines
17 KiB
JavaScript
var debugEl;
|
|
var hooks = [];
|
|
var layers = [];
|
|
var layer_increment = 0;
|
|
var presets = [];
|
|
var active = false;
|
|
|
|
presets[1] = '[[],[{"type":"text","shadow_color":"f5f500","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-1,"shadow_blur":4,"shadow_spread":0,"layer_name":"Yellow"},{"type":"text","shadow_color":"e07b00","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-4,"shadow_blur":8,"shadow_spread":0,"layer_name":"Orange"},{"type":"text","shadow_color":"ff1100","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-5,"shadow_blur":16,"shadow_spread":0,"layer_name":"Red"}]]';
|
|
presets[2] = '[[],[{"type":"text","shadow_color":"ff1cff","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":3,"shadow_spread":0,"layer_name":"Layer 0"},{"type":"text","shadow_color":"b314b3","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":7,"shadow_spread":0,"layer_name":"Layer 1"},{"type":"text","shadow_color":"850d85","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":10,"shadow_spread":0,"layer_name":"Layer 2"},{"type":"text","shadow_color":"470b47","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":16,"shadow_spread":0,"layer_name":"Layer 3"},{"type":"text","shadow_color":"290029","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":23,"shadow_spread":0,"layer_name":"Layer 4"}]]';
|
|
presets[3] = '[[],[{"type":"text","shadow_color":"7700ff","shadow_inset":false,"shadow_offset_x":1,"shadow_offset_y":1,"shadow_blur":0,"shadow_spread":0,"layer_name":"Layer 5"},{"type":"text","shadow_color":"0040ff","shadow_inset":false,"shadow_offset_x":1,"shadow_offset_y":-1,"shadow_blur":0,"shadow_spread":0,"layer_name":"Layer 6"},{"type":"text","shadow_color":"ff0048","shadow_inset":false,"shadow_offset_x":-1,"shadow_offset_y":-1,"shadow_blur":0,"shadow_spread":0,"layer_name":"Layer 7"},{"type":"text","shadow_color":"ffdd00","shadow_inset":false,"shadow_offset_x":-1,"shadow_offset_y":1,"shadow_blur":0,"shadow_spread":0,"layer_name":"Layer 8"}]]';
|
|
presets[4] = '[[{"type":"box","shadow_color":"d7e854","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":30,"shadow_spread":7,"layer_name":"Glow"},{"type":"box","shadow_color":"c0d900","shadow_inset":true,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":3,"shadow_spread":0,"layer_name":"Inner glow"}],[]]';
|
|
presets[5] = '[[{"type":"box","shadow_color":"0fa37e","shadow_inset":false,"shadow_offset_x":-3,"shadow_offset_y":0,"shadow_blur":6,"shadow_spread":0,"layer_name":"Layer 6"},{"type":"box","shadow_color":"ff0033","shadow_inset":false,"shadow_offset_x":3,"shadow_offset_y":3,"shadow_blur":6,"shadow_spread":0,"layer_name":"Layer 5"},{"type":"box","shadow_color":"ffea00","shadow_inset":false,"shadow_offset_x":3,"shadow_offset_y":-3,"shadow_blur":6,"shadow_spread":0,"layer_name":"Layer 7"}],[]]';
|
|
presets[6] = '[[{"type":"box","shadow_color":"000000","shadow_inset":true,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":11,"shadow_spread":1,"layer_name":"Layer 0"}],[{"type":"text","shadow_color":"000000","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":5,"shadow_spread":0,"layer_name":"Layer 1"}]]';
|
|
presets[7] = '[[],[{"type":"text","shadow_color":"85f5d9","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-1,"shadow_blur":4,"shadow_spread":0,"layer_name":"Light"},{"type":"text","shadow_color":"00ff8c","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-4,"shadow_blur":8,"shadow_spread":0,"layer_name":"Mid"},{"type":"text","shadow_color":"003369","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":-5,"shadow_blur":16,"shadow_spread":0,"layer_name":"Dark"}]]';
|
|
presets[8] = '[[],[{"type":"text","shadow_color":"938cc9","shadow_inset":false,"shadow_offset_x":12,"shadow_offset_y":12,"shadow_blur":11,"shadow_spread":0,"layer_name":"Layer 0"},{"type":"text","shadow_color":"80bbd6","shadow_inset":false,"shadow_offset_x":-15,"shadow_offset_y":2,"shadow_blur":16,"shadow_spread":0,"layer_name":"Layer 1"},{"type":"text","shadow_color":"3c48d6","shadow_inset":false,"shadow_offset_x":3,"shadow_offset_y":-4,"shadow_blur":22,"shadow_spread":0,"layer_name":"Layer 2"},{"type":"text","shadow_color":"a3edff","shadow_inset":false,"shadow_offset_x":-6,"shadow_offset_y":10,"shadow_blur":27,"shadow_spread":0,"layer_name":"Layer 3"},{"type":"text","shadow_color":"ffffff","shadow_inset":false,"shadow_offset_x":0,"shadow_offset_y":0,"shadow_blur":11,"shadow_spread":0,"layer_name":"Layer 43"}]]';
|
|
|
|
hooks['colorbutton_preview_background'] = function(hex, el){ $('#fieldset_preview').css({'background-color' : "#" + hex}); };
|
|
hooks['colorbutton_preview_box'] = function(hex, el){ $('#fieldset_preview textarea').css({'background-color' : "#" + hex}); };
|
|
hooks['colorbutton_preview_text'] = function(hex, el){ $('#fieldset_preview textarea').css({'color' : "#" + hex}); };
|
|
hooks['colorbutton_shadow_color'] = function(hex, el){ current_layer.shadow_color = "#" + hex; };
|
|
hooks['slider_blur'] = function(value){ current_layer.shadow_blur = value; };
|
|
hooks['slider_offset_x'] = function(value){ current_layer.shadow_offset_x = value; };
|
|
hooks['slider_offset_y'] = function(value){ current_layer.shadow_offset_y = value; };
|
|
hooks['slider_spread'] = function(value){ current_layer.shadow_spread = value; };
|
|
hooks['colorbutton_shadow_color'] = function(hex, el){ current_layer.shadow_color = hex; };
|
|
|
|
function ShadowLayer(is_text_layer)
|
|
{
|
|
if(is_text_layer == true)
|
|
{
|
|
this.type = "text";
|
|
}
|
|
else
|
|
{
|
|
this.type = "box";
|
|
}
|
|
|
|
this.shadow_color = "000000";
|
|
this.shadow_inset = false;
|
|
this.shadow_offset_x = 0;
|
|
this.shadow_offset_y = 0;
|
|
this.shadow_blur = 0;
|
|
this.shadow_spread = 0;
|
|
this.layer_name = "";
|
|
}
|
|
|
|
function initialize()
|
|
{
|
|
$('.colorfield .colorbutton').ColorPicker({
|
|
onSubmit: function(hsb, hex, rgb, el) {
|
|
var id_self = $(el).attr('id');
|
|
$(el).parent().children('input').val(hex);
|
|
$(el).css({'background-color': '#' + hex});
|
|
|
|
if(hooks[id_self])
|
|
{
|
|
hooks[id_self](hex, el);
|
|
update_preview();
|
|
}
|
|
},
|
|
onBeforeShow: function () {
|
|
$(this).ColorPickerSetColor($(this).parent().children('input').val());
|
|
},
|
|
onShow: function (colpkr) {
|
|
$(colpkr).fadeIn(500);
|
|
return false;
|
|
},
|
|
onHide: function (colpkr) {
|
|
$(colpkr).fadeOut(500);
|
|
return false;
|
|
}
|
|
})
|
|
.bind('keyup', function(){
|
|
$(this).ColorPickerSetColor($(this).parent().children('input').val());
|
|
});
|
|
|
|
$('.sortable').sortable({
|
|
placeholder: "listbox-item-placeholder",
|
|
containment: "parent",
|
|
distance: 8,
|
|
update: function(){
|
|
update_preview();
|
|
}
|
|
});
|
|
$('.sortable').disableSelection();
|
|
|
|
$('#setting_inset').buttonset();
|
|
|
|
$('.slider').slider({
|
|
slide: function(event, ui){
|
|
$(ui.handle).parent().parent().children('input').val(ui.value);
|
|
hooks[$(ui.handle).parent().attr('id')](ui.value); // Run the specified hook
|
|
update_preview();
|
|
},
|
|
min: 0,
|
|
max: 30,
|
|
|
|
});
|
|
|
|
$('.slider-negative').slider({
|
|
slide: function(event, ui){
|
|
$(ui.handle).parent().parent().children('input').val(ui.value);
|
|
hooks[$(ui.handle).parent().attr('id')](ui.value); // Run the specified hook
|
|
update_preview();
|
|
},
|
|
min: -30,
|
|
max: 30,
|
|
|
|
});
|
|
|
|
$('.slider-field').children('input').change(function(){
|
|
var slider_element = $(this).parent().children('.slider, .slider-negative');
|
|
slider_element.slider("value", $(this).val());
|
|
hooks[slider_element.attr('id')]($(this).val()); // Run the specified hook
|
|
update_preview();
|
|
});
|
|
|
|
$('#input_inset, #input_outset').change(function(){
|
|
//alert(0);
|
|
if($('#input_inset:checked').val() !== undefined)
|
|
{
|
|
current_layer.shadow_inset = true;
|
|
}
|
|
else
|
|
{
|
|
current_layer.shadow_inset = false;
|
|
}
|
|
|
|
update_preview();
|
|
});
|
|
|
|
$('#settings').hide();
|
|
|
|
rebind();
|
|
}
|
|
|
|
function rebind()
|
|
{
|
|
$('.listbox-item').click(function(){
|
|
|
|
var layer_id = $(this).children('.layer-id').text();
|
|
select_layer(layer_id)
|
|
});
|
|
}
|
|
|
|
function add_layer(is_text_layer)
|
|
{
|
|
if(is_text_layer == true)
|
|
{
|
|
var target = "#layers_text";
|
|
}
|
|
else
|
|
{
|
|
var target = "#layers_box";
|
|
}
|
|
|
|
var new_layer = new ShadowLayer(is_text_layer);
|
|
layers[layer_increment] = new_layer;
|
|
new_layer.layer_name = "Layer " + layer_increment;
|
|
$(target).append('<li><div class="listbox-item" id="layer_item_' + layer_increment + '"><img src="images/handle.png" class=\"handle\"> <span class="layer-id">' + layer_increment + '</span><span class="layer-title">' + new_layer.layer_name + '</span><div class="tools"><img src="images/rename.png" onclick="rename_layer(' + layer_increment + ');"><img src="images/delete.png" onclick="delete_layer(' + layer_increment + ');"></div></div></li>');
|
|
|
|
layer_increment += 1;
|
|
rebind();
|
|
|
|
select_layer(layer_increment - 1);
|
|
|
|
return layer_increment - 1;
|
|
}
|
|
|
|
function add_layer_text()
|
|
{
|
|
return add_layer(true);
|
|
}
|
|
|
|
function add_layer_box()
|
|
{
|
|
return add_layer(false);
|
|
}
|
|
|
|
function select_layer(id)
|
|
{
|
|
$('.listbox-item.selected').removeClass('selected');
|
|
$('#layer_item_' + id).addClass("selected");
|
|
|
|
current_layer = layers[id];
|
|
|
|
if(current_layer.type == "box")
|
|
{
|
|
$('#setting_inset').show();
|
|
$('#setting_spread').show();
|
|
}
|
|
else
|
|
{
|
|
$('#setting_inset').hide();
|
|
$('#setting_spread').hide();
|
|
}
|
|
|
|
$('#settings_placeholder').hide();
|
|
$('#settings').show();
|
|
|
|
load_layer();
|
|
}
|
|
|
|
|
|
function select_first()
|
|
{
|
|
var first_id = $('div.listbox-item:first').find('.layer-id').text();
|
|
if(first_id == "")
|
|
{
|
|
$('#settings_placeholder').show();
|
|
$('#settings').hide();
|
|
active = false;
|
|
}
|
|
else
|
|
{
|
|
select_layer(first_id);
|
|
}
|
|
}
|
|
|
|
function save_layers()
|
|
{
|
|
var save_object = [];
|
|
|
|
var entry_list = [];
|
|
|
|
$('#layers_box div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(working_layer);
|
|
});
|
|
|
|
save_object[0] = entry_list.slice(0);
|
|
|
|
var entry_list = [];
|
|
|
|
$('#layers_text div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(working_layer);
|
|
});
|
|
|
|
save_object[1] = entry_list.slice(0);
|
|
|
|
$('#dialog_save textarea').text($.toJSON(save_object));
|
|
|
|
$('#dialog_save').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
width: 500,
|
|
height: 280
|
|
});
|
|
}
|
|
|
|
function load_layers()
|
|
{
|
|
var data = $.evalJSON($('#dialog_load textarea').val());
|
|
parse_layers(data);
|
|
}
|
|
|
|
function parse_layers(jsondata)
|
|
{
|
|
confirm_clear_layers();
|
|
|
|
for(i in jsondata[0])
|
|
{
|
|
var new_id = add_layer_box();
|
|
layers[new_id] = jsondata[0][i];
|
|
}
|
|
|
|
for(i in jsondata[1])
|
|
{
|
|
var new_id = add_layer_text();
|
|
layers[new_id] = jsondata[1][i];
|
|
}
|
|
|
|
update_names();
|
|
select_first();
|
|
update_preview();
|
|
}
|
|
|
|
function load_layer()
|
|
{
|
|
$('#input_offset_x').val(current_layer.shadow_offset_x);
|
|
$('#slider_offset_x').slider("value", current_layer.shadow_offset_x);
|
|
$('#input_offset_y').val(current_layer.shadow_offset_y);
|
|
$('#slider_offset_y').slider("value", current_layer.shadow_offset_y);
|
|
$('#input_blur').val(current_layer.shadow_blur);
|
|
$('#slider_blur').slider("value", current_layer.shadow_blur);
|
|
$('#input_shadow_color').val(current_layer.shadow_color);
|
|
$('#colorbutton_shadow_color').css({'background-color': "#" + current_layer.shadow_color});
|
|
|
|
if(current_layer.type == "box")
|
|
{
|
|
$('#input_spread').val(current_layer.shadow_spread);
|
|
$('#slider_spread').slider("value", current_layer.shadow_spread);
|
|
|
|
if(current_layer.shadow_inset == true)
|
|
{
|
|
$('#input_inset').attr("checked","checked").button("refresh");
|
|
}
|
|
else
|
|
{
|
|
$('#input_outset').attr("checked","checked").button("refresh");
|
|
}
|
|
}
|
|
}
|
|
|
|
function delete_layer(id)
|
|
{
|
|
$('#dialog_confirm_deletion').find('.layer-name').text(layers[id].layer_name);
|
|
|
|
$('#dialog_confirm_deletion').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
buttons: {
|
|
"Delete layer": function(){
|
|
confirm_delete_layer(id);
|
|
$(this).dialog("close");
|
|
},
|
|
Cancel: function(){
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function confirm_delete_layer(id)
|
|
{
|
|
layers[id] = null;
|
|
$('#layer_item_' + id).parent().remove();
|
|
select_first();
|
|
update_preview();
|
|
}
|
|
|
|
function clear_layers()
|
|
{
|
|
$('#dialog_confirm_clear').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
buttons: {
|
|
"Clear layers": function(){
|
|
confirm_clear_layers();
|
|
$(this).dialog("close");
|
|
},
|
|
Cancel: function(){
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function confirm_clear_layers()
|
|
{
|
|
$('.listbox-item').parent().remove();
|
|
layers = [];
|
|
update_preview();
|
|
$('#settings').hide();
|
|
$('#settings_placeholder').show();
|
|
active = false;
|
|
}
|
|
|
|
function rename_layer(id)
|
|
{
|
|
$('#dialog_rename input').val(layers[id].layer_name);
|
|
|
|
$('#dialog_rename').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
width: 500,
|
|
height: 180,
|
|
buttons: {
|
|
"Rename": function(){
|
|
confirm_rename_layer(id);
|
|
$(this).dialog("close");
|
|
},
|
|
Cancel: function(){
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function confirm_rename_layer(id)
|
|
{
|
|
layers[id].layer_name = $('#dialog_rename input').val();
|
|
update_names();
|
|
}
|
|
|
|
function update_preview()
|
|
{
|
|
var entry_list = [];
|
|
|
|
$('#layers_box div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(generate_box_shadow_entry(working_layer.shadow_color,
|
|
working_layer.shadow_offset_x,
|
|
working_layer.shadow_offset_y,
|
|
working_layer.shadow_blur,
|
|
working_layer.shadow_spread,
|
|
working_layer.shadow_inset));
|
|
});
|
|
|
|
var css_box = entry_list.join(", ");
|
|
|
|
var entry_list = [];
|
|
|
|
$('#layers_text div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(generate_text_shadow_entry(working_layer.shadow_color,
|
|
working_layer.shadow_offset_x,
|
|
working_layer.shadow_offset_y,
|
|
working_layer.shadow_blur));
|
|
});
|
|
|
|
var css_text = entry_list.join(", ");
|
|
|
|
$('#preview').css({
|
|
'box-shadow': css_box,
|
|
'text-shadow': css_text
|
|
});
|
|
|
|
$('#preview').hide().show();
|
|
}
|
|
|
|
function update_names()
|
|
{
|
|
for(i in layers)
|
|
{
|
|
$('#layer_item_' + i).children('.layer-title').html(layers[i].layer_name);
|
|
}
|
|
}
|
|
|
|
function generate_code()
|
|
{
|
|
var css_lines = [];
|
|
|
|
var entry_list = [];
|
|
|
|
$('#layers_box div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(generate_box_shadow_entry(working_layer.shadow_color,
|
|
working_layer.shadow_offset_x,
|
|
working_layer.shadow_offset_y,
|
|
working_layer.shadow_blur,
|
|
working_layer.shadow_spread,
|
|
working_layer.shadow_inset));
|
|
});
|
|
|
|
if(entry_list.length > 0)
|
|
{
|
|
css_lines.push(generate_box_shadow_line("", entry_list));
|
|
css_lines.push(generate_box_shadow_line("webkit", entry_list));
|
|
css_lines.push(generate_box_shadow_line("moz", entry_list));
|
|
css_lines.push(generate_box_shadow_line("o", entry_list));
|
|
css_lines.push(generate_box_shadow_line("ms", entry_list));
|
|
}
|
|
|
|
var entry_list = [];
|
|
|
|
$('#layers_text div.listbox-item').each(function(index, el){
|
|
var layer_id = $(this).find('.layer-id').text();
|
|
var working_layer = layers[layer_id];
|
|
entry_list.push(generate_text_shadow_entry(working_layer.shadow_color,
|
|
working_layer.shadow_offset_x,
|
|
working_layer.shadow_offset_y,
|
|
working_layer.shadow_blur));
|
|
});
|
|
|
|
if(entry_list.length > 0)
|
|
{
|
|
css_lines.push(generate_text_shadow_line("", entry_list));
|
|
css_lines.push(generate_text_shadow_line("webkit", entry_list));
|
|
css_lines.push(generate_text_shadow_line("moz", entry_list));
|
|
css_lines.push(generate_text_shadow_line("o", entry_list));
|
|
css_lines.push(generate_text_shadow_line("ms", entry_list));
|
|
}
|
|
|
|
$('#dialog_code textarea').text(css_lines.join("\n")).enableSelection();
|
|
|
|
$('#dialog_code').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
width: 500,
|
|
height: 280
|
|
});
|
|
}
|
|
|
|
function generate_text_shadow_line(prefix, entries)
|
|
{
|
|
if(prefix)
|
|
{
|
|
prefix = "-" + prefix + "-";
|
|
}
|
|
|
|
return prefix + "text-shadow: " + entries.join(", ") + ";";
|
|
}
|
|
|
|
function generate_text_shadow_entry(color, offset_x, offset_y, blur)
|
|
{
|
|
return offset_x + "px " + offset_y + "px " + blur + "px #" + color;
|
|
}
|
|
|
|
function generate_box_shadow_line(prefix, entries)
|
|
{
|
|
if(prefix)
|
|
{
|
|
prefix = "-" + prefix + "-";
|
|
}
|
|
|
|
return prefix + "box-shadow: " + entries.join(", ") + ";";
|
|
}
|
|
|
|
function generate_box_shadow_entry(color, offset_x, offset_y, blur, spread, inset)
|
|
{
|
|
if(inset)
|
|
{
|
|
is_inset = " inset";
|
|
}
|
|
else
|
|
{
|
|
is_inset = "";
|
|
}
|
|
|
|
return offset_x + "px " + offset_y + "px " + blur + "px " + spread + "px #" + color + is_inset;
|
|
}
|
|
|
|
|
|
function dialog_load()
|
|
{
|
|
$('#dialog_load').dialog({
|
|
resizable: false,
|
|
modal: true,
|
|
width: 500,
|
|
height: 330,
|
|
buttons: {
|
|
"Load": function(){
|
|
load_layers();
|
|
$(this).dialog("close");
|
|
},
|
|
Cancel: function(){
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function dialog_presets()
|
|
{
|
|
$('#dialog_presets').dialog({
|
|
resizable: true,
|
|
modal: true,
|
|
width: 600,
|
|
height: 500,
|
|
buttons: {
|
|
Cancel: function(){
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function load_preset(id)
|
|
{
|
|
parse_layers($.evalJSON(presets[id]));
|
|
$('#dialog_presets').dialog("close");
|
|
}
|
|
|
|
$(function(){ initialize(); });
|