Version Description
- Fix: woocommerce checkout undefined class
- Improvement: woocommerce checkout color field rebuilt
- Improvement: removed unnecessary scripts
Download this release
Release Info
| Developer | quadlayers |
| Plugin | |
| Version | 4.4.6 |
| Comparing to | |
| See all releases | |
Code changes from version 4.4.5 to 4.4.6
- assets/css/wooccm.css.map +1 -0
- assets/js/wooccm-checkout.js +39 -33
- assets/js/wooccm-checkout.min.js +1 -1
- {includes/pickers/css → assets/old}/backend_css.css +0 -0
- {includes/templates/js → assets/old}/billing_script_wccs.js +0 -0
- {includes/templates/admin → assets/old}/edit-order-uploads-button_style.css +0 -0
- {includes/templates/admin → assets/old}/edit-order-uploads-file_editing_table.css +0 -0
- {includes/templates/js → assets/old}/script_wccs.js +0 -0
- {includes/templates/js → assets/old}/shipping_script_wccs.js +0 -0
- {includes/templates/admin → assets/old}/woocheckout-export.css +0 -0
- {includes/pickers → assets/timepicker}/i18n/i18n.html +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-cs.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-de.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-es.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-fr.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-hr.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-it.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-ja.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-nl.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-pl.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-pt.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-sl.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-sv.js +0 -0
- {includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-tr.js +0 -0
- {includes/pickers → assets/timepicker}/jquery.ui.timepicker.css +0 -0
- {includes/pickers → assets/timepicker}/jquery.ui.timepicker.js +0 -0
- changelog.txt +0 -25
- includes/admin.php +5 -5
- includes/pickers/caman/.codoopts +0 -5
- includes/pickers/caman/.npmignore +0 -5
- includes/pickers/caman/.travis.yml +0 -8
- includes/pickers/caman/Cakefile +0 -203
- includes/pickers/caman/LICENSE +0 -10
- includes/pickers/caman/README.md +0 -115
- includes/pickers/caman/adapters/jquery.js +0 -10
- includes/pickers/caman/api/LICENSE.html +0 -145
- includes/pickers/caman/api/README.md.html +0 -155
- includes/pickers/caman/api/assets/codo.css +0 -1
- includes/pickers/caman/api/assets/codo.js +0 -21
- includes/pickers/caman/api/assets/search_data.js +0 -1
- includes/pickers/caman/api/class_index.html +0 -432
- includes/pickers/caman/api/class_list.html +0 -142
- includes/pickers/caman/api/classes/Caman.html +0 -1509
- includes/pickers/caman/api/classes/Caman/Analyze.html +0 -197
- includes/pickers/caman/api/classes/Caman/Blender.html +0 -236
- includes/pickers/caman/api/classes/Caman/Calculate.html +0 -475
- includes/pickers/caman/api/classes/Caman/Convert.html +0 -1002
- includes/pickers/caman/api/classes/Caman/Event.html +0 -288
- includes/pickers/caman/api/classes/Caman/Filter.html +0 -186
- includes/pickers/caman/api/classes/Caman/IO.html +0 -378
- includes/pickers/caman/api/classes/Caman/Layer.html +0 -318
- includes/pickers/caman/api/classes/Caman/Logger.html +0 -165
- includes/pickers/caman/api/classes/Caman/Pixel.html +0 -379
- includes/pickers/caman/api/classes/Caman/Plugin.html +0 -181
- includes/pickers/caman/api/classes/Caman/Renderer.html +0 -385
- includes/pickers/caman/api/classes/Caman/Store.html +0 -233
- includes/pickers/caman/api/classes/CamanParser.html +0 -243
- includes/pickers/caman/api/classes/Module.html +0 -265
- includes/pickers/caman/api/classes/Util.html +0 -217
- includes/pickers/caman/api/extra_list.html +0 -33
- includes/pickers/caman/api/file_list.html +0 -126
- includes/pickers/caman/api/files/core/analyze.coffee.html +0 -135
- includes/pickers/caman/api/files/core/autoload.coffee.html +0 -162
- includes/pickers/caman/api/files/core/blender.coffee.html +0 -135
- includes/pickers/caman/api/files/core/calculate.coffee.html +0 -135
- includes/pickers/caman/api/files/core/caman.coffee.html +0 -135
- includes/pickers/caman/api/files/core/convert.coffee.html +0 -135
- includes/pickers/caman/api/files/core/event.coffee.html +0 -135
- includes/pickers/caman/api/files/core/filter.coffee.html +0 -135
- includes/pickers/caman/api/files/core/io.coffee.html +0 -245
- includes/pickers/caman/api/files/core/layer.coffee.html +0 -135
- includes/pickers/caman/api/files/core/pixel.coffee.html +0 -135
- includes/pickers/caman/api/files/core/plugin.coffee.html +0 -135
- includes/pickers/caman/api/files/core/renderer.coffee.html +0 -135
- includes/pickers/caman/api/files/core/store.coffee.html +0 -135
- includes/pickers/caman/api/files/core/util.coffee.html +0 -162
- includes/pickers/caman/api/index.html +0 -14
- includes/pickers/caman/api/method_list.html +0 -1035
- includes/pickers/caman/api/mixin_list.html +0 -28
- includes/pickers/caman/bower.json +0 -14
- includes/pickers/caman/dist/caman.css +0 -223
- includes/pickers/caman/dist/caman.full.js +0 -3676
- includes/pickers/caman/dist/caman.full.map +0 -1
- includes/pickers/caman/dist/caman.full.min.js +0 -251
- includes/pickers/caman/dist/caman.full.pack.js +0 -1
- includes/pickers/caman/dist/caman.js +0 -2578
- includes/pickers/caman/dist/caman.map +0 -1
- includes/pickers/caman/dist/caman.min.js +0 -205
- includes/pickers/caman/dist/caman.pack.js +0 -1
assets/css/wooccm.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
{"version":3,"sources":["../less/wooccm.less"],"names":[],"mappings":"AAAA;EACE,WAAA;;AACA,gBAAC;AACC,gBAAC;EACD,SAAQ,EAAR;EACA,cAAA;;AAEF,gBAAC;EACC,WAAA;;AAMF,OAAC;EACC,kBAAA;EACA,0BAAA;;AAFF,OAAC,iBAIC;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,YAAW,kBAAX;EACA,gBAAA;EACA,cAAA;EACA,eAAA;;AAMN;EACE,cAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,sBAAA;;AANF,kBAQE;EACE,aAAA;EACA,uBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,UAAA;EAEA,kBAAA;;AAhBJ,kBAQE,mBAWE;EACE,UAAA;EACA,kBAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,iBAAA;;AAnCN,kBAQE,mBA8BE;EACE,WAAA;EACA,gBAAA;;AAxCN,kBAQE,mBAmCE;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;;AAnDN,kBAQE,mBAmCE,mCAUE;EACE,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;;AAEA,kBAtDN,mBAmCE,mCAUE,MASG;EACC,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EAEA,gBAAA;EACA,YAAA;EACA,WAAA","file":"wooccm.css"}
|
assets/js/wooccm-checkout.js
CHANGED
|
@@ -17,12 +17,10 @@
|
|
| 17 |
var unblock = function ($node) {
|
| 18 |
$node.removeClass('processing').unblock();
|
| 19 |
};
|
| 20 |
-
|
| 21 |
var append_image = function (list, i, source, name, filetype) {
|
| 22 |
|
| 23 |
var $field_list = $(list),
|
| 24 |
source_class;
|
| 25 |
-
|
| 26 |
if (filetype.match('image.*')) {
|
| 27 |
source_class = 'image';
|
| 28 |
} else if (filetype.match('application/ms.*')) {
|
|
@@ -55,26 +53,21 @@
|
|
| 55 |
</span>\n\
|
| 56 |
</span>\n\
|
| 57 |
</span>';
|
| 58 |
-
|
| 59 |
$field_list.append(html).fadeIn();
|
| 60 |
-
|
| 61 |
}
|
| 62 |
|
| 63 |
|
| 64 |
-
|
| 65 |
-
|
| 66 |
|
| 67 |
var fileList = [];
|
| 68 |
-
|
| 69 |
$('.wooccmupload-field').each(function (i, field) {
|
| 70 |
|
| 71 |
var $field = $(field),
|
| 72 |
$button_file = $field.find('[type=file]'),
|
| 73 |
$button_click = $field.find('.wooccmupload_button'),
|
| 74 |
$field_list = $field.find('.wooccmupload_list');
|
| 75 |
-
|
| 76 |
fileList[$field.attr('id')] = [];
|
| 77 |
-
|
| 78 |
// Simulate click
|
| 79 |
// -------------------------------------------------------------------------
|
| 80 |
|
|
@@ -82,21 +75,18 @@
|
|
| 82 |
e.preventDefault();
|
| 83 |
$button_file.trigger('click');
|
| 84 |
});
|
| 85 |
-
|
| 86 |
// Delete images
|
| 87 |
// ---------------------------------------------------------------------------
|
| 88 |
|
| 89 |
$field_list.on('click', '.wooccmupload_file_delete', function (e) {
|
| 90 |
$(this).closest('.wooccmupload_file').remove();
|
| 91 |
});
|
| 92 |
-
|
| 93 |
// Append images
|
| 94 |
// -------------------------------------------------------------------------
|
| 95 |
|
| 96 |
$button_file.on('change', function (e) {
|
| 97 |
|
| 98 |
var files = $(this)[0].files;
|
| 99 |
-
|
| 100 |
if (files.length) {
|
| 101 |
|
| 102 |
if (window.FileReader) {
|
|
@@ -104,7 +94,6 @@
|
|
| 104 |
$.each(files, function (i, file) {
|
| 105 |
|
| 106 |
var count = $field_list.find('span[data-file_id]').length + i;
|
| 107 |
-
|
| 108 |
if (count >= wooccm.limit.max_files) {
|
| 109 |
alert('Exeeds max files limit of ' + wooccm.limit.max_files);
|
| 110 |
return false;
|
|
@@ -116,27 +105,21 @@
|
|
| 116 |
}
|
| 117 |
|
| 118 |
reader = new FileReader();
|
| 119 |
-
|
| 120 |
reader.onload = (function (theFile) {
|
| 121 |
return function (e) {
|
| 122 |
|
| 123 |
setTimeout(function () {
|
| 124 |
append_image($field_list, fileList[$field.attr('id')].push(file) - 1, e.target.result, theFile.name, theFile.type);
|
| 125 |
}, 200);
|
| 126 |
-
|
| 127 |
-
|
| 128 |
};
|
| 129 |
})(file);
|
| 130 |
-
|
| 131 |
console.log(file.name);
|
| 132 |
reader.readAsDataURL(file);
|
| 133 |
-
|
| 134 |
});
|
| 135 |
}
|
| 136 |
}
|
| 137 |
});
|
| 138 |
});
|
| 139 |
-
|
| 140 |
// Add class on place order reload if upload field exists
|
| 141 |
// ---------------------------------------------------------------------------
|
| 142 |
|
|
@@ -146,31 +129,27 @@
|
|
| 146 |
$place_order = $order_review.find('#place_order'),
|
| 147 |
$fields = $('.wooccmupload-field'),
|
| 148 |
fields = $fields.length;
|
| 149 |
-
|
| 150 |
if (fields) {
|
| 151 |
$place_order.addClass('wooccm-upload-process');
|
| 152 |
}
|
| 153 |
|
| 154 |
});
|
| 155 |
-
|
| 156 |
// Upload files
|
| 157 |
// ---------------------------------------------------------------------------
|
| 158 |
|
| 159 |
$(document).on('click', '#place_order.wooccm-upload-process', function (e) {
|
| 160 |
|
| 161 |
e.preventDefault();
|
| 162 |
-
|
| 163 |
var $form = $('form.checkout'),
|
| 164 |
$place_order = $(this),
|
| 165 |
$results = $('#wooccm_checkout_attachment_results'),
|
| 166 |
$fields = $('.wooccmupload-field'),
|
| 167 |
fields = $fields.length;
|
| 168 |
-
|
| 169 |
$fields.each(function (i, field) {
|
| 170 |
|
| 171 |
var $field = $(field),
|
| 172 |
$attachment_ids = $field.find('.wooccmupload_field'),
|
| 173 |
-
$field_list = $field.find('.wooccmupload_list')
|
| 174 |
|
| 175 |
if (window.FormData && fileList[$field.attr('id')].length) {
|
| 176 |
|
|
@@ -180,11 +159,9 @@
|
|
| 180 |
}
|
| 181 |
|
| 182 |
var data = new FormData();
|
| 183 |
-
|
| 184 |
$field_list.find('span[data-file_id]').each(function (i, file) {
|
| 185 |
|
| 186 |
var file_id = $(file).data('file_id');
|
| 187 |
-
|
| 188 |
if (i > wooccm.limit.max_files) {
|
| 189 |
console.log('Exeeds max files limit of ' + wooccm.limit.max_files);
|
| 190 |
return false;
|
|
@@ -201,16 +178,12 @@
|
|
| 201 |
}
|
| 202 |
|
| 203 |
console.log('We\'re ready to upload ' + fileList[$field.attr('id')][file_id].name);
|
| 204 |
-
|
| 205 |
data.append('wooccm_checkout_attachment_upload[]', fileList[$field.attr('id')][file_id]);
|
| 206 |
-
|
| 207 |
});
|
| 208 |
-
|
| 209 |
//return;
|
| 210 |
|
| 211 |
data.append('action', 'wooccm_checkout_attachment_upload');
|
| 212 |
data.append('nonce', wooccm.nonce);
|
| 213 |
-
|
| 214 |
$.ajax({
|
| 215 |
async: false,
|
| 216 |
url: wooccm.ajaxurl,
|
|
@@ -238,7 +211,6 @@
|
|
| 238 |
//console.log('ajax: fields = ' + fields);
|
| 239 |
}
|
| 240 |
});
|
| 241 |
-
|
| 242 |
} else {
|
| 243 |
fields = fields - 1;
|
| 244 |
//console.log('no ajax: fields = ' + fields);
|
|
@@ -257,13 +229,47 @@
|
|
| 257 |
//return false;
|
| 258 |
//}
|
| 259 |
});
|
| 260 |
-
|
| 261 |
-
|
| 262 |
// Update checkout fees
|
| 263 |
// ---------------------------------------------------------------------------
|
| 264 |
|
| 265 |
$(document).on('change', '.wooccm-add-checkout-fees', function (e) {
|
| 266 |
$('body').trigger('update_checkout');
|
| 267 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 268 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 269 |
})(jQuery);
|
| 17 |
var unblock = function ($node) {
|
| 18 |
$node.removeClass('processing').unblock();
|
| 19 |
};
|
|
|
|
| 20 |
var append_image = function (list, i, source, name, filetype) {
|
| 21 |
|
| 22 |
var $field_list = $(list),
|
| 23 |
source_class;
|
|
|
|
| 24 |
if (filetype.match('image.*')) {
|
| 25 |
source_class = 'image';
|
| 26 |
} else if (filetype.match('application/ms.*')) {
|
| 53 |
</span>\n\
|
| 54 |
</span>\n\
|
| 55 |
</span>';
|
|
|
|
| 56 |
$field_list.append(html).fadeIn();
|
|
|
|
| 57 |
}
|
| 58 |
|
| 59 |
|
| 60 |
+
// Field
|
| 61 |
+
// ---------------------------------------------------------------------------
|
| 62 |
|
| 63 |
var fileList = [];
|
|
|
|
| 64 |
$('.wooccmupload-field').each(function (i, field) {
|
| 65 |
|
| 66 |
var $field = $(field),
|
| 67 |
$button_file = $field.find('[type=file]'),
|
| 68 |
$button_click = $field.find('.wooccmupload_button'),
|
| 69 |
$field_list = $field.find('.wooccmupload_list');
|
|
|
|
| 70 |
fileList[$field.attr('id')] = [];
|
|
|
|
| 71 |
// Simulate click
|
| 72 |
// -------------------------------------------------------------------------
|
| 73 |
|
| 75 |
e.preventDefault();
|
| 76 |
$button_file.trigger('click');
|
| 77 |
});
|
|
|
|
| 78 |
// Delete images
|
| 79 |
// ---------------------------------------------------------------------------
|
| 80 |
|
| 81 |
$field_list.on('click', '.wooccmupload_file_delete', function (e) {
|
| 82 |
$(this).closest('.wooccmupload_file').remove();
|
| 83 |
});
|
|
|
|
| 84 |
// Append images
|
| 85 |
// -------------------------------------------------------------------------
|
| 86 |
|
| 87 |
$button_file.on('change', function (e) {
|
| 88 |
|
| 89 |
var files = $(this)[0].files;
|
|
|
|
| 90 |
if (files.length) {
|
| 91 |
|
| 92 |
if (window.FileReader) {
|
| 94 |
$.each(files, function (i, file) {
|
| 95 |
|
| 96 |
var count = $field_list.find('span[data-file_id]').length + i;
|
|
|
|
| 97 |
if (count >= wooccm.limit.max_files) {
|
| 98 |
alert('Exeeds max files limit of ' + wooccm.limit.max_files);
|
| 99 |
return false;
|
| 105 |
}
|
| 106 |
|
| 107 |
reader = new FileReader();
|
|
|
|
| 108 |
reader.onload = (function (theFile) {
|
| 109 |
return function (e) {
|
| 110 |
|
| 111 |
setTimeout(function () {
|
| 112 |
append_image($field_list, fileList[$field.attr('id')].push(file) - 1, e.target.result, theFile.name, theFile.type);
|
| 113 |
}, 200);
|
|
|
|
|
|
|
| 114 |
};
|
| 115 |
})(file);
|
|
|
|
| 116 |
console.log(file.name);
|
| 117 |
reader.readAsDataURL(file);
|
|
|
|
| 118 |
});
|
| 119 |
}
|
| 120 |
}
|
| 121 |
});
|
| 122 |
});
|
|
|
|
| 123 |
// Add class on place order reload if upload field exists
|
| 124 |
// ---------------------------------------------------------------------------
|
| 125 |
|
| 129 |
$place_order = $order_review.find('#place_order'),
|
| 130 |
$fields = $('.wooccmupload-field'),
|
| 131 |
fields = $fields.length;
|
|
|
|
| 132 |
if (fields) {
|
| 133 |
$place_order.addClass('wooccm-upload-process');
|
| 134 |
}
|
| 135 |
|
| 136 |
});
|
|
|
|
| 137 |
// Upload files
|
| 138 |
// ---------------------------------------------------------------------------
|
| 139 |
|
| 140 |
$(document).on('click', '#place_order.wooccm-upload-process', function (e) {
|
| 141 |
|
| 142 |
e.preventDefault();
|
|
|
|
| 143 |
var $form = $('form.checkout'),
|
| 144 |
$place_order = $(this),
|
| 145 |
$results = $('#wooccm_checkout_attachment_results'),
|
| 146 |
$fields = $('.wooccmupload-field'),
|
| 147 |
fields = $fields.length;
|
|
|
|
| 148 |
$fields.each(function (i, field) {
|
| 149 |
|
| 150 |
var $field = $(field),
|
| 151 |
$attachment_ids = $field.find('.wooccmupload_field'),
|
| 152 |
+
$field_list = $field.find('.wooccmupload_list'); //,
|
| 153 |
|
| 154 |
if (window.FormData && fileList[$field.attr('id')].length) {
|
| 155 |
|
| 159 |
}
|
| 160 |
|
| 161 |
var data = new FormData();
|
|
|
|
| 162 |
$field_list.find('span[data-file_id]').each(function (i, file) {
|
| 163 |
|
| 164 |
var file_id = $(file).data('file_id');
|
|
|
|
| 165 |
if (i > wooccm.limit.max_files) {
|
| 166 |
console.log('Exeeds max files limit of ' + wooccm.limit.max_files);
|
| 167 |
return false;
|
| 178 |
}
|
| 179 |
|
| 180 |
console.log('We\'re ready to upload ' + fileList[$field.attr('id')][file_id].name);
|
|
|
|
| 181 |
data.append('wooccm_checkout_attachment_upload[]', fileList[$field.attr('id')][file_id]);
|
|
|
|
| 182 |
});
|
|
|
|
| 183 |
//return;
|
| 184 |
|
| 185 |
data.append('action', 'wooccm_checkout_attachment_upload');
|
| 186 |
data.append('nonce', wooccm.nonce);
|
|
|
|
| 187 |
$.ajax({
|
| 188 |
async: false,
|
| 189 |
url: wooccm.ajaxurl,
|
| 211 |
//console.log('ajax: fields = ' + fields);
|
| 212 |
}
|
| 213 |
});
|
|
|
|
| 214 |
} else {
|
| 215 |
fields = fields - 1;
|
| 216 |
//console.log('no ajax: fields = ' + fields);
|
| 229 |
//return false;
|
| 230 |
//}
|
| 231 |
});
|
|
|
|
|
|
|
| 232 |
// Update checkout fees
|
| 233 |
// ---------------------------------------------------------------------------
|
| 234 |
|
| 235 |
$(document).on('change', '.wooccm-add-checkout-fees', function (e) {
|
| 236 |
$('body').trigger('update_checkout');
|
| 237 |
});
|
| 238 |
+
// Color fields
|
| 239 |
+
// ---------------------------------------------------------------------------
|
| 240 |
+
|
| 241 |
+
$('.wooccm-colorpicker-farbtastic').each(function (i, field) {
|
| 242 |
+
|
| 243 |
+
var $field = $(field),
|
| 244 |
+
$input = $field.find('input[type=text]'),
|
| 245 |
+
$container = $field.find('.wooccmcolorpicker_container');
|
| 246 |
+
$input.hide();
|
| 247 |
+
if ($.isFunction($.fn.farbtastic)) {
|
| 248 |
+
$container.farbtastic('#' + $input.attr('id'));
|
| 249 |
+
$container.on('click', function (e) {
|
| 250 |
+
$input.fadeIn();
|
| 251 |
+
});
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
});
|
| 255 |
+
$('.wooccm-colorpicker-iris').each(function (i, field) {
|
| 256 |
|
| 257 |
+
var $field = $(field),
|
| 258 |
+
$input = $field.find('input[type=text]'),
|
| 259 |
+
$container = $field.find('.wooccmcolorpicker_container');
|
| 260 |
+
|
| 261 |
+
$input.css('color', '#fff').css('background', $input.val()).hide();
|
| 262 |
+
|
| 263 |
+
$input.iris({
|
| 264 |
+
wccmclass: $input.attr('id'),
|
| 265 |
+
palettes: true,
|
| 266 |
+
color: '',
|
| 267 |
+
hide: false,
|
| 268 |
+
change: function (event, ui) {
|
| 269 |
+
$input.css('color', '#000').css('background', ui.color.toString()).fadeIn();
|
| 270 |
+
}
|
| 271 |
+
});
|
| 272 |
+
|
| 273 |
+
//$input.wpColorPicker();
|
| 274 |
+
});
|
| 275 |
})(jQuery);
|
assets/js/wooccm-checkout.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
(function(d){var e=function(g){return g.is(".processing")||g.parents(".processing").length};var f=function(g){if(!e(g)){g.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:0.6}})}};var a=function(g){g.removeClass("processing").unblock()};var c=function(m,k,l,g,j){var n=d(m),o;if(j.match("image.*")){o="image"}else{if(j.match("application/ms.*")){l=wooccm.icons.spreadsheet;o="spreadsheet"}else{if(j.match("application/x.*")){l=wooccm.icons.archive;o="application"}else{if(j.match("audio.*")){l=wooccm.icons.audio;o="audio"}else{if(j.match("text.*")){l=wooccm.icons.text;o="text"}else{if(j.match("video.*")){l=wooccm.icons.video;o="video"}else{l=wooccm.icons.interactive;o="interactive"}}}}}}var h='<span data-file_id="'+k+'" title="'+g+'" class="wooccmupload_file">\n <span class="wooccmupload_file_container">\n <a title="'+g+'" class="wooccmupload_file_delete" class="wooccm_dele wooccm-btn wooccm-btn-danger">×</a>\n <span class="wooccmupload_file_image_container">\n <img class="'+o+'" alt="'+g+'" src="'+l+'"/>\n </span>\n </span>\n </span>';n.append(h).fadeIn()};var b=[];d(".wooccmupload-field").each(function(h,l){var j=d(l),k=j.find("[type=file]"),g=j.find(".wooccmupload_button"),m=j.find(".wooccmupload_list");b[j.attr("id")]=[];g.on("click",function(i){i.preventDefault();k.trigger("click")});m.on("click",".wooccmupload_file_delete",function(i){d(this).closest(".wooccmupload_file").remove()});k.on("change",function(n){var i=d(this)[0].files;if(i.length){if(window.FileReader){d.each(i,function(p,o){var q=m.find("span[data-file_id]").length+p;if(q>=wooccm.limit.max_files){alert("Exeeds max files limit of "+wooccm.limit.max_files);return false}if(o.size>wooccm.limit.max_file_size){alert("Exeeds max file size of "+wooccm.limit.max_file_size);return true}reader=new FileReader();reader.onload=(function(r){return function(s){setTimeout(function(){c(m,b[j.attr("id")].push(o)-1,s.target.result,r.name,r.type)},200)}})(o);console.log(o.name);reader.readAsDataURL(o)})}}})});d("#order_review").on("ajaxSuccess",function(k){var j=d(k.target),i=j.find("#place_order"),h=d(".wooccmupload-field"),g=h.length;if(g){i.addClass("wooccm-upload-process")}});d(document).on("click","#place_order.wooccm-upload-process",function(l){l.preventDefault();var i=d("form.checkout"),k=d(this),h=d("#wooccm_checkout_attachment_results"),j=d(".wooccmupload-field"),g=j.length;j.each(function(m,p){var n=d(p),r=n.find(".wooccmupload_field"),q=n.find(".wooccmupload_list");if(window.FormData&&b[n.attr("id")].length){if(!e(i)){k.html(wooccm.uploading);f(i)}var o=new FormData();q.find("span[data-file_id]").each(function(t,s){var u=d(s).data("file_id");if(t>wooccm.limit.max_files){console.log("Exeeds max files limit of "+wooccm.limit.max_files);return false}if(b[n.attr("id")][u]===undefined){console.log("Undefined "+u);return true}if(b[n.attr("id")][u].size>wooccm.limit.max_file_size){console.log("Exeeds max file size of "+wooccm.limit.max_files);return true}console.log("We're ready to upload "+b[n.attr("id")][u].name);o.append("wooccm_checkout_attachment_upload[]",b[n.attr("id")][u])});o.append("action","wooccm_checkout_attachment_upload");o.append("nonce",wooccm.nonce);d.ajax({async:false,url:wooccm.ajaxurl,type:"POST",cache:false,data:o,processData:false,contentType:false,beforeSend:function(s){},success:function(s){h.removeClass("woocommerce-message");if(s.success){r.val(s.data)}else{d("body").trigger("update_checkout")}},complete:function(s){g=g-1}})}else{g=g-1}if(g==0){a(i);k.removeClass("wooccm-upload-process").trigger("click")}})});d(document).on("change",".wooccm-add-checkout-fees",function(g){d("body").trigger("update_checkout")})})(jQuery);
|
| 1 |
+
(function(d){var e=function(g){return g.is(".processing")||g.parents(".processing").length};var f=function(g){if(!e(g)){g.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:0.6}})}};var a=function(g){g.removeClass("processing").unblock()};var c=function(m,k,l,g,j){var n=d(m),o;if(j.match("image.*")){o="image"}else{if(j.match("application/ms.*")){l=wooccm.icons.spreadsheet;o="spreadsheet"}else{if(j.match("application/x.*")){l=wooccm.icons.archive;o="application"}else{if(j.match("audio.*")){l=wooccm.icons.audio;o="audio"}else{if(j.match("text.*")){l=wooccm.icons.text;o="text"}else{if(j.match("video.*")){l=wooccm.icons.video;o="video"}else{l=wooccm.icons.interactive;o="interactive"}}}}}}var h='<span data-file_id="'+k+'" title="'+g+'" class="wooccmupload_file">\n <span class="wooccmupload_file_container">\n <a title="'+g+'" class="wooccmupload_file_delete" class="wooccm_dele wooccm-btn wooccm-btn-danger">×</a>\n <span class="wooccmupload_file_image_container">\n <img class="'+o+'" alt="'+g+'" src="'+l+'"/>\n </span>\n </span>\n </span>';n.append(h).fadeIn()};var b=[];d(".wooccmupload-field").each(function(h,l){var j=d(l),k=j.find("[type=file]"),g=j.find(".wooccmupload_button"),m=j.find(".wooccmupload_list");b[j.attr("id")]=[];g.on("click",function(i){i.preventDefault();k.trigger("click")});m.on("click",".wooccmupload_file_delete",function(i){d(this).closest(".wooccmupload_file").remove()});k.on("change",function(n){var i=d(this)[0].files;if(i.length){if(window.FileReader){d.each(i,function(p,o){var q=m.find("span[data-file_id]").length+p;if(q>=wooccm.limit.max_files){alert("Exeeds max files limit of "+wooccm.limit.max_files);return false}if(o.size>wooccm.limit.max_file_size){alert("Exeeds max file size of "+wooccm.limit.max_file_size);return true}reader=new FileReader();reader.onload=(function(r){return function(s){setTimeout(function(){c(m,b[j.attr("id")].push(o)-1,s.target.result,r.name,r.type)},200)}})(o);console.log(o.name);reader.readAsDataURL(o)})}}})});d("#order_review").on("ajaxSuccess",function(k){var j=d(k.target),i=j.find("#place_order"),h=d(".wooccmupload-field"),g=h.length;if(g){i.addClass("wooccm-upload-process")}});d(document).on("click","#place_order.wooccm-upload-process",function(l){l.preventDefault();var i=d("form.checkout"),k=d(this),h=d("#wooccm_checkout_attachment_results"),j=d(".wooccmupload-field"),g=j.length;j.each(function(m,p){var n=d(p),r=n.find(".wooccmupload_field"),q=n.find(".wooccmupload_list");if(window.FormData&&b[n.attr("id")].length){if(!e(i)){k.html(wooccm.uploading);f(i)}var o=new FormData();q.find("span[data-file_id]").each(function(t,s){var u=d(s).data("file_id");if(t>wooccm.limit.max_files){console.log("Exeeds max files limit of "+wooccm.limit.max_files);return false}if(b[n.attr("id")][u]===undefined){console.log("Undefined "+u);return true}if(b[n.attr("id")][u].size>wooccm.limit.max_file_size){console.log("Exeeds max file size of "+wooccm.limit.max_files);return true}console.log("We're ready to upload "+b[n.attr("id")][u].name);o.append("wooccm_checkout_attachment_upload[]",b[n.attr("id")][u])});o.append("action","wooccm_checkout_attachment_upload");o.append("nonce",wooccm.nonce);d.ajax({async:false,url:wooccm.ajaxurl,type:"POST",cache:false,data:o,processData:false,contentType:false,beforeSend:function(s){},success:function(s){h.removeClass("woocommerce-message");if(s.success){r.val(s.data)}else{d("body").trigger("update_checkout")}},complete:function(s){g=g-1}})}else{g=g-1}if(g==0){a(i);k.removeClass("wooccm-upload-process").trigger("click")}})});d(document).on("change",".wooccm-add-checkout-fees",function(g){d("body").trigger("update_checkout")});d(".wooccm-colorpicker-farbtastic").each(function(g,j){var h=d(j),l=h.find("input[type=text]"),k=h.find(".wooccmcolorpicker_container");l.hide();if(d.isFunction(d.fn.farbtastic)){k.farbtastic("#"+l.attr("id"));k.on("click",function(i){l.fadeIn()})}});d(".wooccm-colorpicker-iris").each(function(g,j){var h=d(j),l=h.find("input[type=text]"),k=h.find(".wooccmcolorpicker_container");l.css("color","#fff").css("background",l.val()).hide();l.iris({wccmclass:l.attr("id"),palettes:true,color:"",hide:false,change:function(i,m){l.css("color","#000").css("background",m.color.toString()).fadeIn()}})})})(jQuery);
|
{includes/pickers/css → assets/old}/backend_css.css
RENAMED
|
File without changes
|
{includes/templates/js → assets/old}/billing_script_wccs.js
RENAMED
|
File without changes
|
{includes/templates/admin → assets/old}/edit-order-uploads-button_style.css
RENAMED
|
File without changes
|
{includes/templates/admin → assets/old}/edit-order-uploads-file_editing_table.css
RENAMED
|
File without changes
|
{includes/templates/js → assets/old}/script_wccs.js
RENAMED
|
File without changes
|
{includes/templates/js → assets/old}/shipping_script_wccs.js
RENAMED
|
File without changes
|
{includes/templates/admin → assets/old}/woocheckout-export.css
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/i18n.html
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-cs.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-de.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-es.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-fr.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-hr.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-it.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-ja.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-nl.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-pl.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-pt.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-sl.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-sv.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/i18n/jquery.ui.timepicker-tr.js
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/jquery.ui.timepicker.css
RENAMED
|
File without changes
|
{includes/pickers → assets/timepicker}/jquery.ui.timepicker.js
RENAMED
|
File without changes
|
changelog.txt
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
Fifteen ( 15 ) fields types included: Text Input, Text Area, Password, Radio Button, Check Box, Select Options, Date Picker, Time Picker, Color Picker, Heading, Multi-Select, Multi-Checkbox, Country, State, File Picker.
|
| 2 |
-
|
| 3 |
-
Compatible with WPML, WooCommerce Print Invoice & Delivery Note, Store Exporter Deluxe, WooCommerce Order/Customer CSV Export.
|
| 4 |
-
|
| 5 |
-
Sort Orders by Field Name.
|
| 6 |
-
Export Orders by Field Name.
|
| 7 |
-
|
| 8 |
-
Create fields to remove tax
|
| 9 |
-
Create fields to add additional amount
|
| 10 |
-
Display Payment Method and Shipping Method used by customer.
|
| 11 |
-
Disable any added field from Checkout details page and Order Receipt.
|
| 12 |
-
|
| 13 |
-
DatePicker: Change the default format (dd-mm-yy), Set Minimum Date and Maximum Date, Disable days in the week (Sun – Sat).
|
| 14 |
-
TimePicker: Includes restriction of both start and end hours, set the minutes interval and manually input labels.
|
| 15 |
-
Display Order Time.
|
| 16 |
-
|
| 17 |
-
Re-position the added fields: Before Shipping Form, After Shipping Form, Before Billing Form, After Billing Form or After Order Notes
|
| 18 |
-
|
| 19 |
-
= 4.4.0 Beta =
|
| 20 |
-
* Improvement: woocommerce order upload rebuilt
|
| 21 |
-
* Improvement: woocommerce checkout upload rebuilt
|
| 22 |
-
* Improvement: woocommerce order admin upload rebuilt
|
| 23 |
-
* Improvement: woocommerce register fields rebuilt
|
| 24 |
-
* Improvement: woocommerce register fields rebuilt
|
| 25 |
-
* Fix: woocommerce checkout additional fields required
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin.php
CHANGED
|
@@ -90,15 +90,15 @@ function wooccm_admin_enqueue_scripts($hook_suffix) {
|
|
| 90 |
wp_enqueue_style('farbtastic');
|
| 91 |
// @mod - We need to check that farbtastic exists
|
| 92 |
wp_enqueue_script('farbtastic', site_url('/wp-admin/js/farbtastic.js'));
|
| 93 |
-
wp_enqueue_style('wooccm-backend-css', plugins_url('
|
| 94 |
-
wp_enqueue_script('script_wccs', plugins_url('
|
| 95 |
-
wp_enqueue_script('billing_script_wccs', plugins_url('
|
| 96 |
-
wp_enqueue_script('shipping_script_wccs', plugins_url('
|
| 97 |
if (wp_script_is('jquery-ui-sortable', 'queue') == false)
|
| 98 |
wp_enqueue_script('jquery-ui-sortable');
|
| 99 |
}
|
| 100 |
if ($hook_suffix === 'woocheckout_page_wooccm-advance-export') {
|
| 101 |
-
wp_enqueue_style('export', plugins_url('
|
| 102 |
}
|
| 103 |
}
|
| 104 |
|
| 90 |
wp_enqueue_style('farbtastic');
|
| 91 |
// @mod - We need to check that farbtastic exists
|
| 92 |
wp_enqueue_script('farbtastic', site_url('/wp-admin/js/farbtastic.js'));
|
| 93 |
+
wp_enqueue_style('wooccm-backend-css', plugins_url('assets/old/backend_css.css', WOOCCM_PLUGIN_FILE));
|
| 94 |
+
wp_enqueue_script('script_wccs', plugins_url('assets/old/script_wccs.js', WOOCCM_PLUGIN_FILE), array('jquery'), '1.2');
|
| 95 |
+
wp_enqueue_script('billing_script_wccs', plugins_url('assets/old/billing_script_wccs.js', WOOCCM_PLUGIN_FILE), array('jquery'), '1.2');
|
| 96 |
+
wp_enqueue_script('shipping_script_wccs', plugins_url('assets/old/shipping_script_wccs.js', WOOCCM_PLUGIN_FILE), array('jquery'), '1.2');
|
| 97 |
if (wp_script_is('jquery-ui-sortable', 'queue') == false)
|
| 98 |
wp_enqueue_script('jquery-ui-sortable');
|
| 99 |
}
|
| 100 |
if ($hook_suffix === 'woocheckout_page_wooccm-advance-export') {
|
| 101 |
+
wp_enqueue_style('export', plugins_url('assets/old/woocheckout-export.css', WOOCCM_PLUGIN_FILE));
|
| 102 |
}
|
| 103 |
}
|
| 104 |
|
includes/pickers/caman/.codoopts
DELETED
|
@@ -1,5 +0,0 @@
|
|
| 1 |
-
--name "CamanJS"
|
| 2 |
-
--readme README.md
|
| 3 |
-
--title "CamanJS Documentation"
|
| 4 |
-
--output-dir ./api
|
| 5 |
-
./src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/.npmignore
DELETED
|
@@ -1,5 +0,0 @@
|
|
| 1 |
-
adapters/
|
| 2 |
-
docs/
|
| 3 |
-
examples/
|
| 4 |
-
src/
|
| 5 |
-
test/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/.travis.yml
DELETED
|
@@ -1,8 +0,0 @@
|
|
| 1 |
-
language: node_js
|
| 2 |
-
env: TRAVISCI=true
|
| 3 |
-
node_js:
|
| 4 |
-
- "0.10"
|
| 5 |
-
- "0.8"
|
| 6 |
-
before_script:
|
| 7 |
-
- export DISPLAY=:99.0
|
| 8 |
-
- sh -e /etc/init.d/xvfb start
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/Cakefile
DELETED
|
@@ -1,203 +0,0 @@
|
|
| 1 |
-
fs = require 'fs'
|
| 2 |
-
{exec} = require 'child_process'
|
| 3 |
-
util = require 'util'
|
| 4 |
-
{jsmin} = require 'jsmin'
|
| 5 |
-
|
| 6 |
-
try
|
| 7 |
-
packer = require 'packer'
|
| 8 |
-
catch err
|
| 9 |
-
packer = null
|
| 10 |
-
|
| 11 |
-
targetName = "caman"
|
| 12 |
-
|
| 13 |
-
###
|
| 14 |
-
CoffeeScript Options
|
| 15 |
-
###
|
| 16 |
-
csSrcDir = "src"
|
| 17 |
-
csTargetDir = "dist"
|
| 18 |
-
|
| 19 |
-
targetCoffee = "#{csTargetDir}/caman"
|
| 20 |
-
|
| 21 |
-
targetCoreJS = "#{csTargetDir}/#{targetName}.js"
|
| 22 |
-
targetCoreMinJS = "#{csTargetDir}/#{targetName}.min.js"
|
| 23 |
-
targetCorePackJS = "#{csTargetDir}/#{targetName}.pack.js"
|
| 24 |
-
coffeeCoreOpts = "-j #{targetName}.js -o #{csTargetDir}"
|
| 25 |
-
|
| 26 |
-
targetFullJS = "#{csTargetDir}/#{targetName}.full.js"
|
| 27 |
-
targetFullMinJS = "#{csTargetDir}/#{targetName}.full.min.js"
|
| 28 |
-
targetFullPackJS = "#{csTargetDir}/#{targetName}.full.pack.js"
|
| 29 |
-
coffeeFullOpts = "-j #{targetName}.full.js -o #{csTargetDir}"
|
| 30 |
-
|
| 31 |
-
# All source files listed in include order
|
| 32 |
-
coffeeFiles = [
|
| 33 |
-
"core/module"
|
| 34 |
-
"core/util"
|
| 35 |
-
|
| 36 |
-
# Core library
|
| 37 |
-
"core/caman"
|
| 38 |
-
|
| 39 |
-
# Everything else
|
| 40 |
-
"core/analyze"
|
| 41 |
-
"core/autoload"
|
| 42 |
-
"core/blender"
|
| 43 |
-
"core/calculate"
|
| 44 |
-
"core/convert"
|
| 45 |
-
"core/event"
|
| 46 |
-
"core/filter"
|
| 47 |
-
"core/io"
|
| 48 |
-
"core/layer"
|
| 49 |
-
"core/logger"
|
| 50 |
-
"core/pixel"
|
| 51 |
-
"core/plugin"
|
| 52 |
-
"core/renderer"
|
| 53 |
-
"core/store"
|
| 54 |
-
|
| 55 |
-
# Non-core files
|
| 56 |
-
"lib/blenders"
|
| 57 |
-
"lib/filters"
|
| 58 |
-
"lib/size"
|
| 59 |
-
]
|
| 60 |
-
|
| 61 |
-
pluginsFolder = "src/plugins/src"
|
| 62 |
-
|
| 63 |
-
###
|
| 64 |
-
Event System
|
| 65 |
-
###
|
| 66 |
-
finishedCallback = {}
|
| 67 |
-
finished = (type) ->
|
| 68 |
-
finishedCallback[type]() if finishedCallback[type]?
|
| 69 |
-
|
| 70 |
-
finishListener = (type, cb) ->
|
| 71 |
-
finishedCallback[type] = cb
|
| 72 |
-
|
| 73 |
-
getPlugins = ->
|
| 74 |
-
content = ""
|
| 75 |
-
|
| 76 |
-
util.log "Gathering plugin files in #{pluginsFolder}"
|
| 77 |
-
pluginFiles = fs.readdirSync pluginsFolder
|
| 78 |
-
|
| 79 |
-
util.log "Discovered #{pluginFiles.length} plugins"
|
| 80 |
-
for plugin in pluginFiles
|
| 81 |
-
continue if fs.statSync("#{pluginsFolder}/#{plugin}").isDirectory()
|
| 82 |
-
content += fs.readFileSync("#{pluginsFolder}/#{plugin}", "utf8") + "\n\n"
|
| 83 |
-
|
| 84 |
-
return content
|
| 85 |
-
|
| 86 |
-
###
|
| 87 |
-
Tasks
|
| 88 |
-
###
|
| 89 |
-
task 'docs', 'Generates documentation for the coffee files', ->
|
| 90 |
-
util.log 'Invoking docco on the source files'
|
| 91 |
-
|
| 92 |
-
files = []
|
| 93 |
-
files[i] = "src/#{coffeeFiles[i]}.coffee" for i in [0...coffeeFiles.length]
|
| 94 |
-
|
| 95 |
-
pluginFiles = fs.readdirSync pluginsFolder
|
| 96 |
-
for plugin in pluginFiles
|
| 97 |
-
continue if fs.statSync("#{pluginsFolder}/#{plugin}").isDirectory()
|
| 98 |
-
files.push "#{pluginsFolder}/#{plugin}"
|
| 99 |
-
|
| 100 |
-
exec "node_modules/docco/bin/docco -l parallel #{files.join(' ')}", (err, stdout, stderr) ->
|
| 101 |
-
util.log err if err
|
| 102 |
-
util.log "Documentation built into the docs/ folder."
|
| 103 |
-
|
| 104 |
-
util.log 'Invoking codo on the source files'
|
| 105 |
-
exec "node_modules/codo/bin/codo", (err, stdout, stderr) ->
|
| 106 |
-
util.log err if err
|
| 107 |
-
util.log "API reference built into the api/ folder."
|
| 108 |
-
console.log stdout
|
| 109 |
-
|
| 110 |
-
option '-d', '--docs', 'Automatically recompile documentation (used with watch)'
|
| 111 |
-
task 'watch', 'Automatically recompile the CoffeeScript files when updated', (options) ->
|
| 112 |
-
util.log "Watching for changes in #{csSrcDir}"
|
| 113 |
-
util.log "Automatically recompiling documentation!" if options.docs
|
| 114 |
-
|
| 115 |
-
for jsFile in coffeeFiles then do (jsFile) ->
|
| 116 |
-
fs.watchFile "#{csSrcDir}/#{jsFile}.coffee", (curr, prev) ->
|
| 117 |
-
if +curr.mtime isnt +prev.mtime
|
| 118 |
-
util.log "#{csSrcDir}/#{jsFile}.coffee updated"
|
| 119 |
-
invoke 'build'
|
| 120 |
-
invoke 'docs' if options.docs
|
| 121 |
-
|
| 122 |
-
task 'build', 'Compile and minify all CoffeeScript source files', ->
|
| 123 |
-
finishListener 'js', -> invoke 'minify'
|
| 124 |
-
invoke 'compile'
|
| 125 |
-
|
| 126 |
-
option '-m', '--map', 'Compile with source maps'
|
| 127 |
-
task 'compile', 'Compile all CoffeeScript source files', (options) ->
|
| 128 |
-
util.log "Building #{targetCoreJS} and #{targetFullJS}"
|
| 129 |
-
contents = []
|
| 130 |
-
remaining = coffeeFiles.length
|
| 131 |
-
|
| 132 |
-
util.log "Appending #{coffeeFiles.length} files to #{targetCoffee}.coffee"
|
| 133 |
-
|
| 134 |
-
for file, index in coffeeFiles then do (file, index) ->
|
| 135 |
-
fs.readFile "#{csSrcDir}/#{file}.coffee", "utf8", (err, fileContents) ->
|
| 136 |
-
util.log err if err
|
| 137 |
-
|
| 138 |
-
contents[index] = fileContents
|
| 139 |
-
util.log "[#{index + 1}] #{file}.coffee"
|
| 140 |
-
process() if --remaining is 0
|
| 141 |
-
|
| 142 |
-
process = ->
|
| 143 |
-
core = contents.join("\n\n")
|
| 144 |
-
full = core + "\n\n" + getPlugins()
|
| 145 |
-
|
| 146 |
-
if options.map
|
| 147 |
-
util.log "Source map support enabled"
|
| 148 |
-
coreOpts = "#{coffeeCoreOpts} -m #{targetCoffee}.coffee"
|
| 149 |
-
fullOpts = "#{coffeeFullOpts} -m #{targetCoffee}.full.coffee"
|
| 150 |
-
else
|
| 151 |
-
coreOpts = "#{coffeeCoreOpts} -c #{targetCoffee}.coffee"
|
| 152 |
-
fullOpts = "#{coffeeFullOpts} -c #{targetCoffee}.full.coffee"
|
| 153 |
-
|
| 154 |
-
fs.writeFile "#{targetCoffee}.coffee", core, "utf8", (err) ->
|
| 155 |
-
util.log err if err
|
| 156 |
-
|
| 157 |
-
exec "coffee #{coreOpts}", (err, stdout, stderr) ->
|
| 158 |
-
util.log err if err
|
| 159 |
-
util.log "Compiled #{targetCoreJS}"
|
| 160 |
-
|
| 161 |
-
if options.map
|
| 162 |
-
map = JSON.parse fs.readFileSync("#{targetCoffee}.map")
|
| 163 |
-
map.sources = ["caman.coffee"]
|
| 164 |
-
fs.writeFileSync "#{targetCoffee}.map", JSON.stringify(map)
|
| 165 |
-
|
| 166 |
-
fs.writeFile "#{targetCoffee}.full.coffee", full, "utf8", (err) ->
|
| 167 |
-
util.log err if err
|
| 168 |
-
|
| 169 |
-
exec "coffee #{fullOpts}", (err, stdout, stderr) ->
|
| 170 |
-
util.log err if err
|
| 171 |
-
util.log "Compiled #{targetFullJS}"
|
| 172 |
-
|
| 173 |
-
if options.map
|
| 174 |
-
map = JSON.parse fs.readFileSync("#{targetCoffee}.full.map")
|
| 175 |
-
map.sources = ["caman.full.coffee"]
|
| 176 |
-
fs.writeFileSync "#{targetCoffee}.full.map", JSON.stringify(map)
|
| 177 |
-
|
| 178 |
-
# if not err
|
| 179 |
-
# fs.unlink "#{targetCoffee}.full.coffee", (err) -> util.log err if err
|
| 180 |
-
|
| 181 |
-
finished('js')
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
task 'minify', 'Minify the CoffeeScript files', ->
|
| 185 |
-
util.log "Minifying #{targetCoreJS}"
|
| 186 |
-
fs.readFile targetCoreJS, "utf8", (err, contents) ->
|
| 187 |
-
fs.writeFile targetCoreMinJS, jsmin(contents), "utf8", (err) ->
|
| 188 |
-
util.log err if err
|
| 189 |
-
|
| 190 |
-
if packer
|
| 191 |
-
util.log "Packing #{targetCoreJS}"
|
| 192 |
-
fs.writeFile targetCorePackJS, packer.pack(contents, true), "utf8", (err) ->
|
| 193 |
-
util.log err if err
|
| 194 |
-
|
| 195 |
-
util.log "Minifying #{targetFullJS}"
|
| 196 |
-
fs.readFile targetFullJS, "utf8", (err, contents) ->
|
| 197 |
-
fs.writeFile targetFullMinJS, jsmin(contents), "utf8", (err) ->
|
| 198 |
-
util.log err if err
|
| 199 |
-
|
| 200 |
-
if packer
|
| 201 |
-
util.log "Packing #{targetFullJS}"
|
| 202 |
-
fs.writeFile targetFullPackJS, packer.pack(contents, true), "utf8", (err) ->
|
| 203 |
-
util.log err if err
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/LICENSE
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
Copyright (c) 2010-2014, Ryan LeFevre
|
| 2 |
-
All rights reserved.
|
| 3 |
-
|
| 4 |
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
| 5 |
-
|
| 6 |
-
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
| 7 |
-
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
| 8 |
-
* Neither the name of Ryan LeFevre nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
| 9 |
-
|
| 10 |
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/README.md
DELETED
|
@@ -1,115 +0,0 @@
|
|
| 1 |
-
# About the Project
|
| 2 |
-
|
| 3 |
-
[](http://travis-ci.org/meltingice/CamanJS)
|
| 4 |
-
|
| 5 |
-
The main focus of CamanJS is manipulating images using the HTML5 canvas and Javascript. It's a combination of a simple-to-use interface with advanced and efficient image/canvas editing techniques. It is also completely library independent and can be safely used next to jQuery, YUI, Scriptaculous, MooTools, etc.
|
| 6 |
-
|
| 7 |
-
CamanJS is very easy to extend with new filters and plugins, and it comes with a wide array of image editing functionality, which is only growing as the community makes more plugins. All features that are not a part of the core CamanJS library are in a [separate plugins repository](https://github.com/meltingice/CamanJS-Plugins).
|
| 8 |
-
|
| 9 |
-
For more information, I highly recommend taking a look at the [official website](http://camanjs.com) where there is more comprehensive documentation and interactive demos. You can also [read the wiki](https://github.com/meltingice/CamanJS/wiki) for some basic information about the project and how to use it.
|
| 10 |
-
|
| 11 |
-
CamanJS is written in [Coffeescript](http://coffeescript.org) as of version 3.0. **It works both in-browser and in NodeJS.**
|
| 12 |
-
|
| 13 |
-
CamanJS is a project that I work on in purely my own spare time. If you would like to pitch in a beer or donate to say thanks, my Bitcoin address is: 1EVNQ7FiWDaqpfYXRLCtgMe5RBcz3kEuAG
|
| 14 |
-
|
| 15 |
-
## Usage
|
| 16 |
-
|
| 17 |
-
Include one of the versions in the `dist/` folder, then you can run:
|
| 18 |
-
|
| 19 |
-
```js
|
| 20 |
-
Caman("#image-id", function () {
|
| 21 |
-
this.brightness(10);
|
| 22 |
-
this.contrast(20);
|
| 23 |
-
this.render(function () {
|
| 24 |
-
alert("Done!");
|
| 25 |
-
});
|
| 26 |
-
});
|
| 27 |
-
```
|
| 28 |
-
|
| 29 |
-
Caman also supports modifying images via the `data-caman` HTML attribute. Simply separate each instruction with a space. Images with the `data-caman` attribute will automatically be modified at page load.
|
| 30 |
-
|
| 31 |
-
```html
|
| 32 |
-
<img data-caman="saturation(-10) brightness(20) vignette('10%')" src="path/to/image.jpg">
|
| 33 |
-
```
|
| 34 |
-
|
| 35 |
-
### HiDPI Support
|
| 36 |
-
|
| 37 |
-
Version 4 introduces better support for HiDPI (Retina) displays. It allows you to specify a higher resolution replacement using HTML data attributes. Keep in mind, however, that higher resolution images take longer to render.
|
| 38 |
-
|
| 39 |
-
**HTML data attributes**
|
| 40 |
-
|
| 41 |
-
* `data-caman-hidpi`: URL to the high resolution replacement image
|
| 42 |
-
* `data-caman-hidpi-disabled`: HiDPI support is enabled by default, so add this attribute if you wish to force disable it
|
| 43 |
-
|
| 44 |
-
## Upgrading to Version 4
|
| 45 |
-
|
| 46 |
-
There is only 1 breaking change that occured with the version 4 release. When you initialize CamanJS with a canvas and an image, the parameter order has changed. It is now:
|
| 47 |
-
|
| 48 |
-
``` javascript
|
| 49 |
-
Caman("#canvas-id", "/path/to/image.png", function() {});
|
| 50 |
-
```
|
| 51 |
-
|
| 52 |
-
This is in order to be more consistent with initialization, such that the "initialization object" is always the first parameter. Update your code accordingly.
|
| 53 |
-
|
| 54 |
-
## Development
|
| 55 |
-
|
| 56 |
-
If you are a developer who is contributing directly to the project, there are some tools to help you out.
|
| 57 |
-
|
| 58 |
-
### Building
|
| 59 |
-
|
| 60 |
-
To install all dependencies required for development, run `npm install -d`.
|
| 61 |
-
|
| 62 |
-
Because all plugins are in a separate repository, make sure you run:
|
| 63 |
-
|
| 64 |
-
```
|
| 65 |
-
git submodule init && git submodule update
|
| 66 |
-
```
|
| 67 |
-
|
| 68 |
-
To build, simply run `cake build`. The resulting files will be placed in the dist/ folder. Plugins will be automatically discovered and added to caman.full.js after the core library. You can also auto-compile when a file changes by using `cake watch`.
|
| 69 |
-
|
| 70 |
-
If you add any files to the core library, you will need to add them to the `coffeeFiles` array in the Cakefile. The point of this is so that order is preserved when generating the file JS file. Plugins do not need to be added to the Cakefile.
|
| 71 |
-
|
| 72 |
-
You will probably want to generate documentation if you make any changes. In addition to the normal requirements, you will also need the Python library Pygments.
|
| 73 |
-
|
| 74 |
-
To generate the documentation, run `cake docs`.
|
| 75 |
-
|
| 76 |
-
## CDN JS Hosting
|
| 77 |
-
|
| 78 |
-
CamanJS is hosted on CDN JS if you're looking for a CDN hosting solution. It is the full and minified version of the library, which means all plugins are included. Simply load CamanJS directly from [this URL](http://cdnjs.cloudflare.com/ajax/libs/camanjs/3.3.0/caman.full.min.js) for usage on your site.
|
| 79 |
-
|
| 80 |
-
## NodeJS Compatibility
|
| 81 |
-
|
| 82 |
-
CamanJS is fully compatible with NodeJS. The easiest way to install it is:
|
| 83 |
-
|
| 84 |
-
```
|
| 85 |
-
npm install caman
|
| 86 |
-
```
|
| 87 |
-
|
| 88 |
-
**Saving from NodeJS**
|
| 89 |
-
|
| 90 |
-
To save your modified image in NodeJS, simply call the save() function **after** rendering is finished by passing a callback function to `render()`. Trying to save before rendering is finished will cause issues.
|
| 91 |
-
|
| 92 |
-
``` javascript
|
| 93 |
-
Caman = require('caman').Caman;
|
| 94 |
-
|
| 95 |
-
Caman("./path/to/file.jpg", function () {
|
| 96 |
-
this.brightness(40);
|
| 97 |
-
this.render(function () {
|
| 98 |
-
this.save("./output.png");
|
| 99 |
-
});
|
| 100 |
-
});
|
| 101 |
-
```
|
| 102 |
-
|
| 103 |
-
## Testing
|
| 104 |
-
|
| 105 |
-
Tests for CamanJS run both in NodeJS and the browser.
|
| 106 |
-
|
| 107 |
-
### NodeJS
|
| 108 |
-
|
| 109 |
-
The NodeJS tests use mocha as the test runner. The simplest way to run the test suite is by running `npm test`.
|
| 110 |
-
|
| 111 |
-
### Browser
|
| 112 |
-
|
| 113 |
-
The browser tests are run by Karma. It will start up Chrome, Firefox, and Safari (if running OSX) in the background. You can minimize each of these browsers if desired. It will automatically run tests after CamanJS is recompiled by the Cakefile as well.
|
| 114 |
-
|
| 115 |
-
You can run Karma by running `karma start`, or you can do a single run with the NodeJS tests by running `npm test`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/adapters/jquery.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
* jQuery plugin adapter for CamanJS
|
| 3 |
-
*/
|
| 4 |
-
if (window.jQuery) {
|
| 5 |
-
window.jQuery.fn.caman = function (callback) {
|
| 6 |
-
return this.each(function () {
|
| 7 |
-
Caman(this, callback);
|
| 8 |
-
});
|
| 9 |
-
};
|
| 10 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/LICENSE.html
DELETED
|
@@ -1,145 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path=''></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>LICENSE</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<nav class='toc'>
|
| 108 |
-
<p class='title'>
|
| 109 |
-
<a class='hide_toc' href='#'>
|
| 110 |
-
<strong>Table of Contents</strong>
|
| 111 |
-
</a>
|
| 112 |
-
<small>
|
| 113 |
-
(<a class='float_toc' href='#'>left</a>)
|
| 114 |
-
</small>
|
| 115 |
-
</p>
|
| 116 |
-
</nav>
|
| 117 |
-
<div id='filecontents'>
|
| 118 |
-
Copyright (c) 2010, Ryan LeFevre
|
| 119 |
-
All rights reserved.
|
| 120 |
-
|
| 121 |
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
| 122 |
-
|
| 123 |
-
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
| 124 |
-
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
| 125 |
-
* Neither the name of Ryan LeFevre nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
| 126 |
-
|
| 127 |
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 128 |
-
</div>
|
| 129 |
-
</div>
|
| 130 |
-
<div id='footer'>
|
| 131 |
-
Generated on
|
| 132 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 133 |
-
by
|
| 134 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 135 |
-
v1.7.0
|
| 136 |
-
(Node.js v0.10.21).
|
| 137 |
-
✲
|
| 138 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 139 |
-
✲
|
| 140 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 141 |
-
✲
|
| 142 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 143 |
-
</div>
|
| 144 |
-
</body>
|
| 145 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/README.md.html
DELETED
|
@@ -1,155 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path=''></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>README.md</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<nav class='toc'>
|
| 108 |
-
<p class='title'>
|
| 109 |
-
<a class='hide_toc' href='#'>
|
| 110 |
-
<strong>Table of Contents</strong>
|
| 111 |
-
</a>
|
| 112 |
-
<small>
|
| 113 |
-
(<a class='float_toc' href='#'>left</a>)
|
| 114 |
-
</small>
|
| 115 |
-
</p>
|
| 116 |
-
</nav>
|
| 117 |
-
<div id='filecontents'>
|
| 118 |
-
<h1>About the Project</h1><p><a href="http://travis-ci.org/meltingice/CamanJS"><img src="https://secure.travis-ci.org/meltingice/CamanJS.png" alt="Build Status"></a></p><p>The main focus of CamanJS is manipulating images using the HTML5 canvas and Javascript. It's a combination of a simple-to-use interface with advanced and efficient image/canvas editing techniques. It is also completely library independent and can be safely used next to jQuery, YUI, Scriptaculous, MooTools, etc.</p><p>CamanJS is very easy to extend with new filters and plugins, and it comes with a wide array of image editing functionality, which is only growing as the community makes more plugins. All features that are not a part of the core CamanJS library are in a <a href="https://github.com/meltingice/CamanJS-Plugins">separate plugins repository</a>.</p><p>For more information, I highly recommend taking a look at the <a href="http://camanjs.com">official website</a> where there is more comprehensive documentation and interactive demos. You can also <a href="https://github.com/meltingice/CamanJS/wiki">read the wiki</a> for some basic information about the project and how to use it.</p><p>CamanJS is written in <a href="http://coffeescript.org">Coffeescript</a> as of version 3.0. <strong>It works both in-browser and in NodeJS.</strong></p><h2>Usage</h2><p>Include one of the versions in the <code>dist/</code> folder, then you can run:</p><pre><code class="lang-js">Caman("#image-id", function () {
|
| 119 |
-
this.brightness(10);
|
| 120 |
-
this.contrast(20);
|
| 121 |
-
this.render(function () {
|
| 122 |
-
alert("Done!");
|
| 123 |
-
});
|
| 124 |
-
});</code></pre><p>Caman also supports modifying images via the <code>data-caman</code> HTML attribute. Simply separate each instruction with a space. Images with the <code>data-caman</code> attribute will automatically be modified at page load.</p><pre><code class="lang-html"><img data-caman="saturation(-10) brightness(20) vignette('10%')" src="path/to/image.jpg"></code></pre>
|
| 125 |
-
<h3>HiDPI Support</h3><p>Version 4 introduces better support for HiDPI (Retina) displays. It allows you to specify a higher resolution replacement using HTML data attributes. Keep in mind, however, that higher resolution images take longer to render.</p><p><strong>HTML data attributes</strong></p><ul>
|
| 126 |
-
<li><code>data-caman-hidpi</code>: URL to the high resolution replacement image</li>
|
| 127 |
-
<li><code>data-caman-hidpi-disabled</code>: HiDPI support is enabled by default, so add this attribute if you wish to force disable it</li>
|
| 128 |
-
</ul>
|
| 129 |
-
<h2>Upgrading to Version 4</h2><p>There is only 1 breaking change that occured with the version 4 release. When you initialize CamanJS with a canvas and an image, the parameter order has changed. It is now:</p><pre><code class="lang-javascript">Caman("#canvas-id", "/path/to/image.png", function() {});</code></pre><p>This is in order to be more consistent with initialization, such that the "initialization object" is always the first parameter. Update your code accordingly.</p><h2>Development</h2><p>If you are a developer who is contributing directly to the project, there are some tools to help you out.</p><h3>Building</h3><p>To install all dependencies required for development, run <code>npm install -d</code>.</p><p>Because all plugins are in a separate repository, make sure you run:</p><pre><code>git submodule init && git submodule update</code></pre><p>To build, simply run <code>cake build</code>. The resulting files will be placed in the dist/ folder. Plugins will be automatically discovered and added to caman.full.js after the core library. You can also auto-compile when a file changes by using <code>cake watch</code>.</p><p>If you add any files to the core library, you will need to add them to the <code>coffeeFiles</code> array in the Cakefile. The point of this is so that order is preserved when generating the file JS file. Plugins do not need to be added to the Cakefile.</p><p>You will probably want to generate documentation if you make any changes. In addition to the normal requirements, you will also need the Python library Pygments.</p><p>To generate the documentation, run <code>cake docs</code>.</p><h2>CDN JS Hosting</h2><p>CamanJS is hosted on CDN JS if you're looking for a CDN hosting solution. It is the full and minified version of the library, which means all plugins are included. Simply load CamanJS directly from <a href="http://cdnjs.cloudflare.com/ajax/libs/camanjs/3.3.0/caman.full.min.js">this URL</a> for usage on your site.</p><h2>NodeJS Compatibility</h2><p>CamanJS is fully compatible with NodeJS. The easiest way to install it is:</p><pre><code>npm install caman</code></pre><p><strong>Saving from NodeJS</strong></p><p>To save your modified image in NodeJS, simply call the save() function <strong>after</strong> rendering is finished by passing a callback function to <code>render()</code>. Trying to save before rendering is finished will cause issues.</p><pre><code class="lang-javascript">Caman = require('caman').Caman;
|
| 130 |
-
|
| 131 |
-
Caman("./path/to/file.jpg", function () {
|
| 132 |
-
this.brightness(40);
|
| 133 |
-
this.render(function () {
|
| 134 |
-
this.save("./output.png");
|
| 135 |
-
});
|
| 136 |
-
});</code></pre>
|
| 137 |
-
<h2>Testing</h2><p>Tests for CamanJS run both in NodeJS and the browser.</p><h3>NodeJS</h3><p>The NodeJS tests use mocha as the test runner. The simplest way to run the test suite is by running <code>npm test</code>.</p><h3>Browser</h3><p>The browser tests are run by Karma. It will start up Chrome, Firefox, and Safari (if running OSX) in the background. You can minimize each of these browsers if desired. It will automatically run tests after CamanJS is recompiled by the Cakefile as well.</p><p>You can run Karma by running <code>karma start</code>, or you can do a single run with the NodeJS tests by running <code>npm test</code>.</p>
|
| 138 |
-
</div>
|
| 139 |
-
</div>
|
| 140 |
-
<div id='footer'>
|
| 141 |
-
Generated on
|
| 142 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 143 |
-
by
|
| 144 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 145 |
-
v1.7.0
|
| 146 |
-
(Node.js v0.10.21).
|
| 147 |
-
✲
|
| 148 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 149 |
-
✲
|
| 150 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 151 |
-
✲
|
| 152 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 153 |
-
</div>
|
| 154 |
-
</body>
|
| 155 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/assets/codo.css
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
body{padding:0 5px;font-family:"Lucida Sans","Lucida Grande",Verdana,Arial,sans-serif;font-size:13px}h1{font-size:25px;margin:.8em 0 .5em;padding-top:4px;border-top:1px dotted #d5d5d5}h2{padding:0;padding-bottom:3px;border-bottom:1px #aaa solid;font-size:1.4em;margin:1.8em 0 .5em}#base{display:none}#fuzzySearch{-webkit-box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;-moz-box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px;border-radius:10px;position:fixed;z-index:8000;left:0;right:0;top:25px;width:500px;height:45px;margin:0 auto;display:none;padding:25px;background-color:#fff}#fuzzySearch input{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;width:485px;border:2px solid #05a;font-size:20px;padding:5px}#fuzzySearch ol{list-style-type:none;margin:10px 0 0 0;padding:0}#fuzzySearch ol li{padding:3px}#fuzzySearch ol li.stripe{background:#F0F0F0}#fuzzySearch ol li.selected{background:#05a}#fuzzySearch ol li.selected a{color:#fff}#fuzzySearch ol li.selected a:visited{color:#fff}#fuzzySearch ol li.selected a:hover{color:#05a}#fuzzySearch ol li.selected a span{color:#05a}#fuzzySearch ol li a{color:#05a;font-size:18px;text-decoration:none}#fuzzySearch ol li a:visited{color:#05a}#fuzzySearch ol li a:hover{background:#ffffa5}#fuzzySearch ol li a span{background-color:#ff0}#fuzzySearch ol li small{font-size:14px;padding-left:10px;color:#888}#help{-webkit-box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;-moz-box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;box-shadow:rgba(0,0,0,0.5) 0 10px 30px 10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px;border-radius:10px;position:fixed;z-index:8000;left:0;right:0;top:50%;width:500px;height:525px;margin:0 auto;margin-top:-262px;display:none;padding:25px;background-color:#fff}#help ul{list-style-type:none;margin:0;padding:0}#help ul li{height:35px;font-weight:bold}#help ul li span{-webkit-box-shadow:rgba(0,0,0,0.5) 1px 1px 2px;-moz-box-shadow:rgba(0,0,0,0.5) 1px 1px 2px;box-shadow:rgba(0,0,0,0.5) 1px 1px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;display:block;float:left;width:50px;padding:5px;margin-right:20px;background:#eee;text-align:center}#content a:link,#content a:visited{text-decoration:none;color:#05a}#content a:hover{background:#ffffa5}#content #filecontents img{border:0}#content #filecontents li{line-height:25px}#content #filecontents table{padding:0;border-collapse:collapse;border-spacing:0}#content #filecontents table tr{border-top:1px solid #CCC;background-color:white;margin:0;padding:0}#content #filecontents table tr td{border:1px solid #CCC;text-align:left;margin:0;padding:6px 13px}#content table.box{font-size:1em;line-height:2;border-spacing:0;border-collapse:collapse}#content table.box tr{background-color:#fff}#content table.box tr:first-child{background-color:#EEE}#content table.box tr td{border:1px solid #AAA}#content table.box tr td:first-child{width:100px;padding-right:10px;text-align:right;font-weight:bold}#content table.box tr td:last-child{min-width:420px;padding-left:10px;padding-right:10px}#content h1 .note,#content li .note,#content .properties .note{font-weight:normal;padding:3px 5px;position:relative;top:-3px;text-transform:capitalize;display:inline}#content h1 .note{font-size:.5em}#content li .note{top:0;font-size:.9em}#content .properties .note{top:0;font-size:.85em}#content ul.summary,#content .properties{list-style:none;font-family:monospace;font-size:1em;line-height:1.5em}#content ul.summary li,#content .properties li{margin-bottom:5px}#content ul.summary .signature,#content .properties .signature{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:1px 10px;color:#05A;background:#EAEAFF;border:1px solid #DFDFE5}#content ul.summary .signature a:hover,#content .properties .signature a:hover{background:transparent}#content ul.summary li[deprecated] .signature,#content .properties li[deprecated] .signature{text-decoration:line-through}#content ul.summary .signature+.note.title,#content .properties .signature+.note.title{margin-left:7px}#content ul.summary .desc,#content .properties .desc{margin-left:32px;display:block;font-family:sans-serif}#content ul.summary .desc p,#content .properties .desc p{padding:0;margin:0}#content dl.constants dt{font-weight:bold}#content dl.constants,#content dl.properties{margin-left:40px}#content dl.constants dt,#content dl.properties dt{font-size:1.1em;margin-bottom:5px}#content dl.constants dt .docstring,#content dl.properties dt .docstring{margin-left:32px;font-size:.9em;font-weight:normal}#content dl.constants dd,#content dl.properties dd{margin-bottom:18px}#content .method_details{border-top:1px dotted #AAA;margin-top:15px;padding-top:0}#content .method_details:first-child{border:none}#content .method_details p.signature{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;font-size:1.1em;font-weight:normal;font-family:Monaco,Consolas,Courier,monospace;padding:6px 10px;margin-top:18px;background:#E5E8FF;border:1px solid #D8D8E5}#content .tags{font-size:13px}#content .tags h3{font-size:1em;margin-bottom:3px}#content .tags ul{margin-top:0;padding-left:30px;list-style:square}#content .tags ul .name{font-family:monospace;font-weight:bold}#content .tags .overloads h3{margin-bottom:0}#content .tags .overloads .overload{margin-left:20px}#content .tags .overloads .overload p.signature{padding-top:2px;padding-bottom:2px}#content .note{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;margin-top:10px;color:#222;background:#E3E4E3;border:1px solid #D5D5D5;padding:7px 10px;display:block}#content .deprecated{background:#FFE5E5;border-color:#E9DADA}#content .writeonly{background:#d3ff97;border-color:#c3eb8b}#content .readonly{background:#FFE5E5;border-color:#E9DADA}#content .bound{background:#d3ff97;border-color:#c3eb8b}#content .todo{background:#FFFFC5;border-color:#ECECAA}#content .private{background:#D5D5D5;border-color:#C5C5C5}#content .constructor{color:white;background:#6A98D6;border-color:#6689D6}#content h3.inherited,#content h3.included,#content h3.extended{font-style:italic;font-family:"Lucida Sans","Lucida Grande",Verdana,Arial,sans-serif;font-weight:normal;padding:0;margin:0;margin-top:12px;margin-bottom:3px;font-size:13px}#content p.inherited,#content p.included,#content p.extended{word-spacing:5px;font-size:1.2em;padding:0;margin:0;margin-left:25px}#content p.inherited a,#content p.included a,#content p.extended a{font-family:monospace;font-size:.9em}#footer{margin-top:15px;border-top:1px solid #ccc;text-align:center;padding:7px 0;font-size:12px;color:#999}#footer a:link,#footer a:visited{color:#999;text-decoration:none;border-bottom:1px dotted #bbd}#footer a:hover{color:#05a}pre code{display:block;padding:.5em;color:#000;background:#f8f8ff}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .lisp .title,pre .subst{color:#000;font-weight:bold}pre .number,pre .hexcolor{color:#40a070}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .label,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:#000080;font-weight:normal}pre .attribute,pre .variable,pre .instancevar,pre .lisp .body{color:#008080}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .ruby .symbol .keyword,pre .ruby .symbol .keymethods,pre .lisp .keyword,pre .tex .special,pre .input_number{color:#990073}pre .builtin,pre .built_in,pre .lisp .title{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}pre .tex .formula{opacity:.5}#menu{font-size:1.3em;color:#bbb;top:-5px;position:relative}#menu .title,#menu a{font-size:.7em}#menu .title a{font-size:1em}#menu .title{color:#555}#menu a:link,#menu a:visited{color:#333;text-decoration:none;border-bottom:1px dotted #bbd}#menu a:hover{color:#05a}#header nav{float:right;color:#000;font-size:.7em}#header nav ul{list-style-type:none;margin:4px!important}#header nav ul,#header nav ul li{margin:0;padding:0;display:inline}#header nav a{font-size:1em}#header #search{float:right;margin-top:-3px}#header #search a:link,#header #search a:visited{-webkit-box-shadow:#ddd -1px 1px 3px;-moz-box-shadow:#ddd -1px 1px 3px;box-shadow:#ddd -1px 1px 3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;display:block;float:left;margin-right:4px;padding:8px 10px;color:#05a;background:#eaf0ff;text-decoration:none;border:1px solid #d8d8e5}#header #search a:hover{background:#f5faff;color:#06b}#header #search a.active{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;padding-bottom:20px;color:#fff;background:#568;border:1px solid #457}#header #search a.inactive{color:#999}body.frames #header li.frames{display:none}body.frames #header #search{display:none}body.noframes #header li.noframes{display:none}#search_frame{-webkit-box-shadow:#aaa -7px 5px 25px;-moz-box-shadow:#aaa -7px 5px 25px;box-shadow:#aaa -7px 5px 25px;display:none;position:absolute;overflow-y:scroll;z-index:9999;top:36px;right:18px;width:500px;height:80%;background:white;border:1px solid #999;border-collapse:collapse}pre{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:rgba(0,0,0,0.1) 1px 1px 2px;-moz-box-shadow:rgba(0,0,0,0.1) 1px 1px 2px;box-shadow:rgba(0,0,0,0.1) 1px 1px 2px;padding:0;margin-top:4px;border:1px solid #EAEAEA;background-color:#F8F8F8;font-family:monospace}pre.code{word-wrap:break-word}pre code{border:0;white-space:pre;overflow:hidden;word-wrap:break-word}code{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #EAEAEA;background-color:#F8F8F8}pre>code{white-space:wrap}.docstring p>code,.docstring li>code{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #EAEAEA;background-color:#F8F8F8}.alphaindex{margin-top:0;font-size:22px}.noborder{border-top:0;margin-top:0;padding-top:4px}.title{margin-bottom:10px}#files{padding:0;font-size:1.1em}#files li{list-style:none;display:inline;padding:7px 12px;line-height:35px;background:#F0F0F0;margin-right:5px}.index{-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3;-webkit-column-width:33%;-moz-column-width:33%;-ms-column-width:33%;-o-column-width:33%;column-width:33%}.index>ul{margin:0;padding:0;padding-bottom:10px;font-size:1.1em;list-style:none}.index>ul>li.letter{-webkit-column-break-after:avoid;font-size:1.4em;padding-bottom:10px;text-transform:uppercase}.index>ul>ul{margin:0;padding-left:20px}.index>ul>ul small{color:#666;font-size:.7em}body.list{padding:0;margin:0}body.noframes #content.list nav{display:none}body.noframes #content.list #search{position:absolute;right:5px;top:9px;padding-left:10px}body.frames #content.list #search{position:relative;margin-top:5px;margin-left:10px}#content.list.tree>ul{margin-top:13px!important}#content.list.tree ul{font-size:16px;margin:0;padding:0}#content.list.tree ul li{margin:0;padding:5px;color:#000;font-size:1em;list-style:none;white-space:nowrap;overflow:hidden;cursor:pointer}#content.list.tree ul li.namespace{overflow:visible}#content.list.tree ul li>a.toggle{display:block;float:left;width:10px;height:10px;margin-top:5px;margin-left:5px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:0 -10px}#content.list.tree ul li>a.toggle.collapsed{background-position:0 0}#content.list.tree ul li>span,#content.list.tree ul li a{margin-left:20px;text-decoration:none}#content.list.tree ul li>a.toggle+span,#content.list.tree ul li a.toggle+a{margin-left:5px}#content.list.tree ul li small{color:#888;white-space:nowrap}#content.list.tree ul li small.namespace{display:none}#content.list.tree ul li.result a.toggle{visibility:hidden}#content.list.tree ul li.result small.namespace{display:inline}#content.list.tree ul li.result small.parent{display:none}#content.list{padding:0;margin:0}#content.list h1{padding:12px 10px;padding-bottom:10px;margin:0;font-size:1.4em}#content.list a:hover{background:transparent}#content.list nav{margin-left:10px}#content.list #search{color:#888}#content.list #search input{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border:1px solid #BBB}#content.list a{color:#05A;cursor:pointer;text-decoration:none}#content.list a:hover{text-decoration:underline}#content.list ul{padding:0;list-style:none;margin-left:0}#content.list ul li[deprecated]{text-decoration:line-through}#content.list ul li{padding:5px;padding-left:12px;margin:0;font-size:1.1em;list-style:none;color:#888;cursor:pointer}#content.list ul li.stripe{background:#F0F0F0}#content.list ul li:hover{background:#ddd}nav.toc{-webkit-box-shadow:#bbb -2px 2px 6px;-moz-box-shadow:#bbb -2px 2px 6px;box-shadow:#bbb -2px 2px 6px;overflow:hidden;float:right;z-index:500;right:0;max-width:300px;padding:20px;padding-right:30px;margin-left:20px;margin-bottom:20px;background:white;border:1px solid #DDD}nav.toc p.title{margin-top:5px}nav.toc ol{padding-left:1.8em}nav.toc li{font-size:1.1em;line-height:1.7em}nav.toc>ol>li{font-size:1.1em;font-weight:bold}nav.toc ol>ol{font-size:.9em}nav.toc.inline{-webkit-box-shadow:white 0 0 0;-moz-box-shadow:white 0 0 0;box-shadow:white 0 0 0;position:relative;float:none;padding:0;margin:5px 0 0 0;border:0}nav.toc.inline.hidden{background:none;padding:0;text-align:left}nav.toc.hidden{height:26px;width:140px;padding:5px;background:#F6F6F6;text-align:center}nav.toc.hidden p.title small{display:none}
|
|
|
includes/pickers/caman/api/assets/codo.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
/*!
|
| 2 |
-
* jQuery JavaScript Library v1.8.1
|
| 3 |
-
* http://jquery.com/
|
| 4 |
-
*
|
| 5 |
-
* Includes Sizzle.js
|
| 6 |
-
* http://sizzlejs.com/
|
| 7 |
-
*
|
| 8 |
-
* Copyright 2012 jQuery Foundation and other contributors
|
| 9 |
-
* Released under the MIT license
|
| 10 |
-
* http://jquery.org/license
|
| 11 |
-
*
|
| 12 |
-
* Date: Thu Aug 30 2012 17:17:22 GMT-0400 (Eastern Daylight Time)
|
| 13 |
-
*/
|
| 14 |
-
(function(a2,aB){var w,af,o=a2.document,aI=a2.location,d=a2.navigator,bg=a2.jQuery,I=a2.$,am=Array.prototype.push,a4=Array.prototype.slice,aK=Array.prototype.indexOf,z=Object.prototype.toString,V=Object.prototype.hasOwnProperty,aO=String.prototype.trim,bG=function(e,bZ){return new bG.fn.init(e,bZ,w)},bx=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,aa=/\S/,aV=/\s+/,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bo=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bf=/^[\],:{}\s]*$/,bi=/(?:^|:|,)(?:\s*\[)+/g,bD=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,bP=/^-ms-/,aU=/-([\da-z])/gi,N=function(e,bZ){return(bZ+"").toUpperCase()},aF=function(){if(o.addEventListener){o.removeEventListener("DOMContentLoaded",aF,false);bG.ready()}else{if(o.readyState==="complete"){o.detachEvent("onreadystatechange",aF);bG.ready()}}},Z={};bG.fn=bG.prototype={constructor:bG,init:function(e,b2,b1){var b0,b3,bZ,b4;if(!e){return this}if(e.nodeType){this.context=this[0]=e;this.length=1;return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b0=[null,e,null]}else{b0=bo.exec(e)}if(b0&&(b0[1]||!b2)){if(b0[1]){b2=b2 instanceof bG?b2[0]:b2;b4=(b2&&b2.nodeType?b2.ownerDocument||b2:o);e=bG.parseHTML(b0[1],b4,true);if(a.test(b0[1])&&bG.isPlainObject(b2)){this.attr.call(e,b2,true)}return bG.merge(this,e)}else{b3=o.getElementById(b0[2]);if(b3&&b3.parentNode){if(b3.id!==b0[2]){return b1.find(e)}this.length=1;this[0]=b3}this.context=o;this.selector=e;return this}}else{if(!b2||b2.jquery){return(b2||b1).find(e)}else{return this.constructor(b2).find(e)}}}else{if(bG.isFunction(e)){return b1.ready(e)}}if(e.selector!==aB){this.selector=e.selector;this.context=e.context}return bG.makeArray(e,this)},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return a4.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(bZ,b1,e){var b0=bG.merge(this.constructor(),bZ);b0.prevObject=this;b0.context=this.context;if(b1==="find"){b0.selector=this.selector+(this.selector?" ":"")+e}else{if(b1){b0.selector=this.selector+"."+b1+"("+e+")"}}return b0},each:function(bZ,e){return bG.each(this,bZ,e)},ready:function(e){bG.ready.promise().done(e);return this},eq:function(e){e=+e;return e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(a4.apply(this,arguments),"slice",a4.call(arguments).join(","))},map:function(e){return this.pushStack(bG.map(this,function(b0,bZ){return e.call(b0,bZ,b0)}))},end:function(){return this.prevObject||this.constructor(null)},push:am,sort:[].sort,splice:[].splice};bG.fn.init.prototype=bG.fn;bG.extend=bG.fn.extend=function(){var b7,b0,e,bZ,b4,b5,b3=arguments[0]||{},b2=1,b1=arguments.length,b6=false;if(typeof b3==="boolean"){b6=b3;b3=arguments[1]||{};b2=2}if(typeof b3!=="object"&&!bG.isFunction(b3)){b3={}}if(b1===b2){b3=this;--b2}for(;b2<b1;b2++){if((b7=arguments[b2])!=null){for(b0 in b7){e=b3[b0];bZ=b7[b0];if(b3===bZ){continue}if(b6&&bZ&&(bG.isPlainObject(bZ)||(b4=bG.isArray(bZ)))){if(b4){b4=false;b5=e&&bG.isArray(e)?e:[]}else{b5=e&&bG.isPlainObject(e)?e:{}}b3[b0]=bG.extend(b6,b5,bZ)}else{if(bZ!==aB){b3[b0]=bZ}}}}}return b3};bG.extend({noConflict:function(e){if(a2.$===bG){a2.$=I}if(e&&a2.jQuery===bG){a2.jQuery=bg}return bG},isReady:false,readyWait:1,holdReady:function(e){if(e){bG.readyWait++}else{bG.ready(true)}},ready:function(e){if(e===true?--bG.readyWait:bG.isReady){return}if(!o.body){return setTimeout(bG.ready,1)}bG.isReady=true;if(e!==true&&--bG.readyWait>0){return}af.resolveWith(o,[bG]);if(bG.fn.trigger){bG(o).trigger("ready").off("ready")}},isFunction:function(e){return bG.type(e)==="function"},isArray:Array.isArray||function(e){return bG.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):Z[z.call(e)]||"object"},isPlainObject:function(b1){if(!b1||bG.type(b1)!=="object"||b1.nodeType||bG.isWindow(b1)){return false}try{if(b1.constructor&&!V.call(b1,"constructor")&&!V.call(b1.constructor.prototype,"isPrototypeOf")){return false}}catch(b0){return false}var bZ;for(bZ in b1){}return bZ===aB||V.call(b1,bZ)},isEmptyObject:function(bZ){var e;for(e in bZ){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b1,b0,e){var bZ;if(!b1||typeof b1!=="string"){return null}if(typeof b0==="boolean"){e=b0;b0=0}b0=b0||o;if((bZ=a.exec(b1))){return[b0.createElement(bZ[1])]}bZ=bG.buildFragment([b1],b0,e?null:[]);return bG.merge([],(bZ.cacheable?bG.clone(bZ.fragment):bZ.fragment).childNodes)},parseJSON:function(e){if(!e||typeof e!=="string"){return null}e=bG.trim(e);if(a2.JSON&&a2.JSON.parse){return a2.JSON.parse(e)}if(bf.test(e.replace(bD,"@").replace(a0,"]").replace(bi,""))){return(new Function("return "+e))()}bG.error("Invalid JSON: "+e)},parseXML:function(b1){var bZ,b0;if(!b1||typeof b1!=="string"){return null}try{if(a2.DOMParser){b0=new DOMParser();bZ=b0.parseFromString(b1,"text/xml")}else{bZ=new ActiveXObject("Microsoft.XMLDOM");bZ.async="false";bZ.loadXML(b1)}}catch(b2){bZ=aB}if(!bZ||!bZ.documentElement||bZ.getElementsByTagName("parsererror").length){bG.error("Invalid XML: "+b1)}return bZ},noop:function(){},globalEval:function(e){if(e&&aa.test(e)){(a2.execScript||function(bZ){a2["eval"].call(a2,bZ)})(e)}},camelCase:function(e){return e.replace(bP,"ms-").replace(aU,N)},nodeName:function(bZ,e){return bZ.nodeName&&bZ.nodeName.toUpperCase()===e.toUpperCase()},each:function(b3,b4,b0){var bZ,b1=0,b2=b3.length,e=b2===aB||bG.isFunction(b3);if(b0){if(e){for(bZ in b3){if(b4.apply(b3[bZ],b0)===false){break}}}else{for(;b1<b2;){if(b4.apply(b3[b1++],b0)===false){break}}}}else{if(e){for(bZ in b3){if(b4.call(b3[bZ],bZ,b3[bZ])===false){break}}}else{for(;b1<b2;){if(b4.call(b3[b1],b1,b3[b1++])===false){break}}}}return b3},trim:aO&&!aO.call("\uFEFF\xA0")?function(e){return e==null?"":aO.call(e)}:function(e){return e==null?"":e.toString().replace(C,"")},makeArray:function(e,b0){var b1,bZ=b0||[];if(e!=null){b1=bG.type(e);if(e.length==null||b1==="string"||b1==="function"||b1==="regexp"||bG.isWindow(e)){am.call(bZ,e)}else{bG.merge(bZ,e)}}return bZ},inArray:function(b1,bZ,b0){var e;if(bZ){if(aK){return aK.call(bZ,b1,b0)}e=bZ.length;b0=b0?b0<0?Math.max(0,e+b0):b0:0;for(;b0<e;b0++){if(b0 in bZ&&bZ[b0]===b1){return b0}}}return -1},merge:function(b2,b0){var e=b0.length,b1=b2.length,bZ=0;if(typeof e==="number"){for(;bZ<e;bZ++){b2[b1++]=b0[bZ]}}else{while(b0[bZ]!==aB){b2[b1++]=b0[bZ++]}}b2.length=b1;return b2},grep:function(bZ,b4,e){var b3,b0=[],b1=0,b2=bZ.length;e=!!e;for(;b1<b2;b1++){b3=!!b4(bZ[b1],b1);if(e!==b3){b0.push(bZ[b1])}}return b0},map:function(e,b5,b6){var b3,b4,b2=[],b0=0,bZ=e.length,b1=e instanceof bG||bZ!==aB&&typeof bZ==="number"&&((bZ>0&&e[0]&&e[bZ-1])||bZ===0||bG.isArray(e));if(b1){for(;b0<bZ;b0++){b3=b5(e[b0],b0,b6);if(b3!=null){b2[b2.length]=b3}}}else{for(b4 in e){b3=b5(e[b4],b4,b6);if(b3!=null){b2[b2.length]=b3}}}return b2.concat.apply([],b2)},guid:1,proxy:function(b2,b1){var b0,e,bZ;if(typeof b1==="string"){b0=b2[b1];b1=b2;b2=b0}if(!bG.isFunction(b2)){return aB}e=a4.call(arguments,2);bZ=function(){return b2.apply(b1,e.concat(a4.call(arguments)))};bZ.guid=b2.guid=b2.guid||bZ.guid||bG.guid++;return bZ},access:function(e,b4,b7,b5,b2,b8,b6){var b0,b3=b7==null,b1=0,bZ=e.length;if(b7&&typeof b7==="object"){for(b1 in b7){bG.access(e,b4,b1,b7[b1],1,b8,b5)}b2=1}else{if(b5!==aB){b0=b6===aB&&bG.isFunction(b5);if(b3){if(b0){b0=b4;b4=function(ca,b9,cb){return b0.call(bG(ca),cb)}}else{b4.call(e,b5);b4=null}}if(b4){for(;b1<bZ;b1++){b4(e[b1],b7,b0?b5.call(e[b1],b1,b4(e[b1],b7)):b5,b6)}}b2=1}}return b2?e:b3?b4.call(e):bZ?b4(e[0],b7):b8},now:function(){return(new Date()).getTime()}});bG.ready.promise=function(b2){if(!af){af=bG.Deferred();if(o.readyState==="complete"){setTimeout(bG.ready,1)}else{if(o.addEventListener){o.addEventListener("DOMContentLoaded",aF,false);a2.addEventListener("load",bG.ready,false)}else{o.attachEvent("onreadystatechange",aF);a2.attachEvent("onload",bG.ready);var b1=false;try{b1=a2.frameElement==null&&o.documentElement}catch(b0){}if(b1&&b1.doScroll){(function bZ(){if(!bG.isReady){try{b1.doScroll("left")}catch(b3){return setTimeout(bZ,50)}bG.ready()}})()}}}}return af.promise(b2)};bG.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(bZ,e){Z["[object "+e+"]"]=e.toLowerCase()});w=bG(o);var bU={};function ac(bZ){var e=bU[bZ]={};bG.each(bZ.split(aV),function(b1,b0){e[b0]=true});return e}bG.Callbacks=function(b8){b8=typeof b8==="string"?(bU[b8]||ac(b8)):bG.extend({},b8);var b1,e,b2,b0,b3,b4,b5=[],b6=!b8.once&&[],bZ=function(b9){b1=b8.memory&&b9;e=true;b4=b0||0;b0=0;b3=b5.length;b2=true;for(;b5&&b4<b3;b4++){if(b5[b4].apply(b9[0],b9[1])===false&&b8.stopOnFalse){b1=false;break}}b2=false;if(b5){if(b6){if(b6.length){bZ(b6.shift())}}else{if(b1){b5=[]}else{b7.disable()}}}},b7={add:function(){if(b5){var ca=b5.length;(function b9(cb){bG.each(cb,function(cd,cc){var ce=bG.type(cc);if(ce==="function"&&(!b8.unique||!b7.has(cc))){b5.push(cc)}else{if(cc&&cc.length&&ce!=="string"){b9(cc)}}})})(arguments);if(b2){b3=b5.length}else{if(b1){b0=ca;bZ(b1)}}}return this},remove:function(){if(b5){bG.each(arguments,function(cb,b9){var ca;while((ca=bG.inArray(b9,b5,ca))>-1){b5.splice(ca,1);if(b2){if(ca<=b3){b3--}if(ca<=b4){b4--}}}})}return this},has:function(b9){return bG.inArray(b9,b5)>-1},empty:function(){b5=[];return this},disable:function(){b5=b6=b1=aB;return this},disabled:function(){return !b5},lock:function(){b6=aB;if(!b1){b7.disable()}return this},locked:function(){return !b6},fireWith:function(ca,b9){b9=b9||[];b9=[ca,b9.slice?b9.slice():b9];if(b5&&(!e||b6)){if(b2){b6.push(b9)}else{bZ(b9)}}return this},fire:function(){b7.fireWith(this,arguments);return this},fired:function(){return !!e}};return b7};bG.extend({Deferred:function(b0){var bZ=[["resolve","done",bG.Callbacks("once memory"),"resolved"],["reject","fail",bG.Callbacks("once memory"),"rejected"],["notify","progress",bG.Callbacks("memory")]],b1="pending",b2={state:function(){return b1},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b3=arguments;return bG.Deferred(function(b4){bG.each(bZ,function(b6,b5){var b8=b5[0],b7=b3[b6];e[b5[1]](bG.isFunction(b7)?function(){var b9=b7.apply(this,arguments);if(b9&&bG.isFunction(b9.promise)){b9.promise().done(b4.resolve).fail(b4.reject).progress(b4.notify)}else{b4[b8+"With"](this===e?b4:this,[b9])}}:b4[b8])});b3=null}).promise()},promise:function(b3){return typeof b3==="object"?bG.extend(b3,b2):b2}},e={};b2.pipe=b2.then;bG.each(bZ,function(b4,b3){var b6=b3[2],b5=b3[3];b2[b3[1]]=b6.add;if(b5){b6.add(function(){b1=b5},bZ[b4^1][2].disable,bZ[2][2].lock)}e[b3[0]]=b6.fire;e[b3[0]+"With"]=b6.fireWith});b2.promise(e);if(b0){b0.call(e,e)}return e},when:function(b2){var b0=0,b4=a4.call(arguments),e=b4.length,bZ=e!==1||(b2&&bG.isFunction(b2.promise))?e:0,b7=bZ===1?b2:bG.Deferred(),b1=function(b9,ca,b8){return function(cb){ca[b9]=this;b8[b9]=arguments.length>1?a4.call(arguments):cb;if(b8===b6){b7.notifyWith(ca,b8)}else{if(!(--bZ)){b7.resolveWith(ca,b8)}}}},b6,b3,b5;if(e>1){b6=new Array(e);b3=new Array(e);b5=new Array(e);for(;b0<e;b0++){if(b4[b0]&&bG.isFunction(b4[b0].promise)){b4[b0].promise().done(b1(b0,b5,b4)).fail(b7.reject).progress(b1(b0,b3,b6))}else{--bZ}}}if(!bZ){b7.resolveWith(b5,b4)}return b7.promise()}});bG.support=(function(){var cb,ca,b8,b9,b2,b7,b6,b4,b3,b1,bZ,b0=o.createElement("div");b0.setAttribute("className","t");b0.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";ca=b0.getElementsByTagName("*");b8=b0.getElementsByTagName("a")[0];b8.style.cssText="top:1px;float:left;opacity:.5";if(!ca||!ca.length||!b8){return{}}b9=o.createElement("select");b2=b9.appendChild(o.createElement("option"));b7=b0.getElementsByTagName("input")[0];cb={leadingWhitespace:(b0.firstChild.nodeType===3),tbody:!b0.getElementsByTagName("tbody").length,htmlSerialize:!!b0.getElementsByTagName("link").length,style:/top/.test(b8.getAttribute("style")),hrefNormalized:(b8.getAttribute("href")==="/a"),opacity:/^0.5/.test(b8.style.opacity),cssFloat:!!b8.style.cssFloat,checkOn:(b7.value==="on"),optSelected:b2.selected,getSetAttribute:b0.className!=="t",enctype:!!o.createElement("form").enctype,html5Clone:o.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:(o.compatMode==="CSS1Compat"),submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};b7.checked=true;cb.noCloneChecked=b7.cloneNode(true).checked;b9.disabled=true;cb.optDisabled=!b2.disabled;try{delete b0.test}catch(b5){cb.deleteExpando=false}if(!b0.addEventListener&&b0.attachEvent&&b0.fireEvent){b0.attachEvent("onclick",bZ=function(){cb.noCloneEvent=false});b0.cloneNode(true).fireEvent("onclick");b0.detachEvent("onclick",bZ)}b7=o.createElement("input");b7.value="t";b7.setAttribute("type","radio");cb.radioValue=b7.value==="t";b7.setAttribute("checked","checked");b7.setAttribute("name","t");b0.appendChild(b7);b6=o.createDocumentFragment();b6.appendChild(b0.lastChild);cb.checkClone=b6.cloneNode(true).cloneNode(true).lastChild.checked;cb.appendChecked=b7.checked;b6.removeChild(b7);b6.appendChild(b0);if(b0.attachEvent){for(b3 in {submit:true,change:true,focusin:true}){b4="on"+b3;b1=(b4 in b0);if(!b1){b0.setAttribute(b4,"return;");b1=(typeof b0[b4]==="function")}cb[b3+"Bubbles"]=b1}}bG(function(){var cc,cg,ce,cf,cd="padding:0;margin:0;border:0;display:block;overflow:hidden;",e=o.getElementsByTagName("body")[0];if(!e){return}cc=o.createElement("div");cc.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";e.insertBefore(cc,e.firstChild);cg=o.createElement("div");cc.appendChild(cg);cg.innerHTML="<table><tr><td></td><td>t</td></tr></table>";ce=cg.getElementsByTagName("td");ce[0].style.cssText="padding:0;margin:0;border:0;display:none";b1=(ce[0].offsetHeight===0);ce[0].style.display="";ce[1].style.display="none";cb.reliableHiddenOffsets=b1&&(ce[0].offsetHeight===0);cg.innerHTML="";cg.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cb.boxSizing=(cg.offsetWidth===4);cb.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a2.getComputedStyle){cb.pixelPosition=(a2.getComputedStyle(cg,null)||{}).top!=="1%";cb.boxSizingReliable=(a2.getComputedStyle(cg,null)||{width:"4px"}).width==="4px";cf=o.createElement("div");cf.style.cssText=cg.style.cssText=cd;cf.style.marginRight=cf.style.width="0";cg.style.width="1px";cg.appendChild(cf);cb.reliableMarginRight=!parseFloat((a2.getComputedStyle(cf,null)||{}).marginRight)}if(typeof cg.style.zoom!=="undefined"){cg.innerHTML="";cg.style.cssText=cd+"width:1px;padding:1px;display:inline;zoom:1";cb.inlineBlockNeedsLayout=(cg.offsetWidth===3);cg.style.display="block";cg.style.overflow="visible";cg.innerHTML="<div></div>";cg.firstChild.style.width="5px";cb.shrinkWrapBlocks=(cg.offsetWidth!==3);cc.style.zoom=1}e.removeChild(cc);cc=cg=ce=cf=null});b6.removeChild(b0);ca=b8=b9=b2=b7=b6=b0=null;return cb})();var bt=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aL=/([A-Z])/g;bG.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(bG.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?bG.cache[e[bG.expando]]:e[bG.expando];return !!e&&!O(e)},data:function(b1,bZ,b3,b2){if(!bG.acceptData(b1)){return}var b4,b6,b7=bG.expando,b5=typeof bZ==="string",b8=b1.nodeType,e=b8?bG.cache:b1,b0=b8?b1[b7]:b1[b7]&&b7;if((!b0||!e[b0]||(!b2&&!e[b0].data))&&b5&&b3===aB){return}if(!b0){if(b8){b1[b7]=b0=bG.deletedIds.pop()||++bG.uuid}else{b0=b7}}if(!e[b0]){e[b0]={};if(!b8){e[b0].toJSON=bG.noop}}if(typeof bZ==="object"||typeof bZ==="function"){if(b2){e[b0]=bG.extend(e[b0],bZ)}else{e[b0].data=bG.extend(e[b0].data,bZ)}}b4=e[b0];if(!b2){if(!b4.data){b4.data={}}b4=b4.data}if(b3!==aB){b4[bG.camelCase(bZ)]=b3}if(b5){b6=b4[bZ];if(b6==null){b6=b4[bG.camelCase(bZ)]}}else{b6=b4}return b6},removeData:function(b1,bZ,b2){if(!bG.acceptData(b1)){return}var b5,b4,b3,b6=b1.nodeType,e=b6?bG.cache:b1,b0=b6?b1[bG.expando]:bG.expando;if(!e[b0]){return}if(bZ){b5=b2?e[b0]:e[b0].data;if(b5){if(!bG.isArray(bZ)){if(bZ in b5){bZ=[bZ]}else{bZ=bG.camelCase(bZ);if(bZ in b5){bZ=[bZ]}else{bZ=bZ.split(" ")}}}for(b4=0,b3=bZ.length;b4<b3;b4++){delete b5[bZ[b4]]}if(!(b2?O:bG.isEmptyObject)(b5)){return}}}if(!b2){delete e[b0].data;if(!O(e[b0])){return}}if(b6){bG.cleanData([b1],true)}else{if(bG.support.deleteExpando||e!=e.window){delete e[b0]}else{e[b0]=null}}},_data:function(bZ,e,b0){return bG.data(bZ,e,b0,true)},acceptData:function(bZ){var e=bZ.nodeName&&bG.noData[bZ.nodeName.toLowerCase()];return !e||e!==true&&bZ.getAttribute("classid")===e}});bG.fn.extend({data:function(b7,b6){var b2,bZ,b5,e,b1,b0=this[0],b4=0,b3=null;if(b7===aB){if(this.length){b3=bG.data(b0);if(b0.nodeType===1&&!bG._data(b0,"parsedAttrs")){b5=b0.attributes;for(b1=b5.length;b4<b1;b4++){e=b5[b4].name;if(e.indexOf("data-")===0){e=bG.camelCase(e.substring(5));bv(b0,e,b3[e])}}bG._data(b0,"parsedAttrs",true)}}return b3}if(typeof b7==="object"){return this.each(function(){bG.data(this,b7)})}b2=b7.split(".",2);b2[1]=b2[1]?"."+b2[1]:"";bZ=b2[1]+"!";return bG.access(this,function(b8){if(b8===aB){b3=this.triggerHandler("getData"+bZ,[b2[0]]);if(b3===aB&&b0){b3=bG.data(b0,b7);b3=bv(b0,b7,b3)}return b3===aB&&b2[1]?this.data(b2[0]):b3}b2[1]=b8;this.each(function(){var b9=bG(this);b9.triggerHandler("setData"+bZ,b2);bG.data(this,b7,b8);b9.triggerHandler("changeData"+bZ,b2)})},null,b6,arguments.length>1,null,false)},removeData:function(e){return this.each(function(){bG.removeData(this,e)})}});function bv(b1,b0,b2){if(b2===aB&&b1.nodeType===1){var bZ="data-"+b0.replace(aL,"-$1").toLowerCase();b2=b1.getAttribute(bZ);if(typeof b2==="string"){try{b2=b2==="true"?true:b2==="false"?false:b2==="null"?null:+b2+""===b2?+b2:bt.test(b2)?bG.parseJSON(b2):b2}catch(b3){}bG.data(b1,b0,b2)}else{b2=aB}}return b2}function O(bZ){var e;for(e in bZ){if(e==="data"&&bG.isEmptyObject(bZ[e])){continue}if(e!=="toJSON"){return false}}return true}bG.extend({queue:function(b0,bZ,b1){var e;if(b0){bZ=(bZ||"fx")+"queue";e=bG._data(b0,bZ);if(b1){if(!e||bG.isArray(b1)){e=bG._data(b0,bZ,bG.makeArray(b1))}else{e.push(b1)}}return e||[]}},dequeue:function(b3,b2){b2=b2||"fx";var bZ=bG.queue(b3,b2),b4=bZ.length,b1=bZ.shift(),e=bG._queueHooks(b3,b2),b0=function(){bG.dequeue(b3,b2)};if(b1==="inprogress"){b1=bZ.shift();b4--}if(b1){if(b2==="fx"){bZ.unshift("inprogress")}delete e.stop;b1.call(b3,b0,e)}if(!b4&&e){e.empty.fire()}},_queueHooks:function(b0,bZ){var e=bZ+"queueHooks";return bG._data(b0,e)||bG._data(b0,e,{empty:bG.Callbacks("once memory").add(function(){bG.removeData(b0,bZ+"queue",true);bG.removeData(b0,e,true)})})}});bG.fn.extend({queue:function(e,bZ){var b0=2;if(typeof e!=="string"){bZ=e;e="fx";b0--}if(arguments.length<b0){return bG.queue(this[0],e)}return bZ===aB?this:this.each(function(){var b1=bG.queue(this,e,bZ);bG._queueHooks(this,e);if(e==="fx"&&b1[0]!=="inprogress"){bG.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){bG.dequeue(this,e)})},delay:function(bZ,e){bZ=bG.fx?bG.fx.speeds[bZ]||bZ:bZ;e=e||"fx";return this.queue(e,function(b1,b0){var b2=setTimeout(b1,bZ);b0.stop=function(){clearTimeout(b2)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(b0,b4){var bZ,b1=1,b5=bG.Deferred(),b3=this,e=this.length,b2=function(){if(!(--b1)){b5.resolveWith(b3,[b3])}};if(typeof b0!=="string"){b4=b0;b0=aB}b0=b0||"fx";while(e--){bZ=bG._data(b3[e],b0+"queueHooks");if(bZ&&bZ.empty){b1++;bZ.empty.add(b2)}}b2();return b5.promise(b4)}});var a7,bV,n,bJ=/[\t\r\n]/g,ai=/\r/g,j=/^(?:button|input)$/i,aA=/^(?:button|input|object|select|textarea)$/i,D=/^a(?:rea|)$/i,M=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,bL=bG.support.getSetAttribute;bG.fn.extend({attr:function(e,bZ){return bG.access(this,bG.attr,e,bZ,arguments.length>1)},removeAttr:function(e){return this.each(function(){bG.removeAttr(this,e)})},prop:function(e,bZ){return bG.access(this,bG.prop,e,bZ,arguments.length>1)},removeProp:function(e){e=bG.propFix[e]||e;return this.each(function(){try{this[e]=aB;delete this[e]}catch(bZ){}})},addClass:function(b2){var b4,b0,bZ,b1,b3,b5,e;if(bG.isFunction(b2)){return this.each(function(b6){bG(this).addClass(b2.call(this,b6,this.className))})}if(b2&&typeof b2==="string"){b4=b2.split(aV);for(b0=0,bZ=this.length;b0<bZ;b0++){b1=this[b0];if(b1.nodeType===1){if(!b1.className&&b4.length===1){b1.className=b2}else{b3=" "+b1.className+" ";for(b5=0,e=b4.length;b5<e;b5++){if(!~b3.indexOf(" "+b4[b5]+" ")){b3+=b4[b5]+" "}}b1.className=bG.trim(b3)}}}}return this},removeClass:function(b4){var b1,b2,b3,b5,bZ,b0,e;if(bG.isFunction(b4)){return this.each(function(b6){bG(this).removeClass(b4.call(this,b6,this.className))})}if((b4&&typeof b4==="string")||b4===aB){b1=(b4||"").split(aV);for(b0=0,e=this.length;b0<e;b0++){b3=this[b0];if(b3.nodeType===1&&b3.className){b2=(" "+b3.className+" ").replace(bJ," ");for(b5=0,bZ=b1.length;b5<bZ;b5++){while(b2.indexOf(" "+b1[b5]+" ")>-1){b2=b2.replace(" "+b1[b5]+" "," ")}}b3.className=b4?bG.trim(b2):""}}}return this},toggleClass:function(b1,bZ){var b0=typeof b1,e=typeof bZ==="boolean";if(bG.isFunction(b1)){return this.each(function(b2){bG(this).toggleClass(b1.call(this,b2,this.className,bZ),bZ)})}return this.each(function(){if(b0==="string"){var b4,b3=0,b2=bG(this),b5=bZ,b6=b1.split(aV);while((b4=b6[b3++])){b5=e?b5:!b2.hasClass(b4);b2[b5?"addClass":"removeClass"](b4)}}else{if(b0==="undefined"||b0==="boolean"){if(this.className){bG._data(this,"__className__",this.className)}this.className=this.className||b1===false?"":bG._data(this,"__className__")||""}}})},hasClass:function(e){var b1=" "+e+" ",b0=0,bZ=this.length;for(;b0<bZ;b0++){if(this[b0].nodeType===1&&(" "+this[b0].className+" ").replace(bJ," ").indexOf(b1)>-1){return true}}return false},val:function(b1){var e,bZ,b2,b0=this[0];if(!arguments.length){if(b0){e=bG.valHooks[b0.type]||bG.valHooks[b0.nodeName.toLowerCase()];if(e&&"get" in e&&(bZ=e.get(b0,"value"))!==aB){return bZ}bZ=b0.value;return typeof bZ==="string"?bZ.replace(ai,""):bZ==null?"":bZ}return}b2=bG.isFunction(b1);return this.each(function(b4){var b5,b3=bG(this);if(this.nodeType!==1){return}if(b2){b5=b1.call(this,b4,b3.val())}else{b5=b1}if(b5==null){b5=""}else{if(typeof b5==="number"){b5+=""}else{if(bG.isArray(b5)){b5=bG.map(b5,function(b6){return b6==null?"":b6+""})}}}e=bG.valHooks[this.type]||bG.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,b5,"value")===aB){this.value=b5}})}});bG.extend({valHooks:{option:{get:function(e){var bZ=e.attributes.value;return !bZ||bZ.specified?e.value:e.text}},select:{get:function(e){var b4,bZ,b3,b1,b2=e.selectedIndex,b5=[],b6=e.options,b0=e.type==="select-one";if(b2<0){return null}bZ=b0?b2:0;b3=b0?b2+1:b6.length;for(;bZ<b3;bZ++){b1=b6[bZ];if(b1.selected&&(bG.support.optDisabled?!b1.disabled:b1.getAttribute("disabled")===null)&&(!b1.parentNode.disabled||!bG.nodeName(b1.parentNode,"optgroup"))){b4=bG(b1).val();if(b0){return b4}b5.push(b4)}}if(b0&&!b5.length&&b6.length){return bG(b6[b2]).val()}return b5},set:function(bZ,b0){var e=bG.makeArray(b0);bG(bZ).find("option").each(function(){this.selected=bG.inArray(bG(this).val(),e)>=0});if(!e.length){bZ.selectedIndex=-1}return e}}},attrFn:{},attr:function(b4,b1,b5,b3){var b0,e,b2,bZ=b4.nodeType;if(!b4||bZ===3||bZ===8||bZ===2){return}if(b3&&bG.isFunction(bG.fn[b1])){return bG(b4)[b1](b5)}if(typeof b4.getAttribute==="undefined"){return bG.prop(b4,b1,b5)}b2=bZ!==1||!bG.isXMLDoc(b4);if(b2){b1=b1.toLowerCase();e=bG.attrHooks[b1]||(M.test(b1)?bV:a7)}if(b5!==aB){if(b5===null){bG.removeAttr(b4,b1);return}else{if(e&&"set" in e&&b2&&(b0=e.set(b4,b5,b1))!==aB){return b0}else{b4.setAttribute(b1,""+b5);return b5}}}else{if(e&&"get" in e&&b2&&(b0=e.get(b4,b1))!==null){return b0}else{b0=b4.getAttribute(b1);return b0===null?aB:b0}}},removeAttr:function(b1,b3){var b2,b4,bZ,e,b0=0;if(b3&&b1.nodeType===1){b4=b3.split(aV);for(;b0<b4.length;b0++){bZ=b4[b0];if(bZ){b2=bG.propFix[bZ]||bZ;e=M.test(bZ);if(!e){bG.attr(b1,bZ,"")}b1.removeAttribute(bL?bZ:b2);if(e&&b2 in b1){b1[b2]=false}}}}},attrHooks:{type:{set:function(e,bZ){if(j.test(e.nodeName)&&e.parentNode){bG.error("type property can't be changed")}else{if(!bG.support.radioValue&&bZ==="radio"&&bG.nodeName(e,"input")){var b0=e.value;e.setAttribute("type",bZ);if(b0){e.value=b0}return bZ}}}},value:{get:function(bZ,e){if(a7&&bG.nodeName(bZ,"button")){return a7.get(bZ,e)}return e in bZ?bZ.value:null},set:function(bZ,b0,e){if(a7&&bG.nodeName(bZ,"button")){return a7.set(bZ,b0,e)}bZ.value=b0}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b3,b1,b4){var b0,e,b2,bZ=b3.nodeType;if(!b3||bZ===3||bZ===8||bZ===2){return}b2=bZ!==1||!bG.isXMLDoc(b3);if(b2){b1=bG.propFix[b1]||b1;e=bG.propHooks[b1]}if(b4!==aB){if(e&&"set" in e&&(b0=e.set(b3,b4,b1))!==aB){return b0}else{return(b3[b1]=b4)}}else{if(e&&"get" in e&&(b0=e.get(b3,b1))!==null){return b0}else{return b3[b1]}}},propHooks:{tabIndex:{get:function(bZ){var e=bZ.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):aA.test(bZ.nodeName)||D.test(bZ.nodeName)&&bZ.href?0:aB}}}});bV={get:function(bZ,e){var b1,b0=bG.prop(bZ,e);return b0===true||typeof b0!=="boolean"&&(b1=bZ.getAttributeNode(e))&&b1.nodeValue!==false?e.toLowerCase():aB},set:function(bZ,b1,e){var b0;if(b1===false){bG.removeAttr(bZ,e)}else{b0=bG.propFix[e]||e;if(b0 in bZ){bZ[b0]=true}bZ.setAttribute(e,e.toLowerCase())}return e}};if(!bL){n={name:true,id:true,coords:true};a7=bG.valHooks.button={get:function(b0,bZ){var e;e=b0.getAttributeNode(bZ);return e&&(n[bZ]?e.value!=="":e.specified)?e.value:aB},set:function(b0,b1,bZ){var e=b0.getAttributeNode(bZ);if(!e){e=o.createAttribute(bZ);b0.setAttributeNode(e)}return(e.value=b1+"")}};bG.each(["width","height"],function(bZ,e){bG.attrHooks[e]=bG.extend(bG.attrHooks[e],{set:function(b0,b1){if(b1===""){b0.setAttribute(e,"auto");return b1}}})});bG.attrHooks.contenteditable={get:a7.get,set:function(bZ,b0,e){if(b0===""){b0="false"}a7.set(bZ,b0,e)}}}if(!bG.support.hrefNormalized){bG.each(["href","src","width","height"],function(bZ,e){bG.attrHooks[e]=bG.extend(bG.attrHooks[e],{get:function(b1){var b0=b1.getAttribute(e,2);return b0===null?aB:b0}})})}if(!bG.support.style){bG.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||aB},set:function(e,bZ){return(e.style.cssText=""+bZ)}}}if(!bG.support.optSelected){bG.propHooks.selected=bG.extend(bG.propHooks.selected,{get:function(bZ){var e=bZ.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!bG.support.enctype){bG.propFix.enctype="encoding"}if(!bG.support.checkOn){bG.each(["radio","checkbox"],function(){bG.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}bG.each(["radio","checkbox"],function(){bG.valHooks[this]=bG.extend(bG.valHooks[this],{set:function(e,bZ){if(bG.isArray(bZ)){return(e.checked=bG.inArray(bG(e).val(),bZ)>=0)}}})});var bE=/^(?:textarea|input|select)$/i,br=/^([^\.]*|)(?:\.(.+)|)$/,ba=/(?:^|\s)hover(\.\S+|)\b/,a3=/^key/,bK=/^(?:mouse|contextmenu)|click/,by=/^(?:focusinfocus|focusoutblur)$/,aq=function(e){return bG.event.special.hover?e:e.replace(ba,"mouseenter$1 mouseleave$1")};bG.event={add:function(b1,b5,cc,b3,b2){var b6,b4,cd,cb,ca,b8,e,b9,bZ,b0,b7;if(b1.nodeType===3||b1.nodeType===8||!b5||!cc||!(b6=bG._data(b1))){return}if(cc.handler){bZ=cc;cc=bZ.handler;b2=bZ.selector}if(!cc.guid){cc.guid=bG.guid++}cd=b6.events;if(!cd){b6.events=cd={}}b4=b6.handle;if(!b4){b6.handle=b4=function(ce){return typeof bG!=="undefined"&&(!ce||bG.event.triggered!==ce.type)?bG.event.dispatch.apply(b4.elem,arguments):aB};b4.elem=b1}b5=bG.trim(aq(b5)).split(" ");for(cb=0;cb<b5.length;cb++){ca=br.exec(b5[cb])||[];b8=ca[1];e=(ca[2]||"").split(".").sort();b7=bG.event.special[b8]||{};b8=(b2?b7.delegateType:b7.bindType)||b8;b7=bG.event.special[b8]||{};b9=bG.extend({type:b8,origType:ca[1],data:b3,handler:cc,guid:cc.guid,selector:b2,namespace:e.join(".")},bZ);b0=cd[b8];if(!b0){b0=cd[b8]=[];b0.delegateCount=0;if(!b7.setup||b7.setup.call(b1,b3,e,b4)===false){if(b1.addEventListener){b1.addEventListener(b8,b4,false)}else{if(b1.attachEvent){b1.attachEvent("on"+b8,b4)}}}}if(b7.add){b7.add.call(b1,b9);if(!b9.handler.guid){b9.handler.guid=cc.guid}}if(b2){b0.splice(b0.delegateCount++,0,b9)}else{b0.push(b9)}bG.event.global[b8]=true}b1=null},global:{},remove:function(b1,b6,cc,b2,b5){var cd,ce,b9,b0,bZ,b3,b4,cb,b8,e,ca,b7=bG.hasData(b1)&&bG._data(b1);if(!b7||!(cb=b7.events)){return}b6=bG.trim(aq(b6||"")).split(" ");for(cd=0;cd<b6.length;cd++){ce=br.exec(b6[cd])||[];b9=b0=ce[1];bZ=ce[2];if(!b9){for(b9 in cb){bG.event.remove(b1,b9+b6[cd],cc,b2,true)}continue}b8=bG.event.special[b9]||{};b9=(b2?b8.delegateType:b8.bindType)||b9;e=cb[b9]||[];b3=e.length;bZ=bZ?new RegExp("(^|\\.)"+bZ.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(b4=0;b4<e.length;b4++){ca=e[b4];if((b5||b0===ca.origType)&&(!cc||cc.guid===ca.guid)&&(!bZ||bZ.test(ca.namespace))&&(!b2||b2===ca.selector||b2==="**"&&ca.selector)){e.splice(b4--,1);if(ca.selector){e.delegateCount--}if(b8.remove){b8.remove.call(b1,ca)}}}if(e.length===0&&b3!==e.length){if(!b8.teardown||b8.teardown.call(b1,bZ,b7.handle)===false){bG.removeEvent(b1,b9,b7.handle)}delete cb[b9]}}if(bG.isEmptyObject(cb)){delete b7.handle;bG.removeData(b1,"events",true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bZ,b6,b4,cd){if(b4&&(b4.nodeType===3||b4.nodeType===8)){return}var e,b1,b7,cb,b3,b2,b9,b8,b5,cc,ca=bZ.type||bZ,b0=[];if(by.test(ca+bG.event.triggered)){return}if(ca.indexOf("!")>=0){ca=ca.slice(0,-1);b1=true}if(ca.indexOf(".")>=0){b0=ca.split(".");ca=b0.shift();b0.sort()}if((!b4||bG.event.customEvent[ca])&&!bG.event.global[ca]){return}bZ=typeof bZ==="object"?bZ[bG.expando]?bZ:new bG.Event(ca,bZ):new bG.Event(ca);bZ.type=ca;bZ.isTrigger=true;bZ.exclusive=b1;bZ.namespace=b0.join(".");bZ.namespace_re=bZ.namespace?new RegExp("(^|\\.)"+b0.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b2=ca.indexOf(":")<0?"on"+ca:"";if(!b4){e=bG.cache;for(b7 in e){if(e[b7].events&&e[b7].events[ca]){bG.event.trigger(bZ,b6,e[b7].handle.elem,true)}}return}bZ.result=aB;if(!bZ.target){bZ.target=b4}b6=b6!=null?bG.makeArray(b6):[];b6.unshift(bZ);b9=bG.event.special[ca]||{};if(b9.trigger&&b9.trigger.apply(b4,b6)===false){return}b5=[[b4,b9.bindType||ca]];if(!cd&&!b9.noBubble&&!bG.isWindow(b4)){cc=b9.delegateType||ca;cb=by.test(cc+ca)?b4:b4.parentNode;for(b3=b4;cb;cb=cb.parentNode){b5.push([cb,cc]);b3=cb}if(b3===(b4.ownerDocument||o)){b5.push([b3.defaultView||b3.parentWindow||a2,cc])}}for(b7=0;b7<b5.length&&!bZ.isPropagationStopped();b7++){cb=b5[b7][0];bZ.type=b5[b7][1];b8=(bG._data(cb,"events")||{})[bZ.type]&&bG._data(cb,"handle");if(b8){b8.apply(cb,b6)}b8=b2&&cb[b2];if(b8&&bG.acceptData(cb)&&b8.apply(cb,b6)===false){bZ.preventDefault()}}bZ.type=ca;if(!cd&&!bZ.isDefaultPrevented()){if((!b9._default||b9._default.apply(b4.ownerDocument,b6)===false)&&!(ca==="click"&&bG.nodeName(b4,"a"))&&bG.acceptData(b4)){if(b2&&b4[ca]&&((ca!=="focus"&&ca!=="blur")||bZ.target.offsetWidth!==0)&&!bG.isWindow(b4)){b3=b4[b2];if(b3){b4[b2]=null}bG.event.triggered=ca;b4[ca]();bG.event.triggered=aB;if(b3){b4[b2]=b3}}}}return bZ.result},dispatch:function(e){e=bG.event.fix(e||a2.event);var b5,b4,ce,b8,b7,bZ,b6,cc,b1,cd,b2=((bG._data(this,"events")||{})[e.type]||[]),b3=b2.delegateCount,ca=[].slice.call(arguments),b0=!e.exclusive&&!e.namespace,b9=bG.event.special[e.type]||{},cb=[];ca[0]=e;e.delegateTarget=this;if(b9.preDispatch&&b9.preDispatch.call(this,e)===false){return}if(b3&&!(e.button&&e.type==="click")){for(ce=e.target;ce!=this;ce=ce.parentNode||this){if(ce.disabled!==true||e.type!=="click"){b7={};b6=[];for(b5=0;b5<b3;b5++){cc=b2[b5];b1=cc.selector;if(b7[b1]===aB){b7[b1]=bG(b1,this).index(ce)>=0}if(b7[b1]){b6.push(cc)}}if(b6.length){cb.push({elem:ce,matches:b6})}}}}if(b2.length>b3){cb.push({elem:this,matches:b2.slice(b3)})}for(b5=0;b5<cb.length&&!e.isPropagationStopped();b5++){bZ=cb[b5];e.currentTarget=bZ.elem;for(b4=0;b4<bZ.matches.length&&!e.isImmediatePropagationStopped();b4++){cc=bZ.matches[b4];if(b0||(!e.namespace&&!cc.namespace)||e.namespace_re&&e.namespace_re.test(cc.namespace)){e.data=cc.data;e.handleObj=cc;b8=((bG.event.special[cc.origType]||{}).handle||cc.handler).apply(bZ.elem,ca);if(b8!==aB){e.result=b8;if(b8===false){e.preventDefault();e.stopPropagation()}}}}}if(b9.postDispatch){b9.postDispatch.call(this,e)}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bZ,e){if(bZ.which==null){bZ.which=e.charCode!=null?e.charCode:e.keyCode}return bZ}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(b1,b0){var b2,b3,e,bZ=b0.button,b4=b0.fromElement;if(b1.pageX==null&&b0.clientX!=null){b2=b1.target.ownerDocument||o;b3=b2.documentElement;e=b2.body;b1.pageX=b0.clientX+(b3&&b3.scrollLeft||e&&e.scrollLeft||0)-(b3&&b3.clientLeft||e&&e.clientLeft||0);b1.pageY=b0.clientY+(b3&&b3.scrollTop||e&&e.scrollTop||0)-(b3&&b3.clientTop||e&&e.clientTop||0)}if(!b1.relatedTarget&&b4){b1.relatedTarget=b4===b1.target?b0.toElement:b4}if(!b1.which&&bZ!==aB){b1.which=(bZ&1?1:(bZ&2?3:(bZ&4?2:0)))}return b1}},fix:function(b0){if(b0[bG.expando]){return b0}var bZ,b3,e=b0,b1=bG.event.fixHooks[b0.type]||{},b2=b1.props?this.props.concat(b1.props):this.props;b0=bG.Event(e);for(bZ=b2.length;bZ;){b3=b2[--bZ];b0[b3]=e[b3]}if(!b0.target){b0.target=e.srcElement||o}if(b0.target.nodeType===3){b0.target=b0.target.parentNode}b0.metaKey=!!b0.metaKey;return b1.filter?b1.filter(b0,e):b0},special:{load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(b0,bZ,e){if(bG.isWindow(this)){this.onbeforeunload=e}},teardown:function(bZ,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(b0,b2,b1,bZ){var b3=bG.extend(new bG.Event(),b1,{type:b0,isSimulated:true,originalEvent:{}});if(bZ){bG.event.trigger(b3,null,b2)}else{bG.event.dispatch.call(b2,b3)}if(b3.isDefaultPrevented()){b1.preventDefault()}}};bG.event.handle=bG.event.dispatch;bG.removeEvent=o.removeEventListener?function(bZ,e,b0){if(bZ.removeEventListener){bZ.removeEventListener(e,b0,false)}}:function(b0,bZ,b1){var e="on"+bZ;if(b0.detachEvent){if(typeof b0[e]==="undefined"){b0[e]=null}b0.detachEvent(e,b1)}};bG.Event=function(bZ,e){if(!(this instanceof bG.Event)){return new bG.Event(bZ,e)}if(bZ&&bZ.type){this.originalEvent=bZ;this.type=bZ.type;this.isDefaultPrevented=(bZ.defaultPrevented||bZ.returnValue===false||bZ.getPreventDefault&&bZ.getPreventDefault())?R:X}else{this.type=bZ}if(e){bG.extend(this,e)}this.timeStamp=bZ&&bZ.timeStamp||bG.now();this[bG.expando]=true};function X(){return false}function R(){return true}bG.Event.prototype={preventDefault:function(){this.isDefaultPrevented=R;var bZ=this.originalEvent;if(!bZ){return}if(bZ.preventDefault){bZ.preventDefault()}else{bZ.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=R;var bZ=this.originalEvent;if(!bZ){return}if(bZ.stopPropagation){bZ.stopPropagation()}bZ.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=R;this.stopPropagation()},isDefaultPrevented:X,isPropagationStopped:X,isImmediatePropagationStopped:X};bG.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bZ,e){bG.event.special[bZ]={delegateType:e,bindType:e,handle:function(b3){var b1,b5=this,b4=b3.relatedTarget,b2=b3.handleObj,b0=b2.selector;if(!b4||(b4!==b5&&!bG.contains(b5,b4))){b3.type=b2.origType;b1=b2.handler.apply(this,arguments);b3.type=e}return b1}}});if(!bG.support.submitBubbles){bG.event.special.submit={setup:function(){if(bG.nodeName(this,"form")){return false}bG.event.add(this,"click._submit keypress._submit",function(b1){var b0=b1.target,bZ=bG.nodeName(b0,"input")||bG.nodeName(b0,"button")?b0.form:aB;if(bZ&&!bG._data(bZ,"_submit_attached")){bG.event.add(bZ,"submit._submit",function(e){e._submit_bubble=true});bG._data(bZ,"_submit_attached",true)}})},postDispatch:function(e){if(e._submit_bubble){delete e._submit_bubble;if(this.parentNode&&!e.isTrigger){bG.event.simulate("submit",this.parentNode,e,true)}}},teardown:function(){if(bG.nodeName(this,"form")){return false}bG.event.remove(this,"._submit")}}}if(!bG.support.changeBubbles){bG.event.special.change={setup:function(){if(bE.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){bG.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});bG.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false}bG.event.simulate("change",this,e,true)})}return false}bG.event.add(this,"beforeactivate._change",function(b0){var bZ=b0.target;if(bE.test(bZ.nodeName)&&!bG._data(bZ,"_change_attached")){bG.event.add(bZ,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){bG.event.simulate("change",this.parentNode,e,true)}});bG._data(bZ,"_change_attached",true)}})},handle:function(bZ){var e=bZ.target;if(this!==e||bZ.isSimulated||bZ.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bZ.handleObj.handler.apply(this,arguments)}},teardown:function(){bG.event.remove(this,"._change");return !bE.test(this.nodeName)}}}if(!bG.support.focusinBubbles){bG.each({focus:"focusin",blur:"focusout"},function(b1,e){var bZ=0,b0=function(b2){bG.event.simulate(e,b2.target,bG.event.fix(b2),true)};bG.event.special[e]={setup:function(){if(bZ++===0){o.addEventListener(b1,b0,true)}},teardown:function(){if(--bZ===0){o.removeEventListener(b1,b0,true)}}}})}bG.fn.extend({on:function(b0,e,b3,b2,bZ){var b4,b1;if(typeof b0==="object"){if(typeof e!=="string"){b3=b3||e;e=aB}for(b1 in b0){this.on(b1,e,b3,b0[b1],bZ)}return this}if(b3==null&&b2==null){b2=e;b3=e=aB}else{if(b2==null){if(typeof e==="string"){b2=b3;b3=aB}else{b2=b3;b3=e;e=aB}}}if(b2===false){b2=X}else{if(!b2){return this}}if(bZ===1){b4=b2;b2=function(b5){bG().off(b5);return b4.apply(this,arguments)};b2.guid=b4.guid||(b4.guid=bG.guid++)}return this.each(function(){bG.event.add(this,b0,b2,b3,e)})},one:function(bZ,e,b1,b0){return this.on(bZ,e,b1,b0,1)},off:function(b0,e,b2){var bZ,b1;if(b0&&b0.preventDefault&&b0.handleObj){bZ=b0.handleObj;bG(b0.delegateTarget).off(bZ.namespace?bZ.origType+"."+bZ.namespace:bZ.origType,bZ.selector,bZ.handler);return this}if(typeof b0==="object"){for(b1 in b0){this.off(b1,e,b0[b1])}return this}if(e===false||typeof e==="function"){b2=e;e=aB}if(b2===false){b2=X}return this.each(function(){bG.event.remove(this,b0,b2,e)})},bind:function(e,b0,bZ){return this.on(e,null,b0,bZ)},unbind:function(e,bZ){return this.off(e,null,bZ)},live:function(e,b0,bZ){bG(this.context).on(e,this.selector,b0,bZ);return this},die:function(e,bZ){bG(this.context).off(e,this.selector||"**",bZ);return this},delegate:function(e,bZ,b1,b0){return this.on(bZ,e,b1,b0)},undelegate:function(e,bZ,b0){return arguments.length==1?this.off(e,"**"):this.off(bZ,e||"**",b0)},trigger:function(e,bZ){return this.each(function(){bG.event.trigger(e,bZ,this)})},triggerHandler:function(e,bZ){if(this[0]){return bG.event.trigger(e,bZ,this[0],true)}},toggle:function(b1){var bZ=arguments,e=b1.guid||bG.guid++,b0=0,b2=function(b3){var b4=(bG._data(this,"lastToggle"+b1.guid)||0)%b0;bG._data(this,"lastToggle"+b1.guid,b4+1);b3.preventDefault();return bZ[b4].apply(this,arguments)||false};b2.guid=e;while(b0<bZ.length){bZ[b0++].guid=e}return this.click(b2)},hover:function(e,bZ){return this.mouseenter(e).mouseleave(bZ||e)}});bG.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bZ,e){bG.fn[e]=function(b1,b0){if(b0==null){b0=b1;b1=null}return arguments.length>0?this.on(e,null,b1,b0):this.trigger(e)};if(a3.test(e)){bG.event.fixHooks[e]=bG.event.keyHooks}if(bK.test(e)){bG.event.fixHooks[e]=bG.event.mouseHooks}});
|
| 15 |
-
/*!
|
| 16 |
-
* Sizzle CSS Selector Engine
|
| 17 |
-
* Copyright 2012 jQuery Foundation and other contributors
|
| 18 |
-
* Released under the MIT license
|
| 19 |
-
* http://sizzlejs.com/
|
| 20 |
-
*/
|
| 21 |
-
(function(cM,cf){var cn,cR,b9,cE,b0,cj,cv,cc,ce,cb,b8=true,cr="undefined",cU=("sizcache"+Math.random()).replace(".",""),b7=cM.document,ca=b7.documentElement,cd=0,ci=[].slice,cQ=[].push,cW=function(e,c1){e[cU]=c1||true;return e},cZ=function(){var e={},c1=[];return cW(function(c2,c3){if(c1.push(c2)>cE.cacheLength){delete e[c1.shift()]}return(e[c2]=c3)},e)},cO=cZ(),cP=cZ(),ck=cZ(),cu="[\\x20\\t\\r\\n\\f]",ch="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",cg=ch.replace("w","w#"),cY="([*^$|!~]?=)",cJ="\\["+cu+"*("+ch+")"+cu+"*(?:"+cY+cu+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cg+")|)|)"+cu+"*\\]",c0=":("+ch+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+cJ+")|[^:]|\\\\.)*|.*))\\)|)",cw=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",cS=new RegExp("^"+cu+"+|((?:^|[^\\\\])(?:\\\\.)*)"+cu+"+$","g"),b4=new RegExp("^"+cu+"*,"+cu+"*"),cB=new RegExp("^"+cu+"*([\\x20\\t\\r\\n\\f>+~])"+cu+"*"),cG=new RegExp(c0),cI=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,cz=/^:not/,cL=/[\x20\t\r\n\f]*[+~]/,cV=/:not\($/,co=/h\d/i,cH=/input|select|textarea|button/i,cp=/\\(?!\\)/g,cA={ID:new RegExp("^#("+ch+")"),CLASS:new RegExp("^\\.("+ch+")"),NAME:new RegExp("^\\[name=['\"]?("+ch+")['\"]?\\]"),TAG:new RegExp("^("+ch.replace("w","w*")+")"),ATTR:new RegExp("^"+cJ),PSEUDO:new RegExp("^"+c0),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+cu+"*(even|odd|(([+-]|)(\\d*)n|)"+cu+"*(?:([+-]|)"+cu+"*(\\d+)|))"+cu+"*\\)|)","i"),POS:new RegExp(cw,"ig"),needsContext:new RegExp("^"+cu+"*[>+~]|"+cw,"i")},cD=function(c1){var c3=b7.createElement("div");try{return c1(c3)}catch(c2){return false}finally{c3=null}},b6=cD(function(e){e.appendChild(b7.createComment(""));return !e.getElementsByTagName("*").length}),cy=cD(function(e){e.innerHTML="<a href='#'></a>";return e.firstChild&&typeof e.firstChild.getAttribute!==cr&&e.firstChild.getAttribute("href")==="#"}),cm=cD(function(c1){c1.innerHTML="<select></select>";var e=typeof c1.lastChild.getAttribute("multiple");return e!=="boolean"&&e!=="string"}),cx=cD(function(e){e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!e.getElementsByClassName||!e.getElementsByClassName("e").length){return false}e.lastChild.className="e";return e.getElementsByClassName("e").length===2}),bZ=cD(function(c1){c1.id=cU+0;c1.innerHTML="<a name='"+cU+"'></a><div name='"+cU+"'></div>";ca.insertBefore(c1,ca.firstChild);var e=b7.getElementsByName&&b7.getElementsByName(cU).length===2+b7.getElementsByName(cU+0).length;b9=!b7.getElementById(cU);ca.removeChild(c1);return e});try{ci.call(ca.childNodes,0)[0].nodeType}catch(cX){ci=function(c1){var c2,e=[];for(;(c2=this[c1]);c1++){e.push(c2)}return e}}function cK(c3,e,c5,c8){c5=c5||[];e=e||b7;var c6,c1,c7,c2,c4=e.nodeType;if(c4!==1&&c4!==9){return[]}if(!c3||typeof c3!=="string"){return c5}c7=cj(e);if(!c7&&!c8){if((c6=cI.exec(c3))){if((c2=c6[1])){if(c4===9){c1=e.getElementById(c2);if(c1&&c1.parentNode){if(c1.id===c2){c5.push(c1);return c5}}else{return c5}}else{if(e.ownerDocument&&(c1=e.ownerDocument.getElementById(c2))&&cv(e,c1)&&c1.id===c2){c5.push(c1);return c5}}}else{if(c6[2]){cQ.apply(c5,ci.call(e.getElementsByTagName(c3),0));return c5}else{if((c2=c6[3])&&cx&&e.getElementsByClassName){cQ.apply(c5,ci.call(e.getElementsByClassName(c2),0));return c5}}}}}return cT(c3,e,c5,c8,c7)}cK.matches=function(c1,e){return cK(c1,null,null,e)};cK.matchesSelector=function(e,c1){return cK(c1,null,null,[e]).length>0};function cC(e){return function(c2){var c1=c2.nodeName.toLowerCase();return c1==="input"&&c2.type===e}}function b3(e){return function(c2){var c1=c2.nodeName.toLowerCase();return(c1==="input"||c1==="button")&&c2.type===e}}b0=cK.getText=function(c4){var c3,c1="",c2=0,e=c4.nodeType;if(e){if(e===1||e===9||e===11){if(typeof c4.textContent==="string"){return c4.textContent}else{for(c4=c4.firstChild;c4;c4=c4.nextSibling){c1+=b0(c4)}}}else{if(e===3||e===4){return c4.nodeValue}}}else{for(;(c3=c4[c2]);c2++){c1+=b0(c3)}}return c1};cj=cK.isXML=function cj(e){var c1=e&&(e.ownerDocument||e).documentElement;return c1?c1.nodeName!=="HTML":false};cv=cK.contains=ca.contains?function(c1,e){var c3=c1.nodeType===9?c1.documentElement:c1,c2=e&&e.parentNode;return c1===c2||!!(c2&&c2.nodeType===1&&c3.contains&&c3.contains(c2))}:ca.compareDocumentPosition?function(c1,e){return e&&!!(c1.compareDocumentPosition(e)&16)}:function(c1,e){while((e=e.parentNode)){if(e===c1){return true}}return false};cK.attr=function(c3,c2){var e,c1=cj(c3);if(!c1){c2=c2.toLowerCase()}if(cE.attrHandle[c2]){return cE.attrHandle[c2](c3)}if(cm||c1){return c3.getAttribute(c2)}e=c3.getAttributeNode(c2);return e?typeof c3[c2]==="boolean"?c3[c2]?c2:null:e.specified?e.value:null:null};cE=cK.selectors={cacheLength:50,createPseudo:cW,match:cA,order:new RegExp("ID|TAG"+(bZ?"|NAME":"")+(cx?"|CLASS":"")),attrHandle:cy?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:b9?function(c3,c2,c1){if(typeof c2.getElementById!==cr&&!c1){var e=c2.getElementById(c3);return e&&e.parentNode?[e]:[]}}:function(c3,c2,c1){if(typeof c2.getElementById!==cr&&!c1){var e=c2.getElementById(c3);return e?e.id===c3||typeof e.getAttributeNode!==cr&&e.getAttributeNode("id").value===c3?[e]:cf:[]}},TAG:b6?function(e,c1){if(typeof c1.getElementsByTagName!==cr){return c1.getElementsByTagName(e)}}:function(e,c4){var c3=c4.getElementsByTagName(e);if(e==="*"){var c5,c2=[],c1=0;for(;(c5=c3[c1]);c1++){if(c5.nodeType===1){c2.push(c5)}}return c2}return c3},NAME:function(e,c1){if(typeof c1.getElementsByName!==cr){return c1.getElementsByName(name)}},CLASS:function(c2,c1,e){if(typeof c1.getElementsByClassName!==cr&&!e){return c1.getElementsByClassName(c2)}}},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(cp,"");e[3]=(e[4]||e[5]||"").replace(cp,"");if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1]==="nth"){if(!e[2]){cK.error(e[0])}e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd"));e[4]=+((e[6]+e[7])||e[2]==="odd")}else{if(e[2]){cK.error(e[0])}}return e},PSEUDO:function(c2,c3,c1){var c4,e;if(cA.CHILD.test(c2[0])){return null}if(c2[3]){c2[2]=c2[3]}else{if((c4=c2[4])){if(cG.test(c4)&&(e=b1(c4,c3,c1,true))&&(e=c4.indexOf(")",c4.length-e)-c4.length)){c4=c4.slice(0,e);c2[0]=c2[0].slice(0,e)}c2[2]=c4}}return c2.slice(0,3)}},filter:{ID:b9?function(e){e=e.replace(cp,"");return function(c1){return c1.getAttribute("id")===e}}:function(e){e=e.replace(cp,"");return function(c2){var c1=typeof c2.getAttributeNode!==cr&&c2.getAttributeNode("id");return c1&&c1.value===e}},TAG:function(e){if(e==="*"){return function(){return true}}e=e.replace(cp,"").toLowerCase();return function(c1){return c1.nodeName&&c1.nodeName.toLowerCase()===e}},CLASS:function(e){var c1=cO[cU][e];if(!c1){c1=cO(e,new RegExp("(^|"+cu+")"+e+"("+cu+"|$)"))}return function(c2){return c1.test(c2.className||(typeof c2.getAttribute!==cr&&c2.getAttribute("class"))||"")}},ATTR:function(c2,c1,e){if(!c1){return function(c3){return cK.attr(c3,c2)!=null}}return function(c4){var c3=cK.attr(c4,c2),c5=c3+"";if(c3==null){return c1==="!="}switch(c1){case"=":return c5===e;case"!=":return c5!==e;case"^=":return e&&c5.indexOf(e)===0;case"*=":return e&&c5.indexOf(e)>-1;case"$=":return e&&c5.substr(c5.length-e.length)===e;case"~=":return(" "+c5+" ").indexOf(e)>-1;case"|=":return c5===e||c5.substr(0,e.length+1)===e+"-"}}},CHILD:function(c1,c3,c4,c2){if(c1==="nth"){var e=cd++;return function(c8){var c5,c9,c7=0,c6=c8;if(c4===1&&c2===0){return true}c5=c8.parentNode;if(c5&&(c5[cU]!==e||!c8.sizset)){for(c6=c5.firstChild;c6;c6=c6.nextSibling){if(c6.nodeType===1){c6.sizset=++c7;if(c6===c8){break}}}c5[cU]=e}c9=c8.sizset-c2;if(c4===0){return c9===0}else{return(c9%c4===0&&c9/c4>=0)}}}return function(c6){var c5=c6;switch(c1){case"only":case"first":while((c5=c5.previousSibling)){if(c5.nodeType===1){return false}}if(c1==="first"){return true}c5=c6;case"last":while((c5=c5.nextSibling)){if(c5.nodeType===1){return false}}return true}}},PSEUDO:function(c5,c4,c2,c1){var e,c3=cE.pseudos[c5]||cE.pseudos[c5.toLowerCase()];if(!c3){cK.error("unsupported pseudo: "+c5)}if(!c3[cU]){if(c3.length>1){e=[c5,c5,"",c4];return function(c6){return c3(c6,0,e)}}return c3}return c3(c4,c2,c1)}},pseudos:{not:cW(function(e,c2,c1){var c3=cc(e.replace(cS,"$1"),c2,c1);return function(c4){return !c3(c4)}}),enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var c1=e.nodeName.toLowerCase();return(c1==="input"&&!!e.checked)||(c1==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !cE.pseudos.empty(e)},empty:function(c1){var e;c1=c1.firstChild;while(c1){if(c1.nodeName>"@"||(e=c1.nodeType)===3||e===4){return false}c1=c1.nextSibling}return true},contains:cW(function(e){return function(c1){return(c1.textContent||c1.innerText||b0(c1)).indexOf(e)>-1}}),has:cW(function(e){return function(c1){return cK(e,c1).length>0}}),header:function(e){return co.test(e.nodeName)},text:function(c2){var c1,e;return c2.nodeName.toLowerCase()==="input"&&(c1=c2.type)==="text"&&((e=c2.getAttribute("type"))==null||e.toLowerCase()===c1)},radio:cC("radio"),checkbox:cC("checkbox"),file:cC("file"),password:cC("password"),image:cC("image"),submit:b3("submit"),reset:b3("reset"),button:function(c1){var e=c1.nodeName.toLowerCase();return e==="input"&&c1.type==="button"||e==="button"},input:function(e){return cH.test(e.nodeName)},focus:function(e){var c1=e.ownerDocument;return e===c1.activeElement&&(!c1.hasFocus||c1.hasFocus())&&!!(e.type||e.href)},active:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(c2,c1,e){return e?c2.slice(1):[c2[0]]},last:function(c3,c2,c1){var e=c3.pop();return c1?c3:[e]},even:function(c5,c4,c3){var c2=[],c1=c3?1:0,e=c5.length;for(;c1<e;c1=c1+2){c2.push(c5[c1])}return c2},odd:function(c5,c4,c3){var c2=[],c1=c3?0:1,e=c5.length;for(;c1<e;c1=c1+2){c2.push(c5[c1])}return c2},lt:function(c2,c1,e){return e?c2.slice(+c1):c2.slice(0,+c1)},gt:function(c2,c1,e){return e?c2.slice(0,+c1+1):c2.slice(+c1+1)},eq:function(c3,c2,c1){var e=c3.splice(+c2,1);return c1?c3:e}}};function b2(c1,e,c2){if(c1===e){return c2}var c3=c1.nextSibling;while(c3){if(c3===e){return -1}c3=c3.nextSibling}return 1}ce=ca.compareDocumentPosition?function(c1,e){if(c1===e){cb=true;return 0}return(!c1.compareDocumentPosition||!e.compareDocumentPosition?c1.compareDocumentPosition:c1.compareDocumentPosition(e)&4)?-1:1}:function(c8,c7){if(c8===c7){cb=true;return 0}else{if(c8.sourceIndex&&c7.sourceIndex){return c8.sourceIndex-c7.sourceIndex}}var c5,c1,c2=[],e=[],c4=c8.parentNode,c6=c7.parentNode,c9=c4;if(c4===c6){return b2(c8,c7)}else{if(!c4){return -1}else{if(!c6){return 1}}}while(c9){c2.unshift(c9);c9=c9.parentNode}c9=c6;while(c9){e.unshift(c9);c9=c9.parentNode}c5=c2.length;c1=e.length;for(var c3=0;c3<c5&&c3<c1;c3++){if(c2[c3]!==e[c3]){return b2(c2[c3],e[c3])}}return c3===c5?b2(c8,e[c3],-1):b2(c2[c3],c7,1)};[0,0].sort(ce);b8=!cb;cK.uniqueSort=function(c1){var c2,e=1;cb=b8;c1.sort(ce);if(cb){for(;(c2=c1[e]);e++){if(c2===c1[e-1]){c1.splice(e--,1)}}}return c1};cK.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};function b1(c7,c1,c9,dg){var c2,da,dc,dd,db,c4,df,c8,e,c3,c6=!c9&&c1!==b7,de=(c6?"<s>":"")+c7.replace(cS,"$1<s>"),c5=cP[cU][de];if(c5){return dg?0:ci.call(c5,0)}db=c7;c4=[];c8=0;e=cE.preFilter;c3=cE.filter;while(db){if(!c2||(da=b4.exec(db))){if(da){db=db.slice(da[0].length);dc.selector=df}c4.push(dc=[]);df="";if(c6){db=" "+db}}c2=false;if((da=cB.exec(db))){df+=da[0];db=db.slice(da[0].length);c2=dc.push({part:da.pop().replace(cS," "),string:da[0],captures:da})}for(dd in c3){if((da=cA[dd].exec(db))&&(!e[dd]||(da=e[dd](da,c1,c9)))){df+=da[0];db=db.slice(da[0].length);c2=dc.push({part:dd,string:da.shift(),captures:da})}}if(!c2){break}}if(df){dc.selector=df}return dg?db.length:db?cK.error(c7):ci.call(cP(de,c4),0)}function cs(c5,c4,c3,c1){var e=c4.dir,c2=cd++;if(!c5){c5=function(c6){return c6===c3}}return c4.first?function(c6){while((c6=c6[e])){if(c6.nodeType===1){return c5(c6)&&c6}}}:c1?function(c6){while((c6=c6[e])){if(c6.nodeType===1){if(c5(c6)){return c6}}}}:function(c7){var c6,c8=c2+"."+cn,c9=c8+"."+cR;while((c7=c7[e])){if(c7.nodeType===1){if((c6=c7[cU])===c9){return c7.sizset}else{if(typeof c6==="string"&&c6.indexOf(c8)===0){if(c7.sizset){return c7}}else{c7[cU]=c9;if(c5(c7)){c7.sizset=true;return c7}c7.sizset=false}}}}}}function cq(e,c1){return e?function(c3){var c2=c1(c3);return c2&&e(c2===true?c3:c2)}:c1}function ct(c5,c3,e){var c2,c4,c1=0;for(;(c2=c5[c1]);c1++){if(cE.relative[c2.part]){c4=cs(c4,cE.relative[c2.part],c3,e)}else{c4=cq(c4,cE.filter[c2.part].apply(null,c2.captures.concat(c3,e)))}}return c4}function b5(e){return function(c2){var c3,c1=0;for(;(c3=e[c1]);c1++){if(c3(c2)){return true}}return false}}cc=cK.compile=function(c1,c4,c2){var c6,c3,e,c5=ck[cU][c1];if(c5&&c5.context===c4){return c5}c6=b1(c1,c4,c2);for(c3=0,e=c6.length;c3<e;c3++){c6[c3]=ct(c6[c3],c4,c2)}c5=ck(c1,b5(c6));c5.context=c4;c5.runs=c5.dirruns=0;return c5};function cl(c1,c5,c4,c2){var c3=0,e=c5.length;for(;c3<e;c3++){cK(c1,c5[c3],c4,c2)}}function cF(e,c2,c6,c7,c1,c5){var c3,c4=cE.setFilters[c2.toLowerCase()];if(!c4){cK.error(c2)}if(e||!(c3=c1)){cl(e||"*",c7,(c3=[]),c1)}return c3.length>0?c4(c3,c6,c5):[]}function cN(dj,e,dc,c2){var c8,dd,de,db,c5,df,c4,da,c6,c9,di,dk,c1,dg=0,dh=dj.length,c3=cA.POS,c7=new RegExp("^"+c3.source+"(?!"+cu+")","i"),dl=function(){var dn=1,dm=arguments.length-2;for(;dn<dm;dn++){if(arguments[dn]===cf){c6[dn]=cf}}};for(;dg<dh;dg++){c8=dj[dg];dd="";da=c2;for(de=0,db=c8.length;de<db;de++){c5=c8[de];df=c5.string;if(c5.part==="PSEUDO"){c3.exec("");c4=0;while((c6=c3.exec(df))){c9=true;di=c3.lastIndex=c6.index+c6[0].length;if(di>c4){dd+=df.slice(c4,c6.index);c4=di;dk=[e];if(cB.test(dd)){if(da){dk=da}da=c2}if((c1=cV.test(dd))){dd=dd.slice(0,-5).replace(cB,"$&*");c4++}if(c6.length>1){c6[0].replace(c7,dl)}da=cF(dd,c6[1],c6[2],dk,da,c1)}dd=""}}if(!c9){dd+=df}c9=false}if(dd){if(cB.test(dd)){cl(dd,da||[e],dc,c2)}else{cK(dd,e,dc,c2?c2.concat(da):da)}}else{cQ.apply(dc,da)}}return dh===1?dc:cK.uniqueSort(dc)}function cT(c6,c1,c8,db,da){c6=c6.replace(cS,"$1");var e,dc,c4,c3,c7,de,c5,c2,df,dd,c9=b1(c6,c1,da),dg=c1.nodeType;if(cA.POS.test(c6)){return cN(c9,c1,c8,db)}if(db){e=ci.call(db,0)}else{if(c9.length===1){if((de=ci.call(c9[0],0)).length>2&&(c5=de[0]).part==="ID"&&dg===9&&!da&&cE.relative[de[1].part]){c1=cE.find.ID(c5.captures[0].replace(cp,""),c1,da)[0];if(!c1){return c8}c6=c6.slice(de.shift().string.length)}df=((c9=cL.exec(de[0].string))&&!c9.index&&c1.parentNode)||c1;c2="";for(c7=de.length-1;c7>=0;c7--){c5=de[c7];dd=c5.part;c2=c5.string+c2;if(cE.relative[dd]){break}if(cE.order.test(dd)){e=cE.find[dd](c5.captures[0].replace(cp,""),df,da);if(e==null){continue}else{c6=c6.slice(0,c6.length-c2.length)+c2.replace(cA[dd],"");if(!c6){cQ.apply(c8,ci.call(e,0))}break}}}}}if(c6){dc=cc(c6,c1,da);cn=dc.dirruns++;if(e==null){e=cE.find.TAG("*",(cL.test(c6)&&c1.parentNode)||c1)}for(c7=0;(c3=e[c7]);c7++){cR=dc.runs++;if(dc(c3)){c8.push(c3)}}}return c8}if(b7.querySelectorAll){(function(){var c5,c6=cT,c4=/'|\\/g,c2=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,c1=[],e=[":active"],c3=ca.matchesSelector||ca.mozMatchesSelector||ca.webkitMatchesSelector||ca.oMatchesSelector||ca.msMatchesSelector;cD(function(c7){c7.innerHTML="<select><option selected=''></option></select>";if(!c7.querySelectorAll("[selected]").length){c1.push("\\["+cu+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!c7.querySelectorAll(":checked").length){c1.push(":checked")}});cD(function(c7){c7.innerHTML="<p test=''></p>";if(c7.querySelectorAll("[test^='']").length){c1.push("[*^$]="+cu+"*(?:\"\"|'')")}c7.innerHTML="<input type='hidden'/>";if(!c7.querySelectorAll(":enabled").length){c1.push(":enabled",":disabled")}});c1=c1.length&&new RegExp(c1.join("|"));cT=function(dd,c8,de,dh,dg){if(!dh&&!dg&&(!c1||!c1.test(dd))){if(c8.nodeType===9){try{cQ.apply(de,ci.call(c8.querySelectorAll(dd),0));return de}catch(dc){}}else{if(c8.nodeType===1&&c8.nodeName.toLowerCase()!=="object"){var db,df,di,da=c8.getAttribute("id"),c7=da||cU,c9=cL.test(dd)&&c8.parentNode||c8;if(da){c7=c7.replace(c4,"\\$&")}else{c8.setAttribute("id",c7)}db=b1(dd,c8,dg);c7="[id='"+c7+"']";for(df=0,di=db.length;df<di;df++){db[df]=c7+db[df].selector}try{cQ.apply(de,ci.call(c9.querySelectorAll(db.join(",")),0));return de}catch(dc){}finally{if(!da){c8.removeAttribute("id")}}}}}return c6(dd,c8,de,dh,dg)};if(c3){cD(function(c8){c5=c3.call(c8,"div");try{c3.call(c8,"[test!='']:sizzle");e.push(cA.PSEUDO.source,cA.POS.source,"!=")}catch(c7){}});e=new RegExp(e.join("|"));cK.matchesSelector=function(c8,da){da=da.replace(c2,"='$1']");if(!cj(c8)&&!e.test(da)&&(!c1||!c1.test(da))){try{var c7=c3.call(c8,da);if(c7||c5||c8.document&&c8.document.nodeType!==11){return c7}}catch(c9){}}return cK(da,null,null,[c8]).length>0}}})()}cE.setFilters.nth=cE.setFilters.eq;cE.filters=cE.pseudos;cK.attr=bG.attr;bG.find=cK;bG.expr=cK.selectors;bG.expr[":"]=bG.expr.pseudos;bG.unique=cK.uniqueSort;bG.text=cK.getText;bG.isXMLDoc=cK.isXML;bG.contains=cK.contains})(a2);var ag=/Until$/,bq=/^(?:parents|prev(?:Until|All))/,al=/^.[^:#\[\.,]*$/,y=bG.expr.match.needsContext,bu={children:true,contents:true,next:true,prev:true};bG.fn.extend({find:function(e){var b2,bZ,b4,b5,b3,b1,b0=this;if(typeof e!=="string"){return bG(e).filter(function(){for(b2=0,bZ=b0.length;b2<bZ;b2++){if(bG.contains(b0[b2],this)){return true}}})}b1=this.pushStack("","find",e);for(b2=0,bZ=this.length;b2<bZ;b2++){b4=b1.length;bG.find(e,this[b2],b1);if(b2>0){for(b5=b4;b5<b1.length;b5++){for(b3=0;b3<b4;b3++){if(b1[b3]===b1[b5]){b1.splice(b5--,1);break}}}}}return b1},has:function(b1){var b0,bZ=bG(b1,this),e=bZ.length;return this.filter(function(){for(b0=0;b0<e;b0++){if(bG.contains(this,bZ[b0])){return true}}})},not:function(e){return this.pushStack(aM(this,e,false),"not",e)},filter:function(e){return this.pushStack(aM(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?y.test(e)?bG(e,this.context).index(this[0])>=0:bG.filter(e,this).length>0:this.filter(e).length>0)},closest:function(b2,b1){var b3,b0=0,e=this.length,bZ=[],b4=y.test(b2)||typeof b2!=="string"?bG(b2,b1||this.context):0;for(;b0<e;b0++){b3=this[b0];while(b3&&b3.ownerDocument&&b3!==b1&&b3.nodeType!==11){if(b4?b4.index(b3)>-1:bG.find.matchesSelector(b3,b2)){bZ.push(b3);break}b3=b3.parentNode}}bZ=bZ.length>1?bG.unique(bZ):bZ;return this.pushStack(bZ,"closest",b2)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return bG.inArray(this[0],bG(e))}return bG.inArray(e.jquery?e[0]:e,this)},add:function(e,bZ){var b1=typeof e==="string"?bG(e,bZ):bG.makeArray(e&&e.nodeType?[e]:e),b0=bG.merge(this.get(),b1);return this.pushStack(aR(b1[0])||aR(b0[0])?b0:bG.unique(b0))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});bG.fn.andSelf=bG.fn.addBack;function aR(e){return !e||!e.parentNode||e.parentNode.nodeType===11}function aY(bZ,e){do{bZ=bZ[e]}while(bZ&&bZ.nodeType!==1);return bZ}bG.each({parent:function(bZ){var e=bZ.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bG.dir(e,"parentNode")},parentsUntil:function(bZ,e,b0){return bG.dir(bZ,"parentNode",b0)},next:function(e){return aY(e,"nextSibling")},prev:function(e){return aY(e,"previousSibling")},nextAll:function(e){return bG.dir(e,"nextSibling")},prevAll:function(e){return bG.dir(e,"previousSibling")},nextUntil:function(bZ,e,b0){return bG.dir(bZ,"nextSibling",b0)},prevUntil:function(bZ,e,b0){return bG.dir(bZ,"previousSibling",b0)},siblings:function(e){return bG.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bG.sibling(e.firstChild)},contents:function(e){return bG.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bG.merge([],e.childNodes)}},function(e,bZ){bG.fn[e]=function(b2,b0){var b1=bG.map(this,bZ,b2);if(!ag.test(e)){b0=b2}if(b0&&typeof b0==="string"){b1=bG.filter(b0,b1)}b1=this.length>1&&!bu[e]?bG.unique(b1):b1;if(this.length>1&&bq.test(e)){b1=b1.reverse()}return this.pushStack(b1,e,a4.call(arguments).join(","))}});bG.extend({filter:function(b0,e,bZ){if(bZ){b0=":not("+b0+")"}return e.length===1?bG.find.matchesSelector(e[0],b0)?[e[0]]:[]:bG.find.matches(b0,e)},dir:function(b0,bZ,b2){var e=[],b1=b0[bZ];while(b1&&b1.nodeType!==9&&(b2===aB||b1.nodeType!==1||!bG(b1).is(b2))){if(b1.nodeType===1){e.push(b1)}b1=b1[bZ]}return e},sibling:function(b0,bZ){var e=[];for(;b0;b0=b0.nextSibling){if(b0.nodeType===1&&b0!==bZ){e.push(b0)}}return e}});function aM(b1,b0,e){b0=b0||0;if(bG.isFunction(b0)){return bG.grep(b1,function(b3,b2){var b4=!!b0.call(b3,b2,b3);return b4===e})}else{if(b0.nodeType){return bG.grep(b1,function(b3,b2){return(b3===b0)===e})}else{if(typeof b0==="string"){var bZ=bG.grep(b1,function(b2){return b2.nodeType===1});if(al.test(b0)){return bG.filter(b0,bZ,!e)}else{b0=bG.filter(b0,bZ)}}}}return bG.grep(b1,function(b3,b2){return(bG.inArray(b3,b0)>=0)===e})}function A(e){var b0=c.split("|"),bZ=e.createDocumentFragment();if(bZ.createElement){while(b0.length){bZ.createElement(b0.pop())}}return bZ}var c="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",av=/ jQuery\d+="(?:null|\d+)"/g,bY=/^\s+/,ay=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,bT=/<tbody/i,J=/<|&#?\w+;/,aj=/<(?:script|style|link)/i,ap=/<(?:script|object|embed|option|style)/i,K=new RegExp("<(?:"+c+")[\\s/>]","i"),aE=/^(?:checkbox|radio)$/,bR=/checked\s*(?:[^=]|=\s*.checked.)/i,bw=/\/(java|ecma)script/i,aH=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,T={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},aQ=A(o),l=aQ.appendChild(o.createElement("div"));T.optgroup=T.option;T.tbody=T.tfoot=T.colgroup=T.caption=T.thead;T.th=T.td;if(!bG.support.htmlSerialize){T._default=[1,"X<div>","</div>"]}bG.fn.extend({text:function(e){return bG.access(this,function(bZ){return bZ===aB?bG.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(bZ))},null,e,arguments.length)},wrapAll:function(e){if(bG.isFunction(e)){return this.each(function(b0){bG(this).wrapAll(e.call(this,b0))})}if(this[0]){var bZ=bG(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bZ.insertBefore(this[0])}bZ.map(function(){var b0=this;while(b0.firstChild&&b0.firstChild.nodeType===1){b0=b0.firstChild}return b0}).append(this)}return this},wrapInner:function(e){if(bG.isFunction(e)){return this.each(function(bZ){bG(this).wrapInner(e.call(this,bZ))})}return this.each(function(){var bZ=bG(this),b0=bZ.contents();if(b0.length){b0.wrapAll(e)}else{bZ.append(e)}})},wrap:function(e){var bZ=bG.isFunction(e);return this.each(function(b0){bG(this).wrapAll(bZ?e.call(this,b0):e)})},unwrap:function(){return this.parent().each(function(){if(!bG.nodeName(this,"body")){bG(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11){this.insertBefore(e,this.firstChild)}})},before:function(){if(!aR(this[0])){return this.domManip(arguments,false,function(bZ){this.parentNode.insertBefore(bZ,this)})}if(arguments.length){var e=bG.clean(arguments);return this.pushStack(bG.merge(e,this),"before",this.selector)}},after:function(){if(!aR(this[0])){return this.domManip(arguments,false,function(bZ){this.parentNode.insertBefore(bZ,this.nextSibling)})}if(arguments.length){var e=bG.clean(arguments);return this.pushStack(bG.merge(this,e),"after",this.selector)}},remove:function(e,b1){var b0,bZ=0;for(;(b0=this[bZ])!=null;bZ++){if(!e||bG.filter(e,[b0]).length){if(!b1&&b0.nodeType===1){bG.cleanData(b0.getElementsByTagName("*"));bG.cleanData([b0])}if(b0.parentNode){b0.parentNode.removeChild(b0)}}}return this},empty:function(){var bZ,e=0;for(;(bZ=this[e])!=null;e++){if(bZ.nodeType===1){bG.cleanData(bZ.getElementsByTagName("*"))}while(bZ.firstChild){bZ.removeChild(bZ.firstChild)}}return this},clone:function(bZ,e){bZ=bZ==null?false:bZ;e=e==null?bZ:e;return this.map(function(){return bG.clone(this,bZ,e)})},html:function(e){return bG.access(this,function(b2){var b1=this[0]||{},b0=0,bZ=this.length;if(b2===aB){return b1.nodeType===1?b1.innerHTML.replace(av,""):aB}if(typeof b2==="string"&&!aj.test(b2)&&(bG.support.htmlSerialize||!K.test(b2))&&(bG.support.leadingWhitespace||!bY.test(b2))&&!T[(p.exec(b2)||["",""])[1].toLowerCase()]){b2=b2.replace(ay,"<$1></$2>");try{for(;b0<bZ;b0++){b1=this[b0]||{};if(b1.nodeType===1){bG.cleanData(b1.getElementsByTagName("*"));b1.innerHTML=b2}}b1=0}catch(b3){}}if(b1){this.empty().append(b2)}},null,e,arguments.length)},replaceWith:function(e){if(!aR(this[0])){if(bG.isFunction(e)){return this.each(function(b1){var b0=bG(this),bZ=b0.html();b0.replaceWith(e.call(this,b1,bZ))})}if(typeof e!=="string"){e=bG(e).detach()}return this.each(function(){var b0=this.nextSibling,bZ=this.parentNode;bG(this).remove();if(b0){bG(b0).before(e)}else{bG(bZ).append(e)}})}return this.length?this.pushStack(bG(bG.isFunction(e)?e():e),"replaceWith",e):this},detach:function(e){return this.remove(e,true)},domManip:function(b4,b8,b7){b4=[].concat.apply([],b4);var b0,b2,b3,b6,b1=0,b5=b4[0],bZ=[],e=this.length;if(!bG.support.checkClone&&e>1&&typeof b5==="string"&&bR.test(b5)){return this.each(function(){bG(this).domManip(b4,b8,b7)})}if(bG.isFunction(b5)){return this.each(function(ca){var b9=bG(this);b4[0]=b5.call(this,ca,b8?b9.html():aB);b9.domManip(b4,b8,b7)})}if(this[0]){b0=bG.buildFragment(b4,this,bZ);b3=b0.fragment;b2=b3.firstChild;if(b3.childNodes.length===1){b3=b2}if(b2){b8=b8&&bG.nodeName(b2,"tr");for(b6=b0.cacheable||e-1;b1<e;b1++){b7.call(b8&&bG.nodeName(this[b1],"table")?x(this[b1],"tbody"):this[b1],b1===b6?b3:bG.clone(b3,true,true))}}b3=b2=null;if(bZ.length){bG.each(bZ,function(b9,ca){if(ca.src){if(bG.ajax){bG.ajax({url:ca.src,type:"GET",dataType:"script",async:false,global:false,"throws":true})}else{bG.error("no ajax")}}else{bG.globalEval((ca.text||ca.textContent||ca.innerHTML||"").replace(aH,""))}if(ca.parentNode){ca.parentNode.removeChild(ca)}})}}return this}});function x(bZ,e){return bZ.getElementsByTagName(e)[0]||bZ.appendChild(bZ.ownerDocument.createElement(e))}function ao(b5,bZ){if(bZ.nodeType!==1||!bG.hasData(b5)){return}var b2,b1,e,b4=bG._data(b5),b3=bG._data(bZ,b4),b0=b4.events;if(b0){delete b3.handle;b3.events={};for(b2 in b0){for(b1=0,e=b0[b2].length;b1<e;b1++){bG.event.add(bZ,b2,b0[b2][b1])}}}if(b3.data){b3.data=bG.extend({},b3.data)}}function F(bZ,e){var b0;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bZ)}b0=e.nodeName.toLowerCase();if(b0==="object"){if(e.parentNode){e.outerHTML=bZ.outerHTML}if(bG.support.html5Clone&&(bZ.innerHTML&&!bG.trim(e.innerHTML))){e.innerHTML=bZ.innerHTML}}else{if(b0==="input"&&aE.test(bZ.type)){e.defaultChecked=e.checked=bZ.checked;if(e.value!==bZ.value){e.value=bZ.value}}else{if(b0==="option"){e.selected=bZ.defaultSelected}else{if(b0==="input"||b0==="textarea"){e.defaultValue=bZ.defaultValue}else{if(b0==="script"&&e.text!==bZ.text){e.text=bZ.text}}}}}e.removeAttribute(bG.expando)}bG.buildFragment=function(b1,b2,bZ){var b0,e,b3,b4=b1[0];b2=b2||o;b2=!b2.nodeType&&b2[0]||b2;b2=b2.ownerDocument||b2;if(b1.length===1&&typeof b4==="string"&&b4.length<512&&b2===o&&b4.charAt(0)==="<"&&!ap.test(b4)&&(bG.support.checkClone||!bR.test(b4))&&(bG.support.html5Clone||!K.test(b4))){e=true;b0=bG.fragments[b4];b3=b0!==aB}if(!b0){b0=b2.createDocumentFragment();bG.clean(b1,b2,b0,bZ);if(e){bG.fragments[b4]=b3&&b0}}return{fragment:b0,cacheable:e}};bG.fragments={};bG.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bZ){bG.fn[e]=function(b0){var b2,b4=0,b3=[],b6=bG(b0),b1=b6.length,b5=this.length===1&&this[0].parentNode;if((b5==null||b5&&b5.nodeType===11&&b5.childNodes.length===1)&&b1===1){b6[bZ](this[0]);return this}else{for(;b4<b1;b4++){b2=(b4>0?this.clone(true):this).get();bG(b6[b4])[bZ](b2);b3=b3.concat(b2)}return this.pushStack(b3,e,b6.selector)}}});function m(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function bS(e){if(aE.test(e.type)){e.defaultChecked=e.checked}}bG.extend({clone:function(b2,b4,b0){var e,bZ,b1,b3;if(bG.support.html5Clone||bG.isXMLDoc(b2)||!K.test("<"+b2.nodeName+">")){b3=b2.cloneNode(true)}else{l.innerHTML=b2.outerHTML;l.removeChild(b3=l.firstChild)}if((!bG.support.noCloneEvent||!bG.support.noCloneChecked)&&(b2.nodeType===1||b2.nodeType===11)&&!bG.isXMLDoc(b2)){F(b2,b3);e=m(b2);bZ=m(b3);for(b1=0;e[b1];++b1){if(bZ[b1]){F(e[b1],bZ[b1])}}}if(b4){ao(b2,b3);if(b0){e=m(b2);bZ=m(b3);for(b1=0;e[b1];++b1){ao(e[b1],bZ[b1])}}}e=bZ=null;return b3},clean:function(cb,b0,e,b1){var b8,b7,ca,cf,b4,ce,b5,b2,bZ,b9,cd,b6,b3=b0===o&&aQ,cc=[];if(!b0||typeof b0.createDocumentFragment==="undefined"){b0=o}for(b8=0;(ca=cb[b8])!=null;b8++){if(typeof ca==="number"){ca+=""}if(!ca){continue}if(typeof ca==="string"){if(!J.test(ca)){ca=b0.createTextNode(ca)}else{b3=b3||A(b0);b5=b0.createElement("div");b3.appendChild(b5);ca=ca.replace(ay,"<$1></$2>");cf=(p.exec(ca)||["",""])[1].toLowerCase();b4=T[cf]||T._default;ce=b4[0];b5.innerHTML=b4[1]+ca+b4[2];while(ce--){b5=b5.lastChild}if(!bG.support.tbody){b2=bT.test(ca);bZ=cf==="table"&&!b2?b5.firstChild&&b5.firstChild.childNodes:b4[1]==="<table>"&&!b2?b5.childNodes:[];for(b7=bZ.length-1;b7>=0;--b7){if(bG.nodeName(bZ[b7],"tbody")&&!bZ[b7].childNodes.length){bZ[b7].parentNode.removeChild(bZ[b7])}}}if(!bG.support.leadingWhitespace&&bY.test(ca)){b5.insertBefore(b0.createTextNode(bY.exec(ca)[0]),b5.firstChild)}ca=b5.childNodes;b5.parentNode.removeChild(b5)}}if(ca.nodeType){cc.push(ca)}else{bG.merge(cc,ca)}}if(b5){ca=b5=b3=null}if(!bG.support.appendChecked){for(b8=0;(ca=cc[b8])!=null;b8++){if(bG.nodeName(ca,"input")){bS(ca)}else{if(typeof ca.getElementsByTagName!=="undefined"){bG.grep(ca.getElementsByTagName("input"),bS)}}}}if(e){cd=function(cg){if(!cg.type||bw.test(cg.type)){return b1?b1.push(cg.parentNode?cg.parentNode.removeChild(cg):cg):e.appendChild(cg)}};for(b8=0;(ca=cc[b8])!=null;b8++){if(!(bG.nodeName(ca,"script")&&cd(ca))){e.appendChild(ca);if(typeof ca.getElementsByTagName!=="undefined"){b6=bG.grep(bG.merge([],ca.getElementsByTagName("script")),cd);cc.splice.apply(cc,[b8+1,0].concat(b6));b8+=b6.length}}}}return cc},cleanData:function(bZ,b7){var b2,b0,b1,b6,b3=0,b8=bG.expando,e=bG.cache,b4=bG.support.deleteExpando,b5=bG.event.special;for(;(b1=bZ[b3])!=null;b3++){if(b7||bG.acceptData(b1)){b0=b1[b8];b2=b0&&e[b0];if(b2){if(b2.events){for(b6 in b2.events){if(b5[b6]){bG.event.remove(b1,b6)}else{bG.removeEvent(b1,b6,b2.handle)}}}if(e[b0]){delete e[b0];if(b4){delete b1[b8]}else{if(b1.removeAttribute){b1.removeAttribute(b8)}else{b1[b8]=null}}bG.deletedIds.push(b0)}}}}}});(function(){var e,bZ;bG.uaMatch=function(b1){b1=b1.toLowerCase();var b0=/(chrome)[ \/]([\w.]+)/.exec(b1)||/(webkit)[ \/]([\w.]+)/.exec(b1)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(b1)||/(msie) ([\w.]+)/.exec(b1)||b1.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}};e=bG.uaMatch(d.userAgent);bZ={};if(e.browser){bZ[e.browser]=true;bZ.version=e.version}if(bZ.chrome){bZ.webkit=true}else{if(bZ.webkit){bZ.safari=true}}bG.browser=bZ;bG.sub=function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bG.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bG&&!(b4 instanceof b0)){b4=b0(b4)}return bG.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(o);return b0}})();var E,az,aW,be=/alpha\([^)]*\)/i,aS=/opacity=([^)]*)/,bk=/^(top|right|bottom|left)$/,G=/^(none|table(?!-c[ea]).+)/,aZ=/^margin/,a8=new RegExp("^("+bx+")(.*)$","i"),W=new RegExp("^("+bx+")(?!px)[a-z%]+$","i"),S=new RegExp("^([-+])=("+bx+")","i"),bh={},a9={position:"absolute",visibility:"hidden",display:"block"},bA={letterSpacing:0,fontWeight:400},bQ=["Top","Right","Bottom","Left"],ar=["Webkit","O","Moz","ms"],aJ=bG.fn.toggle;function b(b1,bZ){if(bZ in b1){return bZ}var b2=bZ.charAt(0).toUpperCase()+bZ.slice(1),e=bZ,b0=ar.length;while(b0--){bZ=ar[b0]+b2;if(bZ in b1){return bZ}}return e}function Q(bZ,e){bZ=e||bZ;return bG.css(bZ,"display")==="none"||!bG.contains(bZ.ownerDocument,bZ)}function s(b3,e){var b2,b4,bZ=[],b0=0,b1=b3.length;for(;b0<b1;b0++){b2=b3[b0];if(!b2.style){continue}bZ[b0]=bG._data(b2,"olddisplay");if(e){if(!bZ[b0]&&b2.style.display==="none"){b2.style.display=""}if(b2.style.display===""&&Q(b2)){bZ[b0]=bG._data(b2,"olddisplay",bC(b2.nodeName))}}else{b4=E(b2,"display");if(!bZ[b0]&&b4!=="none"){bG._data(b2,"olddisplay",b4)}}}for(b0=0;b0<b1;b0++){b2=b3[b0];if(!b2.style){continue}if(!e||b2.style.display==="none"||b2.style.display===""){b2.style.display=e?bZ[b0]||"":"none"}}return b3}bG.fn.extend({css:function(e,bZ){return bG.access(this,function(b1,b0,b2){return b2!==aB?bG.style(b1,b0,b2):bG.css(b1,b0)},e,bZ,arguments.length>1)},show:function(){return s(this,true)},hide:function(){return s(this)},toggle:function(b0,bZ){var e=typeof b0==="boolean";if(bG.isFunction(b0)&&bG.isFunction(bZ)){return aJ.apply(this,arguments)}return this.each(function(){if(e?b0:Q(this)){bG(this).show()}else{bG(this).hide()}})}});bG.extend({cssHooks:{opacity:{get:function(b0,bZ){if(bZ){var e=E(b0,"opacity");return e===""?"1":e}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":bG.support.cssFloat?"cssFloat":"styleFloat"},style:function(b1,b0,b7,b2){if(!b1||b1.nodeType===3||b1.nodeType===8||!b1.style){return}var b5,b6,b8,b3=bG.camelCase(b0),bZ=b1.style;b0=bG.cssProps[b3]||(bG.cssProps[b3]=b(bZ,b3));b8=bG.cssHooks[b0]||bG.cssHooks[b3];if(b7!==aB){b6=typeof b7;if(b6==="string"&&(b5=S.exec(b7))){b7=(b5[1]+1)*b5[2]+parseFloat(bG.css(b1,b0));b6="number"}if(b7==null||b6==="number"&&isNaN(b7)){return}if(b6==="number"&&!bG.cssNumber[b3]){b7+="px"}if(!b8||!("set" in b8)||(b7=b8.set(b1,b7,b2))!==aB){try{bZ[b0]=b7}catch(b4){}}}else{if(b8&&"get" in b8&&(b5=b8.get(b1,false,b2))!==aB){return b5}return bZ[b0]}},css:function(b4,b2,b3,bZ){var b5,b1,e,b0=bG.camelCase(b2);b2=bG.cssProps[b0]||(bG.cssProps[b0]=b(b4.style,b0));e=bG.cssHooks[b2]||bG.cssHooks[b0];if(e&&"get" in e){b5=e.get(b4,true,bZ)}if(b5===aB){b5=E(b4,b2)}if(b5==="normal"&&b2 in bA){b5=bA[b2]}if(b3||bZ!==aB){b1=parseFloat(b5);return b3||bG.isNumeric(b1)?b1||0:b5}return b5},swap:function(b2,b1,b3){var b0,bZ,e={};for(bZ in b1){e[bZ]=b2.style[bZ];b2.style[bZ]=b1[bZ]}b0=b3.call(b2);for(bZ in b1){b2.style[bZ]=e[bZ]}return b0}});if(a2.getComputedStyle){E=function(b5,bZ){var e,b2,b1,b4,b3=a2.getComputedStyle(b5,null),b0=b5.style;if(b3){e=b3[bZ];if(e===""&&!bG.contains(b5.ownerDocument,b5)){e=bG.style(b5,bZ)}if(W.test(e)&&aZ.test(bZ)){b2=b0.width;b1=b0.minWidth;b4=b0.maxWidth;b0.minWidth=b0.maxWidth=b0.width=e;e=b3.width;b0.width=b2;b0.minWidth=b1;b0.maxWidth=b4}}return e}}else{if(o.documentElement.currentStyle){E=function(b2,b0){var b3,e,bZ=b2.currentStyle&&b2.currentStyle[b0],b1=b2.style;if(bZ==null&&b1&&b1[b0]){bZ=b1[b0]}if(W.test(bZ)&&!bk.test(b0)){b3=b1.left;e=b2.runtimeStyle&&b2.runtimeStyle.left;if(e){b2.runtimeStyle.left=b2.currentStyle.left}b1.left=b0==="fontSize"?"1em":bZ;bZ=b1.pixelLeft+"px";b1.left=b3;if(e){b2.runtimeStyle.left=e}}return bZ===""?"auto":bZ}}}function aG(e,b0,b1){var bZ=a8.exec(b0);return bZ?Math.max(0,bZ[1]-(b1||0))+(bZ[2]||"px"):b0}function at(b1,bZ,e,b3){var b0=e===(b3?"border":"content")?4:bZ==="width"?1:0,b2=0;for(;b0<4;b0+=2){if(e==="margin"){b2+=bG.css(b1,e+bQ[b0],true)}if(b3){if(e==="content"){b2-=parseFloat(E(b1,"padding"+bQ[b0]))||0}if(e!=="margin"){b2-=parseFloat(E(b1,"border"+bQ[b0]+"Width"))||0}}else{b2+=parseFloat(E(b1,"padding"+bQ[b0]))||0;if(e!=="padding"){b2+=parseFloat(E(b1,"border"+bQ[b0]+"Width"))||0}}}return b2}function u(b1,bZ,e){var b2=bZ==="width"?b1.offsetWidth:b1.offsetHeight,b0=true,b3=bG.support.boxSizing&&bG.css(b1,"boxSizing")==="border-box";if(b2<=0||b2==null){b2=E(b1,bZ);if(b2<0||b2==null){b2=b1.style[bZ]}if(W.test(b2)){return b2}b0=b3&&(bG.support.boxSizingReliable||b2===b1.style[bZ]);b2=parseFloat(b2)||0}return(b2+at(b1,bZ,e||(b3?"border":"content"),b0))+"px"}function bC(b0){if(bh[b0]){return bh[b0]}var e=bG("<"+b0+">").appendTo(o.body),bZ=e.css("display");e.remove();if(bZ==="none"||bZ===""){az=o.body.appendChild(az||bG.extend(o.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!aW||!az.createElement){aW=(az.contentWindow||az.contentDocument).document;aW.write("<!doctype html><html><body>");aW.close()}e=aW.body.appendChild(aW.createElement(b0));bZ=E(e,"display");o.body.removeChild(az)}bh[b0]=bZ;return bZ}bG.each(["height","width"],function(bZ,e){bG.cssHooks[e]={get:function(b2,b1,b0){if(b1){if(b2.offsetWidth===0&&G.test(E(b2,"display"))){return bG.swap(b2,a9,function(){return u(b2,e,b0)})}else{return u(b2,e,b0)}}},set:function(b1,b2,b0){return aG(b1,b2,b0?at(b1,e,b0,bG.support.boxSizing&&bG.css(b1,"boxSizing")==="border-box"):0)}}});if(!bG.support.opacity){bG.cssHooks.opacity={get:function(bZ,e){return aS.test((e&&bZ.currentStyle?bZ.currentStyle.filter:bZ.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":e?"1":""},set:function(b2,b3){var b1=b2.style,bZ=b2.currentStyle,e=bG.isNumeric(b3)?"alpha(opacity="+b3*100+")":"",b0=bZ&&bZ.filter||b1.filter||"";b1.zoom=1;if(b3>=1&&bG.trim(b0.replace(be,""))===""&&b1.removeAttribute){b1.removeAttribute("filter");if(bZ&&!bZ.filter){return}}b1.filter=be.test(b0)?b0.replace(be,e):b0+" "+e}}}bG(function(){if(!bG.support.reliableMarginRight){bG.cssHooks.marginRight={get:function(bZ,e){return bG.swap(bZ,{display:"inline-block"},function(){if(e){return E(bZ,"marginRight")}})}}}if(!bG.support.pixelPosition&&bG.fn.position){bG.each(["top","left"],function(e,bZ){bG.cssHooks[bZ]={get:function(b2,b1){if(b1){var b0=E(b2,bZ);return W.test(b0)?bG(b2).position()[bZ]+"px":b0}}}})}});if(bG.expr&&bG.expr.filters){bG.expr.filters.hidden=function(e){return(e.offsetWidth===0&&e.offsetHeight===0)||(!bG.support.reliableHiddenOffsets&&((e.style&&e.style.display)||E(e,"display"))==="none")};bG.expr.filters.visible=function(e){return !bG.expr.filters.hidden(e)}}bG.each({margin:"",padding:"",border:"Width"},function(e,bZ){bG.cssHooks[e+bZ]={expand:function(b2){var b1,b3=typeof b2==="string"?b2.split(" "):[b2],b0={};for(b1=0;b1<4;b1++){b0[e+bQ[b1]+bZ]=b3[b1]||b3[b1-2]||b3[0]}return b0}};if(!aZ.test(e)){bG.cssHooks[e+bZ].set=aG}});var bs=/%20/g,aP=/\[\]$/,U=/\r?\n/g,bz=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aD=/^(?:select|textarea)/i;bG.fn.extend({serialize:function(){return bG.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?bG.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||aD.test(this.nodeName)||bz.test(this.type))}).map(function(e,bZ){var b0=bG(this).val();return b0==null?null:bG.isArray(b0)?bG.map(b0,function(b2,b1){return{name:bZ.name,value:b2.replace(U,"\r\n")}}):{name:bZ.name,value:b0.replace(U,"\r\n")}}).get()}});bG.param=function(e,b0){var b1,bZ=[],b2=function(b3,b4){b4=bG.isFunction(b4)?b4():(b4==null?"":b4);bZ[bZ.length]=encodeURIComponent(b3)+"="+encodeURIComponent(b4)};if(b0===aB){b0=bG.ajaxSettings&&bG.ajaxSettings.traditional}if(bG.isArray(e)||(e.jquery&&!bG.isPlainObject(e))){bG.each(e,function(){b2(this.name,this.value)})}else{for(b1 in e){k(b1,e[b1],b0,b2)}}return bZ.join("&").replace(bs,"+")};function k(b0,b2,bZ,b1){var e;if(bG.isArray(b2)){bG.each(b2,function(b4,b3){if(bZ||aP.test(b0)){b1(b0,b3)}else{k(b0+"["+(typeof b3==="object"?b4:"")+"]",b3,bZ,b1)}})}else{if(!bZ&&bG.type(b2)==="object"){for(e in b2){k(b0+"["+e+"]",b2[e],bZ,b1)}}else{b1(b0,b2)}}}var Y,bX,an=/#.*$/,ad=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,B=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,r=/^(?:GET|HEAD)$/,aC=/^\/\//,bN=/\?/,g=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,P=/([?&])_=[^&]*/,aT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,bW=bG.fn.load,v={},a6={},aX=["*/"]+["*"];try{Y=aI.href}catch(bd){Y=o.createElement("a");Y.href="";Y=Y.href}bX=aT.exec(Y.toLowerCase())||[];function bI(e){return function(b2,b4){if(typeof b2!=="string"){b4=b2;b2="*"}var bZ,b5,b6,b1=b2.toLowerCase().split(aV),b0=0,b3=b1.length;if(bG.isFunction(b4)){for(;b0<b3;b0++){bZ=b1[b0];b6=/^\+/.test(bZ);if(b6){bZ=bZ.substr(1)||"*"}b5=e[bZ]=e[bZ]||[];b5[b6?"unshift":"push"](b4)}}}}function q(bZ,b8,b3,b6,b5,b1){b5=b5||b8.dataTypes[0];b1=b1||{};b1[b5]=true;var b7,b4=bZ[b5],b0=0,e=b4?b4.length:0,b2=(bZ===v);for(;b0<e&&(b2||!b7);b0++){b7=b4[b0](b8,b3,b6);if(typeof b7==="string"){if(!b2||b1[b7]){b7=aB}else{b8.dataTypes.unshift(b7);b7=q(bZ,b8,b3,b6,b7,b1)}}}if((b2||!b7)&&!b1["*"]){b7=q(bZ,b8,b3,b6,"*",b1)}return b7}function t(b0,b1){var bZ,e,b2=bG.ajaxSettings.flatOptions||{};for(bZ in b1){if(b1[bZ]!==aB){(b2[bZ]?b0:(e||(e={})))[bZ]=b1[bZ]}}if(e){bG.extend(true,b0,e)}}bG.fn.load=function(b1,b4,b5){if(typeof b1!=="string"&&bW){return bW.apply(this,arguments)}if(!this.length){return this}var e,b2,b0,bZ=this,b3=b1.indexOf(" ");if(b3>=0){e=b1.slice(b3,b1.length);b1=b1.slice(0,b3)}if(bG.isFunction(b4)){b5=b4;b4=aB}else{if(b4&&typeof b4==="object"){b2="POST"}}bG.ajax({url:b1,type:b2,dataType:"html",data:b4,complete:function(b7,b6){if(b5){bZ.each(b5,b0||[b7.responseText,b6,b7])}}}).done(function(b6){b0=arguments;bZ.html(e?bG("<div>").append(b6.replace(g,"")).find(e):b6)});return this};bG.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bZ){bG.fn[bZ]=function(b0){return this.on(bZ,b0)}});bG.each(["get","post"],function(e,bZ){bG[bZ]=function(b0,b2,b3,b1){if(bG.isFunction(b2)){b1=b1||b3;b3=b2;b2=aB}return bG.ajax({type:bZ,url:b0,data:b2,success:b3,dataType:b1})}});bG.extend({getScript:function(e,bZ){return bG.get(e,aB,bZ,"script")},getJSON:function(e,bZ,b0){return bG.get(e,bZ,b0,"json")},ajaxSetup:function(bZ,e){if(e){t(bZ,bG.ajaxSettings)}else{e=bZ;bZ=bG.ajaxSettings}t(bZ,e);return bZ},ajaxSettings:{url:Y,isLocal:B.test(bX[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a2.String,"text html":true,"text json":bG.parseJSON,"text xml":bG.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:bI(v),ajaxTransport:bI(a6),ajax:function(b4,b1){if(typeof b4==="object"){b1=b4;b4=aB}b1=b1||{};var b7,cl,b2,cg,b9,cd,b0,cf,b8=bG.ajaxSetup({},b1),cn=b8.context||b8,cb=cn!==b8&&(cn.nodeType||cn instanceof bG)?bG(cn):bG.event,cm=bG.Deferred(),ci=bG.Callbacks("once memory"),b5=b8.statusCode||{},cc={},cj={},b3=0,b6="canceled",ce={readyState:0,setRequestHeader:function(co,cp){if(!b3){var e=co.toLowerCase();co=cj[e]=cj[e]||co;cc[co]=cp}return this},getAllResponseHeaders:function(){return b3===2?cl:null},getResponseHeader:function(co){var e;if(b3===2){if(!b2){b2={};while((e=ad.exec(cl))){b2[e[1].toLowerCase()]=e[2]}}e=b2[co.toLowerCase()]}return e===aB?null:e},overrideMimeType:function(e){if(!b3){b8.mimeType=e}return this},abort:function(e){e=e||b6;if(cg){cg.abort(e)}ca(0,e);return this}};function ca(cs,co,ct,cq){var e,cw,cu,cr,cv,cp=co;if(b3===2){return}b3=2;if(b9){clearTimeout(b9)}cg=aB;cl=cq||"";ce.readyState=cs>0?4:0;if(ct){cr=h(b8,ce,ct)}if(cs>=200&&cs<300||cs===304){if(b8.ifModified){cv=ce.getResponseHeader("Last-Modified");if(cv){bG.lastModified[b7]=cv}cv=ce.getResponseHeader("Etag");if(cv){bG.etag[b7]=cv}}if(cs===304){cp="notmodified";e=true}else{e=ae(b8,cr);cp=e.state;cw=e.data;cu=e.error;e=!cu}}else{cu=cp;if(!cp||cs){cp="error";if(cs<0){cs=0}}}ce.status=cs;ce.statusText=""+(co||cp);if(e){cm.resolveWith(cn,[cw,cp,ce])}else{cm.rejectWith(cn,[ce,cp,cu])}ce.statusCode(b5);b5=aB;if(b0){cb.trigger("ajax"+(e?"Success":"Error"),[ce,b8,e?cw:cu])}ci.fireWith(cn,[ce,cp]);if(b0){cb.trigger("ajaxComplete",[ce,b8]);if(!(--bG.active)){bG.event.trigger("ajaxStop")}}}cm.promise(ce);ce.success=ce.done;ce.error=ce.fail;ce.complete=ci.add;ce.statusCode=function(co){if(co){var e;if(b3<2){for(e in co){b5[e]=[b5[e],co[e]]}}else{e=co[ce.status];ce.always(e)}}return this};b8.url=((b4||b8.url)+"").replace(an,"").replace(aC,bX[1]+"//");b8.dataTypes=bG.trim(b8.dataType||"*").toLowerCase().split(aV);if(b8.crossDomain==null){cd=aT.exec(b8.url.toLowerCase());b8.crossDomain=!!(cd&&(cd[1]!=bX[1]||cd[2]!=bX[2]||(cd[3]||(cd[1]==="http:"?80:443))!=(bX[3]||(bX[1]==="http:"?80:443))))}if(b8.data&&b8.processData&&typeof b8.data!=="string"){b8.data=bG.param(b8.data,b8.traditional)}q(v,b8,b1,ce);if(b3===2){return ce}b0=b8.global;b8.type=b8.type.toUpperCase();b8.hasContent=!r.test(b8.type);if(b0&&bG.active++===0){bG.event.trigger("ajaxStart")}if(!b8.hasContent){if(b8.data){b8.url+=(bN.test(b8.url)?"&":"?")+b8.data;delete b8.data}b7=b8.url;if(b8.cache===false){var bZ=bG.now(),ck=b8.url.replace(P,"$1_="+bZ);b8.url=ck+((ck===b8.url)?(bN.test(b8.url)?"&":"?")+"_="+bZ:"")}}if(b8.data&&b8.hasContent&&b8.contentType!==false||b1.contentType){ce.setRequestHeader("Content-Type",b8.contentType)}if(b8.ifModified){b7=b7||b8.url;if(bG.lastModified[b7]){ce.setRequestHeader("If-Modified-Since",bG.lastModified[b7])}if(bG.etag[b7]){ce.setRequestHeader("If-None-Match",bG.etag[b7])}}ce.setRequestHeader("Accept",b8.dataTypes[0]&&b8.accepts[b8.dataTypes[0]]?b8.accepts[b8.dataTypes[0]]+(b8.dataTypes[0]!=="*"?", "+aX+"; q=0.01":""):b8.accepts["*"]);for(cf in b8.headers){ce.setRequestHeader(cf,b8.headers[cf])}if(b8.beforeSend&&(b8.beforeSend.call(cn,ce,b8)===false||b3===2)){return ce.abort()}b6="abort";for(cf in {success:1,error:1,complete:1}){ce[cf](b8[cf])}cg=q(a6,b8,b1,ce);if(!cg){ca(-1,"No Transport")}else{ce.readyState=1;if(b0){cb.trigger("ajaxSend",[ce,b8])}if(b8.async&&b8.timeout>0){b9=setTimeout(function(){ce.abort("timeout")},b8.timeout)}try{b3=1;cg.send(cc,ca)}catch(ch){if(b3<2){ca(-1,ch)}else{throw ch}}}return ce},active:0,lastModified:{},etag:{}});function h(b7,b6,b3){var b2,b4,b1,e,bZ=b7.contents,b5=b7.dataTypes,b0=b7.responseFields;for(b4 in b0){if(b4 in b3){b6[b0[b4]]=b3[b4]}}while(b5[0]==="*"){b5.shift();if(b2===aB){b2=b7.mimeType||b6.getResponseHeader("content-type")}}if(b2){for(b4 in bZ){if(bZ[b4]&&bZ[b4].test(b2)){b5.unshift(b4);break}}}if(b5[0] in b3){b1=b5[0]}else{for(b4 in b3){if(!b5[0]||b7.converters[b4+" "+b5[0]]){b1=b4;break}if(!e){e=b4}}b1=b1||e}if(b1){if(b1!==b5[0]){b5.unshift(b1)}return b3[b1]}}function ae(b9,b1){var b7,bZ,b5,b3,b6=b9.dataTypes.slice(),b0=b6[0],b8={},b2=0;if(b9.dataFilter){b1=b9.dataFilter(b1,b9.dataType)}if(b6[1]){for(b7 in b9.converters){b8[b7.toLowerCase()]=b9.converters[b7]}}for(;(b5=b6[++b2]);){if(b5!=="*"){if(b0!=="*"&&b0!==b5){b7=b8[b0+" "+b5]||b8["* "+b5];if(!b7){for(bZ in b8){b3=bZ.split(" ");if(b3[1]===b5){b7=b8[b0+" "+b3[0]]||b8["* "+b3[0]];if(b7){if(b7===true){b7=b8[bZ]}else{if(b8[bZ]!==true){b5=b3[0];b6.splice(b2--,0,b5)}}break}}}}if(b7!==true){if(b7&&b9["throws"]){b1=b7(b1)}else{try{b1=b7(b1)}catch(b4){return{state:"parsererror",error:b7?b4:"No conversion from "+b0+" to "+b5}}}}}b0=b5}}return{state:"success",data:b1}}var bp=[],aw=/\?/,a5=/(=)\?(?=&|$)|\?\?/,bl=bG.now();bG.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=bp.pop()||(bG.expando+"_"+(bl++));this[e]=true;return e}});bG.ajaxPrefilter("json jsonp",function(b8,b3,b7){var b6,e,b5,b1=b8.data,bZ=b8.url,b0=b8.jsonp!==false,b4=b0&&a5.test(bZ),b2=b0&&!b4&&typeof b1==="string"&&!(b8.contentType||"").indexOf("application/x-www-form-urlencoded")&&a5.test(b1);if(b8.dataTypes[0]==="jsonp"||b4||b2){b6=b8.jsonpCallback=bG.isFunction(b8.jsonpCallback)?b8.jsonpCallback():b8.jsonpCallback;e=a2[b6];if(b4){b8.url=bZ.replace(a5,"$1"+b6)}else{if(b2){b8.data=b1.replace(a5,"$1"+b6)}else{if(b0){b8.url+=(aw.test(bZ)?"&":"?")+b8.jsonp+"="+b6}}}b8.converters["script json"]=function(){if(!b5){bG.error(b6+" was not called")}return b5[0]};b8.dataTypes[0]="json";a2[b6]=function(){b5=arguments};b7.always(function(){a2[b6]=e;if(b8[b6]){b8.jsonpCallback=b3.jsonpCallback;bp.push(b6)}if(b5&&bG.isFunction(e)){e(b5[0])}b5=e=aB});return"script"}});bG.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){bG.globalEval(e);return e}}});bG.ajaxPrefilter("script",function(e){if(e.cache===aB){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});bG.ajaxTransport("script",function(b0){if(b0.crossDomain){var e,bZ=o.head||o.getElementsByTagName("head")[0]||o.documentElement;return{send:function(b1,b2){e=o.createElement("script");e.async="async";if(b0.scriptCharset){e.charset=b0.scriptCharset}e.src=b0.url;e.onload=e.onreadystatechange=function(b4,b3){if(b3||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bZ&&e.parentNode){bZ.removeChild(e)}e=aB;if(!b3){b2(200,"success")}}};bZ.insertBefore(e,bZ.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var ah,aN=a2.ActiveXObject?function(){for(var e in ah){ah[e](0,1)}}:false,au=0;function bB(){try{return new a2.XMLHttpRequest()}catch(bZ){}}function bb(){try{return new a2.ActiveXObject("Microsoft.XMLHTTP")}catch(bZ){}}bG.ajaxSettings.xhr=a2.ActiveXObject?function(){return !this.isLocal&&bB()||bb()}:bB;(function(e){bG.extend(bG.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(bG.ajaxSettings.xhr());if(bG.support.ajax){bG.ajaxTransport(function(e){if(!e.crossDomain||bG.support.cors){var bZ;return{send:function(b5,b0){var b3,b2,b4=e.xhr();if(e.username){b4.open(e.type,e.url,e.async,e.username,e.password)}else{b4.open(e.type,e.url,e.async)}if(e.xhrFields){for(b2 in e.xhrFields){b4[b2]=e.xhrFields[b2]}}if(e.mimeType&&b4.overrideMimeType){b4.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!b5["X-Requested-With"]){b5["X-Requested-With"]="XMLHttpRequest"}try{for(b2 in b5){b4.setRequestHeader(b2,b5[b2])}}catch(b1){}b4.send((e.hasContent&&e.data)||null);bZ=function(ce,b8){var b9,b7,b6,cc,cb;try{if(bZ&&(b8||b4.readyState===4)){bZ=aB;if(b3){b4.onreadystatechange=bG.noop;if(aN){delete ah[b3]}}if(b8){if(b4.readyState!==4){b4.abort()}}else{b9=b4.status;b6=b4.getAllResponseHeaders();cc={};cb=b4.responseXML;if(cb&&cb.documentElement){cc.xml=cb}try{cc.text=b4.responseText}catch(ce){}try{b7=b4.statusText}catch(cd){b7=""}if(!b9&&e.isLocal&&!e.crossDomain){b9=cc.text?200:404}else{if(b9===1223){b9=204}}}}}catch(ca){if(!b8){b0(-1,ca)}}if(cc){b0(b9,b7,cc,b6)}};if(!e.async){bZ()}else{if(b4.readyState===4){setTimeout(bZ,0)}else{b3=++au;if(aN){if(!ah){ah={};bG(a2).unload(aN)}ah[b3]=bZ}b4.onreadystatechange=bZ}}},abort:function(){if(bZ){bZ(0,1)}}}}})}var L,ab,bO=/^(?:toggle|show|hide)$/,bH=new RegExp("^(?:([-+])=|)("+bx+")([a-z%]*)$","i"),bM=/queueHooks$/,ax=[i],a1={"*":[function(bZ,b5){var b2,b6,e,b7=this.createTween(bZ,b5),b3=bH.exec(b5),b4=b7.cur(),b0=+b4||0,b1=1;if(b3){b2=+b3[2];b6=b3[3]||(bG.cssNumber[bZ]?"":"px");if(b6!=="px"&&b0){b0=bG.css(b7.elem,bZ,true)||b2||1;do{e=b1=b1||".5";b0=b0/b1;bG.style(b7.elem,bZ,b0+b6);b1=b7.cur()/b4}while(b1!==1&&b1!==e)}b7.unit=b6;b7.start=b0;b7.end=b3[1]?b0+(b3[1]+1)*b2:b2}return b7}]};function bj(){setTimeout(function(){L=aB},0);return(L=bG.now())}function bc(bZ,e){bG.each(e,function(b4,b2){var b3=(a1[b4]||[]).concat(a1["*"]),b0=0,b1=b3.length;for(;b0<b1;b0++){if(b3[b0].call(bZ,b4,b2)){return}}})}function f(b0,b4,b7){var b8,b3=0,e=0,bZ=ax.length,b6=bG.Deferred().always(function(){delete b2.elem}),b2=function(){var cd=L||bj(),ca=Math.max(0,b1.startTime+b1.duration-cd),cc=1-(ca/b1.duration||0),b9=0,cb=b1.tweens.length;for(;b9<cb;b9++){b1.tweens[b9].run(cc)}b6.notifyWith(b0,[b1,cc,ca]);if(cc<1&&cb){return ca}else{b6.resolveWith(b0,[b1]);return false}},b1=b6.promise({elem:b0,props:bG.extend({},b4),opts:bG.extend(true,{specialEasing:{}},b7),originalProperties:b4,originalOptions:b7,startTime:L||bj(),duration:b7.duration,tweens:[],createTween:function(cc,b9,cb){var ca=bG.Tween(b0,b1.opts,cc,b9,b1.opts.specialEasing[cc]||b1.opts.easing);b1.tweens.push(ca);return ca},stop:function(ca){var b9=0,cb=ca?b1.tweens.length:0;for(;b9<cb;b9++){b1.tweens[b9].run(1)}if(ca){b6.resolveWith(b0,[b1,ca])}else{b6.rejectWith(b0,[b1,ca])}return this}}),b5=b1.props;ak(b5,b1.opts.specialEasing);for(;b3<bZ;b3++){b8=ax[b3].call(b1,b0,b5,b1.opts);if(b8){return b8}}bc(b1,b5);if(bG.isFunction(b1.opts.start)){b1.opts.start.call(b0,b1)}bG.fx.timer(bG.extend(b2,{anim:b1,queue:b1.opts.queue,elem:b0}));return b1.progress(b1.opts.progress).done(b1.opts.done,b1.opts.complete).fail(b1.opts.fail).always(b1.opts.always)}function ak(b1,b3){var b0,bZ,b4,b2,e;for(b0 in b1){bZ=bG.camelCase(b0);b4=b3[bZ];b2=b1[b0];if(bG.isArray(b2)){b4=b2[1];b2=b1[b0]=b2[0]}if(b0!==bZ){b1[bZ]=b2;delete b1[b0]}e=bG.cssHooks[bZ];if(e&&"expand" in e){b2=e.expand(b2);delete b1[bZ];for(b0 in b2){if(!(b0 in b1)){b1[b0]=b2[b0];b3[b0]=b4}}}else{b3[bZ]=b4}}}bG.Animation=bG.extend(f,{tweener:function(bZ,b2){if(bG.isFunction(bZ)){b2=bZ;bZ=["*"]}else{bZ=bZ.split(" ")}var b1,e=0,b0=bZ.length;for(;e<b0;e++){b1=bZ[e];a1[b1]=a1[b1]||[];a1[b1].unshift(b2)}},prefilter:function(bZ,e){if(e){ax.unshift(bZ)}else{ax.push(bZ)}}});function i(b2,b7,e){var b6,b0,b9,b1,cd,cc,cb,ca,b3=this,bZ=b2.style,b8={},b5=[],b4=b2.nodeType&&Q(b2);if(!e.queue){cb=bG._queueHooks(b2,"fx");if(cb.unqueued==null){cb.unqueued=0;ca=cb.empty.fire;cb.empty.fire=function(){if(!cb.unqueued){ca()}}}cb.unqueued++;b3.always(function(){b3.always(function(){cb.unqueued--;if(!bG.queue(b2,"fx").length){cb.empty.fire()}})})}if(b2.nodeType===1&&("height" in b7||"width" in b7)){e.overflow=[bZ.overflow,bZ.overflowX,bZ.overflowY];if(bG.css(b2,"display")==="inline"&&bG.css(b2,"float")==="none"){if(!bG.support.inlineBlockNeedsLayout||bC(b2.nodeName)==="inline"){bZ.display="inline-block"}else{bZ.zoom=1}}}if(e.overflow){bZ.overflow="hidden";if(!bG.support.shrinkWrapBlocks){b3.done(function(){bZ.overflow=e.overflow[0];bZ.overflowX=e.overflow[1];bZ.overflowY=e.overflow[2]})}}for(b6 in b7){b9=b7[b6];if(bO.exec(b9)){delete b7[b6];if(b9===(b4?"hide":"show")){continue}b5.push(b6)}}b1=b5.length;if(b1){cd=bG._data(b2,"fxshow")||bG._data(b2,"fxshow",{});if(b4){bG(b2).show()}else{b3.done(function(){bG(b2).hide()})}b3.done(function(){var ce;bG.removeData(b2,"fxshow",true);for(ce in b8){bG.style(b2,ce,b8[ce])}});for(b6=0;b6<b1;b6++){b0=b5[b6];cc=b3.createTween(b0,b4?cd[b0]:0);b8[b0]=cd[b0]||bG.style(b2,b0);if(!(b0 in cd)){cd[b0]=cc.start;if(b4){cc.end=cc.start;cc.start=b0==="width"||b0==="height"?1:0}}}}}function H(b0,bZ,b2,e,b1){return new H.prototype.init(b0,bZ,b2,e,b1)}bG.Tween=H;H.prototype={constructor:H,init:function(b1,bZ,b3,e,b2,b0){this.elem=b1;this.prop=b3;this.easing=b2||"swing";this.options=bZ;this.start=this.now=this.cur();this.end=e;this.unit=b0||(bG.cssNumber[b3]?"":"px")},cur:function(){var e=H.propHooks[this.prop];return e&&e.get?e.get(this):H.propHooks._default.get(this)},run:function(b0){var bZ,e=H.propHooks[this.prop];if(this.options.duration){this.pos=bZ=bG.easing[this.easing](b0,this.options.duration*b0,0,1,this.options.duration)}else{this.pos=bZ=b0}this.now=(this.end-this.start)*bZ+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(e&&e.set){e.set(this)}else{H.propHooks._default.set(this)}return this}};H.prototype.init.prototype=H.prototype;H.propHooks={_default:{get:function(bZ){var e;if(bZ.elem[bZ.prop]!=null&&(!bZ.elem.style||bZ.elem.style[bZ.prop]==null)){return bZ.elem[bZ.prop]}e=bG.css(bZ.elem,bZ.prop,false,"");return !e||e==="auto"?0:e},set:function(e){if(bG.fx.step[e.prop]){bG.fx.step[e.prop](e)}else{if(e.elem.style&&(e.elem.style[bG.cssProps[e.prop]]!=null||bG.cssHooks[e.prop])){bG.style(e.elem,e.prop,e.now+e.unit)}else{e.elem[e.prop]=e.now}}}}};H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};bG.each(["toggle","show","hide"],function(bZ,e){var b0=bG.fn[e];bG.fn[e]=function(b1,b3,b2){return b1==null||typeof b1==="boolean"||(!bZ&&bG.isFunction(b1)&&bG.isFunction(b3))?b0.apply(this,arguments):this.animate(bF(e,true),b1,b3,b2)}});bG.fn.extend({fadeTo:function(e,b1,b0,bZ){return this.filter(Q).css("opacity",0).show().end().animate({opacity:b1},e,b0,bZ)},animate:function(b4,b1,b3,b2){var b0=bG.isEmptyObject(b4),e=bG.speed(b1,b3,b2),bZ=function(){var b5=f(this,bG.extend({},b4),e);if(b0){b5.stop(true)}};return b0||e.queue===false?this.each(bZ):this.queue(e.queue,bZ)},stop:function(b0,bZ,e){var b1=function(b2){var b3=b2.stop;delete b2.stop;b3(e)};if(typeof b0!=="string"){e=bZ;bZ=b0;b0=aB}if(bZ&&b0!==false){this.queue(b0||"fx",[])}return this.each(function(){var b5=true,b2=b0!=null&&b0+"queueHooks",b4=bG.timers,b3=bG._data(this);if(b2){if(b3[b2]&&b3[b2].stop){b1(b3[b2])}}else{for(b2 in b3){if(b3[b2]&&b3[b2].stop&&bM.test(b2)){b1(b3[b2])}}}for(b2=b4.length;b2--;){if(b4[b2].elem===this&&(b0==null||b4[b2].queue===b0)){b4[b2].anim.stop(e);b5=false;b4.splice(b2,1)}}if(b5||!e){bG.dequeue(this,b0)}})}});function bF(b0,b2){var b1,e={height:b0},bZ=0;b2=b2?1:0;for(;bZ<4;bZ+=2-b2){b1=bQ[bZ];e["margin"+b1]=e["padding"+b1]=b0}if(b2){e.opacity=e.width=b0}return e}bG.each({slideDown:bF("show"),slideUp:bF("hide"),slideToggle:bF("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bZ){bG.fn[e]=function(b0,b2,b1){return this.animate(bZ,b0,b2,b1)}});bG.speed=function(b0,b1,bZ){var e=b0&&typeof b0==="object"?bG.extend({},b0):{complete:bZ||!bZ&&b1||bG.isFunction(b0)&&b0,duration:b0,easing:bZ&&b1||b1&&!bG.isFunction(b1)&&b1};e.duration=bG.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in bG.fx.speeds?bG.fx.speeds[e.duration]:bG.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(){if(bG.isFunction(e.old)){e.old.call(this)}if(e.queue){bG.dequeue(this,e.queue)}};return e};bG.easing={linear:function(e){return e},swing:function(e){return 0.5-Math.cos(e*Math.PI)/2}};bG.timers=[];bG.fx=H.prototype.init;bG.fx.tick=function(){var b0,bZ=bG.timers,e=0;for(;e<bZ.length;e++){b0=bZ[e];if(!b0()&&bZ[e]===b0){bZ.splice(e--,1)}}if(!bZ.length){bG.fx.stop()}};bG.fx.timer=function(e){if(e()&&bG.timers.push(e)&&!ab){ab=setInterval(bG.fx.tick,bG.fx.interval)}};bG.fx.interval=13;bG.fx.stop=function(){clearInterval(ab);ab=null};bG.fx.speeds={slow:600,fast:200,_default:400};bG.fx.step={};if(bG.expr&&bG.expr.filters){bG.expr.filters.animated=function(e){return bG.grep(bG.timers,function(bZ){return e===bZ.elem}).length}}var bm=/^(?:body|html)$/i;bG.fn.offset=function(ca){if(arguments.length){return ca===aB?this:this.each(function(cb){bG.offset.setOffset(this,ca,cb)})}var b4,bZ,b5,b6,b3,b7,e,b2,b8,b1,b0=this[0],b9=b0&&b0.ownerDocument;if(!b9){return}if((b5=b9.body)===b0){return bG.offset.bodyOffset(b0)}bZ=b9.documentElement;if(!bG.contains(bZ,b0)){return{top:0,left:0}}b4=b0.getBoundingClientRect();b6=bn(b9);b3=bZ.clientTop||b5.clientTop||0;b7=bZ.clientLeft||b5.clientLeft||0;e=b6.pageYOffset||bZ.scrollTop;b2=b6.pageXOffset||bZ.scrollLeft;b8=b4.top+e-b3;b1=b4.left+b2-b7;return{top:b8,left:b1}};bG.offset={bodyOffset:function(e){var b0=e.offsetTop,bZ=e.offsetLeft;if(bG.support.doesNotIncludeMarginInBodyOffset){b0+=parseFloat(bG.css(e,"marginTop"))||0;bZ+=parseFloat(bG.css(e,"marginLeft"))||0}return{top:b0,left:bZ}},setOffset:function(b1,ca,b4){var b5=bG.css(b1,"position");if(b5==="static"){b1.style.position="relative"}var b3=bG(b1),bZ=b3.offset(),e=bG.css(b1,"top"),b8=bG.css(b1,"left"),b9=(b5==="absolute"||b5==="fixed")&&bG.inArray("auto",[e,b8])>-1,b7={},b6={},b0,b2;if(b9){b6=b3.position();b0=b6.top;b2=b6.left}else{b0=parseFloat(e)||0;b2=parseFloat(b8)||0}if(bG.isFunction(ca)){ca=ca.call(b1,b4,bZ)}if(ca.top!=null){b7.top=(ca.top-bZ.top)+b0}if(ca.left!=null){b7.left=(ca.left-bZ.left)+b2}if("using" in ca){ca.using.call(b1,b7)}else{b3.css(b7)}}};bG.fn.extend({position:function(){if(!this[0]){return}var b0=this[0],bZ=this.offsetParent(),b1=this.offset(),e=bm.test(bZ[0].nodeName)?{top:0,left:0}:bZ.offset();b1.top-=parseFloat(bG.css(b0,"marginTop"))||0;b1.left-=parseFloat(bG.css(b0,"marginLeft"))||0;e.top+=parseFloat(bG.css(bZ[0],"borderTopWidth"))||0;e.left+=parseFloat(bG.css(bZ[0],"borderLeftWidth"))||0;return{top:b1.top-e.top,left:b1.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.body;while(e&&(!bm.test(e.nodeName)&&bG.css(e,"position")==="static")){e=e.offsetParent}return e||o.body})}});bG.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b0,bZ){var e=/Y/.test(bZ);bG.fn[b0]=function(b1){return bG.access(this,function(b2,b5,b4){var b3=bn(b2);if(b4===aB){return b3?(bZ in b3)?b3[bZ]:b3.document.documentElement[b5]:b2[b5]}if(b3){b3.scrollTo(!e?b4:bG(b3).scrollLeft(),e?b4:bG(b3).scrollTop())}else{b2[b5]=b4}},b0,b1,arguments.length,null)}});function bn(e){return bG.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}bG.each({Height:"height",Width:"width"},function(e,bZ){bG.each({padding:"inner"+e,content:bZ,"":"outer"+e},function(b0,b1){bG.fn[b1]=function(b5,b4){var b3=arguments.length&&(b0||typeof b5!=="boolean"),b2=b0||(b5===true||b4===true?"margin":"border");return bG.access(this,function(b7,b6,b8){var b9;if(bG.isWindow(b7)){return b7.document.documentElement["client"+e]}if(b7.nodeType===9){b9=b7.documentElement;return Math.max(b7.body["scroll"+e],b9["scroll"+e],b7.body["offset"+e],b9["offset"+e],b9["client"+e])}return b8===aB?bG.css(b7,b6,b8,b2):bG.style(b7,b6,b8,b2)},bZ,b3?b5:aB,b3,null)}})});a2.jQuery=a2.$=bG;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return bG})}})(window);(function(d){var h,g={},p={16:false,18:false,17:false,91:false},e="all",a={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,command:91},q={backspace:8,tab:9,clear:12,enter:13,"return":13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,"delete":46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220};for(h=1;h<20;h++){a["f"+h]=111+h}function n(t,s){var k=t.length;while(k--){if(t[k]===s){return k}}return -1}function o(x,w){var u,v,s,t,y;u=x.keyCode;if(u==93||u==224){u=91}if(u in p){p[u]=true;for(s in a){if(a[s]==u){c[s]=true}}return}if(!c.filter.call(this,x)){return}if(!(u in g)){return}for(t=0;t<g[u].length;t++){v=g[u][t];if(v.scope==w||v.scope=="all"){y=v.mods.length>0;for(s in p){if((!p[s]&&n(v.mods,+s)>-1)||(p[s]&&n(v.mods,+s)==-1)){y=false}}if((v.mods.length==0&&!p[16]&&!p[18]&&!p[17]&&!p[91])||y){if(v.method(x,v)===false){if(x.preventDefault){x.preventDefault()}else{x.returnValue=false}if(x.stopPropagation){x.stopPropagation()}if(x.cancelBubble){x.cancelBubble=true}}}}}}function f(u){var t=u.keyCode,s;if(t==93||t==224){t=91}if(t in p){p[t]=false;for(s in a){if(a[s]==t){c[s]=false}}}}function r(){for(h in p){p[h]=false}for(h in a){c[h]=false}}function c(t,u,x){var w,v,s,k;if(x===undefined){x=u;u="all"}t=t.replace(/\s/g,"");w=t.split(",");if((w[w.length-1])==""){w[w.length-2]+=","}for(s=0;s<w.length;s++){v=[];t=w[s].split("+");if(t.length>1){v=t.slice(0,t.length-1);for(k=0;k<v.length;k++){v[k]=a[v[k]]}t=[t[t.length-1]]}t=t[0];t=q[t]||t.toUpperCase().charCodeAt(0);if(!(t in g)){g[t]=[]}g[t].push({shortcut:w[s],scope:u,method:x,key:w[s],mods:v})}}function b(s){var k=(s.target||s.srcElement).tagName;return !(k=="INPUT"||k=="SELECT"||k=="TEXTAREA")}for(h in a){c[h]=false}function j(k){e=k||"all"}function l(){return e||"all"}function m(u){var t,k,s;for(t in g){k=g[t];for(s=0;s<k.length;){if(k[s].scope===u){k.splice(s,1)}else{s++}}}}function i(k,s,t){if(k.addEventListener){k.addEventListener(s,t,false)}else{if(k.attachEvent){k.attachEvent("on"+s,function(){t(window.event)})}}}i(document,"keydown",function(k){o(k,e)});i(document,"keyup",f);i(window,"focus",r);d.key=c;d.key.setScope=j;d.key.getScope=l;d.key.deleteScope=m;d.key.filter=b;if(typeof module!=="undefined"){module.exports=key}})(this);(function(){var v=this;var j=v._;var D={};var C=Array.prototype,f=Object.prototype,q=Function.prototype;var m=C.slice,z=C.unshift,c=f.toString,h=f.hasOwnProperty;var L=C.forEach,o=C.map,E=C.reduce,b=C.reduceRight,a=C.filter,A=C.every,n=C.some,l=C.indexOf,k=C.lastIndexOf,s=Array.isArray,e=Object.keys,F=q.bind;var M=function(p){return new t(p)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=M}exports._=M}else{v._=M}M.VERSION="1.3.3";var I=M.each=M.forEach=function(R,Q,P){if(R==null){return}if(L&&R.forEach===L){R.forEach(Q,P)}else{if(R.length===+R.length){for(var O=0,p=R.length;O<p;O++){if(O in R&&Q.call(P,R[O],O,R)===D){return}}}else{for(var N in R){if(M.has(R,N)){if(Q.call(P,R[N],N,R)===D){return}}}}}};M.map=M.collect=function(P,O,N){var p=[];if(P==null){return p}if(o&&P.map===o){return P.map(O,N)}I(P,function(S,Q,R){p[p.length]=O.call(N,S,Q,R)});if(P.length===+P.length){p.length=P.length}return p};M.reduce=M.foldl=M.inject=function(Q,P,p,O){var N=arguments.length>2;if(Q==null){Q=[]}if(E&&Q.reduce===E){if(O){P=M.bind(P,O)}return N?Q.reduce(P,p):Q.reduce(P)}I(Q,function(T,R,S){if(!N){p=T;N=true}else{p=P.call(O,p,T,R,S)}});if(!N){throw new TypeError("Reduce of empty array with no initial value")}return p};M.reduceRight=M.foldr=function(Q,P,p,O){var N=arguments.length>2;if(Q==null){Q=[]}if(b&&Q.reduceRight===b){if(O){P=M.bind(P,O)}return N?Q.reduceRight(P,p):Q.reduceRight(P)}var R=M.toArray(Q).reverse();if(O&&!N){P=M.bind(P,O)}return N?M.reduce(R,P,p,O):M.reduce(R,P)};M.find=M.detect=function(P,O,N){var p;y(P,function(S,Q,R){if(O.call(N,S,Q,R)){p=S;return true}});return p};M.filter=M.select=function(P,O,N){var p=[];if(P==null){return p}if(a&&P.filter===a){return P.filter(O,N)}I(P,function(S,Q,R){if(O.call(N,S,Q,R)){p[p.length]=S}});return p};M.reject=function(P,O,N){var p=[];if(P==null){return p}I(P,function(S,Q,R){if(!O.call(N,S,Q,R)){p[p.length]=S}});return p};M.every=M.all=function(P,O,N){var p=true;if(P==null){return p}if(A&&P.every===A){return P.every(O,N)}I(P,function(S,Q,R){if(!(p=p&&O.call(N,S,Q,R))){return D}});return !!p};var y=M.some=M.any=function(P,O,N){O||(O=M.identity);var p=false;if(P==null){return p}if(n&&P.some===n){return P.some(O,N)}I(P,function(S,Q,R){if(p||(p=O.call(N,S,Q,R))){return D}});return !!p};M.include=M.contains=function(O,N){var p=false;if(O==null){return p}if(l&&O.indexOf===l){return O.indexOf(N)!=-1}p=y(O,function(P){return P===N});return p};M.invoke=function(N,O){var p=m.call(arguments,2);return M.map(N,function(P){return(M.isFunction(O)?O||P:P[O]).apply(P,p)})};M.pluck=function(N,p){return M.map(N,function(O){return O[p]})};M.max=function(P,O,N){if(!O&&M.isArray(P)&&P[0]===+P[0]){return Math.max.apply(Math,P)}if(!O&&M.isEmpty(P)){return -Infinity}var p={computed:-Infinity};I(P,function(T,Q,S){var R=O?O.call(N,T,Q,S):T;R>=p.computed&&(p={value:T,computed:R})});return p.value};M.min=function(P,O,N){if(!O&&M.isArray(P)&&P[0]===+P[0]){return Math.min.apply(Math,P)}if(!O&&M.isEmpty(P)){return Infinity}var p={computed:Infinity};I(P,function(T,Q,S){var R=O?O.call(N,T,Q,S):T;R<p.computed&&(p={value:T,computed:R})});return p.value};M.shuffle=function(O){var p=[],N;I(O,function(R,P,Q){N=Math.floor(Math.random()*(P+1));p[P]=p[N];p[N]=R});return p};M.sortBy=function(O,P,p){var N=M.isFunction(P)?P:function(Q){return Q[P]};return M.pluck(M.map(O,function(S,Q,R){return{value:S,criteria:N.call(p,S,Q,R)}}).sort(function(T,S){var R=T.criteria,Q=S.criteria;if(R===void 0){return 1}if(Q===void 0){return -1}return R<Q?-1:R>Q?1:0}),"value")};M.groupBy=function(O,P){var p={};var N=M.isFunction(P)?P:function(Q){return Q[P]};I(O,function(S,Q){var R=N(S,Q);(p[R]||(p[R]=[])).push(S)});return p};M.sortedIndex=function(R,Q,O){O||(O=M.identity);var p=0,P=R.length;while(p<P){var N=(p+P)>>1;O(R[N])<O(Q)?p=N+1:P=N}return p};M.toArray=function(p){if(!p){return[]}if(M.isArray(p)){return m.call(p)}if(M.isArguments(p)){return m.call(p)}if(p.toArray&&M.isFunction(p.toArray)){return p.toArray()}return M.values(p)};M.size=function(p){return M.isArray(p)?p.length:M.keys(p).length};M.first=M.head=M.take=function(O,N,p){return(N!=null)&&!p?m.call(O,0,N):O[0]};M.initial=function(O,N,p){return m.call(O,0,O.length-((N==null)||p?1:N))};M.last=function(O,N,p){if((N!=null)&&!p){return m.call(O,Math.max(O.length-N,0))}else{return O[O.length-1]}};M.rest=M.tail=function(O,p,N){return m.call(O,(p==null)||N?1:p)};M.compact=function(p){return M.filter(p,function(N){return !!N})};M.flatten=function(N,p){return M.reduce(N,function(O,P){if(M.isArray(P)){return O.concat(p?P:M.flatten(P))}O[O.length]=P;return O},[])};M.without=function(p){return M.difference(p,m.call(arguments,1))};M.uniq=M.unique=function(Q,P,O){var p=O?M.map(Q,O):Q;var N=[];if(Q.length<3){P=true}M.reduce(p,function(R,T,S){if(P?M.last(R)!==T||!R.length:!M.include(R,T)){R.push(T);N.push(Q[S])}return R},[]);return N};M.union=function(){return M.uniq(M.flatten(arguments,true))};M.intersection=M.intersect=function(N){var p=m.call(arguments,1);return M.filter(M.uniq(N),function(O){return M.every(p,function(P){return M.indexOf(P,O)>=0})})};M.difference=function(N){var p=M.flatten(m.call(arguments,1),true);return M.filter(N,function(O){return !M.include(p,O)})};M.zip=function(){var p=m.call(arguments);var P=M.max(M.pluck(p,"length"));var O=new Array(P);for(var N=0;N<P;N++){O[N]=M.pluck(p,""+N)}return O};M.indexOf=function(Q,O,P){if(Q==null){return -1}var N,p;if(P){N=M.sortedIndex(Q,O);return Q[N]===O?N:-1}if(l&&Q.indexOf===l){return Q.indexOf(O)}for(N=0,p=Q.length;N<p;N++){if(N in Q&&Q[N]===O){return N}}return -1};M.lastIndexOf=function(O,N){if(O==null){return -1}if(k&&O.lastIndexOf===k){return O.lastIndexOf(N)}var p=O.length;while(p--){if(p in O&&O[p]===N){return p}}return -1};M.range=function(R,P,Q){if(arguments.length<=1){P=R||0;R=0}Q=arguments[2]||1;var N=Math.max(Math.ceil((P-R)/Q),0);var p=0;var O=new Array(N);while(p<N){O[p++]=R;R+=Q}return O};var G=function(){};M.bind=function d(P,N){var O,p;if(P.bind===F&&F){return F.apply(P,m.call(arguments,1))}if(!M.isFunction(P)){throw new TypeError}p=m.call(arguments,2);return O=function(){if(!(this instanceof O)){return P.apply(N,p.concat(m.call(arguments)))}G.prototype=P.prototype;var R=new G;var Q=P.apply(R,p.concat(m.call(arguments)));if(Object(Q)===Q){return Q}return R}};M.bindAll=function(N){var p=m.call(arguments,1);if(p.length==0){p=M.functions(N)}I(p,function(O){N[O]=M.bind(N[O],N)});return N};M.memoize=function(O,N){var p={};N||(N=M.identity);return function(){var P=N.apply(this,arguments);return M.has(p,P)?p[P]:(p[P]=O.apply(this,arguments))}};M.delay=function(N,O){var p=m.call(arguments,2);return setTimeout(function(){return N.apply(null,p)},O)};M.defer=function(p){return M.delay.apply(M,[p,1].concat(m.call(arguments,1)))};M.throttle=function(O,P){var N,R,S,T,Q,U;var p=M.debounce(function(){Q=T=false},P);return function(){N=this;R=arguments;var V=function(){S=null;if(Q){O.apply(N,R)}p()};if(!S){S=setTimeout(V,P)}if(T){Q=true}else{U=O.apply(N,R)}p();T=true;return U}};M.debounce=function(N,P,p){var O;return function(){var S=this,R=arguments;var Q=function(){O=null;if(!p){N.apply(S,R)}};if(p&&!O){N.apply(S,R)}clearTimeout(O);O=setTimeout(Q,P)}};M.once=function(O){var p=false,N;return function(){if(p){return N}p=true;return N=O.apply(this,arguments)}};M.wrap=function(p,N){return function(){var O=[p].concat(m.call(arguments,0));return N.apply(this,O)}};M.compose=function(){var p=arguments;return function(){var N=arguments;for(var O=p.length-1;O>=0;O--){N=[p[O].apply(this,N)]}return N[0]}};M.after=function(N,p){if(N<=0){return p()}return function(){if(--N<1){return p.apply(this,arguments)}}};M.keys=e||function(O){if(O!==Object(O)){throw new TypeError("Invalid object")}var N=[];for(var p in O){if(M.has(O,p)){N[N.length]=p}}return N};M.values=function(p){return M.map(p,M.identity)};M.functions=M.methods=function(O){var N=[];for(var p in O){if(M.isFunction(O[p])){N.push(p)}}return N.sort()};M.extend=function(p){I(m.call(arguments,1),function(N){for(var O in N){p[O]=N[O]}});return p};M.pick=function(N){var p={};I(M.flatten(m.call(arguments,1)),function(O){if(O in N){p[O]=N[O]}});return p};M.defaults=function(p){I(m.call(arguments,1),function(N){for(var O in N){if(p[O]==null){p[O]=N[O]}}});return p};M.clone=function(p){if(!M.isObject(p)){return p}return M.isArray(p)?p.slice():M.extend({},p)};M.tap=function(N,p){p(N);return N};function J(P,O,N){if(P===O){return P!==0||1/P==1/O}if(P==null||O==null){return P===O}if(P._chain){P=P._wrapped}if(O._chain){O=O._wrapped}if(P.isEqual&&M.isFunction(P.isEqual)){return P.isEqual(O)}if(O.isEqual&&M.isFunction(O.isEqual)){return O.isEqual(P)}var S=c.call(P);if(S!=c.call(O)){return false}switch(S){case"[object String]":return P==String(O);case"[object Number]":return P!=+P?O!=+O:(P==0?1/P==1/O:P==+O);case"[object Date]":case"[object Boolean]":return +P==+O;case"[object RegExp]":return P.source==O.source&&P.global==O.global&&P.multiline==O.multiline&&P.ignoreCase==O.ignoreCase}if(typeof P!="object"||typeof O!="object"){return false}var T=N.length;while(T--){if(N[T]==P){return true}}N.push(P);var R=0,p=true;if(S=="[object Array]"){R=P.length;p=R==O.length;if(p){while(R--){if(!(p=R in P==R in O&&J(P[R],O[R],N))){break}}}}else{if("constructor" in P!="constructor" in O||P.constructor!=O.constructor){return false}for(var Q in P){if(M.has(P,Q)){R++;if(!(p=M.has(O,Q)&&J(P[Q],O[Q],N))){break}}}if(p){for(Q in O){if(M.has(O,Q)&&!(R--)){break}}p=!R}}N.pop();return p}M.isEqual=function(N,p){return J(N,p,[])};M.isEmpty=function(N){if(N==null){return true}if(M.isArray(N)||M.isString(N)){return N.length===0}for(var p in N){if(M.has(N,p)){return false}}return true};M.isElement=function(p){return !!(p&&p.nodeType==1)};M.isArray=s||function(p){return c.call(p)=="[object Array]"};M.isObject=function(p){return p===Object(p)};M.isArguments=function(p){return c.call(p)=="[object Arguments]"};if(!M.isArguments(arguments)){M.isArguments=function(p){return !!(p&&M.has(p,"callee"))}}M.isFunction=function(p){return c.call(p)=="[object Function]"};M.isString=function(p){return c.call(p)=="[object String]"};M.isNumber=function(p){return c.call(p)=="[object Number]"};M.isFinite=function(p){return M.isNumber(p)&&isFinite(p)};M.isNaN=function(p){return p!==p};M.isBoolean=function(p){return p===true||p===false||c.call(p)=="[object Boolean]"};M.isDate=function(p){return c.call(p)=="[object Date]"};M.isRegExp=function(p){return c.call(p)=="[object RegExp]"};M.isNull=function(p){return p===null};M.isUndefined=function(p){return p===void 0};M.has=function(N,p){return h.call(N,p)};M.noConflict=function(){v._=j;return this};M.identity=function(p){return p};M.times=function(P,O,N){for(var p=0;p<P;p++){O.call(N,p)}};M.escape=function(p){return(""+p).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};M.result=function(p,O){if(p==null){return null}var N=p[O];return M.isFunction(N)?N.call(p):N};M.mixin=function(p){I(M.functions(p),function(N){w(N,M[N]=p[N])})};var x=0;M.uniqueId=function(p){var N=x++;return p?p+N:N};M.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var u=/.^/;var g={"\\":"\\","'":"'",r:"\r",n:"\n",t:"\t",u2028:"\u2028",u2029:"\u2029"};for(var H in g){g[g[H]]=H}var i=/\\|'|\r|\n|\t|\u2028|\u2029/g;var B=/\\(\\|'|r|n|t|u2028|u2029)/g;var K=function(p){return p.replace(B,function(N,O){return g[O]})};M.template=function(R,Q,O){O=M.defaults(O||{},M.templateSettings);var P="__p+='"+R.replace(i,function(S){return"\\"+g[S]}).replace(O.escape||u,function(S,T){return"'+\n_.escape("+K(T)+")+\n'"}).replace(O.interpolate||u,function(S,T){return"'+\n("+K(T)+")+\n'"}).replace(O.evaluate||u,function(S,T){return"';\n"+K(T)+"\n;__p+='"})+"';\n";if(!O.variable){P="with(obj||{}){\n"+P+"}\n"}P="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+P+"return __p;\n";var N=new Function(O.variable||"obj","_",P);if(Q){return N(Q,M)}var p=function(S){return N.call(this,S,M)};p.source="function("+(O.variable||"obj")+"){\n"+P+"}";return p};M.chain=function(p){return M(p).chain()};var t=function(p){this._wrapped=p};M.prototype=t.prototype;var r=function(N,p){return p?M(N).chain():N};var w=function(p,N){t.prototype[p]=function(){var O=m.call(arguments);z.call(O,this._wrapped);return r(N.apply(M,O),this._chain)}};M.mixin(M);I(["pop","push","reverse","shift","sort","splice","unshift"],function(p){var N=C[p];t.prototype[p]=function(){var O=this._wrapped;N.apply(O,arguments);var P=O.length;if((p=="shift"||p=="splice")&&P===0){delete O[0]}return r(O,this._chain)}});I(["concat","join","slice"],function(p){var N=C[p];t.prototype[p]=function(){return r(N.apply(this._wrapped,arguments),this._chain)}});t.prototype.chain=function(){this._chain=true;return this};t.prototype.value=function(){return this._wrapped}}).call(this);(function(){$(document).ready(function(){var a;$("#search_frame").hide();window.lastSearch="";if(window.top.frames.main){$("body").addClass("frames")}else{$("body").addClass("noframes")}$("pre code").each(function(b,c){return hljs.highlightBlock(c," ")});$("#search_frame").on("load",function(b){if($(this).attr("src")){return $("#search_frame").show()}});$(".frames #content a").each(function(){if(/^https?:\/\//i.test($(this).attr("href"))){return $(this).attr("target","_top")}});$("#search input").focus();$("#search a").click(function(b){var c=this;b.preventDefault();if($(this).hasClass("active")){$(this).removeClass("active");return $("#search_frame").hide()}else{$("#search a").removeClass("active");$("#search_frame").one("load",function(){return $(c).addClass("active")});return $("#search_frame").attr("src",$(this).attr("href"))}});$("#content.list #search input").keyup(function(c){var b;b=$(this).val().toLowerCase();if(b.length===0){$("#content.list ul li").each(function(){if($("#content").hasClass("tree")){$(this).removeClass("result");$(this).css("padding-left",$(this).data("padding"))}return $(this).show()})}else{$("#content.list ul li").each(function(){var d;if($(this).find("a").text().toLowerCase().indexOf(b)===-1){return $(this).hide()}else{if($("#content").hasClass("tree")){$(this).addClass("result");d=$(this).css("padding-left");if(d!=="0px"){$(this).data("padding",d)}$(this).css("padding-left",0)}return $(this).show()}})}return window.createStripes()});$("#fuzzySearch input").keyup(function(b){var e,h,i,j,g,f,m,c,l,d,k;l=$(this).val();c=$("#fuzzySearch ol");if(b.keyCode===13){return location.href=$("#fuzzySearch ol li.selected a").attr("href")}else{if(b.keyCode===38){j=c.children();i=j.index($("#fuzzySearch ol li.selected"));$(j.get(i)).removeClass("selected");i-=1;if(i===-1){i=j.length-1}return $(j.get(i)).addClass("selected")}else{if(b.keyCode===40){j=c.children();i=j.index($("#fuzzySearch ol li.selected"));$(j.get(i)).removeClass("selected");i+=1;if(i===j.length){i=0}return $(j.get(i)).addClass("selected")}else{if(l&&l!==lastSearch){window.lastSearch=l;c.empty();m=$("#base").attr("data-path");f=fuzzy(l,_.pluck(searchData,"t"),{limit:25});h=fuzzy(l,_.pluck(searchData,"t"),{pre:"<span>",post:"</span>",limit:25});for(i=d=0,k=f.length;d<k;i=++d){g=f[i];e=_.find(searchData,function(n){return n.t===g});c.append($("<li><a href='"+m+e.p+"'>"+h[i]+"</a>"+(e.h?"<small>("+e.h+")</small>":"")+"</li>"))}$("#fuzzySearch ol li:first").addClass("selected");$("#fuzzySearch").height(c.height()+45);return $("#fuzzySearch ol li").each(function(n,o){if(n%2===0){return $(o).addClass("stripe")}else{return $(o).removeClass("stripe")}})}else{if(l!==lastSearch){c.empty();return $("#fuzzySearch").height(45)}}}}}});$("body #content.list ul").on("click","li",function(c){var b;b=$(this).find("a:not(.toggle)").attr("href");if(b){if($("body").hasClass("noframes")){if(b!=="#"){window.parent.location.href=b}}else{if(b!=="#"){top.frames.main.location.href=b}}}return c.preventDefault()});$("#content.tree ul > ul").each(function(){return $(this).prev().prepend($('<a href="#" class="toggle"></a>'))});window.createStripes=function(){return $("#content.list li:visible").each(function(b,c){if(b%2===0){return $(c).addClass("stripe")}else{return $(c).removeClass("stripe")}})};$("#content.tree a.toggle").click(function(){$(this).toggleClass("collapsed");$(this).parent().next().toggle();return window.createStripes()});$("a.frames").click(function(b){location.href=$(this).attr("href");return b.preventDefault()});$("a.noframes").click(function(b){parent.location.href=location.href;return b.preventDefault()});window.indentTree=function(c,b){return $(c).find("> ul").each(function(){$(this).find("> li").css("padding-left",""+b+"px");return window.indentTree($(this),b+20)})};$("#filecontents").each(function(){var p,h,o,j,k,c,m,b,l,f,e,n,g,d;b=$("nav.toc");l=b;c=0;p=[];g=$("h2,h3,h4,h5,h6",this);for(k=f=0,n=g.length;f<n;k=++f){o=g[k];o=$(o);o.before($("<a name='toc_"+k+"'></a>"));h=parseInt(o.get(0).tagName.substring(1));if(h>c){m=$("<ol></ol>");l.append(m);p.push(l);l=m;c=h}else{if(h<c){for(j=e=0,d=c-h;0<=d?e<d:e>d;j=0<=d?++e:--e){l=p.pop()}if(!l){l=$("nav.toc ol:first")}c=h}}l.append($("<li><a href='#toc_"+k+"'>"+(o.text())+"</a></li>"))}if($("ol",b).length===0){return b.hide()}});$("a.hide_toc").click(function(){return $("nav.toc").toggleClass("hidden")});$("a.float_toc").click(function(){$("nav.toc").toggleClass("inline");return $(this).text($("nav.toc").hasClass("inline")?"float":"left")});indentTree($("#content.list > ul"),20);createStripes();a=function(b,c){if(parent.frames.list){if(!/#{ url }$/.test(parent.frames.list.location.href)){return parent.frames.list.location.href=b}}else{if(parent){return parent.$("#search #"+c).click()}else{return $("#search #"+c).click()}}};key.filter=function(c){var b;b=(c.target||c.srcElement).tagName;return b!=="INPUT"||c.keyCode===27||c.ctrlKey===true};key("s",function(b){$("#search input").focus().select();if(parent.frames.list){parent.frames.list.$("#search input").focus().select()}return b.preventDefault()});key("esc",function(){if(parent.frames.list){parent.frames.list.$("#search input").blur();parent.frames.main.$("#help").hide();return parent.frames.main.$("#fuzzySearch").hide()}else{if(parent){parent.$("#search .active").click();parent.$("#help").hide();return parent.$("#fuzzySearch").hide()}else{$("#search input").blur();$("#help").hide();return $("#fuzzySearch").hide()}}});key("⌃+l",function(){var b;b=$(parent.document.body);if(b.data("toggled")){parent.document.body.cols="20%, *";return b.data("toggled",false)}else{parent.document.body.cols="0, *";return b.data("toggled",true)}});key("⌃+c",function(){return a("class_list.html","class_list_link")});key("⌃+m",function(){return a("method_list.html","method_list_link")});key("⌃+i",function(){return a("mixin_list.html","mixin_list_link")});key("⌃+f",function(){return a("file_list.html","file_list_link")});key("⌃+e",function(){return a("extra_list.html","extra_list_link")});key("⌃+h",function(){if(parent.frames.main){return parent.frames.main.$("#help").toggle()}else{if(parent){return parent.$("#help").toggle()}else{return $("#help").toggle()}}});return key("⌃+t",function(b){$("#fuzzySearch").toggle();$("#fuzzySearch input").focus().select();if(parent.frames.main){parent.frames.main.$("#fuzzySearch").show();parent.frames.main.$("#fuzzySearch input").focus().select()}return b.preventDefault()})})}).call(this);(function(){var b,a;window.fuzzy=function(A,u,k){var m,i,t,r,f,l,n,I,d,H,q,E,y,C,g,w,x,D,s,o,v,c,B,e,z,F,p,j,h,G;if(k==null){k={}}v=k.pre,x=k.post,C=k.limit,j=k.separator,I=k.ignorecase,d=k.ignorespace,p=k.separate;if(I==null){I=true}if(d==null){d=true}if(p==null){p=false}if(p&&!j){throw new Error("You must pass a separator when options.separate is true.")}if(d){A=A.replace(/\s/g,"")}g=[];l=(I&&"i")||"";f=v&&x;m=function(J,K,L){if(p){return g[L]([J,K])}else{if(J){return g[L](J+j+K)}else{return g[L](K)}}};t=function(J,K){return m(J,K,"push")};F=function(J,K){return m(J,K,"unshift")};if(j){B=A.split(j);D=B.pop();c=B.join(j);H=_.map(B,(function(J){return b(J)}));H=H.join(".*?"+j+".*?");z=new RegExp("^.*?"+H+".*?$",l)}else{B=false;D=A;z=false}o=new RegExp("^.*?"+(b(D))+".*$",l);for(h=0,G=u.length;h<G;h++){E=u[h];if(g.length===C){break}n=j&&!!~E.indexOf(j);if(!n&&E.indexOf(A)===0){if(f){y=A.length;F("",v+E.slice(0,y)+x+E.slice(y))}else{F("",E)}continue}if(n){w=E.split(j);e=w.slice(0,-1).join(j);s=_.last(w)}else{e="";s=E}q=!z||z.test(e);q&&(q=!o||o.test(s));if(!q){continue}if(f){i=a(s,D,v,x,I);if(n){r=a(e,c,v,x,I);t(r,i)}else{t("",i)}}else{t(e,s)}}return g};b=function(h){var i,f,e,g,d;f=h.split("");e=[];for(g=0,d=f.length;g<d;g++){i=f[g];i=i==="\\"?"\\\\":i;e.push("(["+i+"])")}return e.join("[^/]*?")};a=function(j,k,f,n,e){var l,h,d,o,g,m,i;h="";k=k.split("");d=k.shift();i=j.split("");for(g=0,m=i.length;g<m;g++){l=i[g];if(d){o=false;if(e&&l.toLowerCase()===d.toLowerCase()){o=true}else{if(!e&&l===d){o=true}}if(o){h+=""+f+l+n;d=k.shift();continue}}h+=l}return h}}).call(this);var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/</gm,"<")}function f(r,q,p){return RegExp(q,"m"+(r.case_insensitive?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]||p=="no-highlight"){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(w,x,v){if(w.compiled){return}var u;if(!v){w.beginRe=f(x,w.begin?w.begin:"\\B|\\b");if(!w.end&&!w.endsWithParent){w.end="\\B|\\b"}if(w.end){w.endRe=f(x,w.end)}}if(w.illegal){w.illegalRe=f(x,w.illegal)}if(w.relevance===undefined){w.relevance=1}if(w.keywords){w.lexemsRe=f(x,w.lexems||hljs.IDENT_RE,true);for(var t in w.keywords){if(!w.keywords.hasOwnProperty(t)){continue}if(w.keywords[t] instanceof Object){u=w.keywords[t]}else{u=w.keywords;t="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}w.keywords[r]=[t,u[r]]}}}if(!w.contains){w.contains=[]}w.compiled=true;for(var s=0;s<w.contains.length;s++){if(w.contains[s]=="self"){w.contains[s]=w}q(w.contains[s],x,false)}if(w.starts){q(w.starts,x,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].defaultMode,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function r(K,M){for(var L=0;L<M.contains.length;L++){if(M.contains[L].beginRe.test(K)){return M.contains[L]}}}function w(L,K){if(p[L].end&&p[L].endRe.test(K)){return 1}if(p[L].endsWithParent){var M=w(L-1,K);return M?M+1:0}return 0}function x(K,L){return L.illegal&&L.illegalRe.test(K)}function J(N,O){var K=[];for(var M=0;M<N.contains.length;M++){K.push(N.contains[M].begin)}var L=p.length-1;do{if(p[L].end){K.push(p[L].end)}L--}while(p[L+1].endsWithParent);if(N.illegal){K.push(N.illegal)}return f(O,"("+K.join("|")+")",true)}function q(M,L){var N=p[p.length-1];if(!N.terminators){N.terminators=J(N,D)}N.terminators.lastIndex=L;var K=N.terminators.exec(M);if(K){return[M.substr(L,K.index-L),K[0],false]}else{return[M.substr(L),"",true]}}function A(N,K){var L=D.case_insensitive?K[0].toLowerCase():K[0];var M=N.keywords[L];if(M&&M instanceof Array){return M}return false}function E(L,P){L=m(L);if(!P.keywords){return L}var K="";var O=0;P.lexemsRe.lastIndex=0;var M=P.lexemsRe.exec(L);while(M){K+=L.substr(O,M.index-O);var N=A(P,M);if(N){y+=N[1];K+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{K+=M[0]}O=P.lexemsRe.lastIndex;M=P.lexemsRe.exec(L)}return K+L.substr(O,L.length-O)}function I(L,M){if(M.subLanguage&&e[M.subLanguage]){var K=d(M.subLanguage,L);y+=K.keyword_count;return K.value}else{return E(L,M)}}function H(M,K){var L=M.className?'<span class="'+M.className+'">':"";if(M.returnBegin){z+=L;M.buffer=""}else{if(M.excludeBegin){z+=m(K)+L;M.buffer=""}else{z+=L;M.buffer=K}}p.push(M);u+=M.relevance}function F(O,N,M){var R=p[p.length-1];if(M){z+=I(R.buffer+O,R);return false}var Q=r(N,R);if(Q){z+=I(R.buffer+O,R);H(Q,N);return Q.returnBegin}var L=w(p.length-1,N);if(L){var P=R.className?"</span>":"";if(R.returnEnd){z+=I(R.buffer+O,R)+P}else{if(R.excludeEnd){z+=I(R.buffer+O,R)+P+m(N)}else{z+=I(R.buffer+O+N,R)+P}}while(L>1){P=p[p.length-2].className?"</span>":"";z+=P;L--;p.length--}var K=p[p.length-1];p.length--;p[p.length-1].buffer="";if(K.starts){H(K.starts,"")}return R.returnEnd}if(x(N,R)){throw"Illegal"}}var D=e[B];var p=[D.defaultMode];var u=0;var y=0;var z="";try{var s,v=0;D.defaultMode.buffer="";do{s=q(C,v);var t=F(s[0],s[1],s[2]);v+=s[0].length;if(!t){v+=s[1].length}}while(!s[2]);if(p.length>1){throw"Illegal"}return{relevance:u,keyword_count:y,value:z}}catch(G){if(G=="Illegal"){return{relevance:0,keyword_count:0,value:m(C)}}else{throw G}}}function g(t){var p={keyword_count:0,relevance:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.relevance>r.keyword_count+r.relevance){r=s}if(s.keyword_count+s.relevance>p.keyword_count+p.relevance){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v=="no-highlight"){return}if(v){y=d(v,x)}else{y=g(x);v=y.language}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.className=s.className;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.relevance};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.relevance}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IDENT_RE="[a-zA-Z][a-zA-Z0-9_]*";this.UNDERSCORE_IDENT_RE="[a-zA-Z_][a-zA-Z0-9_]*";this.NUMBER_RE="\\b\\d+(\\.\\d+)?";this.C_NUMBER_RE="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BINARY_NUMBER_RE="\\b(0b[01]+)";this.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BACKSLASH_ESCAPE={begin:"\\\\.",relevance:0};this.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[this.BACKSLASH_ESCAPE],relevance:0};this.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[this.BACKSLASH_ESCAPE],relevance:0};this.C_LINE_COMMENT_MODE={className:"comment",begin:"//",end:"$"};this.C_BLOCK_COMMENT_MODE={className:"comment",begin:"/\\*",end:"\\*/"};this.HASH_COMMENT_MODE={className:"comment",begin:"#",end:"$"};this.NUMBER_MODE={className:"number",begin:this.NUMBER_RE,relevance:0};this.C_NUMBER_MODE={className:"number",begin:this.C_NUMBER_RE,relevance:0};this.BINARY_NUMBER_MODE={className:"number",begin:this.BINARY_NUMBER_RE,relevance:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.apache=function(){var a={className:"number",begin:"[\\$%]\\d+"};return{case_insensitive:true,defaultMode:{keywords:{keyword:{acceptfilter:1,acceptmutex:1,acceptpathinfo:1,accessfilename:1,action:1,addalt:1,addaltbyencoding:1,addaltbytype:1,addcharset:1,adddefaultcharset:1,adddescription:1,addencoding:1,addhandler:1,addicon:1,addiconbyencoding:1,addiconbytype:1,addinputfilter:1,addlanguage:1,addmoduleinfo:1,addoutputfilter:1,addoutputfilterbytype:1,addtype:1,alias:1,aliasmatch:1,allow:1,allowconnect:1,allowencodedslashes:1,allowoverride:1,anonymous:1,anonymous_logemail:1,anonymous_mustgiveemail:1,anonymous_nouserid:1,anonymous_verifyemail:1,authbasicauthoritative:1,authbasicprovider:1,authdbduserpwquery:1,authdbduserrealmquery:1,authdbmgroupfile:1,authdbmtype:1,authdbmuserfile:1,authdefaultauthoritative:1,authdigestalgorithm:1,authdigestdomain:1,authdigestnccheck:1,authdigestnonceformat:1,authdigestnoncelifetime:1,authdigestprovider:1,authdigestqop:1,authdigestshmemsize:1,authgroupfile:1,authldapbinddn:1,authldapbindpassword:1,authldapcharsetconfig:1,authldapcomparednonserver:1,authldapdereferencealiases:1,authldapgroupattribute:1,authldapgroupattributeisdn:1,authldapremoteuserattribute:1,authldapremoteuserisdn:1,authldapurl:1,authname:1,authnprovideralias:1,authtype:1,authuserfile:1,authzdbmauthoritative:1,authzdbmtype:1,authzdefaultauthoritative:1,authzgroupfileauthoritative:1,authzldapauthoritative:1,authzownerauthoritative:1,authzuserauthoritative:1,balancermember:1,browsermatch:1,browsermatchnocase:1,bufferedlogs:1,cachedefaultexpire:1,cachedirlength:1,cachedirlevels:1,cachedisable:1,cacheenable:1,cachefile:1,cacheignorecachecontrol:1,cacheignoreheaders:1,cacheignorenolastmod:1,cacheignorequerystring:1,cachelastmodifiedfactor:1,cachemaxexpire:1,cachemaxfilesize:1,cacheminfilesize:1,cachenegotiateddocs:1,cacheroot:1,cachestorenostore:1,cachestoreprivate:1,cgimapextension:1,charsetdefault:1,charsetoptions:1,charsetsourceenc:1,checkcaseonly:1,checkspelling:1,chrootdir:1,contentdigest:1,cookiedomain:1,cookieexpires:1,cookielog:1,cookiename:1,cookiestyle:1,cookietracking:1,coredumpdirectory:1,customlog:1,dav:1,davdepthinfinity:1,davgenericlockdb:1,davlockdb:1,davmintimeout:1,dbdexptime:1,dbdkeep:1,dbdmax:1,dbdmin:1,dbdparams:1,dbdpersist:1,dbdpreparesql:1,dbdriver:1,defaulticon:1,defaultlanguage:1,defaulttype:1,deflatebuffersize:1,deflatecompressionlevel:1,deflatefilternote:1,deflatememlevel:1,deflatewindowsize:1,deny:1,directoryindex:1,directorymatch:1,directoryslash:1,documentroot:1,dumpioinput:1,dumpiologlevel:1,dumpiooutput:1,enableexceptionhook:1,enablemmap:1,enablesendfile:1,errordocument:1,errorlog:1,example:1,expiresactive:1,expiresbytype:1,expiresdefault:1,extendedstatus:1,extfilterdefine:1,extfilteroptions:1,fileetag:1,filterchain:1,filterdeclare:1,filterprotocol:1,filterprovider:1,filtertrace:1,forcelanguagepriority:1,forcetype:1,forensiclog:1,gracefulshutdowntimeout:1,group:1,header:1,headername:1,hostnamelookups:1,identitycheck:1,identitychecktimeout:1,imapbase:1,imapdefault:1,imapmenu:1,include:1,indexheadinsert:1,indexignore:1,indexoptions:1,indexorderdefault:1,indexstylesheet:1,isapiappendlogtoerrors:1,isapiappendlogtoquery:1,isapicachefile:1,isapifakeasync:1,isapilognotsupported:1,isapireadaheadbuffer:1,keepalive:1,keepalivetimeout:1,languagepriority:1,ldapcacheentries:1,ldapcachettl:1,ldapconnectiontimeout:1,ldapopcacheentries:1,ldapopcachettl:1,ldapsharedcachefile:1,ldapsharedcachesize:1,ldaptrustedclientcert:1,ldaptrustedglobalcert:1,ldaptrustedmode:1,ldapverifyservercert:1,limitinternalrecursion:1,limitrequestbody:1,limitrequestfields:1,limitrequestfieldsize:1,limitrequestline:1,limitxmlrequestbody:1,listen:1,listenbacklog:1,loadfile:1,loadmodule:1,lockfile:1,logformat:1,loglevel:1,maxclients:1,maxkeepaliverequests:1,maxmemfree:1,maxrequestsperchild:1,maxrequestsperthread:1,maxspareservers:1,maxsparethreads:1,maxthreads:1,mcachemaxobjectcount:1,mcachemaxobjectsize:1,mcachemaxstreamingbuffer:1,mcacheminobjectsize:1,mcacheremovalalgorithm:1,mcachesize:1,metadir:1,metafiles:1,metasuffix:1,mimemagicfile:1,minspareservers:1,minsparethreads:1,mmapfile:1,mod_gzip_on:1,mod_gzip_add_header_count:1,mod_gzip_keep_workfiles:1,mod_gzip_dechunk:1,mod_gzip_min_http:1,mod_gzip_minimum_file_size:1,mod_gzip_maximum_file_size:1,mod_gzip_maximum_inmem_size:1,mod_gzip_temp_dir:1,mod_gzip_item_include:1,mod_gzip_item_exclude:1,mod_gzip_command_version:1,mod_gzip_can_negotiate:1,mod_gzip_handle_methods:1,mod_gzip_static_suffix:1,mod_gzip_send_vary:1,mod_gzip_update_static:1,modmimeusepathinfo:1,multiviewsmatch:1,namevirtualhost:1,noproxy:1,nwssltrustedcerts:1,nwsslupgradeable:1,options:1,order:1,passenv:1,pidfile:1,protocolecho:1,proxybadheader:1,proxyblock:1,proxydomain:1,proxyerroroverride:1,proxyftpdircharset:1,proxyiobuffersize:1,proxymaxforwards:1,proxypass:1,proxypassinterpolateenv:1,proxypassmatch:1,proxypassreverse:1,proxypassreversecookiedomain:1,proxypassreversecookiepath:1,proxypreservehost:1,proxyreceivebuffersize:1,proxyremote:1,proxyremotematch:1,proxyrequests:1,proxyset:1,proxystatus:1,proxytimeout:1,proxyvia:1,readmename:1,receivebuffersize:1,redirect:1,redirectmatch:1,redirectpermanent:1,redirecttemp:1,removecharset:1,removeencoding:1,removehandler:1,removeinputfilter:1,removelanguage:1,removeoutputfilter:1,removetype:1,requestheader:1,require:2,rewritebase:1,rewritecond:10,rewriteengine:1,rewritelock:1,rewritelog:1,rewriteloglevel:1,rewritemap:1,rewriteoptions:1,rewriterule:10,rlimitcpu:1,rlimitmem:1,rlimitnproc:1,satisfy:1,scoreboardfile:1,script:1,scriptalias:1,scriptaliasmatch:1,scriptinterpretersource:1,scriptlog:1,scriptlogbuffer:1,scriptloglength:1,scriptsock:1,securelisten:1,seerequesttail:1,sendbuffersize:1,serveradmin:1,serveralias:1,serverlimit:1,servername:1,serverpath:1,serverroot:1,serversignature:1,servertokens:1,setenv:1,setenvif:1,setenvifnocase:1,sethandler:1,setinputfilter:1,setoutputfilter:1,ssienableaccess:1,ssiendtag:1,ssierrormsg:1,ssistarttag:1,ssitimeformat:1,ssiundefinedecho:1,sslcacertificatefile:1,sslcacertificatepath:1,sslcadnrequestfile:1,sslcadnrequestpath:1,sslcarevocationfile:1,sslcarevocationpath:1,sslcertificatechainfile:1,sslcertificatefile:1,sslcertificatekeyfile:1,sslciphersuite:1,sslcryptodevice:1,sslengine:1,sslhonorciperorder:1,sslmutex:1,ssloptions:1,sslpassphrasedialog:1,sslprotocol:1,sslproxycacertificatefile:1,sslproxycacertificatepath:1,sslproxycarevocationfile:1,sslproxycarevocationpath:1,sslproxyciphersuite:1,sslproxyengine:1,sslproxymachinecertificatefile:1,sslproxymachinecertificatepath:1,sslproxyprotocol:1,sslproxyverify:1,sslproxyverifydepth:1,sslrandomseed:1,sslrequire:1,sslrequiressl:1,sslsessioncache:1,sslsessioncachetimeout:1,sslusername:1,sslverifyclient:1,sslverifydepth:1,startservers:1,startthreads:1,substitute:1,suexecusergroup:1,threadlimit:1,threadsperchild:1,threadstacksize:1,timeout:1,traceenable:1,transferlog:1,typesconfig:1,unsetenv:1,usecanonicalname:1,usecanonicalphysicalport:1,user:1,userdir:1,virtualdocumentroot:1,virtualdocumentrootip:1,virtualscriptalias:1,virtualscriptaliasip:1,win32disableacceptex:1,xbithack:1},literal:{on:1,off:1}},contains:[hljs.HASH_COMMENT_MODE,{className:"sqbracket",begin:"\\s\\[",end:"\\]$"},{className:"cbracket",begin:"[\\$%]\\{",end:"\\}",contains:["self",a]},a,{className:"tag",begin:"</?",end:">"},hljs.QUOTE_STRING_MODE]}}}();hljs.LANGUAGES.bash=function(){var e={"true":1,"false":1};var b={className:"variable",begin:"\\$([a-zA-Z0-9_]+)\\b"};var a={className:"variable",begin:"\\$\\{(([^}])|(\\\\}))+\\}",contains:[hljs.C_NUMBER_MODE]};var f={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[hljs.BACKSLASH_ESCAPE,b,a],relevance:0};var c={className:"string",begin:"'",end:"'",relevance:0};var d={className:"test_condition",begin:"",end:"",contains:[f,c,b,a,hljs.C_NUMBER_MODE],keywords:{literal:e},relevance:0};return{defaultMode:{keywords:{keyword:{"if":1,then:1,"else":1,fi:1,"for":1,"break":1,"continue":1,"while":1,"in":1,"do":1,done:1,echo:1,exit:1,"return":1,set:1,declare:1},literal:e},contains:[{className:"shebang",begin:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)",relevance:10},b,a,hljs.HASH_COMMENT_MODE,hljs.C_NUMBER_MODE,f,c,hljs.inherit(d,{begin:"\\[ ",end:" \\]",relevance:0}),hljs.inherit(d,{begin:"\\[\\[ ",end:" \\]\\]"})]}}}();hljs.LANGUAGES.coffeescript=function(){var d={keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"new":1,"do":1,"return":1,"else":1,"break":1,"catch":1,"instanceof":1,"throw":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1,"debugger":1,"class":1,"extends":1,"super":1,then:1,unless:1,until:1,loop:2,of:2,by:1,when:2,and:1,or:1,is:1,isnt:2,not:1},literal:{"true":1,"false":1,"null":1,"undefined":1,yes:1,no:1,on:1,off:1},reserved:{"case":1,"default":1,"function":1,"var":1,"void":1,"with":1,"const":1,let:1,"enum":1,"export":1,"import":1,"native":1,__hasProp:1,__extends:1,__slice:1,__bind:1,__indexOf:1}};var a="[A-Za-z$_][0-9A-Za-z$_]*";var g={className:"subst",begin:"#\\{",end:"}",keywords:d,contains:[hljs.C_NUMBER_MODE,hljs.BINARY_NUMBER_MODE]};var b={className:"string",begin:'"',end:'"',relevance:0,contains:[hljs.BACKSLASH_ESCAPE,g]};var i={className:"string",begin:'"""',end:'"""',contains:[hljs.BACKSLASH_ESCAPE,g]};var e={className:"comment",begin:"###",end:"###"};var f={className:"regexp",begin:"///",end:"///",contains:[hljs.HASH_COMMENT_MODE]};var h={className:"function",begin:a+"\\s*=\\s*(\\(.+\\))?\\s*[-=]>",returnBegin:true,contains:[{className:"title",begin:a},{className:"params",begin:"\\(",end:"\\)"}]};var c={className:"javascript",begin:"`",end:"`",excludeBegin:true,excludeEnd:true,subLanguage:"javascript"};return{defaultMode:{keywords:d,contains:[hljs.C_NUMBER_MODE,hljs.BINARY_NUMBER_MODE,hljs.APOS_STRING_MODE,i,b,e,hljs.HASH_COMMENT_MODE,f,c,h]}}}();hljs.LANGUAGES.css=function(){var a={className:"function",begin:hljs.IDENT_RE+"\\(",end:"\\)",contains:[{endsWithParent:true,excludeEnd:true,contains:[hljs.NUMBER_MODE,hljs.APOS_STRING_MODE,hljs.QUOTE_STRING_MODE]}]};return{case_insensitive:true,defaultMode:{illegal:"[=/|']",contains:[hljs.C_BLOCK_COMMENT_MODE,{className:"id",begin:"\\#[A-Za-z0-9_-]+"},{className:"class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"attr_selector",begin:"\\[",end:"\\]",illegal:"$"},{className:"pseudo",begin:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{className:"at_rule",begin:"@(font-face|page)",lexems:"[a-z-]+",keywords:{"font-face":1,page:1}},{className:"at_rule",begin:"@",end:"[{;]",excludeEnd:true,keywords:{"import":1,page:1,media:1,charset:1},contains:[a,hljs.APOS_STRING_MODE,hljs.QUOTE_STRING_MODE,hljs.NUMBER_MODE]},{className:"tag",begin:hljs.IDENT_RE,relevance:0},{className:"rules",begin:"{",end:"}",illegal:"[^\\s]",relevance:0,contains:[hljs.C_BLOCK_COMMENT_MODE,{className:"rule",begin:"[^\\s]",returnBegin:true,end:";",endsWithParent:true,contains:[{className:"attribute",begin:"[A-Z\\_\\.\\-]+",end:":",excludeEnd:true,illegal:"[^\\s]",starts:{className:"value",endsWithParent:true,excludeEnd:true,contains:[a,hljs.NUMBER_MODE,hljs.QUOTE_STRING_MODE,hljs.APOS_STRING_MODE,hljs.C_BLOCK_COMMENT_MODE,{className:"hexcolor",begin:"\\#[0-9A-F]+"},{className:"important",begin:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.diff={case_insensitive:true,defaultMode:{contains:[{className:"chunk",begin:"^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$",relevance:10},{className:"chunk",begin:"^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$",relevance:10},{className:"chunk",begin:"^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$",relevance:10},{className:"header",begin:"Index: ",end:"$"},{className:"header",begin:"=====",end:"=====$"},{className:"header",begin:"^\\-\\-\\-",end:"$"},{className:"header",begin:"^\\*{3} ",end:"$"},{className:"header",begin:"^\\+\\+\\+",end:"$"},{className:"header",begin:"\\*{5}",end:"\\*{5}$"},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"change",begin:"^\\!",end:"$"}]}};hljs.LANGUAGES.javascript={defaultMode:{keywords:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},contains:[hljs.APOS_STRING_MODE,hljs.QUOTE_STRING_MODE,hljs.C_LINE_COMMENT_MODE,hljs.C_BLOCK_COMMENT_MODE,hljs.C_NUMBER_MODE,{begin:"("+hljs.RE_STARTERS_RE+"|case|return|throw)\\s*",keywords:{"return":1,"throw":1,"case":1},contains:[hljs.C_LINE_COMMENT_MODE,hljs.C_BLOCK_COMMENT_MODE,{className:"regexp",begin:"/",end:"/[gim]*",contains:[{begin:"\\\\/"}]}],relevance:0},{className:"function",begin:"\\bfunction\\b",end:"{",keywords:{"function":1},contains:[{className:"title",begin:"[A-Za-z$_][0-9A-Za-z$_]*"},{className:"params",begin:"\\(",end:"\\)",contains:[hljs.APOS_STRING_MODE,hljs.QUOTE_STRING_MODE,hljs.C_LINE_COMMENT_MODE,hljs.C_BLOCK_COMMENT_MODE]}]}]}};hljs.LANGUAGES.nginx=function(){var c={className:"variable",begin:"\\$\\d+"};var b={className:"variable",begin:"\\${",end:"}"};var a={className:"variable",begin:"[\\$\\@]"+hljs.UNDERSCORE_IDENT_RE};return{defaultMode:{contains:[hljs.HASH_COMMENT_MODE,{begin:hljs.UNDERSCORE_IDENT_RE,end:";|{",returnEnd:true,keywords:{accept_mutex:1,accept_mutex_delay:1,access_log:1,add_after_body:1,add_before_body:1,add_header:1,addition_types:1,alias:1,allow:1,ancient_browser:1,ancient_browser_value:1,auth_basic:1,auth_basic_user_file:1,autoindex:1,autoindex_exact_size:1,autoindex_localtime:1,"break":1,charset:1,charset_map:1,charset_types:1,client_body_buffer_size:1,client_body_in_file_only:1,client_body_in_single_buffer:1,client_body_temp_path:1,client_body_timeout:1,client_header_buffer_size:1,client_header_timeout:1,client_max_body_size:1,connection_pool_size:1,connections:1,create_full_put_path:1,daemon:1,dav_access:1,dav_methods:1,debug_connection:1,debug_points:1,default_type:1,deny:1,directio:1,directio_alignment:1,echo:1,echo_after_body:1,echo_before_body:1,echo_blocking_sleep:1,echo_duplicate:1,echo_end:1,echo_exec:1,echo_flush:1,echo_foreach_split:1,echo_location:1,echo_location_async:1,echo_read_request_body:1,echo_request_body:1,echo_reset_timer:1,echo_sleep:1,echo_subrequest:1,echo_subrequest_async:1,empty_gif:1,env:1,error_log:1,error_page:1,events:1,expires:1,fastcgi_bind:1,fastcgi_buffer_size:1,fastcgi_buffers:1,fastcgi_busy_buffers_size:1,fastcgi_cache:1,fastcgi_cache_key:1,fastcgi_cache_methods:1,fastcgi_cache_min_uses:1,fastcgi_cache_path:1,fastcgi_cache_use_stale:1,fastcgi_cache_valid:1,fastcgi_catch_stderr:1,fastcgi_connect_timeout:1,fastcgi_hide_header:1,fastcgi_ignore_client_abort:1,fastcgi_ignore_headers:1,fastcgi_index:1,fastcgi_intercept_errors:1,fastcgi_max_temp_file_size:1,fastcgi_next_upstream:1,fastcgi_param:1,fastcgi_pass:1,fastcgi_pass_header:1,fastcgi_pass_request_body:1,fastcgi_pass_request_headers:1,fastcgi_read_timeout:1,fastcgi_send_lowat:1,fastcgi_send_timeout:1,fastcgi_split_path_info:1,fastcgi_store:1,fastcgi_store_access:1,fastcgi_temp_file_write_size:1,fastcgi_temp_path:1,fastcgi_upstream_fail_timeout:1,fastcgi_upstream_max_fails:1,flv:1,geo:1,geoip_city:1,geoip_country:1,gzip:1,gzip_buffers:1,gzip_comp_level:1,gzip_disable:1,gzip_hash:1,gzip_http_version:1,gzip_min_length:1,gzip_no_buffer:1,gzip_proxied:1,gzip_static:1,gzip_types:1,gzip_vary:1,gzip_window:1,http:1,"if":1,if_modified_since:1,ignore_invalid_headers:1,image_filter:1,image_filter_buffer:1,image_filter_jpeg_quality:1,image_filter_transparency:1,include:1,index:1,internal:1,ip_hash:1,js:1,js_load:1,js_require:1,js_utf8:1,keepalive_requests:1,keepalive_timeout:1,kqueue_changes:1,kqueue_events:1,large_client_header_buffers:1,limit_conn:1,limit_conn_log_level:1,limit_except:1,limit_rate:1,limit_rate_after:1,limit_req:1,limit_req_log_level:1,limit_req_zone:1,limit_zone:1,lingering_time:1,lingering_timeout:1,listen:1,location:1,lock_file:1,log_format:1,log_not_found:1,log_subrequest:1,map:1,map_hash_bucket_size:1,map_hash_max_size:1,master_process:1,memcached_bind:1,memcached_buffer_size:1,memcached_connect_timeout:1,memcached_next_upstream:1,memcached_pass:1,memcached_read_timeout:1,memcached_send_timeout:1,memcached_upstream_fail_timeout:1,memcached_upstream_max_fails:1,merge_slashes:1,min_delete_depth:1,modern_browser:1,modern_browser_value:1,more_clear_headers:1,more_clear_input_headers:1,more_set_headers:1,more_set_input_headers:1,msie_padding:1,msie_refresh:1,multi_accept:1,open_file_cache:1,open_file_cache_errors:1,open_file_cache_events:1,open_file_cache_min_uses:1,open_file_cache_retest:1,open_file_cache_valid:1,open_log_file_cache:1,optimize_server_names:1,output_buffers:1,override_charset:1,perl:1,perl_modules:1,perl_require:1,perl_set:1,pid:1,port_in_redirect:1,post_action:1,postpone_gzipping:1,postpone_output:1,proxy_bind:1,proxy_buffer_size:1,proxy_buffering:1,proxy_buffers:1,proxy_busy_buffers_size:1,proxy_cache:1,proxy_cache_key:1,proxy_cache_methods:1,proxy_cache_min_uses:1,proxy_cache_path:1,proxy_cache_use_stale:1,proxy_cache_valid:1,proxy_connect_timeout:1,proxy_headers_hash_bucket_size:1,proxy_headers_hash_max_size:1,proxy_hide_header:1,proxy_ignore_client_abort:1,proxy_ignore_headers:1,proxy_intercept_errors:1,proxy_max_temp_file_size:1,proxy_method:1,proxy_next_upstream:1,proxy_pass:1,proxy_pass_header:1,proxy_pass_request_body:1,proxy_pass_request_headers:1,proxy_read_timeout:1,proxy_redirect:1,proxy_send_lowat:1,proxy_send_timeout:1,proxy_set_body:1,proxy_set_header:1,proxy_store:1,proxy_store_access:1,proxy_temp_file_write_size:1,proxy_temp_path:1,proxy_upstream_fail_timeout:1,proxy_upstream_max_fails:1,push_authorized_channels_only:1,push_channel_group:1,push_max_channel_id_length:1,push_max_channel_subscribers:1,push_max_message_buffer_length:1,push_max_reserved_memory:1,push_message_buffer_length:1,push_message_timeout:1,push_min_message_buffer_length:1,push_min_message_recipients:1,push_publisher:1,push_store_messages:1,push_subscriber:1,push_subscriber_concurrency:1,random_index:1,read_ahead:1,real_ip_header:1,recursive_error_pages:1,request_pool_size:1,reset_timedout_connection:1,resolver:1,resolver_timeout:1,"return":1,rewrite:1,rewrite_log:1,root:1,satisfy:1,satisfy_any:1,send_lowat:1,send_timeout:1,sendfile:1,sendfile_max_chunk:1,server:1,server_name:1,server_name_in_redirect:1,server_names_hash_bucket_size:1,server_names_hash_max_size:1,server_tokens:1,set:1,set_real_ip_from:1,source_charset:1,ssi:1,ssi_ignore_recycled_buffers:1,ssi_min_file_chunk:1,ssi_silent_errors:1,ssi_types:1,ssi_value_length:1,ssl:1,ssl_certificate:1,ssl_certificate_key:1,ssl_ciphers:1,ssl_client_certificate:1,ssl_crl:1,ssl_dhparam:1,ssl_prefer_server_ciphers:1,ssl_protocols:1,ssl_session_cache:1,ssl_session_timeout:1,ssl_verify_client:1,ssl_verify_depth:1,sub_filter:1,sub_filter_once:1,sub_filter_types:1,tcp_nodelay:1,tcp_nopush:1,timer_resolution:1,try_files:1,types:1,types_hash_bucket_size:1,types_hash_max_size:1,underscores_in_headers:1,uninitialized_variable_warn:1,upstream:1,use:1,user:1,userid:1,userid_domain:1,userid_expires:1,userid_mark:1,userid_name:1,userid_p3p:1,userid_path:1,userid_service:1,valid_referers:1,variables_hash_bucket_size:1,variables_hash_max_size:1,worker_connections:1,worker_cpu_affinity:1,worker_priority:1,worker_processes:1,worker_rlimit_core:1,worker_rlimit_nofile:1,worker_rlimit_sigpending:1,working_directory:1,xml_entities:1,xslt_stylesheet:1,xslt_types:1},relevance:0,contains:[hljs.HASH_COMMENT_MODE,{begin:"\\s",end:"[;{]",returnBegin:true,returnEnd:true,lexems:"[a-z/]+",keywords:{built_in:{on:1,off:1,yes:1,no:1,"true":1,"false":1,none:1,blocked:1,debug:1,info:1,notice:1,warn:1,error:1,crit:1,select:1,permanent:1,redirect:1,kqueue:1,rtsig:1,epoll:1,poll:1,"/dev/poll":1}},relevance:0,contains:[hljs.HASH_COMMENT_MODE,{className:"string",begin:'"',end:'"',contains:[hljs.BACKSLASH_ESCAPE,c,b,a],relevance:0},{className:"string",begin:"'",end:"'",contains:[hljs.BACKSLASH_ESCAPE,c,b,a],relevance:0},{className:"string",begin:"([a-z]+):/",end:"[;\\s]",returnEnd:true},{className:"regexp",begin:"\\s\\^",end:"\\s|{|;",returnEnd:true,contains:[hljs.BACKSLASH_ESCAPE,c,b,a]},{className:"regexp",begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:true,contains:[hljs.BACKSLASH_ESCAPE,c,b,a]},{className:"regexp",begin:"\\*(\\.[a-z\\-]+)+",contains:[hljs.BACKSLASH_ESCAPE,c,b,a]},{className:"regexp",begin:"([a-z\\-]+\\.)+\\*",contains:[hljs.BACKSLASH_ESCAPE,c,b,a]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b"},{className:"number",begin:"\\s\\d+[kKmMgGdshdwy]*\\b",relevance:0},c,b,a]}]}]}}}();hljs.LANGUAGES.ruby=function(){var a="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var f={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var c={className:"yardoctag",begin:"@[A-Za-z]+"};var k=[{className:"comment",begin:"#",end:"$",contains:[c]},{className:"comment",begin:"^\\=begin",end:"^\\=end",contains:[c],relevance:10},{className:"comment",begin:"^__END__",end:"\\n$"}];var d={className:"subst",begin:"#\\{",end:"}",lexems:a,keywords:f};var i=[hljs.BACKSLASH_ESCAPE,d];var b=[{className:"string",begin:"'",end:"'",contains:i,relevance:0},{className:"string",begin:'"',end:'"',contains:i,relevance:0},{className:"string",begin:"%[qw]?\\(",end:"\\)",contains:i,relevance:10},{className:"string",begin:"%[qw]?\\[",end:"\\]",contains:i,relevance:10},{className:"string",begin:"%[qw]?{",end:"}",contains:i,relevance:10},{className:"string",begin:"%[qw]?<",end:">",contains:i,relevance:10},{className:"string",begin:"%[qw]?/",end:"/",contains:i,relevance:10},{className:"string",begin:"%[qw]?%",end:"%",contains:i,relevance:10},{className:"string",begin:"%[qw]?-",end:"-",contains:i,relevance:10},{className:"string",begin:"%[qw]?\\|",end:"\\|",contains:i,relevance:10}];var h={className:"function",begin:"\\bdef\\s+",end:" |$|;",lexems:a,keywords:f,contains:[{className:"title",begin:j,lexems:a,keywords:f},{className:"params",begin:"\\(",end:"\\)",lexems:a,keywords:f}].concat(k)};var g={className:"identifier",begin:a,lexems:a,keywords:f,relevance:0};var e=k.concat(b.concat([{className:"class",begin:"\\b(class|module)\\b",end:"$|;",keywords:{"class":1,module:1},contains:[{className:"title",begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",relevance:0},{className:"inheritance",begin:"<\\s*",contains:[{className:"parent",begin:"("+hljs.IDENT_RE+"::)?"+hljs.IDENT_RE}]}].concat(k)},h,{className:"constant",begin:"(::)?([A-Z]\\w*(::)?)+",relevance:0},{className:"symbol",begin:":",contains:b.concat([g]),relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"number",begin:"\\?\\w"},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},g,{begin:"("+hljs.RE_STARTERS_RE+")\\s*",contains:k.concat([{className:"regexp",begin:"/",end:"/[a-z]*",illegal:"\\n",contains:[hljs.BACKSLASH_ESCAPE]}]),relevance:0}]));d.contains=e;h.contains[1].contains=e;return{defaultMode:{lexems:a,keywords:f,contains:e}}}();hljs.LANGUAGES.sql={case_insensitive:true,defaultMode:{illegal:"[^\\s]",contains:[{className:"operator",begin:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b",end:";|$",keywords:{keyword:{all:1,partial:1,global:1,month:1,current_timestamp:1,using:1,go:1,revoke:1,smallint:1,indicator:1,"end-exec":1,disconnect:1,zone:1,"with":1,character:1,assertion:1,to:1,add:1,current_user:1,usage:1,input:1,local:1,alter:1,match:1,collate:1,real:1,then:1,rollback:1,get:1,read:1,timestamp:1,session_user:1,not:1,integer:1,bit:1,unique:1,day:1,minute:1,desc:1,insert:1,execute:1,like:1,ilike:2,level:1,decimal:1,drop:1,"continue":1,isolation:1,found:1,where:1,constraints:1,domain:1,right:1,national:1,some:1,module:1,transaction:1,relative:1,second:1,connect:1,escape:1,close:1,system_user:1,"for":1,deferred:1,section:1,cast:1,current:1,sqlstate:1,allocate:1,intersect:1,deallocate:1,numeric:1,"public":1,preserve:1,full:1,"goto":1,initially:1,asc:1,no:1,key:1,output:1,collation:1,group:1,by:1,union:1,session:1,both:1,last:1,language:1,constraint:1,column:1,of:1,space:1,foreign:1,deferrable:1,prior:1,connection:1,unknown:1,action:1,commit:1,view:1,or:1,first:1,into:1,"float":1,year:1,primary:1,cascaded:1,except:1,restrict:1,set:1,references:1,names:1,table:1,outer:1,open:1,select:1,size:1,are:1,rows:1,from:1,prepare:1,distinct:1,leading:1,create:1,only:1,next:1,inner:1,authorization:1,schema:1,corresponding:1,option:1,declare:1,precision:1,immediate:1,"else":1,timezone_minute:1,external:1,varying:1,translation:1,"true":1,"case":1,exception:1,join:1,hour:1,"default":1,"double":1,scroll:1,value:1,cursor:1,descriptor:1,values:1,dec:1,fetch:1,procedure:1,"delete":1,and:1,"false":1,"int":1,is:1,describe:1,"char":1,as:1,at:1,"in":1,varchar:1,"null":1,trailing:1,any:1,absolute:1,current_time:1,end:1,grant:1,privileges:1,when:1,cross:1,check:1,write:1,current_date:1,pad:1,begin:1,temporary:1,exec:1,time:1,update:1,catalog:1,user:1,sql:1,date:1,on:1,identity:1,timezone_hour:1,natural:1,whenever:1,interval:1,work:1,order:1,cascade:1,diagnostics:1,nchar:1,having:1,left:1,call:1,"do":1,handler:1,load:1,replace:1,truncate:1,start:1,lock:1,show:1,pragma:1},aggregate:{count:1,sum:1,min:1,max:1,avg:1}},contains:[{className:"string",begin:"'",end:"'",contains:[hljs.BACKSLASH_ESCAPE,{begin:"''"}],relevance:0},{className:"string",begin:'"',end:'"',contains:[hljs.BACKSLASH_ESCAPE,{begin:'""'}],relevance:0},{className:"string",begin:"`",end:"`",contains:[hljs.BACKSLASH_ESCAPE]},hljs.C_NUMBER_MODE,{begin:"\\n"}]},hljs.C_BLOCK_COMMENT_MODE,{className:"comment",begin:"--",end:"$"}]}};hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={endsWithParent:true,contains:[{className:"attribute",begin:b,relevance:0},{begin:'="',returnBegin:true,end:'"',contains:[{className:"value",begin:'"',endsWithParent:true}]},{begin:"='",returnBegin:true,end:"'",contains:[{className:"value",begin:"'",endsWithParent:true}]},{begin:"=",contains:[{className:"value",begin:"[^\\s/>]+"}]}]};return{case_insensitive:true,defaultMode:{contains:[{className:"pi",begin:"<\\?",end:"\\?>",relevance:10},{className:"doctype",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},{className:"comment",begin:"<!--",end:"-->",relevance:10},{className:"cdata",begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"tag",begin:"<style(?=\\s|>|$)",end:">",keywords:{title:{style:1}},contains:[a],starts:{className:"css",end:"</style>",returnEnd:true,subLanguage:"css"}},{className:"tag",begin:"<script(?=\\s|>|$)",end:">",keywords:{title:{script:1}},contains:[a],starts:{className:"javascript",end:"<\/script>",returnEnd:true,subLanguage:"javascript"}},{className:"vbscript",begin:"<%",end:"%>",subLanguage:"vbscript"},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"title",begin:"[^ />]+"},a]}]}}}();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/assets/search_data.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
window.searchData = [{"t":"Caman.Analyze","p":"classes/Caman/Analyze.html"},{"t":"#constructor","h":"Caman.Analyze","p":"classes/Caman/Analyze.html#constructor-instance"},{"t":"#calculateLevels","h":"Caman.Analyze","p":"classes/Caman/Analyze.html#calculateLevels-instance"},{"t":"CamanParser","p":"classes/CamanParser.html"},{"t":"#constructor","h":"CamanParser","p":"classes/CamanParser.html#constructor-instance"},{"t":"#parse","h":"CamanParser","p":"classes/CamanParser.html#parse-instance"},{"t":"#execute","h":"CamanParser","p":"classes/CamanParser.html#execute-instance"},{"t":"Caman.Blender","p":"classes/Caman/Blender.html"},{"t":".register","h":"Caman.Blender","p":"classes/Caman/Blender.html#register-class"},{"t":".execute","h":"Caman.Blender","p":"classes/Caman/Blender.html#execute-class"},{"t":"Caman.Calculate","p":"classes/Caman/Calculate.html"},{"t":".distance","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#distance-class"},{"t":".randomRange","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#randomRange-class"},{"t":".luminance","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#luminance-class"},{"t":".bezier","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#bezier-class"},{"t":".hermite","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#hermite-class"},{"t":".missingValues","h":"Caman.Calculate","p":"classes/Caman/Calculate.html#missingValues-class"},{"t":"Caman","p":"classes/Caman.html"},{"t":".toString","h":"Caman","p":"classes/Caman.html#toString-class"},{"t":".getAttrId","h":"Caman","p":"classes/Caman.html#getAttrId-class"},{"t":"#constructor","h":"Caman","p":"classes/Caman.html#constructor-instance"},{"t":"#domIsLoaded","h":"Caman","p":"classes/Caman.html#domIsLoaded-instance"},{"t":"#parseArguments","h":"Caman","p":"classes/Caman.html#parseArguments-instance"},{"t":"#setInitObject","h":"Caman","p":"classes/Caman.html#setInitObject-instance"},{"t":"#setup","h":"Caman","p":"classes/Caman.html#setup-instance"},{"t":"#initNode","h":"Caman","p":"classes/Caman.html#initNode-instance"},{"t":"#readFromHttp","h":"Caman","p":"classes/Caman.html#readFromHttp-instance"},{"t":"#nodeFileReady","h":"Caman","p":"classes/Caman.html#nodeFileReady-instance"},{"t":"#initImage","h":"Caman","p":"classes/Caman.html#initImage-instance"},{"t":"#initCanvas","h":"Caman","p":"classes/Caman.html#initCanvas-instance"},{"t":"#imageAdjustments","h":"Caman","p":"classes/Caman.html#imageAdjustments-instance"},{"t":"#waitForImageLoaded","h":"Caman","p":"classes/Caman.html#waitForImageLoaded-instance"},{"t":"#isImageLoaded","h":"Caman","p":"classes/Caman.html#isImageLoaded-instance"},{"t":"#imageWidth","h":"Caman","p":"classes/Caman.html#imageWidth-instance"},{"t":"#imageHeight","h":"Caman","p":"classes/Caman.html#imageHeight-instance"},{"t":"#imageLoaded","h":"Caman","p":"classes/Caman.html#imageLoaded-instance"},{"t":"#finishInit","h":"Caman","p":"classes/Caman.html#finishInit-instance"},{"t":"#reloadCanvasData","h":"Caman","p":"classes/Caman.html#reloadCanvasData-instance"},{"t":"#resetOriginalPixelData","h":"Caman","p":"classes/Caman.html#resetOriginalPixelData-instance"},{"t":"#hasId","h":"Caman","p":"classes/Caman.html#hasId-instance"},{"t":"#assignId","h":"Caman","p":"classes/Caman.html#assignId-instance"},{"t":"#hiDPIDisabled","h":"Caman","p":"classes/Caman.html#hiDPIDisabled-instance"},{"t":"#hiDPIAdjustments","h":"Caman","p":"classes/Caman.html#hiDPIAdjustments-instance"},{"t":"#hiDPIRatio","h":"Caman","p":"classes/Caman.html#hiDPIRatio-instance"},{"t":"#hiDPICapable","h":"Caman","p":"classes/Caman.html#hiDPICapable-instance"},{"t":"#needsHiDPISwap","h":"Caman","p":"classes/Caman.html#needsHiDPISwap-instance"},{"t":"#hiDPIReplacement","h":"Caman","p":"classes/Caman.html#hiDPIReplacement-instance"},{"t":"#replaceCanvas","h":"Caman","p":"classes/Caman.html#replaceCanvas-instance"},{"t":"#render","h":"Caman","p":"classes/Caman.html#render-instance"},{"t":"#revert","h":"Caman","p":"classes/Caman.html#revert-instance"},{"t":"#reset","h":"Caman","p":"classes/Caman.html#reset-instance"},{"t":"#originalVisiblePixels","h":"Caman","p":"classes/Caman.html#originalVisiblePixels-instance"},{"t":"#process","h":"Caman","p":"classes/Caman.html#process-instance"},{"t":"#processKernel","h":"Caman","p":"classes/Caman.html#processKernel-instance"},{"t":"#processPlugin","h":"Caman","p":"classes/Caman.html#processPlugin-instance"},{"t":"#newLayer","h":"Caman","p":"classes/Caman.html#newLayer-instance"},{"t":"#executeLayer","h":"Caman","p":"classes/Caman.html#executeLayer-instance"},{"t":"#pushContext","h":"Caman","p":"classes/Caman.html#pushContext-instance"},{"t":"#popContext","h":"Caman","p":"classes/Caman.html#popContext-instance"},{"t":"#applyCurrentLayer","h":"Caman","p":"classes/Caman.html#applyCurrentLayer-instance"},{"t":"Caman.Convert","p":"classes/Caman/Convert.html"},{"t":".hexToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#hexToRGB-class"},{"t":".rgbToHSL","h":"Caman.Convert","p":"classes/Caman/Convert.html#rgbToHSL-class"},{"t":".hslToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#hslToRGB-class"},{"t":".hueToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#hueToRGB-class"},{"t":".rgbToHSV","h":"Caman.Convert","p":"classes/Caman/Convert.html#rgbToHSV-class"},{"t":".hsvToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#hsvToRGB-class"},{"t":".rgbToXYZ","h":"Caman.Convert","p":"classes/Caman/Convert.html#rgbToXYZ-class"},{"t":".xyzToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#xyzToRGB-class"},{"t":".xyzToLab","h":"Caman.Convert","p":"classes/Caman/Convert.html#xyzToLab-class"},{"t":".labToXYZ","h":"Caman.Convert","p":"classes/Caman/Convert.html#labToXYZ-class"},{"t":".rgbToLab","h":"Caman.Convert","p":"classes/Caman/Convert.html#rgbToLab-class"},{"t":".labToRGB","h":"Caman.Convert","p":"classes/Caman/Convert.html#labToRGB-class"},{"t":"Caman.Event","p":"classes/Caman/Event.html"},{"t":".trigger","h":"Caman.Event","p":"classes/Caman/Event.html#trigger-class"},{"t":".listen","h":"Caman.Event","p":"classes/Caman/Event.html#listen-class"},{"t":"Caman.Filter","p":"classes/Caman/Filter.html"},{"t":".register","h":"Caman.Filter","p":"classes/Caman/Filter.html#register-class"},{"t":"Caman.IO","p":"classes/Caman/IO.html"},{"t":".isRemote","h":"Caman.IO","p":"classes/Caman/IO.html#isRemote-class"},{"t":".corsEnabled","h":"Caman.IO","p":"classes/Caman/IO.html#corsEnabled-class"},{"t":".isURLRemote","h":"Caman.IO","p":"classes/Caman/IO.html#isURLRemote-class"},{"t":".remoteCheck","h":"Caman.IO","p":"classes/Caman/IO.html#remoteCheck-class"},{"t":".proxyUrl","h":"Caman.IO","p":"classes/Caman/IO.html#proxyUrl-class"},{"t":".useProxy","h":"Caman.IO","p":"classes/Caman/IO.html#useProxy-class"},{"t":"Caman.Layer","p":"classes/Caman/Layer.html"},{"t":"#constructor","h":"Caman.Layer","p":"classes/Caman/Layer.html#constructor-instance"},{"t":"#newLayer","h":"Caman.Layer","p":"classes/Caman/Layer.html#newLayer-instance"},{"t":"#setBlendingMode","h":"Caman.Layer","p":"classes/Caman/Layer.html#setBlendingMode-instance"},{"t":"#opacity","h":"Caman.Layer","p":"classes/Caman/Layer.html#opacity-instance"},{"t":"#copyParent","h":"Caman.Layer","p":"classes/Caman/Layer.html#copyParent-instance"},{"t":"#fillColor","h":"Caman.Layer","p":"classes/Caman/Layer.html#fillColor-instance"},{"t":"#overlayImage","h":"Caman.Layer","p":"classes/Caman/Layer.html#overlayImage-instance"},{"t":"#applyToParent","h":"Caman.Layer","p":"classes/Caman/Layer.html#applyToParent-instance"},{"t":"Caman.Logger","p":"classes/Caman/Logger.html"},{"t":"#constructor","h":"Caman.Logger","p":"classes/Caman/Logger.html#constructor-instance"},{"t":"Module","p":"classes/Module.html"},{"t":".extends","h":"Module","p":"classes/Module.html#extends-class"},{"t":".includes","h":"Module","p":"classes/Module.html#includes-class"},{"t":".delegate","h":"Module","p":"classes/Module.html#delegate-class"},{"t":".aliasFunction","h":"Module","p":"classes/Module.html#aliasFunction-class"},{"t":".aliasProperty","h":"Module","p":"classes/Module.html#aliasProperty-class"},{"t":".included","h":"Module","p":"classes/Module.html#included-class"},{"t":"Caman.Pixel","p":"classes/Caman/Pixel.html"},{"t":".coordinatesToLocation","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#coordinatesToLocation-class"},{"t":".locationToCoordinates","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#locationToCoordinates-class"},{"t":"#constructor","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#constructor-instance"},{"t":"#setContext","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#setContext-instance"},{"t":"#locationXY","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#locationXY-instance"},{"t":"#pixelAtLocation","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#pixelAtLocation-instance"},{"t":"#getPixelRelative","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#getPixelRelative-instance"},{"t":"#putPixelRelative","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#putPixelRelative-instance"},{"t":"#getPixel","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#getPixel-instance"},{"t":"#putPixel","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#putPixel-instance"},{"t":"#toString","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#toString-instance"},{"t":"#toHex","h":"Caman.Pixel","p":"classes/Caman/Pixel.html#toHex-instance"},{"t":"Caman.Plugin","p":"classes/Caman/Plugin.html"},{"t":".register","h":"Caman.Plugin","p":"classes/Caman/Plugin.html#register-class"},{"t":".execute","h":"Caman.Plugin","p":"classes/Caman/Plugin.html#execute-class"},{"t":"Caman.Renderer","p":"classes/Caman/Renderer.html"},{"t":"#constructor","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#constructor-instance"},{"t":"#add","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#add-instance"},{"t":"#processNext","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#processNext-instance"},{"t":"#execute","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#execute-instance"},{"t":"#eachBlock","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#eachBlock-instance"},{"t":"#executeFilter","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#executeFilter-instance"},{"t":"#executePlugin","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#executePlugin-instance"},{"t":"#renderBlock","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#renderBlock-instance"},{"t":"#renderKernel","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#renderKernel-instance"},{"t":"#blockFinished","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#blockFinished-instance"},{"t":"#processKernel","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#processKernel-instance"},{"t":"#loadOverlay","h":"Caman.Renderer","p":"classes/Caman/Renderer.html#loadOverlay-instance"},{"t":"Caman.Store","p":"classes/Caman/Store.html"},{"t":".has","h":"Caman.Store","p":"classes/Caman/Store.html#has-class"},{"t":".get","h":"Caman.Store","p":"classes/Caman/Store.html#get-class"},{"t":".put","h":"Caman.Store","p":"classes/Caman/Store.html#put-class"},{"t":".execute","h":"Caman.Store","p":"classes/Caman/Store.html#execute-class"},{"t":".flush","h":"Caman.Store","p":"classes/Caman/Store.html#flush-class"},{"t":"Util","p":"classes/Util.html"},{"t":".extend","h":"Util","p":"classes/Util.html#extend-class"},{"t":".clampRGB","h":"Util","p":"classes/Util.html#clampRGB-class"},{"t":".copyAttributes","h":"Util","p":"classes/Util.html#copyAttributes-class"},{"t":".dataArray","h":"Util","p":"classes/Util.html#dataArray-class"},{"t":"analyze.coffee","p":"files/core/analyze.coffee.html"},{"t":"autoload.coffee","p":"files/core/autoload.coffee.html"},{"t":"Caman.DOMUpdated","p":"files/core/autoload.coffee.html#Caman.DOMUpdated-file","h":"autoload.coffee"},{"t":"blender.coffee","p":"files/core/blender.coffee.html"},{"t":"calculate.coffee","p":"files/core/calculate.coffee.html"},{"t":"caman.coffee","p":"files/core/caman.coffee.html"},{"t":"convert.coffee","p":"files/core/convert.coffee.html"},{"t":"event.coffee","p":"files/core/event.coffee.html"},{"t":"filter.coffee","p":"files/core/filter.coffee.html"},{"t":"io.coffee","p":"files/core/io.coffee.html"},{"t":"Caman.prototype.save","p":"files/core/io.coffee.html#Caman.prototype.save-file","h":"io.coffee"},{"t":"Caman.prototype.browserSave","p":"files/core/io.coffee.html#Caman.prototype.browserSave-file","h":"io.coffee"},{"t":"Caman.prototype.nodeSave","p":"files/core/io.coffee.html#Caman.prototype.nodeSave-file","h":"io.coffee"},{"t":"Caman.prototype.toImage","p":"files/core/io.coffee.html#Caman.prototype.toImage-file","h":"io.coffee"},{"t":"Caman.prototype.toBase64","p":"files/core/io.coffee.html#Caman.prototype.toBase64-file","h":"io.coffee"},{"t":"layer.coffee","p":"files/core/layer.coffee.html"},{"t":"pixel.coffee","p":"files/core/pixel.coffee.html"},{"t":"plugin.coffee","p":"files/core/plugin.coffee.html"},{"t":"renderer.coffee","p":"files/core/renderer.coffee.html"},{"t":"store.coffee","p":"files/core/store.coffee.html"},{"t":"util.coffee","p":"files/core/util.coffee.html"},{"t":"$","p":"files/core/util.coffee.html#$-file","h":"util.coffee"},{"t":"README.md","p":"README.md.html"},{"t":"LICENSE","p":"LICENSE.html"}]
|
|
|
includes/pickers/caman/api/class_index.html
DELETED
|
@@ -1,432 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path=''></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<nav>
|
| 15 |
-
<ul>
|
| 16 |
-
<li class='noframes'>
|
| 17 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 18 |
-
</li>
|
| 19 |
-
</ul>
|
| 20 |
-
</nav>
|
| 21 |
-
<div id='search'>
|
| 22 |
-
<a id='class_list_link' href='class_list.html'>Classes</a>
|
| 23 |
-
<a id='file_list_link' href='file_list.html'>Files</a>
|
| 24 |
-
<a id='method_list_link' href='method_list.html'>Methods</a>
|
| 25 |
-
<a id='extra_list_link' href='extra_list.html'>Extras</a>
|
| 26 |
-
</div>
|
| 27 |
-
</div>
|
| 28 |
-
<iframe id='search_frame'></iframe>
|
| 29 |
-
<div id='fuzzySearch'>
|
| 30 |
-
<input type='text'>
|
| 31 |
-
<ol></ol>
|
| 32 |
-
</div>
|
| 33 |
-
<div id='help'>
|
| 34 |
-
<p>
|
| 35 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 36 |
-
</p>
|
| 37 |
-
<ul>
|
| 38 |
-
<li>
|
| 39 |
-
<span>Ctrl-T</span>
|
| 40 |
-
Open fuzzy finder dialog
|
| 41 |
-
</li>
|
| 42 |
-
</ul>
|
| 43 |
-
<p>
|
| 44 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 45 |
-
</p>
|
| 46 |
-
<ul>
|
| 47 |
-
<li>
|
| 48 |
-
<span>Ctrl-L</span>
|
| 49 |
-
Toggle list view
|
| 50 |
-
</li>
|
| 51 |
-
</ul>
|
| 52 |
-
<p>
|
| 53 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 54 |
-
</p>
|
| 55 |
-
<ul>
|
| 56 |
-
<li>
|
| 57 |
-
<span>Ctrl-C</span>
|
| 58 |
-
Class list
|
| 59 |
-
</li>
|
| 60 |
-
<li>
|
| 61 |
-
<span>Ctrl-I</span>
|
| 62 |
-
Mixin list
|
| 63 |
-
</li>
|
| 64 |
-
<li>
|
| 65 |
-
<span>Ctrl-F</span>
|
| 66 |
-
File list
|
| 67 |
-
</li>
|
| 68 |
-
<li>
|
| 69 |
-
<span>Ctrl-M</span>
|
| 70 |
-
Method list
|
| 71 |
-
</li>
|
| 72 |
-
<li>
|
| 73 |
-
<span>Ctrl-E</span>
|
| 74 |
-
Extras list
|
| 75 |
-
</li>
|
| 76 |
-
</ul>
|
| 77 |
-
<p>
|
| 78 |
-
You can focus and blur the search input:
|
| 79 |
-
</p>
|
| 80 |
-
<ul>
|
| 81 |
-
<li>
|
| 82 |
-
<span>Ctrl-S</span>
|
| 83 |
-
Focus search input
|
| 84 |
-
</li>
|
| 85 |
-
<li>
|
| 86 |
-
<span>Esc</span>
|
| 87 |
-
Blur search input
|
| 88 |
-
</li>
|
| 89 |
-
</ul>
|
| 90 |
-
<p>
|
| 91 |
-
In frameless mode you can close the list tab:
|
| 92 |
-
</p>
|
| 93 |
-
<ul>
|
| 94 |
-
<li>
|
| 95 |
-
<span>Esc</span>
|
| 96 |
-
Close list tab
|
| 97 |
-
</li>
|
| 98 |
-
</ul>
|
| 99 |
-
</div>
|
| 100 |
-
</div>
|
| 101 |
-
<div id='content'>
|
| 102 |
-
<h1 class='noborder title'>CamanJS Documentation</h1>
|
| 103 |
-
<div id='listing'>
|
| 104 |
-
<h1 class='alphaindex'>Alphabetic Index</h1>
|
| 105 |
-
<h2>Extra File Listing</h2>
|
| 106 |
-
<ul id='files'>
|
| 107 |
-
<li>
|
| 108 |
-
<a href='README.md.html' title='README.md'>README.md</a>
|
| 109 |
-
</li>
|
| 110 |
-
<li>
|
| 111 |
-
<a href='LICENSE.html' title='LICENSE'>LICENSE</a>
|
| 112 |
-
</li>
|
| 113 |
-
</ul>
|
| 114 |
-
<h2>Class Listing A-Z</h2>
|
| 115 |
-
<div class='index'>
|
| 116 |
-
<ul>
|
| 117 |
-
<li class='letter'>a</li>
|
| 118 |
-
<ul>
|
| 119 |
-
<li>
|
| 120 |
-
<a href='classes/Caman/Analyze.html'>Analyze</a>
|
| 121 |
-
<small>
|
| 122 |
-
(Caman)
|
| 123 |
-
</small>
|
| 124 |
-
</li>
|
| 125 |
-
</ul>
|
| 126 |
-
</ul>
|
| 127 |
-
<ul>
|
| 128 |
-
<li class='letter'>b</li>
|
| 129 |
-
<ul>
|
| 130 |
-
<li>
|
| 131 |
-
<a href='classes/Caman/Blender.html'>Blender</a>
|
| 132 |
-
<small>
|
| 133 |
-
(Caman)
|
| 134 |
-
</small>
|
| 135 |
-
</li>
|
| 136 |
-
</ul>
|
| 137 |
-
</ul>
|
| 138 |
-
<ul>
|
| 139 |
-
<li class='letter'>c</li>
|
| 140 |
-
<ul>
|
| 141 |
-
<li>
|
| 142 |
-
<a href='classes/CamanParser.html'>CamanParser</a>
|
| 143 |
-
</li>
|
| 144 |
-
<li>
|
| 145 |
-
<a href='classes/Caman/Calculate.html'>Calculate</a>
|
| 146 |
-
<small>
|
| 147 |
-
(Caman)
|
| 148 |
-
</small>
|
| 149 |
-
</li>
|
| 150 |
-
<li>
|
| 151 |
-
<a href='classes/Caman.html'>Caman</a>
|
| 152 |
-
</li>
|
| 153 |
-
<li>
|
| 154 |
-
<a href='classes/Caman/Convert.html'>Convert</a>
|
| 155 |
-
<small>
|
| 156 |
-
(Caman)
|
| 157 |
-
</small>
|
| 158 |
-
</li>
|
| 159 |
-
</ul>
|
| 160 |
-
</ul>
|
| 161 |
-
<ul>
|
| 162 |
-
<li class='letter'>e</li>
|
| 163 |
-
<ul>
|
| 164 |
-
<li>
|
| 165 |
-
<a href='classes/Caman/Event.html'>Event</a>
|
| 166 |
-
<small>
|
| 167 |
-
(Caman)
|
| 168 |
-
</small>
|
| 169 |
-
</li>
|
| 170 |
-
</ul>
|
| 171 |
-
</ul>
|
| 172 |
-
<ul>
|
| 173 |
-
<li class='letter'>f</li>
|
| 174 |
-
<ul>
|
| 175 |
-
<li>
|
| 176 |
-
<a href='classes/Caman/Filter.html'>Filter</a>
|
| 177 |
-
<small>
|
| 178 |
-
(Caman)
|
| 179 |
-
</small>
|
| 180 |
-
</li>
|
| 181 |
-
</ul>
|
| 182 |
-
</ul>
|
| 183 |
-
<ul>
|
| 184 |
-
<li class='letter'>i</li>
|
| 185 |
-
<ul>
|
| 186 |
-
<li>
|
| 187 |
-
<a href='classes/Caman/IO.html'>IO</a>
|
| 188 |
-
<small>
|
| 189 |
-
(Caman)
|
| 190 |
-
</small>
|
| 191 |
-
</li>
|
| 192 |
-
</ul>
|
| 193 |
-
</ul>
|
| 194 |
-
<ul>
|
| 195 |
-
<li class='letter'>l</li>
|
| 196 |
-
<ul>
|
| 197 |
-
<li>
|
| 198 |
-
<a href='classes/Caman/Layer.html'>Layer</a>
|
| 199 |
-
<small>
|
| 200 |
-
(Caman)
|
| 201 |
-
</small>
|
| 202 |
-
</li>
|
| 203 |
-
<li>
|
| 204 |
-
<a href='classes/Caman/Logger.html'>Logger</a>
|
| 205 |
-
<small>
|
| 206 |
-
(Caman)
|
| 207 |
-
</small>
|
| 208 |
-
</li>
|
| 209 |
-
</ul>
|
| 210 |
-
</ul>
|
| 211 |
-
<ul>
|
| 212 |
-
<li class='letter'>m</li>
|
| 213 |
-
<ul>
|
| 214 |
-
<li>
|
| 215 |
-
<a href='classes/Module.html'>Module</a>
|
| 216 |
-
</li>
|
| 217 |
-
</ul>
|
| 218 |
-
</ul>
|
| 219 |
-
<ul>
|
| 220 |
-
<li class='letter'>p</li>
|
| 221 |
-
<ul>
|
| 222 |
-
<li>
|
| 223 |
-
<a href='classes/Caman/Pixel.html'>Pixel</a>
|
| 224 |
-
<small>
|
| 225 |
-
(Caman)
|
| 226 |
-
</small>
|
| 227 |
-
</li>
|
| 228 |
-
<li>
|
| 229 |
-
<a href='classes/Caman/Plugin.html'>Plugin</a>
|
| 230 |
-
<small>
|
| 231 |
-
(Caman)
|
| 232 |
-
</small>
|
| 233 |
-
</li>
|
| 234 |
-
</ul>
|
| 235 |
-
</ul>
|
| 236 |
-
<ul>
|
| 237 |
-
<li class='letter'>r</li>
|
| 238 |
-
<ul>
|
| 239 |
-
<li>
|
| 240 |
-
<a href='classes/Caman/Renderer.html'>Renderer</a>
|
| 241 |
-
<small>
|
| 242 |
-
(Caman)
|
| 243 |
-
</small>
|
| 244 |
-
</li>
|
| 245 |
-
</ul>
|
| 246 |
-
</ul>
|
| 247 |
-
<ul>
|
| 248 |
-
<li class='letter'>s</li>
|
| 249 |
-
<ul>
|
| 250 |
-
<li>
|
| 251 |
-
<a href='classes/Caman/Store.html'>Store</a>
|
| 252 |
-
<small>
|
| 253 |
-
(Caman)
|
| 254 |
-
</small>
|
| 255 |
-
</li>
|
| 256 |
-
</ul>
|
| 257 |
-
</ul>
|
| 258 |
-
<ul>
|
| 259 |
-
<li class='letter'>u</li>
|
| 260 |
-
<ul>
|
| 261 |
-
<li>
|
| 262 |
-
<a href='classes/Util.html'>Util</a>
|
| 263 |
-
</li>
|
| 264 |
-
</ul>
|
| 265 |
-
</ul>
|
| 266 |
-
</div>
|
| 267 |
-
<h2>File Listing A-Z</h2>
|
| 268 |
-
<div class='index'>
|
| 269 |
-
<ul>
|
| 270 |
-
<li class='letter'>a</li>
|
| 271 |
-
<ul>
|
| 272 |
-
<li>
|
| 273 |
-
<a href='files/core/analyze.coffee.html'>analyze.coffee</a>
|
| 274 |
-
<small>
|
| 275 |
-
(core)
|
| 276 |
-
</small>
|
| 277 |
-
</li>
|
| 278 |
-
<li>
|
| 279 |
-
<a href='files/core/autoload.coffee.html'>autoload.coffee</a>
|
| 280 |
-
<small>
|
| 281 |
-
(core)
|
| 282 |
-
</small>
|
| 283 |
-
</li>
|
| 284 |
-
</ul>
|
| 285 |
-
</ul>
|
| 286 |
-
<ul>
|
| 287 |
-
<li class='letter'>b</li>
|
| 288 |
-
<ul>
|
| 289 |
-
<li>
|
| 290 |
-
<a href='files/core/blender.coffee.html'>blender.coffee</a>
|
| 291 |
-
<small>
|
| 292 |
-
(core)
|
| 293 |
-
</small>
|
| 294 |
-
</li>
|
| 295 |
-
</ul>
|
| 296 |
-
</ul>
|
| 297 |
-
<ul>
|
| 298 |
-
<li class='letter'>c</li>
|
| 299 |
-
<ul>
|
| 300 |
-
<li>
|
| 301 |
-
<a href='files/core/calculate.coffee.html'>calculate.coffee</a>
|
| 302 |
-
<small>
|
| 303 |
-
(core)
|
| 304 |
-
</small>
|
| 305 |
-
</li>
|
| 306 |
-
<li>
|
| 307 |
-
<a href='files/core/caman.coffee.html'>caman.coffee</a>
|
| 308 |
-
<small>
|
| 309 |
-
(core)
|
| 310 |
-
</small>
|
| 311 |
-
</li>
|
| 312 |
-
<li>
|
| 313 |
-
<a href='files/core/convert.coffee.html'>convert.coffee</a>
|
| 314 |
-
<small>
|
| 315 |
-
(core)
|
| 316 |
-
</small>
|
| 317 |
-
</li>
|
| 318 |
-
</ul>
|
| 319 |
-
</ul>
|
| 320 |
-
<ul>
|
| 321 |
-
<li class='letter'>e</li>
|
| 322 |
-
<ul>
|
| 323 |
-
<li>
|
| 324 |
-
<a href='files/core/event.coffee.html'>event.coffee</a>
|
| 325 |
-
<small>
|
| 326 |
-
(core)
|
| 327 |
-
</small>
|
| 328 |
-
</li>
|
| 329 |
-
</ul>
|
| 330 |
-
</ul>
|
| 331 |
-
<ul>
|
| 332 |
-
<li class='letter'>f</li>
|
| 333 |
-
<ul>
|
| 334 |
-
<li>
|
| 335 |
-
<a href='files/core/filter.coffee.html'>filter.coffee</a>
|
| 336 |
-
<small>
|
| 337 |
-
(core)
|
| 338 |
-
</small>
|
| 339 |
-
</li>
|
| 340 |
-
</ul>
|
| 341 |
-
</ul>
|
| 342 |
-
<ul>
|
| 343 |
-
<li class='letter'>i</li>
|
| 344 |
-
<ul>
|
| 345 |
-
<li>
|
| 346 |
-
<a href='files/core/io.coffee.html'>io.coffee</a>
|
| 347 |
-
<small>
|
| 348 |
-
(core)
|
| 349 |
-
</small>
|
| 350 |
-
</li>
|
| 351 |
-
</ul>
|
| 352 |
-
</ul>
|
| 353 |
-
<ul>
|
| 354 |
-
<li class='letter'>l</li>
|
| 355 |
-
<ul>
|
| 356 |
-
<li>
|
| 357 |
-
<a href='files/core/layer.coffee.html'>layer.coffee</a>
|
| 358 |
-
<small>
|
| 359 |
-
(core)
|
| 360 |
-
</small>
|
| 361 |
-
</li>
|
| 362 |
-
</ul>
|
| 363 |
-
</ul>
|
| 364 |
-
<ul>
|
| 365 |
-
<li class='letter'>p</li>
|
| 366 |
-
<ul>
|
| 367 |
-
<li>
|
| 368 |
-
<a href='files/core/pixel.coffee.html'>pixel.coffee</a>
|
| 369 |
-
<small>
|
| 370 |
-
(core)
|
| 371 |
-
</small>
|
| 372 |
-
</li>
|
| 373 |
-
<li>
|
| 374 |
-
<a href='files/core/plugin.coffee.html'>plugin.coffee</a>
|
| 375 |
-
<small>
|
| 376 |
-
(core)
|
| 377 |
-
</small>
|
| 378 |
-
</li>
|
| 379 |
-
</ul>
|
| 380 |
-
</ul>
|
| 381 |
-
<ul>
|
| 382 |
-
<li class='letter'>r</li>
|
| 383 |
-
<ul>
|
| 384 |
-
<li>
|
| 385 |
-
<a href='files/core/renderer.coffee.html'>renderer.coffee</a>
|
| 386 |
-
<small>
|
| 387 |
-
(core)
|
| 388 |
-
</small>
|
| 389 |
-
</li>
|
| 390 |
-
</ul>
|
| 391 |
-
</ul>
|
| 392 |
-
<ul>
|
| 393 |
-
<li class='letter'>s</li>
|
| 394 |
-
<ul>
|
| 395 |
-
<li>
|
| 396 |
-
<a href='files/core/store.coffee.html'>store.coffee</a>
|
| 397 |
-
<small>
|
| 398 |
-
(core)
|
| 399 |
-
</small>
|
| 400 |
-
</li>
|
| 401 |
-
</ul>
|
| 402 |
-
</ul>
|
| 403 |
-
<ul>
|
| 404 |
-
<li class='letter'>u</li>
|
| 405 |
-
<ul>
|
| 406 |
-
<li>
|
| 407 |
-
<a href='files/core/util.coffee.html'>util.coffee</a>
|
| 408 |
-
<small>
|
| 409 |
-
(core)
|
| 410 |
-
</small>
|
| 411 |
-
</li>
|
| 412 |
-
</ul>
|
| 413 |
-
</ul>
|
| 414 |
-
</div>
|
| 415 |
-
</div>
|
| 416 |
-
</div>
|
| 417 |
-
<div id='footer'>
|
| 418 |
-
Generated on
|
| 419 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 420 |
-
by
|
| 421 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 422 |
-
v1.7.0
|
| 423 |
-
(Node.js v0.10.21).
|
| 424 |
-
✲
|
| 425 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 426 |
-
✲
|
| 427 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 428 |
-
✲
|
| 429 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 430 |
-
</div>
|
| 431 |
-
</body>
|
| 432 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/class_list.html
DELETED
|
@@ -1,142 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body class='list'>
|
| 11 |
-
<div class='list tree' id='content'>
|
| 12 |
-
<h1 class='full_list_header'>Class List</h1>
|
| 13 |
-
<nav>
|
| 14 |
-
<a target='_self' href='class_list.html'>Classes</a>
|
| 15 |
-
<a target='_self' href='file_list.html'>Files</a>
|
| 16 |
-
<a target='_self' href='method_list.html'>Methods</a>
|
| 17 |
-
<a target='_self' href='extra_list.html'>Extras</a>
|
| 18 |
-
</nav>
|
| 19 |
-
<div id='search'>
|
| 20 |
-
Search:
|
| 21 |
-
<input type='text'>
|
| 22 |
-
</div>
|
| 23 |
-
<ul>
|
| 24 |
-
<li>
|
| 25 |
-
<span>
|
| 26 |
-
Caman
|
| 27 |
-
</span>
|
| 28 |
-
</li>
|
| 29 |
-
<ul>
|
| 30 |
-
<li>
|
| 31 |
-
<a href='classes/Caman/Analyze.html' target='main'>Analyze</a>
|
| 32 |
-
<small class='namespace'>
|
| 33 |
-
Caman
|
| 34 |
-
</small>
|
| 35 |
-
</li>
|
| 36 |
-
<li>
|
| 37 |
-
<a href='classes/Caman/Blender.html' target='main'>Blender</a>
|
| 38 |
-
<small class='namespace'>
|
| 39 |
-
Caman
|
| 40 |
-
</small>
|
| 41 |
-
</li>
|
| 42 |
-
<li>
|
| 43 |
-
<a href='classes/Caman/Calculate.html' target='main'>Calculate</a>
|
| 44 |
-
<small class='namespace'>
|
| 45 |
-
Caman
|
| 46 |
-
</small>
|
| 47 |
-
</li>
|
| 48 |
-
<li>
|
| 49 |
-
<a href='classes/Caman/Convert.html' target='main'>Convert</a>
|
| 50 |
-
<small class='namespace'>
|
| 51 |
-
Caman
|
| 52 |
-
</small>
|
| 53 |
-
</li>
|
| 54 |
-
<li>
|
| 55 |
-
<a href='classes/Caman/Event.html' target='main'>Event</a>
|
| 56 |
-
<small class='namespace'>
|
| 57 |
-
Caman
|
| 58 |
-
</small>
|
| 59 |
-
</li>
|
| 60 |
-
<li>
|
| 61 |
-
<a href='classes/Caman/Filter.html' target='main'>Filter</a>
|
| 62 |
-
<small class='namespace'>
|
| 63 |
-
Caman
|
| 64 |
-
</small>
|
| 65 |
-
</li>
|
| 66 |
-
<li>
|
| 67 |
-
<a href='classes/Caman/IO.html' target='main'>IO</a>
|
| 68 |
-
<small class='namespace'>
|
| 69 |
-
Caman
|
| 70 |
-
</small>
|
| 71 |
-
</li>
|
| 72 |
-
<li>
|
| 73 |
-
<a href='classes/Caman/Layer.html' target='main'>Layer</a>
|
| 74 |
-
<small class='namespace'>
|
| 75 |
-
Caman
|
| 76 |
-
</small>
|
| 77 |
-
</li>
|
| 78 |
-
<li>
|
| 79 |
-
<a href='classes/Caman/Logger.html' target='main'>Logger</a>
|
| 80 |
-
<small class='namespace'>
|
| 81 |
-
Caman
|
| 82 |
-
</small>
|
| 83 |
-
</li>
|
| 84 |
-
<li>
|
| 85 |
-
<a href='classes/Caman/Pixel.html' target='main'>Pixel</a>
|
| 86 |
-
<small class='namespace'>
|
| 87 |
-
Caman
|
| 88 |
-
</small>
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<a href='classes/Caman/Plugin.html' target='main'>Plugin</a>
|
| 92 |
-
<small class='namespace'>
|
| 93 |
-
Caman
|
| 94 |
-
</small>
|
| 95 |
-
</li>
|
| 96 |
-
<li>
|
| 97 |
-
<a href='classes/Caman/Renderer.html' target='main'>Renderer</a>
|
| 98 |
-
<small class='namespace'>
|
| 99 |
-
Caman
|
| 100 |
-
</small>
|
| 101 |
-
</li>
|
| 102 |
-
<li>
|
| 103 |
-
<a href='classes/Caman/Store.html' target='main'>Store</a>
|
| 104 |
-
<small class='namespace'>
|
| 105 |
-
Caman
|
| 106 |
-
</small>
|
| 107 |
-
</li>
|
| 108 |
-
</ul>
|
| 109 |
-
|
| 110 |
-
<li>
|
| 111 |
-
<a href='classes/CamanParser.html' target='main'>CamanParser</a>
|
| 112 |
-
<small class='namespace'>
|
| 113 |
-
|
| 114 |
-
</small>
|
| 115 |
-
</li>
|
| 116 |
-
<li>
|
| 117 |
-
<a href='classes/Caman.html' target='main'>Caman</a>
|
| 118 |
-
<small class='parent'>
|
| 119 |
-
<
|
| 120 |
-
Module
|
| 121 |
-
</small>
|
| 122 |
-
<small class='namespace'>
|
| 123 |
-
|
| 124 |
-
</small>
|
| 125 |
-
</li>
|
| 126 |
-
<li>
|
| 127 |
-
<a href='classes/Module.html' target='main'>Module</a>
|
| 128 |
-
<small class='namespace'>
|
| 129 |
-
|
| 130 |
-
</small>
|
| 131 |
-
</li>
|
| 132 |
-
<li>
|
| 133 |
-
<a href='classes/Util.html' target='main'>Util</a>
|
| 134 |
-
<small class='namespace'>
|
| 135 |
-
|
| 136 |
-
</small>
|
| 137 |
-
</li>
|
| 138 |
-
</ul>
|
| 139 |
-
|
| 140 |
-
</div>
|
| 141 |
-
</body>
|
| 142 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman.html
DELETED
|
@@ -1,1509 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../assets/codo.js'></script>
|
| 8 |
-
<script src='../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>Caman</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='../class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='../file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='../method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='../extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<h1>
|
| 108 |
-
Class:
|
| 109 |
-
Caman
|
| 110 |
-
</h1>
|
| 111 |
-
<table class='box'>
|
| 112 |
-
<tr>
|
| 113 |
-
<td>Defined in:</td>
|
| 114 |
-
<td>src/core/caman.coffee</td>
|
| 115 |
-
</tr>
|
| 116 |
-
<tr>
|
| 117 |
-
<td>Inherits:</td>
|
| 118 |
-
<td>
|
| 119 |
-
<a href='../classes/Module.html'>Module</a>
|
| 120 |
-
</td>
|
| 121 |
-
</tr>
|
| 122 |
-
</table>
|
| 123 |
-
<h2>Overview</h2>
|
| 124 |
-
<div class='docstring'>
|
| 125 |
-
<p>Here it begins. Caman is defined.
|
| 126 |
-
There are many different initialization for Caman, which are described on the
|
| 127 |
-
<a href="http://camanjs.com/guides">Guides</a>.</p><p>Initialization is tricky because we need to make sure everything we need is actually fully
|
| 128 |
-
loaded in the DOM before proceeding. When initialized on an image, we need to make sure that the
|
| 129 |
-
image is done loading before converting it to a canvas element and writing the pixel data. If we
|
| 130 |
-
do this prematurely, the browser will throw a DOM Error, and chaos will ensue. In the event that
|
| 131 |
-
we initialize Caman on a canvas element while specifying an image URL, we need to create a new
|
| 132 |
-
image element, load the image, then continue with initialization.</p><p>The main goal for Caman was simplicity, so all of this is handled transparently to the end-user. </p>
|
| 133 |
-
</div>
|
| 134 |
-
<div class='tags'>
|
| 135 |
-
</div>
|
| 136 |
-
<h2>Property Summary</h2>
|
| 137 |
-
<dl class='properties'>
|
| 138 |
-
<dt id='DEBUG-property'>
|
| 139 |
-
<span class='signature'>
|
| 140 |
-
(Boolean) <strong>DEBUG</strong>
|
| 141 |
-
</span>
|
| 142 |
-
</dt>
|
| 143 |
-
<dd class='desc'>
|
| 144 |
-
<p>Debug mode enables console logging.</p>
|
| 145 |
-
</dd>
|
| 146 |
-
</dl>
|
| 147 |
-
<h2>Class Method Summary</h2>
|
| 148 |
-
<ul class='summary'>
|
| 149 |
-
<li>
|
| 150 |
-
<span class='signature'>
|
| 151 |
-
<a href='#toString-class'>
|
| 152 |
-
+ (String) <strong>toString</strong>()
|
| 153 |
-
</a>
|
| 154 |
-
</span>
|
| 155 |
-
<span class='desc'>
|
| 156 |
-
Custom toString()
|
| 157 |
-
</span>
|
| 158 |
-
</li>
|
| 159 |
-
<li>
|
| 160 |
-
<span class='signature'>
|
| 161 |
-
<a href='#getAttrId-class'>
|
| 162 |
-
+ (String) <strong>getAttrId</strong>(canvas)
|
| 163 |
-
</a>
|
| 164 |
-
</span>
|
| 165 |
-
<span class='desc'>
|
| 166 |
-
Get the ID assigned to this canvas by Caman.
|
| 167 |
-
</span>
|
| 168 |
-
</li>
|
| 169 |
-
</ul>
|
| 170 |
-
<h2>Instance Method Summary</h2>
|
| 171 |
-
<ul class='summary'>
|
| 172 |
-
<li>
|
| 173 |
-
<span class='signature'>
|
| 174 |
-
<a href='#constructor-instance'>
|
| 175 |
-
- (Caman) <strong>constructor</strong>()
|
| 176 |
-
</a>
|
| 177 |
-
</span>
|
| 178 |
-
<span class='constructor note title'>Constructor</span>
|
| 179 |
-
<span class='desc'>
|
| 180 |
-
The Caman function.
|
| 181 |
-
</span>
|
| 182 |
-
</li>
|
| 183 |
-
<li>
|
| 184 |
-
<span class='signature'>
|
| 185 |
-
<a href='#domIsLoaded-instance'>
|
| 186 |
-
- (void) <strong>domIsLoaded</strong>(cb)
|
| 187 |
-
</a>
|
| 188 |
-
</span>
|
| 189 |
-
<span class='desc'>
|
| 190 |
-
Checks to ensure the DOM is loaded.
|
| 191 |
-
</span>
|
| 192 |
-
</li>
|
| 193 |
-
<li>
|
| 194 |
-
<span class='signature'>
|
| 195 |
-
<a href='#parseArguments-instance'>
|
| 196 |
-
- (void) <strong>parseArguments</strong>(args)
|
| 197 |
-
</a>
|
| 198 |
-
</span>
|
| 199 |
-
<span class='desc'>
|
| 200 |
-
Parses the arguments given to the Caman function, and sets the appropriate properties on this instance.
|
| 201 |
-
</span>
|
| 202 |
-
</li>
|
| 203 |
-
<li>
|
| 204 |
-
<span class='signature'>
|
| 205 |
-
<a href='#setInitObject-instance'>
|
| 206 |
-
- (void) <strong>setInitObject</strong>(obj)
|
| 207 |
-
</a>
|
| 208 |
-
</span>
|
| 209 |
-
<span class='desc'>
|
| 210 |
-
Sets the initialization object for this instance.
|
| 211 |
-
</span>
|
| 212 |
-
</li>
|
| 213 |
-
<li>
|
| 214 |
-
<span class='signature'>
|
| 215 |
-
<a href='#setup-instance'>
|
| 216 |
-
- (void) <strong>setup</strong>()
|
| 217 |
-
</a>
|
| 218 |
-
</span>
|
| 219 |
-
<span class='desc'>
|
| 220 |
-
Begins the setup process, which differs depending on whether we're in NodeJS, or if an image or canvas object was provided.
|
| 221 |
-
</span>
|
| 222 |
-
</li>
|
| 223 |
-
<li>
|
| 224 |
-
<span class='signature'>
|
| 225 |
-
<a href='#initNode-instance'>
|
| 226 |
-
- (void) <strong>initNode</strong>()
|
| 227 |
-
</a>
|
| 228 |
-
</span>
|
| 229 |
-
<span class='desc'>
|
| 230 |
-
Initialization function for NodeJS.
|
| 231 |
-
</span>
|
| 232 |
-
</li>
|
| 233 |
-
<li>
|
| 234 |
-
<span class='signature'>
|
| 235 |
-
<a href='#readFromHttp-instance'>
|
| 236 |
-
- (void) <strong>readFromHttp</strong>(url, callback)
|
| 237 |
-
</a>
|
| 238 |
-
</span>
|
| 239 |
-
<span class='desc'>
|
| 240 |
-
|
| 241 |
-
</span>
|
| 242 |
-
</li>
|
| 243 |
-
<li>
|
| 244 |
-
<span class='signature'>
|
| 245 |
-
<a href='#nodeFileReady-instance'>
|
| 246 |
-
- (void) <strong>nodeFileReady</strong>(err, data)
|
| 247 |
-
</a>
|
| 248 |
-
</span>
|
| 249 |
-
<span class='bound note title'>Bound</span>
|
| 250 |
-
<span class='desc'>
|
| 251 |
-
|
| 252 |
-
</span>
|
| 253 |
-
</li>
|
| 254 |
-
<li>
|
| 255 |
-
<span class='signature'>
|
| 256 |
-
<a href='#initImage-instance'>
|
| 257 |
-
- (void) <strong>initImage</strong>()
|
| 258 |
-
</a>
|
| 259 |
-
</span>
|
| 260 |
-
<span class='desc'>
|
| 261 |
-
Initialization function for the browser and image objects.
|
| 262 |
-
</span>
|
| 263 |
-
</li>
|
| 264 |
-
<li>
|
| 265 |
-
<span class='signature'>
|
| 266 |
-
<a href='#initCanvas-instance'>
|
| 267 |
-
- (void) <strong>initCanvas</strong>()
|
| 268 |
-
</a>
|
| 269 |
-
</span>
|
| 270 |
-
<span class='desc'>
|
| 271 |
-
Initialization function for the browser and canvas objects.
|
| 272 |
-
</span>
|
| 273 |
-
</li>
|
| 274 |
-
<li>
|
| 275 |
-
<span class='signature'>
|
| 276 |
-
<a href='#imageAdjustments-instance'>
|
| 277 |
-
- (void) <strong>imageAdjustments</strong>()
|
| 278 |
-
</a>
|
| 279 |
-
</span>
|
| 280 |
-
<span class='desc'>
|
| 281 |
-
Automatically check for a HiDPI capable screen and swap out the image if possible.
|
| 282 |
-
</span>
|
| 283 |
-
</li>
|
| 284 |
-
<li>
|
| 285 |
-
<span class='signature'>
|
| 286 |
-
<a href='#waitForImageLoaded-instance'>
|
| 287 |
-
- (void) <strong>waitForImageLoaded</strong>()
|
| 288 |
-
</a>
|
| 289 |
-
</span>
|
| 290 |
-
<span class='desc'>
|
| 291 |
-
Utility function that fires <a href='../classes/Caman.html#imageLoaded-instance'>Caman#imageLoaded</a> once the image is finished loading.
|
| 292 |
-
</span>
|
| 293 |
-
</li>
|
| 294 |
-
<li>
|
| 295 |
-
<span class='signature'>
|
| 296 |
-
<a href='#isImageLoaded-instance'>
|
| 297 |
-
- (Boolean) <strong>isImageLoaded</strong>()
|
| 298 |
-
</a>
|
| 299 |
-
</span>
|
| 300 |
-
<span class='desc'>
|
| 301 |
-
Checks if the given image is finished loading.
|
| 302 |
-
</span>
|
| 303 |
-
</li>
|
| 304 |
-
<li>
|
| 305 |
-
<span class='signature'>
|
| 306 |
-
<a href='#imageWidth-instance'>
|
| 307 |
-
- (Number) <strong>imageWidth</strong>()
|
| 308 |
-
</a>
|
| 309 |
-
</span>
|
| 310 |
-
<span class='desc'>
|
| 311 |
-
Internet Explorer has issues figuring out image dimensions when they aren't explicitly defined, apparently.
|
| 312 |
-
</span>
|
| 313 |
-
</li>
|
| 314 |
-
<li>
|
| 315 |
-
<span class='signature'>
|
| 316 |
-
<a href='#imageHeight-instance'>
|
| 317 |
-
- (Number) <strong>imageHeight</strong>()
|
| 318 |
-
</a>
|
| 319 |
-
</span>
|
| 320 |
-
<span class='desc'>
|
| 321 |
-
|
| 322 |
-
</span>
|
| 323 |
-
</li>
|
| 324 |
-
<li>
|
| 325 |
-
<span class='signature'>
|
| 326 |
-
<a href='#imageLoaded-instance'>
|
| 327 |
-
- (void) <strong>imageLoaded</strong>()
|
| 328 |
-
</a>
|
| 329 |
-
</span>
|
| 330 |
-
<span class='desc'>
|
| 331 |
-
Function that is called once the initialization image is finished loading.
|
| 332 |
-
</span>
|
| 333 |
-
</li>
|
| 334 |
-
<li>
|
| 335 |
-
<span class='signature'>
|
| 336 |
-
<a href='#finishInit-instance'>
|
| 337 |
-
- (void) <strong>finishInit</strong>()
|
| 338 |
-
</a>
|
| 339 |
-
</span>
|
| 340 |
-
<span class='desc'>
|
| 341 |
-
Final step of initialization.
|
| 342 |
-
</span>
|
| 343 |
-
</li>
|
| 344 |
-
<li>
|
| 345 |
-
<span class='signature'>
|
| 346 |
-
<a href='#reloadCanvasData-instance'>
|
| 347 |
-
- (void) <strong>reloadCanvasData</strong>()
|
| 348 |
-
</a>
|
| 349 |
-
</span>
|
| 350 |
-
<span class='desc'>
|
| 351 |
-
If you have a separate context reference to this canvas outside of CamanJS and you make a change to the canvas outside of CamanJS, you will have to call this function to update our context reference to include those changes.
|
| 352 |
-
</span>
|
| 353 |
-
</li>
|
| 354 |
-
<li>
|
| 355 |
-
<span class='signature'>
|
| 356 |
-
<a href='#resetOriginalPixelData-instance'>
|
| 357 |
-
- (void) <strong>resetOriginalPixelData</strong>()
|
| 358 |
-
</a>
|
| 359 |
-
</span>
|
| 360 |
-
<span class='desc'>
|
| 361 |
-
Reset the canvas pixels to the original state at initialization.
|
| 362 |
-
</span>
|
| 363 |
-
</li>
|
| 364 |
-
<li>
|
| 365 |
-
<span class='signature'>
|
| 366 |
-
<a href='#hasId-instance'>
|
| 367 |
-
- (Boolean) <strong>hasId</strong>()
|
| 368 |
-
</a>
|
| 369 |
-
</span>
|
| 370 |
-
<span class='desc'>
|
| 371 |
-
Does this instance have an ID assigned?
|
| 372 |
-
</span>
|
| 373 |
-
</li>
|
| 374 |
-
<li>
|
| 375 |
-
<span class='signature'>
|
| 376 |
-
<a href='#assignId-instance'>
|
| 377 |
-
- (void) <strong>assignId</strong>()
|
| 378 |
-
</a>
|
| 379 |
-
</span>
|
| 380 |
-
<span class='desc'>
|
| 381 |
-
Assign a unique ID to this instance.
|
| 382 |
-
</span>
|
| 383 |
-
</li>
|
| 384 |
-
<li>
|
| 385 |
-
<span class='signature'>
|
| 386 |
-
<a href='#hiDPIDisabled-instance'>
|
| 387 |
-
- (Boolean) <strong>hiDPIDisabled</strong>()
|
| 388 |
-
</a>
|
| 389 |
-
</span>
|
| 390 |
-
<span class='desc'>
|
| 391 |
-
Is HiDPI support disabled via the HTML data attribute?
|
| 392 |
-
</span>
|
| 393 |
-
</li>
|
| 394 |
-
<li>
|
| 395 |
-
<span class='signature'>
|
| 396 |
-
<a href='#hiDPIAdjustments-instance'>
|
| 397 |
-
- (void) <strong>hiDPIAdjustments</strong>()
|
| 398 |
-
</a>
|
| 399 |
-
</span>
|
| 400 |
-
<span class='desc'>
|
| 401 |
-
Perform HiDPI adjustments to the canvas.
|
| 402 |
-
</span>
|
| 403 |
-
</li>
|
| 404 |
-
<li>
|
| 405 |
-
<span class='signature'>
|
| 406 |
-
<a href='#hiDPIRatio-instance'>
|
| 407 |
-
- (Number) <strong>hiDPIRatio</strong>()
|
| 408 |
-
</a>
|
| 409 |
-
</span>
|
| 410 |
-
<span class='desc'>
|
| 411 |
-
Calculate the HiDPI ratio of this display based on the backing store and the pixel ratio.
|
| 412 |
-
</span>
|
| 413 |
-
</li>
|
| 414 |
-
<li>
|
| 415 |
-
<span class='signature'>
|
| 416 |
-
<a href='#hiDPICapable-instance'>
|
| 417 |
-
- (Boolean) <strong>hiDPICapable</strong>()
|
| 418 |
-
</a>
|
| 419 |
-
</span>
|
| 420 |
-
<span class='desc'>
|
| 421 |
-
Is this display HiDPI capable?
|
| 422 |
-
</span>
|
| 423 |
-
</li>
|
| 424 |
-
<li>
|
| 425 |
-
<span class='signature'>
|
| 426 |
-
<a href='#needsHiDPISwap-instance'>
|
| 427 |
-
- (Boolean) <strong>needsHiDPISwap</strong>()
|
| 428 |
-
</a>
|
| 429 |
-
</span>
|
| 430 |
-
<span class='desc'>
|
| 431 |
-
Do we need to perform an image swap with a HiDPI image?
|
| 432 |
-
</span>
|
| 433 |
-
</li>
|
| 434 |
-
<li>
|
| 435 |
-
<span class='signature'>
|
| 436 |
-
<a href='#hiDPIReplacement-instance'>
|
| 437 |
-
- (String) <strong>hiDPIReplacement</strong>()
|
| 438 |
-
</a>
|
| 439 |
-
</span>
|
| 440 |
-
<span class='desc'>
|
| 441 |
-
Gets the HiDPI replacement for the initialization image.
|
| 442 |
-
</span>
|
| 443 |
-
</li>
|
| 444 |
-
<li>
|
| 445 |
-
<span class='signature'>
|
| 446 |
-
<a href='#replaceCanvas-instance'>
|
| 447 |
-
- (void) <strong>replaceCanvas</strong>(newCanvas)
|
| 448 |
-
</a>
|
| 449 |
-
</span>
|
| 450 |
-
<span class='desc'>
|
| 451 |
-
Replaces the current canvas with a new one, and properly updates all of the applicable references for this instance.
|
| 452 |
-
</span>
|
| 453 |
-
</li>
|
| 454 |
-
<li>
|
| 455 |
-
<span class='signature'>
|
| 456 |
-
<a href='#render-instance'>
|
| 457 |
-
- (void) <strong>render</strong>(callback = function() {})
|
| 458 |
-
</a>
|
| 459 |
-
</span>
|
| 460 |
-
<span class='desc'>
|
| 461 |
-
Begins the rendering process.
|
| 462 |
-
</span>
|
| 463 |
-
</li>
|
| 464 |
-
<li>
|
| 465 |
-
<span class='signature'>
|
| 466 |
-
<a href='#revert-instance'>
|
| 467 |
-
- (void) <strong>revert</strong>(updateContext = true)
|
| 468 |
-
</a>
|
| 469 |
-
</span>
|
| 470 |
-
<span class='desc'>
|
| 471 |
-
Reverts the canvas back to it's original state while maintaining any cropped or resized dimensions.
|
| 472 |
-
</span>
|
| 473 |
-
</li>
|
| 474 |
-
<li>
|
| 475 |
-
<span class='signature'>
|
| 476 |
-
<a href='#reset-instance'>
|
| 477 |
-
- (void) <strong>reset</strong>()
|
| 478 |
-
</a>
|
| 479 |
-
</span>
|
| 480 |
-
<span class='desc'>
|
| 481 |
-
Completely resets the canvas back to it's original state.
|
| 482 |
-
</span>
|
| 483 |
-
</li>
|
| 484 |
-
<li>
|
| 485 |
-
<span class='signature'>
|
| 486 |
-
<a href='#originalVisiblePixels-instance'>
|
| 487 |
-
- (Array) <strong>originalVisiblePixels</strong>()
|
| 488 |
-
</a>
|
| 489 |
-
</span>
|
| 490 |
-
<span class='desc'>
|
| 491 |
-
Returns the original pixel data while maintaining any cropping or resizing that may have occured.
|
| 492 |
-
</span>
|
| 493 |
-
</li>
|
| 494 |
-
<li>
|
| 495 |
-
<span class='signature'>
|
| 496 |
-
<a href='#process-instance'>
|
| 497 |
-
- (Caman) <strong>process</strong>(name, processFn)
|
| 498 |
-
</a>
|
| 499 |
-
</span>
|
| 500 |
-
<span class='desc'>
|
| 501 |
-
Pushes the filter callback that modifies the RGBA object into the render queue.
|
| 502 |
-
</span>
|
| 503 |
-
</li>
|
| 504 |
-
<li>
|
| 505 |
-
<span class='signature'>
|
| 506 |
-
<a href='#processKernel-instance'>
|
| 507 |
-
- (Caman) <strong>processKernel</strong>(name, adjust, divisor = null, bias = 0)
|
| 508 |
-
</a>
|
| 509 |
-
</span>
|
| 510 |
-
<span class='desc'>
|
| 511 |
-
Pushes the kernel into the render queue.
|
| 512 |
-
</span>
|
| 513 |
-
</li>
|
| 514 |
-
<li>
|
| 515 |
-
<span class='signature'>
|
| 516 |
-
<a href='#processPlugin-instance'>
|
| 517 |
-
- (Caman) <strong>processPlugin</strong>(plugin, args)
|
| 518 |
-
</a>
|
| 519 |
-
</span>
|
| 520 |
-
<span class='desc'>
|
| 521 |
-
Adds a standalone plugin into the render queue.
|
| 522 |
-
</span>
|
| 523 |
-
</li>
|
| 524 |
-
<li>
|
| 525 |
-
<span class='signature'>
|
| 526 |
-
<a href='#newLayer-instance'>
|
| 527 |
-
- (Caman) <strong>newLayer</strong>(callback)
|
| 528 |
-
</a>
|
| 529 |
-
</span>
|
| 530 |
-
<span class='desc'>
|
| 531 |
-
Pushes a new layer operation into the render queue and calls the layer callback.
|
| 532 |
-
</span>
|
| 533 |
-
</li>
|
| 534 |
-
<li>
|
| 535 |
-
<span class='signature'>
|
| 536 |
-
<a href='#executeLayer-instance'>
|
| 537 |
-
- (void) <strong>executeLayer</strong>(layer)
|
| 538 |
-
</a>
|
| 539 |
-
</span>
|
| 540 |
-
<span class='desc'>
|
| 541 |
-
Pushes the layer context and moves to the next operation.
|
| 542 |
-
</span>
|
| 543 |
-
</li>
|
| 544 |
-
<li>
|
| 545 |
-
<span class='signature'>
|
| 546 |
-
<a href='#pushContext-instance'>
|
| 547 |
-
- (void) <strong>pushContext</strong>(layer)
|
| 548 |
-
</a>
|
| 549 |
-
</span>
|
| 550 |
-
<span class='desc'>
|
| 551 |
-
Set all of the relevant data to the new layer.
|
| 552 |
-
</span>
|
| 553 |
-
</li>
|
| 554 |
-
<li>
|
| 555 |
-
<span class='signature'>
|
| 556 |
-
<a href='#popContext-instance'>
|
| 557 |
-
- (void) <strong>popContext</strong>()
|
| 558 |
-
</a>
|
| 559 |
-
</span>
|
| 560 |
-
<span class='desc'>
|
| 561 |
-
Restore the previous layer context.
|
| 562 |
-
</span>
|
| 563 |
-
</li>
|
| 564 |
-
<li>
|
| 565 |
-
<span class='signature'>
|
| 566 |
-
<a href='#applyCurrentLayer-instance'>
|
| 567 |
-
- (void) <strong>applyCurrentLayer</strong>()
|
| 568 |
-
</a>
|
| 569 |
-
</span>
|
| 570 |
-
<span class='desc'>
|
| 571 |
-
Applies the current layer to its parent layer.
|
| 572 |
-
</span>
|
| 573 |
-
</li>
|
| 574 |
-
</ul>
|
| 575 |
-
<h2>
|
| 576 |
-
<small>Inherited Method Summary</small>
|
| 577 |
-
</h2>
|
| 578 |
-
<h3 class='inherited'>
|
| 579 |
-
Methods inherited from
|
| 580 |
-
<a href='../classes/Module.html'>Module</a>
|
| 581 |
-
</h3>
|
| 582 |
-
<p class='inherited'>
|
| 583 |
-
<a href='../classes/Module.html#extends-class'>.extends</a>,
|
| 584 |
-
<a href='../classes/Module.html#includes-class'>.includes</a>,
|
| 585 |
-
<a href='../classes/Module.html#delegate-class'>.delegate</a>,
|
| 586 |
-
<a href='../classes/Module.html#aliasFunction-class'>.aliasFunction</a>,
|
| 587 |
-
<a href='../classes/Module.html#aliasProperty-class'>.aliasProperty</a>,
|
| 588 |
-
<a href='../classes/Module.html#included-class'>.included</a>
|
| 589 |
-
</p>
|
| 590 |
-
<h2>Class Method Details</h2>
|
| 591 |
-
<div class='methods'>
|
| 592 |
-
<div class='method_details'>
|
| 593 |
-
<p class='signature' id='toString-class'>
|
| 594 |
-
+ (String) <strong>toString</strong>()
|
| 595 |
-
</p>
|
| 596 |
-
<div class='docstring'>
|
| 597 |
-
<p>Custom toString()</p>
|
| 598 |
-
</div>
|
| 599 |
-
<div class='tags'>
|
| 600 |
-
<h3>Returns:</h3>
|
| 601 |
-
<ul class='return'>
|
| 602 |
-
<li>
|
| 603 |
-
<span class='type'></span>
|
| 604 |
-
(<tt>String</tt>)
|
| 605 |
-
—
|
| 606 |
-
<span class='desc'>Version and release information.</span>
|
| 607 |
-
</li>
|
| 608 |
-
</ul>
|
| 609 |
-
</div>
|
| 610 |
-
</div>
|
| 611 |
-
<div class='method_details'>
|
| 612 |
-
<p class='signature' id='getAttrId-class'>
|
| 613 |
-
+ (String) <strong>getAttrId</strong>(canvas)
|
| 614 |
-
</p>
|
| 615 |
-
<div class='docstring'>
|
| 616 |
-
<p>Get the ID assigned to this canvas by Caman.</p>
|
| 617 |
-
</div>
|
| 618 |
-
<div class='tags'>
|
| 619 |
-
<h3>Parameters:</h3>
|
| 620 |
-
<ul class='param'>
|
| 621 |
-
<li>
|
| 622 |
-
<span class='name'>canvas</span>
|
| 623 |
-
<span class='type'>
|
| 624 |
-
(<tt>DOMObject</tt>)
|
| 625 |
-
</span>
|
| 626 |
-
—
|
| 627 |
-
<span class='desc'>The canvas to inspect.</span>
|
| 628 |
-
</li>
|
| 629 |
-
</ul>
|
| 630 |
-
<h3>Returns:</h3>
|
| 631 |
-
<ul class='return'>
|
| 632 |
-
<li>
|
| 633 |
-
<span class='type'></span>
|
| 634 |
-
(<tt>String</tt>)
|
| 635 |
-
—
|
| 636 |
-
<span class='desc'>The Caman ID associated with this canvas.</span>
|
| 637 |
-
</li>
|
| 638 |
-
</ul>
|
| 639 |
-
</div>
|
| 640 |
-
</div>
|
| 641 |
-
</div>
|
| 642 |
-
<h2>Constructor Details</h2>
|
| 643 |
-
<div class='methods'>
|
| 644 |
-
<div class='method_details'>
|
| 645 |
-
<p class='signature' id='constructor-instance'>
|
| 646 |
-
- (Caman) <strong>Caman</strong>(initializer)
|
| 647 |
-
<br>
|
| 648 |
-
- (Caman) <strong>Caman</strong>(initializer, callback)
|
| 649 |
-
<br>
|
| 650 |
-
- (Caman) <strong>Caman</strong>(initializer, url)
|
| 651 |
-
<br>
|
| 652 |
-
- (Caman) <strong>Caman</strong>(initializer, url, callback)
|
| 653 |
-
<br>
|
| 654 |
-
- (Caman) <strong>Caman</strong>(file)
|
| 655 |
-
<br>
|
| 656 |
-
- (Caman) <strong>Caman</strong>(file, callback)
|
| 657 |
-
<br>
|
| 658 |
-
</p>
|
| 659 |
-
<div class='docstring'>
|
| 660 |
-
<p>The Caman function. While technically a constructor, it was made to be called without
|
| 661 |
-
the <code>new</code> keyword. Caman will figure it out.</p>
|
| 662 |
-
</div>
|
| 663 |
-
<div class='tags'>
|
| 664 |
-
<h3>Parameters:</h3>
|
| 665 |
-
<ul class='param'>
|
| 666 |
-
<li>
|
| 667 |
-
<span class='name'>initializer</span>
|
| 668 |
-
<span class='type'>
|
| 669 |
-
(<tt>DOMObject, String</tt>)
|
| 670 |
-
</span>
|
| 671 |
-
—
|
| 672 |
-
<span class='desc'>The DOM selector or DOM object to initialize.</span>
|
| 673 |
-
</li>
|
| 674 |
-
</ul>
|
| 675 |
-
<h3>Returns:</h3>
|
| 676 |
-
<ul class='return'>
|
| 677 |
-
<li>
|
| 678 |
-
<span class='type'></span>
|
| 679 |
-
(<tt><a href='../classes/Caman.html'>Caman</a></tt>)
|
| 680 |
-
—
|
| 681 |
-
<span class='desc'>Initialized Caman instance.</span>
|
| 682 |
-
</li>
|
| 683 |
-
</ul>
|
| 684 |
-
<div class='overloads'>
|
| 685 |
-
<h3>Overloads:</h3>
|
| 686 |
-
<div class='overload'>
|
| 687 |
-
<p class='signature'>
|
| 688 |
-
- (Caman) <strong>Caman</strong>(initializer)
|
| 689 |
-
</p>
|
| 690 |
-
<div class='docstring'>
|
| 691 |
-
<p>Initialize Caman without a callback.</p>
|
| 692 |
-
</div>
|
| 693 |
-
<div class='tags'>
|
| 694 |
-
</div>
|
| 695 |
-
</div>
|
| 696 |
-
<div class='overload'>
|
| 697 |
-
<p class='signature'>
|
| 698 |
-
- (Caman) <strong>Caman</strong>(initializer, callback)
|
| 699 |
-
</p>
|
| 700 |
-
<div class='docstring'>
|
| 701 |
-
<p>Initialize Caman with a callback.</p>
|
| 702 |
-
</div>
|
| 703 |
-
<div class='tags'>
|
| 704 |
-
<h3>Parameters:</h3>
|
| 705 |
-
<ul class='param'>
|
| 706 |
-
<li>
|
| 707 |
-
<span class='name'>callback</span>
|
| 708 |
-
<span class='type'>
|
| 709 |
-
(<tt>Function</tt>)
|
| 710 |
-
</span>
|
| 711 |
-
—
|
| 712 |
-
<span class='desc'>Function to call once initialization completes.</span>
|
| 713 |
-
</li>
|
| 714 |
-
</ul>
|
| 715 |
-
</div>
|
| 716 |
-
</div>
|
| 717 |
-
<div class='overload'>
|
| 718 |
-
<p class='signature'>
|
| 719 |
-
- (Caman) <strong>Caman</strong>(initializer, url)
|
| 720 |
-
</p>
|
| 721 |
-
<div class='docstring'>
|
| 722 |
-
<p>Initialize Caman with a URL to an image and no callback.</p>
|
| 723 |
-
</div>
|
| 724 |
-
<div class='tags'>
|
| 725 |
-
<h3>Parameters:</h3>
|
| 726 |
-
<ul class='param'>
|
| 727 |
-
<li>
|
| 728 |
-
<span class='name'>url</span>
|
| 729 |
-
<span class='type'>
|
| 730 |
-
(<tt>String</tt>)
|
| 731 |
-
</span>
|
| 732 |
-
—
|
| 733 |
-
<span class='desc'>URl to an image to draw to the canvas.</span>
|
| 734 |
-
</li>
|
| 735 |
-
</ul>
|
| 736 |
-
</div>
|
| 737 |
-
</div>
|
| 738 |
-
<div class='overload'>
|
| 739 |
-
<p class='signature'>
|
| 740 |
-
- (Caman) <strong>Caman</strong>(initializer, url, callback)
|
| 741 |
-
</p>
|
| 742 |
-
<div class='docstring'>
|
| 743 |
-
<p>Initialize Caman with a canvas, URL to an image, and a callback.</p>
|
| 744 |
-
</div>
|
| 745 |
-
<div class='tags'>
|
| 746 |
-
<h3>Parameters:</h3>
|
| 747 |
-
<ul class='param'>
|
| 748 |
-
<li>
|
| 749 |
-
<span class='name'>url</span>
|
| 750 |
-
<span class='type'>
|
| 751 |
-
(<tt>String</tt>)
|
| 752 |
-
</span>
|
| 753 |
-
—
|
| 754 |
-
<span class='desc'>URl to an image to draw to the canvas.</span>
|
| 755 |
-
</li>
|
| 756 |
-
<li>
|
| 757 |
-
<span class='name'>callback</span>
|
| 758 |
-
<span class='type'>
|
| 759 |
-
(<tt>Function</tt>)
|
| 760 |
-
</span>
|
| 761 |
-
—
|
| 762 |
-
<span class='desc'>Function to call once initialization completes.</span>
|
| 763 |
-
</li>
|
| 764 |
-
</ul>
|
| 765 |
-
</div>
|
| 766 |
-
</div>
|
| 767 |
-
<div class='overload'>
|
| 768 |
-
<p class='signature'>
|
| 769 |
-
- (Caman) <strong>Caman</strong>(file)
|
| 770 |
-
</p>
|
| 771 |
-
<div class='docstring'>
|
| 772 |
-
<p><strong>NodeJS</strong>: Initialize Caman with a path to an image file and no callback.</p>
|
| 773 |
-
</div>
|
| 774 |
-
<div class='tags'>
|
| 775 |
-
<h3>Parameters:</h3>
|
| 776 |
-
<ul class='param'>
|
| 777 |
-
<li>
|
| 778 |
-
<span class='name'>file</span>
|
| 779 |
-
<span class='type'>
|
| 780 |
-
(<tt>String, File</tt>)
|
| 781 |
-
</span>
|
| 782 |
-
—
|
| 783 |
-
<span class='desc'>File object or path to image to read.</span>
|
| 784 |
-
</li>
|
| 785 |
-
</ul>
|
| 786 |
-
</div>
|
| 787 |
-
</div>
|
| 788 |
-
<div class='overload'>
|
| 789 |
-
<p class='signature'>
|
| 790 |
-
- (Caman) <strong>Caman</strong>(file, callback)
|
| 791 |
-
</p>
|
| 792 |
-
<div class='docstring'>
|
| 793 |
-
<p><strong>NodeJS</strong>: Initialize Caman with a file and a callback.</p>
|
| 794 |
-
</div>
|
| 795 |
-
<div class='tags'>
|
| 796 |
-
<h3>Parameters:</h3>
|
| 797 |
-
<ul class='param'>
|
| 798 |
-
<li>
|
| 799 |
-
<span class='name'>file</span>
|
| 800 |
-
<span class='type'>
|
| 801 |
-
(<tt>String, File</tt>)
|
| 802 |
-
</span>
|
| 803 |
-
—
|
| 804 |
-
<span class='desc'>File object or path to image to read.</span>
|
| 805 |
-
</li>
|
| 806 |
-
<li>
|
| 807 |
-
<span class='name'>callback</span>
|
| 808 |
-
<span class='type'>
|
| 809 |
-
(<tt>Function</tt>)
|
| 810 |
-
</span>
|
| 811 |
-
—
|
| 812 |
-
<span class='desc'>Function to call once initialization completes.</span>
|
| 813 |
-
</li>
|
| 814 |
-
</ul>
|
| 815 |
-
</div>
|
| 816 |
-
</div>
|
| 817 |
-
</div>
|
| 818 |
-
</div>
|
| 819 |
-
</div>
|
| 820 |
-
</div>
|
| 821 |
-
<h2>Instance Method Details</h2>
|
| 822 |
-
<div class='methods'>
|
| 823 |
-
<div class='method_details'>
|
| 824 |
-
<p class='signature' id='domIsLoaded-instance'>
|
| 825 |
-
- (void) <strong>domIsLoaded</strong>(cb)
|
| 826 |
-
</p>
|
| 827 |
-
<div class='docstring'>
|
| 828 |
-
<p>Checks to ensure the DOM is loaded. Ensures the callback is always fired, even
|
| 829 |
-
if the DOM is already loaded before it's invoked. The callback is also always
|
| 830 |
-
called asynchronously.</p>
|
| 831 |
-
</div>
|
| 832 |
-
<div class='tags'>
|
| 833 |
-
<h3>Parameters:</h3>
|
| 834 |
-
<ul class='param'>
|
| 835 |
-
<li>
|
| 836 |
-
<span class='name'>cb</span>
|
| 837 |
-
<span class='type'>
|
| 838 |
-
(<tt>Function</tt>)
|
| 839 |
-
</span>
|
| 840 |
-
—
|
| 841 |
-
<span class='desc'>The callback function to fire when the DOM is ready.</span>
|
| 842 |
-
</li>
|
| 843 |
-
</ul>
|
| 844 |
-
</div>
|
| 845 |
-
</div>
|
| 846 |
-
<div class='method_details'>
|
| 847 |
-
<p class='signature' id='parseArguments-instance'>
|
| 848 |
-
- (void) <strong>parseArguments</strong>(args)
|
| 849 |
-
</p>
|
| 850 |
-
<div class='docstring'>
|
| 851 |
-
<p>Parses the arguments given to the Caman function, and sets the appropriate
|
| 852 |
-
properties on this instance.</p><p>@params [Array] args Array of arguments passed to Caman.</p>
|
| 853 |
-
</div>
|
| 854 |
-
<div class='tags'>
|
| 855 |
-
</div>
|
| 856 |
-
</div>
|
| 857 |
-
<div class='method_details'>
|
| 858 |
-
<p class='signature' id='setInitObject-instance'>
|
| 859 |
-
- (void) <strong>setInitObject</strong>(obj)
|
| 860 |
-
</p>
|
| 861 |
-
<div class='docstring'>
|
| 862 |
-
<p>Sets the initialization object for this instance.</p>
|
| 863 |
-
</div>
|
| 864 |
-
<div class='tags'>
|
| 865 |
-
<h3>Parameters:</h3>
|
| 866 |
-
<ul class='param'>
|
| 867 |
-
<li>
|
| 868 |
-
<span class='name'>obj</span>
|
| 869 |
-
<span class='type'>
|
| 870 |
-
(<tt>Object, String</tt>)
|
| 871 |
-
</span>
|
| 872 |
-
—
|
| 873 |
-
<span class='desc'>The initialization argument.</span>
|
| 874 |
-
</li>
|
| 875 |
-
</ul>
|
| 876 |
-
</div>
|
| 877 |
-
</div>
|
| 878 |
-
<div class='method_details'>
|
| 879 |
-
<p class='signature' id='setup-instance'>
|
| 880 |
-
- (void) <strong>setup</strong>()
|
| 881 |
-
</p>
|
| 882 |
-
<div class='docstring'>
|
| 883 |
-
<p>Begins the setup process, which differs depending on whether we're in NodeJS,
|
| 884 |
-
or if an image or canvas object was provided.</p>
|
| 885 |
-
</div>
|
| 886 |
-
<div class='tags'>
|
| 887 |
-
</div>
|
| 888 |
-
</div>
|
| 889 |
-
<div class='method_details'>
|
| 890 |
-
<p class='signature' id='initNode-instance'>
|
| 891 |
-
- (void) <strong>initNode</strong>()
|
| 892 |
-
</p>
|
| 893 |
-
<div class='docstring'>
|
| 894 |
-
<p>Initialization function for NodeJS.</p>
|
| 895 |
-
</div>
|
| 896 |
-
<div class='tags'>
|
| 897 |
-
</div>
|
| 898 |
-
</div>
|
| 899 |
-
<div class='method_details'>
|
| 900 |
-
<p class='signature' id='readFromHttp-instance'>
|
| 901 |
-
- (void) <strong>readFromHttp</strong>(url, callback)
|
| 902 |
-
</p>
|
| 903 |
-
<div class='tags'>
|
| 904 |
-
</div>
|
| 905 |
-
</div>
|
| 906 |
-
<div class='method_details'>
|
| 907 |
-
<p class='signature' id='nodeFileReady-instance'>
|
| 908 |
-
- (void) <strong>nodeFileReady</strong>(err, data)
|
| 909 |
-
(bound)
|
| 910 |
-
</p>
|
| 911 |
-
<div class='tags'>
|
| 912 |
-
</div>
|
| 913 |
-
</div>
|
| 914 |
-
<div class='method_details'>
|
| 915 |
-
<p class='signature' id='initImage-instance'>
|
| 916 |
-
- (void) <strong>initImage</strong>()
|
| 917 |
-
</p>
|
| 918 |
-
<div class='docstring'>
|
| 919 |
-
<p>Initialization function for the browser and image objects.</p>
|
| 920 |
-
</div>
|
| 921 |
-
<div class='tags'>
|
| 922 |
-
</div>
|
| 923 |
-
</div>
|
| 924 |
-
<div class='method_details'>
|
| 925 |
-
<p class='signature' id='initCanvas-instance'>
|
| 926 |
-
- (void) <strong>initCanvas</strong>()
|
| 927 |
-
</p>
|
| 928 |
-
<div class='docstring'>
|
| 929 |
-
<p>Initialization function for the browser and canvas objects.</p>
|
| 930 |
-
</div>
|
| 931 |
-
<div class='tags'>
|
| 932 |
-
</div>
|
| 933 |
-
</div>
|
| 934 |
-
<div class='method_details'>
|
| 935 |
-
<p class='signature' id='imageAdjustments-instance'>
|
| 936 |
-
- (void) <strong>imageAdjustments</strong>()
|
| 937 |
-
</p>
|
| 938 |
-
<div class='docstring'>
|
| 939 |
-
<p>Automatically check for a HiDPI capable screen and swap out the image if possible.
|
| 940 |
-
Also checks the image URL to see if it's a cross-domain request, and attempt to
|
| 941 |
-
proxy the image. If a cross-origin type is configured, the proxy will be ignored.</p>
|
| 942 |
-
</div>
|
| 943 |
-
<div class='tags'>
|
| 944 |
-
</div>
|
| 945 |
-
</div>
|
| 946 |
-
<div class='method_details'>
|
| 947 |
-
<p class='signature' id='waitForImageLoaded-instance'>
|
| 948 |
-
- (void) <strong>waitForImageLoaded</strong>()
|
| 949 |
-
</p>
|
| 950 |
-
<div class='docstring'>
|
| 951 |
-
<p>Utility function that fires <a href='../classes/Caman.html#imageLoaded-instance'>Caman#imageLoaded</a> once the image is finished loading.</p>
|
| 952 |
-
</div>
|
| 953 |
-
<div class='tags'>
|
| 954 |
-
</div>
|
| 955 |
-
</div>
|
| 956 |
-
<div class='method_details'>
|
| 957 |
-
<p class='signature' id='isImageLoaded-instance'>
|
| 958 |
-
- (Boolean) <strong>isImageLoaded</strong>()
|
| 959 |
-
</p>
|
| 960 |
-
<div class='docstring'>
|
| 961 |
-
<p>Checks if the given image is finished loading.</p>
|
| 962 |
-
</div>
|
| 963 |
-
<div class='tags'>
|
| 964 |
-
<h3>Returns:</h3>
|
| 965 |
-
<ul class='return'>
|
| 966 |
-
<li>
|
| 967 |
-
<span class='type'></span>
|
| 968 |
-
(<tt>Boolean</tt>)
|
| 969 |
-
—
|
| 970 |
-
<span class='desc'>Is the image loaded?</span>
|
| 971 |
-
</li>
|
| 972 |
-
</ul>
|
| 973 |
-
</div>
|
| 974 |
-
</div>
|
| 975 |
-
<div class='method_details'>
|
| 976 |
-
<p class='signature' id='imageWidth-instance'>
|
| 977 |
-
- (Number) <strong>imageWidth</strong>()
|
| 978 |
-
</p>
|
| 979 |
-
<div class='docstring'>
|
| 980 |
-
<p>Internet Explorer has issues figuring out image dimensions when they aren't
|
| 981 |
-
explicitly defined, apparently. We check the normal width/height properties first,
|
| 982 |
-
but fall back to natural sizes if they are 0.</p>
|
| 983 |
-
</div>
|
| 984 |
-
<div class='tags'>
|
| 985 |
-
<h3>Returns:</h3>
|
| 986 |
-
<ul class='return'>
|
| 987 |
-
<li>
|
| 988 |
-
<span class='type'></span>
|
| 989 |
-
(<tt>Number</tt>)
|
| 990 |
-
—
|
| 991 |
-
<span class='desc'>Width of the initialization image.</span>
|
| 992 |
-
</li>
|
| 993 |
-
</ul>
|
| 994 |
-
</div>
|
| 995 |
-
</div>
|
| 996 |
-
<div class='method_details'>
|
| 997 |
-
<p class='signature' id='imageHeight-instance'>
|
| 998 |
-
- (Number) <strong>imageHeight</strong>()
|
| 999 |
-
</p>
|
| 1000 |
-
<div class='tags'>
|
| 1001 |
-
<h3>Returns:</h3>
|
| 1002 |
-
<ul class='return'>
|
| 1003 |
-
<li>
|
| 1004 |
-
<span class='type'></span>
|
| 1005 |
-
(<tt>Number</tt>)
|
| 1006 |
-
—
|
| 1007 |
-
<span class='desc'>Height of the initialization image.</span>
|
| 1008 |
-
</li>
|
| 1009 |
-
</ul>
|
| 1010 |
-
<h3>See also:</h3>
|
| 1011 |
-
<ul class='see'>
|
| 1012 |
-
<li>
|
| 1013 |
-
<a href='../classes/Caman.html#imageWidth-instance'>Caman#imageWidth</a>
|
| 1014 |
-
</li>
|
| 1015 |
-
</ul>
|
| 1016 |
-
</div>
|
| 1017 |
-
</div>
|
| 1018 |
-
<div class='method_details'>
|
| 1019 |
-
<p class='signature' id='imageLoaded-instance'>
|
| 1020 |
-
- (void) <strong>imageLoaded</strong>()
|
| 1021 |
-
</p>
|
| 1022 |
-
<div class='docstring'>
|
| 1023 |
-
<p>Function that is called once the initialization image is finished loading.
|
| 1024 |
-
We make sure that the canvas dimensions are properly set here.</p>
|
| 1025 |
-
</div>
|
| 1026 |
-
<div class='tags'>
|
| 1027 |
-
</div>
|
| 1028 |
-
</div>
|
| 1029 |
-
<div class='method_details'>
|
| 1030 |
-
<p class='signature' id='finishInit-instance'>
|
| 1031 |
-
- (void) <strong>finishInit</strong>()
|
| 1032 |
-
</p>
|
| 1033 |
-
<div class='docstring'>
|
| 1034 |
-
<p>Final step of initialization. We finish setting up our canvas element, and we
|
| 1035 |
-
draw the image to the canvas (if applicable).</p>
|
| 1036 |
-
</div>
|
| 1037 |
-
<div class='tags'>
|
| 1038 |
-
</div>
|
| 1039 |
-
</div>
|
| 1040 |
-
<div class='method_details'>
|
| 1041 |
-
<p class='signature' id='reloadCanvasData-instance'>
|
| 1042 |
-
- (void) <strong>reloadCanvasData</strong>()
|
| 1043 |
-
</p>
|
| 1044 |
-
<div class='docstring'>
|
| 1045 |
-
<p>If you have a separate context reference to this canvas outside of CamanJS
|
| 1046 |
-
and you make a change to the canvas outside of CamanJS, you will have to call
|
| 1047 |
-
this function to update our context reference to include those changes.</p>
|
| 1048 |
-
</div>
|
| 1049 |
-
<div class='tags'>
|
| 1050 |
-
</div>
|
| 1051 |
-
</div>
|
| 1052 |
-
<div class='method_details'>
|
| 1053 |
-
<p class='signature' id='resetOriginalPixelData-instance'>
|
| 1054 |
-
- (void) <strong>resetOriginalPixelData</strong>()
|
| 1055 |
-
</p>
|
| 1056 |
-
<div class='docstring'>
|
| 1057 |
-
<p>Reset the canvas pixels to the original state at initialization.</p>
|
| 1058 |
-
</div>
|
| 1059 |
-
<div class='tags'>
|
| 1060 |
-
</div>
|
| 1061 |
-
</div>
|
| 1062 |
-
<div class='method_details'>
|
| 1063 |
-
<p class='signature' id='hasId-instance'>
|
| 1064 |
-
- (Boolean) <strong>hasId</strong>()
|
| 1065 |
-
</p>
|
| 1066 |
-
<div class='docstring'>
|
| 1067 |
-
<p>Does this instance have an ID assigned?</p>
|
| 1068 |
-
</div>
|
| 1069 |
-
<div class='tags'>
|
| 1070 |
-
<h3>Returns:</h3>
|
| 1071 |
-
<ul class='return'>
|
| 1072 |
-
<li>
|
| 1073 |
-
<span class='type'></span>
|
| 1074 |
-
(<tt>Boolean</tt>)
|
| 1075 |
-
—
|
| 1076 |
-
<span class='desc'>Existance of an ID.</span>
|
| 1077 |
-
</li>
|
| 1078 |
-
</ul>
|
| 1079 |
-
</div>
|
| 1080 |
-
</div>
|
| 1081 |
-
<div class='method_details'>
|
| 1082 |
-
<p class='signature' id='assignId-instance'>
|
| 1083 |
-
- (void) <strong>assignId</strong>()
|
| 1084 |
-
</p>
|
| 1085 |
-
<div class='docstring'>
|
| 1086 |
-
<p>Assign a unique ID to this instance.</p>
|
| 1087 |
-
</div>
|
| 1088 |
-
<div class='tags'>
|
| 1089 |
-
</div>
|
| 1090 |
-
</div>
|
| 1091 |
-
<div class='method_details'>
|
| 1092 |
-
<p class='signature' id='hiDPIDisabled-instance'>
|
| 1093 |
-
- (Boolean) <strong>hiDPIDisabled</strong>()
|
| 1094 |
-
</p>
|
| 1095 |
-
<div class='docstring'>
|
| 1096 |
-
<p>Is HiDPI support disabled via the HTML data attribute?</p>
|
| 1097 |
-
</div>
|
| 1098 |
-
<div class='tags'>
|
| 1099 |
-
<h3>Returns:</h3>
|
| 1100 |
-
<ul class='return'>
|
| 1101 |
-
<li>
|
| 1102 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 1103 |
-
</ul>
|
| 1104 |
-
</div>
|
| 1105 |
-
</div>
|
| 1106 |
-
<div class='method_details'>
|
| 1107 |
-
<p class='signature' id='hiDPIAdjustments-instance'>
|
| 1108 |
-
- (void) <strong>hiDPIAdjustments</strong>()
|
| 1109 |
-
</p>
|
| 1110 |
-
<div class='docstring'>
|
| 1111 |
-
<p>Perform HiDPI adjustments to the canvas. This consists of changing the
|
| 1112 |
-
scaling and the dimensions to match that of the display.</p>
|
| 1113 |
-
</div>
|
| 1114 |
-
<div class='tags'>
|
| 1115 |
-
</div>
|
| 1116 |
-
</div>
|
| 1117 |
-
<div class='method_details'>
|
| 1118 |
-
<p class='signature' id='hiDPIRatio-instance'>
|
| 1119 |
-
- (Number) <strong>hiDPIRatio</strong>()
|
| 1120 |
-
</p>
|
| 1121 |
-
<div class='docstring'>
|
| 1122 |
-
<p>Calculate the HiDPI ratio of this display based on the backing store
|
| 1123 |
-
and the pixel ratio.</p>
|
| 1124 |
-
</div>
|
| 1125 |
-
<div class='tags'>
|
| 1126 |
-
<h3>Returns:</h3>
|
| 1127 |
-
<ul class='return'>
|
| 1128 |
-
<li>
|
| 1129 |
-
<span class='type'></span>
|
| 1130 |
-
(<tt>Number</tt>)
|
| 1131 |
-
—
|
| 1132 |
-
<span class='desc'>The HiDPI pixel ratio.</span>
|
| 1133 |
-
</li>
|
| 1134 |
-
</ul>
|
| 1135 |
-
</div>
|
| 1136 |
-
</div>
|
| 1137 |
-
<div class='method_details'>
|
| 1138 |
-
<p class='signature' id='hiDPICapable-instance'>
|
| 1139 |
-
- (Boolean) <strong>hiDPICapable</strong>()
|
| 1140 |
-
</p>
|
| 1141 |
-
<div class='docstring'>
|
| 1142 |
-
<p>Is this display HiDPI capable?</p>
|
| 1143 |
-
</div>
|
| 1144 |
-
<div class='tags'>
|
| 1145 |
-
<h3>Returns:</h3>
|
| 1146 |
-
<ul class='return'>
|
| 1147 |
-
<li>
|
| 1148 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 1149 |
-
</ul>
|
| 1150 |
-
</div>
|
| 1151 |
-
</div>
|
| 1152 |
-
<div class='method_details'>
|
| 1153 |
-
<p class='signature' id='needsHiDPISwap-instance'>
|
| 1154 |
-
- (Boolean) <strong>needsHiDPISwap</strong>()
|
| 1155 |
-
</p>
|
| 1156 |
-
<div class='docstring'>
|
| 1157 |
-
<p>Do we need to perform an image swap with a HiDPI image?</p>
|
| 1158 |
-
</div>
|
| 1159 |
-
<div class='tags'>
|
| 1160 |
-
<h3>Returns:</h3>
|
| 1161 |
-
<ul class='return'>
|
| 1162 |
-
<li>
|
| 1163 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 1164 |
-
</ul>
|
| 1165 |
-
</div>
|
| 1166 |
-
</div>
|
| 1167 |
-
<div class='method_details'>
|
| 1168 |
-
<p class='signature' id='hiDPIReplacement-instance'>
|
| 1169 |
-
- (String) <strong>hiDPIReplacement</strong>()
|
| 1170 |
-
</p>
|
| 1171 |
-
<div class='docstring'>
|
| 1172 |
-
<p>Gets the HiDPI replacement for the initialization image.</p>
|
| 1173 |
-
</div>
|
| 1174 |
-
<div class='tags'>
|
| 1175 |
-
<h3>Returns:</h3>
|
| 1176 |
-
<ul class='return'>
|
| 1177 |
-
<li>
|
| 1178 |
-
<span class='type'></span>
|
| 1179 |
-
(<tt>String</tt>)
|
| 1180 |
-
—
|
| 1181 |
-
<span class='desc'>URL to the HiDPI version.</span>
|
| 1182 |
-
</li>
|
| 1183 |
-
</ul>
|
| 1184 |
-
</div>
|
| 1185 |
-
</div>
|
| 1186 |
-
<div class='method_details'>
|
| 1187 |
-
<p class='signature' id='replaceCanvas-instance'>
|
| 1188 |
-
- (void) <strong>replaceCanvas</strong>(newCanvas)
|
| 1189 |
-
</p>
|
| 1190 |
-
<div class='docstring'>
|
| 1191 |
-
<p>Replaces the current canvas with a new one, and properly updates all of the
|
| 1192 |
-
applicable references for this instance.</p>
|
| 1193 |
-
</div>
|
| 1194 |
-
<div class='tags'>
|
| 1195 |
-
<h3>Parameters:</h3>
|
| 1196 |
-
<ul class='param'>
|
| 1197 |
-
<li>
|
| 1198 |
-
<span class='name'>newCanvas</span>
|
| 1199 |
-
<span class='type'>
|
| 1200 |
-
(<tt>DOMObject</tt>)
|
| 1201 |
-
</span>
|
| 1202 |
-
—
|
| 1203 |
-
<span class='desc'>The canvas to swap into this instance.</span>
|
| 1204 |
-
</li>
|
| 1205 |
-
</ul>
|
| 1206 |
-
</div>
|
| 1207 |
-
</div>
|
| 1208 |
-
<div class='method_details'>
|
| 1209 |
-
<p class='signature' id='render-instance'>
|
| 1210 |
-
- (void) <strong>render</strong>(callback = function() {})
|
| 1211 |
-
</p>
|
| 1212 |
-
<div class='docstring'>
|
| 1213 |
-
<p>Begins the rendering process. This will execute all of the filter functions
|
| 1214 |
-
called either since initialization or the previous render.</p>
|
| 1215 |
-
</div>
|
| 1216 |
-
<div class='tags'>
|
| 1217 |
-
<h3>Parameters:</h3>
|
| 1218 |
-
<ul class='param'>
|
| 1219 |
-
<li>
|
| 1220 |
-
<span class='name'>callback</span>
|
| 1221 |
-
<span class='type'>
|
| 1222 |
-
(<tt>Function</tt>)
|
| 1223 |
-
</span>
|
| 1224 |
-
—
|
| 1225 |
-
<span class='desc'>Function to call when rendering is finished.</span>
|
| 1226 |
-
</li>
|
| 1227 |
-
</ul>
|
| 1228 |
-
</div>
|
| 1229 |
-
</div>
|
| 1230 |
-
<div class='method_details'>
|
| 1231 |
-
<p class='signature' id='revert-instance'>
|
| 1232 |
-
- (void) <strong>revert</strong>(updateContext = true)
|
| 1233 |
-
</p>
|
| 1234 |
-
<div class='docstring'>
|
| 1235 |
-
<p>Reverts the canvas back to it's original state while
|
| 1236 |
-
maintaining any cropped or resized dimensions.</p>
|
| 1237 |
-
</div>
|
| 1238 |
-
<div class='tags'>
|
| 1239 |
-
<h3>Parameters:</h3>
|
| 1240 |
-
<ul class='param'>
|
| 1241 |
-
<li>
|
| 1242 |
-
<span class='name'>updateContext</span>
|
| 1243 |
-
<span class='type'>
|
| 1244 |
-
(<tt>Boolean</tt>)
|
| 1245 |
-
</span>
|
| 1246 |
-
—
|
| 1247 |
-
<span class='desc'>Should we apply the reverted pixel data to the canvas context thus triggering a re-render by the browser?</span>
|
| 1248 |
-
</li>
|
| 1249 |
-
</ul>
|
| 1250 |
-
</div>
|
| 1251 |
-
</div>
|
| 1252 |
-
<div class='method_details'>
|
| 1253 |
-
<p class='signature' id='reset-instance'>
|
| 1254 |
-
- (void) <strong>reset</strong>()
|
| 1255 |
-
</p>
|
| 1256 |
-
<div class='docstring'>
|
| 1257 |
-
<p>Completely resets the canvas back to it's original state.
|
| 1258 |
-
Any size adjustments will also be reset.</p>
|
| 1259 |
-
</div>
|
| 1260 |
-
<div class='tags'>
|
| 1261 |
-
</div>
|
| 1262 |
-
</div>
|
| 1263 |
-
<div class='method_details'>
|
| 1264 |
-
<p class='signature' id='originalVisiblePixels-instance'>
|
| 1265 |
-
- (Array) <strong>originalVisiblePixels</strong>()
|
| 1266 |
-
</p>
|
| 1267 |
-
<div class='docstring'>
|
| 1268 |
-
<p>Returns the original pixel data while maintaining any
|
| 1269 |
-
cropping or resizing that may have occured.
|
| 1270 |
-
<strong>Warning</strong>: this is currently in beta status.</p>
|
| 1271 |
-
</div>
|
| 1272 |
-
<div class='tags'>
|
| 1273 |
-
<h3>Returns:</h3>
|
| 1274 |
-
<ul class='return'>
|
| 1275 |
-
<li>
|
| 1276 |
-
<span class='type'></span>
|
| 1277 |
-
(<tt>Array</tt>)
|
| 1278 |
-
—
|
| 1279 |
-
<span class='desc'>Original pixel values still visible after cropping or resizing.</span>
|
| 1280 |
-
</li>
|
| 1281 |
-
</ul>
|
| 1282 |
-
</div>
|
| 1283 |
-
</div>
|
| 1284 |
-
<div class='method_details'>
|
| 1285 |
-
<p class='signature' id='process-instance'>
|
| 1286 |
-
- (Caman) <strong>process</strong>(name, processFn)
|
| 1287 |
-
</p>
|
| 1288 |
-
<div class='docstring'>
|
| 1289 |
-
<p>Pushes the filter callback that modifies the RGBA object into the
|
| 1290 |
-
render queue.</p>
|
| 1291 |
-
</div>
|
| 1292 |
-
<div class='tags'>
|
| 1293 |
-
<h3>Parameters:</h3>
|
| 1294 |
-
<ul class='param'>
|
| 1295 |
-
<li>
|
| 1296 |
-
<span class='name'>name</span>
|
| 1297 |
-
<span class='type'>
|
| 1298 |
-
(<tt>String</tt>)
|
| 1299 |
-
</span>
|
| 1300 |
-
—
|
| 1301 |
-
<span class='desc'>Name of the filter function.</span>
|
| 1302 |
-
</li>
|
| 1303 |
-
<li>
|
| 1304 |
-
<span class='name'>processFn</span>
|
| 1305 |
-
<span class='type'>
|
| 1306 |
-
(<tt>Function</tt>)
|
| 1307 |
-
</span>
|
| 1308 |
-
—
|
| 1309 |
-
<span class='desc'>The Filter function.</span>
|
| 1310 |
-
</li>
|
| 1311 |
-
</ul>
|
| 1312 |
-
<h3>Returns:</h3>
|
| 1313 |
-
<ul class='return'>
|
| 1314 |
-
<li>
|
| 1315 |
-
<span class='type'></span><tt><a href='../classes/Caman.html'>Caman</a></tt></li>
|
| 1316 |
-
</ul>
|
| 1317 |
-
</div>
|
| 1318 |
-
</div>
|
| 1319 |
-
<div class='method_details'>
|
| 1320 |
-
<p class='signature' id='processKernel-instance'>
|
| 1321 |
-
- (Caman) <strong>processKernel</strong>(name, adjust, divisor = null, bias = 0)
|
| 1322 |
-
</p>
|
| 1323 |
-
<div class='docstring'>
|
| 1324 |
-
<p>Pushes the kernel into the render queue.</p>
|
| 1325 |
-
</div>
|
| 1326 |
-
<div class='tags'>
|
| 1327 |
-
<h3>Parameters:</h3>
|
| 1328 |
-
<ul class='param'>
|
| 1329 |
-
<li>
|
| 1330 |
-
<span class='name'>name</span>
|
| 1331 |
-
<span class='type'>
|
| 1332 |
-
(<tt>String</tt>)
|
| 1333 |
-
</span>
|
| 1334 |
-
—
|
| 1335 |
-
<span class='desc'>The name of the kernel.</span>
|
| 1336 |
-
</li>
|
| 1337 |
-
<li>
|
| 1338 |
-
<span class='name'>adjust</span>
|
| 1339 |
-
<span class='type'>
|
| 1340 |
-
(<tt>Array</tt>)
|
| 1341 |
-
</span>
|
| 1342 |
-
—
|
| 1343 |
-
<span class='desc'>The convolution kernel represented as a 1D array.</span>
|
| 1344 |
-
</li>
|
| 1345 |
-
<li>
|
| 1346 |
-
<span class='name'>divisor</span>
|
| 1347 |
-
<span class='type'>
|
| 1348 |
-
(<tt>Number</tt>)
|
| 1349 |
-
</span>
|
| 1350 |
-
—
|
| 1351 |
-
<span class='desc'>The divisor for the convolution.</span>
|
| 1352 |
-
</li>
|
| 1353 |
-
<li>
|
| 1354 |
-
<span class='name'>bias</span>
|
| 1355 |
-
<span class='type'>
|
| 1356 |
-
(<tt>Number</tt>)
|
| 1357 |
-
</span>
|
| 1358 |
-
—
|
| 1359 |
-
<span class='desc'>The bias for the convolution.</span>
|
| 1360 |
-
</li>
|
| 1361 |
-
</ul>
|
| 1362 |
-
<h3>Returns:</h3>
|
| 1363 |
-
<ul class='return'>
|
| 1364 |
-
<li>
|
| 1365 |
-
<span class='type'></span><tt><a href='../classes/Caman.html'>Caman</a></tt></li>
|
| 1366 |
-
</ul>
|
| 1367 |
-
</div>
|
| 1368 |
-
</div>
|
| 1369 |
-
<div class='method_details'>
|
| 1370 |
-
<p class='signature' id='processPlugin-instance'>
|
| 1371 |
-
- (Caman) <strong>processPlugin</strong>(plugin, args)
|
| 1372 |
-
</p>
|
| 1373 |
-
<div class='docstring'>
|
| 1374 |
-
<p>Adds a standalone plugin into the render queue.</p>
|
| 1375 |
-
</div>
|
| 1376 |
-
<div class='tags'>
|
| 1377 |
-
<h3>Parameters:</h3>
|
| 1378 |
-
<ul class='param'>
|
| 1379 |
-
<li>
|
| 1380 |
-
<span class='name'>plugin</span>
|
| 1381 |
-
<span class='type'>
|
| 1382 |
-
(<tt>String</tt>)
|
| 1383 |
-
</span>
|
| 1384 |
-
—
|
| 1385 |
-
<span class='desc'>Name of the plugin.</span>
|
| 1386 |
-
</li>
|
| 1387 |
-
<li>
|
| 1388 |
-
<span class='name'>args</span>
|
| 1389 |
-
<span class='type'>
|
| 1390 |
-
(<tt>Array</tt>)
|
| 1391 |
-
</span>
|
| 1392 |
-
—
|
| 1393 |
-
<span class='desc'>Array of arguments to pass to the plugin.</span>
|
| 1394 |
-
</li>
|
| 1395 |
-
</ul>
|
| 1396 |
-
<h3>Returns:</h3>
|
| 1397 |
-
<ul class='return'>
|
| 1398 |
-
<li>
|
| 1399 |
-
<span class='type'></span><tt><a href='../classes/Caman.html'>Caman</a></tt></li>
|
| 1400 |
-
</ul>
|
| 1401 |
-
</div>
|
| 1402 |
-
</div>
|
| 1403 |
-
<div class='method_details'>
|
| 1404 |
-
<p class='signature' id='newLayer-instance'>
|
| 1405 |
-
- (Caman) <strong>newLayer</strong>(callback)
|
| 1406 |
-
</p>
|
| 1407 |
-
<div class='docstring'>
|
| 1408 |
-
<p>Pushes a new layer operation into the render queue and calls the layer
|
| 1409 |
-
callback.</p>
|
| 1410 |
-
</div>
|
| 1411 |
-
<div class='tags'>
|
| 1412 |
-
<h3>Parameters:</h3>
|
| 1413 |
-
<ul class='param'>
|
| 1414 |
-
<li>
|
| 1415 |
-
<span class='name'>callback</span>
|
| 1416 |
-
<span class='type'>
|
| 1417 |
-
(<tt>Function</tt>)
|
| 1418 |
-
</span>
|
| 1419 |
-
—
|
| 1420 |
-
<span class='desc'>Function that is executed within the context of the layer. All filter and adjustment functions for the layer will be executed inside of this function.</span>
|
| 1421 |
-
</li>
|
| 1422 |
-
</ul>
|
| 1423 |
-
<h3>Returns:</h3>
|
| 1424 |
-
<ul class='return'>
|
| 1425 |
-
<li>
|
| 1426 |
-
<span class='type'></span><tt><a href='../classes/Caman.html'>Caman</a></tt></li>
|
| 1427 |
-
</ul>
|
| 1428 |
-
</div>
|
| 1429 |
-
</div>
|
| 1430 |
-
<div class='method_details'>
|
| 1431 |
-
<p class='signature' id='executeLayer-instance'>
|
| 1432 |
-
- (void) <strong>executeLayer</strong>(layer)
|
| 1433 |
-
</p>
|
| 1434 |
-
<div class='docstring'>
|
| 1435 |
-
<p>Pushes the layer context and moves to the next operation.</p>
|
| 1436 |
-
</div>
|
| 1437 |
-
<div class='tags'>
|
| 1438 |
-
<h3>Parameters:</h3>
|
| 1439 |
-
<ul class='param'>
|
| 1440 |
-
<li>
|
| 1441 |
-
<span class='name'>layer</span>
|
| 1442 |
-
<span class='type'>
|
| 1443 |
-
(<tt>Layer</tt>)
|
| 1444 |
-
</span>
|
| 1445 |
-
—
|
| 1446 |
-
<span class='desc'>The layer to execute.</span>
|
| 1447 |
-
</li>
|
| 1448 |
-
</ul>
|
| 1449 |
-
</div>
|
| 1450 |
-
</div>
|
| 1451 |
-
<div class='method_details'>
|
| 1452 |
-
<p class='signature' id='pushContext-instance'>
|
| 1453 |
-
- (void) <strong>pushContext</strong>(layer)
|
| 1454 |
-
</p>
|
| 1455 |
-
<div class='docstring'>
|
| 1456 |
-
<p>Set all of the relevant data to the new layer.</p>
|
| 1457 |
-
</div>
|
| 1458 |
-
<div class='tags'>
|
| 1459 |
-
<h3>Parameters:</h3>
|
| 1460 |
-
<ul class='param'>
|
| 1461 |
-
<li>
|
| 1462 |
-
<span class='name'>layer</span>
|
| 1463 |
-
<span class='type'>
|
| 1464 |
-
(<tt>Layer</tt>)
|
| 1465 |
-
</span>
|
| 1466 |
-
—
|
| 1467 |
-
<span class='desc'>The layer whose context we want to switch to.</span>
|
| 1468 |
-
</li>
|
| 1469 |
-
</ul>
|
| 1470 |
-
</div>
|
| 1471 |
-
</div>
|
| 1472 |
-
<div class='method_details'>
|
| 1473 |
-
<p class='signature' id='popContext-instance'>
|
| 1474 |
-
- (void) <strong>popContext</strong>()
|
| 1475 |
-
</p>
|
| 1476 |
-
<div class='docstring'>
|
| 1477 |
-
<p>Restore the previous layer context.</p>
|
| 1478 |
-
</div>
|
| 1479 |
-
<div class='tags'>
|
| 1480 |
-
</div>
|
| 1481 |
-
</div>
|
| 1482 |
-
<div class='method_details'>
|
| 1483 |
-
<p class='signature' id='applyCurrentLayer-instance'>
|
| 1484 |
-
- (void) <strong>applyCurrentLayer</strong>()
|
| 1485 |
-
</p>
|
| 1486 |
-
<div class='docstring'>
|
| 1487 |
-
<p>Applies the current layer to its parent layer.</p>
|
| 1488 |
-
</div>
|
| 1489 |
-
<div class='tags'>
|
| 1490 |
-
</div>
|
| 1491 |
-
</div>
|
| 1492 |
-
</div>
|
| 1493 |
-
</div>
|
| 1494 |
-
<div id='footer'>
|
| 1495 |
-
Generated on
|
| 1496 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 1497 |
-
by
|
| 1498 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 1499 |
-
v1.7.0
|
| 1500 |
-
(Node.js v0.10.21).
|
| 1501 |
-
✲
|
| 1502 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 1503 |
-
✲
|
| 1504 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 1505 |
-
✲
|
| 1506 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 1507 |
-
</div>
|
| 1508 |
-
</body>
|
| 1509 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Analyze.html
DELETED
|
@@ -1,197 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Analyze</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Analyze
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/analyze.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Various image analysis methods</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Instance Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#constructor-instance'>
|
| 130 |
-
- (void) <strong>constructor</strong>(c)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='constructor note title'>Constructor</span>
|
| 134 |
-
<span class='desc'>
|
| 135 |
-
|
| 136 |
-
</span>
|
| 137 |
-
</li>
|
| 138 |
-
<li>
|
| 139 |
-
<span class='signature'>
|
| 140 |
-
<a href='#calculateLevels-instance'>
|
| 141 |
-
- (Object) <strong>calculateLevels</strong>()
|
| 142 |
-
</a>
|
| 143 |
-
</span>
|
| 144 |
-
<span class='desc'>
|
| 145 |
-
Calculates the number of occurances of each color value throughout the image.
|
| 146 |
-
</span>
|
| 147 |
-
</li>
|
| 148 |
-
</ul>
|
| 149 |
-
<h2>Constructor Details</h2>
|
| 150 |
-
<div class='methods'>
|
| 151 |
-
<div class='method_details'>
|
| 152 |
-
<p class='signature' id='constructor-instance'>
|
| 153 |
-
- (void) <strong>constructor</strong>(c)
|
| 154 |
-
</p>
|
| 155 |
-
<div class='tags'>
|
| 156 |
-
</div>
|
| 157 |
-
</div>
|
| 158 |
-
</div>
|
| 159 |
-
<h2>Instance Method Details</h2>
|
| 160 |
-
<div class='methods'>
|
| 161 |
-
<div class='method_details'>
|
| 162 |
-
<p class='signature' id='calculateLevels-instance'>
|
| 163 |
-
- (Object) <strong>calculateLevels</strong>()
|
| 164 |
-
</p>
|
| 165 |
-
<div class='docstring'>
|
| 166 |
-
<p>Calculates the number of occurances of each color value throughout the image.</p>
|
| 167 |
-
</div>
|
| 168 |
-
<div class='tags'>
|
| 169 |
-
<h3>Returns:</h3>
|
| 170 |
-
<ul class='return'>
|
| 171 |
-
<li>
|
| 172 |
-
<span class='type'></span>
|
| 173 |
-
(<tt>Object</tt>)
|
| 174 |
-
—
|
| 175 |
-
<span class='desc'>Hash of RGB channels and the occurance of each value</span>
|
| 176 |
-
</li>
|
| 177 |
-
</ul>
|
| 178 |
-
</div>
|
| 179 |
-
</div>
|
| 180 |
-
</div>
|
| 181 |
-
</div>
|
| 182 |
-
<div id='footer'>
|
| 183 |
-
Generated on
|
| 184 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 185 |
-
by
|
| 186 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 187 |
-
v1.7.0
|
| 188 |
-
(Node.js v0.10.21).
|
| 189 |
-
✲
|
| 190 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 191 |
-
✲
|
| 192 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 193 |
-
✲
|
| 194 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 195 |
-
</div>
|
| 196 |
-
</body>
|
| 197 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Blender.html
DELETED
|
@@ -1,236 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Blender</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Blender
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/blender.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Built-in layer blenders. Many of these mimic Photoshop blend modes.</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#register-class'>
|
| 130 |
-
+ (void) <strong>register</strong>(name, func)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#execute-class'>
|
| 140 |
-
+ (Object) <strong>execute</strong>(name, rgbaLayer, rgbaParent)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
</ul>
|
| 148 |
-
<h2>Class Method Details</h2>
|
| 149 |
-
<div class='methods'>
|
| 150 |
-
<div class='method_details'>
|
| 151 |
-
<p class='signature' id='register-class'>
|
| 152 |
-
+ (void) <strong>register</strong>(name, func)
|
| 153 |
-
</p>
|
| 154 |
-
<div class='tags'>
|
| 155 |
-
<h3>Parameters:</h3>
|
| 156 |
-
<ul class='param'>
|
| 157 |
-
<li>
|
| 158 |
-
<span class='name'>name</span>
|
| 159 |
-
<span class='type'>
|
| 160 |
-
(<tt>String</tt>)
|
| 161 |
-
</span>
|
| 162 |
-
—
|
| 163 |
-
<span class='desc'>Name of the blender.</span>
|
| 164 |
-
</li>
|
| 165 |
-
<li>
|
| 166 |
-
<span class='name'>func</span>
|
| 167 |
-
<span class='type'>
|
| 168 |
-
(<tt>Function</tt>)
|
| 169 |
-
</span>
|
| 170 |
-
—
|
| 171 |
-
<span class='desc'>The blender function.</span>
|
| 172 |
-
</li>
|
| 173 |
-
</ul>
|
| 174 |
-
</div>
|
| 175 |
-
</div>
|
| 176 |
-
<div class='method_details'>
|
| 177 |
-
<p class='signature' id='execute-class'>
|
| 178 |
-
+ (Object) <strong>execute</strong>(name, rgbaLayer, rgbaParent)
|
| 179 |
-
</p>
|
| 180 |
-
<div class='tags'>
|
| 181 |
-
<h3>Parameters:</h3>
|
| 182 |
-
<ul class='param'>
|
| 183 |
-
<li>
|
| 184 |
-
<span class='name'>name</span>
|
| 185 |
-
<span class='type'>
|
| 186 |
-
(<tt>String</tt>)
|
| 187 |
-
</span>
|
| 188 |
-
—
|
| 189 |
-
<span class='desc'>Name of the blending function to invoke.</span>
|
| 190 |
-
</li>
|
| 191 |
-
<li>
|
| 192 |
-
<span class='name'>rgbaLayer</span>
|
| 193 |
-
<span class='type'>
|
| 194 |
-
(<tt>Object</tt>)
|
| 195 |
-
</span>
|
| 196 |
-
—
|
| 197 |
-
<span class='desc'>RGBA object of the current pixel from the layer.</span>
|
| 198 |
-
</li>
|
| 199 |
-
<li>
|
| 200 |
-
<span class='name'>rgbaParent</span>
|
| 201 |
-
<span class='type'>
|
| 202 |
-
(<tt>Object</tt>)
|
| 203 |
-
</span>
|
| 204 |
-
—
|
| 205 |
-
<span class='desc'>RGBA object of the corresponding pixel in the parent layer.</span>
|
| 206 |
-
</li>
|
| 207 |
-
</ul>
|
| 208 |
-
<h3>Returns:</h3>
|
| 209 |
-
<ul class='return'>
|
| 210 |
-
<li>
|
| 211 |
-
<span class='type'></span>
|
| 212 |
-
(<tt>Object</tt>)
|
| 213 |
-
—
|
| 214 |
-
<span class='desc'>RGBA object representing the blended pixel.</span>
|
| 215 |
-
</li>
|
| 216 |
-
</ul>
|
| 217 |
-
</div>
|
| 218 |
-
</div>
|
| 219 |
-
</div>
|
| 220 |
-
</div>
|
| 221 |
-
<div id='footer'>
|
| 222 |
-
Generated on
|
| 223 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 224 |
-
by
|
| 225 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 226 |
-
v1.7.0
|
| 227 |
-
(Node.js v0.10.21).
|
| 228 |
-
✲
|
| 229 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 230 |
-
✲
|
| 231 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 232 |
-
✲
|
| 233 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 234 |
-
</div>
|
| 235 |
-
</body>
|
| 236 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Calculate.html
DELETED
|
@@ -1,475 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Calculate</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Calculate
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/calculate.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Various math-heavy helpers that are used throughout CamanJS.</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#distance-class'>
|
| 130 |
-
+ (Number) <strong>distance</strong>(x1, y1, x2, y2)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#randomRange-class'>
|
| 140 |
-
+ (Number) <strong>randomRange</strong>(min, max, getFloat = false)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
<li>
|
| 148 |
-
<span class='signature'>
|
| 149 |
-
<a href='#luminance-class'>
|
| 150 |
-
+ (Number) <strong>luminance</strong>(rgba)
|
| 151 |
-
</a>
|
| 152 |
-
</span>
|
| 153 |
-
<span class='desc'>
|
| 154 |
-
Calculates the luminance of a single pixel using a special weighted sum.
|
| 155 |
-
</span>
|
| 156 |
-
</li>
|
| 157 |
-
<li>
|
| 158 |
-
<span class='signature'>
|
| 159 |
-
<a href='#bezier-class'>
|
| 160 |
-
+ (Array) <strong>bezier</strong>(start, ctrl1, ctrl2, end, lowBound = 0, highBound = 255)
|
| 161 |
-
</a>
|
| 162 |
-
</span>
|
| 163 |
-
<span class='desc'>
|
| 164 |
-
Generates a bezier curve given a start and end point, with control points in between.
|
| 165 |
-
</span>
|
| 166 |
-
</li>
|
| 167 |
-
<li>
|
| 168 |
-
<span class='signature'>
|
| 169 |
-
<a href='#hermite-class'>
|
| 170 |
-
+ (Array) <strong>hermite</strong>(controlPoints, lowBound, highBound)
|
| 171 |
-
</a>
|
| 172 |
-
</span>
|
| 173 |
-
<span class='desc'>
|
| 174 |
-
Generates a hermite curve given a start and end point, with control points in between.
|
| 175 |
-
</span>
|
| 176 |
-
</li>
|
| 177 |
-
<li>
|
| 178 |
-
<span class='signature'>
|
| 179 |
-
<a href='#missingValues-class'>
|
| 180 |
-
+ (Array) <strong>missingValues</strong>(values, endX)
|
| 181 |
-
</a>
|
| 182 |
-
</span>
|
| 183 |
-
<span class='desc'>
|
| 184 |
-
Calculates possible missing values from a given value array.
|
| 185 |
-
</span>
|
| 186 |
-
</li>
|
| 187 |
-
</ul>
|
| 188 |
-
<h2>Class Method Details</h2>
|
| 189 |
-
<div class='methods'>
|
| 190 |
-
<div class='method_details'>
|
| 191 |
-
<p class='signature' id='distance-class'>
|
| 192 |
-
+ (Number) <strong>distance</strong>(x1, y1, x2, y2)
|
| 193 |
-
</p>
|
| 194 |
-
<div class='tags'>
|
| 195 |
-
<h3>Parameters:</h3>
|
| 196 |
-
<ul class='param'>
|
| 197 |
-
<li>
|
| 198 |
-
<span class='name'>x1</span>
|
| 199 |
-
<span class='type'>
|
| 200 |
-
(<tt>Number</tt>)
|
| 201 |
-
</span>
|
| 202 |
-
—
|
| 203 |
-
<span class='desc'>1st point x-coordinate.</span>
|
| 204 |
-
</li>
|
| 205 |
-
<li>
|
| 206 |
-
<span class='name'>y1</span>
|
| 207 |
-
<span class='type'>
|
| 208 |
-
(<tt>Number</tt>)
|
| 209 |
-
</span>
|
| 210 |
-
—
|
| 211 |
-
<span class='desc'>1st point y-coordinate.</span>
|
| 212 |
-
</li>
|
| 213 |
-
<li>
|
| 214 |
-
<span class='name'>x2</span>
|
| 215 |
-
<span class='type'>
|
| 216 |
-
(<tt>Number</tt>)
|
| 217 |
-
</span>
|
| 218 |
-
—
|
| 219 |
-
<span class='desc'>2nd point x-coordinate.</span>
|
| 220 |
-
</li>
|
| 221 |
-
<li>
|
| 222 |
-
<span class='name'>y2</span>
|
| 223 |
-
<span class='type'>
|
| 224 |
-
(<tt>Number</tt>)
|
| 225 |
-
</span>
|
| 226 |
-
—
|
| 227 |
-
<span class='desc'>2nd point y-coordinate.</span>
|
| 228 |
-
</li>
|
| 229 |
-
</ul>
|
| 230 |
-
<h3>Returns:</h3>
|
| 231 |
-
<ul class='return'>
|
| 232 |
-
<li>
|
| 233 |
-
<span class='type'></span>
|
| 234 |
-
(<tt>Number</tt>)
|
| 235 |
-
—
|
| 236 |
-
<span class='desc'>The distance between the two points.</span>
|
| 237 |
-
</li>
|
| 238 |
-
</ul>
|
| 239 |
-
</div>
|
| 240 |
-
</div>
|
| 241 |
-
<div class='method_details'>
|
| 242 |
-
<p class='signature' id='randomRange-class'>
|
| 243 |
-
+ (Number) <strong>randomRange</strong>(min, max, getFloat = false)
|
| 244 |
-
</p>
|
| 245 |
-
<div class='tags'>
|
| 246 |
-
<h3>Parameters:</h3>
|
| 247 |
-
<ul class='param'>
|
| 248 |
-
<li>
|
| 249 |
-
<span class='name'>min</span>
|
| 250 |
-
<span class='type'>
|
| 251 |
-
(<tt>Number</tt>)
|
| 252 |
-
</span>
|
| 253 |
-
—
|
| 254 |
-
<span class='desc'>The lower bound (inclusive).</span>
|
| 255 |
-
</li>
|
| 256 |
-
<li>
|
| 257 |
-
<span class='name'>max</span>
|
| 258 |
-
<span class='type'>
|
| 259 |
-
(<tt>Number</tt>)
|
| 260 |
-
</span>
|
| 261 |
-
—
|
| 262 |
-
<span class='desc'>The upper bound (inclusive).</span>
|
| 263 |
-
</li>
|
| 264 |
-
<li>
|
| 265 |
-
<span class='name'>getFloat</span>
|
| 266 |
-
<span class='type'>
|
| 267 |
-
(<tt>Boolean</tt>)
|
| 268 |
-
</span>
|
| 269 |
-
—
|
| 270 |
-
<span class='desc'>Return a Float or a rounded Integer?</span>
|
| 271 |
-
</li>
|
| 272 |
-
</ul>
|
| 273 |
-
<h3>Returns:</h3>
|
| 274 |
-
<ul class='return'>
|
| 275 |
-
<li>
|
| 276 |
-
<span class='type'></span>
|
| 277 |
-
(<tt>Number</tt>)
|
| 278 |
-
—
|
| 279 |
-
<span class='desc'>The pseudorandom number, either as a float or integer.</span>
|
| 280 |
-
</li>
|
| 281 |
-
</ul>
|
| 282 |
-
</div>
|
| 283 |
-
</div>
|
| 284 |
-
<div class='method_details'>
|
| 285 |
-
<p class='signature' id='luminance-class'>
|
| 286 |
-
+ (Number) <strong>luminance</strong>(rgba)
|
| 287 |
-
</p>
|
| 288 |
-
<div class='docstring'>
|
| 289 |
-
<p>Calculates the luminance of a single pixel using a special weighted sum.</p>
|
| 290 |
-
</div>
|
| 291 |
-
<div class='tags'>
|
| 292 |
-
<h3>Parameters:</h3>
|
| 293 |
-
<ul class='param'>
|
| 294 |
-
<li>
|
| 295 |
-
<span class='name'>rgba</span>
|
| 296 |
-
<span class='type'>
|
| 297 |
-
(<tt>Object</tt>)
|
| 298 |
-
</span>
|
| 299 |
-
—
|
| 300 |
-
<span class='desc'>RGBA object describing a single pixel.</span>
|
| 301 |
-
</li>
|
| 302 |
-
</ul>
|
| 303 |
-
<h3>Returns:</h3>
|
| 304 |
-
<ul class='return'>
|
| 305 |
-
<li>
|
| 306 |
-
<span class='type'></span>
|
| 307 |
-
(<tt>Number</tt>)
|
| 308 |
-
—
|
| 309 |
-
<span class='desc'>The luminance value of the pixel.</span>
|
| 310 |
-
</li>
|
| 311 |
-
</ul>
|
| 312 |
-
</div>
|
| 313 |
-
</div>
|
| 314 |
-
<div class='method_details'>
|
| 315 |
-
<p class='signature' id='bezier-class'>
|
| 316 |
-
+ (Array) <strong>bezier</strong>(start, ctrl1, ctrl2, end, lowBound = 0, highBound = 255)
|
| 317 |
-
</p>
|
| 318 |
-
<div class='docstring'>
|
| 319 |
-
<p>Generates a bezier curve given a start and end point, with control points in between.
|
| 320 |
-
Can also optionally bound the y values between a low and high bound.</p><p>This is different than most bezier curve functions because it attempts to construct it in such
|
| 321 |
-
a way that we can use it more like a simple input -> output system, or a one-to-one function.
|
| 322 |
-
In other words we can provide an input color value, and immediately receive an output modified
|
| 323 |
-
color value.</p><p>Note that, by design, this does not force X values to be in the range [0..255]. This is to
|
| 324 |
-
generalize the function a bit more. If you give it a starting X value that isn't 0, and/or a
|
| 325 |
-
ending X value that isn't 255, you may run into problems with your filter!</p>
|
| 326 |
-
</div>
|
| 327 |
-
<div class='tags'>
|
| 328 |
-
<h3>Parameters:</h3>
|
| 329 |
-
<ul class='param'>
|
| 330 |
-
<li>
|
| 331 |
-
<span class='name'>2-item</span>
|
| 332 |
-
<span class='type'>
|
| 333 |
-
(<tt>Array</tt>)
|
| 334 |
-
</span>
|
| 335 |
-
—
|
| 336 |
-
<span class='desc'>arrays describing the x, y coordinates of the control points. Minimum two.</span>
|
| 337 |
-
</li>
|
| 338 |
-
<li>
|
| 339 |
-
<span class='name'>lowBound</span>
|
| 340 |
-
<span class='type'>
|
| 341 |
-
(<tt>Number</tt>)
|
| 342 |
-
</span>
|
| 343 |
-
—
|
| 344 |
-
<span class='desc'>(optional) Minimum possible value for any y-value in the curve.</span>
|
| 345 |
-
</li>
|
| 346 |
-
<li>
|
| 347 |
-
<span class='name'>highBound</span>
|
| 348 |
-
<span class='type'>
|
| 349 |
-
(<tt>Number</tt>)
|
| 350 |
-
</span>
|
| 351 |
-
—
|
| 352 |
-
<span class='desc'>(optional) Maximum posisble value for any y-value in the curve.</span>
|
| 353 |
-
</li>
|
| 354 |
-
</ul>
|
| 355 |
-
<h3>Returns:</h3>
|
| 356 |
-
<ul class='return'>
|
| 357 |
-
<li>
|
| 358 |
-
<span class='type'></span>
|
| 359 |
-
(<tt>Array</tt>)
|
| 360 |
-
—
|
| 361 |
-
<span class='desc'>Array whose index represents every x-value between start and end, and value represents the corresponding y-value.</span>
|
| 362 |
-
</li>
|
| 363 |
-
</ul>
|
| 364 |
-
</div>
|
| 365 |
-
</div>
|
| 366 |
-
<div class='method_details'>
|
| 367 |
-
<p class='signature' id='hermite-class'>
|
| 368 |
-
+ (Array) <strong>hermite</strong>(controlPoints, lowBound, highBound)
|
| 369 |
-
</p>
|
| 370 |
-
<div class='docstring'>
|
| 371 |
-
<p>Generates a hermite curve given a start and end point, with control points in between.
|
| 372 |
-
Can also optionally bound the y values between a low and high bound.</p><p>This is different than most hermite curve functions because it attempts to construct it in such
|
| 373 |
-
a way that we can use it more like a simple input -> output system, or a one-to-one function.
|
| 374 |
-
In other words we can provide an input color value, and immediately receive an output modified
|
| 375 |
-
color value.</p><p>Note that, by design, this does not force X values to be in the range [0..255]. This is to
|
| 376 |
-
generalize the function a bit more. If you give it a starting X value that isn't 0, and/or a
|
| 377 |
-
ending X value that isn't 255, you may run into problems with your filter!</p>
|
| 378 |
-
</div>
|
| 379 |
-
<div class='tags'>
|
| 380 |
-
<h3>Parameters:</h3>
|
| 381 |
-
<ul class='param'>
|
| 382 |
-
<li>
|
| 383 |
-
<span class='name'>2-item</span>
|
| 384 |
-
<span class='type'>
|
| 385 |
-
(<tt>Array</tt>)
|
| 386 |
-
</span>
|
| 387 |
-
—
|
| 388 |
-
<span class='desc'>arrays describing the x, y coordinates of the control points. Minimum two.</span>
|
| 389 |
-
</li>
|
| 390 |
-
<li>
|
| 391 |
-
<span class='name'>lowBound</span>
|
| 392 |
-
<span class='type'>
|
| 393 |
-
(<tt>Number</tt>)
|
| 394 |
-
</span>
|
| 395 |
-
—
|
| 396 |
-
<span class='desc'>(optional) Minimum possible value for any y-value in the curve.</span>
|
| 397 |
-
</li>
|
| 398 |
-
<li>
|
| 399 |
-
<span class='name'>highBound</span>
|
| 400 |
-
<span class='type'>
|
| 401 |
-
(<tt>Number</tt>)
|
| 402 |
-
</span>
|
| 403 |
-
—
|
| 404 |
-
<span class='desc'>(optional) Maximum possible value for any y-value in the curve.</span>
|
| 405 |
-
</li>
|
| 406 |
-
</ul>
|
| 407 |
-
<h3>Returns:</h3>
|
| 408 |
-
<ul class='return'>
|
| 409 |
-
<li>
|
| 410 |
-
<span class='type'></span>
|
| 411 |
-
(<tt>Array</tt>)
|
| 412 |
-
—
|
| 413 |
-
<span class='desc'>Array whose index represents every x-value between start and end, and value represents the corresponding y-value.</span>
|
| 414 |
-
</li>
|
| 415 |
-
</ul>
|
| 416 |
-
</div>
|
| 417 |
-
</div>
|
| 418 |
-
<div class='method_details'>
|
| 419 |
-
<p class='signature' id='missingValues-class'>
|
| 420 |
-
+ (Array) <strong>missingValues</strong>(values, endX)
|
| 421 |
-
</p>
|
| 422 |
-
<div class='docstring'>
|
| 423 |
-
<p>Calculates possible missing values from a given value array. Note that this returns a copy
|
| 424 |
-
and does not mutate the original. In case no values are missing the original array is
|
| 425 |
-
returned as that is convenient.</p>
|
| 426 |
-
</div>
|
| 427 |
-
<div class='tags'>
|
| 428 |
-
<h3>Parameters:</h3>
|
| 429 |
-
<ul class='param'>
|
| 430 |
-
<li>
|
| 431 |
-
<span class='name'>2-item</span>
|
| 432 |
-
<span class='type'>
|
| 433 |
-
(<tt>Array</tt>)
|
| 434 |
-
</span>
|
| 435 |
-
—
|
| 436 |
-
<span class='desc'>arrays describing the x, y coordinates of the control points.</span>
|
| 437 |
-
</li>
|
| 438 |
-
<li>
|
| 439 |
-
<span class='name'>end</span>
|
| 440 |
-
<span class='type'>
|
| 441 |
-
(<tt>Number</tt>)
|
| 442 |
-
</span>
|
| 443 |
-
—
|
| 444 |
-
<span class='desc'>x value of the array (maximum)</span>
|
| 445 |
-
</li>
|
| 446 |
-
</ul>
|
| 447 |
-
<h3>Returns:</h3>
|
| 448 |
-
<ul class='return'>
|
| 449 |
-
<li>
|
| 450 |
-
<span class='type'></span>
|
| 451 |
-
(<tt>Array</tt>)
|
| 452 |
-
—
|
| 453 |
-
<span class='desc'>Array whose index represents every x-value between start and end, and value represents the corresponding y-value.</span>
|
| 454 |
-
</li>
|
| 455 |
-
</ul>
|
| 456 |
-
</div>
|
| 457 |
-
</div>
|
| 458 |
-
</div>
|
| 459 |
-
</div>
|
| 460 |
-
<div id='footer'>
|
| 461 |
-
Generated on
|
| 462 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 463 |
-
by
|
| 464 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 465 |
-
v1.7.0
|
| 466 |
-
(Node.js v0.10.21).
|
| 467 |
-
✲
|
| 468 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 469 |
-
✲
|
| 470 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 471 |
-
✲
|
| 472 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 473 |
-
</div>
|
| 474 |
-
</body>
|
| 475 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Convert.html
DELETED
|
@@ -1,1002 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Convert</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Convert
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/convert.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Tons of color conversion utility functions.</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#hexToRGB-class'>
|
| 130 |
-
+ (Array) <strong>hexToRGB</strong>(hex)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
Converts the hex representation of a color to RGB values.
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#rgbToHSL-class'>
|
| 140 |
-
+ (Array) <strong>rgbToHSL</strong>(r, g, b)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
Converts an RGB color to HSL.
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
<li>
|
| 148 |
-
<span class='signature'>
|
| 149 |
-
<a href='#hslToRGB-class'>
|
| 150 |
-
+ (Array) <strong>hslToRGB</strong>(h, s, l)
|
| 151 |
-
</a>
|
| 152 |
-
</span>
|
| 153 |
-
<span class='desc'>
|
| 154 |
-
Converts an HSL color value to RGB.
|
| 155 |
-
</span>
|
| 156 |
-
</li>
|
| 157 |
-
<li>
|
| 158 |
-
<span class='signature'>
|
| 159 |
-
<a href='#hueToRGB-class'>
|
| 160 |
-
+ (Number) <strong>hueToRGB</strong>(p, q, t)
|
| 161 |
-
</a>
|
| 162 |
-
</span>
|
| 163 |
-
<span class='desc'>
|
| 164 |
-
Converts from the hue color space back to RGB.
|
| 165 |
-
</span>
|
| 166 |
-
</li>
|
| 167 |
-
<li>
|
| 168 |
-
<span class='signature'>
|
| 169 |
-
<a href='#rgbToHSV-class'>
|
| 170 |
-
+ (Array) <strong>rgbToHSV</strong>(r, g, b)
|
| 171 |
-
</a>
|
| 172 |
-
</span>
|
| 173 |
-
<span class='desc'>
|
| 174 |
-
Converts an RGB color value to HSV.
|
| 175 |
-
</span>
|
| 176 |
-
</li>
|
| 177 |
-
<li>
|
| 178 |
-
<span class='signature'>
|
| 179 |
-
<a href='#hsvToRGB-class'>
|
| 180 |
-
+ (Array) <strong>hsvToRGB</strong>(h, s, v)
|
| 181 |
-
</a>
|
| 182 |
-
</span>
|
| 183 |
-
<span class='desc'>
|
| 184 |
-
Converts an HSV color value to RGB.
|
| 185 |
-
</span>
|
| 186 |
-
</li>
|
| 187 |
-
<li>
|
| 188 |
-
<span class='signature'>
|
| 189 |
-
<a href='#rgbToXYZ-class'>
|
| 190 |
-
+ (Array) <strong>rgbToXYZ</strong>(r, g, b)
|
| 191 |
-
</a>
|
| 192 |
-
</span>
|
| 193 |
-
<span class='desc'>
|
| 194 |
-
Converts a RGB color value to the XYZ color space.
|
| 195 |
-
</span>
|
| 196 |
-
</li>
|
| 197 |
-
<li>
|
| 198 |
-
<span class='signature'>
|
| 199 |
-
<a href='#xyzToRGB-class'>
|
| 200 |
-
+ (Array) <strong>xyzToRGB</strong>(x, y, z)
|
| 201 |
-
</a>
|
| 202 |
-
</span>
|
| 203 |
-
<span class='desc'>
|
| 204 |
-
Converts a XYZ color value to the sRGB color space.
|
| 205 |
-
</span>
|
| 206 |
-
</li>
|
| 207 |
-
<li>
|
| 208 |
-
<span class='signature'>
|
| 209 |
-
<a href='#xyzToLab-class'>
|
| 210 |
-
+ (Array) <strong>xyzToLab</strong>(x, y, z)
|
| 211 |
-
</a>
|
| 212 |
-
</span>
|
| 213 |
-
<span class='desc'>
|
| 214 |
-
Converts a XYZ color value to the CIELAB color space.
|
| 215 |
-
</span>
|
| 216 |
-
</li>
|
| 217 |
-
<li>
|
| 218 |
-
<span class='signature'>
|
| 219 |
-
<a href='#labToXYZ-class'>
|
| 220 |
-
+ (Array) <strong>labToXYZ</strong>(l, a, b)
|
| 221 |
-
</a>
|
| 222 |
-
</span>
|
| 223 |
-
<span class='desc'>
|
| 224 |
-
Converts a L<em>, a</em>, b* color values from the CIELAB color space to the XYZ color space.
|
| 225 |
-
</span>
|
| 226 |
-
</li>
|
| 227 |
-
<li>
|
| 228 |
-
<span class='signature'>
|
| 229 |
-
<a href='#rgbToLab-class'>
|
| 230 |
-
+ (void) <strong>rgbToLab</strong>(r, g, b)
|
| 231 |
-
</a>
|
| 232 |
-
</span>
|
| 233 |
-
<span class='desc'>
|
| 234 |
-
Converts L<em>, a</em>, b* back to RGB values.
|
| 235 |
-
</span>
|
| 236 |
-
</li>
|
| 237 |
-
<li>
|
| 238 |
-
<span class='signature'>
|
| 239 |
-
<a href='#labToRGB-class'>
|
| 240 |
-
+ (void) <strong>labToRGB</strong>(l, a, b)
|
| 241 |
-
</a>
|
| 242 |
-
</span>
|
| 243 |
-
<span class='desc'>
|
| 244 |
-
|
| 245 |
-
</span>
|
| 246 |
-
</li>
|
| 247 |
-
</ul>
|
| 248 |
-
<h2>Class Method Details</h2>
|
| 249 |
-
<div class='methods'>
|
| 250 |
-
<div class='method_details'>
|
| 251 |
-
<p class='signature' id='hexToRGB-class'>
|
| 252 |
-
+ (Array) <strong>hexToRGB</strong>(hex)
|
| 253 |
-
</p>
|
| 254 |
-
<div class='docstring'>
|
| 255 |
-
<p>Converts the hex representation of a color to RGB values.
|
| 256 |
-
Hex value can optionally start with the hash (#).</p>
|
| 257 |
-
</div>
|
| 258 |
-
<div class='tags'>
|
| 259 |
-
<h3>Parameters:</h3>
|
| 260 |
-
<ul class='param'>
|
| 261 |
-
<li>
|
| 262 |
-
<span class='name'>hex</span>
|
| 263 |
-
<span class='type'>
|
| 264 |
-
(<tt>String</tt>)
|
| 265 |
-
</span>
|
| 266 |
-
—
|
| 267 |
-
<span class='desc'>The colors hex value</span>
|
| 268 |
-
</li>
|
| 269 |
-
</ul>
|
| 270 |
-
<h3>Returns:</h3>
|
| 271 |
-
<ul class='return'>
|
| 272 |
-
<li>
|
| 273 |
-
<span class='type'></span>
|
| 274 |
-
(<tt>Array</tt>)
|
| 275 |
-
—
|
| 276 |
-
<span class='desc'>The RGB representation</span>
|
| 277 |
-
</li>
|
| 278 |
-
</ul>
|
| 279 |
-
</div>
|
| 280 |
-
</div>
|
| 281 |
-
<div class='method_details'>
|
| 282 |
-
<p class='signature' id='rgbToHSL-class'>
|
| 283 |
-
+ (Array) <strong>rgbToHSL</strong>(r, g, b)
|
| 284 |
-
<br>
|
| 285 |
-
+ (Array) <strong>rgbToHSL</strong>(rgb)
|
| 286 |
-
<br>
|
| 287 |
-
</p>
|
| 288 |
-
<div class='docstring'>
|
| 289 |
-
<p>Converts an RGB color to HSL.
|
| 290 |
-
Assumes r, g, and b are in the set [0, 255] and
|
| 291 |
-
returns h, s, and l in the set [0, 1].</p>
|
| 292 |
-
</div>
|
| 293 |
-
<div class='tags'>
|
| 294 |
-
<h3>Returns:</h3>
|
| 295 |
-
<ul class='return'>
|
| 296 |
-
<li>
|
| 297 |
-
<span class='type'></span>
|
| 298 |
-
(<tt>Array</tt>)
|
| 299 |
-
—
|
| 300 |
-
<span class='desc'>The HSL representation</span>
|
| 301 |
-
</li>
|
| 302 |
-
</ul>
|
| 303 |
-
<div class='overloads'>
|
| 304 |
-
<h3>Overloads:</h3>
|
| 305 |
-
<div class='overload'>
|
| 306 |
-
<p class='signature'>
|
| 307 |
-
+ (Array) <strong>rgbToHSL</strong>(r, g, b)
|
| 308 |
-
</p>
|
| 309 |
-
<div class='tags'>
|
| 310 |
-
<h3>Parameters:</h3>
|
| 311 |
-
<ul class='param'>
|
| 312 |
-
<li>
|
| 313 |
-
<span class='name'>r</span>
|
| 314 |
-
<span class='type'>
|
| 315 |
-
(<tt>Number</tt>)
|
| 316 |
-
</span>
|
| 317 |
-
—
|
| 318 |
-
<span class='desc'>Red channel</span>
|
| 319 |
-
</li>
|
| 320 |
-
<li>
|
| 321 |
-
<span class='name'>g</span>
|
| 322 |
-
<span class='type'>
|
| 323 |
-
(<tt>Number</tt>)
|
| 324 |
-
</span>
|
| 325 |
-
—
|
| 326 |
-
<span class='desc'>Green channel</span>
|
| 327 |
-
</li>
|
| 328 |
-
<li>
|
| 329 |
-
<span class='name'>b</span>
|
| 330 |
-
<span class='type'>
|
| 331 |
-
(<tt>Number</tt>)
|
| 332 |
-
</span>
|
| 333 |
-
—
|
| 334 |
-
<span class='desc'>Blue channel</span>
|
| 335 |
-
</li>
|
| 336 |
-
</ul>
|
| 337 |
-
</div>
|
| 338 |
-
</div>
|
| 339 |
-
<div class='overload'>
|
| 340 |
-
<p class='signature'>
|
| 341 |
-
+ (Array) <strong>rgbToHSL</strong>(rgb)
|
| 342 |
-
</p>
|
| 343 |
-
<div class='tags'>
|
| 344 |
-
<h3>Parameters:</h3>
|
| 345 |
-
<ul class='param'>
|
| 346 |
-
<li>
|
| 347 |
-
<span class='name'>rgb</span>
|
| 348 |
-
<span class='type'>
|
| 349 |
-
(<tt>Object</tt>)
|
| 350 |
-
</span>
|
| 351 |
-
—
|
| 352 |
-
<span class='desc'>The RGB object.</span>
|
| 353 |
-
</li>
|
| 354 |
-
</ul>
|
| 355 |
-
<h3>
|
| 356 |
-
Options Hash:
|
| 357 |
-
(rgb):
|
| 358 |
-
</h3>
|
| 359 |
-
<ul class='options'>
|
| 360 |
-
<li>
|
| 361 |
-
<span class='name'>r</span>
|
| 362 |
-
<span class='type'>
|
| 363 |
-
(<tt>Number</tt>)
|
| 364 |
-
</span>
|
| 365 |
-
—
|
| 366 |
-
<span class='desc'>The red channel.</span>
|
| 367 |
-
</li>
|
| 368 |
-
<li>
|
| 369 |
-
<span class='name'>g</span>
|
| 370 |
-
<span class='type'>
|
| 371 |
-
(<tt>Number</tt>)
|
| 372 |
-
</span>
|
| 373 |
-
—
|
| 374 |
-
<span class='desc'>The green channel.</span>
|
| 375 |
-
</li>
|
| 376 |
-
<li>
|
| 377 |
-
<span class='name'>b</span>
|
| 378 |
-
<span class='type'>
|
| 379 |
-
(<tt>Number</tt>)
|
| 380 |
-
</span>
|
| 381 |
-
—
|
| 382 |
-
<span class='desc'>The blue channel.</span>
|
| 383 |
-
</li>
|
| 384 |
-
</ul>
|
| 385 |
-
</div>
|
| 386 |
-
</div>
|
| 387 |
-
</div>
|
| 388 |
-
</div>
|
| 389 |
-
</div>
|
| 390 |
-
<div class='method_details'>
|
| 391 |
-
<p class='signature' id='hslToRGB-class'>
|
| 392 |
-
+ (Array) <strong>hslToRGB</strong>(h, s, l)
|
| 393 |
-
<br>
|
| 394 |
-
+ (Array) <strong>hslToRGB</strong>(hsl)
|
| 395 |
-
<br>
|
| 396 |
-
</p>
|
| 397 |
-
<div class='docstring'>
|
| 398 |
-
<p>Converts an HSL color value to RGB. Conversion formula
|
| 399 |
-
adapted from <a href="http://en.wikipedia.org/wiki/HSL_color_space">http://en.wikipedia.org/wiki/HSL_color_space</a>.
|
| 400 |
-
Assumes h, s, and l are contained in the set [0, 1] and
|
| 401 |
-
returns r, g, and b in the set [0, 255].</p>
|
| 402 |
-
</div>
|
| 403 |
-
<div class='tags'>
|
| 404 |
-
<h3>Returns:</h3>
|
| 405 |
-
<ul class='return'>
|
| 406 |
-
<li>
|
| 407 |
-
<span class='type'></span>
|
| 408 |
-
(<tt>Array</tt>)
|
| 409 |
-
—
|
| 410 |
-
<span class='desc'>The RGB representation</span>
|
| 411 |
-
</li>
|
| 412 |
-
</ul>
|
| 413 |
-
<div class='overloads'>
|
| 414 |
-
<h3>Overloads:</h3>
|
| 415 |
-
<div class='overload'>
|
| 416 |
-
<p class='signature'>
|
| 417 |
-
+ (Array) <strong>hslToRGB</strong>(h, s, l)
|
| 418 |
-
</p>
|
| 419 |
-
<div class='tags'>
|
| 420 |
-
<h3>Parameters:</h3>
|
| 421 |
-
<ul class='param'>
|
| 422 |
-
<li>
|
| 423 |
-
<span class='name'>h</span>
|
| 424 |
-
<span class='type'>
|
| 425 |
-
(<tt>Number</tt>)
|
| 426 |
-
</span>
|
| 427 |
-
—
|
| 428 |
-
<span class='desc'>The hue</span>
|
| 429 |
-
</li>
|
| 430 |
-
<li>
|
| 431 |
-
<span class='name'>s</span>
|
| 432 |
-
<span class='type'>
|
| 433 |
-
(<tt>Number</tt>)
|
| 434 |
-
</span>
|
| 435 |
-
—
|
| 436 |
-
<span class='desc'>The saturation</span>
|
| 437 |
-
</li>
|
| 438 |
-
<li>
|
| 439 |
-
<span class='name'>l</span>
|
| 440 |
-
<span class='type'>
|
| 441 |
-
(<tt>Number</tt>)
|
| 442 |
-
</span>
|
| 443 |
-
—
|
| 444 |
-
<span class='desc'>The lightness</span>
|
| 445 |
-
</li>
|
| 446 |
-
</ul>
|
| 447 |
-
</div>
|
| 448 |
-
</div>
|
| 449 |
-
<div class='overload'>
|
| 450 |
-
<p class='signature'>
|
| 451 |
-
+ (Array) <strong>hslToRGB</strong>(hsl)
|
| 452 |
-
</p>
|
| 453 |
-
<div class='tags'>
|
| 454 |
-
<h3>Parameters:</h3>
|
| 455 |
-
<ul class='param'>
|
| 456 |
-
<li>
|
| 457 |
-
<span class='name'>hsl</span>
|
| 458 |
-
<span class='type'>
|
| 459 |
-
(<tt>Object</tt>)
|
| 460 |
-
</span>
|
| 461 |
-
—
|
| 462 |
-
<span class='desc'>The HSL object.</span>
|
| 463 |
-
</li>
|
| 464 |
-
</ul>
|
| 465 |
-
<h3>
|
| 466 |
-
Options Hash:
|
| 467 |
-
(hsl):
|
| 468 |
-
</h3>
|
| 469 |
-
<ul class='options'>
|
| 470 |
-
<li>
|
| 471 |
-
<span class='name'>h</span>
|
| 472 |
-
<span class='type'>
|
| 473 |
-
(<tt>Number</tt>)
|
| 474 |
-
</span>
|
| 475 |
-
—
|
| 476 |
-
<span class='desc'>The hue.</span>
|
| 477 |
-
</li>
|
| 478 |
-
<li>
|
| 479 |
-
<span class='name'>s</span>
|
| 480 |
-
<span class='type'>
|
| 481 |
-
(<tt>Number</tt>)
|
| 482 |
-
</span>
|
| 483 |
-
—
|
| 484 |
-
<span class='desc'>The saturation.</span>
|
| 485 |
-
</li>
|
| 486 |
-
<li>
|
| 487 |
-
<span class='name'>l</span>
|
| 488 |
-
<span class='type'>
|
| 489 |
-
(<tt>Number</tt>)
|
| 490 |
-
</span>
|
| 491 |
-
—
|
| 492 |
-
<span class='desc'>The lightness.</span>
|
| 493 |
-
</li>
|
| 494 |
-
</ul>
|
| 495 |
-
</div>
|
| 496 |
-
</div>
|
| 497 |
-
</div>
|
| 498 |
-
</div>
|
| 499 |
-
</div>
|
| 500 |
-
<div class='method_details'>
|
| 501 |
-
<p class='signature' id='hueToRGB-class'>
|
| 502 |
-
+ (Number) <strong>hueToRGB</strong>(p, q, t)
|
| 503 |
-
</p>
|
| 504 |
-
<div class='docstring'>
|
| 505 |
-
<p>Converts from the hue color space back to RGB.</p>
|
| 506 |
-
</div>
|
| 507 |
-
<div class='tags'>
|
| 508 |
-
<h3>Parameters:</h3>
|
| 509 |
-
<ul class='param'>
|
| 510 |
-
<li>
|
| 511 |
-
<span class='name'>p</span>
|
| 512 |
-
<span class='type'>
|
| 513 |
-
(<tt>Number</tt>)
|
| 514 |
-
</span>
|
| 515 |
-
</li>
|
| 516 |
-
<li>
|
| 517 |
-
<span class='name'>q</span>
|
| 518 |
-
<span class='type'>
|
| 519 |
-
(<tt>Number</tt>)
|
| 520 |
-
</span>
|
| 521 |
-
</li>
|
| 522 |
-
<li>
|
| 523 |
-
<span class='name'>t</span>
|
| 524 |
-
<span class='type'>
|
| 525 |
-
(<tt>Number</tt>)
|
| 526 |
-
</span>
|
| 527 |
-
</li>
|
| 528 |
-
</ul>
|
| 529 |
-
<h3>Returns:</h3>
|
| 530 |
-
<ul class='return'>
|
| 531 |
-
<li>
|
| 532 |
-
<span class='type'></span>
|
| 533 |
-
(<tt>Number</tt>)
|
| 534 |
-
—
|
| 535 |
-
<span class='desc'>RGB value</span>
|
| 536 |
-
</li>
|
| 537 |
-
</ul>
|
| 538 |
-
</div>
|
| 539 |
-
</div>
|
| 540 |
-
<div class='method_details'>
|
| 541 |
-
<p class='signature' id='rgbToHSV-class'>
|
| 542 |
-
+ (Array) <strong>rgbToHSV</strong>(r, g, b)
|
| 543 |
-
</p>
|
| 544 |
-
<div class='docstring'>
|
| 545 |
-
<p>Converts an RGB color value to HSV. Conversion formula
|
| 546 |
-
adapted from {<a href="http://en.wikipedia.org/wiki/HSV_color_space}">http://en.wikipedia.org/wiki/HSV_color_space}</a>.
|
| 547 |
-
Assumes r, g, and b are contained in the set [0, 255] and
|
| 548 |
-
returns h, s, and v in the set [0, 1].</p>
|
| 549 |
-
</div>
|
| 550 |
-
<div class='tags'>
|
| 551 |
-
<h3>Parameters:</h3>
|
| 552 |
-
<ul class='param'>
|
| 553 |
-
<li>
|
| 554 |
-
<span class='name'>r</span>
|
| 555 |
-
<span class='type'>
|
| 556 |
-
(<tt>Number</tt>)
|
| 557 |
-
</span>
|
| 558 |
-
—
|
| 559 |
-
<span class='desc'>The red color value</span>
|
| 560 |
-
</li>
|
| 561 |
-
<li>
|
| 562 |
-
<span class='name'>g</span>
|
| 563 |
-
<span class='type'>
|
| 564 |
-
(<tt>Number</tt>)
|
| 565 |
-
</span>
|
| 566 |
-
—
|
| 567 |
-
<span class='desc'>The green color value</span>
|
| 568 |
-
</li>
|
| 569 |
-
<li>
|
| 570 |
-
<span class='name'>b</span>
|
| 571 |
-
<span class='type'>
|
| 572 |
-
(<tt>Number</tt>)
|
| 573 |
-
</span>
|
| 574 |
-
—
|
| 575 |
-
<span class='desc'>The blue color value</span>
|
| 576 |
-
</li>
|
| 577 |
-
</ul>
|
| 578 |
-
<h3>Returns:</h3>
|
| 579 |
-
<ul class='return'>
|
| 580 |
-
<li>
|
| 581 |
-
<span class='type'></span>
|
| 582 |
-
(<tt>Array</tt>)
|
| 583 |
-
—
|
| 584 |
-
<span class='desc'>The HSV representation</span>
|
| 585 |
-
</li>
|
| 586 |
-
</ul>
|
| 587 |
-
</div>
|
| 588 |
-
</div>
|
| 589 |
-
<div class='method_details'>
|
| 590 |
-
<p class='signature' id='hsvToRGB-class'>
|
| 591 |
-
+ (Array) <strong>hsvToRGB</strong>(h, s, v)
|
| 592 |
-
</p>
|
| 593 |
-
<div class='docstring'>
|
| 594 |
-
<p>Converts an HSV color value to RGB. Conversion formula
|
| 595 |
-
adapted from <a href="http://en.wikipedia.org/wiki/HSV_color_space">http://en.wikipedia.org/wiki/HSV_color_space</a>.
|
| 596 |
-
Assumes h, s, and v are contained in the set [0, 1] and
|
| 597 |
-
returns r, g, and b in the set [0, 255].</p>
|
| 598 |
-
</div>
|
| 599 |
-
<div class='tags'>
|
| 600 |
-
<h3>Parameters:</h3>
|
| 601 |
-
<ul class='param'>
|
| 602 |
-
<li>
|
| 603 |
-
<span class='name'>h</span>
|
| 604 |
-
<span class='type'>
|
| 605 |
-
(<tt>Number</tt>)
|
| 606 |
-
</span>
|
| 607 |
-
—
|
| 608 |
-
<span class='desc'>The hue</span>
|
| 609 |
-
</li>
|
| 610 |
-
<li>
|
| 611 |
-
<span class='name'>s</span>
|
| 612 |
-
<span class='type'>
|
| 613 |
-
(<tt>Number</tt>)
|
| 614 |
-
</span>
|
| 615 |
-
—
|
| 616 |
-
<span class='desc'>The saturation</span>
|
| 617 |
-
</li>
|
| 618 |
-
<li>
|
| 619 |
-
<span class='name'>v</span>
|
| 620 |
-
<span class='type'>
|
| 621 |
-
(<tt>Number</tt>)
|
| 622 |
-
</span>
|
| 623 |
-
—
|
| 624 |
-
<span class='desc'>The value</span>
|
| 625 |
-
</li>
|
| 626 |
-
</ul>
|
| 627 |
-
<h3>Returns:</h3>
|
| 628 |
-
<ul class='return'>
|
| 629 |
-
<li>
|
| 630 |
-
<span class='type'></span>
|
| 631 |
-
(<tt>Array</tt>)
|
| 632 |
-
—
|
| 633 |
-
<span class='desc'>The RGB representation</span>
|
| 634 |
-
</li>
|
| 635 |
-
</ul>
|
| 636 |
-
</div>
|
| 637 |
-
</div>
|
| 638 |
-
<div class='method_details'>
|
| 639 |
-
<p class='signature' id='rgbToXYZ-class'>
|
| 640 |
-
+ (Array) <strong>rgbToXYZ</strong>(r, g, b)
|
| 641 |
-
</p>
|
| 642 |
-
<div class='docstring'>
|
| 643 |
-
<p>Converts a RGB color value to the XYZ color space. Formulas
|
| 644 |
-
are based on <a href="http://en.wikipedia.org/wiki/SRGB">http://en.wikipedia.org/wiki/SRGB</a> assuming that
|
| 645 |
-
RGB values are sRGB.</p><p>Assumes r, g, and b are contained in the set [0, 255] and
|
| 646 |
-
returns x, y, and z.</p>
|
| 647 |
-
</div>
|
| 648 |
-
<div class='tags'>
|
| 649 |
-
<h3>Parameters:</h3>
|
| 650 |
-
<ul class='param'>
|
| 651 |
-
<li>
|
| 652 |
-
<span class='name'>r</span>
|
| 653 |
-
<span class='type'>
|
| 654 |
-
(<tt>Number</tt>)
|
| 655 |
-
</span>
|
| 656 |
-
—
|
| 657 |
-
<span class='desc'>The red color value</span>
|
| 658 |
-
</li>
|
| 659 |
-
<li>
|
| 660 |
-
<span class='name'>g</span>
|
| 661 |
-
<span class='type'>
|
| 662 |
-
(<tt>Number</tt>)
|
| 663 |
-
</span>
|
| 664 |
-
—
|
| 665 |
-
<span class='desc'>The green color value</span>
|
| 666 |
-
</li>
|
| 667 |
-
<li>
|
| 668 |
-
<span class='name'>b</span>
|
| 669 |
-
<span class='type'>
|
| 670 |
-
(<tt>Number</tt>)
|
| 671 |
-
</span>
|
| 672 |
-
—
|
| 673 |
-
<span class='desc'>The blue color value</span>
|
| 674 |
-
</li>
|
| 675 |
-
</ul>
|
| 676 |
-
<h3>Returns:</h3>
|
| 677 |
-
<ul class='return'>
|
| 678 |
-
<li>
|
| 679 |
-
<span class='type'></span>
|
| 680 |
-
(<tt>Array</tt>)
|
| 681 |
-
—
|
| 682 |
-
<span class='desc'>The XYZ representation</span>
|
| 683 |
-
</li>
|
| 684 |
-
</ul>
|
| 685 |
-
</div>
|
| 686 |
-
</div>
|
| 687 |
-
<div class='method_details'>
|
| 688 |
-
<p class='signature' id='xyzToRGB-class'>
|
| 689 |
-
+ (Array) <strong>xyzToRGB</strong>(x, y, z)
|
| 690 |
-
</p>
|
| 691 |
-
<div class='docstring'>
|
| 692 |
-
<p>Converts a XYZ color value to the sRGB color space. Formulas
|
| 693 |
-
are based on <a href="http://en.wikipedia.org/wiki/SRGB">http://en.wikipedia.org/wiki/SRGB</a> and the resulting
|
| 694 |
-
RGB value will be in the sRGB color space.
|
| 695 |
-
Assumes x, y and z values are whatever they are and returns
|
| 696 |
-
r, g and b in the set [0, 255].</p>
|
| 697 |
-
</div>
|
| 698 |
-
<div class='tags'>
|
| 699 |
-
<h3>Parameters:</h3>
|
| 700 |
-
<ul class='param'>
|
| 701 |
-
<li>
|
| 702 |
-
<span class='name'>x</span>
|
| 703 |
-
<span class='type'>
|
| 704 |
-
(<tt>Number</tt>)
|
| 705 |
-
</span>
|
| 706 |
-
—
|
| 707 |
-
<span class='desc'>The X value</span>
|
| 708 |
-
</li>
|
| 709 |
-
<li>
|
| 710 |
-
<span class='name'>y</span>
|
| 711 |
-
<span class='type'>
|
| 712 |
-
(<tt>Number</tt>)
|
| 713 |
-
</span>
|
| 714 |
-
—
|
| 715 |
-
<span class='desc'>The Y value</span>
|
| 716 |
-
</li>
|
| 717 |
-
<li>
|
| 718 |
-
<span class='name'>z</span>
|
| 719 |
-
<span class='type'>
|
| 720 |
-
(<tt>Number</tt>)
|
| 721 |
-
</span>
|
| 722 |
-
—
|
| 723 |
-
<span class='desc'>The Z value</span>
|
| 724 |
-
</li>
|
| 725 |
-
</ul>
|
| 726 |
-
<h3>Returns:</h3>
|
| 727 |
-
<ul class='return'>
|
| 728 |
-
<li>
|
| 729 |
-
<span class='type'></span>
|
| 730 |
-
(<tt>Array</tt>)
|
| 731 |
-
—
|
| 732 |
-
<span class='desc'>The RGB representation</span>
|
| 733 |
-
</li>
|
| 734 |
-
</ul>
|
| 735 |
-
</div>
|
| 736 |
-
</div>
|
| 737 |
-
<div class='method_details'>
|
| 738 |
-
<p class='signature' id='xyzToLab-class'>
|
| 739 |
-
+ (Array) <strong>xyzToLab</strong>(x, y, z)
|
| 740 |
-
<br>
|
| 741 |
-
+ (Array) <strong>xyzToLab</strong>(xyz)
|
| 742 |
-
<br>
|
| 743 |
-
</p>
|
| 744 |
-
<div class='docstring'>
|
| 745 |
-
<p>Converts a XYZ color value to the CIELAB color space. Formulas
|
| 746 |
-
are based on <a href="http://en.wikipedia.org/wiki/Lab_color_space">http://en.wikipedia.org/wiki/Lab_color_space</a>
|
| 747 |
-
The reference white point used in the conversion is D65.
|
| 748 |
-
Assumes x, y and z values are whatever they are and returns
|
| 749 |
-
L<em>, a</em> and b* values</p>
|
| 750 |
-
</div>
|
| 751 |
-
<div class='tags'>
|
| 752 |
-
<h3>Returns:</h3>
|
| 753 |
-
<ul class='return'>
|
| 754 |
-
<li>
|
| 755 |
-
<span class='type'></span>
|
| 756 |
-
(<tt>Array</tt>)
|
| 757 |
-
—
|
| 758 |
-
<span class='desc'>The Lab representation</span>
|
| 759 |
-
</li>
|
| 760 |
-
</ul>
|
| 761 |
-
<div class='overloads'>
|
| 762 |
-
<h3>Overloads:</h3>
|
| 763 |
-
<div class='overload'>
|
| 764 |
-
<p class='signature'>
|
| 765 |
-
+ (Array) <strong>xyzToLab</strong>(x, y, z)
|
| 766 |
-
</p>
|
| 767 |
-
<div class='tags'>
|
| 768 |
-
<h3>Parameters:</h3>
|
| 769 |
-
<ul class='param'>
|
| 770 |
-
<li>
|
| 771 |
-
<span class='name'>x</span>
|
| 772 |
-
<span class='type'>
|
| 773 |
-
(<tt>Number</tt>)
|
| 774 |
-
</span>
|
| 775 |
-
—
|
| 776 |
-
<span class='desc'>The X value</span>
|
| 777 |
-
</li>
|
| 778 |
-
<li>
|
| 779 |
-
<span class='name'>y</span>
|
| 780 |
-
<span class='type'>
|
| 781 |
-
(<tt>Number</tt>)
|
| 782 |
-
</span>
|
| 783 |
-
—
|
| 784 |
-
<span class='desc'>The Y value</span>
|
| 785 |
-
</li>
|
| 786 |
-
<li>
|
| 787 |
-
<span class='name'>z</span>
|
| 788 |
-
<span class='type'>
|
| 789 |
-
(<tt>Number</tt>)
|
| 790 |
-
</span>
|
| 791 |
-
—
|
| 792 |
-
<span class='desc'>The Z value</span>
|
| 793 |
-
</li>
|
| 794 |
-
</ul>
|
| 795 |
-
</div>
|
| 796 |
-
</div>
|
| 797 |
-
<div class='overload'>
|
| 798 |
-
<p class='signature'>
|
| 799 |
-
+ (Array) <strong>xyzToLab</strong>(xyz)
|
| 800 |
-
</p>
|
| 801 |
-
<div class='tags'>
|
| 802 |
-
<h3>Parameters:</h3>
|
| 803 |
-
<ul class='param'>
|
| 804 |
-
<li>
|
| 805 |
-
<span class='name'>xyz</span>
|
| 806 |
-
<span class='type'>
|
| 807 |
-
(<tt>Object</tt>)
|
| 808 |
-
</span>
|
| 809 |
-
—
|
| 810 |
-
<span class='desc'>The XYZ object.</span>
|
| 811 |
-
</li>
|
| 812 |
-
</ul>
|
| 813 |
-
<h3>
|
| 814 |
-
Options Hash:
|
| 815 |
-
(xyz):
|
| 816 |
-
</h3>
|
| 817 |
-
<ul class='options'>
|
| 818 |
-
<li>
|
| 819 |
-
<span class='name'>x</span>
|
| 820 |
-
<span class='type'>
|
| 821 |
-
(<tt>Number</tt>)
|
| 822 |
-
</span>
|
| 823 |
-
—
|
| 824 |
-
<span class='desc'>The X value.</span>
|
| 825 |
-
</li>
|
| 826 |
-
<li>
|
| 827 |
-
<span class='name'>y</span>
|
| 828 |
-
<span class='type'>
|
| 829 |
-
(<tt>Number</tt>)
|
| 830 |
-
</span>
|
| 831 |
-
—
|
| 832 |
-
<span class='desc'>The Y value.</span>
|
| 833 |
-
</li>
|
| 834 |
-
<li>
|
| 835 |
-
<span class='name'>z</span>
|
| 836 |
-
<span class='type'>
|
| 837 |
-
(<tt>Number</tt>)
|
| 838 |
-
</span>
|
| 839 |
-
—
|
| 840 |
-
<span class='desc'>The z value.</span>
|
| 841 |
-
</li>
|
| 842 |
-
</ul>
|
| 843 |
-
</div>
|
| 844 |
-
</div>
|
| 845 |
-
</div>
|
| 846 |
-
</div>
|
| 847 |
-
</div>
|
| 848 |
-
<div class='method_details'>
|
| 849 |
-
<p class='signature' id='labToXYZ-class'>
|
| 850 |
-
+ (Array) <strong>labToXYZ</strong>(l, a, b)
|
| 851 |
-
<br>
|
| 852 |
-
+ (Array) <strong>labToXYZ</strong>(lab)
|
| 853 |
-
<br>
|
| 854 |
-
</p>
|
| 855 |
-
<div class='docstring'>
|
| 856 |
-
<p>Converts a L<em>, a</em>, b* color values from the CIELAB color space
|
| 857 |
-
to the XYZ color space. Formulas are based on
|
| 858 |
-
<a href="http://en.wikipedia.org/wiki/Lab_color_space">http://en.wikipedia.org/wiki/Lab_color_space</a></p><p>The reference white point used in the conversion is D65.
|
| 859 |
-
Assumes L<em>, a</em> and b* values are whatever they are and returns
|
| 860 |
-
x, y and z values.</p>
|
| 861 |
-
</div>
|
| 862 |
-
<div class='tags'>
|
| 863 |
-
<h3>Returns:</h3>
|
| 864 |
-
<ul class='return'>
|
| 865 |
-
<li>
|
| 866 |
-
<span class='type'></span>
|
| 867 |
-
(<tt>Array</tt>)
|
| 868 |
-
—
|
| 869 |
-
<span class='desc'>The XYZ representation</span>
|
| 870 |
-
</li>
|
| 871 |
-
</ul>
|
| 872 |
-
<div class='overloads'>
|
| 873 |
-
<h3>Overloads:</h3>
|
| 874 |
-
<div class='overload'>
|
| 875 |
-
<p class='signature'>
|
| 876 |
-
+ (Array) <strong>labToXYZ</strong>(l, a, b)
|
| 877 |
-
</p>
|
| 878 |
-
<div class='tags'>
|
| 879 |
-
<h3>Parameters:</h3>
|
| 880 |
-
<ul class='param'>
|
| 881 |
-
<li>
|
| 882 |
-
<span class='name'>l</span>
|
| 883 |
-
<span class='type'>
|
| 884 |
-
(<tt>Number</tt>)
|
| 885 |
-
</span>
|
| 886 |
-
—
|
| 887 |
-
<span class='desc'>The L* value</span>
|
| 888 |
-
</li>
|
| 889 |
-
<li>
|
| 890 |
-
<span class='name'>a</span>
|
| 891 |
-
<span class='type'>
|
| 892 |
-
(<tt>Number</tt>)
|
| 893 |
-
</span>
|
| 894 |
-
—
|
| 895 |
-
<span class='desc'>The a* value</span>
|
| 896 |
-
</li>
|
| 897 |
-
<li>
|
| 898 |
-
<span class='name'>b</span>
|
| 899 |
-
<span class='type'>
|
| 900 |
-
(<tt>Number</tt>)
|
| 901 |
-
</span>
|
| 902 |
-
—
|
| 903 |
-
<span class='desc'>The b* value</span>
|
| 904 |
-
</li>
|
| 905 |
-
</ul>
|
| 906 |
-
</div>
|
| 907 |
-
</div>
|
| 908 |
-
<div class='overload'>
|
| 909 |
-
<p class='signature'>
|
| 910 |
-
+ (Array) <strong>labToXYZ</strong>(lab)
|
| 911 |
-
</p>
|
| 912 |
-
<div class='tags'>
|
| 913 |
-
<h3>Parameters:</h3>
|
| 914 |
-
<ul class='param'>
|
| 915 |
-
<li>
|
| 916 |
-
<span class='name'>lab</span>
|
| 917 |
-
<span class='type'>
|
| 918 |
-
(<tt>Object</tt>)
|
| 919 |
-
</span>
|
| 920 |
-
—
|
| 921 |
-
<span class='desc'>The LAB values</span>
|
| 922 |
-
</li>
|
| 923 |
-
</ul>
|
| 924 |
-
<h3>
|
| 925 |
-
Options Hash:
|
| 926 |
-
(lab):
|
| 927 |
-
</h3>
|
| 928 |
-
<ul class='options'>
|
| 929 |
-
<li>
|
| 930 |
-
<span class='name'>l</span>
|
| 931 |
-
<span class='type'>
|
| 932 |
-
(<tt>Number</tt>)
|
| 933 |
-
</span>
|
| 934 |
-
—
|
| 935 |
-
<span class='desc'>The L* value.</span>
|
| 936 |
-
</li>
|
| 937 |
-
<li>
|
| 938 |
-
<span class='name'>a</span>
|
| 939 |
-
<span class='type'>
|
| 940 |
-
(<tt>Number</tt>)
|
| 941 |
-
</span>
|
| 942 |
-
—
|
| 943 |
-
<span class='desc'>The a* value.</span>
|
| 944 |
-
</li>
|
| 945 |
-
<li>
|
| 946 |
-
<span class='name'>b</span>
|
| 947 |
-
<span class='type'>
|
| 948 |
-
(<tt>Number</tt>)
|
| 949 |
-
</span>
|
| 950 |
-
—
|
| 951 |
-
<span class='desc'>The b* value.</span>
|
| 952 |
-
</li>
|
| 953 |
-
</ul>
|
| 954 |
-
</div>
|
| 955 |
-
</div>
|
| 956 |
-
</div>
|
| 957 |
-
</div>
|
| 958 |
-
</div>
|
| 959 |
-
<div class='method_details'>
|
| 960 |
-
<p class='signature' id='rgbToLab-class'>
|
| 961 |
-
+ (void) <strong>rgbToLab</strong>(r, g, b)
|
| 962 |
-
</p>
|
| 963 |
-
<div class='docstring'>
|
| 964 |
-
<p>Converts L<em>, a</em>, b* back to RGB values.</p>
|
| 965 |
-
</div>
|
| 966 |
-
<div class='tags'>
|
| 967 |
-
<h3>See also:</h3>
|
| 968 |
-
<ul class='see'>
|
| 969 |
-
<li>
|
| 970 |
-
Convert.rgbToXYZ
|
| 971 |
-
</li>
|
| 972 |
-
<li>
|
| 973 |
-
Convert.xyzToLab
|
| 974 |
-
</li>
|
| 975 |
-
</ul>
|
| 976 |
-
</div>
|
| 977 |
-
</div>
|
| 978 |
-
<div class='method_details'>
|
| 979 |
-
<p class='signature' id='labToRGB-class'>
|
| 980 |
-
+ (void) <strong>labToRGB</strong>(l, a, b)
|
| 981 |
-
</p>
|
| 982 |
-
<div class='tags'>
|
| 983 |
-
</div>
|
| 984 |
-
</div>
|
| 985 |
-
</div>
|
| 986 |
-
</div>
|
| 987 |
-
<div id='footer'>
|
| 988 |
-
Generated on
|
| 989 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 990 |
-
by
|
| 991 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 992 |
-
v1.7.0
|
| 993 |
-
(Node.js v0.10.21).
|
| 994 |
-
✲
|
| 995 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 996 |
-
✲
|
| 997 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 998 |
-
✲
|
| 999 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 1000 |
-
</div>
|
| 1001 |
-
</body>
|
| 1002 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Event.html
DELETED
|
@@ -1,288 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Event</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Event
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/event.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Event system that can be used to register callbacks that get fired
|
| 122 |
-
during certain times in the render process.</p>
|
| 123 |
-
</div>
|
| 124 |
-
<div class='tags'>
|
| 125 |
-
</div>
|
| 126 |
-
<h2>Class Method Summary</h2>
|
| 127 |
-
<ul class='summary'>
|
| 128 |
-
<li>
|
| 129 |
-
<span class='signature'>
|
| 130 |
-
<a href='#trigger-class'>
|
| 131 |
-
+ (void) <strong>trigger</strong>(target, type, data = null)
|
| 132 |
-
</a>
|
| 133 |
-
</span>
|
| 134 |
-
<span class='desc'>
|
| 135 |
-
Trigger an event.
|
| 136 |
-
</span>
|
| 137 |
-
</li>
|
| 138 |
-
<li>
|
| 139 |
-
<span class='signature'>
|
| 140 |
-
<a href='#listen-class'>
|
| 141 |
-
+ (void) <strong>listen</strong>(target, type, fn)
|
| 142 |
-
</a>
|
| 143 |
-
</span>
|
| 144 |
-
<span class='desc'>
|
| 145 |
-
Listen for an event.
|
| 146 |
-
</span>
|
| 147 |
-
</li>
|
| 148 |
-
</ul>
|
| 149 |
-
<h2>Class Method Details</h2>
|
| 150 |
-
<div class='methods'>
|
| 151 |
-
<div class='method_details'>
|
| 152 |
-
<p class='signature' id='trigger-class'>
|
| 153 |
-
+ (void) <strong>trigger</strong>(target, type, data = null)
|
| 154 |
-
</p>
|
| 155 |
-
<div class='docstring'>
|
| 156 |
-
<p>Trigger an event.</p>
|
| 157 |
-
</div>
|
| 158 |
-
<div class='tags'>
|
| 159 |
-
<h3>Parameters:</h3>
|
| 160 |
-
<ul class='param'>
|
| 161 |
-
<li>
|
| 162 |
-
<span class='name'>target</span>
|
| 163 |
-
<span class='type'>
|
| 164 |
-
(<tt><a href='../../classes/Caman.html'>Caman</a></tt>)
|
| 165 |
-
</span>
|
| 166 |
-
—
|
| 167 |
-
<span class='desc'>Instance of Caman emitting the event.</span>
|
| 168 |
-
</li>
|
| 169 |
-
<li>
|
| 170 |
-
<span class='name'>type</span>
|
| 171 |
-
<span class='type'>
|
| 172 |
-
(<tt>String</tt>)
|
| 173 |
-
</span>
|
| 174 |
-
—
|
| 175 |
-
<span class='desc'>The event type.</span>
|
| 176 |
-
</li>
|
| 177 |
-
<li>
|
| 178 |
-
<span class='name'>data</span>
|
| 179 |
-
<span class='type'>
|
| 180 |
-
(<tt>Object</tt>)
|
| 181 |
-
</span>
|
| 182 |
-
—
|
| 183 |
-
<span class='desc'>Extra data to send with the event.</span>
|
| 184 |
-
</li>
|
| 185 |
-
</ul>
|
| 186 |
-
</div>
|
| 187 |
-
</div>
|
| 188 |
-
<div class='method_details'>
|
| 189 |
-
<p class='signature' id='listen-class'>
|
| 190 |
-
+ (void) <strong>listen</strong>(target, type, fn)
|
| 191 |
-
<br>
|
| 192 |
-
+ (void) <strong>listen</strong>(type, fn)
|
| 193 |
-
<br>
|
| 194 |
-
</p>
|
| 195 |
-
<div class='docstring'>
|
| 196 |
-
<p>Listen for an event. Optionally bind the listen to a single instance
|
| 197 |
-
or all instances.</p>
|
| 198 |
-
</div>
|
| 199 |
-
<div class='tags'>
|
| 200 |
-
<div class='overloads'>
|
| 201 |
-
<h3>Overloads:</h3>
|
| 202 |
-
<div class='overload'>
|
| 203 |
-
<p class='signature'>
|
| 204 |
-
+ (void) <strong>listen</strong>(target, type, fn)
|
| 205 |
-
</p>
|
| 206 |
-
<div class='docstring'>
|
| 207 |
-
<p>Listen for events emitted from a particular Caman instance.</p>
|
| 208 |
-
</div>
|
| 209 |
-
<div class='tags'>
|
| 210 |
-
<h3>Parameters:</h3>
|
| 211 |
-
<ul class='param'>
|
| 212 |
-
<li>
|
| 213 |
-
<span class='name'>target</span>
|
| 214 |
-
<span class='type'>
|
| 215 |
-
(<tt><a href='../../classes/Caman.html'>Caman</a></tt>)
|
| 216 |
-
</span>
|
| 217 |
-
—
|
| 218 |
-
<span class='desc'>The instance to listen to.</span>
|
| 219 |
-
</li>
|
| 220 |
-
<li>
|
| 221 |
-
<span class='name'>type</span>
|
| 222 |
-
<span class='type'>
|
| 223 |
-
(<tt>String</tt>)
|
| 224 |
-
</span>
|
| 225 |
-
—
|
| 226 |
-
<span class='desc'>The type of event to listen for.</span>
|
| 227 |
-
</li>
|
| 228 |
-
<li>
|
| 229 |
-
<span class='name'>fn</span>
|
| 230 |
-
<span class='type'>
|
| 231 |
-
(<tt>Function</tt>)
|
| 232 |
-
</span>
|
| 233 |
-
—
|
| 234 |
-
<span class='desc'>The function to call when the event occurs.</span>
|
| 235 |
-
</li>
|
| 236 |
-
</ul>
|
| 237 |
-
</div>
|
| 238 |
-
</div>
|
| 239 |
-
<div class='overload'>
|
| 240 |
-
<p class='signature'>
|
| 241 |
-
+ (void) <strong>listen</strong>(type, fn)
|
| 242 |
-
</p>
|
| 243 |
-
<div class='docstring'>
|
| 244 |
-
<p>Listen for an event from all Caman instances.</p>
|
| 245 |
-
</div>
|
| 246 |
-
<div class='tags'>
|
| 247 |
-
<h3>Parameters:</h3>
|
| 248 |
-
<ul class='param'>
|
| 249 |
-
<li>
|
| 250 |
-
<span class='name'>type</span>
|
| 251 |
-
<span class='type'>
|
| 252 |
-
(<tt>String</tt>)
|
| 253 |
-
</span>
|
| 254 |
-
—
|
| 255 |
-
<span class='desc'>The type of event to listen for.</span>
|
| 256 |
-
</li>
|
| 257 |
-
<li>
|
| 258 |
-
<span class='name'>fn</span>
|
| 259 |
-
<span class='type'>
|
| 260 |
-
(<tt>Function</tt>)
|
| 261 |
-
</span>
|
| 262 |
-
—
|
| 263 |
-
<span class='desc'>The function to call when the event occurs.</span>
|
| 264 |
-
</li>
|
| 265 |
-
</ul>
|
| 266 |
-
</div>
|
| 267 |
-
</div>
|
| 268 |
-
</div>
|
| 269 |
-
</div>
|
| 270 |
-
</div>
|
| 271 |
-
</div>
|
| 272 |
-
</div>
|
| 273 |
-
<div id='footer'>
|
| 274 |
-
Generated on
|
| 275 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 276 |
-
by
|
| 277 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 278 |
-
v1.7.0
|
| 279 |
-
(Node.js v0.10.21).
|
| 280 |
-
✲
|
| 281 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 282 |
-
✲
|
| 283 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 284 |
-
✲
|
| 285 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 286 |
-
</div>
|
| 287 |
-
</body>
|
| 288 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Filter.html
DELETED
|
@@ -1,186 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Filter</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Filter
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/filter.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Responsible for registering and storing all of the filters.</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#register-class'>
|
| 130 |
-
+ (void) <strong>register</strong>(name, filterFunc)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
Registers a filter function.
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
</ul>
|
| 138 |
-
<h2>Class Method Details</h2>
|
| 139 |
-
<div class='methods'>
|
| 140 |
-
<div class='method_details'>
|
| 141 |
-
<p class='signature' id='register-class'>
|
| 142 |
-
+ (void) <strong>register</strong>(name, filterFunc)
|
| 143 |
-
</p>
|
| 144 |
-
<div class='docstring'>
|
| 145 |
-
<p>Registers a filter function.</p>
|
| 146 |
-
</div>
|
| 147 |
-
<div class='tags'>
|
| 148 |
-
<h3>Parameters:</h3>
|
| 149 |
-
<ul class='param'>
|
| 150 |
-
<li>
|
| 151 |
-
<span class='name'>name</span>
|
| 152 |
-
<span class='type'>
|
| 153 |
-
(<tt>String</tt>)
|
| 154 |
-
</span>
|
| 155 |
-
—
|
| 156 |
-
<span class='desc'>The name of the filter.</span>
|
| 157 |
-
</li>
|
| 158 |
-
<li>
|
| 159 |
-
<span class='name'>filterFunc</span>
|
| 160 |
-
<span class='type'>
|
| 161 |
-
(<tt>Function</tt>)
|
| 162 |
-
</span>
|
| 163 |
-
—
|
| 164 |
-
<span class='desc'>The filter function.</span>
|
| 165 |
-
</li>
|
| 166 |
-
</ul>
|
| 167 |
-
</div>
|
| 168 |
-
</div>
|
| 169 |
-
</div>
|
| 170 |
-
</div>
|
| 171 |
-
<div id='footer'>
|
| 172 |
-
Generated on
|
| 173 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 174 |
-
by
|
| 175 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 176 |
-
v1.7.0
|
| 177 |
-
(Node.js v0.10.21).
|
| 178 |
-
✲
|
| 179 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 180 |
-
✲
|
| 181 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 182 |
-
✲
|
| 183 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 184 |
-
</div>
|
| 185 |
-
</body>
|
| 186 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/IO.html
DELETED
|
@@ -1,378 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>IO</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.IO
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/io.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Various I/O based operations</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#isRemote-class'>
|
| 130 |
-
+ (Boolean) <strong>isRemote</strong>(img)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
Is the given URL remote? If a cross-origin setting is set, we assume you have CORS properly configured.
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#corsEnabled-class'>
|
| 140 |
-
+ (Boolean) <strong>corsEnabled</strong>(img)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
Given an image, we check to see if a CORS policy has been defined.
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
<li>
|
| 148 |
-
<span class='signature'>
|
| 149 |
-
<a href='#isURLRemote-class'>
|
| 150 |
-
+ (Boolean) <strong>isURLRemote</strong>(url)
|
| 151 |
-
</a>
|
| 152 |
-
</span>
|
| 153 |
-
<span class='desc'>
|
| 154 |
-
Does the given URL exist on a different domain than the current one? This is done by comparing the URL to <code>document.domain</code>.
|
| 155 |
-
</span>
|
| 156 |
-
</li>
|
| 157 |
-
<li>
|
| 158 |
-
<span class='signature'>
|
| 159 |
-
<a href='#remoteCheck-class'>
|
| 160 |
-
+ (String) <strong>remoteCheck</strong>(src)
|
| 161 |
-
</a>
|
| 162 |
-
</span>
|
| 163 |
-
<span class='desc'>
|
| 164 |
-
Checks to see if the URL is remote, and if there is a proxy defined, it
|
| 165 |
-
</span>
|
| 166 |
-
</li>
|
| 167 |
-
<li>
|
| 168 |
-
<span class='signature'>
|
| 169 |
-
<a href='#proxyUrl-class'>
|
| 170 |
-
+ (String) <strong>proxyUrl</strong>(src)
|
| 171 |
-
</a>
|
| 172 |
-
</span>
|
| 173 |
-
<span class='desc'>
|
| 174 |
-
Given a URL, get the proxy URL for it.
|
| 175 |
-
</span>
|
| 176 |
-
</li>
|
| 177 |
-
<li>
|
| 178 |
-
<span class='signature'>
|
| 179 |
-
<a href='#useProxy-class'>
|
| 180 |
-
+ (String) <strong>useProxy</strong>(lang)
|
| 181 |
-
</a>
|
| 182 |
-
</span>
|
| 183 |
-
<span class='desc'>
|
| 184 |
-
Shortcut for using one of the bundled proxies.
|
| 185 |
-
</span>
|
| 186 |
-
</li>
|
| 187 |
-
</ul>
|
| 188 |
-
<h2>Class Method Details</h2>
|
| 189 |
-
<div class='methods'>
|
| 190 |
-
<div class='method_details'>
|
| 191 |
-
<p class='signature' id='isRemote-class'>
|
| 192 |
-
+ (Boolean) <strong>isRemote</strong>(img)
|
| 193 |
-
</p>
|
| 194 |
-
<div class='docstring'>
|
| 195 |
-
<p>Is the given URL remote?
|
| 196 |
-
If a cross-origin setting is set, we assume you have CORS
|
| 197 |
-
properly configured.</p>
|
| 198 |
-
</div>
|
| 199 |
-
<div class='tags'>
|
| 200 |
-
<h3>Parameters:</h3>
|
| 201 |
-
<ul class='param'>
|
| 202 |
-
<li>
|
| 203 |
-
<span class='name'>img</span>
|
| 204 |
-
<span class='type'>
|
| 205 |
-
(<tt>DOMObject</tt>)
|
| 206 |
-
</span>
|
| 207 |
-
—
|
| 208 |
-
<span class='desc'>The image to check.</span>
|
| 209 |
-
</li>
|
| 210 |
-
</ul>
|
| 211 |
-
<h3>Returns:</h3>
|
| 212 |
-
<ul class='return'>
|
| 213 |
-
<li>
|
| 214 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 215 |
-
</ul>
|
| 216 |
-
</div>
|
| 217 |
-
</div>
|
| 218 |
-
<div class='method_details'>
|
| 219 |
-
<p class='signature' id='corsEnabled-class'>
|
| 220 |
-
+ (Boolean) <strong>corsEnabled</strong>(img)
|
| 221 |
-
</p>
|
| 222 |
-
<div class='docstring'>
|
| 223 |
-
<p>Given an image, we check to see if a CORS policy has been defined.</p>
|
| 224 |
-
</div>
|
| 225 |
-
<div class='tags'>
|
| 226 |
-
<h3>Parameters:</h3>
|
| 227 |
-
<ul class='param'>
|
| 228 |
-
<li>
|
| 229 |
-
<span class='name'>img</span>
|
| 230 |
-
<span class='type'>
|
| 231 |
-
(<tt>DOMObject</tt>)
|
| 232 |
-
</span>
|
| 233 |
-
—
|
| 234 |
-
<span class='desc'>The image to check.</span>
|
| 235 |
-
</li>
|
| 236 |
-
</ul>
|
| 237 |
-
<h3>Returns:</h3>
|
| 238 |
-
<ul class='return'>
|
| 239 |
-
<li>
|
| 240 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 241 |
-
</ul>
|
| 242 |
-
</div>
|
| 243 |
-
</div>
|
| 244 |
-
<div class='method_details'>
|
| 245 |
-
<p class='signature' id='isURLRemote-class'>
|
| 246 |
-
+ (Boolean) <strong>isURLRemote</strong>(url)
|
| 247 |
-
</p>
|
| 248 |
-
<div class='docstring'>
|
| 249 |
-
<p>Does the given URL exist on a different domain than the current one?
|
| 250 |
-
This is done by comparing the URL to <code>document.domain</code>.</p>
|
| 251 |
-
</div>
|
| 252 |
-
<div class='tags'>
|
| 253 |
-
<h3>Parameters:</h3>
|
| 254 |
-
<ul class='param'>
|
| 255 |
-
<li>
|
| 256 |
-
<span class='name'>url</span>
|
| 257 |
-
<span class='type'>
|
| 258 |
-
(<tt>String</tt>)
|
| 259 |
-
</span>
|
| 260 |
-
—
|
| 261 |
-
<span class='desc'>The URL to check.</span>
|
| 262 |
-
</li>
|
| 263 |
-
</ul>
|
| 264 |
-
<h3>Returns:</h3>
|
| 265 |
-
<ul class='return'>
|
| 266 |
-
<li>
|
| 267 |
-
<span class='type'></span><tt>Boolean</tt></li>
|
| 268 |
-
</ul>
|
| 269 |
-
</div>
|
| 270 |
-
</div>
|
| 271 |
-
<div class='method_details'>
|
| 272 |
-
<p class='signature' id='remoteCheck-class'>
|
| 273 |
-
+ (String) <strong>remoteCheck</strong>(src)
|
| 274 |
-
</p>
|
| 275 |
-
<div class='docstring'>
|
| 276 |
-
<p>Checks to see if the URL is remote, and if there is a proxy defined, it</p>
|
| 277 |
-
</div>
|
| 278 |
-
<div class='tags'>
|
| 279 |
-
<h3>Parameters:</h3>
|
| 280 |
-
<ul class='param'>
|
| 281 |
-
<li>
|
| 282 |
-
<span class='name'>src</span>
|
| 283 |
-
<span class='type'>
|
| 284 |
-
(<tt>String</tt>)
|
| 285 |
-
</span>
|
| 286 |
-
—
|
| 287 |
-
<span class='desc'>The URL to check.</span>
|
| 288 |
-
</li>
|
| 289 |
-
</ul>
|
| 290 |
-
<h3>Returns:</h3>
|
| 291 |
-
<ul class='return'>
|
| 292 |
-
<li>
|
| 293 |
-
<span class='type'></span>
|
| 294 |
-
(<tt>String</tt>)
|
| 295 |
-
—
|
| 296 |
-
<span class='desc'>The proxy URL if the image is remote. Nothing otherwise.</span>
|
| 297 |
-
</li>
|
| 298 |
-
</ul>
|
| 299 |
-
</div>
|
| 300 |
-
</div>
|
| 301 |
-
<div class='method_details'>
|
| 302 |
-
<p class='signature' id='proxyUrl-class'>
|
| 303 |
-
+ (String) <strong>proxyUrl</strong>(src)
|
| 304 |
-
</p>
|
| 305 |
-
<div class='docstring'>
|
| 306 |
-
<p>Given a URL, get the proxy URL for it.</p>
|
| 307 |
-
</div>
|
| 308 |
-
<div class='tags'>
|
| 309 |
-
<h3>Parameters:</h3>
|
| 310 |
-
<ul class='param'>
|
| 311 |
-
<li>
|
| 312 |
-
<span class='name'>src</span>
|
| 313 |
-
<span class='type'>
|
| 314 |
-
(<tt>String</tt>)
|
| 315 |
-
</span>
|
| 316 |
-
—
|
| 317 |
-
<span class='desc'>The URL to proxy.</span>
|
| 318 |
-
</li>
|
| 319 |
-
</ul>
|
| 320 |
-
<h3>Returns:</h3>
|
| 321 |
-
<ul class='return'>
|
| 322 |
-
<li>
|
| 323 |
-
<span class='type'></span>
|
| 324 |
-
(<tt>String</tt>)
|
| 325 |
-
—
|
| 326 |
-
<span class='desc'>The proxy URL.</span>
|
| 327 |
-
</li>
|
| 328 |
-
</ul>
|
| 329 |
-
</div>
|
| 330 |
-
</div>
|
| 331 |
-
<div class='method_details'>
|
| 332 |
-
<p class='signature' id='useProxy-class'>
|
| 333 |
-
+ (String) <strong>useProxy</strong>(lang)
|
| 334 |
-
</p>
|
| 335 |
-
<div class='docstring'>
|
| 336 |
-
<p>Shortcut for using one of the bundled proxies.</p>
|
| 337 |
-
</div>
|
| 338 |
-
<div class='tags'>
|
| 339 |
-
<h3>Parameters:</h3>
|
| 340 |
-
<ul class='param'>
|
| 341 |
-
<li>
|
| 342 |
-
<span class='name'>lang</span>
|
| 343 |
-
<span class='type'>
|
| 344 |
-
(<tt>String</tt>)
|
| 345 |
-
</span>
|
| 346 |
-
—
|
| 347 |
-
<span class='desc'>String identifier for the proxy script language.</span>
|
| 348 |
-
</li>
|
| 349 |
-
</ul>
|
| 350 |
-
<h3>Returns:</h3>
|
| 351 |
-
<ul class='return'>
|
| 352 |
-
<li>
|
| 353 |
-
<span class='type'></span>
|
| 354 |
-
(<tt>String</tt>)
|
| 355 |
-
—
|
| 356 |
-
<span class='desc'>A proxy URL.</span>
|
| 357 |
-
</li>
|
| 358 |
-
</ul>
|
| 359 |
-
</div>
|
| 360 |
-
</div>
|
| 361 |
-
</div>
|
| 362 |
-
</div>
|
| 363 |
-
<div id='footer'>
|
| 364 |
-
Generated on
|
| 365 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 366 |
-
by
|
| 367 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 368 |
-
v1.7.0
|
| 369 |
-
(Node.js v0.10.21).
|
| 370 |
-
✲
|
| 371 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 372 |
-
✲
|
| 373 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 374 |
-
✲
|
| 375 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 376 |
-
</div>
|
| 377 |
-
</body>
|
| 378 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Layer.html
DELETED
|
@@ -1,318 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Layer</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Layer
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/layer.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>The entire layering system for Caman resides in this file. Layers get their own canvasLayer
|
| 122 |
-
objectwhich is created when newLayer() is called. For extensive information regarding the
|
| 123 |
-
specifics of howthe layering system works, there is an in-depth blog post on this very topic.
|
| 124 |
-
Instead of copying the entirety of that post, I'll simply point you towards the
|
| 125 |
-
<a href="http://blog.meltingice.net/programming/implementing-layers-camanjs">blog link</a>.</p><p>However, the gist of the layering system is that, for each layer, it creates a new canvas
|
| 126 |
-
element and then either copies the parent layer's data or applies a solid color to the new
|
| 127 |
-
layer. After some (optional) effects are applied, the layer is blended back into the parent
|
| 128 |
-
canvas layer using one of many different blending algorithms.</p><p>You can also load an image (local or remote, with a proxy) into a canvas layer, which is useful
|
| 129 |
-
if you want to add textures to an image.</p>
|
| 130 |
-
</div>
|
| 131 |
-
<div class='tags'>
|
| 132 |
-
</div>
|
| 133 |
-
<h2>Instance Method Summary</h2>
|
| 134 |
-
<ul class='summary'>
|
| 135 |
-
<li>
|
| 136 |
-
<span class='signature'>
|
| 137 |
-
<a href='#constructor-instance'>
|
| 138 |
-
- (void) <strong>constructor</strong>(c)
|
| 139 |
-
</a>
|
| 140 |
-
</span>
|
| 141 |
-
<span class='constructor note title'>Constructor</span>
|
| 142 |
-
<span class='desc'>
|
| 143 |
-
|
| 144 |
-
</span>
|
| 145 |
-
</li>
|
| 146 |
-
<li>
|
| 147 |
-
<span class='signature'>
|
| 148 |
-
<a href='#newLayer-instance'>
|
| 149 |
-
- (void) <strong>newLayer</strong>(cb)
|
| 150 |
-
</a>
|
| 151 |
-
</span>
|
| 152 |
-
<span class='desc'>
|
| 153 |
-
If you want to create nested layers
|
| 154 |
-
</span>
|
| 155 |
-
</li>
|
| 156 |
-
<li>
|
| 157 |
-
<span class='signature'>
|
| 158 |
-
<a href='#setBlendingMode-instance'>
|
| 159 |
-
- (void) <strong>setBlendingMode</strong>(mode)
|
| 160 |
-
</a>
|
| 161 |
-
</span>
|
| 162 |
-
<span class='desc'>
|
| 163 |
-
Sets the blending mode of this layer.
|
| 164 |
-
</span>
|
| 165 |
-
</li>
|
| 166 |
-
<li>
|
| 167 |
-
<span class='signature'>
|
| 168 |
-
<a href='#opacity-instance'>
|
| 169 |
-
- (void) <strong>opacity</strong>(opacity)
|
| 170 |
-
</a>
|
| 171 |
-
</span>
|
| 172 |
-
<span class='desc'>
|
| 173 |
-
Sets the opacity of this layer.
|
| 174 |
-
</span>
|
| 175 |
-
</li>
|
| 176 |
-
<li>
|
| 177 |
-
<span class='signature'>
|
| 178 |
-
<a href='#copyParent-instance'>
|
| 179 |
-
- (void) <strong>copyParent</strong>()
|
| 180 |
-
</a>
|
| 181 |
-
</span>
|
| 182 |
-
<span class='desc'>
|
| 183 |
-
Copies the contents of the parent layer to this layer
|
| 184 |
-
</span>
|
| 185 |
-
</li>
|
| 186 |
-
<li>
|
| 187 |
-
<span class='signature'>
|
| 188 |
-
<a href='#fillColor-instance'>
|
| 189 |
-
- (void) <strong>fillColor</strong>()
|
| 190 |
-
</a>
|
| 191 |
-
</span>
|
| 192 |
-
<span class='desc'>
|
| 193 |
-
Fills this layer with a single color
|
| 194 |
-
</span>
|
| 195 |
-
</li>
|
| 196 |
-
<li>
|
| 197 |
-
<span class='signature'>
|
| 198 |
-
<a href='#overlayImage-instance'>
|
| 199 |
-
- (void) <strong>overlayImage</strong>(image)
|
| 200 |
-
</a>
|
| 201 |
-
</span>
|
| 202 |
-
<span class='desc'>
|
| 203 |
-
Loads and overlays an image onto this layer
|
| 204 |
-
</span>
|
| 205 |
-
</li>
|
| 206 |
-
<li>
|
| 207 |
-
<span class='signature'>
|
| 208 |
-
<a href='#applyToParent-instance'>
|
| 209 |
-
- (void) <strong>applyToParent</strong>()
|
| 210 |
-
</a>
|
| 211 |
-
</span>
|
| 212 |
-
<span class='desc'>
|
| 213 |
-
Takes the contents of this layer and applies them to the parent layer at render time.
|
| 214 |
-
</span>
|
| 215 |
-
</li>
|
| 216 |
-
</ul>
|
| 217 |
-
<h2>Constructor Details</h2>
|
| 218 |
-
<div class='methods'>
|
| 219 |
-
<div class='method_details'>
|
| 220 |
-
<p class='signature' id='constructor-instance'>
|
| 221 |
-
- (void) <strong>constructor</strong>(c)
|
| 222 |
-
</p>
|
| 223 |
-
<div class='tags'>
|
| 224 |
-
</div>
|
| 225 |
-
</div>
|
| 226 |
-
</div>
|
| 227 |
-
<h2>Instance Method Details</h2>
|
| 228 |
-
<div class='methods'>
|
| 229 |
-
<div class='method_details'>
|
| 230 |
-
<p class='signature' id='newLayer-instance'>
|
| 231 |
-
- (void) <strong>newLayer</strong>(cb)
|
| 232 |
-
</p>
|
| 233 |
-
<div class='docstring'>
|
| 234 |
-
<p>If you want to create nested layers</p>
|
| 235 |
-
</div>
|
| 236 |
-
<div class='tags'>
|
| 237 |
-
</div>
|
| 238 |
-
</div>
|
| 239 |
-
<div class='method_details'>
|
| 240 |
-
<p class='signature' id='setBlendingMode-instance'>
|
| 241 |
-
- (void) <strong>setBlendingMode</strong>(mode)
|
| 242 |
-
</p>
|
| 243 |
-
<div class='docstring'>
|
| 244 |
-
<p>Sets the blending mode of this layer. The mode is the name of a blender function.</p>
|
| 245 |
-
</div>
|
| 246 |
-
<div class='tags'>
|
| 247 |
-
</div>
|
| 248 |
-
</div>
|
| 249 |
-
<div class='method_details'>
|
| 250 |
-
<p class='signature' id='opacity-instance'>
|
| 251 |
-
- (void) <strong>opacity</strong>(opacity)
|
| 252 |
-
</p>
|
| 253 |
-
<div class='docstring'>
|
| 254 |
-
<p>Sets the opacity of this layer. This affects how much of this layer is applied to the parent
|
| 255 |
-
layer at render time.</p>
|
| 256 |
-
</div>
|
| 257 |
-
<div class='tags'>
|
| 258 |
-
</div>
|
| 259 |
-
</div>
|
| 260 |
-
<div class='method_details'>
|
| 261 |
-
<p class='signature' id='copyParent-instance'>
|
| 262 |
-
- (void) <strong>copyParent</strong>()
|
| 263 |
-
</p>
|
| 264 |
-
<div class='docstring'>
|
| 265 |
-
<p>Copies the contents of the parent layer to this layer</p>
|
| 266 |
-
</div>
|
| 267 |
-
<div class='tags'>
|
| 268 |
-
</div>
|
| 269 |
-
</div>
|
| 270 |
-
<div class='method_details'>
|
| 271 |
-
<p class='signature' id='fillColor-instance'>
|
| 272 |
-
- (void) <strong>fillColor</strong>()
|
| 273 |
-
</p>
|
| 274 |
-
<div class='docstring'>
|
| 275 |
-
<p>Fills this layer with a single color</p>
|
| 276 |
-
</div>
|
| 277 |
-
<div class='tags'>
|
| 278 |
-
</div>
|
| 279 |
-
</div>
|
| 280 |
-
<div class='method_details'>
|
| 281 |
-
<p class='signature' id='overlayImage-instance'>
|
| 282 |
-
- (void) <strong>overlayImage</strong>(image)
|
| 283 |
-
</p>
|
| 284 |
-
<div class='docstring'>
|
| 285 |
-
<p>Loads and overlays an image onto this layer</p>
|
| 286 |
-
</div>
|
| 287 |
-
<div class='tags'>
|
| 288 |
-
</div>
|
| 289 |
-
</div>
|
| 290 |
-
<div class='method_details'>
|
| 291 |
-
<p class='signature' id='applyToParent-instance'>
|
| 292 |
-
- (void) <strong>applyToParent</strong>()
|
| 293 |
-
</p>
|
| 294 |
-
<div class='docstring'>
|
| 295 |
-
<p>Takes the contents of this layer and applies them to the parent layer at render time. This
|
| 296 |
-
should never be called explicitly by the user.</p>
|
| 297 |
-
</div>
|
| 298 |
-
<div class='tags'>
|
| 299 |
-
</div>
|
| 300 |
-
</div>
|
| 301 |
-
</div>
|
| 302 |
-
</div>
|
| 303 |
-
<div id='footer'>
|
| 304 |
-
Generated on
|
| 305 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 306 |
-
by
|
| 307 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 308 |
-
v1.7.0
|
| 309 |
-
(Node.js v0.10.21).
|
| 310 |
-
✲
|
| 311 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 312 |
-
✲
|
| 313 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 314 |
-
✲
|
| 315 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 316 |
-
</div>
|
| 317 |
-
</body>
|
| 318 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Logger.html
DELETED
|
@@ -1,165 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Logger</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Logger
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/logger.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Simple console logger class that can be toggled on and off based on Caman.DEBUG</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Instance Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#constructor-instance'>
|
| 130 |
-
- (void) <strong>constructor</strong>()
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='constructor note title'>Constructor</span>
|
| 134 |
-
<span class='desc'>
|
| 135 |
-
|
| 136 |
-
</span>
|
| 137 |
-
</li>
|
| 138 |
-
</ul>
|
| 139 |
-
<h2>Constructor Details</h2>
|
| 140 |
-
<div class='methods'>
|
| 141 |
-
<div class='method_details'>
|
| 142 |
-
<p class='signature' id='constructor-instance'>
|
| 143 |
-
- (void) <strong>constructor</strong>()
|
| 144 |
-
</p>
|
| 145 |
-
<div class='tags'>
|
| 146 |
-
</div>
|
| 147 |
-
</div>
|
| 148 |
-
</div>
|
| 149 |
-
</div>
|
| 150 |
-
<div id='footer'>
|
| 151 |
-
Generated on
|
| 152 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 153 |
-
by
|
| 154 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 155 |
-
v1.7.0
|
| 156 |
-
(Node.js v0.10.21).
|
| 157 |
-
✲
|
| 158 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 159 |
-
✲
|
| 160 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 161 |
-
✲
|
| 162 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 163 |
-
</div>
|
| 164 |
-
</body>
|
| 165 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Pixel.html
DELETED
|
@@ -1,379 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Pixel</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Pixel
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/pixel.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Represents a single Pixel in an image.</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#coordinatesToLocation-class'>
|
| 130 |
-
+ (void) <strong>coordinatesToLocation</strong>(x, y, width)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#locationToCoordinates-class'>
|
| 140 |
-
+ (void) <strong>locationToCoordinates</strong>(loc, width)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
</ul>
|
| 148 |
-
<h2>Instance Method Summary</h2>
|
| 149 |
-
<ul class='summary'>
|
| 150 |
-
<li>
|
| 151 |
-
<span class='signature'>
|
| 152 |
-
<a href='#constructor-instance'>
|
| 153 |
-
- (void) <strong>constructor</strong>(r = 0, g = 0, b = 0, a = 255, c = null)
|
| 154 |
-
</a>
|
| 155 |
-
</span>
|
| 156 |
-
<span class='constructor note title'>Constructor</span>
|
| 157 |
-
<span class='desc'>
|
| 158 |
-
|
| 159 |
-
</span>
|
| 160 |
-
</li>
|
| 161 |
-
<li>
|
| 162 |
-
<span class='signature'>
|
| 163 |
-
<a href='#setContext-instance'>
|
| 164 |
-
- (void) <strong>setContext</strong>(c)
|
| 165 |
-
</a>
|
| 166 |
-
</span>
|
| 167 |
-
<span class='desc'>
|
| 168 |
-
|
| 169 |
-
</span>
|
| 170 |
-
</li>
|
| 171 |
-
<li>
|
| 172 |
-
<span class='signature'>
|
| 173 |
-
<a href='#locationXY-instance'>
|
| 174 |
-
- (void) <strong>locationXY</strong>()
|
| 175 |
-
</a>
|
| 176 |
-
</span>
|
| 177 |
-
<span class='desc'>
|
| 178 |
-
Retrieves the X, Y location of the current pixel.
|
| 179 |
-
</span>
|
| 180 |
-
</li>
|
| 181 |
-
<li>
|
| 182 |
-
<span class='signature'>
|
| 183 |
-
<a href='#pixelAtLocation-instance'>
|
| 184 |
-
- (void) <strong>pixelAtLocation</strong>(loc)
|
| 185 |
-
</a>
|
| 186 |
-
</span>
|
| 187 |
-
<span class='desc'>
|
| 188 |
-
|
| 189 |
-
</span>
|
| 190 |
-
</li>
|
| 191 |
-
<li>
|
| 192 |
-
<span class='signature'>
|
| 193 |
-
<a href='#getPixelRelative-instance'>
|
| 194 |
-
- (void) <strong>getPixelRelative</strong>(horiz, vert)
|
| 195 |
-
</a>
|
| 196 |
-
</span>
|
| 197 |
-
<span class='desc'>
|
| 198 |
-
Returns an RGBA object for a pixel whose location is specified in relation to the current pixel.
|
| 199 |
-
</span>
|
| 200 |
-
</li>
|
| 201 |
-
<li>
|
| 202 |
-
<span class='signature'>
|
| 203 |
-
<a href='#putPixelRelative-instance'>
|
| 204 |
-
- (void) <strong>putPixelRelative</strong>(horiz, vert, rgba)
|
| 205 |
-
</a>
|
| 206 |
-
</span>
|
| 207 |
-
<span class='desc'>
|
| 208 |
-
The counterpart to getPixelRelative, this updates the value of a pixel whose location is specified in relation to the current pixel.
|
| 209 |
-
</span>
|
| 210 |
-
</li>
|
| 211 |
-
<li>
|
| 212 |
-
<span class='signature'>
|
| 213 |
-
<a href='#getPixel-instance'>
|
| 214 |
-
- (void) <strong>getPixel</strong>(x, y)
|
| 215 |
-
</a>
|
| 216 |
-
</span>
|
| 217 |
-
<span class='desc'>
|
| 218 |
-
Gets an RGBA object for an arbitrary pixel in the canvas specified by absolute X, Y coordinates
|
| 219 |
-
</span>
|
| 220 |
-
</li>
|
| 221 |
-
<li>
|
| 222 |
-
<span class='signature'>
|
| 223 |
-
<a href='#putPixel-instance'>
|
| 224 |
-
- (void) <strong>putPixel</strong>(x, y, rgba)
|
| 225 |
-
</a>
|
| 226 |
-
</span>
|
| 227 |
-
<span class='desc'>
|
| 228 |
-
Updates the pixel at the given X, Y coordinate
|
| 229 |
-
</span>
|
| 230 |
-
</li>
|
| 231 |
-
<li>
|
| 232 |
-
<span class='signature'>
|
| 233 |
-
<a href='#toString-instance'>
|
| 234 |
-
- (void) <strong>toString</strong>()
|
| 235 |
-
</a>
|
| 236 |
-
</span>
|
| 237 |
-
<span class='desc'>
|
| 238 |
-
|
| 239 |
-
</span>
|
| 240 |
-
</li>
|
| 241 |
-
<li>
|
| 242 |
-
<span class='signature'>
|
| 243 |
-
<a href='#toHex-instance'>
|
| 244 |
-
- (void) <strong>toHex</strong>(includeAlpha = false)
|
| 245 |
-
</a>
|
| 246 |
-
</span>
|
| 247 |
-
<span class='desc'>
|
| 248 |
-
|
| 249 |
-
</span>
|
| 250 |
-
</li>
|
| 251 |
-
</ul>
|
| 252 |
-
<h2>Class Method Details</h2>
|
| 253 |
-
<div class='methods'>
|
| 254 |
-
<div class='method_details'>
|
| 255 |
-
<p class='signature' id='coordinatesToLocation-class'>
|
| 256 |
-
+ (void) <strong>coordinatesToLocation</strong>(x, y, width)
|
| 257 |
-
</p>
|
| 258 |
-
<div class='tags'>
|
| 259 |
-
</div>
|
| 260 |
-
</div>
|
| 261 |
-
<div class='method_details'>
|
| 262 |
-
<p class='signature' id='locationToCoordinates-class'>
|
| 263 |
-
+ (void) <strong>locationToCoordinates</strong>(loc, width)
|
| 264 |
-
</p>
|
| 265 |
-
<div class='tags'>
|
| 266 |
-
</div>
|
| 267 |
-
</div>
|
| 268 |
-
</div>
|
| 269 |
-
<h2>Constructor Details</h2>
|
| 270 |
-
<div class='methods'>
|
| 271 |
-
<div class='method_details'>
|
| 272 |
-
<p class='signature' id='constructor-instance'>
|
| 273 |
-
- (void) <strong>constructor</strong>(r = 0, g = 0, b = 0, a = 255, c = null)
|
| 274 |
-
</p>
|
| 275 |
-
<div class='tags'>
|
| 276 |
-
</div>
|
| 277 |
-
</div>
|
| 278 |
-
</div>
|
| 279 |
-
<h2>Instance Method Details</h2>
|
| 280 |
-
<div class='methods'>
|
| 281 |
-
<div class='method_details'>
|
| 282 |
-
<p class='signature' id='setContext-instance'>
|
| 283 |
-
- (void) <strong>setContext</strong>(c)
|
| 284 |
-
</p>
|
| 285 |
-
<div class='tags'>
|
| 286 |
-
</div>
|
| 287 |
-
</div>
|
| 288 |
-
<div class='method_details'>
|
| 289 |
-
<p class='signature' id='locationXY-instance'>
|
| 290 |
-
- (void) <strong>locationXY</strong>()
|
| 291 |
-
</p>
|
| 292 |
-
<div class='docstring'>
|
| 293 |
-
<p>Retrieves the X, Y location of the current pixel. The origin is at the bottom left corner of
|
| 294 |
-
the image, like a normal coordinate system.</p>
|
| 295 |
-
</div>
|
| 296 |
-
<div class='tags'>
|
| 297 |
-
</div>
|
| 298 |
-
</div>
|
| 299 |
-
<div class='method_details'>
|
| 300 |
-
<p class='signature' id='pixelAtLocation-instance'>
|
| 301 |
-
- (void) <strong>pixelAtLocation</strong>(loc)
|
| 302 |
-
</p>
|
| 303 |
-
<div class='tags'>
|
| 304 |
-
</div>
|
| 305 |
-
</div>
|
| 306 |
-
<div class='method_details'>
|
| 307 |
-
<p class='signature' id='getPixelRelative-instance'>
|
| 308 |
-
- (void) <strong>getPixelRelative</strong>(horiz, vert)
|
| 309 |
-
</p>
|
| 310 |
-
<div class='docstring'>
|
| 311 |
-
<p>Returns an RGBA object for a pixel whose location is specified in relation to the current
|
| 312 |
-
pixel.</p>
|
| 313 |
-
</div>
|
| 314 |
-
<div class='tags'>
|
| 315 |
-
</div>
|
| 316 |
-
</div>
|
| 317 |
-
<div class='method_details'>
|
| 318 |
-
<p class='signature' id='putPixelRelative-instance'>
|
| 319 |
-
- (void) <strong>putPixelRelative</strong>(horiz, vert, rgba)
|
| 320 |
-
</p>
|
| 321 |
-
<div class='docstring'>
|
| 322 |
-
<p>The counterpart to getPixelRelative, this updates the value of a pixel whose location is
|
| 323 |
-
specified in relation to the current pixel.</p>
|
| 324 |
-
</div>
|
| 325 |
-
<div class='tags'>
|
| 326 |
-
</div>
|
| 327 |
-
</div>
|
| 328 |
-
<div class='method_details'>
|
| 329 |
-
<p class='signature' id='getPixel-instance'>
|
| 330 |
-
- (void) <strong>getPixel</strong>(x, y)
|
| 331 |
-
</p>
|
| 332 |
-
<div class='docstring'>
|
| 333 |
-
<p>Gets an RGBA object for an arbitrary pixel in the canvas specified by absolute X, Y coordinates</p>
|
| 334 |
-
</div>
|
| 335 |
-
<div class='tags'>
|
| 336 |
-
</div>
|
| 337 |
-
</div>
|
| 338 |
-
<div class='method_details'>
|
| 339 |
-
<p class='signature' id='putPixel-instance'>
|
| 340 |
-
- (void) <strong>putPixel</strong>(x, y, rgba)
|
| 341 |
-
</p>
|
| 342 |
-
<div class='docstring'>
|
| 343 |
-
<p>Updates the pixel at the given X, Y coordinate</p>
|
| 344 |
-
</div>
|
| 345 |
-
<div class='tags'>
|
| 346 |
-
</div>
|
| 347 |
-
</div>
|
| 348 |
-
<div class='method_details'>
|
| 349 |
-
<p class='signature' id='toString-instance'>
|
| 350 |
-
- (void) <strong>toString</strong>()
|
| 351 |
-
</p>
|
| 352 |
-
<div class='tags'>
|
| 353 |
-
</div>
|
| 354 |
-
</div>
|
| 355 |
-
<div class='method_details'>
|
| 356 |
-
<p class='signature' id='toHex-instance'>
|
| 357 |
-
- (void) <strong>toHex</strong>(includeAlpha = false)
|
| 358 |
-
</p>
|
| 359 |
-
<div class='tags'>
|
| 360 |
-
</div>
|
| 361 |
-
</div>
|
| 362 |
-
</div>
|
| 363 |
-
</div>
|
| 364 |
-
<div id='footer'>
|
| 365 |
-
Generated on
|
| 366 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 367 |
-
by
|
| 368 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 369 |
-
v1.7.0
|
| 370 |
-
(Node.js v0.10.21).
|
| 371 |
-
✲
|
| 372 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 373 |
-
✲
|
| 374 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 375 |
-
✲
|
| 376 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 377 |
-
</div>
|
| 378 |
-
</body>
|
| 379 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Plugin.html
DELETED
|
@@ -1,181 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Plugin</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Plugin
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/plugin.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Stores and registers standalone plugins</p>
|
| 122 |
-
</div>
|
| 123 |
-
<div class='tags'>
|
| 124 |
-
</div>
|
| 125 |
-
<h2>Class Method Summary</h2>
|
| 126 |
-
<ul class='summary'>
|
| 127 |
-
<li>
|
| 128 |
-
<span class='signature'>
|
| 129 |
-
<a href='#register-class'>
|
| 130 |
-
+ (void) <strong>register</strong>(name, plugin)
|
| 131 |
-
</a>
|
| 132 |
-
</span>
|
| 133 |
-
<span class='desc'>
|
| 134 |
-
|
| 135 |
-
</span>
|
| 136 |
-
</li>
|
| 137 |
-
<li>
|
| 138 |
-
<span class='signature'>
|
| 139 |
-
<a href='#execute-class'>
|
| 140 |
-
+ (void) <strong>execute</strong>(context, name, args)
|
| 141 |
-
</a>
|
| 142 |
-
</span>
|
| 143 |
-
<span class='desc'>
|
| 144 |
-
|
| 145 |
-
</span>
|
| 146 |
-
</li>
|
| 147 |
-
</ul>
|
| 148 |
-
<h2>Class Method Details</h2>
|
| 149 |
-
<div class='methods'>
|
| 150 |
-
<div class='method_details'>
|
| 151 |
-
<p class='signature' id='register-class'>
|
| 152 |
-
+ (void) <strong>register</strong>(name, plugin)
|
| 153 |
-
</p>
|
| 154 |
-
<div class='tags'>
|
| 155 |
-
</div>
|
| 156 |
-
</div>
|
| 157 |
-
<div class='method_details'>
|
| 158 |
-
<p class='signature' id='execute-class'>
|
| 159 |
-
+ (void) <strong>execute</strong>(context, name, args)
|
| 160 |
-
</p>
|
| 161 |
-
<div class='tags'>
|
| 162 |
-
</div>
|
| 163 |
-
</div>
|
| 164 |
-
</div>
|
| 165 |
-
</div>
|
| 166 |
-
<div id='footer'>
|
| 167 |
-
Generated on
|
| 168 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 169 |
-
by
|
| 170 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 171 |
-
v1.7.0
|
| 172 |
-
(Node.js v0.10.21).
|
| 173 |
-
✲
|
| 174 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 175 |
-
✲
|
| 176 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 177 |
-
✲
|
| 178 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 179 |
-
</div>
|
| 180 |
-
</body>
|
| 181 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Renderer.html
DELETED
|
@@ -1,385 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Renderer</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Renderer
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/renderer.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Handles all of the various rendering methods in Caman. Most of the image modification happens
|
| 122 |
-
here. A new Renderer object is created for every render operation.</p>
|
| 123 |
-
</div>
|
| 124 |
-
<div class='tags'>
|
| 125 |
-
</div>
|
| 126 |
-
<h2>Instance Method Summary</h2>
|
| 127 |
-
<ul class='summary'>
|
| 128 |
-
<li>
|
| 129 |
-
<span class='signature'>
|
| 130 |
-
<a href='#constructor-instance'>
|
| 131 |
-
- (void) <strong>constructor</strong>(c)
|
| 132 |
-
</a>
|
| 133 |
-
</span>
|
| 134 |
-
<span class='constructor note title'>Constructor</span>
|
| 135 |
-
<span class='desc'>
|
| 136 |
-
|
| 137 |
-
</span>
|
| 138 |
-
</li>
|
| 139 |
-
<li>
|
| 140 |
-
<span class='signature'>
|
| 141 |
-
<a href='#add-instance'>
|
| 142 |
-
- (void) <strong>add</strong>(job)
|
| 143 |
-
</a>
|
| 144 |
-
</span>
|
| 145 |
-
<span class='desc'>
|
| 146 |
-
|
| 147 |
-
</span>
|
| 148 |
-
</li>
|
| 149 |
-
<li>
|
| 150 |
-
<span class='signature'>
|
| 151 |
-
<a href='#processNext-instance'>
|
| 152 |
-
- (void) <strong>processNext</strong>()
|
| 153 |
-
</a>
|
| 154 |
-
</span>
|
| 155 |
-
<span class='bound note title'>Bound</span>
|
| 156 |
-
<span class='desc'>
|
| 157 |
-
Grabs the next operation from the render queue and passes it to Renderer for execution
|
| 158 |
-
</span>
|
| 159 |
-
</li>
|
| 160 |
-
<li>
|
| 161 |
-
<span class='signature'>
|
| 162 |
-
<a href='#execute-instance'>
|
| 163 |
-
- (void) <strong>execute</strong>(callback)
|
| 164 |
-
</a>
|
| 165 |
-
</span>
|
| 166 |
-
<span class='desc'>
|
| 167 |
-
|
| 168 |
-
</span>
|
| 169 |
-
</li>
|
| 170 |
-
<li>
|
| 171 |
-
<span class='signature'>
|
| 172 |
-
<a href='#eachBlock-instance'>
|
| 173 |
-
- (void) <strong>eachBlock</strong>(fn)
|
| 174 |
-
</a>
|
| 175 |
-
</span>
|
| 176 |
-
<span class='desc'>
|
| 177 |
-
|
| 178 |
-
</span>
|
| 179 |
-
</li>
|
| 180 |
-
<li>
|
| 181 |
-
<span class='signature'>
|
| 182 |
-
<a href='#executeFilter-instance'>
|
| 183 |
-
- (void) <strong>executeFilter</strong>()
|
| 184 |
-
</a>
|
| 185 |
-
</span>
|
| 186 |
-
<span class='desc'>
|
| 187 |
-
The core of the image rendering, this function executes the provided filter.
|
| 188 |
-
</span>
|
| 189 |
-
</li>
|
| 190 |
-
<li>
|
| 191 |
-
<span class='signature'>
|
| 192 |
-
<a href='#executePlugin-instance'>
|
| 193 |
-
- (void) <strong>executePlugin</strong>()
|
| 194 |
-
</a>
|
| 195 |
-
</span>
|
| 196 |
-
<span class='desc'>
|
| 197 |
-
Executes a standalone plugin
|
| 198 |
-
</span>
|
| 199 |
-
</li>
|
| 200 |
-
<li>
|
| 201 |
-
<span class='signature'>
|
| 202 |
-
<a href='#renderBlock-instance'>
|
| 203 |
-
- (void) <strong>renderBlock</strong>(bnum, start, end)
|
| 204 |
-
</a>
|
| 205 |
-
</span>
|
| 206 |
-
<span class='desc'>
|
| 207 |
-
Renders a single block of the canvas with the current filter function
|
| 208 |
-
</span>
|
| 209 |
-
</li>
|
| 210 |
-
<li>
|
| 211 |
-
<span class='signature'>
|
| 212 |
-
<a href='#renderKernel-instance'>
|
| 213 |
-
- (void) <strong>renderKernel</strong>(bnum, start, end)
|
| 214 |
-
</a>
|
| 215 |
-
</span>
|
| 216 |
-
<span class='desc'>
|
| 217 |
-
Applies an image kernel to the canvas
|
| 218 |
-
</span>
|
| 219 |
-
</li>
|
| 220 |
-
<li>
|
| 221 |
-
<span class='signature'>
|
| 222 |
-
<a href='#blockFinished-instance'>
|
| 223 |
-
- (void) <strong>blockFinished</strong>(bnum)
|
| 224 |
-
</a>
|
| 225 |
-
</span>
|
| 226 |
-
<span class='desc'>
|
| 227 |
-
Called when a single block is finished rendering.
|
| 228 |
-
</span>
|
| 229 |
-
</li>
|
| 230 |
-
<li>
|
| 231 |
-
<span class='signature'>
|
| 232 |
-
<a href='#processKernel-instance'>
|
| 233 |
-
- (void) <strong>processKernel</strong>(adjust, kernel, divisor, bias)
|
| 234 |
-
</a>
|
| 235 |
-
</span>
|
| 236 |
-
<span class='desc'>
|
| 237 |
-
The "filter function" for kernel adjustments.
|
| 238 |
-
</span>
|
| 239 |
-
</li>
|
| 240 |
-
<li>
|
| 241 |
-
<span class='signature'>
|
| 242 |
-
<a href='#loadOverlay-instance'>
|
| 243 |
-
- (void) <strong>loadOverlay</strong>(layer, src)
|
| 244 |
-
</a>
|
| 245 |
-
</span>
|
| 246 |
-
<span class='desc'>
|
| 247 |
-
Loads an image onto the current canvas
|
| 248 |
-
</span>
|
| 249 |
-
</li>
|
| 250 |
-
</ul>
|
| 251 |
-
<h2>Constructor Details</h2>
|
| 252 |
-
<div class='methods'>
|
| 253 |
-
<div class='method_details'>
|
| 254 |
-
<p class='signature' id='constructor-instance'>
|
| 255 |
-
- (void) <strong>constructor</strong>(c)
|
| 256 |
-
</p>
|
| 257 |
-
<div class='tags'>
|
| 258 |
-
</div>
|
| 259 |
-
</div>
|
| 260 |
-
</div>
|
| 261 |
-
<h2>Instance Method Details</h2>
|
| 262 |
-
<div class='methods'>
|
| 263 |
-
<div class='method_details'>
|
| 264 |
-
<p class='signature' id='add-instance'>
|
| 265 |
-
- (void) <strong>add</strong>(job)
|
| 266 |
-
</p>
|
| 267 |
-
<div class='tags'>
|
| 268 |
-
</div>
|
| 269 |
-
</div>
|
| 270 |
-
<div class='method_details'>
|
| 271 |
-
<p class='signature' id='processNext-instance'>
|
| 272 |
-
- (void) <strong>processNext</strong>()
|
| 273 |
-
(bound)
|
| 274 |
-
</p>
|
| 275 |
-
<div class='docstring'>
|
| 276 |
-
<p>Grabs the next operation from the render queue and passes it to Renderer
|
| 277 |
-
for execution</p>
|
| 278 |
-
</div>
|
| 279 |
-
<div class='tags'>
|
| 280 |
-
</div>
|
| 281 |
-
</div>
|
| 282 |
-
<div class='method_details'>
|
| 283 |
-
<p class='signature' id='execute-instance'>
|
| 284 |
-
- (void) <strong>execute</strong>(callback)
|
| 285 |
-
</p>
|
| 286 |
-
<div class='tags'>
|
| 287 |
-
</div>
|
| 288 |
-
</div>
|
| 289 |
-
<div class='method_details'>
|
| 290 |
-
<p class='signature' id='eachBlock-instance'>
|
| 291 |
-
- (void) <strong>eachBlock</strong>(fn)
|
| 292 |
-
</p>
|
| 293 |
-
<div class='tags'>
|
| 294 |
-
</div>
|
| 295 |
-
</div>
|
| 296 |
-
<div class='method_details'>
|
| 297 |
-
<p class='signature' id='executeFilter-instance'>
|
| 298 |
-
- (void) <strong>executeFilter</strong>()
|
| 299 |
-
</p>
|
| 300 |
-
<div class='docstring'>
|
| 301 |
-
<p>The core of the image rendering, this function executes the provided filter.</p><p>NOTE: this does not write the updated pixel data to the canvas. That happens when all filters
|
| 302 |
-
are finished rendering in order to be as fast as possible.</p>
|
| 303 |
-
</div>
|
| 304 |
-
<div class='tags'>
|
| 305 |
-
</div>
|
| 306 |
-
</div>
|
| 307 |
-
<div class='method_details'>
|
| 308 |
-
<p class='signature' id='executePlugin-instance'>
|
| 309 |
-
- (void) <strong>executePlugin</strong>()
|
| 310 |
-
</p>
|
| 311 |
-
<div class='docstring'>
|
| 312 |
-
<p>Executes a standalone plugin</p>
|
| 313 |
-
</div>
|
| 314 |
-
<div class='tags'>
|
| 315 |
-
</div>
|
| 316 |
-
</div>
|
| 317 |
-
<div class='method_details'>
|
| 318 |
-
<p class='signature' id='renderBlock-instance'>
|
| 319 |
-
- (void) <strong>renderBlock</strong>(bnum, start, end)
|
| 320 |
-
</p>
|
| 321 |
-
<div class='docstring'>
|
| 322 |
-
<p>Renders a single block of the canvas with the current filter function</p>
|
| 323 |
-
</div>
|
| 324 |
-
<div class='tags'>
|
| 325 |
-
</div>
|
| 326 |
-
</div>
|
| 327 |
-
<div class='method_details'>
|
| 328 |
-
<p class='signature' id='renderKernel-instance'>
|
| 329 |
-
- (void) <strong>renderKernel</strong>(bnum, start, end)
|
| 330 |
-
</p>
|
| 331 |
-
<div class='docstring'>
|
| 332 |
-
<p>Applies an image kernel to the canvas</p>
|
| 333 |
-
</div>
|
| 334 |
-
<div class='tags'>
|
| 335 |
-
</div>
|
| 336 |
-
</div>
|
| 337 |
-
<div class='method_details'>
|
| 338 |
-
<p class='signature' id='blockFinished-instance'>
|
| 339 |
-
- (void) <strong>blockFinished</strong>(bnum)
|
| 340 |
-
</p>
|
| 341 |
-
<div class='docstring'>
|
| 342 |
-
<p>Called when a single block is finished rendering. Once all blocks are done, we signal that this
|
| 343 |
-
filter is finished rendering and continue to the next step.</p>
|
| 344 |
-
</div>
|
| 345 |
-
<div class='tags'>
|
| 346 |
-
</div>
|
| 347 |
-
</div>
|
| 348 |
-
<div class='method_details'>
|
| 349 |
-
<p class='signature' id='processKernel-instance'>
|
| 350 |
-
- (void) <strong>processKernel</strong>(adjust, kernel, divisor, bias)
|
| 351 |
-
</p>
|
| 352 |
-
<div class='docstring'>
|
| 353 |
-
<p>The "filter function" for kernel adjustments.</p>
|
| 354 |
-
</div>
|
| 355 |
-
<div class='tags'>
|
| 356 |
-
</div>
|
| 357 |
-
</div>
|
| 358 |
-
<div class='method_details'>
|
| 359 |
-
<p class='signature' id='loadOverlay-instance'>
|
| 360 |
-
- (void) <strong>loadOverlay</strong>(layer, src)
|
| 361 |
-
</p>
|
| 362 |
-
<div class='docstring'>
|
| 363 |
-
<p>Loads an image onto the current canvas</p>
|
| 364 |
-
</div>
|
| 365 |
-
<div class='tags'>
|
| 366 |
-
</div>
|
| 367 |
-
</div>
|
| 368 |
-
</div>
|
| 369 |
-
</div>
|
| 370 |
-
<div id='footer'>
|
| 371 |
-
Generated on
|
| 372 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 373 |
-
by
|
| 374 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 375 |
-
v1.7.0
|
| 376 |
-
(Node.js v0.10.21).
|
| 377 |
-
✲
|
| 378 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 379 |
-
✲
|
| 380 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 381 |
-
✲
|
| 382 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 383 |
-
</div>
|
| 384 |
-
</body>
|
| 385 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Caman/Store.html
DELETED
|
@@ -1,233 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<a href='../../classes/Caman.html' title='Caman'>Caman</a>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>Store</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
Class:
|
| 111 |
-
Caman.Store
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>src/core/store.coffee</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Overview</h2>
|
| 120 |
-
<div class='docstring'>
|
| 121 |
-
<p>Used for storing instances of CamanInstance objects such that, when Caman() is called on an
|
| 122 |
-
already initialized element, it returns that object instead of re-initializing.</p>
|
| 123 |
-
</div>
|
| 124 |
-
<div class='tags'>
|
| 125 |
-
</div>
|
| 126 |
-
<h2>Class Method Summary</h2>
|
| 127 |
-
<ul class='summary'>
|
| 128 |
-
<li>
|
| 129 |
-
<span class='signature'>
|
| 130 |
-
<a href='#has-class'>
|
| 131 |
-
+ (void) <strong>has</strong>(search)
|
| 132 |
-
</a>
|
| 133 |
-
</span>
|
| 134 |
-
<span class='desc'>
|
| 135 |
-
|
| 136 |
-
</span>
|
| 137 |
-
</li>
|
| 138 |
-
<li>
|
| 139 |
-
<span class='signature'>
|
| 140 |
-
<a href='#get-class'>
|
| 141 |
-
+ (void) <strong>get</strong>(search)
|
| 142 |
-
</a>
|
| 143 |
-
</span>
|
| 144 |
-
<span class='desc'>
|
| 145 |
-
|
| 146 |
-
</span>
|
| 147 |
-
</li>
|
| 148 |
-
<li>
|
| 149 |
-
<span class='signature'>
|
| 150 |
-
<a href='#put-class'>
|
| 151 |
-
+ (void) <strong>put</strong>(name, obj)
|
| 152 |
-
</a>
|
| 153 |
-
</span>
|
| 154 |
-
<span class='desc'>
|
| 155 |
-
|
| 156 |
-
</span>
|
| 157 |
-
</li>
|
| 158 |
-
<li>
|
| 159 |
-
<span class='signature'>
|
| 160 |
-
<a href='#execute-class'>
|
| 161 |
-
+ (void) <strong>execute</strong>(search, callback)
|
| 162 |
-
</a>
|
| 163 |
-
</span>
|
| 164 |
-
<span class='desc'>
|
| 165 |
-
|
| 166 |
-
</span>
|
| 167 |
-
</li>
|
| 168 |
-
<li>
|
| 169 |
-
<span class='signature'>
|
| 170 |
-
<a href='#flush-class'>
|
| 171 |
-
+ (void) <strong>flush</strong>(name = false)
|
| 172 |
-
</a>
|
| 173 |
-
</span>
|
| 174 |
-
<span class='desc'>
|
| 175 |
-
|
| 176 |
-
</span>
|
| 177 |
-
</li>
|
| 178 |
-
</ul>
|
| 179 |
-
<h2>Class Method Details</h2>
|
| 180 |
-
<div class='methods'>
|
| 181 |
-
<div class='method_details'>
|
| 182 |
-
<p class='signature' id='has-class'>
|
| 183 |
-
+ (void) <strong>has</strong>(search)
|
| 184 |
-
</p>
|
| 185 |
-
<div class='tags'>
|
| 186 |
-
</div>
|
| 187 |
-
</div>
|
| 188 |
-
<div class='method_details'>
|
| 189 |
-
<p class='signature' id='get-class'>
|
| 190 |
-
+ (void) <strong>get</strong>(search)
|
| 191 |
-
</p>
|
| 192 |
-
<div class='tags'>
|
| 193 |
-
</div>
|
| 194 |
-
</div>
|
| 195 |
-
<div class='method_details'>
|
| 196 |
-
<p class='signature' id='put-class'>
|
| 197 |
-
+ (void) <strong>put</strong>(name, obj)
|
| 198 |
-
</p>
|
| 199 |
-
<div class='tags'>
|
| 200 |
-
</div>
|
| 201 |
-
</div>
|
| 202 |
-
<div class='method_details'>
|
| 203 |
-
<p class='signature' id='execute-class'>
|
| 204 |
-
+ (void) <strong>execute</strong>(search, callback)
|
| 205 |
-
</p>
|
| 206 |
-
<div class='tags'>
|
| 207 |
-
</div>
|
| 208 |
-
</div>
|
| 209 |
-
<div class='method_details'>
|
| 210 |
-
<p class='signature' id='flush-class'>
|
| 211 |
-
+ (void) <strong>flush</strong>(name = false)
|
| 212 |
-
</p>
|
| 213 |
-
<div class='tags'>
|
| 214 |
-
</div>
|
| 215 |
-
</div>
|
| 216 |
-
</div>
|
| 217 |
-
</div>
|
| 218 |
-
<div id='footer'>
|
| 219 |
-
Generated on
|
| 220 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 221 |
-
by
|
| 222 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 223 |
-
v1.7.0
|
| 224 |
-
(Node.js v0.10.21).
|
| 225 |
-
✲
|
| 226 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 227 |
-
✲
|
| 228 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 229 |
-
✲
|
| 230 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 231 |
-
</div>
|
| 232 |
-
</body>
|
| 233 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/CamanParser.html
DELETED
|
@@ -1,243 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../assets/codo.js'></script>
|
| 8 |
-
<script src='../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>CamanParser</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='../class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='../file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='../method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='../extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<h1>
|
| 108 |
-
Class:
|
| 109 |
-
CamanParser
|
| 110 |
-
</h1>
|
| 111 |
-
<table class='box'>
|
| 112 |
-
<tr>
|
| 113 |
-
<td>Defined in:</td>
|
| 114 |
-
<td>src/core/autoload.coffee</td>
|
| 115 |
-
</tr>
|
| 116 |
-
</table>
|
| 117 |
-
<h2>Overview</h2>
|
| 118 |
-
<div class='docstring'>
|
| 119 |
-
<p>Parses Caman instructions embedded in the HTML data-caman attribute.</p>
|
| 120 |
-
</div>
|
| 121 |
-
<div class='tags'>
|
| 122 |
-
</div>
|
| 123 |
-
<h2>Constant Summary</h2>
|
| 124 |
-
<dl class='constants'>
|
| 125 |
-
<dt id='INST_REGEX-constant'>
|
| 126 |
-
INST_REGEX
|
| 127 |
-
=
|
| 128 |
-
<div class='docstring'>
|
| 129 |
-
<p>Regex used for parsing options out of the data-caman attribute.</p>
|
| 130 |
-
</div>
|
| 131 |
-
<div class='tags'>
|
| 132 |
-
</div>
|
| 133 |
-
</dt>
|
| 134 |
-
<dd>
|
| 135 |
-
<pre><code class='coffee'>"(\\w+)\\((.*?)\\)"</code></pre>
|
| 136 |
-
</dd>
|
| 137 |
-
</dl>
|
| 138 |
-
<h2>Instance Method Summary</h2>
|
| 139 |
-
<ul class='summary'>
|
| 140 |
-
<li>
|
| 141 |
-
<span class='signature'>
|
| 142 |
-
<a href='#constructor-instance'>
|
| 143 |
-
- (void) <strong>constructor</strong>(ele, ready)
|
| 144 |
-
</a>
|
| 145 |
-
</span>
|
| 146 |
-
<span class='constructor note title'>Constructor</span>
|
| 147 |
-
<span class='desc'>
|
| 148 |
-
Creates a new parser instance.
|
| 149 |
-
</span>
|
| 150 |
-
</li>
|
| 151 |
-
<li>
|
| 152 |
-
<span class='signature'>
|
| 153 |
-
<a href='#parse-instance'>
|
| 154 |
-
- (void) <strong>parse</strong>()
|
| 155 |
-
</a>
|
| 156 |
-
</span>
|
| 157 |
-
<span class='desc'>
|
| 158 |
-
Parse the DOM object and call the parsed filter functions on the Caman object.
|
| 159 |
-
</span>
|
| 160 |
-
</li>
|
| 161 |
-
<li>
|
| 162 |
-
<span class='signature'>
|
| 163 |
-
<a href='#execute-instance'>
|
| 164 |
-
- (void) <strong>execute</strong>()
|
| 165 |
-
</a>
|
| 166 |
-
</span>
|
| 167 |
-
<span class='desc'>
|
| 168 |
-
Execute <a href='../classes/Caman.html#render-instance'>Caman#render</a> on this Caman instance.
|
| 169 |
-
</span>
|
| 170 |
-
</li>
|
| 171 |
-
</ul>
|
| 172 |
-
<h2>Constructor Details</h2>
|
| 173 |
-
<div class='methods'>
|
| 174 |
-
<div class='method_details'>
|
| 175 |
-
<p class='signature' id='constructor-instance'>
|
| 176 |
-
- (void) <strong>constructor</strong>(ele, ready)
|
| 177 |
-
</p>
|
| 178 |
-
<div class='docstring'>
|
| 179 |
-
<p>Creates a new parser instance.</p>
|
| 180 |
-
</div>
|
| 181 |
-
<div class='tags'>
|
| 182 |
-
<h3>Parameters:</h3>
|
| 183 |
-
<ul class='param'>
|
| 184 |
-
<li>
|
| 185 |
-
<span class='name'>ele</span>
|
| 186 |
-
<span class='type'>
|
| 187 |
-
(<tt>DOMObject</tt>)
|
| 188 |
-
</span>
|
| 189 |
-
—
|
| 190 |
-
<span class='desc'>DOM object to be instantiated with CamanJS</span>
|
| 191 |
-
</li>
|
| 192 |
-
<li>
|
| 193 |
-
<span class='name'>ready</span>
|
| 194 |
-
<span class='type'>
|
| 195 |
-
(<tt>Function</tt>)
|
| 196 |
-
</span>
|
| 197 |
-
—
|
| 198 |
-
<span class='desc'>Callback function to pass to CamanJS</span>
|
| 199 |
-
</li>
|
| 200 |
-
</ul>
|
| 201 |
-
</div>
|
| 202 |
-
</div>
|
| 203 |
-
</div>
|
| 204 |
-
<h2>Instance Method Details</h2>
|
| 205 |
-
<div class='methods'>
|
| 206 |
-
<div class='method_details'>
|
| 207 |
-
<p class='signature' id='parse-instance'>
|
| 208 |
-
- (void) <strong>parse</strong>()
|
| 209 |
-
</p>
|
| 210 |
-
<div class='docstring'>
|
| 211 |
-
<p>Parse the DOM object and call the parsed filter functions on the Caman object.</p>
|
| 212 |
-
</div>
|
| 213 |
-
<div class='tags'>
|
| 214 |
-
</div>
|
| 215 |
-
</div>
|
| 216 |
-
<div class='method_details'>
|
| 217 |
-
<p class='signature' id='execute-instance'>
|
| 218 |
-
- (void) <strong>execute</strong>()
|
| 219 |
-
</p>
|
| 220 |
-
<div class='docstring'>
|
| 221 |
-
<p>Execute <a href='../classes/Caman.html#render-instance'>Caman#render</a> on this Caman instance.</p>
|
| 222 |
-
</div>
|
| 223 |
-
<div class='tags'>
|
| 224 |
-
</div>
|
| 225 |
-
</div>
|
| 226 |
-
</div>
|
| 227 |
-
</div>
|
| 228 |
-
<div id='footer'>
|
| 229 |
-
Generated on
|
| 230 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 231 |
-
by
|
| 232 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 233 |
-
v1.7.0
|
| 234 |
-
(Node.js v0.10.21).
|
| 235 |
-
✲
|
| 236 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 237 |
-
✲
|
| 238 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 239 |
-
✲
|
| 240 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 241 |
-
</div>
|
| 242 |
-
</body>
|
| 243 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Module.html
DELETED
|
@@ -1,265 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../assets/codo.js'></script>
|
| 8 |
-
<script src='../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>Module</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='../class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='../file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='../method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='../extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<h1>
|
| 108 |
-
Class:
|
| 109 |
-
Module
|
| 110 |
-
</h1>
|
| 111 |
-
<table class='box'>
|
| 112 |
-
<tr>
|
| 113 |
-
<td>Defined in:</td>
|
| 114 |
-
<td>src/core/module.coffee</td>
|
| 115 |
-
</tr>
|
| 116 |
-
</table>
|
| 117 |
-
<h2>Direct Known Subclasses</h2>
|
| 118 |
-
<p class='children'>
|
| 119 |
-
<a href='../classes/Caman.html'>Caman</a>
|
| 120 |
-
</p>
|
| 121 |
-
<h2>Class Method Summary</h2>
|
| 122 |
-
<ul class='summary'>
|
| 123 |
-
<li>
|
| 124 |
-
<span class='signature'>
|
| 125 |
-
<a href='#extends-class'>
|
| 126 |
-
+ (void) <strong>extends</strong>(obj)
|
| 127 |
-
</a>
|
| 128 |
-
</span>
|
| 129 |
-
<span class='desc'>
|
| 130 |
-
Extend the base object itself like a static method
|
| 131 |
-
</span>
|
| 132 |
-
</li>
|
| 133 |
-
<li>
|
| 134 |
-
<span class='signature'>
|
| 135 |
-
<a href='#includes-class'>
|
| 136 |
-
+ (void) <strong>includes</strong>(obj)
|
| 137 |
-
</a>
|
| 138 |
-
</span>
|
| 139 |
-
<span class='desc'>
|
| 140 |
-
Include methods on the object prototype
|
| 141 |
-
</span>
|
| 142 |
-
</li>
|
| 143 |
-
<li>
|
| 144 |
-
<span class='signature'>
|
| 145 |
-
<a href='#delegate-class'>
|
| 146 |
-
+ (void) <strong>delegate</strong>(args...)
|
| 147 |
-
</a>
|
| 148 |
-
</span>
|
| 149 |
-
<span class='desc'>
|
| 150 |
-
Add methods on this prototype that point to another method on another object's prototype.
|
| 151 |
-
</span>
|
| 152 |
-
</li>
|
| 153 |
-
<li>
|
| 154 |
-
<span class='signature'>
|
| 155 |
-
<a href='#aliasFunction-class'>
|
| 156 |
-
+ (void) <strong>aliasFunction</strong>(to, from)
|
| 157 |
-
</a>
|
| 158 |
-
</span>
|
| 159 |
-
<span class='desc'>
|
| 160 |
-
Create an alias for a function
|
| 161 |
-
</span>
|
| 162 |
-
</li>
|
| 163 |
-
<li>
|
| 164 |
-
<span class='signature'>
|
| 165 |
-
<a href='#aliasProperty-class'>
|
| 166 |
-
+ (void) <strong>aliasProperty</strong>(to, from)
|
| 167 |
-
</a>
|
| 168 |
-
</span>
|
| 169 |
-
<span class='desc'>
|
| 170 |
-
Create an alias for a property
|
| 171 |
-
</span>
|
| 172 |
-
</li>
|
| 173 |
-
<li>
|
| 174 |
-
<span class='signature'>
|
| 175 |
-
<a href='#included-class'>
|
| 176 |
-
+ (void) <strong>included</strong>(func)
|
| 177 |
-
</a>
|
| 178 |
-
</span>
|
| 179 |
-
<span class='desc'>
|
| 180 |
-
Execute a function in the context of the object, and pass a reference to the object's prototype.
|
| 181 |
-
</span>
|
| 182 |
-
</li>
|
| 183 |
-
</ul>
|
| 184 |
-
<h2>Class Method Details</h2>
|
| 185 |
-
<div class='methods'>
|
| 186 |
-
<div class='method_details'>
|
| 187 |
-
<p class='signature' id='extends-class'>
|
| 188 |
-
+ (void) <strong>extends</strong>(obj)
|
| 189 |
-
</p>
|
| 190 |
-
<div class='docstring'>
|
| 191 |
-
<p>Extend the base object itself like a static method</p>
|
| 192 |
-
</div>
|
| 193 |
-
<div class='tags'>
|
| 194 |
-
</div>
|
| 195 |
-
</div>
|
| 196 |
-
<div class='method_details'>
|
| 197 |
-
<p class='signature' id='includes-class'>
|
| 198 |
-
+ (void) <strong>includes</strong>(obj)
|
| 199 |
-
</p>
|
| 200 |
-
<div class='docstring'>
|
| 201 |
-
<p>Include methods on the object prototype</p>
|
| 202 |
-
</div>
|
| 203 |
-
<div class='tags'>
|
| 204 |
-
</div>
|
| 205 |
-
</div>
|
| 206 |
-
<div class='method_details'>
|
| 207 |
-
<p class='signature' id='delegate-class'>
|
| 208 |
-
+ (void) <strong>delegate</strong>(args...)
|
| 209 |
-
</p>
|
| 210 |
-
<div class='docstring'>
|
| 211 |
-
<p>Add methods on this prototype that point to another method
|
| 212 |
-
on another object's prototype.</p>
|
| 213 |
-
</div>
|
| 214 |
-
<div class='tags'>
|
| 215 |
-
</div>
|
| 216 |
-
</div>
|
| 217 |
-
<div class='method_details'>
|
| 218 |
-
<p class='signature' id='aliasFunction-class'>
|
| 219 |
-
+ (void) <strong>aliasFunction</strong>(to, from)
|
| 220 |
-
</p>
|
| 221 |
-
<div class='docstring'>
|
| 222 |
-
<p>Create an alias for a function</p>
|
| 223 |
-
</div>
|
| 224 |
-
<div class='tags'>
|
| 225 |
-
</div>
|
| 226 |
-
</div>
|
| 227 |
-
<div class='method_details'>
|
| 228 |
-
<p class='signature' id='aliasProperty-class'>
|
| 229 |
-
+ (void) <strong>aliasProperty</strong>(to, from)
|
| 230 |
-
</p>
|
| 231 |
-
<div class='docstring'>
|
| 232 |
-
<p>Create an alias for a property</p>
|
| 233 |
-
</div>
|
| 234 |
-
<div class='tags'>
|
| 235 |
-
</div>
|
| 236 |
-
</div>
|
| 237 |
-
<div class='method_details'>
|
| 238 |
-
<p class='signature' id='included-class'>
|
| 239 |
-
+ (void) <strong>included</strong>(func)
|
| 240 |
-
</p>
|
| 241 |
-
<div class='docstring'>
|
| 242 |
-
<p>Execute a function in the context of the object, and pass
|
| 243 |
-
a reference to the object's prototype.</p>
|
| 244 |
-
</div>
|
| 245 |
-
<div class='tags'>
|
| 246 |
-
</div>
|
| 247 |
-
</div>
|
| 248 |
-
</div>
|
| 249 |
-
</div>
|
| 250 |
-
<div id='footer'>
|
| 251 |
-
Generated on
|
| 252 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 253 |
-
by
|
| 254 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 255 |
-
v1.7.0
|
| 256 |
-
(Node.js v0.10.21).
|
| 257 |
-
✲
|
| 258 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 259 |
-
✲
|
| 260 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 261 |
-
✲
|
| 262 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 263 |
-
</div>
|
| 264 |
-
</body>
|
| 265 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/classes/Util.html
DELETED
|
@@ -1,217 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../assets/codo.js'></script>
|
| 8 |
-
<script src='../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>Util</span>
|
| 19 |
-
<nav>
|
| 20 |
-
<ul>
|
| 21 |
-
<li class='noframes'>
|
| 22 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 23 |
-
</li>
|
| 24 |
-
</ul>
|
| 25 |
-
</nav>
|
| 26 |
-
<div id='search'>
|
| 27 |
-
<a id='class_list_link' href='../class_list.html'>Classes</a>
|
| 28 |
-
<a id='file_list_link' href='../file_list.html'>Files</a>
|
| 29 |
-
<a id='method_list_link' href='../method_list.html'>Methods</a>
|
| 30 |
-
<a id='extra_list_link' href='../extra_list.html'>Extras</a>
|
| 31 |
-
</div>
|
| 32 |
-
</div>
|
| 33 |
-
<iframe id='search_frame'></iframe>
|
| 34 |
-
<div id='fuzzySearch'>
|
| 35 |
-
<input type='text'>
|
| 36 |
-
<ol></ol>
|
| 37 |
-
</div>
|
| 38 |
-
<div id='help'>
|
| 39 |
-
<p>
|
| 40 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 41 |
-
</p>
|
| 42 |
-
<ul>
|
| 43 |
-
<li>
|
| 44 |
-
<span>Ctrl-T</span>
|
| 45 |
-
Open fuzzy finder dialog
|
| 46 |
-
</li>
|
| 47 |
-
</ul>
|
| 48 |
-
<p>
|
| 49 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 50 |
-
</p>
|
| 51 |
-
<ul>
|
| 52 |
-
<li>
|
| 53 |
-
<span>Ctrl-L</span>
|
| 54 |
-
Toggle list view
|
| 55 |
-
</li>
|
| 56 |
-
</ul>
|
| 57 |
-
<p>
|
| 58 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 59 |
-
</p>
|
| 60 |
-
<ul>
|
| 61 |
-
<li>
|
| 62 |
-
<span>Ctrl-C</span>
|
| 63 |
-
Class list
|
| 64 |
-
</li>
|
| 65 |
-
<li>
|
| 66 |
-
<span>Ctrl-I</span>
|
| 67 |
-
Mixin list
|
| 68 |
-
</li>
|
| 69 |
-
<li>
|
| 70 |
-
<span>Ctrl-F</span>
|
| 71 |
-
File list
|
| 72 |
-
</li>
|
| 73 |
-
<li>
|
| 74 |
-
<span>Ctrl-M</span>
|
| 75 |
-
Method list
|
| 76 |
-
</li>
|
| 77 |
-
<li>
|
| 78 |
-
<span>Ctrl-E</span>
|
| 79 |
-
Extras list
|
| 80 |
-
</li>
|
| 81 |
-
</ul>
|
| 82 |
-
<p>
|
| 83 |
-
You can focus and blur the search input:
|
| 84 |
-
</p>
|
| 85 |
-
<ul>
|
| 86 |
-
<li>
|
| 87 |
-
<span>Ctrl-S</span>
|
| 88 |
-
Focus search input
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<span>Esc</span>
|
| 92 |
-
Blur search input
|
| 93 |
-
</li>
|
| 94 |
-
</ul>
|
| 95 |
-
<p>
|
| 96 |
-
In frameless mode you can close the list tab:
|
| 97 |
-
</p>
|
| 98 |
-
<ul>
|
| 99 |
-
<li>
|
| 100 |
-
<span>Esc</span>
|
| 101 |
-
Close list tab
|
| 102 |
-
</li>
|
| 103 |
-
</ul>
|
| 104 |
-
</div>
|
| 105 |
-
</div>
|
| 106 |
-
<div id='content'>
|
| 107 |
-
<h1>
|
| 108 |
-
Class:
|
| 109 |
-
Util
|
| 110 |
-
</h1>
|
| 111 |
-
<table class='box'>
|
| 112 |
-
<tr>
|
| 113 |
-
<td>Defined in:</td>
|
| 114 |
-
<td>src/core/util.coffee</td>
|
| 115 |
-
</tr>
|
| 116 |
-
</table>
|
| 117 |
-
<h2>Class Method Summary</h2>
|
| 118 |
-
<ul class='summary'>
|
| 119 |
-
<li>
|
| 120 |
-
<span class='signature'>
|
| 121 |
-
<a href='#extend-class'>
|
| 122 |
-
+ (void) <strong>extend</strong>(obj, src...)
|
| 123 |
-
</a>
|
| 124 |
-
</span>
|
| 125 |
-
<span class='desc'>
|
| 126 |
-
Helper function that extends one object with all the properies of other objects
|
| 127 |
-
</span>
|
| 128 |
-
</li>
|
| 129 |
-
<li>
|
| 130 |
-
<span class='signature'>
|
| 131 |
-
<a href='#clampRGB-class'>
|
| 132 |
-
+ (void) <strong>clampRGB</strong>(val)
|
| 133 |
-
</a>
|
| 134 |
-
</span>
|
| 135 |
-
<span class='desc'>
|
| 136 |
-
In order to stay true to the latest spec, RGB values must be clamped between 0 and 255.
|
| 137 |
-
</span>
|
| 138 |
-
</li>
|
| 139 |
-
<li>
|
| 140 |
-
<span class='signature'>
|
| 141 |
-
<a href='#copyAttributes-class'>
|
| 142 |
-
+ (void) <strong>copyAttributes</strong>(from, to, opts = {})
|
| 143 |
-
</a>
|
| 144 |
-
</span>
|
| 145 |
-
<span class='desc'>
|
| 146 |
-
|
| 147 |
-
</span>
|
| 148 |
-
</li>
|
| 149 |
-
<li>
|
| 150 |
-
<span class='signature'>
|
| 151 |
-
<a href='#dataArray-class'>
|
| 152 |
-
+ (void) <strong>dataArray</strong>(length = 0)
|
| 153 |
-
</a>
|
| 154 |
-
</span>
|
| 155 |
-
<span class='desc'>
|
| 156 |
-
Support for browsers that don't know Uint8Array (such as IE9)
|
| 157 |
-
</span>
|
| 158 |
-
</li>
|
| 159 |
-
</ul>
|
| 160 |
-
<h2>Class Method Details</h2>
|
| 161 |
-
<div class='methods'>
|
| 162 |
-
<div class='method_details'>
|
| 163 |
-
<p class='signature' id='extend-class'>
|
| 164 |
-
+ (void) <strong>extend</strong>(obj, src...)
|
| 165 |
-
</p>
|
| 166 |
-
<div class='docstring'>
|
| 167 |
-
<p>Helper function that extends one object with all the properies of other objects</p>
|
| 168 |
-
</div>
|
| 169 |
-
<div class='tags'>
|
| 170 |
-
</div>
|
| 171 |
-
</div>
|
| 172 |
-
<div class='method_details'>
|
| 173 |
-
<p class='signature' id='clampRGB-class'>
|
| 174 |
-
+ (void) <strong>clampRGB</strong>(val)
|
| 175 |
-
</p>
|
| 176 |
-
<div class='docstring'>
|
| 177 |
-
<p>In order to stay true to the latest spec, RGB values must be clamped between
|
| 178 |
-
0 and 255. If we don't do this, weird things happen.</p>
|
| 179 |
-
</div>
|
| 180 |
-
<div class='tags'>
|
| 181 |
-
</div>
|
| 182 |
-
</div>
|
| 183 |
-
<div class='method_details'>
|
| 184 |
-
<p class='signature' id='copyAttributes-class'>
|
| 185 |
-
+ (void) <strong>copyAttributes</strong>(from, to, opts = {})
|
| 186 |
-
</p>
|
| 187 |
-
<div class='tags'>
|
| 188 |
-
</div>
|
| 189 |
-
</div>
|
| 190 |
-
<div class='method_details'>
|
| 191 |
-
<p class='signature' id='dataArray-class'>
|
| 192 |
-
+ (void) <strong>dataArray</strong>(length = 0)
|
| 193 |
-
</p>
|
| 194 |
-
<div class='docstring'>
|
| 195 |
-
<p>Support for browsers that don't know Uint8Array (such as IE9)</p>
|
| 196 |
-
</div>
|
| 197 |
-
<div class='tags'>
|
| 198 |
-
</div>
|
| 199 |
-
</div>
|
| 200 |
-
</div>
|
| 201 |
-
</div>
|
| 202 |
-
<div id='footer'>
|
| 203 |
-
Generated on
|
| 204 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 205 |
-
by
|
| 206 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 207 |
-
v1.7.0
|
| 208 |
-
(Node.js v0.10.21).
|
| 209 |
-
✲
|
| 210 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 211 |
-
✲
|
| 212 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 213 |
-
✲
|
| 214 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 215 |
-
</div>
|
| 216 |
-
</body>
|
| 217 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/extra_list.html
DELETED
|
@@ -1,33 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body class='list'>
|
| 11 |
-
<div class='list' id='content'>
|
| 12 |
-
<h1 class='full_list_header'>File List</h1>
|
| 13 |
-
<nav>
|
| 14 |
-
<a target='_self' href='class_list.html'>Classes</a>
|
| 15 |
-
<a target='_self' href='file_list.html'>Files</a>
|
| 16 |
-
<a target='_self' href='method_list.html'>Methods</a>
|
| 17 |
-
<a target='_self' href='extra_list.html'>Extras</a>
|
| 18 |
-
</nav>
|
| 19 |
-
<div id='search'>
|
| 20 |
-
Search:
|
| 21 |
-
<input type='text'>
|
| 22 |
-
</div>
|
| 23 |
-
<ul>
|
| 24 |
-
<li>
|
| 25 |
-
<a href='README.md.html' target='main' title='README.md'>README.md</a>
|
| 26 |
-
</li>
|
| 27 |
-
<li>
|
| 28 |
-
<a href='LICENSE.html' target='main' title='LICENSE'>LICENSE</a>
|
| 29 |
-
</li>
|
| 30 |
-
</ul>
|
| 31 |
-
</div>
|
| 32 |
-
</body>
|
| 33 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/file_list.html
DELETED
|
@@ -1,126 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body class='list'>
|
| 11 |
-
<div class='list tree' id='content'>
|
| 12 |
-
<h1 class='full_list_header'>File List</h1>
|
| 13 |
-
<nav>
|
| 14 |
-
<a target='_self' href='class_list.html'>Classes</a>
|
| 15 |
-
<a target='_self' href='file_list.html'>Files</a>
|
| 16 |
-
<a target='_self' href='method_list.html'>Methods</a>
|
| 17 |
-
<a target='_self' href='extra_list.html'>Extras</a>
|
| 18 |
-
</nav>
|
| 19 |
-
<div id='search'>
|
| 20 |
-
Search:
|
| 21 |
-
<input type='text'>
|
| 22 |
-
</div>
|
| 23 |
-
<ul>
|
| 24 |
-
<li>
|
| 25 |
-
<span>
|
| 26 |
-
core
|
| 27 |
-
</span>
|
| 28 |
-
</li>
|
| 29 |
-
<ul>
|
| 30 |
-
<li>
|
| 31 |
-
<a href='files/core/analyze.coffee.html' target='main'>analyze.coffee</a>
|
| 32 |
-
<small class='namespace'>
|
| 33 |
-
core
|
| 34 |
-
</small>
|
| 35 |
-
</li>
|
| 36 |
-
<li>
|
| 37 |
-
<a href='files/core/autoload.coffee.html' target='main'>autoload.coffee</a>
|
| 38 |
-
<small class='namespace'>
|
| 39 |
-
core
|
| 40 |
-
</small>
|
| 41 |
-
</li>
|
| 42 |
-
<li>
|
| 43 |
-
<a href='files/core/blender.coffee.html' target='main'>blender.coffee</a>
|
| 44 |
-
<small class='namespace'>
|
| 45 |
-
core
|
| 46 |
-
</small>
|
| 47 |
-
</li>
|
| 48 |
-
<li>
|
| 49 |
-
<a href='files/core/calculate.coffee.html' target='main'>calculate.coffee</a>
|
| 50 |
-
<small class='namespace'>
|
| 51 |
-
core
|
| 52 |
-
</small>
|
| 53 |
-
</li>
|
| 54 |
-
<li>
|
| 55 |
-
<a href='files/core/caman.coffee.html' target='main'>caman.coffee</a>
|
| 56 |
-
<small class='namespace'>
|
| 57 |
-
core
|
| 58 |
-
</small>
|
| 59 |
-
</li>
|
| 60 |
-
<li>
|
| 61 |
-
<a href='files/core/convert.coffee.html' target='main'>convert.coffee</a>
|
| 62 |
-
<small class='namespace'>
|
| 63 |
-
core
|
| 64 |
-
</small>
|
| 65 |
-
</li>
|
| 66 |
-
<li>
|
| 67 |
-
<a href='files/core/event.coffee.html' target='main'>event.coffee</a>
|
| 68 |
-
<small class='namespace'>
|
| 69 |
-
core
|
| 70 |
-
</small>
|
| 71 |
-
</li>
|
| 72 |
-
<li>
|
| 73 |
-
<a href='files/core/filter.coffee.html' target='main'>filter.coffee</a>
|
| 74 |
-
<small class='namespace'>
|
| 75 |
-
core
|
| 76 |
-
</small>
|
| 77 |
-
</li>
|
| 78 |
-
<li>
|
| 79 |
-
<a href='files/core/io.coffee.html' target='main'>io.coffee</a>
|
| 80 |
-
<small class='namespace'>
|
| 81 |
-
core
|
| 82 |
-
</small>
|
| 83 |
-
</li>
|
| 84 |
-
<li>
|
| 85 |
-
<a href='files/core/layer.coffee.html' target='main'>layer.coffee</a>
|
| 86 |
-
<small class='namespace'>
|
| 87 |
-
core
|
| 88 |
-
</small>
|
| 89 |
-
</li>
|
| 90 |
-
<li>
|
| 91 |
-
<a href='files/core/pixel.coffee.html' target='main'>pixel.coffee</a>
|
| 92 |
-
<small class='namespace'>
|
| 93 |
-
core
|
| 94 |
-
</small>
|
| 95 |
-
</li>
|
| 96 |
-
<li>
|
| 97 |
-
<a href='files/core/plugin.coffee.html' target='main'>plugin.coffee</a>
|
| 98 |
-
<small class='namespace'>
|
| 99 |
-
core
|
| 100 |
-
</small>
|
| 101 |
-
</li>
|
| 102 |
-
<li>
|
| 103 |
-
<a href='files/core/renderer.coffee.html' target='main'>renderer.coffee</a>
|
| 104 |
-
<small class='namespace'>
|
| 105 |
-
core
|
| 106 |
-
</small>
|
| 107 |
-
</li>
|
| 108 |
-
<li>
|
| 109 |
-
<a href='files/core/store.coffee.html' target='main'>store.coffee</a>
|
| 110 |
-
<small class='namespace'>
|
| 111 |
-
core
|
| 112 |
-
</small>
|
| 113 |
-
</li>
|
| 114 |
-
<li>
|
| 115 |
-
<a href='files/core/util.coffee.html' target='main'>util.coffee</a>
|
| 116 |
-
<small class='namespace'>
|
| 117 |
-
core
|
| 118 |
-
</small>
|
| 119 |
-
</li>
|
| 120 |
-
</ul>
|
| 121 |
-
|
| 122 |
-
</ul>
|
| 123 |
-
|
| 124 |
-
</div>
|
| 125 |
-
</body>
|
| 126 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/analyze.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>analyze.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
analyze.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/autoload.coffee.html
DELETED
|
@@ -1,162 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>autoload.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
autoload.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Method Summary</h2>
|
| 120 |
-
<ul class='summary'>
|
| 121 |
-
<li>
|
| 122 |
-
<span class='signature'>
|
| 123 |
-
<a href='#Caman.DOMUpdated-file'>
|
| 124 |
-
? (void) <strong>Caman.DOMUpdated</strong>()
|
| 125 |
-
</a>
|
| 126 |
-
</span>
|
| 127 |
-
<span class='desc'>
|
| 128 |
-
Inform CamanJS that the DOM has been updated, and that it should re-scan for CamanJS instances in the document.
|
| 129 |
-
</span>
|
| 130 |
-
</li>
|
| 131 |
-
</ul>
|
| 132 |
-
<h2>Method Details</h2>
|
| 133 |
-
<div class='methods'>
|
| 134 |
-
<div class='method_details'>
|
| 135 |
-
<p class='signature' id='Caman.DOMUpdated-file'>
|
| 136 |
-
? (void) <strong>Caman.DOMUpdated</strong>()
|
| 137 |
-
</p>
|
| 138 |
-
<div class='docstring'>
|
| 139 |
-
<p>Inform CamanJS that the DOM has been updated, and that it
|
| 140 |
-
should re-scan for CamanJS instances in the document.</p>
|
| 141 |
-
</div>
|
| 142 |
-
<div class='tags'>
|
| 143 |
-
</div>
|
| 144 |
-
</div>
|
| 145 |
-
</div>
|
| 146 |
-
</div>
|
| 147 |
-
<div id='footer'>
|
| 148 |
-
Generated on
|
| 149 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 150 |
-
by
|
| 151 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 152 |
-
v1.7.0
|
| 153 |
-
(Node.js v0.10.21).
|
| 154 |
-
✲
|
| 155 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 156 |
-
✲
|
| 157 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 158 |
-
✲
|
| 159 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 160 |
-
</div>
|
| 161 |
-
</body>
|
| 162 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/blender.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>blender.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
blender.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/calculate.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>calculate.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
calculate.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/caman.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>caman.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
caman.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/convert.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>convert.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
convert.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/event.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>event.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
event.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/filter.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>filter.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
filter.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/io.coffee.html
DELETED
|
@@ -1,245 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>io.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
io.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Constant Summary</h2>
|
| 120 |
-
<dl class='constants'>
|
| 121 |
-
<dt id='IO-constant'>
|
| 122 |
-
IO
|
| 123 |
-
=
|
| 124 |
-
<div class='tags'>
|
| 125 |
-
</div>
|
| 126 |
-
</dt>
|
| 127 |
-
<dd>
|
| 128 |
-
<pre><code class='coffee'>Caman</code></pre>
|
| 129 |
-
</dd>
|
| 130 |
-
</dl>
|
| 131 |
-
<h2>Method Summary</h2>
|
| 132 |
-
<ul class='summary'>
|
| 133 |
-
<li>
|
| 134 |
-
<span class='signature'>
|
| 135 |
-
<a href='#Caman.prototype.save-file'>
|
| 136 |
-
? (void) <strong>Caman.prototype.save</strong>()
|
| 137 |
-
</a>
|
| 138 |
-
</span>
|
| 139 |
-
<span class='desc'>
|
| 140 |
-
|
| 141 |
-
</span>
|
| 142 |
-
</li>
|
| 143 |
-
<li>
|
| 144 |
-
<span class='signature'>
|
| 145 |
-
<a href='#Caman.prototype.browserSave-file'>
|
| 146 |
-
? (void) <strong>Caman.prototype.browserSave</strong>(type = "png")
|
| 147 |
-
</a>
|
| 148 |
-
</span>
|
| 149 |
-
<span class='desc'>
|
| 150 |
-
|
| 151 |
-
</span>
|
| 152 |
-
</li>
|
| 153 |
-
<li>
|
| 154 |
-
<span class='signature'>
|
| 155 |
-
<a href='#Caman.prototype.nodeSave-file'>
|
| 156 |
-
? (void) <strong>Caman.prototype.nodeSave</strong>(file, overwrite = true)
|
| 157 |
-
</a>
|
| 158 |
-
</span>
|
| 159 |
-
<span class='desc'>
|
| 160 |
-
|
| 161 |
-
</span>
|
| 162 |
-
</li>
|
| 163 |
-
<li>
|
| 164 |
-
<span class='signature'>
|
| 165 |
-
<a href='#Caman.prototype.toImage-file'>
|
| 166 |
-
? (void) <strong>Caman.prototype.toImage</strong>(type)
|
| 167 |
-
</a>
|
| 168 |
-
</span>
|
| 169 |
-
<span class='desc'>
|
| 170 |
-
Takes the current canvas data, converts it to Base64, then sets it as the source of a new Image object and returns it.
|
| 171 |
-
</span>
|
| 172 |
-
</li>
|
| 173 |
-
<li>
|
| 174 |
-
<span class='signature'>
|
| 175 |
-
<a href='#Caman.prototype.toBase64-file'>
|
| 176 |
-
? (void) <strong>Caman.prototype.toBase64</strong>(type = "png")
|
| 177 |
-
</a>
|
| 178 |
-
</span>
|
| 179 |
-
<span class='desc'>
|
| 180 |
-
Base64 encodes the current canvas
|
| 181 |
-
</span>
|
| 182 |
-
</li>
|
| 183 |
-
</ul>
|
| 184 |
-
<h2>Method Details</h2>
|
| 185 |
-
<div class='methods'>
|
| 186 |
-
<div class='method_details'>
|
| 187 |
-
<p class='signature' id='Caman.prototype.save-file'>
|
| 188 |
-
? (void) <strong>Caman.prototype.save</strong>()
|
| 189 |
-
</p>
|
| 190 |
-
<div class='tags'>
|
| 191 |
-
</div>
|
| 192 |
-
</div>
|
| 193 |
-
<div class='method_details'>
|
| 194 |
-
<p class='signature' id='Caman.prototype.browserSave-file'>
|
| 195 |
-
? (void) <strong>Caman.prototype.browserSave</strong>(type = "png")
|
| 196 |
-
</p>
|
| 197 |
-
<div class='tags'>
|
| 198 |
-
</div>
|
| 199 |
-
</div>
|
| 200 |
-
<div class='method_details'>
|
| 201 |
-
<p class='signature' id='Caman.prototype.nodeSave-file'>
|
| 202 |
-
? (void) <strong>Caman.prototype.nodeSave</strong>(file, overwrite = true)
|
| 203 |
-
</p>
|
| 204 |
-
<div class='tags'>
|
| 205 |
-
</div>
|
| 206 |
-
</div>
|
| 207 |
-
<div class='method_details'>
|
| 208 |
-
<p class='signature' id='Caman.prototype.toImage-file'>
|
| 209 |
-
? (void) <strong>Caman.prototype.toImage</strong>(type)
|
| 210 |
-
</p>
|
| 211 |
-
<div class='docstring'>
|
| 212 |
-
<p>Takes the current canvas data, converts it to Base64, then sets it as the source
|
| 213 |
-
of a new Image object and returns it.</p>
|
| 214 |
-
</div>
|
| 215 |
-
<div class='tags'>
|
| 216 |
-
</div>
|
| 217 |
-
</div>
|
| 218 |
-
<div class='method_details'>
|
| 219 |
-
<p class='signature' id='Caman.prototype.toBase64-file'>
|
| 220 |
-
? (void) <strong>Caman.prototype.toBase64</strong>(type = "png")
|
| 221 |
-
</p>
|
| 222 |
-
<div class='docstring'>
|
| 223 |
-
<p>Base64 encodes the current canvas</p>
|
| 224 |
-
</div>
|
| 225 |
-
<div class='tags'>
|
| 226 |
-
</div>
|
| 227 |
-
</div>
|
| 228 |
-
</div>
|
| 229 |
-
</div>
|
| 230 |
-
<div id='footer'>
|
| 231 |
-
Generated on
|
| 232 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 233 |
-
by
|
| 234 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 235 |
-
v1.7.0
|
| 236 |
-
(Node.js v0.10.21).
|
| 237 |
-
✲
|
| 238 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 239 |
-
✲
|
| 240 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 241 |
-
✲
|
| 242 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 243 |
-
</div>
|
| 244 |
-
</body>
|
| 245 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/layer.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>layer.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
layer.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/pixel.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>pixel.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
pixel.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/plugin.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>plugin.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
plugin.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/renderer.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>renderer.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
renderer.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/store.coffee.html
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>store.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
store.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
</div>
|
| 120 |
-
<div id='footer'>
|
| 121 |
-
Generated on
|
| 122 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 123 |
-
by
|
| 124 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 125 |
-
v1.7.0
|
| 126 |
-
(Node.js v0.10.21).
|
| 127 |
-
✲
|
| 128 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 129 |
-
✲
|
| 130 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 131 |
-
✲
|
| 132 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 133 |
-
</div>
|
| 134 |
-
</body>
|
| 135 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/files/core/util.coffee.html
DELETED
|
@@ -1,162 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='../../assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='../../assets/codo.js'></script>
|
| 8 |
-
<script src='../../assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div id='base' data-path='../../'></div>
|
| 12 |
-
<div id='header'>
|
| 13 |
-
<div id='menu'>
|
| 14 |
-
<a href='../../README.md.html' title='CamanJS'>CamanJS</a>
|
| 15 |
-
»
|
| 16 |
-
<a href='../../class_index.html' title='Index'>Index</a>
|
| 17 |
-
»
|
| 18 |
-
<span class='title'>core</span>
|
| 19 |
-
»
|
| 20 |
-
<span class='title'>util.coffee</span>
|
| 21 |
-
<nav>
|
| 22 |
-
<ul>
|
| 23 |
-
<li class='noframes'>
|
| 24 |
-
(<a class='noframes' href='#'>no frames</a>)
|
| 25 |
-
</li>
|
| 26 |
-
</ul>
|
| 27 |
-
</nav>
|
| 28 |
-
<div id='search'>
|
| 29 |
-
<a id='class_list_link' href='../../class_list.html'>Classes</a>
|
| 30 |
-
<a id='file_list_link' href='../../file_list.html'>Files</a>
|
| 31 |
-
<a id='method_list_link' href='../../method_list.html'>Methods</a>
|
| 32 |
-
<a id='extra_list_link' href='../../extra_list.html'>Extras</a>
|
| 33 |
-
</div>
|
| 34 |
-
</div>
|
| 35 |
-
<iframe id='search_frame'></iframe>
|
| 36 |
-
<div id='fuzzySearch'>
|
| 37 |
-
<input type='text'>
|
| 38 |
-
<ol></ol>
|
| 39 |
-
</div>
|
| 40 |
-
<div id='help'>
|
| 41 |
-
<p>
|
| 42 |
-
Quickly fuzzy find classes, mixins, methods, file:
|
| 43 |
-
</p>
|
| 44 |
-
<ul>
|
| 45 |
-
<li>
|
| 46 |
-
<span>Ctrl-T</span>
|
| 47 |
-
Open fuzzy finder dialog
|
| 48 |
-
</li>
|
| 49 |
-
</ul>
|
| 50 |
-
<p>
|
| 51 |
-
In frame mode you can toggle the list naviation frame on the left side:
|
| 52 |
-
</p>
|
| 53 |
-
<ul>
|
| 54 |
-
<li>
|
| 55 |
-
<span>Ctrl-L</span>
|
| 56 |
-
Toggle list view
|
| 57 |
-
</li>
|
| 58 |
-
</ul>
|
| 59 |
-
<p>
|
| 60 |
-
You can focus a list in frame mode or toggle a tab in frameless mode:
|
| 61 |
-
</p>
|
| 62 |
-
<ul>
|
| 63 |
-
<li>
|
| 64 |
-
<span>Ctrl-C</span>
|
| 65 |
-
Class list
|
| 66 |
-
</li>
|
| 67 |
-
<li>
|
| 68 |
-
<span>Ctrl-I</span>
|
| 69 |
-
Mixin list
|
| 70 |
-
</li>
|
| 71 |
-
<li>
|
| 72 |
-
<span>Ctrl-F</span>
|
| 73 |
-
File list
|
| 74 |
-
</li>
|
| 75 |
-
<li>
|
| 76 |
-
<span>Ctrl-M</span>
|
| 77 |
-
Method list
|
| 78 |
-
</li>
|
| 79 |
-
<li>
|
| 80 |
-
<span>Ctrl-E</span>
|
| 81 |
-
Extras list
|
| 82 |
-
</li>
|
| 83 |
-
</ul>
|
| 84 |
-
<p>
|
| 85 |
-
You can focus and blur the search input:
|
| 86 |
-
</p>
|
| 87 |
-
<ul>
|
| 88 |
-
<li>
|
| 89 |
-
<span>Ctrl-S</span>
|
| 90 |
-
Focus search input
|
| 91 |
-
</li>
|
| 92 |
-
<li>
|
| 93 |
-
<span>Esc</span>
|
| 94 |
-
Blur search input
|
| 95 |
-
</li>
|
| 96 |
-
</ul>
|
| 97 |
-
<p>
|
| 98 |
-
In frameless mode you can close the list tab:
|
| 99 |
-
</p>
|
| 100 |
-
<ul>
|
| 101 |
-
<li>
|
| 102 |
-
<span>Esc</span>
|
| 103 |
-
Close list tab
|
| 104 |
-
</li>
|
| 105 |
-
</ul>
|
| 106 |
-
</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div id='content'>
|
| 109 |
-
<h1>
|
| 110 |
-
File:
|
| 111 |
-
util.coffee
|
| 112 |
-
</h1>
|
| 113 |
-
<table class='box'>
|
| 114 |
-
<tr>
|
| 115 |
-
<td>Defined in:</td>
|
| 116 |
-
<td>core</td>
|
| 117 |
-
</tr>
|
| 118 |
-
</table>
|
| 119 |
-
<h2>Method Summary</h2>
|
| 120 |
-
<ul class='summary'>
|
| 121 |
-
<li>
|
| 122 |
-
<span class='signature'>
|
| 123 |
-
<a href='#$-file'>
|
| 124 |
-
? (void) <strong>$</strong>(sel, root = document)
|
| 125 |
-
</a>
|
| 126 |
-
</span>
|
| 127 |
-
<span class='desc'>
|
| 128 |
-
DOM simplifier (no jQuery dependency) NodeJS compatible
|
| 129 |
-
</span>
|
| 130 |
-
</li>
|
| 131 |
-
</ul>
|
| 132 |
-
<h2>Method Details</h2>
|
| 133 |
-
<div class='methods'>
|
| 134 |
-
<div class='method_details'>
|
| 135 |
-
<p class='signature' id='$-file'>
|
| 136 |
-
? (void) <strong>$</strong>(sel, root = document)
|
| 137 |
-
</p>
|
| 138 |
-
<div class='docstring'>
|
| 139 |
-
<p>DOM simplifier (no jQuery dependency)
|
| 140 |
-
NodeJS compatible</p>
|
| 141 |
-
</div>
|
| 142 |
-
<div class='tags'>
|
| 143 |
-
</div>
|
| 144 |
-
</div>
|
| 145 |
-
</div>
|
| 146 |
-
</div>
|
| 147 |
-
<div id='footer'>
|
| 148 |
-
Generated on
|
| 149 |
-
Wed Nov 13 2013 09:33:09 GMT-0500 (EST)
|
| 150 |
-
by
|
| 151 |
-
<a href='https://github.com/netzpirat/codo' title='CoffeeScript API documentation generator'>Codo</a>
|
| 152 |
-
v1.7.0
|
| 153 |
-
(Node.js v0.10.21).
|
| 154 |
-
✲
|
| 155 |
-
Press Ctrl-h to see the keyboard shortcuts
|
| 156 |
-
✲
|
| 157 |
-
<a href='http://twitter.com/#!/netzpirat'>@netzpirat</a>
|
| 158 |
-
✲
|
| 159 |
-
<a href='https://mksoft.ch'>mksoft.ch</a>
|
| 160 |
-
</div>
|
| 161 |
-
</body>
|
| 162 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/index.html
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<frameset cols='20%, *'>
|
| 11 |
-
<frame name='list' src='class_list.html'></frame>
|
| 12 |
-
<frame name='main' src='README.md.html'></frame>
|
| 13 |
-
</frameset>
|
| 14 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/method_list.html
DELETED
|
@@ -1,1035 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body class='list'>
|
| 11 |
-
<div class='list' id='content'>
|
| 12 |
-
<h1 class='full_list_header'>Method List</h1>
|
| 13 |
-
<nav>
|
| 14 |
-
<a target='_self' href='class_list.html'>Classes</a>
|
| 15 |
-
<a target='_self' href='file_list.html'>Files</a>
|
| 16 |
-
<a target='_self' href='method_list.html'>Methods</a>
|
| 17 |
-
<a target='_self' href='extra_list.html'>Extras</a>
|
| 18 |
-
</nav>
|
| 19 |
-
<div id='search'>
|
| 20 |
-
Search:
|
| 21 |
-
<input type='text'>
|
| 22 |
-
</div>
|
| 23 |
-
<ul>
|
| 24 |
-
<li>
|
| 25 |
-
<a href='files/core/util.coffee.html#$-file' target='main' title='$'>
|
| 26 |
-
.$
|
| 27 |
-
</a>
|
| 28 |
-
<small>
|
| 29 |
-
(core/util.coffee)
|
| 30 |
-
</small>
|
| 31 |
-
</li>
|
| 32 |
-
<li>
|
| 33 |
-
<a href='files/core/autoload.coffee.html#Caman.DOMUpdated-file' target='main' title='Caman.DOMUpdated'>
|
| 34 |
-
.Caman.DOMUpdated
|
| 35 |
-
</a>
|
| 36 |
-
<small>
|
| 37 |
-
(core/autoload.coffee)
|
| 38 |
-
</small>
|
| 39 |
-
</li>
|
| 40 |
-
<li>
|
| 41 |
-
<a href='files/core/io.coffee.html#Caman.prototype.browserSave-file' target='main' title='Caman.prototype.browserSave'>
|
| 42 |
-
.Caman.prototype.browserSave
|
| 43 |
-
</a>
|
| 44 |
-
<small>
|
| 45 |
-
(core/io.coffee)
|
| 46 |
-
</small>
|
| 47 |
-
</li>
|
| 48 |
-
<li>
|
| 49 |
-
<a href='files/core/io.coffee.html#Caman.prototype.nodeSave-file' target='main' title='Caman.prototype.nodeSave'>
|
| 50 |
-
.Caman.prototype.nodeSave
|
| 51 |
-
</a>
|
| 52 |
-
<small>
|
| 53 |
-
(core/io.coffee)
|
| 54 |
-
</small>
|
| 55 |
-
</li>
|
| 56 |
-
<li>
|
| 57 |
-
<a href='files/core/io.coffee.html#Caman.prototype.save-file' target='main' title='Caman.prototype.save'>
|
| 58 |
-
.Caman.prototype.save
|
| 59 |
-
</a>
|
| 60 |
-
<small>
|
| 61 |
-
(core/io.coffee)
|
| 62 |
-
</small>
|
| 63 |
-
</li>
|
| 64 |
-
<li>
|
| 65 |
-
<a href='files/core/io.coffee.html#Caman.prototype.toBase64-file' target='main' title='Caman.prototype.toBase64'>
|
| 66 |
-
.Caman.prototype.toBase64
|
| 67 |
-
</a>
|
| 68 |
-
<small>
|
| 69 |
-
(core/io.coffee)
|
| 70 |
-
</small>
|
| 71 |
-
</li>
|
| 72 |
-
<li>
|
| 73 |
-
<a href='files/core/io.coffee.html#Caman.prototype.toImage-file' target='main' title='Caman.prototype.toImage'>
|
| 74 |
-
.Caman.prototype.toImage
|
| 75 |
-
</a>
|
| 76 |
-
<small>
|
| 77 |
-
(core/io.coffee)
|
| 78 |
-
</small>
|
| 79 |
-
</li>
|
| 80 |
-
<li>
|
| 81 |
-
<a href='classes/Caman/Renderer.html#add-instance' target='main' title='add'>
|
| 82 |
-
#add
|
| 83 |
-
</a>
|
| 84 |
-
<small>
|
| 85 |
-
(Caman.Renderer)
|
| 86 |
-
</small>
|
| 87 |
-
</li>
|
| 88 |
-
<li>
|
| 89 |
-
<a href='classes/Module.html#aliasFunction-class' target='main' title='aliasFunction'>
|
| 90 |
-
.aliasFunction
|
| 91 |
-
</a>
|
| 92 |
-
<small>
|
| 93 |
-
(Module)
|
| 94 |
-
</small>
|
| 95 |
-
</li>
|
| 96 |
-
<li>
|
| 97 |
-
<a href='classes/Module.html#aliasProperty-class' target='main' title='aliasProperty'>
|
| 98 |
-
.aliasProperty
|
| 99 |
-
</a>
|
| 100 |
-
<small>
|
| 101 |
-
(Module)
|
| 102 |
-
</small>
|
| 103 |
-
</li>
|
| 104 |
-
<li>
|
| 105 |
-
<a href='classes/Caman.html#applyCurrentLayer-instance' target='main' title='applyCurrentLayer'>
|
| 106 |
-
#applyCurrentLayer
|
| 107 |
-
</a>
|
| 108 |
-
<small>
|
| 109 |
-
(Caman)
|
| 110 |
-
</small>
|
| 111 |
-
</li>
|
| 112 |
-
<li>
|
| 113 |
-
<a href='classes/Caman/Layer.html#applyToParent-instance' target='main' title='applyToParent'>
|
| 114 |
-
#applyToParent
|
| 115 |
-
</a>
|
| 116 |
-
<small>
|
| 117 |
-
(Caman.Layer)
|
| 118 |
-
</small>
|
| 119 |
-
</li>
|
| 120 |
-
<li>
|
| 121 |
-
<a href='classes/Caman.html#assignId-instance' target='main' title='assignId'>
|
| 122 |
-
#assignId
|
| 123 |
-
</a>
|
| 124 |
-
<small>
|
| 125 |
-
(Caman)
|
| 126 |
-
</small>
|
| 127 |
-
</li>
|
| 128 |
-
<li>
|
| 129 |
-
<a href='classes/Caman/Calculate.html#bezier-class' target='main' title='bezier'>
|
| 130 |
-
.bezier
|
| 131 |
-
</a>
|
| 132 |
-
<small>
|
| 133 |
-
(Caman.Calculate)
|
| 134 |
-
</small>
|
| 135 |
-
</li>
|
| 136 |
-
<li>
|
| 137 |
-
<a href='classes/Caman/Renderer.html#blockFinished-instance' target='main' title='blockFinished'>
|
| 138 |
-
#blockFinished
|
| 139 |
-
</a>
|
| 140 |
-
<small>
|
| 141 |
-
(Caman.Renderer)
|
| 142 |
-
</small>
|
| 143 |
-
</li>
|
| 144 |
-
<li>
|
| 145 |
-
<a href='classes/Caman/Analyze.html#calculateLevels-instance' target='main' title='calculateLevels'>
|
| 146 |
-
#calculateLevels
|
| 147 |
-
</a>
|
| 148 |
-
<small>
|
| 149 |
-
(Caman.Analyze)
|
| 150 |
-
</small>
|
| 151 |
-
</li>
|
| 152 |
-
<li>
|
| 153 |
-
<a href='classes/Util.html#clampRGB-class' target='main' title='clampRGB'>
|
| 154 |
-
.clampRGB
|
| 155 |
-
</a>
|
| 156 |
-
<small>
|
| 157 |
-
(Util)
|
| 158 |
-
</small>
|
| 159 |
-
</li>
|
| 160 |
-
<li>
|
| 161 |
-
<a href='classes/Caman/Pixel.html#coordinatesToLocation-class' target='main' title='coordinatesToLocation'>
|
| 162 |
-
.coordinatesToLocation
|
| 163 |
-
</a>
|
| 164 |
-
<small>
|
| 165 |
-
(Caman.Pixel)
|
| 166 |
-
</small>
|
| 167 |
-
</li>
|
| 168 |
-
<li>
|
| 169 |
-
<a href='classes/Util.html#copyAttributes-class' target='main' title='copyAttributes'>
|
| 170 |
-
.copyAttributes
|
| 171 |
-
</a>
|
| 172 |
-
<small>
|
| 173 |
-
(Util)
|
| 174 |
-
</small>
|
| 175 |
-
</li>
|
| 176 |
-
<li>
|
| 177 |
-
<a href='classes/Caman/Layer.html#copyParent-instance' target='main' title='copyParent'>
|
| 178 |
-
#copyParent
|
| 179 |
-
</a>
|
| 180 |
-
<small>
|
| 181 |
-
(Caman.Layer)
|
| 182 |
-
</small>
|
| 183 |
-
</li>
|
| 184 |
-
<li>
|
| 185 |
-
<a href='classes/Caman/IO.html#corsEnabled-class' target='main' title='corsEnabled'>
|
| 186 |
-
.corsEnabled
|
| 187 |
-
</a>
|
| 188 |
-
<small>
|
| 189 |
-
(Caman.IO)
|
| 190 |
-
</small>
|
| 191 |
-
</li>
|
| 192 |
-
<li>
|
| 193 |
-
<a href='classes/Util.html#dataArray-class' target='main' title='dataArray'>
|
| 194 |
-
.dataArray
|
| 195 |
-
</a>
|
| 196 |
-
<small>
|
| 197 |
-
(Util)
|
| 198 |
-
</small>
|
| 199 |
-
</li>
|
| 200 |
-
<li>
|
| 201 |
-
<a href='classes/Module.html#delegate-class' target='main' title='delegate'>
|
| 202 |
-
.delegate
|
| 203 |
-
</a>
|
| 204 |
-
<small>
|
| 205 |
-
(Module)
|
| 206 |
-
</small>
|
| 207 |
-
</li>
|
| 208 |
-
<li>
|
| 209 |
-
<a href='classes/Caman/Calculate.html#distance-class' target='main' title='distance'>
|
| 210 |
-
.distance
|
| 211 |
-
</a>
|
| 212 |
-
<small>
|
| 213 |
-
(Caman.Calculate)
|
| 214 |
-
</small>
|
| 215 |
-
</li>
|
| 216 |
-
<li>
|
| 217 |
-
<a href='classes/Caman.html#domIsLoaded-instance' target='main' title='domIsLoaded'>
|
| 218 |
-
#domIsLoaded
|
| 219 |
-
</a>
|
| 220 |
-
<small>
|
| 221 |
-
(Caman)
|
| 222 |
-
</small>
|
| 223 |
-
</li>
|
| 224 |
-
<li>
|
| 225 |
-
<a href='classes/Caman/Renderer.html#eachBlock-instance' target='main' title='eachBlock'>
|
| 226 |
-
#eachBlock
|
| 227 |
-
</a>
|
| 228 |
-
<small>
|
| 229 |
-
(Caman.Renderer)
|
| 230 |
-
</small>
|
| 231 |
-
</li>
|
| 232 |
-
<li>
|
| 233 |
-
<a href='classes/CamanParser.html#execute-instance' target='main' title='execute'>
|
| 234 |
-
#execute
|
| 235 |
-
</a>
|
| 236 |
-
<small>
|
| 237 |
-
(CamanParser)
|
| 238 |
-
</small>
|
| 239 |
-
</li>
|
| 240 |
-
<li>
|
| 241 |
-
<a href='classes/Caman/Blender.html#execute-class' target='main' title='execute'>
|
| 242 |
-
.execute
|
| 243 |
-
</a>
|
| 244 |
-
<small>
|
| 245 |
-
(Caman.Blender)
|
| 246 |
-
</small>
|
| 247 |
-
</li>
|
| 248 |
-
<li>
|
| 249 |
-
<a href='classes/Caman/Plugin.html#execute-class' target='main' title='execute'>
|
| 250 |
-
.execute
|
| 251 |
-
</a>
|
| 252 |
-
<small>
|
| 253 |
-
(Caman.Plugin)
|
| 254 |
-
</small>
|
| 255 |
-
</li>
|
| 256 |
-
<li>
|
| 257 |
-
<a href='classes/Caman/Renderer.html#execute-instance' target='main' title='execute'>
|
| 258 |
-
#execute
|
| 259 |
-
</a>
|
| 260 |
-
<small>
|
| 261 |
-
(Caman.Renderer)
|
| 262 |
-
</small>
|
| 263 |
-
</li>
|
| 264 |
-
<li>
|
| 265 |
-
<a href='classes/Caman/Store.html#execute-class' target='main' title='execute'>
|
| 266 |
-
.execute
|
| 267 |
-
</a>
|
| 268 |
-
<small>
|
| 269 |
-
(Caman.Store)
|
| 270 |
-
</small>
|
| 271 |
-
</li>
|
| 272 |
-
<li>
|
| 273 |
-
<a href='classes/Caman/Renderer.html#executeFilter-instance' target='main' title='executeFilter'>
|
| 274 |
-
#executeFilter
|
| 275 |
-
</a>
|
| 276 |
-
<small>
|
| 277 |
-
(Caman.Renderer)
|
| 278 |
-
</small>
|
| 279 |
-
</li>
|
| 280 |
-
<li>
|
| 281 |
-
<a href='classes/Caman.html#executeLayer-instance' target='main' title='executeLayer'>
|
| 282 |
-
#executeLayer
|
| 283 |
-
</a>
|
| 284 |
-
<small>
|
| 285 |
-
(Caman)
|
| 286 |
-
</small>
|
| 287 |
-
</li>
|
| 288 |
-
<li>
|
| 289 |
-
<a href='classes/Caman/Renderer.html#executePlugin-instance' target='main' title='executePlugin'>
|
| 290 |
-
#executePlugin
|
| 291 |
-
</a>
|
| 292 |
-
<small>
|
| 293 |
-
(Caman.Renderer)
|
| 294 |
-
</small>
|
| 295 |
-
</li>
|
| 296 |
-
<li>
|
| 297 |
-
<a href='classes/Util.html#extend-class' target='main' title='extend'>
|
| 298 |
-
.extend
|
| 299 |
-
</a>
|
| 300 |
-
<small>
|
| 301 |
-
(Util)
|
| 302 |
-
</small>
|
| 303 |
-
</li>
|
| 304 |
-
<li>
|
| 305 |
-
<a href='classes/Module.html#extends-class' target='main' title='extends'>
|
| 306 |
-
.extends
|
| 307 |
-
</a>
|
| 308 |
-
<small>
|
| 309 |
-
(Module)
|
| 310 |
-
</small>
|
| 311 |
-
</li>
|
| 312 |
-
<li>
|
| 313 |
-
<a href='classes/Caman/Layer.html#fillColor-instance' target='main' title='fillColor'>
|
| 314 |
-
#fillColor
|
| 315 |
-
</a>
|
| 316 |
-
<small>
|
| 317 |
-
(Caman.Layer)
|
| 318 |
-
</small>
|
| 319 |
-
</li>
|
| 320 |
-
<li>
|
| 321 |
-
<a href='classes/Caman.html#finishInit-instance' target='main' title='finishInit'>
|
| 322 |
-
#finishInit
|
| 323 |
-
</a>
|
| 324 |
-
<small>
|
| 325 |
-
(Caman)
|
| 326 |
-
</small>
|
| 327 |
-
</li>
|
| 328 |
-
<li>
|
| 329 |
-
<a href='classes/Caman/Store.html#flush-class' target='main' title='flush'>
|
| 330 |
-
.flush
|
| 331 |
-
</a>
|
| 332 |
-
<small>
|
| 333 |
-
(Caman.Store)
|
| 334 |
-
</small>
|
| 335 |
-
</li>
|
| 336 |
-
<li>
|
| 337 |
-
<a href='classes/Caman/Store.html#get-class' target='main' title='get'>
|
| 338 |
-
.get
|
| 339 |
-
</a>
|
| 340 |
-
<small>
|
| 341 |
-
(Caman.Store)
|
| 342 |
-
</small>
|
| 343 |
-
</li>
|
| 344 |
-
<li>
|
| 345 |
-
<a href='classes/Caman.html#getAttrId-class' target='main' title='getAttrId'>
|
| 346 |
-
.getAttrId
|
| 347 |
-
</a>
|
| 348 |
-
<small>
|
| 349 |
-
(Caman)
|
| 350 |
-
</small>
|
| 351 |
-
</li>
|
| 352 |
-
<li>
|
| 353 |
-
<a href='classes/Caman/Pixel.html#getPixel-instance' target='main' title='getPixel'>
|
| 354 |
-
#getPixel
|
| 355 |
-
</a>
|
| 356 |
-
<small>
|
| 357 |
-
(Caman.Pixel)
|
| 358 |
-
</small>
|
| 359 |
-
</li>
|
| 360 |
-
<li>
|
| 361 |
-
<a href='classes/Caman/Pixel.html#getPixelRelative-instance' target='main' title='getPixelRelative'>
|
| 362 |
-
#getPixelRelative
|
| 363 |
-
</a>
|
| 364 |
-
<small>
|
| 365 |
-
(Caman.Pixel)
|
| 366 |
-
</small>
|
| 367 |
-
</li>
|
| 368 |
-
<li>
|
| 369 |
-
<a href='classes/Caman/Store.html#has-class' target='main' title='has'>
|
| 370 |
-
.has
|
| 371 |
-
</a>
|
| 372 |
-
<small>
|
| 373 |
-
(Caman.Store)
|
| 374 |
-
</small>
|
| 375 |
-
</li>
|
| 376 |
-
<li>
|
| 377 |
-
<a href='classes/Caman.html#hasId-instance' target='main' title='hasId'>
|
| 378 |
-
#hasId
|
| 379 |
-
</a>
|
| 380 |
-
<small>
|
| 381 |
-
(Caman)
|
| 382 |
-
</small>
|
| 383 |
-
</li>
|
| 384 |
-
<li>
|
| 385 |
-
<a href='classes/Caman/Calculate.html#hermite-class' target='main' title='hermite'>
|
| 386 |
-
.hermite
|
| 387 |
-
</a>
|
| 388 |
-
<small>
|
| 389 |
-
(Caman.Calculate)
|
| 390 |
-
</small>
|
| 391 |
-
</li>
|
| 392 |
-
<li>
|
| 393 |
-
<a href='classes/Caman/Convert.html#hexToRGB-class' target='main' title='hexToRGB'>
|
| 394 |
-
.hexToRGB
|
| 395 |
-
</a>
|
| 396 |
-
<small>
|
| 397 |
-
(Caman.Convert)
|
| 398 |
-
</small>
|
| 399 |
-
</li>
|
| 400 |
-
<li>
|
| 401 |
-
<a href='classes/Caman.html#hiDPIAdjustments-instance' target='main' title='hiDPIAdjustments'>
|
| 402 |
-
#hiDPIAdjustments
|
| 403 |
-
</a>
|
| 404 |
-
<small>
|
| 405 |
-
(Caman)
|
| 406 |
-
</small>
|
| 407 |
-
</li>
|
| 408 |
-
<li>
|
| 409 |
-
<a href='classes/Caman.html#hiDPICapable-instance' target='main' title='hiDPICapable'>
|
| 410 |
-
#hiDPICapable
|
| 411 |
-
</a>
|
| 412 |
-
<small>
|
| 413 |
-
(Caman)
|
| 414 |
-
</small>
|
| 415 |
-
</li>
|
| 416 |
-
<li>
|
| 417 |
-
<a href='classes/Caman.html#hiDPIDisabled-instance' target='main' title='hiDPIDisabled'>
|
| 418 |
-
#hiDPIDisabled
|
| 419 |
-
</a>
|
| 420 |
-
<small>
|
| 421 |
-
(Caman)
|
| 422 |
-
</small>
|
| 423 |
-
</li>
|
| 424 |
-
<li>
|
| 425 |
-
<a href='classes/Caman.html#hiDPIRatio-instance' target='main' title='hiDPIRatio'>
|
| 426 |
-
#hiDPIRatio
|
| 427 |
-
</a>
|
| 428 |
-
<small>
|
| 429 |
-
(Caman)
|
| 430 |
-
</small>
|
| 431 |
-
</li>
|
| 432 |
-
<li>
|
| 433 |
-
<a href='classes/Caman.html#hiDPIReplacement-instance' target='main' title='hiDPIReplacement'>
|
| 434 |
-
#hiDPIReplacement
|
| 435 |
-
</a>
|
| 436 |
-
<small>
|
| 437 |
-
(Caman)
|
| 438 |
-
</small>
|
| 439 |
-
</li>
|
| 440 |
-
<li>
|
| 441 |
-
<a href='classes/Caman/Convert.html#hslToRGB-class' target='main' title='hslToRGB'>
|
| 442 |
-
.hslToRGB
|
| 443 |
-
</a>
|
| 444 |
-
<small>
|
| 445 |
-
(Caman.Convert)
|
| 446 |
-
</small>
|
| 447 |
-
</li>
|
| 448 |
-
<li>
|
| 449 |
-
<a href='classes/Caman/Convert.html#hsvToRGB-class' target='main' title='hsvToRGB'>
|
| 450 |
-
.hsvToRGB
|
| 451 |
-
</a>
|
| 452 |
-
<small>
|
| 453 |
-
(Caman.Convert)
|
| 454 |
-
</small>
|
| 455 |
-
</li>
|
| 456 |
-
<li>
|
| 457 |
-
<a href='classes/Caman/Convert.html#hueToRGB-class' target='main' title='hueToRGB'>
|
| 458 |
-
.hueToRGB
|
| 459 |
-
</a>
|
| 460 |
-
<small>
|
| 461 |
-
(Caman.Convert)
|
| 462 |
-
</small>
|
| 463 |
-
</li>
|
| 464 |
-
<li>
|
| 465 |
-
<a href='classes/Caman.html#imageAdjustments-instance' target='main' title='imageAdjustments'>
|
| 466 |
-
#imageAdjustments
|
| 467 |
-
</a>
|
| 468 |
-
<small>
|
| 469 |
-
(Caman)
|
| 470 |
-
</small>
|
| 471 |
-
</li>
|
| 472 |
-
<li>
|
| 473 |
-
<a href='classes/Caman.html#imageHeight-instance' target='main' title='imageHeight'>
|
| 474 |
-
#imageHeight
|
| 475 |
-
</a>
|
| 476 |
-
<small>
|
| 477 |
-
(Caman)
|
| 478 |
-
</small>
|
| 479 |
-
</li>
|
| 480 |
-
<li>
|
| 481 |
-
<a href='classes/Caman.html#imageLoaded-instance' target='main' title='imageLoaded'>
|
| 482 |
-
#imageLoaded
|
| 483 |
-
</a>
|
| 484 |
-
<small>
|
| 485 |
-
(Caman)
|
| 486 |
-
</small>
|
| 487 |
-
</li>
|
| 488 |
-
<li>
|
| 489 |
-
<a href='classes/Caman.html#imageWidth-instance' target='main' title='imageWidth'>
|
| 490 |
-
#imageWidth
|
| 491 |
-
</a>
|
| 492 |
-
<small>
|
| 493 |
-
(Caman)
|
| 494 |
-
</small>
|
| 495 |
-
</li>
|
| 496 |
-
<li>
|
| 497 |
-
<a href='classes/Module.html#included-class' target='main' title='included'>
|
| 498 |
-
.included
|
| 499 |
-
</a>
|
| 500 |
-
<small>
|
| 501 |
-
(Module)
|
| 502 |
-
</small>
|
| 503 |
-
</li>
|
| 504 |
-
<li>
|
| 505 |
-
<a href='classes/Module.html#includes-class' target='main' title='includes'>
|
| 506 |
-
.includes
|
| 507 |
-
</a>
|
| 508 |
-
<small>
|
| 509 |
-
(Module)
|
| 510 |
-
</small>
|
| 511 |
-
</li>
|
| 512 |
-
<li>
|
| 513 |
-
<a href='classes/Caman.html#initCanvas-instance' target='main' title='initCanvas'>
|
| 514 |
-
#initCanvas
|
| 515 |
-
</a>
|
| 516 |
-
<small>
|
| 517 |
-
(Caman)
|
| 518 |
-
</small>
|
| 519 |
-
</li>
|
| 520 |
-
<li>
|
| 521 |
-
<a href='classes/Caman.html#initImage-instance' target='main' title='initImage'>
|
| 522 |
-
#initImage
|
| 523 |
-
</a>
|
| 524 |
-
<small>
|
| 525 |
-
(Caman)
|
| 526 |
-
</small>
|
| 527 |
-
</li>
|
| 528 |
-
<li>
|
| 529 |
-
<a href='classes/Caman.html#initNode-instance' target='main' title='initNode'>
|
| 530 |
-
#initNode
|
| 531 |
-
</a>
|
| 532 |
-
<small>
|
| 533 |
-
(Caman)
|
| 534 |
-
</small>
|
| 535 |
-
</li>
|
| 536 |
-
<li>
|
| 537 |
-
<a href='classes/Caman.html#isImageLoaded-instance' target='main' title='isImageLoaded'>
|
| 538 |
-
#isImageLoaded
|
| 539 |
-
</a>
|
| 540 |
-
<small>
|
| 541 |
-
(Caman)
|
| 542 |
-
</small>
|
| 543 |
-
</li>
|
| 544 |
-
<li>
|
| 545 |
-
<a href='classes/Caman/IO.html#isRemote-class' target='main' title='isRemote'>
|
| 546 |
-
.isRemote
|
| 547 |
-
</a>
|
| 548 |
-
<small>
|
| 549 |
-
(Caman.IO)
|
| 550 |
-
</small>
|
| 551 |
-
</li>
|
| 552 |
-
<li>
|
| 553 |
-
<a href='classes/Caman/IO.html#isURLRemote-class' target='main' title='isURLRemote'>
|
| 554 |
-
.isURLRemote
|
| 555 |
-
</a>
|
| 556 |
-
<small>
|
| 557 |
-
(Caman.IO)
|
| 558 |
-
</small>
|
| 559 |
-
</li>
|
| 560 |
-
<li>
|
| 561 |
-
<a href='classes/Caman/Convert.html#labToRGB-class' target='main' title='labToRGB'>
|
| 562 |
-
.labToRGB
|
| 563 |
-
</a>
|
| 564 |
-
<small>
|
| 565 |
-
(Caman.Convert)
|
| 566 |
-
</small>
|
| 567 |
-
</li>
|
| 568 |
-
<li>
|
| 569 |
-
<a href='classes/Caman/Convert.html#labToXYZ-class' target='main' title='labToXYZ'>
|
| 570 |
-
.labToXYZ
|
| 571 |
-
</a>
|
| 572 |
-
<small>
|
| 573 |
-
(Caman.Convert)
|
| 574 |
-
</small>
|
| 575 |
-
</li>
|
| 576 |
-
<li>
|
| 577 |
-
<a href='classes/Caman/Event.html#listen-class' target='main' title='listen'>
|
| 578 |
-
.listen
|
| 579 |
-
</a>
|
| 580 |
-
<small>
|
| 581 |
-
(Caman.Event)
|
| 582 |
-
</small>
|
| 583 |
-
</li>
|
| 584 |
-
<li>
|
| 585 |
-
<a href='classes/Caman/Renderer.html#loadOverlay-instance' target='main' title='loadOverlay'>
|
| 586 |
-
#loadOverlay
|
| 587 |
-
</a>
|
| 588 |
-
<small>
|
| 589 |
-
(Caman.Renderer)
|
| 590 |
-
</small>
|
| 591 |
-
</li>
|
| 592 |
-
<li>
|
| 593 |
-
<a href='classes/Caman/Pixel.html#locationToCoordinates-class' target='main' title='locationToCoordinates'>
|
| 594 |
-
.locationToCoordinates
|
| 595 |
-
</a>
|
| 596 |
-
<small>
|
| 597 |
-
(Caman.Pixel)
|
| 598 |
-
</small>
|
| 599 |
-
</li>
|
| 600 |
-
<li>
|
| 601 |
-
<a href='classes/Caman/Pixel.html#locationXY-instance' target='main' title='locationXY'>
|
| 602 |
-
#locationXY
|
| 603 |
-
</a>
|
| 604 |
-
<small>
|
| 605 |
-
(Caman.Pixel)
|
| 606 |
-
</small>
|
| 607 |
-
</li>
|
| 608 |
-
<li>
|
| 609 |
-
<a href='classes/Caman/Calculate.html#luminance-class' target='main' title='luminance'>
|
| 610 |
-
.luminance
|
| 611 |
-
</a>
|
| 612 |
-
<small>
|
| 613 |
-
(Caman.Calculate)
|
| 614 |
-
</small>
|
| 615 |
-
</li>
|
| 616 |
-
<li>
|
| 617 |
-
<a href='classes/Caman/Calculate.html#missingValues-class' target='main' title='missingValues'>
|
| 618 |
-
.missingValues
|
| 619 |
-
</a>
|
| 620 |
-
<small>
|
| 621 |
-
(Caman.Calculate)
|
| 622 |
-
</small>
|
| 623 |
-
</li>
|
| 624 |
-
<li>
|
| 625 |
-
<a href='classes/Caman.html#needsHiDPISwap-instance' target='main' title='needsHiDPISwap'>
|
| 626 |
-
#needsHiDPISwap
|
| 627 |
-
</a>
|
| 628 |
-
<small>
|
| 629 |
-
(Caman)
|
| 630 |
-
</small>
|
| 631 |
-
</li>
|
| 632 |
-
<li>
|
| 633 |
-
<a href='classes/Caman.html#newLayer-instance' target='main' title='newLayer'>
|
| 634 |
-
#newLayer
|
| 635 |
-
</a>
|
| 636 |
-
<small>
|
| 637 |
-
(Caman)
|
| 638 |
-
</small>
|
| 639 |
-
</li>
|
| 640 |
-
<li>
|
| 641 |
-
<a href='classes/Caman/Layer.html#newLayer-instance' target='main' title='newLayer'>
|
| 642 |
-
#newLayer
|
| 643 |
-
</a>
|
| 644 |
-
<small>
|
| 645 |
-
(Caman.Layer)
|
| 646 |
-
</small>
|
| 647 |
-
</li>
|
| 648 |
-
<li>
|
| 649 |
-
<a href='classes/Caman.html#nodeFileReady-instance' target='main' title='nodeFileReady'>
|
| 650 |
-
#nodeFileReady
|
| 651 |
-
</a>
|
| 652 |
-
<small>
|
| 653 |
-
(Caman)
|
| 654 |
-
</small>
|
| 655 |
-
</li>
|
| 656 |
-
<li>
|
| 657 |
-
<a href='classes/Caman/Layer.html#opacity-instance' target='main' title='opacity'>
|
| 658 |
-
#opacity
|
| 659 |
-
</a>
|
| 660 |
-
<small>
|
| 661 |
-
(Caman.Layer)
|
| 662 |
-
</small>
|
| 663 |
-
</li>
|
| 664 |
-
<li>
|
| 665 |
-
<a href='classes/Caman.html#originalVisiblePixels-instance' target='main' title='originalVisiblePixels'>
|
| 666 |
-
#originalVisiblePixels
|
| 667 |
-
</a>
|
| 668 |
-
<small>
|
| 669 |
-
(Caman)
|
| 670 |
-
</small>
|
| 671 |
-
</li>
|
| 672 |
-
<li>
|
| 673 |
-
<a href='classes/Caman/Layer.html#overlayImage-instance' target='main' title='overlayImage'>
|
| 674 |
-
#overlayImage
|
| 675 |
-
</a>
|
| 676 |
-
<small>
|
| 677 |
-
(Caman.Layer)
|
| 678 |
-
</small>
|
| 679 |
-
</li>
|
| 680 |
-
<li>
|
| 681 |
-
<a href='classes/CamanParser.html#parse-instance' target='main' title='parse'>
|
| 682 |
-
#parse
|
| 683 |
-
</a>
|
| 684 |
-
<small>
|
| 685 |
-
(CamanParser)
|
| 686 |
-
</small>
|
| 687 |
-
</li>
|
| 688 |
-
<li>
|
| 689 |
-
<a href='classes/Caman.html#parseArguments-instance' target='main' title='parseArguments'>
|
| 690 |
-
#parseArguments
|
| 691 |
-
</a>
|
| 692 |
-
<small>
|
| 693 |
-
(Caman)
|
| 694 |
-
</small>
|
| 695 |
-
</li>
|
| 696 |
-
<li>
|
| 697 |
-
<a href='classes/Caman/Pixel.html#pixelAtLocation-instance' target='main' title='pixelAtLocation'>
|
| 698 |
-
#pixelAtLocation
|
| 699 |
-
</a>
|
| 700 |
-
<small>
|
| 701 |
-
(Caman.Pixel)
|
| 702 |
-
</small>
|
| 703 |
-
</li>
|
| 704 |
-
<li>
|
| 705 |
-
<a href='classes/Caman.html#popContext-instance' target='main' title='popContext'>
|
| 706 |
-
#popContext
|
| 707 |
-
</a>
|
| 708 |
-
<small>
|
| 709 |
-
(Caman)
|
| 710 |
-
</small>
|
| 711 |
-
</li>
|
| 712 |
-
<li>
|
| 713 |
-
<a href='classes/Caman.html#process-instance' target='main' title='process'>
|
| 714 |
-
#process
|
| 715 |
-
</a>
|
| 716 |
-
<small>
|
| 717 |
-
(Caman)
|
| 718 |
-
</small>
|
| 719 |
-
</li>
|
| 720 |
-
<li>
|
| 721 |
-
<a href='classes/Caman.html#processKernel-instance' target='main' title='processKernel'>
|
| 722 |
-
#processKernel
|
| 723 |
-
</a>
|
| 724 |
-
<small>
|
| 725 |
-
(Caman)
|
| 726 |
-
</small>
|
| 727 |
-
</li>
|
| 728 |
-
<li>
|
| 729 |
-
<a href='classes/Caman/Renderer.html#processKernel-instance' target='main' title='processKernel'>
|
| 730 |
-
#processKernel
|
| 731 |
-
</a>
|
| 732 |
-
<small>
|
| 733 |
-
(Caman.Renderer)
|
| 734 |
-
</small>
|
| 735 |
-
</li>
|
| 736 |
-
<li>
|
| 737 |
-
<a href='classes/Caman/Renderer.html#processNext-instance' target='main' title='processNext'>
|
| 738 |
-
#processNext
|
| 739 |
-
</a>
|
| 740 |
-
<small>
|
| 741 |
-
(Caman.Renderer)
|
| 742 |
-
</small>
|
| 743 |
-
</li>
|
| 744 |
-
<li>
|
| 745 |
-
<a href='classes/Caman.html#processPlugin-instance' target='main' title='processPlugin'>
|
| 746 |
-
#processPlugin
|
| 747 |
-
</a>
|
| 748 |
-
<small>
|
| 749 |
-
(Caman)
|
| 750 |
-
</small>
|
| 751 |
-
</li>
|
| 752 |
-
<li>
|
| 753 |
-
<a href='classes/Caman/IO.html#proxyUrl-class' target='main' title='proxyUrl'>
|
| 754 |
-
.proxyUrl
|
| 755 |
-
</a>
|
| 756 |
-
<small>
|
| 757 |
-
(Caman.IO)
|
| 758 |
-
</small>
|
| 759 |
-
</li>
|
| 760 |
-
<li>
|
| 761 |
-
<a href='classes/Caman.html#pushContext-instance' target='main' title='pushContext'>
|
| 762 |
-
#pushContext
|
| 763 |
-
</a>
|
| 764 |
-
<small>
|
| 765 |
-
(Caman)
|
| 766 |
-
</small>
|
| 767 |
-
</li>
|
| 768 |
-
<li>
|
| 769 |
-
<a href='classes/Caman/Store.html#put-class' target='main' title='put'>
|
| 770 |
-
.put
|
| 771 |
-
</a>
|
| 772 |
-
<small>
|
| 773 |
-
(Caman.Store)
|
| 774 |
-
</small>
|
| 775 |
-
</li>
|
| 776 |
-
<li>
|
| 777 |
-
<a href='classes/Caman/Pixel.html#putPixel-instance' target='main' title='putPixel'>
|
| 778 |
-
#putPixel
|
| 779 |
-
</a>
|
| 780 |
-
<small>
|
| 781 |
-
(Caman.Pixel)
|
| 782 |
-
</small>
|
| 783 |
-
</li>
|
| 784 |
-
<li>
|
| 785 |
-
<a href='classes/Caman/Pixel.html#putPixelRelative-instance' target='main' title='putPixelRelative'>
|
| 786 |
-
#putPixelRelative
|
| 787 |
-
</a>
|
| 788 |
-
<small>
|
| 789 |
-
(Caman.Pixel)
|
| 790 |
-
</small>
|
| 791 |
-
</li>
|
| 792 |
-
<li>
|
| 793 |
-
<a href='classes/Caman/Calculate.html#randomRange-class' target='main' title='randomRange'>
|
| 794 |
-
.randomRange
|
| 795 |
-
</a>
|
| 796 |
-
<small>
|
| 797 |
-
(Caman.Calculate)
|
| 798 |
-
</small>
|
| 799 |
-
</li>
|
| 800 |
-
<li>
|
| 801 |
-
<a href='classes/Caman.html#readFromHttp-instance' target='main' title='readFromHttp'>
|
| 802 |
-
#readFromHttp
|
| 803 |
-
</a>
|
| 804 |
-
<small>
|
| 805 |
-
(Caman)
|
| 806 |
-
</small>
|
| 807 |
-
</li>
|
| 808 |
-
<li>
|
| 809 |
-
<a href='classes/Caman/Blender.html#register-class' target='main' title='register'>
|
| 810 |
-
.register
|
| 811 |
-
</a>
|
| 812 |
-
<small>
|
| 813 |
-
(Caman.Blender)
|
| 814 |
-
</small>
|
| 815 |
-
</li>
|
| 816 |
-
<li>
|
| 817 |
-
<a href='classes/Caman/Filter.html#register-class' target='main' title='register'>
|
| 818 |
-
.register
|
| 819 |
-
</a>
|
| 820 |
-
<small>
|
| 821 |
-
(Caman.Filter)
|
| 822 |
-
</small>
|
| 823 |
-
</li>
|
| 824 |
-
<li>
|
| 825 |
-
<a href='classes/Caman/Plugin.html#register-class' target='main' title='register'>
|
| 826 |
-
.register
|
| 827 |
-
</a>
|
| 828 |
-
<small>
|
| 829 |
-
(Caman.Plugin)
|
| 830 |
-
</small>
|
| 831 |
-
</li>
|
| 832 |
-
<li>
|
| 833 |
-
<a href='classes/Caman.html#reloadCanvasData-instance' target='main' title='reloadCanvasData'>
|
| 834 |
-
#reloadCanvasData
|
| 835 |
-
</a>
|
| 836 |
-
<small>
|
| 837 |
-
(Caman)
|
| 838 |
-
</small>
|
| 839 |
-
</li>
|
| 840 |
-
<li>
|
| 841 |
-
<a href='classes/Caman/IO.html#remoteCheck-class' target='main' title='remoteCheck'>
|
| 842 |
-
.remoteCheck
|
| 843 |
-
</a>
|
| 844 |
-
<small>
|
| 845 |
-
(Caman.IO)
|
| 846 |
-
</small>
|
| 847 |
-
</li>
|
| 848 |
-
<li>
|
| 849 |
-
<a href='classes/Caman.html#render-instance' target='main' title='render'>
|
| 850 |
-
#render
|
| 851 |
-
</a>
|
| 852 |
-
<small>
|
| 853 |
-
(Caman)
|
| 854 |
-
</small>
|
| 855 |
-
</li>
|
| 856 |
-
<li>
|
| 857 |
-
<a href='classes/Caman/Renderer.html#renderBlock-instance' target='main' title='renderBlock'>
|
| 858 |
-
#renderBlock
|
| 859 |
-
</a>
|
| 860 |
-
<small>
|
| 861 |
-
(Caman.Renderer)
|
| 862 |
-
</small>
|
| 863 |
-
</li>
|
| 864 |
-
<li>
|
| 865 |
-
<a href='classes/Caman/Renderer.html#renderKernel-instance' target='main' title='renderKernel'>
|
| 866 |
-
#renderKernel
|
| 867 |
-
</a>
|
| 868 |
-
<small>
|
| 869 |
-
(Caman.Renderer)
|
| 870 |
-
</small>
|
| 871 |
-
</li>
|
| 872 |
-
<li>
|
| 873 |
-
<a href='classes/Caman.html#replaceCanvas-instance' target='main' title='replaceCanvas'>
|
| 874 |
-
#replaceCanvas
|
| 875 |
-
</a>
|
| 876 |
-
<small>
|
| 877 |
-
(Caman)
|
| 878 |
-
</small>
|
| 879 |
-
</li>
|
| 880 |
-
<li>
|
| 881 |
-
<a href='classes/Caman.html#reset-instance' target='main' title='reset'>
|
| 882 |
-
#reset
|
| 883 |
-
</a>
|
| 884 |
-
<small>
|
| 885 |
-
(Caman)
|
| 886 |
-
</small>
|
| 887 |
-
</li>
|
| 888 |
-
<li>
|
| 889 |
-
<a href='classes/Caman.html#resetOriginalPixelData-instance' target='main' title='resetOriginalPixelData'>
|
| 890 |
-
#resetOriginalPixelData
|
| 891 |
-
</a>
|
| 892 |
-
<small>
|
| 893 |
-
(Caman)
|
| 894 |
-
</small>
|
| 895 |
-
</li>
|
| 896 |
-
<li>
|
| 897 |
-
<a href='classes/Caman.html#revert-instance' target='main' title='revert'>
|
| 898 |
-
#revert
|
| 899 |
-
</a>
|
| 900 |
-
<small>
|
| 901 |
-
(Caman)
|
| 902 |
-
</small>
|
| 903 |
-
</li>
|
| 904 |
-
<li>
|
| 905 |
-
<a href='classes/Caman/Convert.html#rgbToHSL-class' target='main' title='rgbToHSL'>
|
| 906 |
-
.rgbToHSL
|
| 907 |
-
</a>
|
| 908 |
-
<small>
|
| 909 |
-
(Caman.Convert)
|
| 910 |
-
</small>
|
| 911 |
-
</li>
|
| 912 |
-
<li>
|
| 913 |
-
<a href='classes/Caman/Convert.html#rgbToHSV-class' target='main' title='rgbToHSV'>
|
| 914 |
-
.rgbToHSV
|
| 915 |
-
</a>
|
| 916 |
-
<small>
|
| 917 |
-
(Caman.Convert)
|
| 918 |
-
</small>
|
| 919 |
-
</li>
|
| 920 |
-
<li>
|
| 921 |
-
<a href='classes/Caman/Convert.html#rgbToLab-class' target='main' title='rgbToLab'>
|
| 922 |
-
.rgbToLab
|
| 923 |
-
</a>
|
| 924 |
-
<small>
|
| 925 |
-
(Caman.Convert)
|
| 926 |
-
</small>
|
| 927 |
-
</li>
|
| 928 |
-
<li>
|
| 929 |
-
<a href='classes/Caman/Convert.html#rgbToXYZ-class' target='main' title='rgbToXYZ'>
|
| 930 |
-
.rgbToXYZ
|
| 931 |
-
</a>
|
| 932 |
-
<small>
|
| 933 |
-
(Caman.Convert)
|
| 934 |
-
</small>
|
| 935 |
-
</li>
|
| 936 |
-
<li>
|
| 937 |
-
<a href='classes/Caman/Layer.html#setBlendingMode-instance' target='main' title='setBlendingMode'>
|
| 938 |
-
#setBlendingMode
|
| 939 |
-
</a>
|
| 940 |
-
<small>
|
| 941 |
-
(Caman.Layer)
|
| 942 |
-
</small>
|
| 943 |
-
</li>
|
| 944 |
-
<li>
|
| 945 |
-
<a href='classes/Caman/Pixel.html#setContext-instance' target='main' title='setContext'>
|
| 946 |
-
#setContext
|
| 947 |
-
</a>
|
| 948 |
-
<small>
|
| 949 |
-
(Caman.Pixel)
|
| 950 |
-
</small>
|
| 951 |
-
</li>
|
| 952 |
-
<li>
|
| 953 |
-
<a href='classes/Caman.html#setInitObject-instance' target='main' title='setInitObject'>
|
| 954 |
-
#setInitObject
|
| 955 |
-
</a>
|
| 956 |
-
<small>
|
| 957 |
-
(Caman)
|
| 958 |
-
</small>
|
| 959 |
-
</li>
|
| 960 |
-
<li>
|
| 961 |
-
<a href='classes/Caman.html#setup-instance' target='main' title='setup'>
|
| 962 |
-
#setup
|
| 963 |
-
</a>
|
| 964 |
-
<small>
|
| 965 |
-
(Caman)
|
| 966 |
-
</small>
|
| 967 |
-
</li>
|
| 968 |
-
<li>
|
| 969 |
-
<a href='classes/Caman/Pixel.html#toHex-instance' target='main' title='toHex'>
|
| 970 |
-
#toHex
|
| 971 |
-
</a>
|
| 972 |
-
<small>
|
| 973 |
-
(Caman.Pixel)
|
| 974 |
-
</small>
|
| 975 |
-
</li>
|
| 976 |
-
<li>
|
| 977 |
-
<a href='classes/Caman.html#toString-class' target='main' title='toString'>
|
| 978 |
-
.toString
|
| 979 |
-
</a>
|
| 980 |
-
<small>
|
| 981 |
-
(Caman)
|
| 982 |
-
</small>
|
| 983 |
-
</li>
|
| 984 |
-
<li>
|
| 985 |
-
<a href='classes/Caman/Pixel.html#toString-instance' target='main' title='toString'>
|
| 986 |
-
#toString
|
| 987 |
-
</a>
|
| 988 |
-
<small>
|
| 989 |
-
(Caman.Pixel)
|
| 990 |
-
</small>
|
| 991 |
-
</li>
|
| 992 |
-
<li>
|
| 993 |
-
<a href='classes/Caman/Event.html#trigger-class' target='main' title='trigger'>
|
| 994 |
-
.trigger
|
| 995 |
-
</a>
|
| 996 |
-
<small>
|
| 997 |
-
(Caman.Event)
|
| 998 |
-
</small>
|
| 999 |
-
</li>
|
| 1000 |
-
<li>
|
| 1001 |
-
<a href='classes/Caman/IO.html#useProxy-class' target='main' title='useProxy'>
|
| 1002 |
-
.useProxy
|
| 1003 |
-
</a>
|
| 1004 |
-
<small>
|
| 1005 |
-
(Caman.IO)
|
| 1006 |
-
</small>
|
| 1007 |
-
</li>
|
| 1008 |
-
<li>
|
| 1009 |
-
<a href='classes/Caman.html#waitForImageLoaded-instance' target='main' title='waitForImageLoaded'>
|
| 1010 |
-
#waitForImageLoaded
|
| 1011 |
-
</a>
|
| 1012 |
-
<small>
|
| 1013 |
-
(Caman)
|
| 1014 |
-
</small>
|
| 1015 |
-
</li>
|
| 1016 |
-
<li>
|
| 1017 |
-
<a href='classes/Caman/Convert.html#xyzToLab-class' target='main' title='xyzToLab'>
|
| 1018 |
-
.xyzToLab
|
| 1019 |
-
</a>
|
| 1020 |
-
<small>
|
| 1021 |
-
(Caman.Convert)
|
| 1022 |
-
</small>
|
| 1023 |
-
</li>
|
| 1024 |
-
<li>
|
| 1025 |
-
<a href='classes/Caman/Convert.html#xyzToRGB-class' target='main' title='xyzToRGB'>
|
| 1026 |
-
.xyzToRGB
|
| 1027 |
-
</a>
|
| 1028 |
-
<small>
|
| 1029 |
-
(Caman.Convert)
|
| 1030 |
-
</small>
|
| 1031 |
-
</li>
|
| 1032 |
-
</ul>
|
| 1033 |
-
</div>
|
| 1034 |
-
</body>
|
| 1035 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/api/mixin_list.html
DELETED
|
@@ -1,28 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html>
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset='UTF-8'>
|
| 5 |
-
<title>CamanJS Documentation</title>
|
| 6 |
-
<link rel='stylesheet' href='assets/codo.css' type='text/css'>
|
| 7 |
-
<script src='assets/codo.js'></script>
|
| 8 |
-
<script src='assets/search_data.js'></script>
|
| 9 |
-
</head>
|
| 10 |
-
<body class='list'>
|
| 11 |
-
<div class='list tree' id='content'>
|
| 12 |
-
<h1 class='full_list_header'>Mixin List</h1>
|
| 13 |
-
<nav>
|
| 14 |
-
<a target='_self' href='class_list.html'>Classes</a>
|
| 15 |
-
<a target='_self' href='file_list.html'>Files</a>
|
| 16 |
-
<a target='_self' href='method_list.html'>Methods</a>
|
| 17 |
-
<a target='_self' href='extra_list.html'>Extras</a>
|
| 18 |
-
</nav>
|
| 19 |
-
<div id='search'>
|
| 20 |
-
Search:
|
| 21 |
-
<input type='text'>
|
| 22 |
-
</div>
|
| 23 |
-
<ul>
|
| 24 |
-
</ul>
|
| 25 |
-
|
| 26 |
-
</div>
|
| 27 |
-
</body>
|
| 28 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/bower.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "caman",
|
| 3 |
-
"version": "4.1.2",
|
| 4 |
-
"main": ["./dist/caman.min.js", "./dist/caman.full.min.js"],
|
| 5 |
-
"ignore": [
|
| 6 |
-
"adapters/",
|
| 7 |
-
"docs/",
|
| 8 |
-
"examples/",
|
| 9 |
-
"src/",
|
| 10 |
-
"test/"
|
| 11 |
-
],
|
| 12 |
-
"dependencies": {
|
| 13 |
-
}
|
| 14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.css
DELETED
|
@@ -1,223 +0,0 @@
|
|
| 1 |
-
@media screen and (max-width: 992px) {
|
| 2 |
-
|
| 3 |
-
body #caman_content .wooccmsidebar {
|
| 4 |
-
width: 100%;
|
| 5 |
-
top: 60%;
|
| 6 |
-
}
|
| 7 |
-
body #caman_content .wooccmimageeditor{
|
| 8 |
-
width: 100%;
|
| 9 |
-
left: inherit;
|
| 10 |
-
}
|
| 11 |
-
.wooccmsidebar #Filters .Filter {
|
| 12 |
-
width: 45%;
|
| 13 |
-
}
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
@media screen and (max-width: 933px) {
|
| 17 |
-
|
| 18 |
-
#caman_content .wooccmsidebar #Filters .Filter {
|
| 19 |
-
width: 44%;
|
| 20 |
-
}
|
| 21 |
-
}
|
| 22 |
-
|
| 23 |
-
@media screen and (max-width: 783px) {
|
| 24 |
-
|
| 25 |
-
body #caman_content .wooccmsidebar #Filters .Filter {
|
| 26 |
-
width: 42%;
|
| 27 |
-
}
|
| 28 |
-
}
|
| 29 |
-
|
| 30 |
-
@media screen and (max-width: 596px) {
|
| 31 |
-
|
| 32 |
-
body #caman_content .wooccmsidebar #Filters .Filter {
|
| 33 |
-
width: 100%;
|
| 34 |
-
}
|
| 35 |
-
}
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
#Filters .Filter{
|
| 39 |
-
float:left;
|
| 40 |
-
width:300px;
|
| 41 |
-
margin-right: 20px;
|
| 42 |
-
padding-right: 66px;
|
| 43 |
-
margin-left: 25px;
|
| 44 |
-
}
|
| 45 |
-
|
| 46 |
-
#Filters .Filter>div{
|
| 47 |
-
padding:5px 10px;
|
| 48 |
-
}
|
| 49 |
-
|
| 50 |
-
#Filters .Filter .FilterName{
|
| 51 |
-
float:left;
|
| 52 |
-
}
|
| 53 |
-
|
| 54 |
-
#Filters .Filter .FilterName p{
|
| 55 |
-
margin:0;
|
| 56 |
-
text-shadow: none;
|
| 57 |
-
text-rendering: optimizeLegibility;
|
| 58 |
-
text-decoration: none;
|
| 59 |
-
color: #777;
|
| 60 |
-
}
|
| 61 |
-
|
| 62 |
-
#Filters .Filter .FilterSetting{float:right}#Filters .Filter .FilterSetting input[type="range"]{
|
| 63 |
-
-webkit-appearance:none!important;
|
| 64 |
-
width:150px;
|
| 65 |
-
background-color:#434341;
|
| 66 |
-
height:1px;
|
| 67 |
-
vertical-align:1px;
|
| 68 |
-
}
|
| 69 |
-
|
| 70 |
-
#Filters .Filter .FilterSetting input[type="range"]::-webkit-slider-thumb{
|
| 71 |
-
-webkit-appearance:none!important;
|
| 72 |
-
height:12px;
|
| 73 |
-
width:15px;
|
| 74 |
-
background-color:#368ad2;
|
| 75 |
-
cursor:pointer;
|
| 76 |
-
}
|
| 77 |
-
|
| 78 |
-
#Filters .Filter .FilterSetting .FilterValue{
|
| 79 |
-
width:30px;
|
| 80 |
-
display:inline-block;
|
| 81 |
-
}
|
| 82 |
-
|
| 83 |
-
#PresetFilters a{
|
| 84 |
-
-webkit-border-radius:3px;
|
| 85 |
-
-moz-border-radius:3px;
|
| 86 |
-
border-radius:3px;
|
| 87 |
-
-webkit-transition:background-color .3s ease-out;
|
| 88 |
-
-moz-transition:background-color .3s ease-out;
|
| 89 |
-
transition:background-color .3s ease-out;
|
| 90 |
-
background-color:#368ad2;
|
| 91 |
-
display:block;
|
| 92 |
-
float:left;
|
| 93 |
-
text-align:center;
|
| 94 |
-
padding:8px 10px;
|
| 95 |
-
color:black;
|
| 96 |
-
margin:5px;
|
| 97 |
-
border:none;
|
| 98 |
-
font-size:13px;
|
| 99 |
-
width:120px;
|
| 100 |
-
cursor:pointer
|
| 101 |
-
}
|
| 102 |
-
|
| 103 |
-
#PresetFilters a:hover{
|
| 104 |
-
background-color:#4b96d7;
|
| 105 |
-
}
|
| 106 |
-
|
| 107 |
-
#PresetFilters a:active{
|
| 108 |
-
-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,0.3);
|
| 109 |
-
-moz-box-shadow:inset 1px 1px 3px rgba(0,0,0,0.3);
|
| 110 |
-
box-shadow:inset 1px 1px 3px rgba(0,0,0,0.3);
|
| 111 |
-
}
|
| 112 |
-
|
| 113 |
-
#PresetFilters a.Active{
|
| 114 |
-
background-color:#e69751;
|
| 115 |
-
}
|
| 116 |
-
|
| 117 |
-
#caman_content {
|
| 118 |
-
color: #fff;
|
| 119 |
-
text-align: center;
|
| 120 |
-
position: fixed;
|
| 121 |
-
width: 100%;
|
| 122 |
-
height: 100%;
|
| 123 |
-
left: 0;
|
| 124 |
-
top: 0;
|
| 125 |
-
-webkit-box-sizing: border-box;
|
| 126 |
-
-moz-box-sizing: border-box;
|
| 127 |
-
box-sizing: border-box;
|
| 128 |
-
background: #1B1917;
|
| 129 |
-
font-weight: normal;
|
| 130 |
-
text-shadow: none;
|
| 131 |
-
z-index: 99999;
|
| 132 |
-
}
|
| 133 |
-
|
| 134 |
-
#caman_content h3{
|
| 135 |
-
color: #777;
|
| 136 |
-
font-weight: normal;
|
| 137 |
-
text-shadow: none;
|
| 138 |
-
padding-top: 8px;
|
| 139 |
-
text-transform: uppercase;
|
| 140 |
-
}
|
| 141 |
-
|
| 142 |
-
#caman_content .wooccmsidebar {
|
| 143 |
-
width: 300px;
|
| 144 |
-
margin: 0;
|
| 145 |
-
z-index: 1;
|
| 146 |
-
overflow-x: hidden;
|
| 147 |
-
overflow-y: auto;
|
| 148 |
-
float:left;
|
| 149 |
-
height: initial;
|
| 150 |
-
position: absolute;
|
| 151 |
-
bottom: 0;
|
| 152 |
-
top: 44px;
|
| 153 |
-
background: #1B1917;
|
| 154 |
-
}
|
| 155 |
-
|
| 156 |
-
#caman_content .Clear {
|
| 157 |
-
padding: 15px;
|
| 158 |
-
float: left;
|
| 159 |
-
width: 91%;
|
| 160 |
-
border-top: 1px solid black;
|
| 161 |
-
margin-top: 30px;
|
| 162 |
-
}
|
| 163 |
-
|
| 164 |
-
#caman_content #Filters {
|
| 165 |
-
margin-top: 25px;
|
| 166 |
-
}
|
| 167 |
-
|
| 168 |
-
#caman_content .image-edit {
|
| 169 |
-
overflow: auto;
|
| 170 |
-
}
|
| 171 |
-
|
| 172 |
-
#caman_content #wooccmtoolbar {
|
| 173 |
-
z-index: 2;
|
| 174 |
-
background: -moz-linear-gradient(#3B3937, #2B2927);
|
| 175 |
-
background: -webkit-gradient(linear, left top, left bottom, from(#3B3937), to(#2B2927));
|
| 176 |
-
-moz-box-shadow: 0 1px 0 black;
|
| 177 |
-
-webkit-box-shadow: 0 1px 0 black;
|
| 178 |
-
height: 44px;
|
| 179 |
-
width: 100%;
|
| 180 |
-
}
|
| 181 |
-
|
| 182 |
-
#caman_content #wooccmtoolbar #close {
|
| 183 |
-
margin-left: 0;
|
| 184 |
-
}
|
| 185 |
-
|
| 186 |
-
#caman_content #wooccmtoolbar .button {
|
| 187 |
-
float: left;
|
| 188 |
-
line-height: 27px;
|
| 189 |
-
margin: 7px 37px;
|
| 190 |
-
display: inline-block;
|
| 191 |
-
padding: 1px 15px;
|
| 192 |
-
border-radius: 4px;
|
| 193 |
-
vertical-align: top;
|
| 194 |
-
background: -moz-linear-gradient(#4B4947, #32302D);
|
| 195 |
-
background: -webkit-gradient(linear, left top, left bottom, from(#4B4947), to(#32302D));
|
| 196 |
-
-moz-box-shadow: inset 0 1px 0 #5B5957, 0 -1px 0 black, 0 1px 0 black, -1px 0 0 black, 1px 0 0 black, 0 1px 1px #111;
|
| 197 |
-
-webkit-box-shadow: inset 0 1px 0 #5B5957, 0 -1px 0 black, 0 1px 0 black, -1px 0 0 black, 1px 0 0 black, 0 1px 1px #111;
|
| 198 |
-
cursor: pointer;
|
| 199 |
-
}
|
| 200 |
-
|
| 201 |
-
#caman_content .wooccmimageeditor {
|
| 202 |
-
position: absolute;
|
| 203 |
-
left: 300px;
|
| 204 |
-
top: 44px;
|
| 205 |
-
right: 0;
|
| 206 |
-
bottom: 0;
|
| 207 |
-
overflow: auto;
|
| 208 |
-
padding: 30px;
|
| 209 |
-
}
|
| 210 |
-
|
| 211 |
-
#caman_content ::-webkit-scrollbar {
|
| 212 |
-
width: 15px;
|
| 213 |
-
}
|
| 214 |
-
|
| 215 |
-
#caman_content ::-webkit-scrollbar-track {
|
| 216 |
-
-webkit-box-shadow: inset 0 0 6px black;
|
| 217 |
-
border-radius: 10px;
|
| 218 |
-
}
|
| 219 |
-
|
| 220 |
-
#caman_content ::-webkit-scrollbar-thumb {
|
| 221 |
-
border-radius: 10px;
|
| 222 |
-
-webkit-box-shadow: inset 0 0 6px black;
|
| 223 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.full.js
DELETED
|
@@ -1,3676 +0,0 @@
|
|
| 1 |
-
// Generated by CoffeeScript 1.6.3
|
| 2 |
-
(function() {
|
| 3 |
-
var $, Analyze, Blender, Calculate, Caman, CamanParser, Canvas, Convert, Event, Fiber, Filter, IO, Image, Layer, Log, Module, Pixel, Plugin, Renderer, Root, Store, Util, fs, http, moduleKeywords, slice, vignetteFilters,
|
| 4 |
-
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
| 5 |
-
__slice = [].slice,
|
| 6 |
-
__hasProp = {}.hasOwnProperty,
|
| 7 |
-
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
| 8 |
-
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
| 9 |
-
|
| 10 |
-
moduleKeywords = ['extended', 'included'];
|
| 11 |
-
|
| 12 |
-
Module = (function() {
|
| 13 |
-
function Module() {}
|
| 14 |
-
|
| 15 |
-
Module["extends"] = function(obj) {
|
| 16 |
-
var key, value, _ref;
|
| 17 |
-
for (key in obj) {
|
| 18 |
-
value = obj[key];
|
| 19 |
-
if (__indexOf.call(moduleKeywords, key) < 0) {
|
| 20 |
-
this[key] = value;
|
| 21 |
-
}
|
| 22 |
-
}
|
| 23 |
-
if ((_ref = obj.extended) != null) {
|
| 24 |
-
_ref.apply(this);
|
| 25 |
-
}
|
| 26 |
-
return this;
|
| 27 |
-
};
|
| 28 |
-
|
| 29 |
-
Module.includes = function(obj) {
|
| 30 |
-
var key, value, _ref;
|
| 31 |
-
for (key in obj) {
|
| 32 |
-
value = obj[key];
|
| 33 |
-
if (__indexOf.call(moduleKeywords, key) < 0) {
|
| 34 |
-
this.prototype[key] = value;
|
| 35 |
-
}
|
| 36 |
-
}
|
| 37 |
-
if ((_ref = obj.included) != null) {
|
| 38 |
-
_ref.apply(this);
|
| 39 |
-
}
|
| 40 |
-
return this;
|
| 41 |
-
};
|
| 42 |
-
|
| 43 |
-
Module.delegate = function() {
|
| 44 |
-
var args, source, target, _i, _len, _results;
|
| 45 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 46 |
-
target = args.pop();
|
| 47 |
-
_results = [];
|
| 48 |
-
for (_i = 0, _len = args.length; _i < _len; _i++) {
|
| 49 |
-
source = args[_i];
|
| 50 |
-
_results.push(this.prototype[source] = target.prototype[source]);
|
| 51 |
-
}
|
| 52 |
-
return _results;
|
| 53 |
-
};
|
| 54 |
-
|
| 55 |
-
Module.aliasFunction = function(to, from) {
|
| 56 |
-
var _this = this;
|
| 57 |
-
return this.prototype[to] = function() {
|
| 58 |
-
var args;
|
| 59 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 60 |
-
return _this.prototype[from].apply(_this, args);
|
| 61 |
-
};
|
| 62 |
-
};
|
| 63 |
-
|
| 64 |
-
Module.aliasProperty = function(to, from) {
|
| 65 |
-
return Object.defineProperty(this.prototype, to, {
|
| 66 |
-
get: function() {
|
| 67 |
-
return this[from];
|
| 68 |
-
},
|
| 69 |
-
set: function(val) {
|
| 70 |
-
return this[from] = val;
|
| 71 |
-
}
|
| 72 |
-
});
|
| 73 |
-
};
|
| 74 |
-
|
| 75 |
-
Module.included = function(func) {
|
| 76 |
-
return func.call(this, this.prototype);
|
| 77 |
-
};
|
| 78 |
-
|
| 79 |
-
return Module;
|
| 80 |
-
|
| 81 |
-
})();
|
| 82 |
-
|
| 83 |
-
slice = Array.prototype.slice;
|
| 84 |
-
|
| 85 |
-
$ = function(sel, root) {
|
| 86 |
-
if (root == null) {
|
| 87 |
-
root = document;
|
| 88 |
-
}
|
| 89 |
-
if (typeof sel === "object" || (typeof exports !== "undefined" && exports !== null)) {
|
| 90 |
-
return sel;
|
| 91 |
-
}
|
| 92 |
-
return root.querySelector(sel);
|
| 93 |
-
};
|
| 94 |
-
|
| 95 |
-
Util = (function() {
|
| 96 |
-
function Util() {}
|
| 97 |
-
|
| 98 |
-
Util.uniqid = (function() {
|
| 99 |
-
var id;
|
| 100 |
-
id = 0;
|
| 101 |
-
return {
|
| 102 |
-
get: function() {
|
| 103 |
-
return id++;
|
| 104 |
-
}
|
| 105 |
-
};
|
| 106 |
-
})();
|
| 107 |
-
|
| 108 |
-
Util.extend = function() {
|
| 109 |
-
var copy, dest, obj, prop, src, _i, _len;
|
| 110 |
-
obj = arguments[0], src = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
| 111 |
-
dest = obj;
|
| 112 |
-
for (_i = 0, _len = src.length; _i < _len; _i++) {
|
| 113 |
-
copy = src[_i];
|
| 114 |
-
for (prop in copy) {
|
| 115 |
-
if (!__hasProp.call(copy, prop)) continue;
|
| 116 |
-
dest[prop] = copy[prop];
|
| 117 |
-
}
|
| 118 |
-
}
|
| 119 |
-
return dest;
|
| 120 |
-
};
|
| 121 |
-
|
| 122 |
-
Util.clampRGB = function(val) {
|
| 123 |
-
if (val < 0) {
|
| 124 |
-
return 0;
|
| 125 |
-
}
|
| 126 |
-
if (val > 255) {
|
| 127 |
-
return 255;
|
| 128 |
-
}
|
| 129 |
-
return val;
|
| 130 |
-
};
|
| 131 |
-
|
| 132 |
-
Util.copyAttributes = function(from, to, opts) {
|
| 133 |
-
var attr, _i, _len, _ref, _ref1, _results;
|
| 134 |
-
if (opts == null) {
|
| 135 |
-
opts = {};
|
| 136 |
-
}
|
| 137 |
-
_ref = from.attributes;
|
| 138 |
-
_results = [];
|
| 139 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 140 |
-
attr = _ref[_i];
|
| 141 |
-
if ((opts.except != null) && (_ref1 = attr.nodeName, __indexOf.call(opts.except, _ref1) >= 0)) {
|
| 142 |
-
continue;
|
| 143 |
-
}
|
| 144 |
-
_results.push(to.setAttribute(attr.nodeName, attr.nodeValue));
|
| 145 |
-
}
|
| 146 |
-
return _results;
|
| 147 |
-
};
|
| 148 |
-
|
| 149 |
-
Util.dataArray = function(length) {
|
| 150 |
-
if (length == null) {
|
| 151 |
-
length = 0;
|
| 152 |
-
}
|
| 153 |
-
if (Caman.NodeJS || (window.Uint8Array != null)) {
|
| 154 |
-
return new Uint8Array(length);
|
| 155 |
-
}
|
| 156 |
-
return new Array(length);
|
| 157 |
-
};
|
| 158 |
-
|
| 159 |
-
return Util;
|
| 160 |
-
|
| 161 |
-
})();
|
| 162 |
-
|
| 163 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 164 |
-
Root = exports;
|
| 165 |
-
Canvas = require('canvas');
|
| 166 |
-
Image = Canvas.Image;
|
| 167 |
-
Fiber = require('fibers');
|
| 168 |
-
fs = require('fs');
|
| 169 |
-
http = require('http');
|
| 170 |
-
} else {
|
| 171 |
-
Root = window;
|
| 172 |
-
}
|
| 173 |
-
|
| 174 |
-
Caman = (function(_super) {
|
| 175 |
-
__extends(Caman, _super);
|
| 176 |
-
|
| 177 |
-
Caman.version = {
|
| 178 |
-
release: "4.1.2",
|
| 179 |
-
date: "7/27/2013"
|
| 180 |
-
};
|
| 181 |
-
|
| 182 |
-
Caman.DEBUG = false;
|
| 183 |
-
|
| 184 |
-
Caman.allowRevert = true;
|
| 185 |
-
|
| 186 |
-
Caman.crossOrigin = "anonymous";
|
| 187 |
-
|
| 188 |
-
Caman.remoteProxy = "";
|
| 189 |
-
|
| 190 |
-
Caman.proxyParam = "camanProxyUrl";
|
| 191 |
-
|
| 192 |
-
Caman.NodeJS = typeof exports !== "undefined" && exports !== null;
|
| 193 |
-
|
| 194 |
-
Caman.autoload = !Caman.NodeJS;
|
| 195 |
-
|
| 196 |
-
Caman.toString = function() {
|
| 197 |
-
return "Version " + Caman.version.release + ", Released " + Caman.version.date;
|
| 198 |
-
};
|
| 199 |
-
|
| 200 |
-
Caman.getAttrId = function(canvas) {
|
| 201 |
-
if (Caman.NodeJS) {
|
| 202 |
-
return true;
|
| 203 |
-
}
|
| 204 |
-
if (typeof canvas === "string") {
|
| 205 |
-
canvas = $(canvas);
|
| 206 |
-
}
|
| 207 |
-
if (!((canvas != null) && (canvas.getAttribute != null))) {
|
| 208 |
-
return null;
|
| 209 |
-
}
|
| 210 |
-
return canvas.getAttribute('data-caman-id');
|
| 211 |
-
};
|
| 212 |
-
|
| 213 |
-
function Caman() {
|
| 214 |
-
this.nodeFileReady = __bind(this.nodeFileReady, this);
|
| 215 |
-
var args, callback, id,
|
| 216 |
-
_this = this;
|
| 217 |
-
if (arguments.length === 0) {
|
| 218 |
-
throw "Invalid arguments";
|
| 219 |
-
}
|
| 220 |
-
if (this instanceof Caman) {
|
| 221 |
-
this.finishInit = this.finishInit.bind(this);
|
| 222 |
-
this.imageLoaded = this.imageLoaded.bind(this);
|
| 223 |
-
args = arguments[0];
|
| 224 |
-
if (!Caman.NodeJS) {
|
| 225 |
-
id = parseInt(Caman.getAttrId(args[0]), 10);
|
| 226 |
-
callback = typeof args[1] === "function" ? args[1] : typeof args[2] === "function" ? args[2] : function() {};
|
| 227 |
-
if (!isNaN(id) && Store.has(id)) {
|
| 228 |
-
return Store.execute(id, callback);
|
| 229 |
-
}
|
| 230 |
-
}
|
| 231 |
-
this.id = Util.uniqid.get();
|
| 232 |
-
this.initializedPixelData = this.originalPixelData = null;
|
| 233 |
-
this.cropCoordinates = {
|
| 234 |
-
x: 0,
|
| 235 |
-
y: 0
|
| 236 |
-
};
|
| 237 |
-
this.cropped = false;
|
| 238 |
-
this.resized = false;
|
| 239 |
-
this.pixelStack = [];
|
| 240 |
-
this.layerStack = [];
|
| 241 |
-
this.canvasQueue = [];
|
| 242 |
-
this.currentLayer = null;
|
| 243 |
-
this.scaled = false;
|
| 244 |
-
this.analyze = new Analyze(this);
|
| 245 |
-
this.renderer = new Renderer(this);
|
| 246 |
-
this.domIsLoaded(function() {
|
| 247 |
-
_this.parseArguments(args);
|
| 248 |
-
return _this.setup();
|
| 249 |
-
});
|
| 250 |
-
return this;
|
| 251 |
-
} else {
|
| 252 |
-
return new Caman(arguments);
|
| 253 |
-
}
|
| 254 |
-
}
|
| 255 |
-
|
| 256 |
-
Caman.prototype.domIsLoaded = function(cb) {
|
| 257 |
-
var listener,
|
| 258 |
-
_this = this;
|
| 259 |
-
if (Caman.NodeJS) {
|
| 260 |
-
return setTimeout(function() {
|
| 261 |
-
return cb.call(_this);
|
| 262 |
-
}, 0);
|
| 263 |
-
} else {
|
| 264 |
-
if (document.readyState === "complete") {
|
| 265 |
-
Log.debug("DOM initialized");
|
| 266 |
-
return setTimeout(function() {
|
| 267 |
-
return cb.call(_this);
|
| 268 |
-
}, 0);
|
| 269 |
-
} else {
|
| 270 |
-
listener = function() {
|
| 271 |
-
if (document.readyState === "complete") {
|
| 272 |
-
Log.debug("DOM initialized");
|
| 273 |
-
return cb.call(_this);
|
| 274 |
-
}
|
| 275 |
-
};
|
| 276 |
-
return document.addEventListener("readystatechange", listener, false);
|
| 277 |
-
}
|
| 278 |
-
}
|
| 279 |
-
};
|
| 280 |
-
|
| 281 |
-
Caman.prototype.parseArguments = function(args) {
|
| 282 |
-
var key, val, _ref, _results;
|
| 283 |
-
if (args.length === 0) {
|
| 284 |
-
throw "Invalid arguments given";
|
| 285 |
-
}
|
| 286 |
-
this.initObj = null;
|
| 287 |
-
this.initType = null;
|
| 288 |
-
this.imageUrl = null;
|
| 289 |
-
this.callback = function() {};
|
| 290 |
-
this.setInitObject(args[0]);
|
| 291 |
-
if (args.length === 1) {
|
| 292 |
-
return;
|
| 293 |
-
}
|
| 294 |
-
switch (typeof args[1]) {
|
| 295 |
-
case "string":
|
| 296 |
-
this.imageUrl = args[1];
|
| 297 |
-
break;
|
| 298 |
-
case "function":
|
| 299 |
-
this.callback = args[1];
|
| 300 |
-
}
|
| 301 |
-
if (args.length === 2) {
|
| 302 |
-
return;
|
| 303 |
-
}
|
| 304 |
-
this.callback = args[2];
|
| 305 |
-
if (args.length === 4) {
|
| 306 |
-
_ref = args[4];
|
| 307 |
-
_results = [];
|
| 308 |
-
for (key in _ref) {
|
| 309 |
-
if (!__hasProp.call(_ref, key)) continue;
|
| 310 |
-
val = _ref[key];
|
| 311 |
-
_results.push(this.options[key] = val);
|
| 312 |
-
}
|
| 313 |
-
return _results;
|
| 314 |
-
}
|
| 315 |
-
};
|
| 316 |
-
|
| 317 |
-
Caman.prototype.setInitObject = function(obj) {
|
| 318 |
-
if (Caman.NodeJS) {
|
| 319 |
-
this.initObj = obj;
|
| 320 |
-
this.initType = 'node';
|
| 321 |
-
return;
|
| 322 |
-
}
|
| 323 |
-
if (typeof obj === "object") {
|
| 324 |
-
this.initObj = obj;
|
| 325 |
-
} else {
|
| 326 |
-
this.initObj = $(obj);
|
| 327 |
-
}
|
| 328 |
-
if (this.initObj == null) {
|
| 329 |
-
throw "Could not find image or canvas for initialization.";
|
| 330 |
-
}
|
| 331 |
-
return this.initType = this.initObj.nodeName.toLowerCase();
|
| 332 |
-
};
|
| 333 |
-
|
| 334 |
-
Caman.prototype.setup = function() {
|
| 335 |
-
switch (this.initType) {
|
| 336 |
-
case "node":
|
| 337 |
-
return this.initNode();
|
| 338 |
-
case "img":
|
| 339 |
-
return this.initImage();
|
| 340 |
-
case "canvas":
|
| 341 |
-
return this.initCanvas();
|
| 342 |
-
}
|
| 343 |
-
};
|
| 344 |
-
|
| 345 |
-
Caman.prototype.initNode = function() {
|
| 346 |
-
Log.debug("Initializing for NodeJS");
|
| 347 |
-
if (typeof this.initObj === "string" && this.initObj.match(/^https?:\/\//)) {
|
| 348 |
-
return this.readFromHttp(this.initObj, this.nodeFileReady);
|
| 349 |
-
} else if (typeof this.initObj === "string") {
|
| 350 |
-
return fs.readFile(this.initObj, this.nodeFileReady);
|
| 351 |
-
} else {
|
| 352 |
-
return this.nodeFileReady(null, this.initObj);
|
| 353 |
-
}
|
| 354 |
-
};
|
| 355 |
-
|
| 356 |
-
Caman.prototype.readFromHttp = function(url, callback) {
|
| 357 |
-
var req;
|
| 358 |
-
Log.debug("Fetching image from " + url);
|
| 359 |
-
req = http.get(url, function(res) {
|
| 360 |
-
var buf;
|
| 361 |
-
buf = '';
|
| 362 |
-
res.setEncoding('binary');
|
| 363 |
-
res.on('data', function(chunk) {
|
| 364 |
-
return buf += chunk;
|
| 365 |
-
});
|
| 366 |
-
return res.on('end', function() {
|
| 367 |
-
return callback(null, new Buffer(buf, 'binary'));
|
| 368 |
-
});
|
| 369 |
-
});
|
| 370 |
-
return req.on('error', callback);
|
| 371 |
-
};
|
| 372 |
-
|
| 373 |
-
Caman.prototype.nodeFileReady = function(err, data) {
|
| 374 |
-
if (err) {
|
| 375 |
-
throw err;
|
| 376 |
-
}
|
| 377 |
-
this.image = new Image();
|
| 378 |
-
this.image.src = data;
|
| 379 |
-
Log.debug("Image loaded. Width = " + (this.imageWidth()) + ", Height = " + (this.imageHeight()));
|
| 380 |
-
this.canvas = new Canvas(this.imageWidth(), this.imageHeight());
|
| 381 |
-
return this.finishInit();
|
| 382 |
-
};
|
| 383 |
-
|
| 384 |
-
Caman.prototype.initImage = function() {
|
| 385 |
-
this.image = this.initObj;
|
| 386 |
-
this.canvas = document.createElement('canvas');
|
| 387 |
-
this.context = this.canvas.getContext('2d');
|
| 388 |
-
Util.copyAttributes(this.image, this.canvas, {
|
| 389 |
-
except: ['src']
|
| 390 |
-
});
|
| 391 |
-
if (this.image.parentNode != null) {
|
| 392 |
-
this.image.parentNode.replaceChild(this.canvas, this.image);
|
| 393 |
-
}
|
| 394 |
-
this.imageAdjustments();
|
| 395 |
-
return this.waitForImageLoaded();
|
| 396 |
-
};
|
| 397 |
-
|
| 398 |
-
Caman.prototype.initCanvas = function() {
|
| 399 |
-
this.canvas = this.initObj;
|
| 400 |
-
this.context = this.canvas.getContext('2d');
|
| 401 |
-
if (this.imageUrl != null) {
|
| 402 |
-
this.image = document.createElement('img');
|
| 403 |
-
this.image.src = this.imageUrl;
|
| 404 |
-
this.imageAdjustments();
|
| 405 |
-
return this.waitForImageLoaded();
|
| 406 |
-
} else {
|
| 407 |
-
return this.finishInit();
|
| 408 |
-
}
|
| 409 |
-
};
|
| 410 |
-
|
| 411 |
-
Caman.prototype.imageAdjustments = function() {
|
| 412 |
-
if (this.needsHiDPISwap()) {
|
| 413 |
-
Log.debug(this.image.src, "->", this.hiDPIReplacement());
|
| 414 |
-
this.swapped = true;
|
| 415 |
-
this.image.src = this.hiDPIReplacement();
|
| 416 |
-
}
|
| 417 |
-
if (IO.isRemote(this.image)) {
|
| 418 |
-
this.image.src = IO.proxyUrl(this.image.src);
|
| 419 |
-
return Log.debug("Remote image detected, using URL = " + this.image.src);
|
| 420 |
-
}
|
| 421 |
-
};
|
| 422 |
-
|
| 423 |
-
Caman.prototype.waitForImageLoaded = function() {
|
| 424 |
-
if (this.isImageLoaded()) {
|
| 425 |
-
return this.imageLoaded();
|
| 426 |
-
} else {
|
| 427 |
-
return this.image.onload = this.imageLoaded;
|
| 428 |
-
}
|
| 429 |
-
};
|
| 430 |
-
|
| 431 |
-
Caman.prototype.isImageLoaded = function() {
|
| 432 |
-
if (!this.image.complete) {
|
| 433 |
-
return false;
|
| 434 |
-
}
|
| 435 |
-
if ((this.image.naturalWidth != null) && this.image.naturalWidth === 0) {
|
| 436 |
-
return false;
|
| 437 |
-
}
|
| 438 |
-
return true;
|
| 439 |
-
};
|
| 440 |
-
|
| 441 |
-
Caman.prototype.imageWidth = function() {
|
| 442 |
-
return this.image.width || this.image.naturalWidth;
|
| 443 |
-
};
|
| 444 |
-
|
| 445 |
-
Caman.prototype.imageHeight = function() {
|
| 446 |
-
return this.image.height || this.image.naturalHeight;
|
| 447 |
-
};
|
| 448 |
-
|
| 449 |
-
Caman.prototype.imageLoaded = function() {
|
| 450 |
-
Log.debug("Image loaded. Width = " + (this.imageWidth()) + ", Height = " + (this.imageHeight()));
|
| 451 |
-
if (this.swapped) {
|
| 452 |
-
this.canvas.width = this.imageWidth() / this.hiDPIRatio();
|
| 453 |
-
this.canvas.height = this.imageHeight() / this.hiDPIRatio();
|
| 454 |
-
} else {
|
| 455 |
-
this.canvas.width = this.imageWidth();
|
| 456 |
-
this.canvas.height = this.imageHeight();
|
| 457 |
-
}
|
| 458 |
-
return this.finishInit();
|
| 459 |
-
};
|
| 460 |
-
|
| 461 |
-
Caman.prototype.finishInit = function() {
|
| 462 |
-
var i, pixel, _i, _len, _ref;
|
| 463 |
-
if (this.context == null) {
|
| 464 |
-
this.context = this.canvas.getContext('2d');
|
| 465 |
-
}
|
| 466 |
-
this.originalWidth = this.preScaledWidth = this.width = this.canvas.width;
|
| 467 |
-
this.originalHeight = this.preScaledHeight = this.height = this.canvas.height;
|
| 468 |
-
this.hiDPIAdjustments();
|
| 469 |
-
if (!this.hasId()) {
|
| 470 |
-
this.assignId();
|
| 471 |
-
}
|
| 472 |
-
if (this.image != null) {
|
| 473 |
-
this.context.drawImage(this.image, 0, 0, this.imageWidth(), this.imageHeight(), 0, 0, this.preScaledWidth, this.preScaledHeight);
|
| 474 |
-
}
|
| 475 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 476 |
-
this.pixelData = this.imageData.data;
|
| 477 |
-
if (Caman.allowRevert) {
|
| 478 |
-
this.initializedPixelData = Util.dataArray(this.pixelData.length);
|
| 479 |
-
this.originalPixelData = Util.dataArray(this.pixelData.length);
|
| 480 |
-
_ref = this.pixelData;
|
| 481 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 482 |
-
pixel = _ref[i];
|
| 483 |
-
this.initializedPixelData[i] = pixel;
|
| 484 |
-
this.originalPixelData[i] = pixel;
|
| 485 |
-
}
|
| 486 |
-
}
|
| 487 |
-
this.dimensions = {
|
| 488 |
-
width: this.canvas.width,
|
| 489 |
-
height: this.canvas.height
|
| 490 |
-
};
|
| 491 |
-
if (!Caman.NodeJS) {
|
| 492 |
-
Store.put(this.id, this);
|
| 493 |
-
}
|
| 494 |
-
this.callback.call(this, this);
|
| 495 |
-
return this.callback = function() {};
|
| 496 |
-
};
|
| 497 |
-
|
| 498 |
-
Caman.prototype.reloadCanvasData = function() {
|
| 499 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 500 |
-
return this.pixelData = this.imageData.data;
|
| 501 |
-
};
|
| 502 |
-
|
| 503 |
-
Caman.prototype.resetOriginalPixelData = function() {
|
| 504 |
-
var i, pixel, _i, _len, _ref, _results;
|
| 505 |
-
if (!Caman.allowRevert) {
|
| 506 |
-
throw "Revert disabled";
|
| 507 |
-
}
|
| 508 |
-
this.originalPixelData = Util.dataArray(this.pixelData.length);
|
| 509 |
-
_ref = this.pixelData;
|
| 510 |
-
_results = [];
|
| 511 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 512 |
-
pixel = _ref[i];
|
| 513 |
-
_results.push(this.originalPixelData[i] = pixel);
|
| 514 |
-
}
|
| 515 |
-
return _results;
|
| 516 |
-
};
|
| 517 |
-
|
| 518 |
-
Caman.prototype.hasId = function() {
|
| 519 |
-
return Caman.getAttrId(this.canvas) != null;
|
| 520 |
-
};
|
| 521 |
-
|
| 522 |
-
Caman.prototype.assignId = function() {
|
| 523 |
-
if (Caman.NodeJS || this.canvas.getAttribute('data-caman-id')) {
|
| 524 |
-
return;
|
| 525 |
-
}
|
| 526 |
-
return this.canvas.setAttribute('data-caman-id', this.id);
|
| 527 |
-
};
|
| 528 |
-
|
| 529 |
-
Caman.prototype.hiDPIDisabled = function() {
|
| 530 |
-
return this.canvas.getAttribute('data-caman-hidpi-disabled') !== null;
|
| 531 |
-
};
|
| 532 |
-
|
| 533 |
-
Caman.prototype.hiDPIAdjustments = function() {
|
| 534 |
-
var ratio;
|
| 535 |
-
if (Caman.NodeJS || !this.needsHiDPISwap()) {
|
| 536 |
-
return;
|
| 537 |
-
}
|
| 538 |
-
ratio = this.hiDPIRatio();
|
| 539 |
-
if (ratio !== 1) {
|
| 540 |
-
Log.debug("HiDPI ratio = " + ratio);
|
| 541 |
-
this.scaled = true;
|
| 542 |
-
this.preScaledWidth = this.canvas.width;
|
| 543 |
-
this.preScaledHeight = this.canvas.height;
|
| 544 |
-
this.canvas.width = this.preScaledWidth * ratio;
|
| 545 |
-
this.canvas.height = this.preScaledHeight * ratio;
|
| 546 |
-
this.canvas.style.width = "" + this.preScaledWidth + "px";
|
| 547 |
-
this.canvas.style.height = "" + this.preScaledHeight + "px";
|
| 548 |
-
this.context.scale(ratio, ratio);
|
| 549 |
-
this.width = this.originalWidth = this.canvas.width;
|
| 550 |
-
return this.height = this.originalHeight = this.canvas.height;
|
| 551 |
-
}
|
| 552 |
-
};
|
| 553 |
-
|
| 554 |
-
Caman.prototype.hiDPIRatio = function() {
|
| 555 |
-
var backingStoreRatio, devicePixelRatio;
|
| 556 |
-
devicePixelRatio = window.devicePixelRatio || 1;
|
| 557 |
-
backingStoreRatio = this.context.webkitBackingStorePixelRatio || this.context.mozBackingStorePixelRatio || this.context.msBackingStorePixelRatio || this.context.oBackingStorePixelRatio || this.context.backingStorePixelRatio || 1;
|
| 558 |
-
return devicePixelRatio / backingStoreRatio;
|
| 559 |
-
};
|
| 560 |
-
|
| 561 |
-
Caman.prototype.hiDPICapable = function() {
|
| 562 |
-
return (window.devicePixelRatio != null) && window.devicePixelRatio !== 1;
|
| 563 |
-
};
|
| 564 |
-
|
| 565 |
-
Caman.prototype.needsHiDPISwap = function() {
|
| 566 |
-
if (this.hiDPIDisabled() || !this.hiDPICapable()) {
|
| 567 |
-
return false;
|
| 568 |
-
}
|
| 569 |
-
return this.hiDPIReplacement() !== null;
|
| 570 |
-
};
|
| 571 |
-
|
| 572 |
-
Caman.prototype.hiDPIReplacement = function() {
|
| 573 |
-
if (this.image == null) {
|
| 574 |
-
return null;
|
| 575 |
-
}
|
| 576 |
-
return this.image.getAttribute('data-caman-hidpi');
|
| 577 |
-
};
|
| 578 |
-
|
| 579 |
-
Caman.prototype.replaceCanvas = function(newCanvas) {
|
| 580 |
-
var oldCanvas;
|
| 581 |
-
oldCanvas = this.canvas;
|
| 582 |
-
this.canvas = newCanvas;
|
| 583 |
-
this.context = this.canvas.getContext('2d');
|
| 584 |
-
if (!Caman.NodeJS) {
|
| 585 |
-
oldCanvas.parentNode.replaceChild(this.canvas, oldCanvas);
|
| 586 |
-
}
|
| 587 |
-
this.width = this.canvas.width;
|
| 588 |
-
this.height = this.canvas.height;
|
| 589 |
-
this.reloadCanvasData();
|
| 590 |
-
return this.dimensions = {
|
| 591 |
-
width: this.canvas.width,
|
| 592 |
-
height: this.canvas.height
|
| 593 |
-
};
|
| 594 |
-
};
|
| 595 |
-
|
| 596 |
-
Caman.prototype.render = function(callback) {
|
| 597 |
-
var _this = this;
|
| 598 |
-
if (callback == null) {
|
| 599 |
-
callback = function() {};
|
| 600 |
-
}
|
| 601 |
-
Event.trigger(this, "renderStart");
|
| 602 |
-
return this.renderer.execute(function() {
|
| 603 |
-
_this.context.putImageData(_this.imageData, 0, 0);
|
| 604 |
-
return callback.call(_this);
|
| 605 |
-
});
|
| 606 |
-
};
|
| 607 |
-
|
| 608 |
-
Caman.prototype.revert = function(updateContext) {
|
| 609 |
-
var i, pixel, _i, _len, _ref;
|
| 610 |
-
if (updateContext == null) {
|
| 611 |
-
updateContext = true;
|
| 612 |
-
}
|
| 613 |
-
if (!Caman.allowRevert) {
|
| 614 |
-
throw "Revert disabled";
|
| 615 |
-
}
|
| 616 |
-
_ref = this.originalVisiblePixels();
|
| 617 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 618 |
-
pixel = _ref[i];
|
| 619 |
-
this.pixelData[i] = pixel;
|
| 620 |
-
}
|
| 621 |
-
if (updateContext) {
|
| 622 |
-
return this.context.putImageData(this.imageData, 0, 0);
|
| 623 |
-
}
|
| 624 |
-
};
|
| 625 |
-
|
| 626 |
-
Caman.prototype.reset = function() {
|
| 627 |
-
var canvas, ctx, i, imageData, pixel, pixelData, _i, _len, _ref;
|
| 628 |
-
canvas = document.createElement('canvas');
|
| 629 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 630 |
-
canvas.width = this.originalWidth;
|
| 631 |
-
canvas.height = this.originalHeight;
|
| 632 |
-
ctx = canvas.getContext('2d');
|
| 633 |
-
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
| 634 |
-
pixelData = imageData.data;
|
| 635 |
-
_ref = this.initializedPixelData;
|
| 636 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 637 |
-
pixel = _ref[i];
|
| 638 |
-
pixelData[i] = pixel;
|
| 639 |
-
}
|
| 640 |
-
ctx.putImageData(imageData, 0, 0);
|
| 641 |
-
this.cropCoordinates = {
|
| 642 |
-
x: 0,
|
| 643 |
-
y: 0
|
| 644 |
-
};
|
| 645 |
-
this.resized = false;
|
| 646 |
-
return this.replaceCanvas(canvas);
|
| 647 |
-
};
|
| 648 |
-
|
| 649 |
-
Caman.prototype.originalVisiblePixels = function() {
|
| 650 |
-
var canvas, coord, ctx, endX, endY, i, imageData, pixel, pixelData, pixels, scaledCanvas, startX, startY, width, _i, _j, _len, _ref, _ref1, _ref2, _ref3;
|
| 651 |
-
if (!Caman.allowRevert) {
|
| 652 |
-
throw "Revert disabled";
|
| 653 |
-
}
|
| 654 |
-
pixels = [];
|
| 655 |
-
startX = this.cropCoordinates.x;
|
| 656 |
-
endX = startX + this.width;
|
| 657 |
-
startY = this.cropCoordinates.y;
|
| 658 |
-
endY = startY + this.height;
|
| 659 |
-
if (this.resized) {
|
| 660 |
-
canvas = document.createElement('canvas');
|
| 661 |
-
canvas.width = this.originalWidth;
|
| 662 |
-
canvas.height = this.originalHeight;
|
| 663 |
-
ctx = canvas.getContext('2d');
|
| 664 |
-
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
| 665 |
-
pixelData = imageData.data;
|
| 666 |
-
_ref = this.originalPixelData;
|
| 667 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 668 |
-
pixel = _ref[i];
|
| 669 |
-
pixelData[i] = pixel;
|
| 670 |
-
}
|
| 671 |
-
ctx.putImageData(imageData, 0, 0);
|
| 672 |
-
scaledCanvas = document.createElement('canvas');
|
| 673 |
-
scaledCanvas.width = this.width;
|
| 674 |
-
scaledCanvas.height = this.height;
|
| 675 |
-
ctx = scaledCanvas.getContext('2d');
|
| 676 |
-
ctx.drawImage(canvas, 0, 0, this.originalWidth, this.originalHeight, 0, 0, this.width, this.height);
|
| 677 |
-
pixelData = ctx.getImageData(0, 0, this.width, this.height).data;
|
| 678 |
-
width = this.width;
|
| 679 |
-
} else {
|
| 680 |
-
pixelData = this.originalPixelData;
|
| 681 |
-
width = this.originalWidth;
|
| 682 |
-
}
|
| 683 |
-
for (i = _j = 0, _ref1 = pixelData.length; _j < _ref1; i = _j += 4) {
|
| 684 |
-
coord = Pixel.locationToCoordinates(i, width);
|
| 685 |
-
if (((startX <= (_ref2 = coord.x) && _ref2 < endX)) && ((startY <= (_ref3 = coord.y) && _ref3 < endY))) {
|
| 686 |
-
pixels.push(pixelData[i], pixelData[i + 1], pixelData[i + 2], pixelData[i + 3]);
|
| 687 |
-
}
|
| 688 |
-
}
|
| 689 |
-
return pixels;
|
| 690 |
-
};
|
| 691 |
-
|
| 692 |
-
Caman.prototype.process = function(name, processFn) {
|
| 693 |
-
this.renderer.add({
|
| 694 |
-
type: Filter.Type.Single,
|
| 695 |
-
name: name,
|
| 696 |
-
processFn: processFn
|
| 697 |
-
});
|
| 698 |
-
return this;
|
| 699 |
-
};
|
| 700 |
-
|
| 701 |
-
Caman.prototype.processKernel = function(name, adjust, divisor, bias) {
|
| 702 |
-
var i, _i, _ref;
|
| 703 |
-
if (divisor == null) {
|
| 704 |
-
divisor = null;
|
| 705 |
-
}
|
| 706 |
-
if (bias == null) {
|
| 707 |
-
bias = 0;
|
| 708 |
-
}
|
| 709 |
-
if (divisor == null) {
|
| 710 |
-
divisor = 0;
|
| 711 |
-
for (i = _i = 0, _ref = adjust.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 712 |
-
divisor += adjust[i];
|
| 713 |
-
}
|
| 714 |
-
}
|
| 715 |
-
this.renderer.add({
|
| 716 |
-
type: Filter.Type.Kernel,
|
| 717 |
-
name: name,
|
| 718 |
-
adjust: adjust,
|
| 719 |
-
divisor: divisor,
|
| 720 |
-
bias: bias
|
| 721 |
-
});
|
| 722 |
-
return this;
|
| 723 |
-
};
|
| 724 |
-
|
| 725 |
-
Caman.prototype.processPlugin = function(plugin, args) {
|
| 726 |
-
this.renderer.add({
|
| 727 |
-
type: Filter.Type.Plugin,
|
| 728 |
-
plugin: plugin,
|
| 729 |
-
args: args
|
| 730 |
-
});
|
| 731 |
-
return this;
|
| 732 |
-
};
|
| 733 |
-
|
| 734 |
-
Caman.prototype.newLayer = function(callback) {
|
| 735 |
-
var layer;
|
| 736 |
-
layer = new Layer(this);
|
| 737 |
-
this.canvasQueue.push(layer);
|
| 738 |
-
this.renderer.add({
|
| 739 |
-
type: Filter.Type.LayerDequeue
|
| 740 |
-
});
|
| 741 |
-
callback.call(layer);
|
| 742 |
-
this.renderer.add({
|
| 743 |
-
type: Filter.Type.LayerFinished
|
| 744 |
-
});
|
| 745 |
-
return this;
|
| 746 |
-
};
|
| 747 |
-
|
| 748 |
-
Caman.prototype.executeLayer = function(layer) {
|
| 749 |
-
return this.pushContext(layer);
|
| 750 |
-
};
|
| 751 |
-
|
| 752 |
-
Caman.prototype.pushContext = function(layer) {
|
| 753 |
-
this.layerStack.push(this.currentLayer);
|
| 754 |
-
this.pixelStack.push(this.pixelData);
|
| 755 |
-
this.currentLayer = layer;
|
| 756 |
-
return this.pixelData = layer.pixelData;
|
| 757 |
-
};
|
| 758 |
-
|
| 759 |
-
Caman.prototype.popContext = function() {
|
| 760 |
-
this.pixelData = this.pixelStack.pop();
|
| 761 |
-
return this.currentLayer = this.layerStack.pop();
|
| 762 |
-
};
|
| 763 |
-
|
| 764 |
-
Caman.prototype.applyCurrentLayer = function() {
|
| 765 |
-
return this.currentLayer.applyToParent();
|
| 766 |
-
};
|
| 767 |
-
|
| 768 |
-
return Caman;
|
| 769 |
-
|
| 770 |
-
})(Module);
|
| 771 |
-
|
| 772 |
-
Root.Caman = Caman;
|
| 773 |
-
|
| 774 |
-
Caman.Analyze = (function() {
|
| 775 |
-
function Analyze(c) {
|
| 776 |
-
this.c = c;
|
| 777 |
-
}
|
| 778 |
-
|
| 779 |
-
Analyze.prototype.calculateLevels = function() {
|
| 780 |
-
var i, levels, numPixels, _i, _j, _k, _ref;
|
| 781 |
-
levels = {
|
| 782 |
-
r: {},
|
| 783 |
-
g: {},
|
| 784 |
-
b: {}
|
| 785 |
-
};
|
| 786 |
-
for (i = _i = 0; _i <= 255; i = ++_i) {
|
| 787 |
-
levels.r[i] = 0;
|
| 788 |
-
levels.g[i] = 0;
|
| 789 |
-
levels.b[i] = 0;
|
| 790 |
-
}
|
| 791 |
-
for (i = _j = 0, _ref = this.c.pixelData.length; _j < _ref; i = _j += 4) {
|
| 792 |
-
levels.r[this.c.pixelData[i]]++;
|
| 793 |
-
levels.g[this.c.pixelData[i + 1]]++;
|
| 794 |
-
levels.b[this.c.pixelData[i + 2]]++;
|
| 795 |
-
}
|
| 796 |
-
numPixels = this.c.pixelData.length / 4;
|
| 797 |
-
for (i = _k = 0; _k <= 255; i = ++_k) {
|
| 798 |
-
levels.r[i] /= numPixels;
|
| 799 |
-
levels.g[i] /= numPixels;
|
| 800 |
-
levels.b[i] /= numPixels;
|
| 801 |
-
}
|
| 802 |
-
return levels;
|
| 803 |
-
};
|
| 804 |
-
|
| 805 |
-
return Analyze;
|
| 806 |
-
|
| 807 |
-
})();
|
| 808 |
-
|
| 809 |
-
Analyze = Caman.Analyze;
|
| 810 |
-
|
| 811 |
-
Caman.DOMUpdated = function() {
|
| 812 |
-
var img, imgs, parser, _i, _len, _results;
|
| 813 |
-
imgs = document.querySelectorAll("img[data-caman]");
|
| 814 |
-
if (!(imgs.length > 0)) {
|
| 815 |
-
return;
|
| 816 |
-
}
|
| 817 |
-
_results = [];
|
| 818 |
-
for (_i = 0, _len = imgs.length; _i < _len; _i++) {
|
| 819 |
-
img = imgs[_i];
|
| 820 |
-
_results.push(parser = new CamanParser(img, function() {
|
| 821 |
-
this.parse();
|
| 822 |
-
return this.execute();
|
| 823 |
-
}));
|
| 824 |
-
}
|
| 825 |
-
return _results;
|
| 826 |
-
};
|
| 827 |
-
|
| 828 |
-
if (Caman.autoload) {
|
| 829 |
-
(function() {
|
| 830 |
-
if (document.readyState === "complete") {
|
| 831 |
-
return Caman.DOMUpdated();
|
| 832 |
-
} else {
|
| 833 |
-
return document.addEventListener("DOMContentLoaded", Caman.DOMUpdated, false);
|
| 834 |
-
}
|
| 835 |
-
})();
|
| 836 |
-
}
|
| 837 |
-
|
| 838 |
-
CamanParser = (function() {
|
| 839 |
-
var INST_REGEX;
|
| 840 |
-
|
| 841 |
-
INST_REGEX = "(\\w+)\\((.*?)\\)";
|
| 842 |
-
|
| 843 |
-
function CamanParser(ele, ready) {
|
| 844 |
-
this.dataStr = ele.getAttribute('data-caman');
|
| 845 |
-
this.caman = Caman(ele, ready.bind(this));
|
| 846 |
-
}
|
| 847 |
-
|
| 848 |
-
CamanParser.prototype.parse = function() {
|
| 849 |
-
var args, e, filter, func, inst, instFunc, m, r, unparsedInstructions, _i, _len, _ref, _results;
|
| 850 |
-
this.ele = this.caman.canvas;
|
| 851 |
-
r = new RegExp(INST_REGEX, 'g');
|
| 852 |
-
unparsedInstructions = this.dataStr.match(r);
|
| 853 |
-
if (!(unparsedInstructions.length > 0)) {
|
| 854 |
-
return;
|
| 855 |
-
}
|
| 856 |
-
r = new RegExp(INST_REGEX);
|
| 857 |
-
_results = [];
|
| 858 |
-
for (_i = 0, _len = unparsedInstructions.length; _i < _len; _i++) {
|
| 859 |
-
inst = unparsedInstructions[_i];
|
| 860 |
-
_ref = inst.match(r), m = _ref[0], filter = _ref[1], args = _ref[2];
|
| 861 |
-
instFunc = new Function("return function() { this." + filter + "(" + args + "); };");
|
| 862 |
-
try {
|
| 863 |
-
func = instFunc();
|
| 864 |
-
_results.push(func.call(this.caman));
|
| 865 |
-
} catch (_error) {
|
| 866 |
-
e = _error;
|
| 867 |
-
_results.push(Log.debug(e));
|
| 868 |
-
}
|
| 869 |
-
}
|
| 870 |
-
return _results;
|
| 871 |
-
};
|
| 872 |
-
|
| 873 |
-
CamanParser.prototype.execute = function() {
|
| 874 |
-
var ele;
|
| 875 |
-
ele = this.ele;
|
| 876 |
-
return this.caman.render(function() {
|
| 877 |
-
return ele.parentNode.replaceChild(this.toImage(), ele);
|
| 878 |
-
});
|
| 879 |
-
};
|
| 880 |
-
|
| 881 |
-
return CamanParser;
|
| 882 |
-
|
| 883 |
-
})();
|
| 884 |
-
|
| 885 |
-
Caman.Blender = (function() {
|
| 886 |
-
function Blender() {}
|
| 887 |
-
|
| 888 |
-
Blender.blenders = {};
|
| 889 |
-
|
| 890 |
-
Blender.register = function(name, func) {
|
| 891 |
-
return this.blenders[name] = func;
|
| 892 |
-
};
|
| 893 |
-
|
| 894 |
-
Blender.execute = function(name, rgbaLayer, rgbaParent) {
|
| 895 |
-
return this.blenders[name](rgbaLayer, rgbaParent);
|
| 896 |
-
};
|
| 897 |
-
|
| 898 |
-
return Blender;
|
| 899 |
-
|
| 900 |
-
})();
|
| 901 |
-
|
| 902 |
-
Blender = Caman.Blender;
|
| 903 |
-
|
| 904 |
-
Caman.Calculate = (function() {
|
| 905 |
-
function Calculate() {}
|
| 906 |
-
|
| 907 |
-
Calculate.distance = function(x1, y1, x2, y2) {
|
| 908 |
-
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
|
| 909 |
-
};
|
| 910 |
-
|
| 911 |
-
Calculate.randomRange = function(min, max, getFloat) {
|
| 912 |
-
var rand;
|
| 913 |
-
if (getFloat == null) {
|
| 914 |
-
getFloat = false;
|
| 915 |
-
}
|
| 916 |
-
rand = min + (Math.random() * (max - min));
|
| 917 |
-
if (getFloat) {
|
| 918 |
-
return rand.toFixed(getFloat);
|
| 919 |
-
} else {
|
| 920 |
-
return Math.round(rand);
|
| 921 |
-
}
|
| 922 |
-
};
|
| 923 |
-
|
| 924 |
-
Calculate.luminance = function(rgba) {
|
| 925 |
-
return (0.299 * rgba.r) + (0.587 * rgba.g) + (0.114 * rgba.b);
|
| 926 |
-
};
|
| 927 |
-
|
| 928 |
-
Calculate.bezier = function(start, ctrl1, ctrl2, end, lowBound, highBound) {
|
| 929 |
-
var bezier, clamp, controlPoints, endX, i, j, lerp, next, prev, t, _i, _j, _ref;
|
| 930 |
-
if (lowBound == null) {
|
| 931 |
-
lowBound = 0;
|
| 932 |
-
}
|
| 933 |
-
if (highBound == null) {
|
| 934 |
-
highBound = 255;
|
| 935 |
-
}
|
| 936 |
-
if (start[0] instanceof Array) {
|
| 937 |
-
controlPoints = start;
|
| 938 |
-
lowBound = ctrl1;
|
| 939 |
-
highBound = ctrl2;
|
| 940 |
-
} else {
|
| 941 |
-
controlPoints = [start, ctrl1, ctrl2, end];
|
| 942 |
-
}
|
| 943 |
-
if (controlPoints.length < 2) {
|
| 944 |
-
throw "Invalid number of arguments to bezier";
|
| 945 |
-
}
|
| 946 |
-
bezier = {};
|
| 947 |
-
lerp = function(a, b, t) {
|
| 948 |
-
return a * (1 - t) + b * t;
|
| 949 |
-
};
|
| 950 |
-
clamp = function(a, min, max) {
|
| 951 |
-
return Math.min(Math.max(a, min), max);
|
| 952 |
-
};
|
| 953 |
-
for (i = _i = 0; _i < 1000; i = ++_i) {
|
| 954 |
-
t = i / 1000;
|
| 955 |
-
prev = controlPoints;
|
| 956 |
-
while (prev.length > 1) {
|
| 957 |
-
next = [];
|
| 958 |
-
for (j = _j = 0, _ref = prev.length - 2; 0 <= _ref ? _j <= _ref : _j >= _ref; j = 0 <= _ref ? ++_j : --_j) {
|
| 959 |
-
next.push([lerp(prev[j][0], prev[j + 1][0], t), lerp(prev[j][1], prev[j + 1][1], t)]);
|
| 960 |
-
}
|
| 961 |
-
prev = next;
|
| 962 |
-
}
|
| 963 |
-
bezier[Math.round(prev[0][0])] = Math.round(clamp(prev[0][1], lowBound, highBound));
|
| 964 |
-
}
|
| 965 |
-
endX = controlPoints[controlPoints.length - 1][0];
|
| 966 |
-
bezier = Caman.Calculate.missingValues(bezier, endX);
|
| 967 |
-
if (bezier[endX] == null) {
|
| 968 |
-
bezier[endX] = bezier[endX - 1];
|
| 969 |
-
}
|
| 970 |
-
return bezier;
|
| 971 |
-
};
|
| 972 |
-
|
| 973 |
-
Calculate.hermite = function(controlPoints, lowBound, highBound) {
|
| 974 |
-
var add, clamp, count, endX, fac0, fac1, fac2, fac3, i, j, lerp, m0, m1, mul, p, p0, p1, pointsPerSegment, pointsPerStep, pos, ret, sub, t, _i, _j, _ref,
|
| 975 |
-
_this = this;
|
| 976 |
-
if (controlPoints.length < 2) {
|
| 977 |
-
throw "Invalid number of arguments to hermite";
|
| 978 |
-
}
|
| 979 |
-
ret = {};
|
| 980 |
-
lerp = function(a, b, t) {
|
| 981 |
-
return a * (1 - t) + b * t;
|
| 982 |
-
};
|
| 983 |
-
add = function(a, b, c, d) {
|
| 984 |
-
return [a[0] + b[0] + c[0] + d[0], a[1] + b[1] + c[1] + d[1]];
|
| 985 |
-
};
|
| 986 |
-
mul = function(a, b) {
|
| 987 |
-
return [a[0] * b[0], a[1] * b[1]];
|
| 988 |
-
};
|
| 989 |
-
sub = function(a, b) {
|
| 990 |
-
return [a[0] - b[0], a[1] - b[1]];
|
| 991 |
-
};
|
| 992 |
-
clamp = function(a, min, max) {
|
| 993 |
-
return Math.min(Math.max(a, min), max);
|
| 994 |
-
};
|
| 995 |
-
count = 0;
|
| 996 |
-
for (i = _i = 0, _ref = controlPoints.length - 2; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 997 |
-
p0 = controlPoints[i];
|
| 998 |
-
p1 = controlPoints[i + 1];
|
| 999 |
-
pointsPerSegment = p1[0] - p0[0];
|
| 1000 |
-
pointsPerStep = 1 / pointsPerSegment;
|
| 1001 |
-
if (i === controlPoints.length - 2) {
|
| 1002 |
-
pointsPerStep = 1 / (pointsPerSegment - 1);
|
| 1003 |
-
}
|
| 1004 |
-
p = i > 0 ? controlPoints[i - 1] : p0;
|
| 1005 |
-
m0 = mul(sub(p1, p), [0.5, 0.5]);
|
| 1006 |
-
p = i < controlPoints.length - 2 ? controlPoints[i + 2] : p1;
|
| 1007 |
-
m1 = mul(sub(p, p0), [0.5, 0.5]);
|
| 1008 |
-
for (j = _j = 0; 0 <= pointsPerSegment ? _j <= pointsPerSegment : _j >= pointsPerSegment; j = 0 <= pointsPerSegment ? ++_j : --_j) {
|
| 1009 |
-
t = j * pointsPerStep;
|
| 1010 |
-
fac0 = 2.0 * t * t * t - 3.0 * t * t + 1.0;
|
| 1011 |
-
fac1 = t * t * t - 2.0 * t * t + t;
|
| 1012 |
-
fac2 = -2.0 * t * t * t + 3.0 * t * t;
|
| 1013 |
-
fac3 = t * t * t - t * t;
|
| 1014 |
-
pos = add(mul(p0, [fac0, fac0]), mul(m0, [fac1, fac1]), mul(p1, [fac2, fac2]), mul(m1, [fac3, fac3]));
|
| 1015 |
-
ret[Math.round(pos[0])] = Math.round(clamp(pos[1], lowBound, highBound));
|
| 1016 |
-
count += 1;
|
| 1017 |
-
}
|
| 1018 |
-
}
|
| 1019 |
-
endX = controlPoints[controlPoints.length - 1][0];
|
| 1020 |
-
ret = Caman.Calculate.missingValues(ret, endX);
|
| 1021 |
-
return ret;
|
| 1022 |
-
};
|
| 1023 |
-
|
| 1024 |
-
Calculate.missingValues = function(values, endX) {
|
| 1025 |
-
var i, j, leftCoord, ret, rightCoord, _i, _j;
|
| 1026 |
-
if (Object.keys(values).length < endX + 1) {
|
| 1027 |
-
ret = {};
|
| 1028 |
-
for (i = _i = 0; 0 <= endX ? _i <= endX : _i >= endX; i = 0 <= endX ? ++_i : --_i) {
|
| 1029 |
-
if (values[i] != null) {
|
| 1030 |
-
ret[i] = values[i];
|
| 1031 |
-
} else {
|
| 1032 |
-
leftCoord = [i - 1, ret[i - 1]];
|
| 1033 |
-
for (j = _j = i; i <= endX ? _j <= endX : _j >= endX; j = i <= endX ? ++_j : --_j) {
|
| 1034 |
-
if (values[j] != null) {
|
| 1035 |
-
rightCoord = [j, values[j]];
|
| 1036 |
-
break;
|
| 1037 |
-
}
|
| 1038 |
-
}
|
| 1039 |
-
ret[i] = leftCoord[1] + ((rightCoord[1] - leftCoord[1]) / (rightCoord[0] - leftCoord[0])) * (i - leftCoord[0]);
|
| 1040 |
-
}
|
| 1041 |
-
}
|
| 1042 |
-
return ret;
|
| 1043 |
-
}
|
| 1044 |
-
return values;
|
| 1045 |
-
};
|
| 1046 |
-
|
| 1047 |
-
return Calculate;
|
| 1048 |
-
|
| 1049 |
-
})();
|
| 1050 |
-
|
| 1051 |
-
Calculate = Caman.Calculate;
|
| 1052 |
-
|
| 1053 |
-
Caman.Convert = (function() {
|
| 1054 |
-
function Convert() {}
|
| 1055 |
-
|
| 1056 |
-
Convert.hexToRGB = function(hex) {
|
| 1057 |
-
var b, g, r;
|
| 1058 |
-
if (hex.charAt(0) === "#") {
|
| 1059 |
-
hex = hex.substr(1);
|
| 1060 |
-
}
|
| 1061 |
-
r = parseInt(hex.substr(0, 2), 16);
|
| 1062 |
-
g = parseInt(hex.substr(2, 2), 16);
|
| 1063 |
-
b = parseInt(hex.substr(4, 2), 16);
|
| 1064 |
-
return {
|
| 1065 |
-
r: r,
|
| 1066 |
-
g: g,
|
| 1067 |
-
b: b
|
| 1068 |
-
};
|
| 1069 |
-
};
|
| 1070 |
-
|
| 1071 |
-
Convert.rgbToHSL = function(r, g, b) {
|
| 1072 |
-
var d, h, l, max, min, s;
|
| 1073 |
-
if (typeof r === "object") {
|
| 1074 |
-
g = r.g;
|
| 1075 |
-
b = r.b;
|
| 1076 |
-
r = r.r;
|
| 1077 |
-
}
|
| 1078 |
-
r /= 255;
|
| 1079 |
-
g /= 255;
|
| 1080 |
-
b /= 255;
|
| 1081 |
-
max = Math.max(r, g, b);
|
| 1082 |
-
min = Math.min(r, g, b);
|
| 1083 |
-
l = (max + min) / 2;
|
| 1084 |
-
if (max === min) {
|
| 1085 |
-
h = s = 0;
|
| 1086 |
-
} else {
|
| 1087 |
-
d = max - min;
|
| 1088 |
-
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
| 1089 |
-
h = (function() {
|
| 1090 |
-
switch (max) {
|
| 1091 |
-
case r:
|
| 1092 |
-
return (g - b) / d + (g < b ? 6 : 0);
|
| 1093 |
-
case g:
|
| 1094 |
-
return (b - r) / d + 2;
|
| 1095 |
-
case b:
|
| 1096 |
-
return (r - g) / d + 4;
|
| 1097 |
-
}
|
| 1098 |
-
})();
|
| 1099 |
-
h /= 6;
|
| 1100 |
-
}
|
| 1101 |
-
return {
|
| 1102 |
-
h: h,
|
| 1103 |
-
s: s,
|
| 1104 |
-
l: l
|
| 1105 |
-
};
|
| 1106 |
-
};
|
| 1107 |
-
|
| 1108 |
-
Convert.hslToRGB = function(h, s, l) {
|
| 1109 |
-
var b, g, p, q, r;
|
| 1110 |
-
if (typeof h === "object") {
|
| 1111 |
-
s = h.s;
|
| 1112 |
-
l = h.l;
|
| 1113 |
-
h = h.h;
|
| 1114 |
-
}
|
| 1115 |
-
if (s === 0) {
|
| 1116 |
-
r = g = b = l;
|
| 1117 |
-
} else {
|
| 1118 |
-
q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
| 1119 |
-
p = 2 * l - q;
|
| 1120 |
-
r = this.hueToRGB(p, q, h + 1 / 3);
|
| 1121 |
-
g = this.hueToRGB(p, q, h);
|
| 1122 |
-
b = this.hueToRGB(p, q, h - 1 / 3);
|
| 1123 |
-
}
|
| 1124 |
-
return {
|
| 1125 |
-
r: r * 255,
|
| 1126 |
-
g: g * 255,
|
| 1127 |
-
b: b * 255
|
| 1128 |
-
};
|
| 1129 |
-
};
|
| 1130 |
-
|
| 1131 |
-
Convert.hueToRGB = function(p, q, t) {
|
| 1132 |
-
if (t < 0) {
|
| 1133 |
-
t += 1;
|
| 1134 |
-
}
|
| 1135 |
-
if (t > 1) {
|
| 1136 |
-
t -= 1;
|
| 1137 |
-
}
|
| 1138 |
-
if (t < 1 / 6) {
|
| 1139 |
-
return p + (q - p) * 6 * t;
|
| 1140 |
-
}
|
| 1141 |
-
if (t < 1 / 2) {
|
| 1142 |
-
return q;
|
| 1143 |
-
}
|
| 1144 |
-
if (t < 2 / 3) {
|
| 1145 |
-
return p + (q - p) * (2 / 3 - t) * 6;
|
| 1146 |
-
}
|
| 1147 |
-
return p;
|
| 1148 |
-
};
|
| 1149 |
-
|
| 1150 |
-
Convert.rgbToHSV = function(r, g, b) {
|
| 1151 |
-
var d, h, max, min, s, v;
|
| 1152 |
-
r /= 255;
|
| 1153 |
-
g /= 255;
|
| 1154 |
-
b /= 255;
|
| 1155 |
-
max = Math.max(r, g, b);
|
| 1156 |
-
min = Math.min(r, g, b);
|
| 1157 |
-
v = max;
|
| 1158 |
-
d = max - min;
|
| 1159 |
-
s = max === 0 ? 0 : d / max;
|
| 1160 |
-
if (max === min) {
|
| 1161 |
-
h = 0;
|
| 1162 |
-
} else {
|
| 1163 |
-
h = (function() {
|
| 1164 |
-
switch (max) {
|
| 1165 |
-
case r:
|
| 1166 |
-
return (g - b) / d + (g < b ? 6 : 0);
|
| 1167 |
-
case g:
|
| 1168 |
-
return (b - r) / d + 2;
|
| 1169 |
-
case b:
|
| 1170 |
-
return (r - g) / d + 4;
|
| 1171 |
-
}
|
| 1172 |
-
})();
|
| 1173 |
-
h /= 6;
|
| 1174 |
-
}
|
| 1175 |
-
return {
|
| 1176 |
-
h: h,
|
| 1177 |
-
s: s,
|
| 1178 |
-
v: v
|
| 1179 |
-
};
|
| 1180 |
-
};
|
| 1181 |
-
|
| 1182 |
-
Convert.hsvToRGB = function(h, s, v) {
|
| 1183 |
-
var b, f, g, i, p, q, r, t;
|
| 1184 |
-
i = Math.floor(h * 6);
|
| 1185 |
-
f = h * 6 - i;
|
| 1186 |
-
p = v * (1 - s);
|
| 1187 |
-
q = v * (1 - f * s);
|
| 1188 |
-
t = v * (1 - (1 - f) * s);
|
| 1189 |
-
switch (i % 6) {
|
| 1190 |
-
case 0:
|
| 1191 |
-
r = v;
|
| 1192 |
-
g = t;
|
| 1193 |
-
b = p;
|
| 1194 |
-
break;
|
| 1195 |
-
case 1:
|
| 1196 |
-
r = q;
|
| 1197 |
-
g = v;
|
| 1198 |
-
b = p;
|
| 1199 |
-
break;
|
| 1200 |
-
case 2:
|
| 1201 |
-
r = p;
|
| 1202 |
-
g = v;
|
| 1203 |
-
b = t;
|
| 1204 |
-
break;
|
| 1205 |
-
case 3:
|
| 1206 |
-
r = p;
|
| 1207 |
-
g = q;
|
| 1208 |
-
b = v;
|
| 1209 |
-
break;
|
| 1210 |
-
case 4:
|
| 1211 |
-
r = t;
|
| 1212 |
-
g = p;
|
| 1213 |
-
b = v;
|
| 1214 |
-
break;
|
| 1215 |
-
case 5:
|
| 1216 |
-
r = v;
|
| 1217 |
-
g = p;
|
| 1218 |
-
b = q;
|
| 1219 |
-
}
|
| 1220 |
-
return {
|
| 1221 |
-
r: Math.floor(r * 255),
|
| 1222 |
-
g: Math.floor(g * 255),
|
| 1223 |
-
b: Math.floor(b * 255)
|
| 1224 |
-
};
|
| 1225 |
-
};
|
| 1226 |
-
|
| 1227 |
-
Convert.rgbToXYZ = function(r, g, b) {
|
| 1228 |
-
var x, y, z;
|
| 1229 |
-
r /= 255;
|
| 1230 |
-
g /= 255;
|
| 1231 |
-
b /= 255;
|
| 1232 |
-
if (r > 0.04045) {
|
| 1233 |
-
r = Math.pow((r + 0.055) / 1.055, 2.4);
|
| 1234 |
-
} else {
|
| 1235 |
-
r /= 12.92;
|
| 1236 |
-
}
|
| 1237 |
-
if (g > 0.04045) {
|
| 1238 |
-
g = Math.pow((g + 0.055) / 1.055, 2.4);
|
| 1239 |
-
} else {
|
| 1240 |
-
g /= 12.92;
|
| 1241 |
-
}
|
| 1242 |
-
if (b > 0.04045) {
|
| 1243 |
-
b = Math.pow((b + 0.055) / 1.055, 2.4);
|
| 1244 |
-
} else {
|
| 1245 |
-
b /= 12.92;
|
| 1246 |
-
}
|
| 1247 |
-
x = r * 0.4124 + g * 0.3576 + b * 0.1805;
|
| 1248 |
-
y = r * 0.2126 + g * 0.7152 + b * 0.0722;
|
| 1249 |
-
z = r * 0.0193 + g * 0.1192 + b * 0.9505;
|
| 1250 |
-
return {
|
| 1251 |
-
x: x * 100,
|
| 1252 |
-
y: y * 100,
|
| 1253 |
-
z: z * 100
|
| 1254 |
-
};
|
| 1255 |
-
};
|
| 1256 |
-
|
| 1257 |
-
Convert.xyzToRGB = function(x, y, z) {
|
| 1258 |
-
var b, g, r;
|
| 1259 |
-
x /= 100;
|
| 1260 |
-
y /= 100;
|
| 1261 |
-
z /= 100;
|
| 1262 |
-
r = (3.2406 * x) + (-1.5372 * y) + (-0.4986 * z);
|
| 1263 |
-
g = (-0.9689 * x) + (1.8758 * y) + (0.0415 * z);
|
| 1264 |
-
b = (0.0557 * x) + (-0.2040 * y) + (1.0570 * z);
|
| 1265 |
-
if (r > 0.0031308) {
|
| 1266 |
-
r = (1.055 * Math.pow(r, 0.4166666667)) - 0.055;
|
| 1267 |
-
} else {
|
| 1268 |
-
r *= 12.92;
|
| 1269 |
-
}
|
| 1270 |
-
if (g > 0.0031308) {
|
| 1271 |
-
g = (1.055 * Math.pow(g, 0.4166666667)) - 0.055;
|
| 1272 |
-
} else {
|
| 1273 |
-
g *= 12.92;
|
| 1274 |
-
}
|
| 1275 |
-
if (b > 0.0031308) {
|
| 1276 |
-
b = (1.055 * Math.pow(b, 0.4166666667)) - 0.055;
|
| 1277 |
-
} else {
|
| 1278 |
-
b *= 12.92;
|
| 1279 |
-
}
|
| 1280 |
-
return {
|
| 1281 |
-
r: r * 255,
|
| 1282 |
-
g: g * 255,
|
| 1283 |
-
b: b * 255
|
| 1284 |
-
};
|
| 1285 |
-
};
|
| 1286 |
-
|
| 1287 |
-
Convert.xyzToLab = function(x, y, z) {
|
| 1288 |
-
var a, b, l, whiteX, whiteY, whiteZ;
|
| 1289 |
-
if (typeof x === "object") {
|
| 1290 |
-
y = x.y;
|
| 1291 |
-
z = x.z;
|
| 1292 |
-
x = x.x;
|
| 1293 |
-
}
|
| 1294 |
-
whiteX = 95.047;
|
| 1295 |
-
whiteY = 100.0;
|
| 1296 |
-
whiteZ = 108.883;
|
| 1297 |
-
x /= whiteX;
|
| 1298 |
-
y /= whiteY;
|
| 1299 |
-
z /= whiteZ;
|
| 1300 |
-
if (x > 0.008856451679) {
|
| 1301 |
-
x = Math.pow(x, 0.3333333333);
|
| 1302 |
-
} else {
|
| 1303 |
-
x = (7.787037037 * x) + 0.1379310345;
|
| 1304 |
-
}
|
| 1305 |
-
if (y > 0.008856451679) {
|
| 1306 |
-
y = Math.pow(y, 0.3333333333);
|
| 1307 |
-
} else {
|
| 1308 |
-
y = (7.787037037 * y) + 0.1379310345;
|
| 1309 |
-
}
|
| 1310 |
-
if (z > 0.008856451679) {
|
| 1311 |
-
z = Math.pow(z, 0.3333333333);
|
| 1312 |
-
} else {
|
| 1313 |
-
z = (7.787037037 * z) + 0.1379310345;
|
| 1314 |
-
}
|
| 1315 |
-
l = 116 * y - 16;
|
| 1316 |
-
a = 500 * (x - y);
|
| 1317 |
-
b = 200 * (y - z);
|
| 1318 |
-
return {
|
| 1319 |
-
l: l,
|
| 1320 |
-
a: a,
|
| 1321 |
-
b: b
|
| 1322 |
-
};
|
| 1323 |
-
};
|
| 1324 |
-
|
| 1325 |
-
Convert.labToXYZ = function(l, a, b) {
|
| 1326 |
-
var x, y, z;
|
| 1327 |
-
if (typeof l === "object") {
|
| 1328 |
-
a = l.a;
|
| 1329 |
-
b = l.b;
|
| 1330 |
-
l = l.l;
|
| 1331 |
-
}
|
| 1332 |
-
y = (l + 16) / 116;
|
| 1333 |
-
x = y + (a / 500);
|
| 1334 |
-
z = y - (b / 200);
|
| 1335 |
-
if (x > 0.2068965517) {
|
| 1336 |
-
x = x * x * x;
|
| 1337 |
-
} else {
|
| 1338 |
-
x = 0.1284185493 * (x - 0.1379310345);
|
| 1339 |
-
}
|
| 1340 |
-
if (y > 0.2068965517) {
|
| 1341 |
-
y = y * y * y;
|
| 1342 |
-
} else {
|
| 1343 |
-
y = 0.1284185493 * (y - 0.1379310345);
|
| 1344 |
-
}
|
| 1345 |
-
if (z > 0.2068965517) {
|
| 1346 |
-
z = z * z * z;
|
| 1347 |
-
} else {
|
| 1348 |
-
z = 0.1284185493 * (z - 0.1379310345);
|
| 1349 |
-
}
|
| 1350 |
-
return {
|
| 1351 |
-
x: x * 95.047,
|
| 1352 |
-
y: y * 100.0,
|
| 1353 |
-
z: z * 108.883
|
| 1354 |
-
};
|
| 1355 |
-
};
|
| 1356 |
-
|
| 1357 |
-
Convert.rgbToLab = function(r, g, b) {
|
| 1358 |
-
var xyz;
|
| 1359 |
-
if (typeof r === "object") {
|
| 1360 |
-
g = r.g;
|
| 1361 |
-
b = r.b;
|
| 1362 |
-
r = r.r;
|
| 1363 |
-
}
|
| 1364 |
-
xyz = this.rgbToXYZ(r, g, b);
|
| 1365 |
-
return this.xyzToLab(xyz);
|
| 1366 |
-
};
|
| 1367 |
-
|
| 1368 |
-
Convert.labToRGB = function(l, a, b) {};
|
| 1369 |
-
|
| 1370 |
-
return Convert;
|
| 1371 |
-
|
| 1372 |
-
})();
|
| 1373 |
-
|
| 1374 |
-
Convert = Caman.Convert;
|
| 1375 |
-
|
| 1376 |
-
Caman.Event = (function() {
|
| 1377 |
-
function Event() {}
|
| 1378 |
-
|
| 1379 |
-
Event.events = {};
|
| 1380 |
-
|
| 1381 |
-
Event.types = ["processStart", "processComplete", "renderStart", "renderFinished", "blockStarted", "blockFinished"];
|
| 1382 |
-
|
| 1383 |
-
Event.trigger = function(target, type, data) {
|
| 1384 |
-
var event, _i, _len, _ref, _results;
|
| 1385 |
-
if (data == null) {
|
| 1386 |
-
data = null;
|
| 1387 |
-
}
|
| 1388 |
-
if (this.events[type] && this.events[type].length) {
|
| 1389 |
-
_ref = this.events[type];
|
| 1390 |
-
_results = [];
|
| 1391 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 1392 |
-
event = _ref[_i];
|
| 1393 |
-
if (event.target === null || target.id === event.target.id) {
|
| 1394 |
-
_results.push(event.fn.call(target, data));
|
| 1395 |
-
} else {
|
| 1396 |
-
_results.push(void 0);
|
| 1397 |
-
}
|
| 1398 |
-
}
|
| 1399 |
-
return _results;
|
| 1400 |
-
}
|
| 1401 |
-
};
|
| 1402 |
-
|
| 1403 |
-
Event.listen = function(target, type, fn) {
|
| 1404 |
-
var _fn, _type;
|
| 1405 |
-
if (typeof target === "string") {
|
| 1406 |
-
_type = target;
|
| 1407 |
-
_fn = type;
|
| 1408 |
-
target = null;
|
| 1409 |
-
type = _type;
|
| 1410 |
-
fn = _fn;
|
| 1411 |
-
}
|
| 1412 |
-
if (__indexOf.call(this.types, type) < 0) {
|
| 1413 |
-
return false;
|
| 1414 |
-
}
|
| 1415 |
-
if (!this.events[type]) {
|
| 1416 |
-
this.events[type] = [];
|
| 1417 |
-
}
|
| 1418 |
-
this.events[type].push({
|
| 1419 |
-
target: target,
|
| 1420 |
-
fn: fn
|
| 1421 |
-
});
|
| 1422 |
-
return true;
|
| 1423 |
-
};
|
| 1424 |
-
|
| 1425 |
-
return Event;
|
| 1426 |
-
|
| 1427 |
-
})();
|
| 1428 |
-
|
| 1429 |
-
Event = Caman.Event;
|
| 1430 |
-
|
| 1431 |
-
Caman.Filter = (function() {
|
| 1432 |
-
function Filter() {}
|
| 1433 |
-
|
| 1434 |
-
Filter.Type = {
|
| 1435 |
-
Single: 1,
|
| 1436 |
-
Kernel: 2,
|
| 1437 |
-
LayerDequeue: 3,
|
| 1438 |
-
LayerFinished: 4,
|
| 1439 |
-
LoadOverlay: 5,
|
| 1440 |
-
Plugin: 6
|
| 1441 |
-
};
|
| 1442 |
-
|
| 1443 |
-
Filter.register = function(name, filterFunc) {
|
| 1444 |
-
return Caman.prototype[name] = filterFunc;
|
| 1445 |
-
};
|
| 1446 |
-
|
| 1447 |
-
return Filter;
|
| 1448 |
-
|
| 1449 |
-
})();
|
| 1450 |
-
|
| 1451 |
-
Filter = Caman.Filter;
|
| 1452 |
-
|
| 1453 |
-
Caman.IO = (function() {
|
| 1454 |
-
function IO() {}
|
| 1455 |
-
|
| 1456 |
-
IO.domainRegex = /(?:(?:http|https):\/\/)((?:\w+)\.(?:(?:\w|\.)+))/;
|
| 1457 |
-
|
| 1458 |
-
IO.isRemote = function(img) {
|
| 1459 |
-
if (img == null) {
|
| 1460 |
-
return false;
|
| 1461 |
-
}
|
| 1462 |
-
if (this.corsEnabled(img)) {
|
| 1463 |
-
return false;
|
| 1464 |
-
}
|
| 1465 |
-
return this.isURLRemote(img.src);
|
| 1466 |
-
};
|
| 1467 |
-
|
| 1468 |
-
IO.corsEnabled = function(img) {
|
| 1469 |
-
var _ref;
|
| 1470 |
-
return (img.crossOrigin != null) && ((_ref = img.crossOrigin.toLowerCase()) === 'anonymous' || _ref === 'use-credentials');
|
| 1471 |
-
};
|
| 1472 |
-
|
| 1473 |
-
IO.isURLRemote = function(url) {
|
| 1474 |
-
var matches;
|
| 1475 |
-
matches = url.match(this.domainRegex);
|
| 1476 |
-
if (matches) {
|
| 1477 |
-
return matches[1] !== document.domain;
|
| 1478 |
-
} else {
|
| 1479 |
-
return false;
|
| 1480 |
-
}
|
| 1481 |
-
};
|
| 1482 |
-
|
| 1483 |
-
IO.remoteCheck = function(src) {
|
| 1484 |
-
if (this.isURLRemote(src)) {
|
| 1485 |
-
if (!Caman.remoteProxy.length) {
|
| 1486 |
-
Log.info("Attempting to load a remote image without a configured proxy. URL: " + src);
|
| 1487 |
-
} else {
|
| 1488 |
-
if (Caman.isURLRemote(Caman.remoteProxy)) {
|
| 1489 |
-
Log.info("Cannot use a remote proxy for loading images.");
|
| 1490 |
-
return;
|
| 1491 |
-
}
|
| 1492 |
-
return this.proxyUrl(src);
|
| 1493 |
-
}
|
| 1494 |
-
}
|
| 1495 |
-
};
|
| 1496 |
-
|
| 1497 |
-
IO.proxyUrl = function(src) {
|
| 1498 |
-
return "" + Caman.remoteProxy + "?" + Caman.proxyParam + "=" + (encodeURIComponent(src));
|
| 1499 |
-
};
|
| 1500 |
-
|
| 1501 |
-
IO.useProxy = function(lang) {
|
| 1502 |
-
var langToExt;
|
| 1503 |
-
langToExt = {
|
| 1504 |
-
ruby: 'rb',
|
| 1505 |
-
python: 'py',
|
| 1506 |
-
perl: 'pl',
|
| 1507 |
-
javascript: 'js'
|
| 1508 |
-
};
|
| 1509 |
-
lang = lang.toLowerCase();
|
| 1510 |
-
if (langToExt[lang] != null) {
|
| 1511 |
-
lang = langToExt[lang];
|
| 1512 |
-
}
|
| 1513 |
-
return "proxies/caman_proxy." + lang;
|
| 1514 |
-
};
|
| 1515 |
-
|
| 1516 |
-
return IO;
|
| 1517 |
-
|
| 1518 |
-
})();
|
| 1519 |
-
|
| 1520 |
-
Caman.prototype.save = function() {
|
| 1521 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 1522 |
-
return this.nodeSave.apply(this, arguments);
|
| 1523 |
-
} else {
|
| 1524 |
-
return this.browserSave.apply(this, arguments);
|
| 1525 |
-
}
|
| 1526 |
-
};
|
| 1527 |
-
|
| 1528 |
-
Caman.prototype.browserSave = function(type) {
|
| 1529 |
-
var image;
|
| 1530 |
-
if (type == null) {
|
| 1531 |
-
type = "png";
|
| 1532 |
-
}
|
| 1533 |
-
type = type.toLowerCase();
|
| 1534 |
-
image = this.toBase64(type).replace("image/" + type, "image/octet-stream");
|
| 1535 |
-
return document.location.href = image;
|
| 1536 |
-
};
|
| 1537 |
-
|
| 1538 |
-
Caman.prototype.nodeSave = function(file, overwrite, callback) {
|
| 1539 |
-
var e, stats;
|
| 1540 |
-
if (overwrite == null) {
|
| 1541 |
-
overwrite = true;
|
| 1542 |
-
}
|
| 1543 |
-
if (callback == null) {
|
| 1544 |
-
callback = null;
|
| 1545 |
-
}
|
| 1546 |
-
try {
|
| 1547 |
-
stats = fs.statSync(file);
|
| 1548 |
-
if (stats.isFile() && !overwrite) {
|
| 1549 |
-
return false;
|
| 1550 |
-
}
|
| 1551 |
-
} catch (_error) {
|
| 1552 |
-
e = _error;
|
| 1553 |
-
Log.debug("Creating output file " + file);
|
| 1554 |
-
}
|
| 1555 |
-
return fs.writeFile(file, this.canvas.toBuffer(), function(err) {
|
| 1556 |
-
Log.debug("Finished writing to " + file);
|
| 1557 |
-
if (callback) {
|
| 1558 |
-
return callback.call(this, err);
|
| 1559 |
-
}
|
| 1560 |
-
});
|
| 1561 |
-
};
|
| 1562 |
-
|
| 1563 |
-
Caman.prototype.toImage = function(type) {
|
| 1564 |
-
var img;
|
| 1565 |
-
img = new Image();
|
| 1566 |
-
img.src = this.toBase64(type);
|
| 1567 |
-
img.width = this.dimensions.width;
|
| 1568 |
-
img.height = this.dimensions.height;
|
| 1569 |
-
if (window.devicePixelRatio) {
|
| 1570 |
-
img.width /= window.devicePixelRatio;
|
| 1571 |
-
img.height /= window.devicePixelRatio;
|
| 1572 |
-
}
|
| 1573 |
-
return img;
|
| 1574 |
-
};
|
| 1575 |
-
|
| 1576 |
-
Caman.prototype.toBase64 = function(type) {
|
| 1577 |
-
if (type == null) {
|
| 1578 |
-
type = "png";
|
| 1579 |
-
}
|
| 1580 |
-
type = type.toLowerCase();
|
| 1581 |
-
return this.canvas.toDataURL("image/" + type);
|
| 1582 |
-
};
|
| 1583 |
-
|
| 1584 |
-
IO = Caman.IO;
|
| 1585 |
-
|
| 1586 |
-
Caman.Layer = (function() {
|
| 1587 |
-
function Layer(c) {
|
| 1588 |
-
this.c = c;
|
| 1589 |
-
this.filter = this.c;
|
| 1590 |
-
this.options = {
|
| 1591 |
-
blendingMode: 'normal',
|
| 1592 |
-
opacity: 1.0
|
| 1593 |
-
};
|
| 1594 |
-
this.layerID = Util.uniqid.get();
|
| 1595 |
-
this.canvas = typeof exports !== "undefined" && exports !== null ? new Canvas() : document.createElement('canvas');
|
| 1596 |
-
this.canvas.width = this.c.dimensions.width;
|
| 1597 |
-
this.canvas.height = this.c.dimensions.height;
|
| 1598 |
-
this.context = this.canvas.getContext('2d');
|
| 1599 |
-
this.context.createImageData(this.canvas.width, this.canvas.height);
|
| 1600 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 1601 |
-
this.pixelData = this.imageData.data;
|
| 1602 |
-
}
|
| 1603 |
-
|
| 1604 |
-
Layer.prototype.newLayer = function(cb) {
|
| 1605 |
-
return this.c.newLayer.call(this.c, cb);
|
| 1606 |
-
};
|
| 1607 |
-
|
| 1608 |
-
Layer.prototype.setBlendingMode = function(mode) {
|
| 1609 |
-
this.options.blendingMode = mode;
|
| 1610 |
-
return this;
|
| 1611 |
-
};
|
| 1612 |
-
|
| 1613 |
-
Layer.prototype.opacity = function(opacity) {
|
| 1614 |
-
this.options.opacity = opacity / 100;
|
| 1615 |
-
return this;
|
| 1616 |
-
};
|
| 1617 |
-
|
| 1618 |
-
Layer.prototype.copyParent = function() {
|
| 1619 |
-
var i, parentData, _i, _ref;
|
| 1620 |
-
parentData = this.c.pixelData;
|
| 1621 |
-
for (i = _i = 0, _ref = this.c.pixelData.length; _i < _ref; i = _i += 4) {
|
| 1622 |
-
this.pixelData[i] = parentData[i];
|
| 1623 |
-
this.pixelData[i + 1] = parentData[i + 1];
|
| 1624 |
-
this.pixelData[i + 2] = parentData[i + 2];
|
| 1625 |
-
this.pixelData[i + 3] = parentData[i + 3];
|
| 1626 |
-
}
|
| 1627 |
-
return this;
|
| 1628 |
-
};
|
| 1629 |
-
|
| 1630 |
-
Layer.prototype.fillColor = function() {
|
| 1631 |
-
return this.c.fillColor.apply(this.c, arguments);
|
| 1632 |
-
};
|
| 1633 |
-
|
| 1634 |
-
Layer.prototype.overlayImage = function(image) {
|
| 1635 |
-
if (typeof image === "object") {
|
| 1636 |
-
image = image.src;
|
| 1637 |
-
} else if (typeof image === "string" && image[0] === "#") {
|
| 1638 |
-
image = $(image).src;
|
| 1639 |
-
}
|
| 1640 |
-
if (!image) {
|
| 1641 |
-
return this;
|
| 1642 |
-
}
|
| 1643 |
-
this.c.renderer.renderQueue.push({
|
| 1644 |
-
type: Filter.Type.LoadOverlay,
|
| 1645 |
-
src: image,
|
| 1646 |
-
layer: this
|
| 1647 |
-
});
|
| 1648 |
-
return this;
|
| 1649 |
-
};
|
| 1650 |
-
|
| 1651 |
-
Layer.prototype.applyToParent = function() {
|
| 1652 |
-
var i, layerData, parentData, result, rgbaLayer, rgbaParent, _i, _ref, _results;
|
| 1653 |
-
parentData = this.c.pixelStack[this.c.pixelStack.length - 1];
|
| 1654 |
-
layerData = this.c.pixelData;
|
| 1655 |
-
_results = [];
|
| 1656 |
-
for (i = _i = 0, _ref = layerData.length; _i < _ref; i = _i += 4) {
|
| 1657 |
-
rgbaParent = {
|
| 1658 |
-
r: parentData[i],
|
| 1659 |
-
g: parentData[i + 1],
|
| 1660 |
-
b: parentData[i + 2],
|
| 1661 |
-
a: parentData[i + 3]
|
| 1662 |
-
};
|
| 1663 |
-
rgbaLayer = {
|
| 1664 |
-
r: layerData[i],
|
| 1665 |
-
g: layerData[i + 1],
|
| 1666 |
-
b: layerData[i + 2],
|
| 1667 |
-
a: layerData[i + 3]
|
| 1668 |
-
};
|
| 1669 |
-
result = Blender.execute(this.options.blendingMode, rgbaLayer, rgbaParent);
|
| 1670 |
-
result.r = Util.clampRGB(result.r);
|
| 1671 |
-
result.g = Util.clampRGB(result.g);
|
| 1672 |
-
result.b = Util.clampRGB(result.b);
|
| 1673 |
-
if (result.a == null) {
|
| 1674 |
-
result.a = rgbaLayer.a;
|
| 1675 |
-
}
|
| 1676 |
-
parentData[i] = rgbaParent.r - ((rgbaParent.r - result.r) * (this.options.opacity * (result.a / 255)));
|
| 1677 |
-
parentData[i + 1] = rgbaParent.g - ((rgbaParent.g - result.g) * (this.options.opacity * (result.a / 255)));
|
| 1678 |
-
_results.push(parentData[i + 2] = rgbaParent.b - ((rgbaParent.b - result.b) * (this.options.opacity * (result.a / 255))));
|
| 1679 |
-
}
|
| 1680 |
-
return _results;
|
| 1681 |
-
};
|
| 1682 |
-
|
| 1683 |
-
return Layer;
|
| 1684 |
-
|
| 1685 |
-
})();
|
| 1686 |
-
|
| 1687 |
-
Layer = Caman.Layer;
|
| 1688 |
-
|
| 1689 |
-
Caman.Logger = (function() {
|
| 1690 |
-
function Logger() {
|
| 1691 |
-
var name, _i, _len, _ref;
|
| 1692 |
-
_ref = ['log', 'info', 'warn', 'error'];
|
| 1693 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 1694 |
-
name = _ref[_i];
|
| 1695 |
-
this[name] = (function(name) {
|
| 1696 |
-
return function() {
|
| 1697 |
-
var args, e;
|
| 1698 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 1699 |
-
if (!Caman.DEBUG) {
|
| 1700 |
-
return;
|
| 1701 |
-
}
|
| 1702 |
-
try {
|
| 1703 |
-
return console[name].apply(console, args);
|
| 1704 |
-
} catch (_error) {
|
| 1705 |
-
e = _error;
|
| 1706 |
-
return console[name](args);
|
| 1707 |
-
}
|
| 1708 |
-
};
|
| 1709 |
-
})(name);
|
| 1710 |
-
}
|
| 1711 |
-
this.debug = this.log;
|
| 1712 |
-
}
|
| 1713 |
-
|
| 1714 |
-
return Logger;
|
| 1715 |
-
|
| 1716 |
-
})();
|
| 1717 |
-
|
| 1718 |
-
Log = new Caman.Logger();
|
| 1719 |
-
|
| 1720 |
-
Caman.Pixel = (function() {
|
| 1721 |
-
Pixel.coordinatesToLocation = function(x, y, width) {
|
| 1722 |
-
return (y * width + x) * 4;
|
| 1723 |
-
};
|
| 1724 |
-
|
| 1725 |
-
Pixel.locationToCoordinates = function(loc, width) {
|
| 1726 |
-
var x, y;
|
| 1727 |
-
y = Math.floor(loc / (width * 4));
|
| 1728 |
-
x = (loc % (width * 4)) / 4;
|
| 1729 |
-
return {
|
| 1730 |
-
x: x,
|
| 1731 |
-
y: y
|
| 1732 |
-
};
|
| 1733 |
-
};
|
| 1734 |
-
|
| 1735 |
-
function Pixel(r, g, b, a, c) {
|
| 1736 |
-
this.r = r != null ? r : 0;
|
| 1737 |
-
this.g = g != null ? g : 0;
|
| 1738 |
-
this.b = b != null ? b : 0;
|
| 1739 |
-
this.a = a != null ? a : 255;
|
| 1740 |
-
this.c = c != null ? c : null;
|
| 1741 |
-
this.loc = 0;
|
| 1742 |
-
}
|
| 1743 |
-
|
| 1744 |
-
Pixel.prototype.setContext = function(c) {
|
| 1745 |
-
return this.c = c;
|
| 1746 |
-
};
|
| 1747 |
-
|
| 1748 |
-
Pixel.prototype.locationXY = function() {
|
| 1749 |
-
var x, y;
|
| 1750 |
-
if (this.c == null) {
|
| 1751 |
-
throw "Requires a CamanJS context";
|
| 1752 |
-
}
|
| 1753 |
-
y = this.c.dimensions.height - Math.floor(this.loc / (this.c.dimensions.width * 4));
|
| 1754 |
-
x = (this.loc % (this.c.dimensions.width * 4)) / 4;
|
| 1755 |
-
return {
|
| 1756 |
-
x: x,
|
| 1757 |
-
y: y
|
| 1758 |
-
};
|
| 1759 |
-
};
|
| 1760 |
-
|
| 1761 |
-
Pixel.prototype.pixelAtLocation = function(loc) {
|
| 1762 |
-
if (this.c == null) {
|
| 1763 |
-
throw "Requires a CamanJS context";
|
| 1764 |
-
}
|
| 1765 |
-
return new Pixel(this.c.pixelData[loc], this.c.pixelData[loc + 1], this.c.pixelData[loc + 2], this.c.pixelData[loc + 3], this.c);
|
| 1766 |
-
};
|
| 1767 |
-
|
| 1768 |
-
Pixel.prototype.getPixelRelative = function(horiz, vert) {
|
| 1769 |
-
var newLoc;
|
| 1770 |
-
if (this.c == null) {
|
| 1771 |
-
throw "Requires a CamanJS context";
|
| 1772 |
-
}
|
| 1773 |
-
newLoc = this.loc + (this.c.dimensions.width * 4 * (vert * -1)) + (4 * horiz);
|
| 1774 |
-
if (newLoc > this.c.pixelData.length || newLoc < 0) {
|
| 1775 |
-
return new Pixel(0, 0, 0, 255, this.c);
|
| 1776 |
-
}
|
| 1777 |
-
return this.pixelAtLocation(newLoc);
|
| 1778 |
-
};
|
| 1779 |
-
|
| 1780 |
-
Pixel.prototype.putPixelRelative = function(horiz, vert, rgba) {
|
| 1781 |
-
var nowLoc;
|
| 1782 |
-
if (this.c == null) {
|
| 1783 |
-
throw "Requires a CamanJS context";
|
| 1784 |
-
}
|
| 1785 |
-
nowLoc = this.loc + (this.c.dimensions.width * 4 * (vert * -1)) + (4 * horiz);
|
| 1786 |
-
if (newLoc > this.c.pixelData.length || newLoc < 0) {
|
| 1787 |
-
return;
|
| 1788 |
-
}
|
| 1789 |
-
this.c.pixelData[newLoc] = rgba.r;
|
| 1790 |
-
this.c.pixelData[newLoc + 1] = rgba.g;
|
| 1791 |
-
this.c.pixelData[newLoc + 2] = rgba.b;
|
| 1792 |
-
this.c.pixelData[newLoc + 3] = rgba.a;
|
| 1793 |
-
return true;
|
| 1794 |
-
};
|
| 1795 |
-
|
| 1796 |
-
Pixel.prototype.getPixel = function(x, y) {
|
| 1797 |
-
var loc;
|
| 1798 |
-
if (this.c == null) {
|
| 1799 |
-
throw "Requires a CamanJS context";
|
| 1800 |
-
}
|
| 1801 |
-
loc = this.coordinatesToLocation(x, y, this.width);
|
| 1802 |
-
return this.pixelAtLocation(loc);
|
| 1803 |
-
};
|
| 1804 |
-
|
| 1805 |
-
Pixel.prototype.putPixel = function(x, y, rgba) {
|
| 1806 |
-
var loc;
|
| 1807 |
-
if (this.c == null) {
|
| 1808 |
-
throw "Requires a CamanJS context";
|
| 1809 |
-
}
|
| 1810 |
-
loc = this.coordinatesToLocation(x, y, this.width);
|
| 1811 |
-
this.c.pixelData[loc] = rgba.r;
|
| 1812 |
-
this.c.pixelData[loc + 1] = rgba.g;
|
| 1813 |
-
this.c.pixelData[loc + 2] = rgba.b;
|
| 1814 |
-
return this.c.pixelData[loc + 3] = rgba.a;
|
| 1815 |
-
};
|
| 1816 |
-
|
| 1817 |
-
Pixel.prototype.toString = function() {
|
| 1818 |
-
return this.toKey();
|
| 1819 |
-
};
|
| 1820 |
-
|
| 1821 |
-
Pixel.prototype.toHex = function(includeAlpha) {
|
| 1822 |
-
var hex;
|
| 1823 |
-
if (includeAlpha == null) {
|
| 1824 |
-
includeAlpha = false;
|
| 1825 |
-
}
|
| 1826 |
-
hex = '#' + this.r.toString(16) + this.g.toString(16) + this.b.toString(16);
|
| 1827 |
-
if (includeAlpha) {
|
| 1828 |
-
return hex + this.a.toString(16);
|
| 1829 |
-
} else {
|
| 1830 |
-
return hex;
|
| 1831 |
-
}
|
| 1832 |
-
};
|
| 1833 |
-
|
| 1834 |
-
return Pixel;
|
| 1835 |
-
|
| 1836 |
-
})();
|
| 1837 |
-
|
| 1838 |
-
Pixel = Caman.Pixel;
|
| 1839 |
-
|
| 1840 |
-
Caman.Plugin = (function() {
|
| 1841 |
-
function Plugin() {}
|
| 1842 |
-
|
| 1843 |
-
Plugin.plugins = {};
|
| 1844 |
-
|
| 1845 |
-
Plugin.register = function(name, plugin) {
|
| 1846 |
-
return this.plugins[name] = plugin;
|
| 1847 |
-
};
|
| 1848 |
-
|
| 1849 |
-
Plugin.execute = function(context, name, args) {
|
| 1850 |
-
return this.plugins[name].apply(context, args);
|
| 1851 |
-
};
|
| 1852 |
-
|
| 1853 |
-
return Plugin;
|
| 1854 |
-
|
| 1855 |
-
})();
|
| 1856 |
-
|
| 1857 |
-
Plugin = Caman.Plugin;
|
| 1858 |
-
|
| 1859 |
-
Caman.Renderer = (function() {
|
| 1860 |
-
Renderer.Blocks = Caman.NodeJS ? require('os').cpus().length : 4;
|
| 1861 |
-
|
| 1862 |
-
function Renderer(c) {
|
| 1863 |
-
this.c = c;
|
| 1864 |
-
this.processNext = __bind(this.processNext, this);
|
| 1865 |
-
this.renderQueue = [];
|
| 1866 |
-
this.modPixelData = null;
|
| 1867 |
-
}
|
| 1868 |
-
|
| 1869 |
-
Renderer.prototype.add = function(job) {
|
| 1870 |
-
if (job == null) {
|
| 1871 |
-
return;
|
| 1872 |
-
}
|
| 1873 |
-
return this.renderQueue.push(job);
|
| 1874 |
-
};
|
| 1875 |
-
|
| 1876 |
-
Renderer.prototype.processNext = function() {
|
| 1877 |
-
var layer;
|
| 1878 |
-
if (this.renderQueue.length === 0) {
|
| 1879 |
-
Event.trigger(this, "renderFinished");
|
| 1880 |
-
if (this.finishedFn != null) {
|
| 1881 |
-
this.finishedFn.call(this.c);
|
| 1882 |
-
}
|
| 1883 |
-
return this;
|
| 1884 |
-
}
|
| 1885 |
-
this.currentJob = this.renderQueue.shift();
|
| 1886 |
-
switch (this.currentJob.type) {
|
| 1887 |
-
case Filter.Type.LayerDequeue:
|
| 1888 |
-
layer = this.c.canvasQueue.shift();
|
| 1889 |
-
this.c.executeLayer(layer);
|
| 1890 |
-
return this.processNext();
|
| 1891 |
-
case Filter.Type.LayerFinished:
|
| 1892 |
-
this.c.applyCurrentLayer();
|
| 1893 |
-
this.c.popContext();
|
| 1894 |
-
return this.processNext();
|
| 1895 |
-
case Filter.Type.LoadOverlay:
|
| 1896 |
-
return this.loadOverlay(this.currentJob.layer, this.currentJob.src);
|
| 1897 |
-
case Filter.Type.Plugin:
|
| 1898 |
-
return this.executePlugin();
|
| 1899 |
-
default:
|
| 1900 |
-
return this.executeFilter();
|
| 1901 |
-
}
|
| 1902 |
-
};
|
| 1903 |
-
|
| 1904 |
-
Renderer.prototype.execute = function(callback) {
|
| 1905 |
-
this.finishedFn = callback;
|
| 1906 |
-
this.modPixelData = Util.dataArray(this.c.pixelData.length);
|
| 1907 |
-
return this.processNext();
|
| 1908 |
-
};
|
| 1909 |
-
|
| 1910 |
-
Renderer.prototype.eachBlock = function(fn) {
|
| 1911 |
-
var blockN, blockPixelLength, bnum, end, f, i, lastBlockN, n, start, _i, _ref, _results,
|
| 1912 |
-
_this = this;
|
| 1913 |
-
this.blocksDone = 0;
|
| 1914 |
-
n = this.c.pixelData.length;
|
| 1915 |
-
blockPixelLength = Math.floor((n / 4) / Renderer.Blocks);
|
| 1916 |
-
blockN = blockPixelLength * 4;
|
| 1917 |
-
lastBlockN = blockN + ((n / 4) % Renderer.Blocks) * 4;
|
| 1918 |
-
_results = [];
|
| 1919 |
-
for (i = _i = 0, _ref = Renderer.Blocks; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 1920 |
-
start = i * blockN;
|
| 1921 |
-
end = start + (i === Renderer.Blocks - 1 ? lastBlockN : blockN);
|
| 1922 |
-
if (Caman.NodeJS) {
|
| 1923 |
-
f = Fiber(function() {
|
| 1924 |
-
return fn.call(_this, i, start, end);
|
| 1925 |
-
});
|
| 1926 |
-
bnum = f.run();
|
| 1927 |
-
_results.push(this.blockFinished(bnum));
|
| 1928 |
-
} else {
|
| 1929 |
-
_results.push(setTimeout((function(i, start, end) {
|
| 1930 |
-
return function() {
|
| 1931 |
-
return fn.call(_this, i, start, end);
|
| 1932 |
-
};
|
| 1933 |
-
})(i, start, end), 0));
|
| 1934 |
-
}
|
| 1935 |
-
}
|
| 1936 |
-
return _results;
|
| 1937 |
-
};
|
| 1938 |
-
|
| 1939 |
-
Renderer.prototype.executeFilter = function() {
|
| 1940 |
-
Event.trigger(this.c, "processStart", this.currentJob);
|
| 1941 |
-
if (this.currentJob.type === Filter.Type.Single) {
|
| 1942 |
-
return this.eachBlock(this.renderBlock);
|
| 1943 |
-
} else {
|
| 1944 |
-
return this.eachBlock(this.renderKernel);
|
| 1945 |
-
}
|
| 1946 |
-
};
|
| 1947 |
-
|
| 1948 |
-
Renderer.prototype.executePlugin = function() {
|
| 1949 |
-
Log.debug("Executing plugin " + this.currentJob.plugin);
|
| 1950 |
-
Plugin.execute(this.c, this.currentJob.plugin, this.currentJob.args);
|
| 1951 |
-
Log.debug("Plugin " + this.currentJob.plugin + " finished!");
|
| 1952 |
-
return this.processNext();
|
| 1953 |
-
};
|
| 1954 |
-
|
| 1955 |
-
Renderer.prototype.renderBlock = function(bnum, start, end) {
|
| 1956 |
-
var i, pixel, _i;
|
| 1957 |
-
Log.debug("Block #" + bnum + " - Filter: " + this.currentJob.name + ", Start: " + start + ", End: " + end);
|
| 1958 |
-
Event.trigger(this.c, "blockStarted", {
|
| 1959 |
-
blockNum: bnum,
|
| 1960 |
-
totalBlocks: Renderer.Blocks,
|
| 1961 |
-
startPixel: start,
|
| 1962 |
-
endPixel: end
|
| 1963 |
-
});
|
| 1964 |
-
pixel = new Pixel();
|
| 1965 |
-
pixel.setContext(this.c);
|
| 1966 |
-
for (i = _i = start; _i < end; i = _i += 4) {
|
| 1967 |
-
pixel.loc = i;
|
| 1968 |
-
pixel.r = this.c.pixelData[i];
|
| 1969 |
-
pixel.g = this.c.pixelData[i + 1];
|
| 1970 |
-
pixel.b = this.c.pixelData[i + 2];
|
| 1971 |
-
pixel.a = this.c.pixelData[i + 3];
|
| 1972 |
-
this.currentJob.processFn(pixel);
|
| 1973 |
-
this.c.pixelData[i] = Util.clampRGB(pixel.r);
|
| 1974 |
-
this.c.pixelData[i + 1] = Util.clampRGB(pixel.g);
|
| 1975 |
-
this.c.pixelData[i + 2] = Util.clampRGB(pixel.b);
|
| 1976 |
-
this.c.pixelData[i + 3] = Util.clampRGB(pixel.a);
|
| 1977 |
-
}
|
| 1978 |
-
if (Caman.NodeJS) {
|
| 1979 |
-
return Fiber["yield"](bnum);
|
| 1980 |
-
} else {
|
| 1981 |
-
return this.blockFinished(bnum);
|
| 1982 |
-
}
|
| 1983 |
-
};
|
| 1984 |
-
|
| 1985 |
-
Renderer.prototype.renderKernel = function(bnum, start, end) {
|
| 1986 |
-
var adjust, adjustSize, bias, builder, builderIndex, divisor, i, j, k, kernel, n, name, p, pixel, res, _i, _j, _k;
|
| 1987 |
-
name = this.currentJob.name;
|
| 1988 |
-
bias = this.currentJob.bias;
|
| 1989 |
-
divisor = this.currentJob.divisor;
|
| 1990 |
-
n = this.c.pixelData.length;
|
| 1991 |
-
adjust = this.currentJob.adjust;
|
| 1992 |
-
adjustSize = Math.sqrt(adjust.length);
|
| 1993 |
-
kernel = [];
|
| 1994 |
-
Log.debug("Rendering kernel - Filter: " + this.currentJob.name);
|
| 1995 |
-
start = Math.max(start, this.c.dimensions.width * 4 * ((adjustSize - 1) / 2));
|
| 1996 |
-
end = Math.min(end, n - (this.c.dimensions.width * 4 * ((adjustSize - 1) / 2)));
|
| 1997 |
-
builder = (adjustSize - 1) / 2;
|
| 1998 |
-
pixel = new Pixel();
|
| 1999 |
-
pixel.setContext(this.c);
|
| 2000 |
-
for (i = _i = start; _i < end; i = _i += 4) {
|
| 2001 |
-
pixel.loc = i;
|
| 2002 |
-
builderIndex = 0;
|
| 2003 |
-
for (j = _j = -builder; -builder <= builder ? _j <= builder : _j >= builder; j = -builder <= builder ? ++_j : --_j) {
|
| 2004 |
-
for (k = _k = builder; builder <= -builder ? _k <= -builder : _k >= -builder; k = builder <= -builder ? ++_k : --_k) {
|
| 2005 |
-
p = pixel.getPixelRelative(j, k);
|
| 2006 |
-
kernel[builderIndex * 3] = p.r;
|
| 2007 |
-
kernel[builderIndex * 3 + 1] = p.g;
|
| 2008 |
-
kernel[builderIndex * 3 + 2] = p.b;
|
| 2009 |
-
builderIndex++;
|
| 2010 |
-
}
|
| 2011 |
-
}
|
| 2012 |
-
res = this.processKernel(adjust, kernel, divisor, bias);
|
| 2013 |
-
this.modPixelData[i] = Util.clampRGB(res.r);
|
| 2014 |
-
this.modPixelData[i + 1] = Util.clampRGB(res.g);
|
| 2015 |
-
this.modPixelData[i + 2] = Util.clampRGB(res.b);
|
| 2016 |
-
this.modPixelData[i + 3] = this.c.pixelData[i + 3];
|
| 2017 |
-
}
|
| 2018 |
-
if (Caman.NodeJS) {
|
| 2019 |
-
return Fiber["yield"](bnum);
|
| 2020 |
-
} else {
|
| 2021 |
-
return this.blockFinished(bnum);
|
| 2022 |
-
}
|
| 2023 |
-
};
|
| 2024 |
-
|
| 2025 |
-
Renderer.prototype.blockFinished = function(bnum) {
|
| 2026 |
-
var i, _i, _ref;
|
| 2027 |
-
if (bnum >= 0) {
|
| 2028 |
-
Log.debug("Block #" + bnum + " finished! Filter: " + this.currentJob.name);
|
| 2029 |
-
}
|
| 2030 |
-
this.blocksDone++;
|
| 2031 |
-
Event.trigger(this.c, "blockFinished", {
|
| 2032 |
-
blockNum: bnum,
|
| 2033 |
-
blocksFinished: this.blocksDone,
|
| 2034 |
-
totalBlocks: Renderer.Blocks
|
| 2035 |
-
});
|
| 2036 |
-
if (this.blocksDone === Renderer.Blocks) {
|
| 2037 |
-
if (this.currentJob.type === Filter.Type.Kernel) {
|
| 2038 |
-
for (i = _i = 0, _ref = this.c.pixelData.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2039 |
-
this.c.pixelData[i] = this.modPixelData[i];
|
| 2040 |
-
}
|
| 2041 |
-
}
|
| 2042 |
-
if (bnum >= 0) {
|
| 2043 |
-
Log.debug("Filter " + this.currentJob.name + " finished!");
|
| 2044 |
-
}
|
| 2045 |
-
Event.trigger(this.c, "processComplete", this.currentJob);
|
| 2046 |
-
return this.processNext();
|
| 2047 |
-
}
|
| 2048 |
-
};
|
| 2049 |
-
|
| 2050 |
-
Renderer.prototype.processKernel = function(adjust, kernel, divisor, bias) {
|
| 2051 |
-
var i, val, _i, _ref;
|
| 2052 |
-
val = {
|
| 2053 |
-
r: 0,
|
| 2054 |
-
g: 0,
|
| 2055 |
-
b: 0
|
| 2056 |
-
};
|
| 2057 |
-
for (i = _i = 0, _ref = adjust.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2058 |
-
val.r += adjust[i] * kernel[i * 3];
|
| 2059 |
-
val.g += adjust[i] * kernel[i * 3 + 1];
|
| 2060 |
-
val.b += adjust[i] * kernel[i * 3 + 2];
|
| 2061 |
-
}
|
| 2062 |
-
val.r = (val.r / divisor) + bias;
|
| 2063 |
-
val.g = (val.g / divisor) + bias;
|
| 2064 |
-
val.b = (val.b / divisor) + bias;
|
| 2065 |
-
return val;
|
| 2066 |
-
};
|
| 2067 |
-
|
| 2068 |
-
Renderer.prototype.loadOverlay = function(layer, src) {
|
| 2069 |
-
var img, proxyUrl,
|
| 2070 |
-
_this = this;
|
| 2071 |
-
img = new Image();
|
| 2072 |
-
img.onload = function() {
|
| 2073 |
-
layer.context.drawImage(img, 0, 0, _this.c.dimensions.width, _this.c.dimensions.height);
|
| 2074 |
-
layer.imageData = layer.context.getImageData(0, 0, _this.c.dimensions.width, _this.c.dimensions.height);
|
| 2075 |
-
layer.pixelData = layer.imageData.data;
|
| 2076 |
-
_this.c.pixelData = layer.pixelData;
|
| 2077 |
-
return _this.processNext();
|
| 2078 |
-
};
|
| 2079 |
-
proxyUrl = IO.remoteCheck(src);
|
| 2080 |
-
return img.src = proxyUrl != null ? proxyUrl : src;
|
| 2081 |
-
};
|
| 2082 |
-
|
| 2083 |
-
return Renderer;
|
| 2084 |
-
|
| 2085 |
-
})();
|
| 2086 |
-
|
| 2087 |
-
Renderer = Caman.Renderer;
|
| 2088 |
-
|
| 2089 |
-
Caman.Store = (function() {
|
| 2090 |
-
function Store() {}
|
| 2091 |
-
|
| 2092 |
-
Store.items = {};
|
| 2093 |
-
|
| 2094 |
-
Store.has = function(search) {
|
| 2095 |
-
return this.items[search] != null;
|
| 2096 |
-
};
|
| 2097 |
-
|
| 2098 |
-
Store.get = function(search) {
|
| 2099 |
-
return this.items[search];
|
| 2100 |
-
};
|
| 2101 |
-
|
| 2102 |
-
Store.put = function(name, obj) {
|
| 2103 |
-
return this.items[name] = obj;
|
| 2104 |
-
};
|
| 2105 |
-
|
| 2106 |
-
Store.execute = function(search, callback) {
|
| 2107 |
-
var _this = this;
|
| 2108 |
-
setTimeout(function() {
|
| 2109 |
-
return callback.call(_this.get(search), _this.get(search));
|
| 2110 |
-
}, 0);
|
| 2111 |
-
return this.get(search);
|
| 2112 |
-
};
|
| 2113 |
-
|
| 2114 |
-
Store.flush = function(name) {
|
| 2115 |
-
if (name == null) {
|
| 2116 |
-
name = false;
|
| 2117 |
-
}
|
| 2118 |
-
if (name) {
|
| 2119 |
-
return delete this.items[name];
|
| 2120 |
-
} else {
|
| 2121 |
-
return this.items = {};
|
| 2122 |
-
}
|
| 2123 |
-
};
|
| 2124 |
-
|
| 2125 |
-
return Store;
|
| 2126 |
-
|
| 2127 |
-
})();
|
| 2128 |
-
|
| 2129 |
-
Store = Caman.Store;
|
| 2130 |
-
|
| 2131 |
-
Blender.register("normal", function(rgbaLayer, rgbaParent) {
|
| 2132 |
-
return {
|
| 2133 |
-
r: rgbaLayer.r,
|
| 2134 |
-
g: rgbaLayer.g,
|
| 2135 |
-
b: rgbaLayer.b
|
| 2136 |
-
};
|
| 2137 |
-
});
|
| 2138 |
-
|
| 2139 |
-
Blender.register("multiply", function(rgbaLayer, rgbaParent) {
|
| 2140 |
-
return {
|
| 2141 |
-
r: (rgbaLayer.r * rgbaParent.r) / 255,
|
| 2142 |
-
g: (rgbaLayer.g * rgbaParent.g) / 255,
|
| 2143 |
-
b: (rgbaLayer.b * rgbaParent.b) / 255
|
| 2144 |
-
};
|
| 2145 |
-
});
|
| 2146 |
-
|
| 2147 |
-
Blender.register("screen", function(rgbaLayer, rgbaParent) {
|
| 2148 |
-
return {
|
| 2149 |
-
r: 255 - (((255 - rgbaLayer.r) * (255 - rgbaParent.r)) / 255),
|
| 2150 |
-
g: 255 - (((255 - rgbaLayer.g) * (255 - rgbaParent.g)) / 255),
|
| 2151 |
-
b: 255 - (((255 - rgbaLayer.b) * (255 - rgbaParent.b)) / 255)
|
| 2152 |
-
};
|
| 2153 |
-
});
|
| 2154 |
-
|
| 2155 |
-
Blender.register("overlay", function(rgbaLayer, rgbaParent) {
|
| 2156 |
-
var result;
|
| 2157 |
-
result = {};
|
| 2158 |
-
result.r = rgbaParent.r > 128 ? 255 - 2 * (255 - rgbaLayer.r) * (255 - rgbaParent.r) / 255 : (rgbaParent.r * rgbaLayer.r * 2) / 255;
|
| 2159 |
-
result.g = rgbaParent.g > 128 ? 255 - 2 * (255 - rgbaLayer.g) * (255 - rgbaParent.g) / 255 : (rgbaParent.g * rgbaLayer.g * 2) / 255;
|
| 2160 |
-
result.b = rgbaParent.b > 128 ? 255 - 2 * (255 - rgbaLayer.b) * (255 - rgbaParent.b) / 255 : (rgbaParent.b * rgbaLayer.b * 2) / 255;
|
| 2161 |
-
return result;
|
| 2162 |
-
});
|
| 2163 |
-
|
| 2164 |
-
Blender.register("difference", function(rgbaLayer, rgbaParent) {
|
| 2165 |
-
return {
|
| 2166 |
-
r: rgbaLayer.r - rgbaParent.r,
|
| 2167 |
-
g: rgbaLayer.g - rgbaParent.g,
|
| 2168 |
-
b: rgbaLayer.b - rgbaParent.b
|
| 2169 |
-
};
|
| 2170 |
-
});
|
| 2171 |
-
|
| 2172 |
-
Blender.register("addition", function(rgbaLayer, rgbaParent) {
|
| 2173 |
-
return {
|
| 2174 |
-
r: rgbaParent.r + rgbaLayer.r,
|
| 2175 |
-
g: rgbaParent.g + rgbaLayer.g,
|
| 2176 |
-
b: rgbaParent.b + rgbaLayer.b
|
| 2177 |
-
};
|
| 2178 |
-
});
|
| 2179 |
-
|
| 2180 |
-
Blender.register("exclusion", function(rgbaLayer, rgbaParent) {
|
| 2181 |
-
return {
|
| 2182 |
-
r: 128 - 2 * (rgbaParent.r - 128) * (rgbaLayer.r - 128) / 255,
|
| 2183 |
-
g: 128 - 2 * (rgbaParent.g - 128) * (rgbaLayer.g - 128) / 255,
|
| 2184 |
-
b: 128 - 2 * (rgbaParent.b - 128) * (rgbaLayer.b - 128) / 255
|
| 2185 |
-
};
|
| 2186 |
-
});
|
| 2187 |
-
|
| 2188 |
-
Blender.register("softLight", function(rgbaLayer, rgbaParent) {
|
| 2189 |
-
var result;
|
| 2190 |
-
result = {};
|
| 2191 |
-
result.r = rgbaParent.r > 128 ? 255 - ((255 - rgbaParent.r) * (255 - (rgbaLayer.r - 128))) / 255 : (rgbaParent.r * (rgbaLayer.r + 128)) / 255;
|
| 2192 |
-
result.g = rgbaParent.g > 128 ? 255 - ((255 - rgbaParent.g) * (255 - (rgbaLayer.g - 128))) / 255 : (rgbaParent.g * (rgbaLayer.g + 128)) / 255;
|
| 2193 |
-
result.b = rgbaParent.b > 128 ? 255 - ((255 - rgbaParent.b) * (255 - (rgbaLayer.b - 128))) / 255 : (rgbaParent.b * (rgbaLayer.b + 128)) / 255;
|
| 2194 |
-
return result;
|
| 2195 |
-
});
|
| 2196 |
-
|
| 2197 |
-
Blender.register("lighten", function(rgbaLayer, rgbaParent) {
|
| 2198 |
-
return {
|
| 2199 |
-
r: rgbaParent.r > rgbaLayer.r ? rgbaParent.r : rgbaLayer.r,
|
| 2200 |
-
g: rgbaParent.g > rgbaLayer.g ? rgbaParent.g : rgbaLayer.g,
|
| 2201 |
-
b: rgbaParent.b > rgbaLayer.b ? rgbaParent.b : rgbaLayer.b
|
| 2202 |
-
};
|
| 2203 |
-
});
|
| 2204 |
-
|
| 2205 |
-
Blender.register("darken", function(rgbaLayer, rgbaParent) {
|
| 2206 |
-
return {
|
| 2207 |
-
r: rgbaParent.r > rgbaLayer.r ? rgbaLayer.r : rgbaParent.r,
|
| 2208 |
-
g: rgbaParent.g > rgbaLayer.g ? rgbaLayer.g : rgbaParent.g,
|
| 2209 |
-
b: rgbaParent.b > rgbaLayer.b ? rgbaLayer.b : rgbaParent.b
|
| 2210 |
-
};
|
| 2211 |
-
});
|
| 2212 |
-
|
| 2213 |
-
Filter.register("fillColor", function() {
|
| 2214 |
-
var color;
|
| 2215 |
-
if (arguments.length === 1) {
|
| 2216 |
-
color = Convert.hexToRGB(arguments[0]);
|
| 2217 |
-
} else {
|
| 2218 |
-
color = {
|
| 2219 |
-
r: arguments[0],
|
| 2220 |
-
g: arguments[1],
|
| 2221 |
-
b: arguments[2]
|
| 2222 |
-
};
|
| 2223 |
-
}
|
| 2224 |
-
return this.process("fillColor", function(rgba) {
|
| 2225 |
-
rgba.r = color.r;
|
| 2226 |
-
rgba.g = color.g;
|
| 2227 |
-
rgba.b = color.b;
|
| 2228 |
-
rgba.a = 255;
|
| 2229 |
-
return rgba;
|
| 2230 |
-
});
|
| 2231 |
-
});
|
| 2232 |
-
|
| 2233 |
-
Filter.register("brightness", function(adjust) {
|
| 2234 |
-
adjust = Math.floor(255 * (adjust / 100));
|
| 2235 |
-
return this.process("brightness", function(rgba) {
|
| 2236 |
-
rgba.r += adjust;
|
| 2237 |
-
rgba.g += adjust;
|
| 2238 |
-
rgba.b += adjust;
|
| 2239 |
-
return rgba;
|
| 2240 |
-
});
|
| 2241 |
-
});
|
| 2242 |
-
|
| 2243 |
-
Filter.register("saturation", function(adjust) {
|
| 2244 |
-
adjust *= -0.01;
|
| 2245 |
-
return this.process("saturation", function(rgba) {
|
| 2246 |
-
var max;
|
| 2247 |
-
max = Math.max(rgba.r, rgba.g, rgba.b);
|
| 2248 |
-
if (rgba.r !== max) {
|
| 2249 |
-
rgba.r += (max - rgba.r) * adjust;
|
| 2250 |
-
}
|
| 2251 |
-
if (rgba.g !== max) {
|
| 2252 |
-
rgba.g += (max - rgba.g) * adjust;
|
| 2253 |
-
}
|
| 2254 |
-
if (rgba.b !== max) {
|
| 2255 |
-
rgba.b += (max - rgba.b) * adjust;
|
| 2256 |
-
}
|
| 2257 |
-
return rgba;
|
| 2258 |
-
});
|
| 2259 |
-
});
|
| 2260 |
-
|
| 2261 |
-
Filter.register("vibrance", function(adjust) {
|
| 2262 |
-
adjust *= -1;
|
| 2263 |
-
return this.process("vibrance", function(rgba) {
|
| 2264 |
-
var amt, avg, max;
|
| 2265 |
-
max = Math.max(rgba.r, rgba.g, rgba.b);
|
| 2266 |
-
avg = (rgba.r + rgba.g + rgba.b) / 3;
|
| 2267 |
-
amt = ((Math.abs(max - avg) * 2 / 255) * adjust) / 100;
|
| 2268 |
-
if (rgba.r !== max) {
|
| 2269 |
-
rgba.r += (max - rgba.r) * amt;
|
| 2270 |
-
}
|
| 2271 |
-
if (rgba.g !== max) {
|
| 2272 |
-
rgba.g += (max - rgba.g) * amt;
|
| 2273 |
-
}
|
| 2274 |
-
if (rgba.b !== max) {
|
| 2275 |
-
rgba.b += (max - rgba.b) * amt;
|
| 2276 |
-
}
|
| 2277 |
-
return rgba;
|
| 2278 |
-
});
|
| 2279 |
-
});
|
| 2280 |
-
|
| 2281 |
-
Filter.register("greyscale", function(adjust) {
|
| 2282 |
-
return this.process("greyscale", function(rgba) {
|
| 2283 |
-
var avg;
|
| 2284 |
-
avg = Calculate.luminance(rgba);
|
| 2285 |
-
rgba.r = avg;
|
| 2286 |
-
rgba.g = avg;
|
| 2287 |
-
rgba.b = avg;
|
| 2288 |
-
return rgba;
|
| 2289 |
-
});
|
| 2290 |
-
});
|
| 2291 |
-
|
| 2292 |
-
Filter.register("contrast", function(adjust) {
|
| 2293 |
-
adjust = Math.pow((adjust + 100) / 100, 2);
|
| 2294 |
-
return this.process("contrast", function(rgba) {
|
| 2295 |
-
rgba.r /= 255;
|
| 2296 |
-
rgba.r -= 0.5;
|
| 2297 |
-
rgba.r *= adjust;
|
| 2298 |
-
rgba.r += 0.5;
|
| 2299 |
-
rgba.r *= 255;
|
| 2300 |
-
rgba.g /= 255;
|
| 2301 |
-
rgba.g -= 0.5;
|
| 2302 |
-
rgba.g *= adjust;
|
| 2303 |
-
rgba.g += 0.5;
|
| 2304 |
-
rgba.g *= 255;
|
| 2305 |
-
rgba.b /= 255;
|
| 2306 |
-
rgba.b -= 0.5;
|
| 2307 |
-
rgba.b *= adjust;
|
| 2308 |
-
rgba.b += 0.5;
|
| 2309 |
-
rgba.b *= 255;
|
| 2310 |
-
return rgba;
|
| 2311 |
-
});
|
| 2312 |
-
});
|
| 2313 |
-
|
| 2314 |
-
Filter.register("hue", function(adjust) {
|
| 2315 |
-
return this.process("hue", function(rgba) {
|
| 2316 |
-
var b, g, h, hsv, r, _ref;
|
| 2317 |
-
hsv = Convert.rgbToHSV(rgba.r, rgba.g, rgba.b);
|
| 2318 |
-
h = hsv.h * 100;
|
| 2319 |
-
h += Math.abs(adjust);
|
| 2320 |
-
h = h % 100;
|
| 2321 |
-
h /= 100;
|
| 2322 |
-
hsv.h = h;
|
| 2323 |
-
_ref = Convert.hsvToRGB(hsv.h, hsv.s, hsv.v), r = _ref.r, g = _ref.g, b = _ref.b;
|
| 2324 |
-
rgba.r = r;
|
| 2325 |
-
rgba.g = g;
|
| 2326 |
-
rgba.b = b;
|
| 2327 |
-
return rgba;
|
| 2328 |
-
});
|
| 2329 |
-
});
|
| 2330 |
-
|
| 2331 |
-
Filter.register("colorize", function() {
|
| 2332 |
-
var level, rgb;
|
| 2333 |
-
if (arguments.length === 2) {
|
| 2334 |
-
rgb = Convert.hexToRGB(arguments[0]);
|
| 2335 |
-
level = arguments[1];
|
| 2336 |
-
} else if (arguments.length === 4) {
|
| 2337 |
-
rgb = {
|
| 2338 |
-
r: arguments[0],
|
| 2339 |
-
g: arguments[1],
|
| 2340 |
-
b: arguments[2]
|
| 2341 |
-
};
|
| 2342 |
-
level = arguments[3];
|
| 2343 |
-
}
|
| 2344 |
-
return this.process("colorize", function(rgba) {
|
| 2345 |
-
rgba.r -= (rgba.r - rgb.r) * (level / 100);
|
| 2346 |
-
rgba.g -= (rgba.g - rgb.g) * (level / 100);
|
| 2347 |
-
rgba.b -= (rgba.b - rgb.b) * (level / 100);
|
| 2348 |
-
return rgba;
|
| 2349 |
-
});
|
| 2350 |
-
});
|
| 2351 |
-
|
| 2352 |
-
Filter.register("invert", function() {
|
| 2353 |
-
return this.process("invert", function(rgba) {
|
| 2354 |
-
rgba.r = 255 - rgba.r;
|
| 2355 |
-
rgba.g = 255 - rgba.g;
|
| 2356 |
-
rgba.b = 255 - rgba.b;
|
| 2357 |
-
return rgba;
|
| 2358 |
-
});
|
| 2359 |
-
});
|
| 2360 |
-
|
| 2361 |
-
Filter.register("sepia", function(adjust) {
|
| 2362 |
-
if (adjust == null) {
|
| 2363 |
-
adjust = 100;
|
| 2364 |
-
}
|
| 2365 |
-
adjust /= 100;
|
| 2366 |
-
return this.process("sepia", function(rgba) {
|
| 2367 |
-
rgba.r = Math.min(255, (rgba.r * (1 - (0.607 * adjust))) + (rgba.g * (0.769 * adjust)) + (rgba.b * (0.189 * adjust)));
|
| 2368 |
-
rgba.g = Math.min(255, (rgba.r * (0.349 * adjust)) + (rgba.g * (1 - (0.314 * adjust))) + (rgba.b * (0.168 * adjust)));
|
| 2369 |
-
rgba.b = Math.min(255, (rgba.r * (0.272 * adjust)) + (rgba.g * (0.534 * adjust)) + (rgba.b * (1 - (0.869 * adjust))));
|
| 2370 |
-
return rgba;
|
| 2371 |
-
});
|
| 2372 |
-
});
|
| 2373 |
-
|
| 2374 |
-
Filter.register("gamma", function(adjust) {
|
| 2375 |
-
return this.process("gamma", function(rgba) {
|
| 2376 |
-
rgba.r = Math.pow(rgba.r / 255, adjust) * 255;
|
| 2377 |
-
rgba.g = Math.pow(rgba.g / 255, adjust) * 255;
|
| 2378 |
-
rgba.b = Math.pow(rgba.b / 255, adjust) * 255;
|
| 2379 |
-
return rgba;
|
| 2380 |
-
});
|
| 2381 |
-
});
|
| 2382 |
-
|
| 2383 |
-
Filter.register("noise", function(adjust) {
|
| 2384 |
-
adjust = Math.abs(adjust) * 2.55;
|
| 2385 |
-
return this.process("noise", function(rgba) {
|
| 2386 |
-
var rand;
|
| 2387 |
-
rand = Calculate.randomRange(adjust * -1, adjust);
|
| 2388 |
-
rgba.r += rand;
|
| 2389 |
-
rgba.g += rand;
|
| 2390 |
-
rgba.b += rand;
|
| 2391 |
-
return rgba;
|
| 2392 |
-
});
|
| 2393 |
-
});
|
| 2394 |
-
|
| 2395 |
-
Filter.register("clip", function(adjust) {
|
| 2396 |
-
adjust = Math.abs(adjust) * 2.55;
|
| 2397 |
-
return this.process("clip", function(rgba) {
|
| 2398 |
-
if (rgba.r > 255 - adjust) {
|
| 2399 |
-
rgba.r = 255;
|
| 2400 |
-
} else if (rgba.r < adjust) {
|
| 2401 |
-
rgba.r = 0;
|
| 2402 |
-
}
|
| 2403 |
-
if (rgba.g > 255 - adjust) {
|
| 2404 |
-
rgba.g = 255;
|
| 2405 |
-
} else if (rgba.g < adjust) {
|
| 2406 |
-
rgba.g = 0;
|
| 2407 |
-
}
|
| 2408 |
-
if (rgba.b > 255 - adjust) {
|
| 2409 |
-
rgba.b = 255;
|
| 2410 |
-
} else if (rgba.b < adjust) {
|
| 2411 |
-
rgba.b = 0;
|
| 2412 |
-
}
|
| 2413 |
-
return rgba;
|
| 2414 |
-
});
|
| 2415 |
-
});
|
| 2416 |
-
|
| 2417 |
-
Filter.register("channels", function(options) {
|
| 2418 |
-
var chan, value;
|
| 2419 |
-
if (typeof options !== "object") {
|
| 2420 |
-
return this;
|
| 2421 |
-
}
|
| 2422 |
-
for (chan in options) {
|
| 2423 |
-
if (!__hasProp.call(options, chan)) continue;
|
| 2424 |
-
value = options[chan];
|
| 2425 |
-
if (value === 0) {
|
| 2426 |
-
delete options[chan];
|
| 2427 |
-
continue;
|
| 2428 |
-
}
|
| 2429 |
-
options[chan] /= 100;
|
| 2430 |
-
}
|
| 2431 |
-
if (options.length === 0) {
|
| 2432 |
-
return this;
|
| 2433 |
-
}
|
| 2434 |
-
return this.process("channels", function(rgba) {
|
| 2435 |
-
if (options.red != null) {
|
| 2436 |
-
if (options.red > 0) {
|
| 2437 |
-
rgba.r += (255 - rgba.r) * options.red;
|
| 2438 |
-
} else {
|
| 2439 |
-
rgba.r -= rgba.r * Math.abs(options.red);
|
| 2440 |
-
}
|
| 2441 |
-
}
|
| 2442 |
-
if (options.green != null) {
|
| 2443 |
-
if (options.green > 0) {
|
| 2444 |
-
rgba.g += (255 - rgba.g) * options.green;
|
| 2445 |
-
} else {
|
| 2446 |
-
rgba.g -= rgba.g * Math.abs(options.green);
|
| 2447 |
-
}
|
| 2448 |
-
}
|
| 2449 |
-
if (options.blue != null) {
|
| 2450 |
-
if (options.blue > 0) {
|
| 2451 |
-
rgba.b += (255 - rgba.b) * options.blue;
|
| 2452 |
-
} else {
|
| 2453 |
-
rgba.b -= rgba.b * Math.abs(options.blue);
|
| 2454 |
-
}
|
| 2455 |
-
}
|
| 2456 |
-
return rgba;
|
| 2457 |
-
});
|
| 2458 |
-
});
|
| 2459 |
-
|
| 2460 |
-
Filter.register("curves", function() {
|
| 2461 |
-
var algo, bezier, chans, cps, end, i, last, start, _i, _j, _ref, _ref1;
|
| 2462 |
-
chans = arguments[0], cps = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
| 2463 |
-
last = cps[cps.length - 1];
|
| 2464 |
-
if (typeof last === "function") {
|
| 2465 |
-
algo = last;
|
| 2466 |
-
cps.pop();
|
| 2467 |
-
} else if (typeof last === "string") {
|
| 2468 |
-
algo = Calculate[last];
|
| 2469 |
-
cps.pop();
|
| 2470 |
-
} else {
|
| 2471 |
-
algo = Calculate.bezier;
|
| 2472 |
-
}
|
| 2473 |
-
if (typeof chans === "string") {
|
| 2474 |
-
chans = chans.split("");
|
| 2475 |
-
}
|
| 2476 |
-
if (chans[0] === "v") {
|
| 2477 |
-
chans = ['r', 'g', 'b'];
|
| 2478 |
-
}
|
| 2479 |
-
if (cps.length < 2) {
|
| 2480 |
-
throw "Invalid number of arguments to curves filter";
|
| 2481 |
-
}
|
| 2482 |
-
bezier = algo(cps, 0, 255);
|
| 2483 |
-
start = cps[0];
|
| 2484 |
-
if (start[0] > 0) {
|
| 2485 |
-
for (i = _i = 0, _ref = start[0]; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2486 |
-
bezier[i] = start[1];
|
| 2487 |
-
}
|
| 2488 |
-
}
|
| 2489 |
-
end = cps[cps.length - 1];
|
| 2490 |
-
if (end[0] < 255) {
|
| 2491 |
-
for (i = _j = _ref1 = end[0]; _ref1 <= 255 ? _j <= 255 : _j >= 255; i = _ref1 <= 255 ? ++_j : --_j) {
|
| 2492 |
-
bezier[i] = end[1];
|
| 2493 |
-
}
|
| 2494 |
-
}
|
| 2495 |
-
return this.process("curves", function(rgba) {
|
| 2496 |
-
var _k, _ref2;
|
| 2497 |
-
for (i = _k = 0, _ref2 = chans.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
|
| 2498 |
-
rgba[chans[i]] = bezier[rgba[chans[i]]];
|
| 2499 |
-
}
|
| 2500 |
-
return rgba;
|
| 2501 |
-
});
|
| 2502 |
-
});
|
| 2503 |
-
|
| 2504 |
-
Filter.register("exposure", function(adjust) {
|
| 2505 |
-
var ctrl1, ctrl2, p;
|
| 2506 |
-
p = Math.abs(adjust) / 100;
|
| 2507 |
-
ctrl1 = [0, 255 * p];
|
| 2508 |
-
ctrl2 = [255 - (255 * p), 255];
|
| 2509 |
-
if (adjust < 0) {
|
| 2510 |
-
ctrl1 = ctrl1.reverse();
|
| 2511 |
-
ctrl2 = ctrl2.reverse();
|
| 2512 |
-
}
|
| 2513 |
-
return this.curves('rgb', [0, 0], ctrl1, ctrl2, [255, 255]);
|
| 2514 |
-
});
|
| 2515 |
-
|
| 2516 |
-
Caman.Plugin.register("crop", function(width, height, x, y) {
|
| 2517 |
-
var canvas, ctx;
|
| 2518 |
-
if (x == null) {
|
| 2519 |
-
x = 0;
|
| 2520 |
-
}
|
| 2521 |
-
if (y == null) {
|
| 2522 |
-
y = 0;
|
| 2523 |
-
}
|
| 2524 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 2525 |
-
canvas = new Canvas(width, height);
|
| 2526 |
-
} else {
|
| 2527 |
-
canvas = document.createElement('canvas');
|
| 2528 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 2529 |
-
canvas.width = width;
|
| 2530 |
-
canvas.height = height;
|
| 2531 |
-
}
|
| 2532 |
-
ctx = canvas.getContext('2d');
|
| 2533 |
-
ctx.drawImage(this.canvas, x, y, width, height, 0, 0, width, height);
|
| 2534 |
-
this.cropCoordinates = {
|
| 2535 |
-
x: x,
|
| 2536 |
-
y: y
|
| 2537 |
-
};
|
| 2538 |
-
this.cropped = true;
|
| 2539 |
-
return this.replaceCanvas(canvas);
|
| 2540 |
-
});
|
| 2541 |
-
|
| 2542 |
-
Caman.Plugin.register("resize", function(newDims) {
|
| 2543 |
-
var canvas, ctx;
|
| 2544 |
-
if (newDims == null) {
|
| 2545 |
-
newDims = null;
|
| 2546 |
-
}
|
| 2547 |
-
if (newDims === null || ((newDims.width == null) && (newDims.height == null))) {
|
| 2548 |
-
Log.error("Invalid or missing dimensions given for resize");
|
| 2549 |
-
return;
|
| 2550 |
-
}
|
| 2551 |
-
if (newDims.width == null) {
|
| 2552 |
-
newDims.width = this.canvas.width * newDims.height / this.canvas.height;
|
| 2553 |
-
} else if (newDims.height == null) {
|
| 2554 |
-
newDims.height = this.canvas.height * newDims.width / this.canvas.width;
|
| 2555 |
-
}
|
| 2556 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 2557 |
-
canvas = new Canvas(newDims.width, newDims.height);
|
| 2558 |
-
} else {
|
| 2559 |
-
canvas = document.createElement('canvas');
|
| 2560 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 2561 |
-
canvas.width = newDims.width;
|
| 2562 |
-
canvas.height = newDims.height;
|
| 2563 |
-
}
|
| 2564 |
-
ctx = canvas.getContext('2d');
|
| 2565 |
-
ctx.drawImage(this.canvas, 0, 0, this.canvas.width, this.canvas.height, 0, 0, newDims.width, newDims.height);
|
| 2566 |
-
this.resized = true;
|
| 2567 |
-
return this.replaceCanvas(canvas);
|
| 2568 |
-
});
|
| 2569 |
-
|
| 2570 |
-
Caman.Filter.register("crop", function() {
|
| 2571 |
-
return this.processPlugin("crop", Array.prototype.slice.call(arguments, 0));
|
| 2572 |
-
});
|
| 2573 |
-
|
| 2574 |
-
Caman.Filter.register("resize", function() {
|
| 2575 |
-
return this.processPlugin("resize", Array.prototype.slice.call(arguments, 0));
|
| 2576 |
-
});
|
| 2577 |
-
|
| 2578 |
-
Caman.Filter.register("boxBlur", function() {
|
| 2579 |
-
return this.processKernel("Box Blur", [1, 1, 1, 1, 1, 1, 1, 1, 1]);
|
| 2580 |
-
});
|
| 2581 |
-
|
| 2582 |
-
Caman.Filter.register("heavyRadialBlur", function() {
|
| 2583 |
-
return this.processKernel("Heavy Radial Blur", [0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0]);
|
| 2584 |
-
});
|
| 2585 |
-
|
| 2586 |
-
Caman.Filter.register("gaussianBlur", function() {
|
| 2587 |
-
return this.processKernel("Gaussian Blur", [1, 4, 6, 4, 1, 4, 16, 24, 16, 4, 6, 24, 36, 24, 6, 4, 16, 24, 16, 4, 1, 4, 6, 4, 1]);
|
| 2588 |
-
});
|
| 2589 |
-
|
| 2590 |
-
Caman.Filter.register("motionBlur", function(degrees) {
|
| 2591 |
-
var kernel;
|
| 2592 |
-
if (degrees === 0 || degrees === 180) {
|
| 2593 |
-
kernel = [0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0];
|
| 2594 |
-
} else if ((degrees > 0 && degrees < 90) || (degrees > 180 && degrees < 270)) {
|
| 2595 |
-
kernel = [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0];
|
| 2596 |
-
} else if (degrees === 90 || degrees === 270) {
|
| 2597 |
-
kernel = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
| 2598 |
-
} else {
|
| 2599 |
-
kernel = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
|
| 2600 |
-
}
|
| 2601 |
-
return this.processKernel("Motion Blur", kernel);
|
| 2602 |
-
});
|
| 2603 |
-
|
| 2604 |
-
Caman.Filter.register("sharpen", function(amt) {
|
| 2605 |
-
if (amt == null) {
|
| 2606 |
-
amt = 100;
|
| 2607 |
-
}
|
| 2608 |
-
amt /= 100;
|
| 2609 |
-
return this.processKernel("Sharpen", [0, -amt, 0, -amt, 4 * amt + 1, -amt, 0, -amt, 0]);
|
| 2610 |
-
});
|
| 2611 |
-
|
| 2612 |
-
vignetteFilters = {
|
| 2613 |
-
brightness: function(rgba, amt, opts) {
|
| 2614 |
-
rgba.r = rgba.r - (rgba.r * amt * opts.strength);
|
| 2615 |
-
rgba.g = rgba.g - (rgba.g * amt * opts.strength);
|
| 2616 |
-
rgba.b = rgba.b - (rgba.b * amt * opts.strength);
|
| 2617 |
-
return rgba;
|
| 2618 |
-
},
|
| 2619 |
-
gamma: function(rgba, amt, opts) {
|
| 2620 |
-
rgba.r = Math.pow(rgba.r / 255, Math.max(10 * amt * opts.strength, 1)) * 255;
|
| 2621 |
-
rgba.g = Math.pow(rgba.g / 255, Math.max(10 * amt * opts.strength, 1)) * 255;
|
| 2622 |
-
rgba.b = Math.pow(rgba.b / 255, Math.max(10 * amt * opts.strength, 1)) * 255;
|
| 2623 |
-
return rgba;
|
| 2624 |
-
},
|
| 2625 |
-
colorize: function(rgba, amt, opts) {
|
| 2626 |
-
rgba.r -= (rgba.r - opts.color.r) * amt;
|
| 2627 |
-
rgba.g -= (rgba.g - opts.color.g) * amt;
|
| 2628 |
-
rgba.b -= (rgba.b - opts.color.b) * amt;
|
| 2629 |
-
return rgba;
|
| 2630 |
-
}
|
| 2631 |
-
};
|
| 2632 |
-
|
| 2633 |
-
Filter.register("vignette", function(size, strength) {
|
| 2634 |
-
var bezier, center, end, start;
|
| 2635 |
-
if (strength == null) {
|
| 2636 |
-
strength = 60;
|
| 2637 |
-
}
|
| 2638 |
-
if (typeof size === "string" && size.substr(-1) === "%") {
|
| 2639 |
-
if (this.dimensions.height > this.dimensions.width) {
|
| 2640 |
-
size = this.dimensions.width * (parseInt(size.substr(0, size.length - 1), 10) / 100);
|
| 2641 |
-
} else {
|
| 2642 |
-
size = this.dimensions.height * (parseInt(size.substr(0, size.length - 1), 10) / 100);
|
| 2643 |
-
}
|
| 2644 |
-
}
|
| 2645 |
-
strength /= 100;
|
| 2646 |
-
center = [this.dimensions.width / 2, this.dimensions.height / 2];
|
| 2647 |
-
start = Math.sqrt(Math.pow(center[0], 2) + Math.pow(center[1], 2));
|
| 2648 |
-
end = start - size;
|
| 2649 |
-
bezier = Calculate.bezier([0, 1], [30, 30], [70, 60], [100, 80]);
|
| 2650 |
-
return this.process("vignette", function(rgba) {
|
| 2651 |
-
var dist, div, loc;
|
| 2652 |
-
loc = rgba.locationXY();
|
| 2653 |
-
dist = Calculate.distance(loc.x, loc.y, center[0], center[1]);
|
| 2654 |
-
if (dist > end) {
|
| 2655 |
-
div = Math.max(1, (bezier[Math.round(((dist - end) / size) * 100)] / 10) * strength);
|
| 2656 |
-
rgba.r = Math.pow(rgba.r / 255, div) * 255;
|
| 2657 |
-
rgba.g = Math.pow(rgba.g / 255, div) * 255;
|
| 2658 |
-
rgba.b = Math.pow(rgba.b / 255, div) * 255;
|
| 2659 |
-
}
|
| 2660 |
-
return rgba;
|
| 2661 |
-
});
|
| 2662 |
-
});
|
| 2663 |
-
|
| 2664 |
-
Filter.register("rectangularVignette", function(opts) {
|
| 2665 |
-
var defaults, dim, percent, size, _i, _len, _ref;
|
| 2666 |
-
defaults = {
|
| 2667 |
-
strength: 50,
|
| 2668 |
-
cornerRadius: 0,
|
| 2669 |
-
method: 'brightness',
|
| 2670 |
-
color: {
|
| 2671 |
-
r: 0,
|
| 2672 |
-
g: 0,
|
| 2673 |
-
b: 0
|
| 2674 |
-
}
|
| 2675 |
-
};
|
| 2676 |
-
opts = Util.extend(defaults, opts);
|
| 2677 |
-
if (!opts.size) {
|
| 2678 |
-
return this;
|
| 2679 |
-
} else if (typeof opts.size === "string") {
|
| 2680 |
-
percent = parseInt(opts.size, 10) / 100;
|
| 2681 |
-
opts.size = {
|
| 2682 |
-
width: this.dimensions.width * percent,
|
| 2683 |
-
height: this.dimensions.height * percent
|
| 2684 |
-
};
|
| 2685 |
-
} else if (typeof opts.size === "object") {
|
| 2686 |
-
_ref = ["width", "height"];
|
| 2687 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 2688 |
-
dim = _ref[_i];
|
| 2689 |
-
if (typeof opts.size[dim] === "string") {
|
| 2690 |
-
opts.size[dim] = this.dimensions[dim] * (parseInt(opts.size[dim], 10) / 100);
|
| 2691 |
-
}
|
| 2692 |
-
}
|
| 2693 |
-
} else if (opts.size === "number") {
|
| 2694 |
-
size = opts.size;
|
| 2695 |
-
opts.size = {
|
| 2696 |
-
width: size,
|
| 2697 |
-
height: size
|
| 2698 |
-
};
|
| 2699 |
-
}
|
| 2700 |
-
if (typeof opts.cornerRadius === "string") {
|
| 2701 |
-
opts.cornerRadius = (opts.size.width / 2) * (parseInt(opts.cornerRadius, 10) / 100);
|
| 2702 |
-
}
|
| 2703 |
-
opts.strength /= 100;
|
| 2704 |
-
opts.size.width = Math.floor(opts.size.width);
|
| 2705 |
-
opts.size.height = Math.floor(opts.size.height);
|
| 2706 |
-
opts.image = {
|
| 2707 |
-
width: this.dimensions.width,
|
| 2708 |
-
height: this.dimensions.height
|
| 2709 |
-
};
|
| 2710 |
-
if (opts.method === "colorize" && typeof opts.color === "string") {
|
| 2711 |
-
opts.color = Convert.hexToRGB(opts.color);
|
| 2712 |
-
}
|
| 2713 |
-
opts.coords = {
|
| 2714 |
-
left: (this.dimensions.width - opts.size.width) / 2,
|
| 2715 |
-
right: this.dimensions.width - opts.coords.left,
|
| 2716 |
-
bottom: (this.dimensions.height - opts.size.height) / 2,
|
| 2717 |
-
top: this.dimensions.height - opts.coords.bottom
|
| 2718 |
-
};
|
| 2719 |
-
opts.corners = [
|
| 2720 |
-
{
|
| 2721 |
-
x: opts.coords.left + opts.cornerRadius,
|
| 2722 |
-
y: opts.coords.top - opts.cornerRadius
|
| 2723 |
-
}, {
|
| 2724 |
-
x: opts.coords.right - opts.cornerRadius,
|
| 2725 |
-
y: opts.coords.top - opts.cornerRadius
|
| 2726 |
-
}, {
|
| 2727 |
-
x: opts.coords.right - opts.cornerRadius,
|
| 2728 |
-
y: opts.coords.bottom + opts.cornerRadius
|
| 2729 |
-
}, {
|
| 2730 |
-
x: opts.coords.left + opts.cornerRadius,
|
| 2731 |
-
y: opts.coords.bottom + opts.cornerRadius
|
| 2732 |
-
}
|
| 2733 |
-
];
|
| 2734 |
-
opts.maxDist = Calculate.distance(0, 0, opts.corners[3].x, opts.corners[3].y) - opts.cornerRadius;
|
| 2735 |
-
return this.process("rectangularVignette", function(rgba) {
|
| 2736 |
-
var amt, loc, radialDist;
|
| 2737 |
-
loc = rgba.locationXY();
|
| 2738 |
-
if ((loc.x > opts.corners[0].x && loc.x < opts.corners[1].x) && (loc.y > opts.coords.bottom && loc.y < opts.coords.top)) {
|
| 2739 |
-
return rgba;
|
| 2740 |
-
}
|
| 2741 |
-
if ((loc.x > opts.coords.left && loc.x < opts.coords.right) && (loc.y > opts.corners[3].y && loc.y < opts.corners[2].y)) {
|
| 2742 |
-
return rgba;
|
| 2743 |
-
}
|
| 2744 |
-
if (loc.x > opts.corners[0].x && loc.x < opts.corners[1].x && loc.y > opts.coords.top) {
|
| 2745 |
-
amt = (loc.y - opts.coords.top) / opts.maxDist;
|
| 2746 |
-
} else if (loc.y > opts.corners[2].y && loc.y < opts.corners[1].y && loc.x > opts.coords.right) {
|
| 2747 |
-
amt = (loc.x - opts.coords.right) / opts.maxDist;
|
| 2748 |
-
} else if (loc.x > opts.corners[0].x && loc.x < opts.corners[1].x && loc.y < opts.coords.bottom) {
|
| 2749 |
-
amt = (opts.coords.bottom - loc.y) / opts.maxDist;
|
| 2750 |
-
} else if (loc.y > opts.corners[2].y && loc.y < opts.corners[1].y && loc.x < opts.coords.left) {
|
| 2751 |
-
amt = (opts.coords.left - loc.x) / opts.maxDist;
|
| 2752 |
-
} else if (loc.x <= opts.corners[0].x && loc.y >= opts.corners[0].y) {
|
| 2753 |
-
radialDist = Caman.distance(loc.x, loc.y, opts.corners[0].x, opts.corners[0].y);
|
| 2754 |
-
amt = (radialDist - opts.cornerRadius) / opts.maxDist;
|
| 2755 |
-
} else if (loc.x >= opts.corners[1].x && loc.y >= opts.corners[1].y) {
|
| 2756 |
-
radialDist = Caman.distance(loc.x, loc.y, opts.corners[1].x, opts.corners[1].y);
|
| 2757 |
-
amt = (radialDist - opts.cornerRadius) / opts.maxDist;
|
| 2758 |
-
} else if (loc.x >= opts.corners[2].x && loc.y <= opts.corners[2].y) {
|
| 2759 |
-
radialDist = Caman.distance(loc.x, loc.y, opts.corners[2].x, opts.corners[2].y);
|
| 2760 |
-
amt = (radialDist - opts.cornerRadius) / opts.maxDist;
|
| 2761 |
-
} else if (loc.x <= opts.corners[3].x && loc.y <= opts.corners[3].y) {
|
| 2762 |
-
radialDist = Caman.distance(loc.x, loc.y, opts.corners[3].x, opts.corners[3].y);
|
| 2763 |
-
amt = (radialDist - opts.cornerRadius) / opts.maxDist;
|
| 2764 |
-
}
|
| 2765 |
-
if (amt < 0) {
|
| 2766 |
-
return rgba;
|
| 2767 |
-
}
|
| 2768 |
-
return vignetteFilters[opts.method](rgba, amt, opts);
|
| 2769 |
-
});
|
| 2770 |
-
});
|
| 2771 |
-
|
| 2772 |
-
/*
|
| 2773 |
-
CompoundBlur - Blurring with varying radii for Canvas
|
| 2774 |
-
|
| 2775 |
-
Version: 0.1
|
| 2776 |
-
Author: Mario Klingemann
|
| 2777 |
-
Contact: mario@quasimondo.com
|
| 2778 |
-
Website: http://www.quasimondo.com/StackBlurForCanvas
|
| 2779 |
-
Twitter: @quasimondo
|
| 2780 |
-
Modified By: Ryan LeFevre (@meltingice)
|
| 2781 |
-
|
| 2782 |
-
In case you find this class useful - especially in commercial projects -
|
| 2783 |
-
I am not totally unhappy for a small donation to my PayPal account
|
| 2784 |
-
mario@quasimondo.de
|
| 2785 |
-
|
| 2786 |
-
Copyright (c) 2011 Mario Klingemann
|
| 2787 |
-
|
| 2788 |
-
Permission is hereby granted, free of charge, to any person
|
| 2789 |
-
obtaining a copy of this software and associated documentation
|
| 2790 |
-
files (the "Software"), to deal in the Software without
|
| 2791 |
-
restriction, including without limitation the rights to use,
|
| 2792 |
-
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 2793 |
-
copies of the Software, and to permit persons to whom the
|
| 2794 |
-
Software is furnished to do so, subject to the following
|
| 2795 |
-
conditions:
|
| 2796 |
-
|
| 2797 |
-
The above copyright notice and this permission notice shall be
|
| 2798 |
-
included in all copies or substantial portions of the Software.
|
| 2799 |
-
|
| 2800 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 2801 |
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
| 2802 |
-
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 2803 |
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
| 2804 |
-
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
| 2805 |
-
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
| 2806 |
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
| 2807 |
-
OTHER DEALINGS IN THE SOFTWARE.
|
| 2808 |
-
*/
|
| 2809 |
-
|
| 2810 |
-
|
| 2811 |
-
(function() {
|
| 2812 |
-
var BlurStack, getLinearGradientMap, getRadialGradientMap, mul_table, shg_table;
|
| 2813 |
-
mul_table = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];
|
| 2814 |
-
shg_table = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];
|
| 2815 |
-
getLinearGradientMap = function(width, height, centerX, centerY, angle, length, mirrored) {
|
| 2816 |
-
var cnv, context, gradient, x1, x2, y1, y2;
|
| 2817 |
-
cnv = typeof exports !== "undefined" && exports !== null ? new Canvas() : document.createElement('canvas');
|
| 2818 |
-
cnv.width = width;
|
| 2819 |
-
cnv.height = height;
|
| 2820 |
-
x1 = centerX + Math.cos(angle) * length * 0.5;
|
| 2821 |
-
y1 = centerY + Math.sin(angle) * length * 0.5;
|
| 2822 |
-
x2 = centerX - Math.cos(angle) * length * 0.5;
|
| 2823 |
-
y2 = centerY - Math.sin(angle) * length * 0.5;
|
| 2824 |
-
context = cnv.getContext("2d");
|
| 2825 |
-
gradient = context.createLinearGradient(x1, y1, x2, y2);
|
| 2826 |
-
if (!mirrored) {
|
| 2827 |
-
gradient.addColorStop(0, "white");
|
| 2828 |
-
gradient.addColorStop(1, "black");
|
| 2829 |
-
} else {
|
| 2830 |
-
gradient.addColorStop(0, "white");
|
| 2831 |
-
gradient.addColorStop(0.5, "black");
|
| 2832 |
-
gradient.addColorStop(1, "white");
|
| 2833 |
-
}
|
| 2834 |
-
context.fillStyle = gradient;
|
| 2835 |
-
context.fillRect(0, 0, width, height);
|
| 2836 |
-
return context.getImageData(0, 0, width, height);
|
| 2837 |
-
};
|
| 2838 |
-
getRadialGradientMap = function(width, height, centerX, centerY, radius1, radius2) {
|
| 2839 |
-
var cnv, context, gradient;
|
| 2840 |
-
cnv = typeof exports !== "undefined" && exports !== null ? new Canvas() : document.createElement('canvas');
|
| 2841 |
-
cnv.width = width;
|
| 2842 |
-
cnv.height = height;
|
| 2843 |
-
context = cnv.getContext("2d");
|
| 2844 |
-
gradient = context.createRadialGradient(centerX, centerY, radius1, centerX, centerY, radius2);
|
| 2845 |
-
gradient.addColorStop(1, "white");
|
| 2846 |
-
gradient.addColorStop(0, "black");
|
| 2847 |
-
context.fillStyle = gradient;
|
| 2848 |
-
context.fillRect(0, 0, width, height);
|
| 2849 |
-
return context.getImageData(0, 0, width, height);
|
| 2850 |
-
};
|
| 2851 |
-
BlurStack = function() {
|
| 2852 |
-
this.r = 0;
|
| 2853 |
-
this.g = 0;
|
| 2854 |
-
this.b = 0;
|
| 2855 |
-
this.a = 0;
|
| 2856 |
-
return this.next = null;
|
| 2857 |
-
};
|
| 2858 |
-
Caman.Plugin.register("compoundBlur", function(radiusData, radius, increaseFactor, blurLevels) {
|
| 2859 |
-
var b_in_sum, b_out_sum, b_sum, blend, currentIndex, div, g_in_sum, g_out_sum, g_sum, height, heightMinus1, i, iblend, idx, imagePixels, index, iradius, lookupValue, mul_sum, p, pb, pg, pixels, pr, r_in_sum, r_out_sum, r_sum, radiusPixels, radiusPlus1, rbs, shg_sum, stack, stackEnd, stackIn, stackOut, stackStart, steps, sumFactor, w4, wh, wh4, width, widthMinus1, x, y, yi, yp, yw, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
| 2860 |
-
width = this.dimensions.width;
|
| 2861 |
-
height = this.dimensions.height;
|
| 2862 |
-
imagePixels = this.pixelData;
|
| 2863 |
-
radiusPixels = radiusData.data;
|
| 2864 |
-
wh = width * height;
|
| 2865 |
-
wh4 = wh << 2;
|
| 2866 |
-
pixels = [];
|
| 2867 |
-
for (i = _i = 0; 0 <= wh4 ? _i < wh4 : _i > wh4; i = 0 <= wh4 ? ++_i : --_i) {
|
| 2868 |
-
pixels[i] = imagePixels[i];
|
| 2869 |
-
}
|
| 2870 |
-
currentIndex = 0;
|
| 2871 |
-
steps = blurLevels;
|
| 2872 |
-
blurLevels -= 1;
|
| 2873 |
-
while (steps-- >= 0) {
|
| 2874 |
-
iradius = (radius + 0.5) | 0;
|
| 2875 |
-
if (iradius === 0) {
|
| 2876 |
-
continue;
|
| 2877 |
-
}
|
| 2878 |
-
if (iradius > 256) {
|
| 2879 |
-
iradius = 256;
|
| 2880 |
-
}
|
| 2881 |
-
div = iradius + iradius + 1;
|
| 2882 |
-
w4 = width << 2;
|
| 2883 |
-
widthMinus1 = width - 1;
|
| 2884 |
-
heightMinus1 = height - 1;
|
| 2885 |
-
radiusPlus1 = iradius + 1;
|
| 2886 |
-
sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
|
| 2887 |
-
stackStart = new BlurStack();
|
| 2888 |
-
stackEnd = void 0;
|
| 2889 |
-
stack = stackStart;
|
| 2890 |
-
for (i = _j = 1; 1 <= div ? _j < div : _j > div; i = 1 <= div ? ++_j : --_j) {
|
| 2891 |
-
stack = stack.next = new BlurStack();
|
| 2892 |
-
if (i === radiusPlus1) {
|
| 2893 |
-
stackEnd = stack;
|
| 2894 |
-
}
|
| 2895 |
-
}
|
| 2896 |
-
stack.next = stackStart;
|
| 2897 |
-
stackIn = null;
|
| 2898 |
-
stackOut = null;
|
| 2899 |
-
yw = yi = 0;
|
| 2900 |
-
mul_sum = mul_table[iradius];
|
| 2901 |
-
shg_sum = shg_table[iradius];
|
| 2902 |
-
for (y = _k = 0; 0 <= height ? _k < height : _k > height; y = 0 <= height ? ++_k : --_k) {
|
| 2903 |
-
r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;
|
| 2904 |
-
r_out_sum = radiusPlus1 * (pr = pixels[yi]);
|
| 2905 |
-
g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
|
| 2906 |
-
b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
|
| 2907 |
-
r_sum += sumFactor * pr;
|
| 2908 |
-
g_sum += sumFactor * pg;
|
| 2909 |
-
b_sum += sumFactor * pb;
|
| 2910 |
-
stack = stackStart;
|
| 2911 |
-
for (i = _l = 0; 0 <= radiusPlus1 ? _l < radiusPlus1 : _l > radiusPlus1; i = 0 <= radiusPlus1 ? ++_l : --_l) {
|
| 2912 |
-
stack.r = pr;
|
| 2913 |
-
stack.g = pg;
|
| 2914 |
-
stack.b = pb;
|
| 2915 |
-
stack = stack.next;
|
| 2916 |
-
}
|
| 2917 |
-
for (i = _m = 1; 1 <= radiusPlus1 ? _m < radiusPlus1 : _m > radiusPlus1; i = 1 <= radiusPlus1 ? ++_m : --_m) {
|
| 2918 |
-
p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
|
| 2919 |
-
r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
|
| 2920 |
-
g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;
|
| 2921 |
-
b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;
|
| 2922 |
-
r_in_sum += pr;
|
| 2923 |
-
g_in_sum += pg;
|
| 2924 |
-
b_in_sum += pb;
|
| 2925 |
-
stack = stack.next;
|
| 2926 |
-
}
|
| 2927 |
-
stackIn = stackStart;
|
| 2928 |
-
stackOut = stackEnd;
|
| 2929 |
-
for (x = _n = 0; 0 <= width ? _n < width : _n > width; x = 0 <= width ? ++_n : --_n) {
|
| 2930 |
-
pixels[yi] = (r_sum * mul_sum) >> shg_sum;
|
| 2931 |
-
pixels[yi + 1] = (g_sum * mul_sum) >> shg_sum;
|
| 2932 |
-
pixels[yi + 2] = (b_sum * mul_sum) >> shg_sum;
|
| 2933 |
-
r_sum -= r_out_sum;
|
| 2934 |
-
g_sum -= g_out_sum;
|
| 2935 |
-
b_sum -= b_out_sum;
|
| 2936 |
-
r_out_sum -= stackIn.r;
|
| 2937 |
-
g_out_sum -= stackIn.g;
|
| 2938 |
-
b_out_sum -= stackIn.b;
|
| 2939 |
-
p = (yw + ((p = x + radiusPlus1) < widthMinus1 ? p : widthMinus1)) << 2;
|
| 2940 |
-
r_in_sum += (stackIn.r = pixels[p]);
|
| 2941 |
-
g_in_sum += (stackIn.g = pixels[p + 1]);
|
| 2942 |
-
b_in_sum += (stackIn.b = pixels[p + 2]);
|
| 2943 |
-
r_sum += r_in_sum;
|
| 2944 |
-
g_sum += g_in_sum;
|
| 2945 |
-
b_sum += b_in_sum;
|
| 2946 |
-
stackIn = stackIn.next;
|
| 2947 |
-
r_out_sum += (pr = stackOut.r);
|
| 2948 |
-
g_out_sum += (pg = stackOut.g);
|
| 2949 |
-
b_out_sum += (pb = stackOut.b);
|
| 2950 |
-
r_in_sum -= pr;
|
| 2951 |
-
g_in_sum -= pg;
|
| 2952 |
-
b_in_sum -= pb;
|
| 2953 |
-
stackOut = stackOut.next;
|
| 2954 |
-
yi += 4;
|
| 2955 |
-
}
|
| 2956 |
-
yw += width;
|
| 2957 |
-
}
|
| 2958 |
-
for (x = _o = 0; 0 <= width ? _o < width : _o > width; x = 0 <= width ? ++_o : --_o) {
|
| 2959 |
-
g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;
|
| 2960 |
-
yi = x << 2;
|
| 2961 |
-
r_out_sum = radiusPlus1 * (pr = pixels[yi]);
|
| 2962 |
-
g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
|
| 2963 |
-
b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
|
| 2964 |
-
r_sum += sumFactor * pr;
|
| 2965 |
-
g_sum += sumFactor * pg;
|
| 2966 |
-
b_sum += sumFactor * pb;
|
| 2967 |
-
stack = stackStart;
|
| 2968 |
-
for (i = _p = 0; 0 <= radiusPlus1 ? _p < radiusPlus1 : _p > radiusPlus1; i = 0 <= radiusPlus1 ? ++_p : --_p) {
|
| 2969 |
-
stack.r = pr;
|
| 2970 |
-
stack.g = pg;
|
| 2971 |
-
stack.b = pb;
|
| 2972 |
-
stack = stack.next;
|
| 2973 |
-
}
|
| 2974 |
-
yp = width;
|
| 2975 |
-
for (i = _q = 1; 1 <= radiusPlus1 ? _q < radiusPlus1 : _q > radiusPlus1; i = 1 <= radiusPlus1 ? ++_q : --_q) {
|
| 2976 |
-
yi = (yp + x) << 2;
|
| 2977 |
-
r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
|
| 2978 |
-
g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;
|
| 2979 |
-
b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;
|
| 2980 |
-
r_in_sum += pr;
|
| 2981 |
-
g_in_sum += pg;
|
| 2982 |
-
b_in_sum += pb;
|
| 2983 |
-
stack = stack.next;
|
| 2984 |
-
if (i < heightMinus1) {
|
| 2985 |
-
yp += width;
|
| 2986 |
-
}
|
| 2987 |
-
}
|
| 2988 |
-
yi = x;
|
| 2989 |
-
stackIn = stackStart;
|
| 2990 |
-
stackOut = stackEnd;
|
| 2991 |
-
for (y = _r = 0; 0 <= height ? _r < height : _r > height; y = 0 <= height ? ++_r : --_r) {
|
| 2992 |
-
p = yi << 2;
|
| 2993 |
-
pixels[p] = (r_sum * mul_sum) >> shg_sum;
|
| 2994 |
-
pixels[p + 1] = (g_sum * mul_sum) >> shg_sum;
|
| 2995 |
-
pixels[p + 2] = (b_sum * mul_sum) >> shg_sum;
|
| 2996 |
-
r_sum -= r_out_sum;
|
| 2997 |
-
g_sum -= g_out_sum;
|
| 2998 |
-
b_sum -= b_out_sum;
|
| 2999 |
-
r_out_sum -= stackIn.r;
|
| 3000 |
-
g_out_sum -= stackIn.g;
|
| 3001 |
-
b_out_sum -= stackIn.b;
|
| 3002 |
-
p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;
|
| 3003 |
-
r_sum += (r_in_sum += (stackIn.r = pixels[p]));
|
| 3004 |
-
g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));
|
| 3005 |
-
b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));
|
| 3006 |
-
stackIn = stackIn.next;
|
| 3007 |
-
r_out_sum += (pr = stackOut.r);
|
| 3008 |
-
g_out_sum += (pg = stackOut.g);
|
| 3009 |
-
b_out_sum += (pb = stackOut.b);
|
| 3010 |
-
r_in_sum -= pr;
|
| 3011 |
-
g_in_sum -= pg;
|
| 3012 |
-
b_in_sum -= pb;
|
| 3013 |
-
stackOut = stackOut.next;
|
| 3014 |
-
yi += width;
|
| 3015 |
-
}
|
| 3016 |
-
}
|
| 3017 |
-
radius *= increaseFactor;
|
| 3018 |
-
i = wh;
|
| 3019 |
-
while (--i > -1) {
|
| 3020 |
-
idx = i << 2;
|
| 3021 |
-
lookupValue = (radiusPixels[idx + 2] & 0xff) / 255.0 * blurLevels;
|
| 3022 |
-
index = lookupValue | 0;
|
| 3023 |
-
if (index === currentIndex) {
|
| 3024 |
-
blend = 256.0 * (lookupValue - (lookupValue | 0));
|
| 3025 |
-
iblend = 256 - blend;
|
| 3026 |
-
imagePixels[idx] = (imagePixels[idx] * iblend + pixels[idx] * blend) >> 8;
|
| 3027 |
-
imagePixels[idx + 1] = (imagePixels[idx + 1] * iblend + pixels[idx + 1] * blend) >> 8;
|
| 3028 |
-
imagePixels[idx + 2] = (imagePixels[idx + 2] * iblend + pixels[idx + 2] * blend) >> 8;
|
| 3029 |
-
} else if (index === currentIndex + 1) {
|
| 3030 |
-
imagePixels[idx] = pixels[idx];
|
| 3031 |
-
imagePixels[idx + 1] = pixels[idx + 1];
|
| 3032 |
-
imagePixels[idx + 2] = pixels[idx + 2];
|
| 3033 |
-
}
|
| 3034 |
-
}
|
| 3035 |
-
currentIndex++;
|
| 3036 |
-
}
|
| 3037 |
-
return this;
|
| 3038 |
-
});
|
| 3039 |
-
Caman.Filter.register("tiltShift", function(opts) {
|
| 3040 |
-
var defaults, gradient;
|
| 3041 |
-
defaults = {
|
| 3042 |
-
center: {
|
| 3043 |
-
x: this.dimensions.width / 2,
|
| 3044 |
-
y: this.dimensions.height / 2
|
| 3045 |
-
},
|
| 3046 |
-
angle: 45,
|
| 3047 |
-
focusWidth: 200,
|
| 3048 |
-
startRadius: 3,
|
| 3049 |
-
radiusFactor: 1.5,
|
| 3050 |
-
steps: 3
|
| 3051 |
-
};
|
| 3052 |
-
opts = Util.extend(defaults, opts);
|
| 3053 |
-
opts.angle *= Math.PI / 180;
|
| 3054 |
-
gradient = getLinearGradientMap(this.dimensions.width, this.dimensions.height, opts.center.x, opts.center.y, opts.angle, opts.focusWidth, true);
|
| 3055 |
-
return this.processPlugin("compoundBlur", [gradient, opts.startRadius, opts.radiusFactor, opts.steps]);
|
| 3056 |
-
});
|
| 3057 |
-
return Caman.Filter.register("radialBlur", function(opts) {
|
| 3058 |
-
var defaults, gradient, radius1, radius2;
|
| 3059 |
-
defaults = {
|
| 3060 |
-
size: 50,
|
| 3061 |
-
center: {
|
| 3062 |
-
x: this.dimensions.width / 2,
|
| 3063 |
-
y: this.dimensions.height / 2
|
| 3064 |
-
},
|
| 3065 |
-
startRadius: 3,
|
| 3066 |
-
radiusFactor: 1.5,
|
| 3067 |
-
steps: 3,
|
| 3068 |
-
radius: null
|
| 3069 |
-
};
|
| 3070 |
-
opts = Util.extend(defaults, opts);
|
| 3071 |
-
if (!opts.radius) {
|
| 3072 |
-
opts.radius = this.dimensions.width < this.dimensions.height ? this.dimensions.height : this.dimensions.width;
|
| 3073 |
-
}
|
| 3074 |
-
radius1 = (opts.radius / 2) - opts.size;
|
| 3075 |
-
radius2 = opts.radius / 2;
|
| 3076 |
-
gradient = getRadialGradientMap(this.dimensions.width, this.dimensions.height, opts.center.x, opts.center.y, radius1, radius2);
|
| 3077 |
-
return this.processPlugin("compoundBlur", [gradient, opts.startRadius, opts.radiusFactor, opts.steps]);
|
| 3078 |
-
});
|
| 3079 |
-
})();
|
| 3080 |
-
|
| 3081 |
-
Caman.Filter.register("edgeEnhance", function() {
|
| 3082 |
-
return this.processKernel("Edge Enhance", [0, 0, 0, -1, 1, 0, 0, 0, 0]);
|
| 3083 |
-
});
|
| 3084 |
-
|
| 3085 |
-
Caman.Filter.register("edgeDetect", function() {
|
| 3086 |
-
return this.processKernel("Edge Detect", [-1, -1, -1, -1, 8, -1, -1, -1, -1]);
|
| 3087 |
-
});
|
| 3088 |
-
|
| 3089 |
-
Caman.Filter.register("emboss", function() {
|
| 3090 |
-
return this.processKernel("Emboss", [-2, -1, 0, -1, 1, 1, 0, 1, 2]);
|
| 3091 |
-
});
|
| 3092 |
-
|
| 3093 |
-
Caman.Filter.register("posterize", function(adjust) {
|
| 3094 |
-
var numOfAreas, numOfValues;
|
| 3095 |
-
numOfAreas = 256 / adjust;
|
| 3096 |
-
numOfValues = 255 / (adjust - 1);
|
| 3097 |
-
return this.process("posterize", function(rgba) {
|
| 3098 |
-
rgba.r = Math.floor(Math.floor(rgba.r / numOfAreas) * numOfValues);
|
| 3099 |
-
rgba.g = Math.floor(Math.floor(rgba.g / numOfAreas) * numOfValues);
|
| 3100 |
-
rgba.b = Math.floor(Math.floor(rgba.b / numOfAreas) * numOfValues);
|
| 3101 |
-
return rgba;
|
| 3102 |
-
});
|
| 3103 |
-
});
|
| 3104 |
-
|
| 3105 |
-
Caman.Filter.register("vintage", function(vignette) {
|
| 3106 |
-
if (vignette == null) {
|
| 3107 |
-
vignette = true;
|
| 3108 |
-
}
|
| 3109 |
-
this.greyscale();
|
| 3110 |
-
this.contrast(5);
|
| 3111 |
-
this.noise(3);
|
| 3112 |
-
this.sepia(100);
|
| 3113 |
-
this.channels({
|
| 3114 |
-
red: 8,
|
| 3115 |
-
blue: 2,
|
| 3116 |
-
green: 4
|
| 3117 |
-
});
|
| 3118 |
-
this.gamma(0.87);
|
| 3119 |
-
if (vignette) {
|
| 3120 |
-
return this.vignette("40%", 30);
|
| 3121 |
-
}
|
| 3122 |
-
});
|
| 3123 |
-
|
| 3124 |
-
Caman.Filter.register("lomo", function(vignette) {
|
| 3125 |
-
if (vignette == null) {
|
| 3126 |
-
vignette = true;
|
| 3127 |
-
}
|
| 3128 |
-
this.brightness(15);
|
| 3129 |
-
this.exposure(15);
|
| 3130 |
-
this.curves('rgb', [0, 0], [200, 0], [155, 255], [255, 255]);
|
| 3131 |
-
this.saturation(-20);
|
| 3132 |
-
this.gamma(1.8);
|
| 3133 |
-
if (vignette) {
|
| 3134 |
-
this.vignette("50%", 60);
|
| 3135 |
-
}
|
| 3136 |
-
return this.brightness(5);
|
| 3137 |
-
});
|
| 3138 |
-
|
| 3139 |
-
Caman.Filter.register("clarity", function(grey) {
|
| 3140 |
-
if (grey == null) {
|
| 3141 |
-
grey = false;
|
| 3142 |
-
}
|
| 3143 |
-
this.vibrance(20);
|
| 3144 |
-
this.curves('rgb', [5, 0], [130, 150], [190, 220], [250, 255]);
|
| 3145 |
-
this.sharpen(15);
|
| 3146 |
-
this.vignette("45%", 20);
|
| 3147 |
-
if (grey) {
|
| 3148 |
-
this.greyscale();
|
| 3149 |
-
this.contrast(4);
|
| 3150 |
-
}
|
| 3151 |
-
return this;
|
| 3152 |
-
});
|
| 3153 |
-
|
| 3154 |
-
Caman.Filter.register("sinCity", function() {
|
| 3155 |
-
this.contrast(100);
|
| 3156 |
-
this.brightness(15);
|
| 3157 |
-
this.exposure(10);
|
| 3158 |
-
this.posterize(80);
|
| 3159 |
-
this.clip(30);
|
| 3160 |
-
return this.greyscale();
|
| 3161 |
-
});
|
| 3162 |
-
|
| 3163 |
-
Caman.Filter.register("sunrise", function() {
|
| 3164 |
-
this.exposure(3.5);
|
| 3165 |
-
this.saturation(-5);
|
| 3166 |
-
this.vibrance(50);
|
| 3167 |
-
this.sepia(60);
|
| 3168 |
-
this.colorize("#e87b22", 10);
|
| 3169 |
-
this.channels({
|
| 3170 |
-
red: 8,
|
| 3171 |
-
blue: 8
|
| 3172 |
-
});
|
| 3173 |
-
this.contrast(5);
|
| 3174 |
-
this.gamma(1.2);
|
| 3175 |
-
return this.vignette("55%", 25);
|
| 3176 |
-
});
|
| 3177 |
-
|
| 3178 |
-
Caman.Filter.register("crossProcess", function() {
|
| 3179 |
-
this.exposure(5);
|
| 3180 |
-
this.colorize("#e87b22", 4);
|
| 3181 |
-
this.sepia(20);
|
| 3182 |
-
this.channels({
|
| 3183 |
-
blue: 8,
|
| 3184 |
-
red: 3
|
| 3185 |
-
});
|
| 3186 |
-
this.curves('b', [0, 0], [100, 150], [180, 180], [255, 255]);
|
| 3187 |
-
this.contrast(15);
|
| 3188 |
-
this.vibrance(75);
|
| 3189 |
-
return this.gamma(1.6);
|
| 3190 |
-
});
|
| 3191 |
-
|
| 3192 |
-
Caman.Filter.register("orangePeel", function() {
|
| 3193 |
-
this.curves('rgb', [0, 0], [100, 50], [140, 200], [255, 255]);
|
| 3194 |
-
this.vibrance(-30);
|
| 3195 |
-
this.saturation(-30);
|
| 3196 |
-
this.colorize('#ff9000', 30);
|
| 3197 |
-
this.contrast(-5);
|
| 3198 |
-
return this.gamma(1.4);
|
| 3199 |
-
});
|
| 3200 |
-
|
| 3201 |
-
Caman.Filter.register("love", function() {
|
| 3202 |
-
this.brightness(5);
|
| 3203 |
-
this.exposure(8);
|
| 3204 |
-
this.contrast(4);
|
| 3205 |
-
this.colorize('#c42007', 30);
|
| 3206 |
-
this.vibrance(50);
|
| 3207 |
-
return this.gamma(1.3);
|
| 3208 |
-
});
|
| 3209 |
-
|
| 3210 |
-
Caman.Filter.register("grungy", function() {
|
| 3211 |
-
this.gamma(1.5);
|
| 3212 |
-
this.clip(25);
|
| 3213 |
-
this.saturation(-60);
|
| 3214 |
-
this.contrast(5);
|
| 3215 |
-
this.noise(5);
|
| 3216 |
-
return this.vignette("50%", 30);
|
| 3217 |
-
});
|
| 3218 |
-
|
| 3219 |
-
Caman.Filter.register("jarques", function() {
|
| 3220 |
-
this.saturation(-35);
|
| 3221 |
-
this.curves('b', [20, 0], [90, 120], [186, 144], [255, 230]);
|
| 3222 |
-
this.curves('r', [0, 0], [144, 90], [138, 120], [255, 255]);
|
| 3223 |
-
this.curves('g', [10, 0], [115, 105], [148, 100], [255, 248]);
|
| 3224 |
-
this.curves('rgb', [0, 0], [120, 100], [128, 140], [255, 255]);
|
| 3225 |
-
return this.sharpen(20);
|
| 3226 |
-
});
|
| 3227 |
-
|
| 3228 |
-
Caman.Filter.register("pinhole", function() {
|
| 3229 |
-
this.greyscale();
|
| 3230 |
-
this.sepia(10);
|
| 3231 |
-
this.exposure(10);
|
| 3232 |
-
this.contrast(15);
|
| 3233 |
-
return this.vignette("60%", 35);
|
| 3234 |
-
});
|
| 3235 |
-
|
| 3236 |
-
Caman.Filter.register("oldBoot", function() {
|
| 3237 |
-
this.saturation(-20);
|
| 3238 |
-
this.vibrance(-50);
|
| 3239 |
-
this.gamma(1.1);
|
| 3240 |
-
this.sepia(30);
|
| 3241 |
-
this.channels({
|
| 3242 |
-
red: -10,
|
| 3243 |
-
blue: 5
|
| 3244 |
-
});
|
| 3245 |
-
this.curves('rgb', [0, 0], [80, 50], [128, 230], [255, 255]);
|
| 3246 |
-
return this.vignette("60%", 30);
|
| 3247 |
-
});
|
| 3248 |
-
|
| 3249 |
-
Caman.Filter.register("glowingSun", function(vignette) {
|
| 3250 |
-
if (vignette == null) {
|
| 3251 |
-
vignette = true;
|
| 3252 |
-
}
|
| 3253 |
-
this.brightness(10);
|
| 3254 |
-
this.newLayer(function() {
|
| 3255 |
-
this.setBlendingMode("multiply");
|
| 3256 |
-
this.opacity(80);
|
| 3257 |
-
this.copyParent();
|
| 3258 |
-
this.filter.gamma(0.8);
|
| 3259 |
-
this.filter.contrast(50);
|
| 3260 |
-
return this.filter.exposure(10);
|
| 3261 |
-
});
|
| 3262 |
-
this.newLayer(function() {
|
| 3263 |
-
this.setBlendingMode("softLight");
|
| 3264 |
-
this.opacity(80);
|
| 3265 |
-
return this.fillColor("#f49600");
|
| 3266 |
-
});
|
| 3267 |
-
this.exposure(20);
|
| 3268 |
-
this.gamma(0.8);
|
| 3269 |
-
if (vignette) {
|
| 3270 |
-
return this.vignette("45%", 20);
|
| 3271 |
-
}
|
| 3272 |
-
});
|
| 3273 |
-
|
| 3274 |
-
Caman.Filter.register("hazyDays", function() {
|
| 3275 |
-
this.gamma(1.2);
|
| 3276 |
-
this.newLayer(function() {
|
| 3277 |
-
this.setBlendingMode("overlay");
|
| 3278 |
-
this.opacity(60);
|
| 3279 |
-
this.copyParent();
|
| 3280 |
-
this.filter.channels({
|
| 3281 |
-
red: 5
|
| 3282 |
-
});
|
| 3283 |
-
return this.filter.stackBlur(15);
|
| 3284 |
-
});
|
| 3285 |
-
this.newLayer(function() {
|
| 3286 |
-
this.setBlendingMode("addition");
|
| 3287 |
-
this.opacity(40);
|
| 3288 |
-
return this.fillColor("#6899ba");
|
| 3289 |
-
});
|
| 3290 |
-
this.newLayer(function() {
|
| 3291 |
-
this.setBlendingMode("multiply");
|
| 3292 |
-
this.opacity(35);
|
| 3293 |
-
this.copyParent();
|
| 3294 |
-
this.filter.brightness(40);
|
| 3295 |
-
this.filter.vibrance(40);
|
| 3296 |
-
this.filter.exposure(30);
|
| 3297 |
-
this.filter.contrast(15);
|
| 3298 |
-
this.filter.curves('r', [0, 40], [128, 128], [128, 128], [255, 215]);
|
| 3299 |
-
this.filter.curves('g', [0, 40], [128, 128], [128, 128], [255, 215]);
|
| 3300 |
-
this.filter.curves('b', [0, 40], [128, 128], [128, 128], [255, 215]);
|
| 3301 |
-
return this.filter.stackBlur(5);
|
| 3302 |
-
});
|
| 3303 |
-
this.curves('r', [20, 0], [128, 158], [128, 128], [235, 255]);
|
| 3304 |
-
this.curves('g', [20, 0], [128, 128], [128, 128], [235, 255]);
|
| 3305 |
-
this.curves('b', [20, 0], [128, 108], [128, 128], [235, 255]);
|
| 3306 |
-
return this.vignette("45%", 20);
|
| 3307 |
-
});
|
| 3308 |
-
|
| 3309 |
-
Caman.Filter.register("herMajesty", function() {
|
| 3310 |
-
this.brightness(40);
|
| 3311 |
-
this.colorize("#ea1c5d", 10);
|
| 3312 |
-
this.curves('b', [0, 10], [128, 180], [190, 190], [255, 255]);
|
| 3313 |
-
this.newLayer(function() {
|
| 3314 |
-
this.setBlendingMode('overlay');
|
| 3315 |
-
this.opacity(50);
|
| 3316 |
-
this.copyParent();
|
| 3317 |
-
this.filter.gamma(0.7);
|
| 3318 |
-
return this.newLayer(function() {
|
| 3319 |
-
this.setBlendingMode('normal');
|
| 3320 |
-
this.opacity(60);
|
| 3321 |
-
return this.fillColor('#ea1c5d');
|
| 3322 |
-
});
|
| 3323 |
-
});
|
| 3324 |
-
this.newLayer(function() {
|
| 3325 |
-
this.setBlendingMode('multiply');
|
| 3326 |
-
this.opacity(60);
|
| 3327 |
-
this.copyParent();
|
| 3328 |
-
this.filter.saturation(50);
|
| 3329 |
-
this.filter.hue(90);
|
| 3330 |
-
return this.filter.contrast(10);
|
| 3331 |
-
});
|
| 3332 |
-
this.gamma(1.4);
|
| 3333 |
-
this.vibrance(-30);
|
| 3334 |
-
this.newLayer(function() {
|
| 3335 |
-
this.opacity(10);
|
| 3336 |
-
return this.fillColor('#e5f0ff');
|
| 3337 |
-
});
|
| 3338 |
-
return this;
|
| 3339 |
-
});
|
| 3340 |
-
|
| 3341 |
-
Caman.Filter.register("nostalgia", function() {
|
| 3342 |
-
this.saturation(20);
|
| 3343 |
-
this.gamma(1.4);
|
| 3344 |
-
this.greyscale();
|
| 3345 |
-
this.contrast(5);
|
| 3346 |
-
this.sepia(100);
|
| 3347 |
-
this.channels({
|
| 3348 |
-
red: 8,
|
| 3349 |
-
blue: 2,
|
| 3350 |
-
green: 4
|
| 3351 |
-
});
|
| 3352 |
-
this.gamma(0.8);
|
| 3353 |
-
this.contrast(5);
|
| 3354 |
-
this.exposure(10);
|
| 3355 |
-
this.newLayer(function() {
|
| 3356 |
-
this.setBlendingMode('overlay');
|
| 3357 |
-
this.copyParent();
|
| 3358 |
-
this.opacity(55);
|
| 3359 |
-
return this.filter.stackBlur(10);
|
| 3360 |
-
});
|
| 3361 |
-
return this.vignette("50%", 30);
|
| 3362 |
-
});
|
| 3363 |
-
|
| 3364 |
-
Caman.Filter.register("hemingway", function() {
|
| 3365 |
-
this.greyscale();
|
| 3366 |
-
this.contrast(10);
|
| 3367 |
-
this.gamma(0.9);
|
| 3368 |
-
this.newLayer(function() {
|
| 3369 |
-
this.setBlendingMode("multiply");
|
| 3370 |
-
this.opacity(40);
|
| 3371 |
-
this.copyParent();
|
| 3372 |
-
this.filter.exposure(15);
|
| 3373 |
-
this.filter.contrast(15);
|
| 3374 |
-
return this.filter.channels({
|
| 3375 |
-
green: 10,
|
| 3376 |
-
red: 5
|
| 3377 |
-
});
|
| 3378 |
-
});
|
| 3379 |
-
this.sepia(30);
|
| 3380 |
-
this.curves('rgb', [0, 10], [120, 90], [180, 200], [235, 255]);
|
| 3381 |
-
this.channels({
|
| 3382 |
-
red: 5,
|
| 3383 |
-
green: -2
|
| 3384 |
-
});
|
| 3385 |
-
return this.exposure(15);
|
| 3386 |
-
});
|
| 3387 |
-
|
| 3388 |
-
Caman.Filter.register("concentrate", function() {
|
| 3389 |
-
this.sharpen(40);
|
| 3390 |
-
this.saturation(-50);
|
| 3391 |
-
this.channels({
|
| 3392 |
-
red: 3
|
| 3393 |
-
});
|
| 3394 |
-
this.newLayer(function() {
|
| 3395 |
-
this.setBlendingMode("multiply");
|
| 3396 |
-
this.opacity(80);
|
| 3397 |
-
this.copyParent();
|
| 3398 |
-
this.filter.sharpen(5);
|
| 3399 |
-
this.filter.contrast(50);
|
| 3400 |
-
this.filter.exposure(10);
|
| 3401 |
-
return this.filter.channels({
|
| 3402 |
-
blue: 5
|
| 3403 |
-
});
|
| 3404 |
-
});
|
| 3405 |
-
return this.brightness(10);
|
| 3406 |
-
});
|
| 3407 |
-
|
| 3408 |
-
Caman.Plugin.register("rotate", function(degrees) {
|
| 3409 |
-
var angle, canvas, ctx, height, to_radians, width, x, y;
|
| 3410 |
-
angle = degrees % 360;
|
| 3411 |
-
if (angle === 0) {
|
| 3412 |
-
return this.dimensions = {
|
| 3413 |
-
width: this.canvas.width,
|
| 3414 |
-
height: this.canvas.height
|
| 3415 |
-
};
|
| 3416 |
-
}
|
| 3417 |
-
to_radians = Math.PI / 180;
|
| 3418 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 3419 |
-
canvas = new Canvas();
|
| 3420 |
-
} else {
|
| 3421 |
-
canvas = document.createElement('canvas');
|
| 3422 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 3423 |
-
}
|
| 3424 |
-
if (angle === 90 || angle === -270 || angle === 270 || angle === -90) {
|
| 3425 |
-
width = this.canvas.height;
|
| 3426 |
-
height = this.canvas.width;
|
| 3427 |
-
x = width / 2;
|
| 3428 |
-
y = height / 2;
|
| 3429 |
-
} else if (angle === 180) {
|
| 3430 |
-
width = this.canvas.width;
|
| 3431 |
-
height = this.canvas.height;
|
| 3432 |
-
x = width / 2;
|
| 3433 |
-
y = height / 2;
|
| 3434 |
-
} else {
|
| 3435 |
-
width = Math.sqrt(Math.pow(this.originalWidth, 2) + Math.pow(this.originalHeight, 2));
|
| 3436 |
-
height = width;
|
| 3437 |
-
x = this.canvas.height / 2;
|
| 3438 |
-
y = this.canvas.width / 2;
|
| 3439 |
-
}
|
| 3440 |
-
canvas.width = width;
|
| 3441 |
-
canvas.height = height;
|
| 3442 |
-
ctx = canvas.getContext('2d');
|
| 3443 |
-
ctx.save();
|
| 3444 |
-
ctx.translate(x, y);
|
| 3445 |
-
ctx.rotate(angle * to_radians);
|
| 3446 |
-
ctx.drawImage(this.canvas, -this.canvas.width / 2, -this.canvas.height / 2, this.canvas.width, this.canvas.height);
|
| 3447 |
-
ctx.restore();
|
| 3448 |
-
return this.replaceCanvas(canvas);
|
| 3449 |
-
});
|
| 3450 |
-
|
| 3451 |
-
Caman.Filter.register("rotate", function() {
|
| 3452 |
-
return this.processPlugin("rotate", Array.prototype.slice.call(arguments, 0));
|
| 3453 |
-
});
|
| 3454 |
-
|
| 3455 |
-
/*
|
| 3456 |
-
StackBlur - a fast almost Gaussian Blur For Canvas v0.31 modified for CamanJS
|
| 3457 |
-
|
| 3458 |
-
Version: 0.31
|
| 3459 |
-
Author: Mario Klingemann
|
| 3460 |
-
Contact: mario@quasimondo.com
|
| 3461 |
-
Website: http://www.quasimondo.com/StackBlurForCanvas
|
| 3462 |
-
Twitter: @quasimondo
|
| 3463 |
-
Modified By: Ryan LeFevre (@meltingice)
|
| 3464 |
-
|
| 3465 |
-
In case you find this class useful - especially in commercial projects -
|
| 3466 |
-
I am not totally unhappy for a small donation to my PayPal account
|
| 3467 |
-
mario@quasimondo.de
|
| 3468 |
-
|
| 3469 |
-
Or support me on flattr:
|
| 3470 |
-
https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript
|
| 3471 |
-
|
| 3472 |
-
Copyright (c) 2010 Mario Klingemann
|
| 3473 |
-
|
| 3474 |
-
Permission is hereby granted, free of charge, to any person
|
| 3475 |
-
obtaining a copy of this software and associated documentation
|
| 3476 |
-
files (the "Software"), to deal in the Software without
|
| 3477 |
-
restriction, including without limitation the rights to use,
|
| 3478 |
-
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 3479 |
-
copies of the Software, and to permit persons to whom the
|
| 3480 |
-
Software is furnished to do so, subject to the following
|
| 3481 |
-
conditions:
|
| 3482 |
-
|
| 3483 |
-
The above copyright notice and this permission notice shall be
|
| 3484 |
-
included in all copies or substantial portions of the Software.
|
| 3485 |
-
|
| 3486 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 3487 |
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
| 3488 |
-
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 3489 |
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
| 3490 |
-
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
| 3491 |
-
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
| 3492 |
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
| 3493 |
-
OTHER DEALINGS IN THE SOFTWARE.
|
| 3494 |
-
*/
|
| 3495 |
-
|
| 3496 |
-
|
| 3497 |
-
(function() {
|
| 3498 |
-
var BlurStack, mul_table, shg_table;
|
| 3499 |
-
mul_table = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];
|
| 3500 |
-
shg_table = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];
|
| 3501 |
-
BlurStack = function() {
|
| 3502 |
-
this.r = 0;
|
| 3503 |
-
this.g = 0;
|
| 3504 |
-
this.b = 0;
|
| 3505 |
-
this.a = 0;
|
| 3506 |
-
return this.next = null;
|
| 3507 |
-
};
|
| 3508 |
-
Caman.Plugin.register("stackBlur", function(radius) {
|
| 3509 |
-
var b_in_sum, b_out_sum, b_sum, div, g_in_sum, g_out_sum, g_sum, height, heightMinus1, i, mul_sum, p, pb, pg, pixels, pr, r_in_sum, r_out_sum, r_sum, radiusPlus1, rbs, shg_sum, stack, stackEnd, stackIn, stackOut, stackStart, sumFactor, w4, width, widthMinus1, x, y, yi, yp, yw, _i, _j, _k, _l, _m, _n, _o, _p, _q;
|
| 3510 |
-
if (isNaN(radius) || radius < 1) {
|
| 3511 |
-
return;
|
| 3512 |
-
}
|
| 3513 |
-
radius |= 0;
|
| 3514 |
-
pixels = this.pixelData;
|
| 3515 |
-
width = this.dimensions.width;
|
| 3516 |
-
height = this.dimensions.height;
|
| 3517 |
-
div = radius + radius + 1;
|
| 3518 |
-
w4 = width << 2;
|
| 3519 |
-
widthMinus1 = width - 1;
|
| 3520 |
-
heightMinus1 = height - 1;
|
| 3521 |
-
radiusPlus1 = radius + 1;
|
| 3522 |
-
sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
|
| 3523 |
-
stackStart = new BlurStack();
|
| 3524 |
-
stack = stackStart;
|
| 3525 |
-
for (i = _i = 1; 1 <= div ? _i < div : _i > div; i = 1 <= div ? ++_i : --_i) {
|
| 3526 |
-
stack = stack.next = new BlurStack();
|
| 3527 |
-
if (i === radiusPlus1) {
|
| 3528 |
-
stackEnd = stack;
|
| 3529 |
-
}
|
| 3530 |
-
}
|
| 3531 |
-
stack.next = stackStart;
|
| 3532 |
-
stackIn = null;
|
| 3533 |
-
stackOut = null;
|
| 3534 |
-
yw = yi = 0;
|
| 3535 |
-
mul_sum = mul_table[radius];
|
| 3536 |
-
shg_sum = shg_table[radius];
|
| 3537 |
-
for (y = _j = 0; 0 <= height ? _j < height : _j > height; y = 0 <= height ? ++_j : --_j) {
|
| 3538 |
-
r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;
|
| 3539 |
-
r_out_sum = radiusPlus1 * (pr = pixels[yi]);
|
| 3540 |
-
g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
|
| 3541 |
-
b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
|
| 3542 |
-
r_sum += sumFactor * pr;
|
| 3543 |
-
g_sum += sumFactor * pg;
|
| 3544 |
-
b_sum += sumFactor * pb;
|
| 3545 |
-
stack = stackStart;
|
| 3546 |
-
for (i = _k = 0; 0 <= radiusPlus1 ? _k < radiusPlus1 : _k > radiusPlus1; i = 0 <= radiusPlus1 ? ++_k : --_k) {
|
| 3547 |
-
stack.r = pr;
|
| 3548 |
-
stack.g = pg;
|
| 3549 |
-
stack.b = pb;
|
| 3550 |
-
stack = stack.next;
|
| 3551 |
-
}
|
| 3552 |
-
for (i = _l = 1; 1 <= radiusPlus1 ? _l < radiusPlus1 : _l > radiusPlus1; i = 1 <= radiusPlus1 ? ++_l : --_l) {
|
| 3553 |
-
p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
|
| 3554 |
-
r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
|
| 3555 |
-
g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;
|
| 3556 |
-
b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;
|
| 3557 |
-
r_in_sum += pr;
|
| 3558 |
-
g_in_sum += pg;
|
| 3559 |
-
b_in_sum += pb;
|
| 3560 |
-
stack = stack.next;
|
| 3561 |
-
}
|
| 3562 |
-
stackIn = stackStart;
|
| 3563 |
-
stackOut = stackEnd;
|
| 3564 |
-
for (x = _m = 0; 0 <= width ? _m < width : _m > width; x = 0 <= width ? ++_m : --_m) {
|
| 3565 |
-
pixels[yi] = (r_sum * mul_sum) >> shg_sum;
|
| 3566 |
-
pixels[yi + 1] = (g_sum * mul_sum) >> shg_sum;
|
| 3567 |
-
pixels[yi + 2] = (b_sum * mul_sum) >> shg_sum;
|
| 3568 |
-
r_sum -= r_out_sum;
|
| 3569 |
-
g_sum -= g_out_sum;
|
| 3570 |
-
b_sum -= b_out_sum;
|
| 3571 |
-
r_out_sum -= stackIn.r;
|
| 3572 |
-
g_out_sum -= stackIn.g;
|
| 3573 |
-
b_out_sum -= stackIn.b;
|
| 3574 |
-
p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;
|
| 3575 |
-
r_in_sum += (stackIn.r = pixels[p]);
|
| 3576 |
-
g_in_sum += (stackIn.g = pixels[p + 1]);
|
| 3577 |
-
b_in_sum += (stackIn.b = pixels[p + 2]);
|
| 3578 |
-
r_sum += r_in_sum;
|
| 3579 |
-
g_sum += g_in_sum;
|
| 3580 |
-
b_sum += b_in_sum;
|
| 3581 |
-
stackIn = stackIn.next;
|
| 3582 |
-
r_out_sum += (pr = stackOut.r);
|
| 3583 |
-
g_out_sum += (pg = stackOut.g);
|
| 3584 |
-
b_out_sum += (pb = stackOut.b);
|
| 3585 |
-
r_in_sum -= pr;
|
| 3586 |
-
g_in_sum -= pg;
|
| 3587 |
-
b_in_sum -= pb;
|
| 3588 |
-
stackOut = stackOut.next;
|
| 3589 |
-
yi += 4;
|
| 3590 |
-
}
|
| 3591 |
-
yw += width;
|
| 3592 |
-
}
|
| 3593 |
-
for (x = _n = 0; 0 <= width ? _n < width : _n > width; x = 0 <= width ? ++_n : --_n) {
|
| 3594 |
-
g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;
|
| 3595 |
-
yi = x << 2;
|
| 3596 |
-
r_out_sum = radiusPlus1 * (pr = pixels[yi]);
|
| 3597 |
-
g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
|
| 3598 |
-
b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
|
| 3599 |
-
r_sum += sumFactor * pr;
|
| 3600 |
-
g_sum += sumFactor * pg;
|
| 3601 |
-
b_sum += sumFactor * pb;
|
| 3602 |
-
stack = stackStart;
|
| 3603 |
-
for (i = _o = 0; 0 <= radiusPlus1 ? _o < radiusPlus1 : _o > radiusPlus1; i = 0 <= radiusPlus1 ? ++_o : --_o) {
|
| 3604 |
-
stack.r = pr;
|
| 3605 |
-
stack.g = pg;
|
| 3606 |
-
stack.b = pb;
|
| 3607 |
-
stack = stack.next;
|
| 3608 |
-
}
|
| 3609 |
-
yp = width;
|
| 3610 |
-
for (i = _p = 1; 1 <= radius ? _p <= radius : _p >= radius; i = 1 <= radius ? ++_p : --_p) {
|
| 3611 |
-
yi = (yp + x) << 2;
|
| 3612 |
-
r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
|
| 3613 |
-
g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;
|
| 3614 |
-
b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;
|
| 3615 |
-
r_in_sum += pr;
|
| 3616 |
-
g_in_sum += pg;
|
| 3617 |
-
b_in_sum += pb;
|
| 3618 |
-
stack = stack.next;
|
| 3619 |
-
if (i < heightMinus1) {
|
| 3620 |
-
yp += width;
|
| 3621 |
-
}
|
| 3622 |
-
}
|
| 3623 |
-
yi = x;
|
| 3624 |
-
stackIn = stackStart;
|
| 3625 |
-
stackOut = stackEnd;
|
| 3626 |
-
for (y = _q = 0; 0 <= height ? _q < height : _q > height; y = 0 <= height ? ++_q : --_q) {
|
| 3627 |
-
p = yi << 2;
|
| 3628 |
-
pixels[p] = (r_sum * mul_sum) >> shg_sum;
|
| 3629 |
-
pixels[p + 1] = (g_sum * mul_sum) >> shg_sum;
|
| 3630 |
-
pixels[p + 2] = (b_sum * mul_sum) >> shg_sum;
|
| 3631 |
-
r_sum -= r_out_sum;
|
| 3632 |
-
g_sum -= g_out_sum;
|
| 3633 |
-
b_sum -= b_out_sum;
|
| 3634 |
-
r_out_sum -= stackIn.r;
|
| 3635 |
-
g_out_sum -= stackIn.g;
|
| 3636 |
-
b_out_sum -= stackIn.b;
|
| 3637 |
-
p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;
|
| 3638 |
-
r_sum += (r_in_sum += (stackIn.r = pixels[p]));
|
| 3639 |
-
g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));
|
| 3640 |
-
b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));
|
| 3641 |
-
stackIn = stackIn.next;
|
| 3642 |
-
r_out_sum += (pr = stackOut.r);
|
| 3643 |
-
g_out_sum += (pg = stackOut.g);
|
| 3644 |
-
b_out_sum += (pb = stackOut.b);
|
| 3645 |
-
r_in_sum -= pr;
|
| 3646 |
-
g_in_sum -= pg;
|
| 3647 |
-
b_in_sum -= pb;
|
| 3648 |
-
stackOut = stackOut.next;
|
| 3649 |
-
yi += width;
|
| 3650 |
-
}
|
| 3651 |
-
}
|
| 3652 |
-
return this;
|
| 3653 |
-
});
|
| 3654 |
-
return Caman.Filter.register("stackBlur", function(radius) {
|
| 3655 |
-
return this.processPlugin("stackBlur", [radius]);
|
| 3656 |
-
});
|
| 3657 |
-
})();
|
| 3658 |
-
|
| 3659 |
-
Caman.Filter.register("threshold", function(adjust) {
|
| 3660 |
-
return this.process("threshold", function(rgba) {
|
| 3661 |
-
var luminance;
|
| 3662 |
-
luminance = (0.2126 * rgba.r) + (0.7152 * rgba.g) + (0.0722 * rgba.b);
|
| 3663 |
-
if (luminance < adjust) {
|
| 3664 |
-
rgba.r = 0;
|
| 3665 |
-
rgba.g = 0;
|
| 3666 |
-
rgba.b = 0;
|
| 3667 |
-
} else {
|
| 3668 |
-
rgba.r = 255;
|
| 3669 |
-
rgba.g = 255;
|
| 3670 |
-
rgba.b = 255;
|
| 3671 |
-
}
|
| 3672 |
-
return rgba;
|
| 3673 |
-
});
|
| 3674 |
-
});
|
| 3675 |
-
|
| 3676 |
-
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.full.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"file":"caman.full.js","sourceRoot":"","sources":["caman.full.coffee"],"names":[],"mappings":";;AACA;CAAA,KAAA,8LAAA;KAAA;;;uBAAA;CAAA;CAAA,CAAA,CAAQ,EAAR,IAAe;;CAAf,CAIA,CAAI,CAAA,KAAC;;GAAY,GAAP;MACR;AAAc,CAAd,EAAc,CAAd,CAA4B,CAAd,EAAA,4CAAd;CAAA,EAAA,UAAO;MAAP;CACK,EAAL,CAAI,OAAJ,EAAA;CANF,EAII;;CAJJ,CAQM;CAEJ;CAAA;;CAAA,EAAa,CAAb,EAAA,GAAa;CACX,CAAA,QAAA;CAAA,CAAA,CAAK,GAAL;aA6vGG;CAAA,CA5vGE,CAAL,KAAA,CAAK;AAAG,CAAH,CAAG,eAAA;CA4vGL,QA5vGE;CAFM;CAAA,IAAA;;CAAb,EAKU,CAAV,EAAA,GAAW;CACT,SAAA,qBAAA;CAAA,EAAO,CAAP,EAAA;CAAA,CAC4B,CAA5B,CAAM,CAAK,CAAX,GAAM;AAEN,CAAA,UAAA,+BAAA;wBAAA;AACE,CAAA,WAAA,CAAA;qDAAA;CACE,EAAa,CAAR,MAAL;CADF,QADF;CAAA,MAHA;CAOA,GAAA,SAAO;CAbT,IAKU;;CALV,EAiBY,CAAZ,IAAA,CAAa;CACX,EAAY,CAAA,EAAZ;CAAA,cAAO;QAAP;CACA,EAAc,CAAA,EAAd;CAAA,EAAA,YAAO;QADP;CADU,YAGV;CApBF,IAiBY;;CAjBZ,CAsBwB,CAAP,CAAjB,KAAkB,KAAlB;CACE,SAAA,2BAAA;;GAD+B,KAAL;QAC1B;CAAA;CAAA;YAAA,+BAAA;yBAAA;CACE,CAA6B,CAAA,CAAjB,CAAiB,CAAA,EAA7B,OAA8C,MAAlC;CAAZ,kBAAA;UAAA;CAAA,CACE,EAAkB,IAApB,CAAA,GAAA;CAFF;uBADe;CAtBjB,IAsBiB;;CAtBjB;;CAVF;;CAsCA,CAAA,EAAG,8CAAH;CACE,EAAO,CAAP,GAAA;CAAA,EACS,CAAT,EAAA,CAAS,CAAA;CADT,EAEQ,CAAR,CAAA,CAAc;CAFd,EAIQ,CAAR,CAAA,EAAQ,CAAA;CAJR,CAMA,CAAK,CAAL,GAAK;IAPP,EAAA;CASE,EAAO,CAAP,EAAA;IA/CF;;CAAA,CA6DA,CAAmB,CAAf,CAAJ;CACC;CAAA,EACE,CADD,CAAC,EAAD;CACC,CAAU,IAAT,CAAA;CAAD,CACO,EAAN,EAAA,KADD;CADF,KAAA;;CAAA,EAKS,CAAR,CAAC;;CALF,EAQU,CAAT,CAAC,CAAD,4CARD;;AAWgB,CAXhB,EAWY,CAAX,CAAC,CAXF,EAWC;;CAXD,EAgBe,CAAd,CAAC,MAAD;;CAhBD,EAmBe,CAAd,CAAC,MAAD;;CAnBD,EAqBY,CAAX,CAAC,GAAD,CAAW;CACU,EAAN,EAAK,EAAQ,GAA1B,GAAA;CAtBH,IAqBY;;CArBZ,CAAA,CAyBe,CAAd,CAAC,MAAD;;CAzBD,EA4Bc,CAAb,CAAC,KAAD,KA5BD;;CAAA,EA8Ba,CAAZ,CAAC,CAAW,GAAZ;CACE,GAAe,CAAK,CAApB;CAAA,GAAA,WAAO;QAAP;AAEG,CAAH,GAAG,CAAiB,CAApB,EAAA;CACE,EAAS,GAAT,EAAA;QAHF;AAKA,CAAA,GAAA,EAAA,UAAmB,aAAnB;CAAA,GAAA,WAAO;QALP;CAMO,KAAD,MAAN,CAAA,EAAA;CArCH,IA8Ba;;CASC,EAAA,CAAA,WAAA;CACX,SAAA,QAAA;SAAA,GAAA;CAAA,GAA6B,CAAoB,CAAjD,GAAsC;CAAtC,aAAM,KAAN;QAAA;CAEA,GAAG,CAAH,CAAA,MAAgB;CAKd,EAAc,CAAb,IAAD,EAAA;CAAA,EACe,CAAd,IAAD,GAAA;CADA,EAGO,CAAP,IAAA,CAAiB;AAEV,CAAP,GAAA,CAAY,CAAZ,EAAA;CACE,CAAA,CAAK,CAA8B,CAAhB,GAAd,CAAS,CAAd;AACc,CADd,EACc,CAAY,CAAM,CAAlB,EAAd,CAKE,CALF;AAOI,CAAJ,CAAI,CAAc,CAAf,CAAC,KAAJ;CACE,CAAO,GAAK,EAAL,CAAA,WAAA;YAVX;UALA;CAAA,CAmBA,CAAM,CAAL,EAAgB,EAAjB;CAnBA,EAqBwB,CAAvB,IAAD,SAAwB,GAAxB;CArBA,EAsBiB,CAAhB,IAAD,OAAA;CAAiB,CAAK,QAAH;CAAF,CAAW,QAAH;CAtBzB,SAAA;CAAA,EAuBW,CAAV,CAvBD,EAuBA,CAAA;CAvBA,EAwBW,CAAV,CAxBD,EAwBA,CAAA;CAxBA,CAAA,CA0Bc,CAAb,IAAD,EAAA;CA1BA,CAAA,CA2Bc,CAAb,IAAD,EAAA;CA3BA,CAAA,CA4Be,CAAd,IAAD,GAAA;CA5BA,EA6BgB,CAAf,IAAD,IAAA;CA7BA,EA8BU,CAAT,CA9BD,CA8BA,EAAA;CA9BA,EAgCe,CAAd,GAAD,CAAA;CAhCA,EAiCgB,CAAf,IAAD;CAjCA,EAmCa,CAAZ,IAAD,CAAa,EAAb;CACE,GAAA,CAAC,KAAD,IAAA;CACC,IAAA,YAAD;CAFF,QAAa;CAIb,GAAA,WAAO;MA5CT,EAAA;CA8CE,GAAW,CAAA,IAAA,MAAA;QAjDF;CAvCd,IAuCc;;CAvCd,CA0Fc,CAAA,MAAC,EAAd;CACE,OAAA,EAAA;SAAA,GAAA;CAAA,GAAG,CAAK,CAAR;CACa,EAAA,MAAA,CAAX,KAAA;CACK,CAAD,EAAF,CAAA,YAAA;CADF,CAEE,OAFS;MADb,EAAA;CAKE,GAAG,CAAuB,GAA1B,EAAG;CACD,EAAG,EAAH,KAAA,OAAA;CACW,EAAA,MAAA,CAAX,OAAA;CACK,CAAD,EAAF,CAAA,cAAA;CADF,CAEE,SAFS;MAFb,IAAA;CAME,EAAW,KAAX,CAAW,CAAX;CACE,GAAG,CAAuB,GAAf,EAAR,EAAH;CACE,EAAG,EAAH,SAAA,GAAA;CACG,CAAD,EAAF,CAAA,gBAAA;cAHO;CAAX,UAAW;CAKF,CAAqC,GAA9C,GAAQ,QAAR,CAAA,CAAA;UAhBJ;QADW;CA1Fd,IA0Fc;;CA1Fd,EAiIiB,CAAA,KAAC,KAAjB;CACE,SAAA,cAAA;CAAA,GAAmC,CAAe,CAAlD;CAAA,aAAM,WAAN;QAAA;CAAA,EAGW,CAAV,EAAD,CAAA;CAHA,EAIY,CAAX,EAAD,EAAA;CAJA,EAKY,CAAX,EAAD,EAAA;CALA,EAMY,CAAX,EAAD,EAAA,CAAY;CANZ,GASC,EAAD,OAAA;CACA,GAAU,CAAe,CAAzB;CAAA,aAAA;QAVA;AAYO,CAAP,GAAmB,EAAZ,QAAA;CAAP,OAAA,KACO;CAAc,EAAY,CAAX,IAAD,EAAA;CAAd;CADP,SAAA,GAEO;CAAgB,EAAY,CAAX,IAAD,EAAA;CAFvB,MAZA;CAgBA,GAAU,CAAe,CAAzB;CAAA,aAAA;QAhBA;CAAA,EAkBY,CAAX,EAAD,EAAA;CAEA,GAAG,CAAe,CAAlB;CACE;CAAA;WAAA,GAAA;;2BAAA;CAAA,EAAS,CAAR,GAAQ;CAAT;yBADF;QArBc;CAjIjB,IAiIiB;;CAjIjB,EAyJgB,MAAC,IAAhB;CACE,GAAG,CAAK,CAAR;CACE,EAAW,CAAV,GAAD,CAAA;CAAA,EACY,CAAX,EADD,EACA;CACA,aAAA;QAHF;AAKG,CAAH,EAAG,CAAA,CAAc,CAAjB,EAAA;CACE,EAAW,CAAV,GAAD,CAAA;MADF,EAAA;CAGE,EAAW,CAAV,GAAD,CAAA;QARF;CAUC,EAAW,CAAX,GAAmB,CAApB,GAAY,EAAZ;CApKH,IAyJgB;;CAzJhB,EAsKQ,EAAP,IAAO;CACL,GAAQ,IAAR,MAAO;CAAP,KAAA,OACO;CAAa,GAAA,IAAD,SAAA;CADnB,IAAA,QAEO;CAAY,GAAA,KAAD,QAAA;CAFlB,OAAA,KAGO;CAAe,GAAA,MAAD,OAAA;CAHrB,MADK;CAtKR,IAsKQ;;CAtKR,EA4KW,KAAV,CAAU;CACR,SAAA,EAAA;CAAA,EAAG,EAAH,CAAA,mBAAA;CAAA,EAEa,CAAZ,CAAD,CAAA;CAFA,EAGgB,CAAf,CAAK,CAAN,GAAgB;CACd,EAAG,EAAH,CAAA,EAAA,KAAW,WAAA;CAAX,CACmC,CAArB,CAAA,CAAb,CAAD,EAAA;CACC,IAAA,KAAD,KAAA;CANF,MAGgB;CAHhB,EAQiB,CAAhB,CAAK,CAAN,CAAA,EAAkB;CAAQ,EAAA,WAAM;CARhC,MAQiB;CAChB,EAAD,CAAC,CAAK,QAAN;CAtLH,IA4KW;;CA5KX,EAwLY,MAAX;CACE,EAAS,CAAR,CAAD,CAAA,CAAA;CAAA,EACU,CAAT,EAAD,EAAkB,KAAR;CADV,EAEW,CAAV,EAAD,CAAA,GAAW;CAFX,CAG4B,EAAxB,CAAJ,CAAA,QAAA;CAAmC,CAAU,GAAA,CAAR,EAAA;CAHrC,OAGA;CAHA,CAKwC,EAAvC,CAAK,CAAN,IAAiB,EAAjB;CALA,GAOC,EAAD,UAAA;CACC,GAAA,SAAD,KAAA;CAjMH,IAwLY;;CAxLZ,EAmMa,MAAA,CAAZ;CACE,EAAU,CAAT,EAAD,CAAA;CAAA,EACW,CAAV,EAAD,CAAA,GAAW;CAEX,GAAG,EAAH,eAAA;CACE,EAAS,CAAR,CAAD,GAAA,KAAS;CAAT,EACA,CAAC,CAAK,GAAN;CADA,GAGC,IAAD,QAAA;CACC,GAAA,WAAD,GAAA;MALF,EAAA;CAOG,GAAA,MAAD,KAAA;QAXQ;CAnMb,IAmMa;;CAnMb,EAgNmB,MAAA,OAAlB;CACE,GAAG,EAAH,QAAG;CACD,CAAsB,CAAnB,CAAQ,CAAX,GAAA,QAA4B;CAA5B,EAEW,CAAV,GAAD,CAAA;CAFA,EAGA,CAAC,CAAK,GAAN,QAAa;QAJf;CAMA,CAAK,EAAF,CAAA,CAAH,EAAG;CACD,CAAe,CAAf,CAAC,CAAK,GAAN;CACI,EAAD,CAA6C,CAAhD,UAAA,sBAAW;QATG;CAhNnB,IAgNmB;;CAhNnB,EA2NqB,MAAA,SAApB;CACE,GAAG,CAAM,CAAT,EAAA;CACG,GAAA,OAAD,IAAA;MADF,EAAA;CAGG,EAAe,CAAf,CAAK,CAAN,SAAA;QAJgB;CA3NrB,IA2NqB;;CA3NrB,EAiOc,MAAA,EAAb;CACE,EAAG,CAAgC,CAAnC,CAAA,OAAW,WAAA;CAEX,GAAG,EAAH,CAAA;CACE,EAAgB,CAAf,CAAD,CAAO,EAAP,EAA+B;CAA/B,EACiB,CAAhB,CAAsB,CAAhB,EAAP,EAAiC;MAFnC,EAAA;CAIE,EAAgB,CAAf,CAAD,CAAO,EAAP;CAAA,EACiB,CAAhB,CAAsB,CAAhB,EAAP;QAPF;CASC,GAAA,MAAD,GAAA;CA3OH,IAiOc;;CAjOd,EA6Oa,MAAA,CAAZ;CACE,SAAA,cAAA;CAAA,GAA0C,EAA1C,cAAA;CAAA,EAAW,CAAV,EAAiB,CAAlB,CAAA,EAAW;QAAX;CAAA,EAEiB,CAAhB,CAAkC,CAAnC,OAAA,CAAiB;CAFjB,EAGkB,CAAjB,EAAD,QAAA,CAAkB;CAHlB,GAKC,EAAD,UAAA;AACmB,CAAnB,GAAA,CAAmB,CAAnB;CAAA,GAAC,IAAD;QANA;CAQA,GAAG,EAAH,YAAA;CACE,CACE,EADD,CAAD,CAAA,CAAQ,CAAR,CAAA,KAAA,CAAA;QATF;CAAA,CAesC,CAAzB,CAAZ,CAAY,CAAb,CAAqB,EAArB,GAAa;CAfb,EAgBa,CAAZ,EAAD,GAAA;CAEA,GAAG,CAAK,CAAR,KAAA;CACE,EAA4B,CAA3B,EAA2B,EAA5B,CAAiD,CAArB,UAA5B;CAAA,EACyB,CAAxB,EAAwB,EAAzB,CAA8C,CAArB,OAAzB;CAEA;CAAA,YAAA,sCAAA;2BAAA;CACE,EAA2B,CAA1B,CAAD,KAAA,UAAsB;CAAtB,EACwB,CAAvB,CADD,KACA,OAAmB;CAFrB,QAJF;QAlBA;CAAA,EA2BC,CADA,EAAD,IAAA;CACC,CAAQ,EAAC,CAAR,CAAc,EAAd;CAAD,CACS,EAAC,EAAT,EAAA;CA5BF,OAAA;CAAA,CA8BA,CAAA,CAAW,CAAN,CAAL;CA9BA,CAgCiB,EAAhB,EAAD,EAAS;CAIR,EAAW,CAAX,IAAD,CAAY,IAAZ;CAlRH,IA6Oa;;CA7Ob,EAoRyB,MAAA,aAAxB;CACE,SAAA,qBAAA;AAA+B,CAA/B,GAAA,CAAoC,CAApC,KAAA;CAAA,aAAM,GAAN;QAAA;CAAA,EAEyB,CAAxB,EAAD,GAA8C,CAArB,OAAzB;CACA;CAAA;YAAA,+BAAA;0BAAA;CAAA,GAAC,CAAD,YAAkB;CAAlB;uBAJsB;CApRzB,IAoRyB;;CApRzB,EA0RQ,EAAP,IAAO;CAAA,YAAG;CA1RX,IA0RQ;;CA1RR,EA4RW,KAAV,CAAU;CACR,GAAU,CAAK,CAAf,MAA0B,GAAA;CAA1B,aAAA;QAAA;CACC,CAAqC,EAArC,EAAM,MAAP,CAAA,EAAA;CA9RH,IA4RW;;CA5RX,EAgSgB,MAAA,IAAf;CACG,GAAA,CAAsD,CAAhD,MAAP,CAAA,cAAA;CAjSH,IAgSgB;;CAhShB,EAmSmB,MAAA,OAAlB;CACE,IAAA,KAAA;CAAA,GAAU,CAAK,CAAf,OAA0B;CAA1B,aAAA;QAAA;CAAA,EAEQ,CAAC,CAAT,CAAA,IAAQ;CAER,GAAG,CAAA,CAAH;CACE,EAAG,EAAH,GAAA,QAAW;CAAX,EACU,CAAT,EAAD,EAAA;CADA,EAGkB,CAAjB,CAHD,CAGyB,EAAzB,MAAA;CAHA,EAImB,CAAlB,EAAyB,EAA1B,OAAA;CAJA,EAMgB,CAAf,CAAD,CAAO,EAAP,MAAgB;CANhB,EAOiB,CAAhB,CAPD,CAOO,EAAP,OAAiB;CAPjB,CAQsB,CAAA,CAArB,CAAY,CAAN,EAAP,MAAsB;CARtB,CASuB,CAAA,CAAtB,CAAY,CAAN,EAAP,OAAuB;CATvB,CAWsB,EAArB,CAAD,EAAQ,CAAR;CAXA,EAaS,CAAR,CAAD,CAAiC,EAAjC,KAAS;CACR,EAAS,CAAT,EAAD,QAAU,CAAV;QApBc;CAnSnB,IAmSmB;;CAnSnB,EAyTa,MAAA,CAAZ;CACE,SAAA,yBAAA;CAAA,EAAmB,CAA2B,EAA9C,UAAA;CAAA,EACoB,CAAC,EAArB,CAA4B,UAA5B,KAAoB,CAAA,CAAA,CAAA,GAAA;CAFV,EAQS,UAAnB,GAAA;CAjUH,IAyTa;;CAzTb,EAmUe,MAAA,GAAd;CAAwB,IAAsB,CAAvB,OAAN,GAAA;CAnUlB,IAmUe;;CAnUf,EAqUiB,MAAA,KAAhB;AACuC,CAArC,GAAgB,EAAhB,MAAqC,CAArB;CAAhB,IAAA,UAAO;QAAP;CACC,GAAA,CAAwB,QAAzB,GAAA;CAvUH,IAqUiB;;CArUjB,EAyUmB,MAAA,OAAlB;CACE,GAAmB,EAAnB,YAAA;CAAA,GAAA,WAAO;QAAP;CACC,GAAA,CAAK,OAAN,CAAA,KAAA;CA3UH,IAyUmB;;CAzUnB,EA6UgB,MAAC,IAAhB;CACE,QAAA,CAAA;CAAA,EAAY,CAAC,EAAb,GAAA;CAAA,EACU,CAAT,EAAD,GADA;CAAA,EAEW,CAAV,EAAD,CAAA,GAAW;CAFX,CAI2C,EAAR,EAAnC,GAAS,CAAW,EAApB;CAJA,EAMU,CAAT,CAAD,CAAA;CANA,EAOU,CAAT,EAAD;CAPA,CASsC,CAAzB,CAAZ,CAAY,CAAb,CAAqB,EAArB,GAAa;CATb,EAUa,CAAZ,EAAD,GAAA;CAEC,EACA,CADA,MAAD,GAAA;CACC,CAAQ,EAAC,CAAR,CAAc,EAAd;CAAD,CACS,EAAC,EAAT,EAAA;CAfW;CA7UhB,IA6UgB;;CA7UhB,EA+VS,GAAR,EAAQ,CAAC;CACP,SAAA,EAAA;;GADkB,KAAX,CAAW;QAClB;CAAA,CAAiB,EAAjB,CAAK,CAAL,CAAA,MAAA;CAEC,EAAiB,CAAjB,GAAD,CAAS,CAAS,IAAlB;CACE,CAAkC,GAAjC,EAAO,CAAR,CAAA,GAAA;CACS,GAAT,CAAA,GAAQ,OAAR;CAFF,MAAkB;CAlWrB,IA+VS;;CA/VT,EAwWS,GAAR,GAAQ;CACN,SAAA,cAAA;AAA+B,CAA/B,GAAA,CAAoC,CAApC,KAAA;CAAA,aAAM,GAAN;QAAA;CAEA;CAAA,UAAA,wCAAA;yBAAA;CAAA,EAAgB,CAAf,CAAD,GAAA,CAAW;CAAX,MAFA;CAGC,CAAiC,EAAjC,GAAO,EAAR,GAAA,CAAA;CA5WH,IAwWS;;CAxWT,EAgXQ,EAAP,IAAO;CACL,SAAA,iDAAA;CAAA,EAAS,GAAT,EAAiB,KAAR;CAAT,CAC6B,EAAzB,EAAJ,QAAA;CADA,EAGe,CAAC,CAAhB,CAAA,OAHA;CAAA,EAIgB,CAAC,EAAjB,QAJA;CAAA,EAMA,CAAM,EAAN,IAAM;CANN,CAOgC,CAApB,EAAA,CAAZ,GAAA,GAAY;CAPZ,EAQY,CARZ,EAQA,GAAA;CAEA;CAAA,UAAA,wCAAA;yBAAA;CAAA,EAAe,EAAf,GAAA,CAAU;CAAV,MAVA;CAAA,CAY4B,CAAzB,GAAH,GAAA,GAAA;CAZA,EAciB,CAAhB,EAAD,SAAA;CAAiB,CAAK,MAAH;CAAF,CAAW,MAAH;CAdzB,OAAA;CAAA,EAeW,CAAV,CAfD,CAeA,CAAA;CAEC,GAAA,EAAD,OAAA;CAlYH,IAgXQ;;CAhXR,EAsYwB,MAAA,YAAvB;CACE,SAAA,0IAAA;AAA+B,CAA/B,GAAA,CAAoC,CAApC,KAAA;CAAA,aAAM,GAAN;QAAA;CAAA,CAAA,CAES,GAAT;CAFA,EAIS,CAAC,EAAV,SAAyB;CAJzB,EAKO,CAAP,CALA,CAKA;CALA,EAMS,CAAC,EAAV,SAAyB;CANzB,EAOO,CAAP,EAAA;CAEA,GAAG,EAAH,CAAA;CACE,EAAS,GAAT,EAAA,KAAS;CAAT,EACe,CAAC,CAAhB,CAAM,EAAN,KADA;CAAA,EAEgB,CAAC,EAAX,EAAN,MAFA;CAAA,EAIA,CAAM,EAAM,EAAZ,EAAM;CAJN,CAKgC,CAApB,EAAA,CAA6B,EAAzC,CAAA,GAAY;CALZ,EAMY,CANZ,IAMA,CAAA;CAEA;CAAA,YAAA,sCAAA;2BAAA;CAAA,EAAe,EAAf,IAAU,CAAV;CAAA,QARA;CAAA,CAU4B,CAAzB,KAAH,CAAA,GAAA;CAVA,EAYe,KAAf,IAAA,CAAe;CAZf,EAaqB,CAAC,CAAtB,GAAA,IAAY;CAbZ,EAcsB,CAAC,EAAvB,EAAA,IAAY;CAdZ,EAgBA,CAAM,IAAN,EAAM,EAAY;CAhBlB,CAiBsB,CAAnB,CAA0B,CAA7B,CAAA,EAAA,CAAA,IAAA,CAAA;CAjBA,CAmBgC,CAApB,CAAwB,CAAxB,CAAA,EAAZ,CAAA,GAAY;CAnBZ,EAoBQ,CAAC,CAAT,GAAA;MArBF,EAAA;CAuBE,EAAY,CAAC,IAAb,CAAA,QAAA;CAAA,EACQ,CAAC,CAAT,GAAA,KADA;QAhCF;AAmCA,CAAA,EAAA,QAAS,kDAAT;CACE,CAA2C,CAAnC,EAAR,GAAA,CAAiB,YAAT;CACR,EAAc,CAAX,CAAgB,CAAf,EAAJ;CACE,CACE,CAAY,CADd,EAAM,GAAgB,CAAtB;UAHJ;CAAA,MAnCA;CADqB,YA4CrB;CAlbH,IAsYwB;;CAtYxB,CAsbiB,CAAP,CAAA,GAAT,EAAU;CACR,EAAA,CAAC,EAAD,EAAS;CACR,CAAO,EAAN,EAAY,EAAZ;CAAD,CACO,EAAN,IAAA;CADD,CAEY,MAAX,CAAA;CAHF,OAAA;CAKA,GAAA,SAAO;CA5bV,IAsbU;;CAtbV,CA+buB,CAAP,CAAA,EAAA,CAAA,EAAC,IAAhB;CACE,SAAA,CAAA;AAAO,CAAP,GAAG,EAAH,CAAA;CACE,EAAU,IAAV,CAAA;AACA,CAAA,EAAA,UAA8B,mFAA9B;CAAA,GAAW,EAAO,CAAlB,GAAA;CAAA,QAFF;QAAA;CAAA,EAIA,CAAC,EAAD,EAAS;CACR,CAAO,EAAN,EAAY,EAAZ;CAAD,CACO,EAAN,IAAA;CADD,CAES,IAAR,EAAA;CAFD,CAGU,KAAT,CAAA;CAHD,CAIO,EAAN,IAAA;CATF,OAIA;CAOA,GAAA,SAAO;CA3cV,IA+bgB;;CA/bhB,CA8cyB,CAAT,CAAA,EAAA,GAAC,IAAhB;CACE,EAAA,CAAC,EAAD,EAAS;CACR,CAAO,EAAN,EAAY,EAAZ;CAAD,CACS,IAAR,EAAA;CADD,CAEO,EAAN,IAAA;CAHF,OAAA;CAKA,GAAA,SAAO;CApdV,IA8cgB;;CA9chB,EAwdW,KAAV,CAAW;CACT,IAAA,KAAA;CAAA,EAAY,CAAA,CAAZ,CAAA;CAAA,GACC,CAAD,CAAA,KAAY;CADZ,EAEA,CAAC,EAAD,EAAS;CAAG,CAAQ,EAAN,EAAY,EAAZ,IAAF;CAFZ,OAEA;CAFA,GAIA,CAAA,CAAA,EAAQ;CAJR,EAMA,CAAC,EAAD,EAAS;CAAG,CAAQ,EAAN,EAAY,EAAZ,KAAF;CANZ,OAMA;CACA,GAAA,SAAO;CAheV,IAwdW;;CAxdX,EAmee,EAAA,IAAC,GAAf;CAA0B,GAAA,CAAD,MAAA,EAAA;CAne1B,IAmee;;CAnef,EAsec,EAAA,IAAC,EAAd;CACE,GAAC,EAAD,IAAW,EAAX;CAAA,GACC,EAAD,GAAA,CAAW;CADX,EAEgB,CAAf,CAFD,CAEA,MAAA;CACC,EAAY,CAAZ,CAAiB,IAAlB,IAAA;CA1eH,IAsec;;CAted,EA6ea,MAAA,CAAZ;CACE,EAAa,CAAZ,EAAD,GAAA,CAAwB;CACvB,EAAe,CAAf,MAA0B,EAA3B,CAAA;CA/eH,IA6ea;;CA7eb,EAkfoB,MAAA,QAAnB;CAAuB,GAAA,QAAY,CAAb;CAlfvB,IAkfoB;;CAlfpB;;CA9DD;;CAAA,CAmjBM;CACL;CAAc,EAAA,CAAA,aAAE;CAAI,EAAJ,CAAA,EAAD;CAAf,IAAc;;CAAd,EAEkB,MAAA,MAAjB;CACE,SAAA,4BAAA;CAAA,EACC,GADD;CACC,CAAI,MAAH;CAAD,CACI,MAAH;CADD,CAEI,MAAH;CAHF,OAAA;AAMA,CAAA,EAAA,QAAS,oBAAT;CACE,EAAc,GAAR,EAAN;CAAA,EACc,GAAR,EAAN;CADA,EAEc,GAAR,EAAN;CAHF,MANA;AAYA,CAAA,EAAA,QAAS,uDAAT;AACE,CAAA,CAAA,EAAU,EAAJ,EAAN,CAAsB;AACtB,CADA,CAAA,CACwB,CAAd,EAAJ,EAAN,CAAsB;AACtB,CAFA,CAAA,CAEwB,CAAd,EAAJ,EAAN,CAAsB;CAHxB,MAZA;CAAA,EAmBY,CAAC,EAAb,GAAA;AAEA,CAAA,EAAA,QAAS,oBAAT;CACE,GAAe,EAAT,EAAN,CAAA;CAAA,GACe,EAAT,EAAN,CADA;CAAA,GAEe,EAAT,EAAN,CAFA;CADF,MArBA;CADe,YA2Bf;CA7BH,IAEkB;;CAFlB;;CApjBD;;CAAA,CAmlBA,CAAmB,EAAd,IAAc,CAAnB;CACE,OAAA,6BAAA;CAAA,EAAO,CAAP,IAAe,QAAR,CAAA;AACP,CAAA,EAA4B,CAA5B,EAAc;CAAd,WAAA;MADA;AAGA,CAAA;UAAA,iCAAA;sBAAA;CACE,CAA8B,CAAjB,CAAA,EAAb,GAA8B,EAAjB;CACX,GAAC,CAAD,GAAA;CACC,GAAA,GAAD,QAAA;CAFW,MAAiB;CADhC;qBAJiB;CAnlBnB,EAmlBmB;;CAYnB,CAAA,EAAG,CAAK,GAAR;CAAuB,EAAG,CAAA,KAAA;CACxB,GAAG,CAAuB,CAA1B,EAAW,EAAR;CACK,IAAD,KAAL,KAAA;MADF,EAAA;CAGW,CAAqC,GAAK,GAA3C,EAAR,KAAA,CAAA,EAAA;QAJsB;CAAA,IAAA;IA/lB1B;;CAAA,CAsmBM;CACJ,OAAA,EAAA;CAAA;CAAA,EAAa,CAAb,MAAA,SAAA;;CAEa,CAAM,CAAN,CAAA,CAAA,gBAAC;CACZ,EAAW,CAAV,EAAD,CAAA,KAAW;CAAX,CACoB,CAAX,CAAR,CAAD,CAAA;CAJF,IAEa;;CAFb,EAMO,EAAP,IAAO;CACL,SAAA,8EAAA;CAAA,EAAA,CAAC,CAAY,CAAb;CAAA,CAI2B,CAAnB,CAAA,EAAR,IAAQ;CAJR,EAKuB,CAAC,CAAD,CAAvB,CAA+B,aAA/B;AACA,CAAA,EAA4C,CAA5C,EAAA,cAAkC;CAAlC,aAAA;QANA;CAAA,EAUQ,CAAA,EAAR,IAAQ;AACR,CAAA;YAAA,+CAAA;yCAAA;CACE,CAAC,EAAuB,CAAJ,EAAA,CAApB;CAAA,EAKe,CAAA,EAAU,EAAzB,IAAe,sBAAU;CAIzB;CACE,EAAO,CAAP,IAAO,EAAP;CAAA,GACI,CAAJ;CAFF,OAGM,EAHN;CAIE,EAAG,EAAH;UAdJ;CAAA;uBAZK;CANP,IAMO;;CANP,EAkCS,IAAT,EAAS;CACP,EAAA,OAAA;CAAA,EAAA,CAAO,EAAP;CACC,EAAa,CAAb,CAAK,CAAN,GAAc,IAAd;CACM,CAAoC,CAArC,CAA0B,GAAD,GAAd,EAAd,GAAA;CADF,MAAc;CApChB,IAkCS;;CAlCT;;CAvmBF;;CAAA,CA+oBA,CAAsB,EAAjB,EAAL;CACE;CAAA;;CAAA,CAAA,CAAY,CAAZ,GAAC,CAAD;;CAAA,CAIkB,CAAP,CAAX,GAAC,CAAD,CAAY;CAAgB,EAAiB,CAAjB,IAAS,KAAV;CAJ3B,IAIW;;CAJX,CAOiB,CAAP,CAAV,GAAC,EAAU,CAAD;CACP,CAA0B,EAA1B,IAAS,CAAV,CAAA,GAAA;CARF,IAOU;;CAPV;;CAhpBF;;CAAA,CA2pBA,CAAwB,EAAnB,IAAL;CAEC;CAAA;;CAAA,CAAY,CAAA,CAAX,IAAA,CAAC;CACM,CAAc,CAAT,CAAN,SAAJ;CADH,IAAY;;CAAZ,CAKqB,CAAN,CAAd,IAAc,CAAb,EAAD;CACE,GAAA,MAAA;;GADkC,KAAX;QACvB;CAAA,EAAO,CAAP,EAAA;CACO,GAAG,EAAH,EAAA;CAAsB,GAAD,GAAJ,CAAA,OAAA;MAAjB,EAAA;CAAkD,GAAD,CAAJ,UAAA;QAFxC;CALf,IAKe;;CALf,EAUa,CAAZ,KAAC;CAAsB,EAAQ,CAAI,CAAZ,QAAD;CAVvB,IAUa;;CAVb,CAuBkB,CAAR,CAAT,CAAS,CAAT,EAAS,CAAR;CACC,SAAA,6HAAA;CAAA,CAAA,CAAK,EAAM,CAAX;CAAA,CACA,CAAK,EAAM,CAAX;CADA,CAEA,CAAK,EAAM,CAAX;CAFA,CAGA,CAAK,EAAM,CAAX;CAHA,CAIA,CAAK,EAAM,CAAX;CAJA,CAKA,CAAK,EAAM,CAAX;CALA,CAMA,CAAK,GAAL;CANA,CAOA,CAAK,GAAL;CAPA,CAAA,CAQS,GAAT;CARA,CAWA,CAAK,GAAL,EAAK;CAXL,CAYA,CAAK,GAAL;CAZA,CAaA,CAAK,GAAL;CAbA,CAeA,CAAK,GAAL;CAfA,CAgBA,CAAK,GAAL;CAhBA,CAiBA,CAAK,GAAL;AAOA,CAAA,EAAA,QAAS,oBAAT;CACE,EAAI,CAAJ,IAAA;CAAA,CAEqB,CAAZ,CAAI,CAAJ,CAAT,EAAA;CAFA,CAGqB,CAAZ,CAAI,CAAJ,CAAT,EAAA;CAEA,EAAyB,CAAtB,EAAa,EAAhB;CACE,EAAS,GAAT,EAAA,EAAA;GAC6B,CAAvB,EAFR,GAEQ,CAFR;CAGE,EAAS,GAAT,GAAA,CAAA;UARF;CAAA,EAUiB,GAAV,EAAP;CAXF,MAxBA;CAuCA,EAAmB,CAAhB,EAAH;AACE,CAAA,EAAA,UAAS,8EAAT;CACE,GAAO,MAAP,OAAA;CACE,CAAkB,CAAN,GAAa,GAAzB,GAAA;AAIA,CAAA,EAAA,cAAS,+EAAT;CACE,GAAG,UAAH,GAAA;CACE,CAAiB,CAAJ,GAAW,IAAxB,MAAA;CACA,qBAFF;gBADF;CAAA,YAJA;CAAA,EASY,GAAL,GAAe,CACP,EADf;YAXJ;CAAA,QADF;QAvCA;CAwDA,GAA2C,EAA3C,gBAAA;CAAA,EAAW,GAAJ,EAAP;QAxDA;CA0DA,KAAA,OAAO;CAlFV,IAuBU;;CAvBV;;CA7pBD;;CAAA,CAmvBM;CAQL;CAAA;;CAAA,EAAY,CAAX,GAAC,CAAD,CAAY;CACV,MAAA,GAAA;CAAA,EAA0B,CAAH,CAAiB,CAAxC;CAAA,EAAA,GAAM,EAAN;QAAA;CAAA,CAC2B,CAAvB,GAAJ,EAAI;CADJ,CAE2B,CAAvB,GAAJ,EAAI;CAFJ,CAG2B,CAAvB,GAAJ,EAAI;aAygFD;CAAA,CAvgFA,MAAH;CAugFG,CAvgFM,MAAH;CAugFH,CAvgFY,MAAH;CANH;CAAZ,IAAY;;CAAZ,CAkBgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,SAAA,UAAA;AAAG,CAAH,GAAG,CAAY,CAAf,EAAA;CACE,EAAI,KAAJ;CAAA,EACI,KAAJ;CADA,EAEI,KAAJ;QAHF;CAAA,EAAA,CAKK,EAAL;CALA,EAAA,CAMK,EAAL;CANA,EAAA,CAOK,EAAL;CAPA,CASkB,CAAlB,CAAU,EAAV;CATA,CAUkB,CAAlB,CAAU,EAAV;CAVA,EAWI,GAAJ;CAEA,EAAG,CAAA,CAAO,CAAV;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,EAAI,KAAJ;CAAA,EACO,KAAP;CADA,OAEA;CAAI,EAAA,eAAO;CAAP,gBACG;CAAQ,EAAI,kBAAL;CADV,gBAEG;CAAQ,EAAI,kBAAL;CAFV,gBAGG;CAAQ,EAAI,kBAAL;CAHV;CAFJ;CAAA,GAOK,IAAL;QAvBF;aAyBD;CAAA,CAAI,MAAH;CAAD,CAAU,MAAH;CAAP,CAAgB,MAAH;CA1BH;CAlBZ,IAkBY;;CAlBZ,CAyDgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,SAAA,GAAA;AAAG,CAAH,GAAG,CAAY,CAAf,EAAA;CACE,EAAI,KAAJ;CAAA,EACI,KAAJ;CADA,EAEI,KAAJ;QAHF;CAKA,GAAG,CAAK,CAAR;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,EAAO,KAAP;CAAA,EACI,KAAJ;CADA,CAGiB,CAAb,CAAC,IAAL;CAHA,CAIiB,CAAb,CAAC,IAAL;CAJA,CAKiB,CAAb,CAAC,IAAL;QAbF;aAeD;CAAA,CAAI,CAAI,KAAP;CAAD,CAAgB,CAAI,KAAP;CAAb,CAA4B,CAAI,KAAP;CAhBf;CAzDZ,IAyDY;;CAzDZ,CA4EgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,EAAO,CAAJ,EAAH;CAAc,GAAK,IAAL;QAAd;CACA,EAAO,CAAJ,EAAH;CAAc,GAAK,IAAL;QADd;CAEA,EAAO,CAAJ,EAAH;CAAgB,EAAW,YAAJ;QAFvB;CAGA,EAAO,CAAJ,EAAH;CAAgB,cAAO;QAHvB;CAIA,EAAO,CAAJ,EAAH;CAAgB,EAAW,YAAJ;QAJvB;CAKA,YAAO;CAlFV,IA4EY;;CA5EZ,CA+FgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,SAAA,UAAA;CAAA,EAAA,CAAK,EAAL;CAAA,EAAA,CACK,EAAL;CADA,EAAA,CAEK,EAAL;CAFA,CAIkB,CAAlB,CAAU,EAAV;CAJA,CAKkB,CAAlB,CAAU,EAAV;CALA,EAMI,GAAJ;CANA,EAOI,GAAJ;CAPA,EASO,EAAO,CAAd;CAEA,EAAG,CAAA,CAAO,CAAV;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,OAAA;CAAI,EAAA,eAAO;CAAP,gBACG;CAAQ,EAAI,kBAAL;CADV,gBAEG;CAAQ,EAAI,kBAAL;CAFV,gBAGG;CAAQ,EAAI,kBAAL;CAHV;CAAJ;CAAA,GAKK,IAAL;QAnBF;aAqBD;CAAA,CAAI,MAAH;CAAD,CAAU,MAAH;CAAP,CAAgB,MAAH;CAtBH;CA/FZ,IA+FY;;CA/FZ,CAkIgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,SAAA,YAAA;CAAA,EAAI,CAAI,CAAJ,CAAJ;CAAA,EACI,GAAJ;CADA,EAEI,GAAJ;CAFA,EAGI,GAAJ;CAHA,EAII,GAAJ;CAEA,EAAW,WAAJ;CAAP,YACO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAHG;CADP,YAKO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAHG;CALP,YASO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAHG;CATP,YAaO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAHG;CAbP,YAiBO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAHG;CAjBP,YAqBO;CACH,EAAI,OAAJ;CAAA,EACI,OAAJ;CADA,EAEI,OAAJ;CAxBJ,MANA;aAgCD;CAAA,CAAI,CAAI,KAAP;CAAD,CAAgB,CAAI,KAAP;CAAb,CAA4B,CAAI,KAAP;CAjCf;CAlIZ,IAkIY;;CAlIZ,CAkLgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,MAAA,GAAA;CAAA,EAAA,CAAK,EAAL;CAAA,EAAA,CACK,EAAL;CADA,EAAA,CAEK,EAAL;CAEA,EAAO,CAAJ,EAAH,CAAA;CACE,CAAkC,CAA9B,CAAI,CAAK,GAAb;MADF,EAAA;CAGE,GAAK,CAAL,GAAA;QAPF;CASA,EAAO,CAAJ,EAAH,CAAA;CACE,CAAkC,CAA9B,CAAI,CAAK,GAAb;MADF,EAAA;CAGE,GAAK,CAAL,GAAA;QAZF;CAcA,EAAO,CAAJ,EAAH,CAAA;CACE,CAAkC,CAA9B,CAAI,CAAK,GAAb;MADF,EAAA;CAGE,GAAK,CAAL,GAAA;QAjBF;CAAA,EAmBI,GAAJ;CAnBA,EAoBI,GAAJ;CApBA,EAqBI,GAAJ;aAq0EG;CAAA,CAn0EA,CAAI,KAAP;CAm0EG,CAn0EY,CAAI,KAAP;CAm0ET,CAn0EwB,CAAI,KAAP;CAxBf;CAlLZ,IAkLY;;CAlLZ,CAwNgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,MAAA,GAAA;CAAA,EAAA,CAAK,EAAL;CAAA,EAAA,CACK,EAAL;CADA,EAAA,CAEK,EAAL;AAEsB,CAJtB,EAII,GAAJ;AACM,CALN,EAKI,GAAJ;AACsB,CANtB,EAMI,GAAJ;CAEA,EAAO,CAAJ,EAAH,GAAA;CACE,CAAyB,CAArB,CAAa,CAAZ,GAAL,IAAa;MADf,EAAA;CAGE,GAAK,CAAL,GAAA;QAXF;CAaA,EAAO,CAAJ,EAAH,GAAA;CACE,CAAyB,CAArB,CAAa,CAAZ,GAAL,IAAa;MADf,EAAA;CAGE,GAAK,CAAL,GAAA;QAhBF;CAkBA,EAAO,CAAJ,EAAH,GAAA;CACE,CAAyB,CAArB,CAAa,CAAZ,GAAL,IAAa;MADf,EAAA;CAGE,GAAK,CAAL,GAAA;QArBF;aAuBD;CAAA,CAAI,CAAI,KAAP;CAAD,CAAgB,CAAI,KAAP;CAAb,CAA4B,CAAI,KAAP;CAxBf;CAxNZ,IAwNY;;CAxNZ,CA8PgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,SAAA,qBAAA;AAAG,CAAH,GAAG,CAAY,CAAf,EAAA;CACE,EAAI,KAAJ;CAAA,EACI,KAAJ;CADA,EAEI,KAAJ;QAHF;CAAA,EAKS,GAAT;CALA,EAMS,EANT,CAMA;CANA,EAOS,GAAT,CAPA;CAAA,GASK,EAAL;CATA,GAUK,EAAL;CAVA,GAWK,EAAL;CAEA,EAAO,CAAJ,EAAH,QAAA;CACE,CAAgB,CAAZ,CAAI,IAAR,IAAI;MADN,EAAA;CAGE,EAAI,KAAJ,GAAK,CAAL;QAhBF;CAkBA,EAAO,CAAJ,EAAH,QAAA;CACE,CAAgB,CAAZ,CAAI,IAAR,IAAI;MADN,EAAA;CAGE,EAAI,KAAJ,GAAK,CAAL;QArBF;CAuBA,EAAO,CAAJ,EAAH,QAAA;CACE,CAAgB,CAAZ,CAAI,IAAR,IAAI;MADN,EAAA;CAGE,EAAI,KAAJ,GAAK,CAAL;QA1BF;CAAA,CAAA,CA4BI,GAAJ;CA5BA,EA6BI,GAAJ;CA7BA,EA8BI,GAAJ;aAgvEG;CAAA,CA9uEA,MAAH;CA8uEG,CA9uEM,MAAH;CA8uEH,CA9uEY,MAAH;CAjCH;CA9PZ,IA8PY;;CA9PZ,CA+SgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,MAAA,GAAA;AAAG,CAAH,GAAG,CAAY,CAAf,EAAA;CACE,EAAI,KAAJ;CAAA,EACI,KAAJ;CADA,EAEI,KAAJ;QAHF;CAAA,CAKI,CAAA,GAAJ;CALA,EAMI,GAAJ;CANA,EAOI,GAAJ;CAEA,EAAO,CAAJ,EAAH,MAAA;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,EAAI,KAAJ,IAAI;QAZN;CAcA,EAAO,CAAJ,EAAH,MAAA;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,EAAI,KAAJ,IAAI;QAjBN;CAmBA,EAAO,CAAJ,EAAH,MAAA;CACE,EAAI,KAAJ;MADF,EAAA;CAGE,EAAI,KAAJ,IAAI;QAtBN;aAyBD;CAAA,CAAI,CAAI,GAAR,EAAC;CAAD,CAAmB,CAAI,EAAvB,GAAgB;CAAhB,CAAiC,CAAI,IAArC,CAA8B;CA1BpB;CA/SZ,IA+SY;;CA/SZ,CA2UgB,CAAJ,CAAX,GAAC,CAAD,CAAY;CACV,EAAA,OAAA;AAAG,CAAH,GAAG,CAAY,CAAf,EAAA;CACE,EAAI,KAAJ;CAAA,EACI,KAAJ;CADA,EAEI,KAAJ;QAHF;CAAA,CAKmB,CAAnB,CAAO,EAAP,EAAM;CACL,EAAD,CAAC,IAAD,KAAA;CAlVH,IA2UY;;CA3UZ,CAoVgB,CAAJ,CAAX,GAAC,CAAD,CAAY;;CApVb;;CA3vBD;;CAAA,CAolCM;CACJ;CAAA;;CAAA,CAAA,CAAU,CAAV,CAAC,CAAD;;CAAA,CAKE,CAFO,CAAT,CAAC,QAAQ,CAAA,CAAA,CAAA,CAAA;;CAHT,CAamB,CAAT,CAAV,CAAC,CAAS,CAAV,EAAW;CACT,SAAA,qBAAA;CAAA,GAAG,EAAH;CACE;CAAA;cAAA,6BAAA;4BAAA;CACE,CAA2B,EAAxB,CAAK,CAAL,IAAH;CACE,CAAQ,EAAR,CAAK,CAAL;MADF,MAAA;CAAA;YADF;CAAA;yBADF;QADQ;CAbV,IAaU;;CAbV,CAqBkB,CAAT,CAAT,CAAC,CAAD,GAAU;CAER,SAAA;AAAG,CAAH,GAAG,CAAiB,CAApB,EAAA;CACE,EAAQ,EAAR,CAAA,EAAA;CAAA,EACA,CADA,IACA;CADA,EAGS,CAHT,EAGA,EAAA;CAHA,EAIO,CAAP,CAJA,GAIA;CAJA,CAKA,CAAK,KAAL;QANF;CASA,CAAgB,EAAA,CAAA,CAAhB,SAA4B;CAA5B,IAAA,UAAO;QATP;AAW0B,CAA1B,GAAsB,EAAtB;CAAA,CAAA,CAAgB,CAAf,EAAO,EAAR;QAXA;CAAA,GAYC,EAAD;CAAiB,CAAU,IAAR,EAAA;CAAF,CAAkB,MAAA;CAZnC,OAYA;CAEA,GAAA,SAAO;CArCT,IAqBS;;CArBT;;CArlCF;;CAAA,CA4nCA,CAAc,EAAT;;CA5nCL,CA+nCA,CAAqB,EAAhB,CAAL;CAEE;CAAA;;CAAA,EACC,CADD,EAAC;CACA,CAAS,IAAR;CAAD,CACS,IAAR;CADD,CAEe,IAAd,MAAA;CAFD,CAGgB,IAAf,OAAA;CAHD,CAIc,IAAb,KAAA;CAJD,CAKS,IAAR;CANF,KAAA;;CAAA,CASkB,CAAP,CAAX,EAAC,EAAD,CAAY,CAAD;CAA2B,EAAW,CAAR,CAAH,IAAG,IAAR;CATjC,IASW;;CATX;;CAjoCF;;CAAA,CA6oCA,CAAiB,EAAZ;CACH;CAAA;;CAAA,CAAC,CAAc,CAAf,OAAA,uCAAA;;CAAA,CAKC,CAAU,CAAX,IAAA,CAAY;CACV,GAAoB,EAApB,KAAA;CAAA,IAAA,UAAO;QAAP;CACA,EAAgB,CAAA,EAAhB,KAAgB;CAAhB,IAAA,UAAO;QADP;CAEA,EAAuB,CAAf,OAAD,EAAA;CART,IAKW;;CALX,CAUC,CAAa,CAAd,KAAe,EAAf;CACE,GAAA,MAAA;CAAyB,EAAJ,CAAA,CAAkC,MAAnB,EAApC,IAAqB,QAArB;CAXF,IAUc;;CAVd,CAaC,CAAa,CAAd,KAAe,EAAf;CACE,MAAA,GAAA;CAAA,EAAU,CAAW,CAAX,CAAV,CAAA,IAAU;CACH,GAAG,EAAH,CAAA;CAAwB,IAAQ,EAAR,CAAgB,OAAxB;MAAhB,EAAA;CAAA,cAAqD;QAFhD;CAbd,IAac;;CAbd,CAiBC,CAAa,CAAd,KAAe,EAAf;CACE,EAAG,CAAA,EAAH,KAAG;AACM,CAAP,GAAG,CAAS,CAAZ,EAAA,GAAwB;CAClB,EAAD,CAAH,MAAA,2DAAU;MADZ,IAAA;CAIE,GAAG,CAAK,KAAR,CAAG;CACD,EAAG,CAAH,QAAA,mCAAA;CACA,iBAAA;YAFF;CAIQ,CAAR,CAAE,EAAK,MAAP,MAAA,CAAqC;UATzC;QADY;CAjBd,IAiBc;;CAjBd,CA8BC,CAAU,CAAX,IAAA,CAAY;CACF,CAAR,CAAE,EAAK,KAAP,CAAA,EAAA,KAA2C;CA/B7C,IA8BW;;CA9BX,CAkCC,CAAU,CAAX,IAAA,CAAY;CACV,QAAA,CAAA;CAAA,EACC,GADD,GAAA;CACC,CAAO,EAAN,IAAA;CAAD,CACS,EADT,EACC,EAAA;CADD,CAEO,EAAN,IAAA;CAFD,CAGa,EAHb,IAGC,EAAA;CAJF,OAAA;CAAA,EAMO,CAAP,EAAA,KAAO;CACP,GAA0B,EAA1B,iBAAA;CAAA,EAAO,CAAP,IAAA,CAAiB;QAPjB;CADS,EASa,UAArB,SAAA;CA3CH,IAkCW;;CAlCX;;CA9oCF;;CAAA,CA6rCA,CAAc,CAAd,CAAK,IAAE;CACL,GAAA,8CAAA;CACG,CAAkB,EAAlB,CAAD,GAAS,CAAT,IAAA;MADF;CAGG,CAAqB,EAArB,CAAD,IAAA,EAAY,EAAZ;MAJU;CA7rCd,EA6rCc;;CA7rCd,CAmsCA,CAAqB,CAAA,CAAhB,IAAE,EAAP;CACE,IAAA,GAAA;;GAD2B,GAAP;MACpB;CAAA,EAAO,CAAP,OAAO;CAAP,CAGiD,CAAzC,CAAR,CAAA,EAAQ,CAAA,YAAA;CACC,EAAgB,CAAzB,IAAQ,GAAR;CAxsCF,EAmsCqB;;CAnsCrB,CA0sCA,CAAkB,CAAA,CAAb,GAAL,CAAO;CACL,IAAA,GAAA;;GADmC,GAAZ;MACvB;CAAA;CACE,CAAU,CAAF,CAAA,CAAR,CAAA,EAAQ;AAC+B,CAAvC,GAAgB,CAAK,CAArB,GAAA;CAAA,IAAA,UAAO;QAFT;CAAA,KAAA,EAGM;CACJ,EAAG,CAAH,CAAA,CAAA,iBAAW;MAJb;CAMG,CAAD,CAAqC,CAAvC,EAA0B,EAAP,CAAnB,EAAA;CACM,EAAD,CAAH,CAAA,QAAA,SAAW;CADb,IAAuC;CAjtCzC,EA0sCkB;;CA1sClB,CAstCA,CAAiB,CAAA,CAAZ,EAAL,EAAO;CACL,EAAA,KAAA;CAAA,EAAA,CAAA,CAAM,GAAQ,KAAR;CAAN,EACG,CAAH,IAAU;CADV,EAEG,CAAH,CAAA,KAAuB;CAFvB,EAGG,CAAH,EAAA,IAAwB;CAExB,GAAA,EAAS,UAAT;CACE,EAAG,CAAU,CAAb,CAAA,UAAA;CAAA,EACG,CAAW,EAAd,UADA;MANF;CASA,EAAA,QAAO;CAhuCT,EAstCiB;;CAttCjB,CAmuCA,CAAkB,CAAA,CAAb,GAAL,CAAO;;GAAmB,GAAP;MACjB;CAAA,EAAO,CAAP,OAAO;CACP,EAAiC,CAAzB,EAAM,EAAY,CAAnB,EAAA;CAruCT,EAmuCkB;;CAnuClB,CAqvCM;CACL;CAAc,EAAA,CAAA,WAAE;CAEb,EAFa,CAAA,EAAD;CAEZ,EAAU,CAAT,EAAD;CAAA,EAGC,CADA,EAAD,CAAA;CACC,CAAe,MAAd,IAAA;CAAD,CACU,CADV,IACC,CAAA;CAJF,OAAA;CAAA,EAOW,CAAV,EAAD,CAAA;CAPA,EAUa,CAAZ,EAAD,EAAqD,KAAR,qCAAnC;CAVV,EAYgB,CAAf,CAAD,CAAA,IAA6B;CAZ7B,EAaiB,CAAhB,EAAD,IAA8B;CAb9B,EAeW,CAAV,EAAD,CAAA,GAAW;CAfX,CAgBwC,EAAvC,CAAD,CAAA,CAAQ,QAAR;CAhBA,CAiBsC,CAAzB,CAAZ,CAAY,CAAb,CAAqB,EAArB,GAAa;CAjBb,EAkBa,CAAZ,EAAD,GAAA;CApBH,IAAc;;CAAd,CAuBW,CAAA,KAAV,CAAW;CAAQ,CAAoB,EAApB,IAAU,KAAX;CAvBnB,IAuBW;;CAvBX,EA0BkB,CAAA,KAAC,MAAlB;CACE,EAAwB,CAAvB,EAAD,CAAQ,KAAR;CACA,GAAA,SAAO;CA5BV,IA0BkB;;CA1BlB,EAgCU,IAAT,EAAU;CACR,EAAmB,CAAlB,EAAD,CAAQ;CACR,GAAA,SAAO;CAlCV,IAgCU;;CAhCV,EAqCa,MAAA,CAAZ;CACE,SAAA,aAAA;CAAA,EAAa,CAAC,EAAd,GAAA,CAAA;AAEA,CAAA,EAAA,QAAS,uDAAT;CACE,EAAkB,CAAjB,IAAD,CAAW,CAAkB;CAA7B,EACa,CAAZ,IAAD,CAAW,CAAkB;CAD7B,EAEa,CAAZ,IAAD,CAAW,CAAkB;CAF7B,EAGa,CAAZ,IAAD,CAAW,CAAkB;CAJ/B,MAFA;CAQA,GAAA,SAAO;CA9CV,IAqCa;;CArCb,EAiDY,MAAX;CAAe,CAAsB,EAAtB,CAAD,IAAY,IAAZ;CAjDf,IAiDY;;CAjDZ,EAoDe,EAAA,IAAC,GAAf;AACK,CAAH,GAAG,CAAA,CAAH,EAAA;CACE,EAAQ,EAAR,GAAA;AACM,CAAA,EAFR,CAEQ,CAAA,CAFR,EAAA;CAGE,EAAQ,EAAR,GAAA;QAHF;AAKgB,CAAhB,GAAY,CAAZ,CAAA;CAAA,GAAA,WAAO;QALP;CAAA,GAOC,EAAD,EAAW,GAAY;CACtB,CAAO,EAAN,EAAY,EAAZ,GAAD;CAAA,CACM,CAAL,EADD,GACC;CADD,CAEQ,EAFR,CAEC,GAAA;CAVF,OAOA;CAKA,GAAA,SAAO;CAjEV,IAoDe;;CApDf,EAqEgB,MAAA,IAAf;CACE,SAAA,iEAAA;CAAA,EAAa,CAAC,EAAd,IAAA;CAAA,EACY,CAAC,EAAb,GAAA;AAEA,CAAA;GAAA,SAAS,+CAAT;CACE,EACC,KADD,EAAA;CACC,CAAI,QAAH;CAAD,CACI,CAAa,OAAhB;CADD,CAEI,CAAa,OAAhB;CAFD,CAGI,CAAa,OAAhB;CAJF,SAAA;CAAA,EAOC,KADD,CAAA;CACC,CAAI,OAAU,CAAb;CAAD,CACI,CAAY,MAAF,CAAb;CADD,CAEI,CAAY,MAAF,CAAb;CAFD,CAGI,CAAY,MAAF,CAAb;CAVF,SAAA;CAAA,CAYgD,CAAvC,CAAiB,EAA1B,CAAgB,CAAhB,CAAS,CAAA,EAAA;CAZT,EAcW,CAAI,EAAT,EAAN;CAdA,EAeW,CAAI,EAAT,EAAN;CAfA,EAgBW,CAAI,EAAT,EAAN;CACA,GAA8B,IAA9B,QAAA;CAAA,EAAW,GAAL,GAAc,CAApB;UAjBA;CAAA,EAmBkB,CACc,EAAR,CAAe,CADvC,EAAW;CAnBX,EAsBa,CACmB,EAAR,CAAe,CADvC,EAAW;CAtBX,EAyBa,CACmB,EAAR,CAAe,GAD5B;CA1Bb;uBAJa;CArEhB,IAqEgB;;CArEhB;;CAtvCD;;CAAA,CA+1CM;CACL;CAAc,EAAA,CAAA,YAAA;CACX,SAAA,UAAA;CAAA;CAAA,UAAA,gCAAA;yBAAA;CACE,EAAa,CAAX,IAAF,CAAc;GACZ,MAAA,QAAA;AACgB,CAAd,GAAU,CAAS,OAAnB;CAAA,mBAAA;cAAA;CACQ,CAAqB,EAArB,CAAR,EAAQ,EAAR,UAAA;CAHS,UACX;CADW,GAAH,KAAG;CADf,MAAA;CAAA,EAMS,CAAR,CAAD,CAAA;CAPH,IAAc;;CAAd;;CAh2CD;;CAAA,CAy2CA,CAAA,CAAU,EAAA;;CAz2CV,CA82CM;CACL;CAAA,CAA6B,CAAJ,CAAxB,CAAwB,IAAvB,YAAD;CACG,EAAI,EAAJ,QAAD;CADH,IAAyB;;CAAzB,CAG+B,CAAN,CAAxB,CAAwB,IAAvB,YAAD;CACE,GAAA,MAAA;CAAA,EAAI,CAAI,CAAJ,CAAJ;CAAA,EACI,EAAQ,CAAZ;CAEA,YAAK;CAAA,CAAK,MAAH;CAAF,CAAW,MAAH;CAJS,OAItB;CAPH,IAGyB;;CAMX,EAAA,CAAA,eAAE;CAAM,EAAN,CAAA,EAAD;CAAO,EAAA,CAAC,EAAD;CATtB,IASc;;CATd,EAaa,MAAA,CAAZ;CACE,GAAA,MAAA;CAAA,EAAI,CAAC,CAAsB,CAA3B,IAAiB;CAAjB,EACI,CAAE,CAAO,CAAb,IAA0B;CAE1B,YAAK;CAAA,CAAK,MAAH;CAAF,CAAW,MAAH;CAJH,OAIV;CAjBH,IAaa;;CAbb,CAqB2B,CAAR,CAAA,CAAA,IAAC,OAAnB;CAGE,KAAA,IAAA;AAAoD,CAApD,EAAS,CAAC,CAAO,CAAjB,IAA8B;CAE9B,EAAY,CAAT,EAAH,GAAwB;CACtB,cAAK;CAAA,CAAK,QAAH;CAAF,CAAW,QAAH;CAAR,CAAiB,QAAH;CAAd,CAAuB,QAAH;CAD3B,SACE;QAHF;CAKA,YAAO;CAAA,CACF,EAAC,EAAY,EAAhB,CAAgB;CADX,CAEF,CAAsB,CAArB,EAAY,EAAhB,CAAgB;CAFX,CAGF,CAAsB,CAArB,EAAY,EAAhB,CAAgB;CAHX,CAIF,CAAsB,CAArB,EAAY,EAAhB,CAAgB;CAZF,OAQhB;CA7BH,IAqBmB;;CArBnB,CAsC2B,CAAR,CAAA,CAAA,IAAC,OAAnB;CACE,KAAA,IAAA;AAAoD,CAApD,EAAS,CAAC,CAAO,CAAjB,IAA8B;CAE9B,EAAmB,CAAT,EAAV,GAA+B;CAA/B,aAAA;QAFA;CAAA,EAIuB,CAAtB,EAAD,GAAa;CAJb,EAKsB,CAArB,EAAD,GAAa;CALb,EAMsB,CAArB,EAAD,GAAa;CANb,EAOsB,CAArB,EAAD,GAAa;CAEb,GAAA,SAAO;CAhDV,IAsCmB;;CAtCnB,CAmDe,CAAJ,KAAV,CAAW;CACT,EAAA,OAAA;CAAA,CAAgC,CAAhC,CAAO,CAAD,CAAN,eAAM;CAEN,YAAO;CAAA,CACF,CAAa,CAAZ,IAAJ,CAAgB;CADX,CAEF,CAAa,CAAZ,IAAJ,CAAgB;CAFX,CAGF,CAAa,CAAZ,IAAJ,CAAgB;CAHX,CAIF,CAAa,CAAZ,IAAJ,CAAgB;CAPV,OAGR;CAtDH,IAmDW;;CAnDX,CA8De,CAAJ,CAAA,IAAV,CAAW;CACT,EAAA,OAAA;CAAA,CAAgC,CAAhC,CAAO,CAAD,CAAN,eAAM;CAAN,EAEa,CAAZ,EAAD,GAAa;CAFb,EAGa,CAAZ,EAAD,GAAa;CAHb,EAIa,CAAZ,EAAD,GAAa;CACZ,EAAY,CAAZ,KAAY,IAAb;CApEH,IA8DW;;CA9DX;;CA/2CD;;CAAA,CAu7CM;CACJ;CAAA;;CAAA,CAAA,CAAW,CAAX,EAAC,CAAD;;CAAA,CAEkB,CAAP,CAAX,EAAC,EAAD,CAAY;CAAkB,EAAgB,CAAhB,GAAQ,MAAT;CAF7B,IAEW;;CAFX,CAGoB,CAAV,CAAV,EAAC,CAAD,EAAW;CAAyB,CAA6B,EAA7B,CAAD,EAAS,MAAT;CAHnC,IAGU;;CAHV;;CAx7CF;;CAAA,CA67CA,CAAe,EAAV,CAAL;;CA77CA,CAi8CA,CAAuB,EAAlB,GAAL;CAGE;CAAA,EAAa,CAAb,CAAkB,CAAlB,CAA+B,CAA9B;;CAEY,EAAA,CAAA,cAAE;CACb,SAAA,EAAA;CAAA,EADa,CAAA,EAAD;CACZ;;CAAA;CAAA,CAAA,CAAe,CAAd,EAAD,KAAA;CAAA,EACgB,CAAf,EAAD,MAAA;CAJF,IAEa;;CAFb,EAMA,MAAM;CACJ,GAAc,EAAd,KAAA;CAAA,aAAA;QAAA;CACC,EAAD,CAAC,OAAW,EAAZ;CARF,IAMK;;CANL,EAYa,MAAA,EAAb;CAEE,IAAA,KAAA;CAAA,GAAG,CAAuB,CAA1B,KAAe;CACb,CAAiB,EAAjB,CAAK,EAAL,CAAA,QAAA;CACA,GAAwB,IAAxB,eAAA;CAAA,GAAC,MAAD;UADA;CAGA,GAAA,WAAO;QAJT;CAAA,EAMc,CAAb,CAAa,CAAd,IAAA,CAA0B;CAE1B,GAAQ,MAAU,IAAX;CAAP,GACkB,EAAL,MADb,CACO;CACH,EAAQ,CAAC,CAAT,KAAA,CAAsB;CAAtB,GACC,CAAD,KAAA,EAAA;CACC,GAAA,OAAD,MAAA;CAJJ,GAKkB,EAAL,OAAN;CACH,GAAC,MAAD,OAAA;CAAA,GACC,MAAD;CACC,GAAA,OAAD,MAAA;CARJ,GASkB,EAAL,KATb,EASO;CACF,CAA+B,CAAhC,CAAC,CAAD,KAAwB,CAAxB,MAAA;CAVJ,GAWkB,EAAL,OAAN;CACF,GAAA,SAAD,IAAA;CAZJ;CAcK,GAAA,SAAD,IAAA;CAdJ,MAVW;CAZb,IAYa;;CAZb,EAsCS,IAAT,CAAS,CAAC;CACR,EAAc,CAAb,EAAD,EAAA,EAAA;CAAA,EACoB,CAAnB,EAAD,GAA2C,CAAvB,EAApB;CAEC,GAAA,OAAD,EAAA;CA1CF,IAsCS;;CAtCT,CA4CW,CAAA,MAAX;CAEE,SAAA,yEAAA;SAAA,GAAA;CAAA,EAAc,CAAb,EAAD,IAAA;CAAA,EAEI,CAAC,EAAL,GAAgB;CAFhB,EAGmB,CAAI,CAAJ,CAAnB,EAAgD,QAAhD;CAHA,EAIS,GAAT,UAAS;CAJT,EAKa,GAAb,EAAyC,EAAzC;AAEA,CAAA;GAAA,SAAS,sFAAT;CACE,EAAQ,EAAR,CAAA,EAAA;CAAA,EACA,EAAM,CAAiB,EAAvB,EAAe;CAEf,GAAG,CAAK,CAAR,EAAA;CACE,EAAI,EAAA,IAAM,CAAV;CAAgB,CAAD,CAAF,CAAA,CAAA,cAAA;CAAT,UAAM;CAAV,EACO,CAAP,MAAA;CADA,GAEC,SAAD;MAHF,IAAA;CAKE,CAAkB,CAAJ,EAAA,IAAC,CAAf;GACE,MAAA,UAAA;CAAM,CAAD,CAAF,CAAA,CAAA,gBAAA;CADS,YACZ;CADY,CAAI,CAAP,EAAA,MAAG;UATlB;CAAA;uBATS;CA5CX,IA4CW;;CA5CX,EAsEe,MAAA,IAAf;CACE,CAAkB,EAAH,CAAV,CAAL,CAAA,GAAA,IAAA;CAEA,GAAG,CAAoB,CAAvB,IAAc;CACX,GAAA,KAAD,EAAA,IAAA;MADF,EAAA;CAGG,GAAA,KAAD,GAAA,GAAA;QANW;CAtEf,IAsEe;;CAtEf,EA+Ee,MAAA,IAAf;CACE,EAAG,CAA2B,CAA9B,CAAA,IAAwC,SAA7B;CAAX,CACmB,EAAH,EAAhB,CAAA,GAA8B;CAD9B,EAEG,CAAiB,CAApB,CAAA,GAAW,CAAmB,EAA9B;CAEC,GAAA,OAAD,EAAA;CApFF,IA+Ee;;CA/Ef,CAuFoB,CAAP,CAAA,CAAA,IAAC,EAAd;CACE,SAAA,iBAAA;CAAA,EAAG,CAAQ,CAAX,CAAA,GAAW,CAAqC,CAArC,EAAA;CAAX,CACkB,EAAH,CAAV,CAAL,CAAA,OAAA;CACC,CAAW,EAAX,IAAC;CAAD,CACc,IADd,EACC,GAAA;CADD,CAEa,GAFb,GAEC,EAAA;CAFD,CAGW,CAHX,KAGC;CALF,OACA;CADA,EAOK,CAAL,EAAA;CAAK,CAAK,MAAH;CAAF,CAAW,MAAH;CAAR,CAAiB,MAAH;CAAd,CAAuB,MAAH;CAPzB,OAAA;CAAA,EAQgB,CAAA,EAAhB,GAAA;AAEA,CAAA,EAAA,QAAS,0BAAT;CACE,EAAA,KAAA,CAAS;CAAT,EAES,CAAL,IAAJ,CAAsB;CAFtB,EAGS,CAAL,IAAJ,CAAsB;CAHtB,EAIS,CAAL,IAAJ,CAAsB;CAJtB,EAKS,CAAL,IAAJ,CAAsB;CALtB,CAO4C,CAA5C,CAAO,IAAP,CAA2B,CAAV;CACjB,GAAsB,IAAtB,KAAA;CAAA,EAAG,CAAS,MAAZ;UARA;CAAA,EAUoB,CAAnB,IAAD,CAAa;CAVb,EAWe,CAAd,IAAD,CAAa;CAXb,EAYe,CAAd,IAAD,CAAa;CAZb,EAae,CAAd,IAAD,CAAa;CAdf,MAVA;CA0BA,GAAG,CAAK,CAAR;CACQ,GAAN,CAAK,EAAA,QAAL;MADF,EAAA;CAGG,GAAA,SAAD,EAAA;QA9BS;CAvFb,IAuFa;;CAvFb,CAwHqB,CAAP,CAAA,CAAA,IAAC,GAAf;CACE,SAAA,2GAAA;CAAA,EAAO,CAAP,EAAA,IAAkB;CAAlB,EACO,CAAP,EAAA,IAAkB;CADlB,EAEU,CAAC,EAAX,CAAA,GAAqB;CAFrB,EAGI,CAAC,EAAL,GAAgB;CAHhB,EAKS,CAAC,EAAV,IAAoB;CALpB,EAMa,CAAI,EAAjB,IAAA;CANA,CAAA,CAQS,GAAT;CARA,EAUG,CAAqC,CAAxC,CAAA,IAAkD,mBAAvC;CAVX,CAYwB,CAAhB,CAAI,CAAZ,CAAA,IAAqC;CAZrC,CAaoB,CAApB,CAAU,CAAe,CAAzB,IAAsC;CAbtC,EAeU,GAAV,CAAA,GAAW;CAfX,EAiBgB,CAAA,EAAhB,GAAA;AAEA,CAAA,EAAA,QAAS,0BAAT;CACE,EAAA,KAAA,CAAS;CAAT,EACe,KAAf,IAAA;AAEA,CAAA,EAAA,UAAS,gGAAT;AACE,CAAA,EAAA,YAAS,+FAAT;CACE,CAAsC,CAA9B,EAAR,IAAiB,GAAjB,IAAQ;CAAR,EACsB,EAAc,CAA7B,MAAP;CADA,EAEsB,EAAc,CAA7B,MAAP;CAFA,EAGsB,EAAc,CAA7B,MAAP;AAEA,CALA,CAAA,UAKA;CANF,UADF;CAAA,QAHA;CAAA,CAY6B,CAA7B,CAAO,EAAD,CAAA,CAAN,KAAM;CAZN,EAcsB,CAArB,IAAD,IAAc;CAdd,EAegB,CAAf,IAAD,IAAc;CAfd,EAgBgB,CAAf,IAAD,IAAc;CAhBd,EAiBgB,CAAf,IAAD,CAAmC,GAArB;CAlBhB,MAnBA;CAuCA,GAAG,CAAK,CAAR;CACQ,GAAN,CAAK,EAAA,QAAL;MADF,EAAA;CAGG,GAAA,SAAD,EAAA;QA3CU;CAxHd,IAwHc;;CAxHd,EAuKe,CAAA,KAAC,IAAhB;CACE,SAAA,CAAA;CAAA,GAAoE,EAApE;CAAA,EAAG,CAAQ,CAAX,GAAA,CAAW,CAA6C,WAA7C;QAAX;AACA,CADA,CAAA,EACC,EAAD,IAAA;CADA,CAGkB,EAAH,CAAV,CAAL,CAAA,QAAA;CACC,CAAW,EAAX,IAAC;CAAD,CACiB,EAAC,IAAjB,EADD,IACC;CADD,CAEc,IAFd,EAEC,GAAA;CANF,OAGA;CAKA,GAAG,CAAe,CAAlB,EAA0B,EAAvB;CACD,GAAG,CAAoB,CAAM,EAA7B,EAAc;AACZ,CAAA,EAAA,YAAS,2FAAT;CACE,EAAkB,CAAjB,KAAY,GAAb;CADF,UADF;UAAA;CAIA,GAAoD,IAApD;CAAA,EAAG,CAAiB,CAApB,IAAW,CAAX,EAAA;UAJA;CAAA,CAKkB,EAAH,CAAV,EAAL,CAAA,EAAA,OAAA;CAEC,GAAA,OAAD,IAAA;QAjBW;CAvKf,IAuKe;;CAvKf,CA2LwB,CAAT,CAAA,EAAA,CAAA,EAAC,IAAhB;CACE,SAAA,MAAA;CAAA,EAAA,GAAA;CAAI,CAAK,MAAH;CAAF,CAAW,MAAH;CAAR,CAAiB,MAAH;CAAlB,OAAA;AAEA,CAAA,EAAA,QAAS,qFAAT;CACE,EAAG,CAAM,EAAO,EAAhB;CAAA,EACG,CAAM,EAAO,EAAhB;CADA,EAEG,CAAM,EAAO,EAAhB;CAHF,MAFA;CAAA,EAOG,CAPH,EAOA,CAAQ;CAPR,EAQG,CARH,EAQA,CAAQ;CARR,EASG,CATH,EASA,CAAQ;CAVK,YAWb;CAtMF,IA2Le;;CA3Lf,CAyMqB,CAAR,EAAA,IAAC,EAAd;CACE,SAAA,GAAA;SAAA,GAAA;CAAA,EAAA,EAAM,CAAN,EAAc,KAAR;CAAN,EACG,GAAH,GAAa;CACX,CAA6B,CAA7B,EAAK,CAAL,CAAa,CAAb,CAAA,CAAgD;CAAhD,CACgD,CAA9B,EAAb,CAAa,CAAa,CAA/B,CAAA,CAAgE,EAA9C;CADlB,EAEkB,CAFlB,CAEK,GAAL,CAAA;CAFA,EAIe,EAAd,GAAD,CAAA;CAEC,IAAA,MAAD,IAAA;CARF,MACa;CADb,CAUa,CAAF,GAAX,EAAA,GAAW;CACP,EAAD,KAAO,KAAV,GAAU;CArNZ,IAyMa;;CAzMb;;CAp8CF;;CAAA,CA6pDA,CAAoB,EAAf;CACH;CAAA;;CAAA,CAAA,CAAS,CAAT,CAAC;;CAAD,EAEA,CAAA,CAAC,CAAK,GAAC;CAAD,YAAY;CAFlB,IAEM;;CAFN,EAGA,CAAA,CAAC,CAAK,GAAC;CAAY,GAAA,CAAM,CAAA,OAAP;CAHlB,IAGM;;CAHN,CAIa,CAAb,CAAA,CAAC,IAAM;CAAe,EAAc,CAAd,CAAM,QAAP;CAJrB,IAIM;;CAJN,CAKmB,CAAT,CAAV,CAAC,CAAS,CAAV,CAAU,CAAC;CACT,SAAA,EAAA;CAAA,EAAW,GAAX,GAAW,CAAX;CACW,CAAmB,CAAd,CAAd,CAAe,CAAD,EAAN,OAAR;CADF,CAEE,KAFS;CAIX,EAAO,CAAC,EAAD,OAAA;CAVT,IAKU;;CALV,EAYQ,CAAR,CAAC,IAAQ;;GAAO,KAAP;QACP;CAAA,GAAG,EAAH;AAAa,CAAA,GAAQ,CAAM,CAAd,SAAA;MAAb,EAAA;CAAuC,EAAQ,CAAR,CAAD,UAAA;QADhC;CAZR,IAYQ;;CAZR;;CA9pDF;;CAAA,CA8qDA,CAA2B,IAApB,CAAP,CAA4B,CAAD;WAC1B;CAAA,CAAI,IAAH,GAAY;CAAb,CACI,IAAH,GAAY;CADb,CAEI,IAAH,GAAY;CAHa;CAA3B,EAA2B;;CA9qD3B,CAorDA,CAA6B,IAAtB,CAAP,CAA8B,CAA9B;WACC;CAAA,CAAI,CAAe,GAAlB,GAAa,CAAe;CAA7B,CACI,CAAe,GAAlB,GAAa,CAAe;CAD7B,CAEI,CAAe,GAAlB,GAAa,CAAe;CAHD;CAA7B,EAA6B;;CAprD7B,CAyrDA,CAA2B,IAApB,CAAP,CAA4B,CAAD;WAC1B;CAAA,CAAI,CAAA,GAAH,GAA2B,CAAuB;CAAnD,CACI,CAAA,GAAH,GAA2B,CAAuB;CADnD,CAEI,CAAA,GAAH,GAA2B,CAAuB;CAHzB;CAA3B,EAA2B;;CAzrD3B,CA+rDA,CAA4B,IAArB,CAAP,CAAA,CAA4B;CAC1B,KAAA,EAAA;CAAA,CAAA,CAAS,CAAT,EAAA;CAAA,EAEK,CADL,EAAM,GAEwB,CADf;CAFf,EAOK,CADL,EAAM,GAEwB,CADf;CAPf,EAYK,CADL,EAAM,GAEwB,CADf;CAbW,UAiB1B;CAjBF,EAA4B;;CA/rD5B,CAktDA,CAA+B,IAAxB,CAAP,CAAgC,CAAD,EAA/B;WACC;CAAA,CAAI,CAAc,GAAjB,GAAY,CAAe;CAA5B,CACI,CAAc,GAAjB,GAAY,CAAe;CAD5B,CAEI,CAAc,GAAjB,GAAY,CAAe;CAHE;CAA/B,EAA+B;;CAltD/B,CAutDA,CAA6B,IAAtB,CAAP,CAA8B,CAA9B;WACC;CAAA,CAAI,CAAe,GAAlB,GAA2B,CAAd;CAAd,CACI,CAAe,GAAlB,GAA2B,CAAd;CADd,CAEI,CAAe,GAAlB,GAA2B,CAAd;CAHc;CAA7B,EAA6B;;CAvtD7B,CA4tDA,CAA8B,IAAvB,CAAP,CAA+B,CAAD,CAA9B;WACC;CAAA,CAAI,CAAA,GAAH,GAA8C,CAAtB;CAAzB,CACI,CAAA,GAAH,GAA8C,CAAtB;CADzB,CAEI,CAAA,GAAH,GAA8C,CAAtB;CAHI;CAA9B,EAA8B;;CA5tD9B,CAiuDA,CAA8B,IAAvB,CAAP,CAA+B,CAAD,CAA9B;CACE,KAAA,EAAA;CAAA,CAAA,CAAS,CAAT,EAAA;CAAA,EAGK,CADL,EAAM,GAE6C,CADpC;CAHf,EAQK,CADL,EAAM,GAE6C,CADpC;CARf,EAaK,CADL,EAAM,GAE6C,CADpC;CAda,UAkB5B;CAlBF,EAA8B;;CAjuD9B,CAqvDA,CAA4B,IAArB,CAAP,CAAA,CAA4B;WAC3B;CAAA,CAAO,CAAe,GAArB,GAA8B,CAAd;CAAjB,CACO,CAAe,GAArB,GAA8B,CAAd;CADjB,CAEO,CAAe,GAArB,GAA8B,CAAd;CAHU;CAA5B,EAA4B;;CArvD5B,CA0vDA,CAA2B,IAApB,CAAP,CAA4B,CAAD;WAC1B;CAAA,CAAO,CAAe,GAArB,GAA8B,CAAd;CAAjB,CACO,CAAe,GAArB,GAA8B,CAAd;CADjB,CAEO,CAAe,GAArB,GAA8B,CAAd;CAHS;CAA3B,EAA2B;;CA1vD3B,CA0wDA,CAA6B,GAAvB,EAAN,CAA6B,EAA7B;CACE,IAAA,GAAA;CAAA,GAAA,CAAuB,CAApB,GAAS;CACV,EAAQ,EAAR,CAAA,CAAe,CAAP,CAA2B;MADrC;CAGE,EACC,EADD,CAAA;CACC,CAAI,MAAH,CAAa;CAAd,CACI,MAAH,CAAa;CADd,CAEI,MAAH,CAAa;CANjB,OAGE;MAHF;CAQC,CAAqB,CAAA,CAArB,GAAD,EAAuB,EAAvB;CACE,EAAS,CAAL,CAAU,CAAd;CAAA,EACS,CAAL,CAAU,CAAd;CADA,EAES,CAAL,CAAU,CAAd;CAFA,EAGS,CAAL,EAAJ;CAJoB,YAKpB;CALF,IAAsB;CATxB,EAA6B;;CA1wD7B,CA+xDA,CAA8B,GAAxB,EAAN,CAA+B,GAA/B;CACE,EAAS,CAAT,CAAS,CAAT;CAEC,CAAsB,CAAA,CAAtB,GAAD,EAAwB,EAAxB,CAAA;CACE,GAAI,EAAJ;CAAA,GACI,EAAJ;CADA,GAEI,EAAJ;CAHqB,YAIrB;CAJF,IAAuB;CAHzB,EAA8B;;CA/xD9B,CA+yDA,CAA8B,GAAxB,EAAN,CAA+B,GAA/B;AACa,CAAX,GAAA,EAAA;CAEC,CAAsB,CAAA,CAAtB,GAAD,EAAwB,EAAxB,CAAA;CACE,EAAA,OAAA;CAAA,CAAuB,CAAvB,CAAU,EAAV;CAEA,EAAA,CAAqC,CAAY,CAAjD;CAAA,EAAW,CAAP,EAAJ,EAAA;QAFA;CAGA,EAAA,CAAqC,CAAY,CAAjD;CAAA,EAAW,CAAP,EAAJ,EAAA;QAHA;CAIA,EAAA,CAAqC,CAAY,CAAjD;CAAA,EAAW,CAAP,EAAJ,EAAA;QAJA;CADqB,YAMrB;CANF,IAAuB;CAHzB,EAA8B;;CA/yD9B,CAm0DA,CAA4B,GAAtB,EAAN,CAA6B,CAA7B;AACa,CAAX,GAAA,EAAA;CAEC,CAAoB,CAAA,CAApB,GAAD,EAAsB,CAAtB,CAAA;CACE,SAAA,GAAA;CAAA,CAAuB,CAAvB,CAAU,EAAV;CAAA,EACA,CAAW,EAAX;CADA,EAEA,CAAY,EAAZ;CAEA,EAAA,CAAkC,CAAY,CAA9C;CAAA,EAAW,CAAP,IAAJ;QAJA;CAKA,EAAA,CAAkC,CAAY,CAA9C;CAAA,EAAW,CAAP,IAAJ;QALA;CAMA,EAAA,CAAkC,CAAY,CAA9C;CAAA,EAAW,CAAP,IAAJ;QANA;CADmB,YAQnB;CARF,IAAqB;CAHvB,EAA4B;;CAn0D5B,CAu1DA,CAA6B,GAAvB,EAAN,CAA8B,EAA9B;CACG,CAAqB,CAAA,CAArB,GAAD,EAAuB,EAAvB;CAGE,EAAA,OAAA;CAAA,EAAA,CAAM,EAAN,GAAe;CAAf,EAES,CAAL,EAAJ;CAFA,EAGS,CAAL,EAAJ;CAHA,EAIS,CAAL,EAAJ;CAPoB,YAQpB;CARF,IAAsB;CADxB,EAA6B;;CAv1D7B,CAy2DA,CAA4B,GAAtB,EAAN,CAA6B,CAA7B;CACE,CAAwC,CAA/B,CAAT,EAAA;CAEC,CAAoB,CAAA,CAApB,GAAD,EAAsB,CAAtB,CAAA;CAEE,EAAA,CAAI,EAAJ;CAAA,EAAA,CACI,EAAJ;CADA,GAEI,EAAJ;CAFA,EAAA,CAGI,EAAJ;CAHA,EAAA,CAII,EAAJ;CAJA,EAAA,CAOI,EAAJ;CAPA,EAAA,CAQI,EAAJ;CARA,GASI,EAAJ;CATA,EAAA,CAUI,EAAJ;CAVA,EAAA,CAWI,EAAJ;CAXA,EAAA,CAcI,EAAJ;CAdA,EAAA,CAeI,EAAJ;CAfA,GAgBI,EAAJ;CAhBA,EAAA,CAiBI,EAAJ;CAjBA,EAAA,CAkBI,EAAJ;CApBmB,YAsBnB;CAtBF,IAAqB;CAHvB,EAA4B;;CAz2D5B,CA64DA,CAAuB,EAAvB,CAAM,EAAN,CAAwB;CACrB,CAAe,CAAA,CAAf,CAAD,EAAA,EAAiB,EAAjB;CACE,SAAA,CAAA;CAAA,CAA+B,CAA/B,CAA2B,EAA3B,CAAa,CAAP;CAAN,EAEI,GAAJ;CAFA,EAGK,CAAA,EAAL;CAHA,EAII,GAAJ;CAJA,EAAA,CAKK,EAAL;CALA,EAMG,GAAH;CANA,CAQ8B,CAA9B,GAAA,CAAa,CAAP;CARN,EASG,CAAS,EAAZ;CAVc,YAWd;CAXF,IAAgB;CADlB,EAAuB;;CA74DvB,CAm6DA,CAA4B,GAAtB,EAAN,CAA4B,CAA5B;CACE,OAAA,EAAA;CAAA,GAAA,CAAuB,CAApB,GAAS;CACV,EAAA,GAAA,CAAa,CAAP,CAA2B;CAAjC,EACQ,EAAR,CAAA,GAAkB;CACF,GAAV,CAAoB,CAH5B,GAGiB;CACf,EAAA,GAAA;CACC,CAAI,MAAH,CAAa;CAAd,CACI,MAAH,CAAa;CADd,CAEI,MAAH,CAAa;CAHf,OAAA;CAAA,EAKQ,EAAR,CAAA,GAAkB;MATpB;CAWC,CAAoB,CAAA,CAApB,GAAD,EAAsB,CAAtB,CAAA;CACE,EAAoB,CAAhB,CAA0B,CAA9B;CAAA,EACoB,CAAhB,CAA0B,CAA9B;CADA,EAEoB,CAAhB,CAA0B,CAA9B;CAHmB,YAInB;CAJF,IAAqB;CAZvB,EAA4B;;CAn6D5B,CAu7DA,CAA0B,GAApB,EAAN,CAA0B;CACvB,CAAkB,CAAA,CAAlB,GAAD,CAAA,CAAoB,EAApB;CACE,EAAS,CAAL,EAAJ;CAAA,EACS,CAAL,EAAJ;CADA,EAES,CAAL,EAAJ;CAHiB,YAIjB;CAJF,IAAmB;CADrB,EAA0B;;CAv7D1B,CAm8DA,CAAyB,GAAnB,CAAN,CAAA,CAA0B;;GAAS,GAAT;MACxB;CAAA,EAAA,CAAA,EAAA;CAEC,CAAiB,CAAA,CAAjB,GAAD,EAAmB,EAAnB;CAIE,CAAuB,CAAd,CAAL,CAAmC,CAAvC;CAAA,CACuB,CAAd,CAAL,CAA8B,CAAlC;CADA,CAEuB,CAAd,CAAL,CAA8B,CAAlC;CANgB,YAQhB;CARF,IAAkB;CAHpB,EAAyB;;CAn8DzB,CAs9DA,CAAyB,GAAnB,CAAN,CAAA,CAA0B;CACvB,CAAiB,CAAA,CAAjB,GAAD,EAAmB,EAAnB;CACE,CAAgC,CAAvB,CAAL,EAAJ;CAAA,CACgC,CAAvB,CAAL,EAAJ;CADA,CAEgC,CAAvB,CAAL,EAAJ;CAHgB,YAIhB;CAJF,IAAkB;CADpB,EAAyB;;CAt9DzB,CAg+DA,CAAyB,GAAnB,CAAN,CAAA,CAA0B;CACxB,EAAS,CAAT,EAAA;CAEC,CAAiB,CAAA,CAAjB,GAAD,EAAmB,EAAnB;CACE,GAAA,MAAA;AAAuC,CAAvC,CAA0C,CAAnC,CAAP,EAAA,GAAgB,EAAT;CAAP,GAEI,EAAJ;CAFA,GAGI,EAAJ;CAHA,GAII,EAAJ;CALgB,YAMhB;CANF,IAAkB;CAHpB,EAAyB;;CAh+DzB,CAg/DA,CAAwB,GAAlB,EAAN,CAAyB;CACvB,EAAS,CAAT,EAAA;CAEC,CAAgB,CAAA,CAAhB,EAAD,CAAA,EAAkB,EAAlB;CACE,EAAY,CAAT,EAAH;CACE,EAAS,CAAL,IAAJ;CACW,EAAI,CAAT,EAFR,EAAA;CAGE,EAAS,CAAL,IAAJ;QAHF;CAKA,EAAY,CAAT,EAAH;CACE,EAAS,CAAL,IAAJ;CACW,EAAI,CAAT,EAFR,EAAA;CAGE,EAAS,CAAL,IAAJ;QARF;CAUA,EAAY,CAAT,EAAH;CACE,EAAS,CAAL,IAAJ;CACW,EAAI,CAAT,EAFR,EAAA;CAGE,EAAS,CAAL,IAAJ;QAbF;CADe,YAgBf;CAhBF,IAAiB;CAHnB,EAAwB;;CAh/DxB,CAghEA,CAA4B,GAAtB,CAAsB,CAA5B,CAA6B,CAA7B;CACE,OAAA,GAAA;AAAY,CAAZ,GAAA,CAAgC,CAApB,CAAA,CAAZ;CAAA,GAAA,SAAO;MAAP;AAEA,CAAA,QAAA,MAAA;;6BAAA;CACE,GAAG,CAAA,CAAH;AACE,CAAA,GAAe,EAAf,CAAe,CAAf;CACA,gBAFF;QAAA;CAAA,EAAA,CAIQ,EAAR,CAAQ;CALV,IAFA;CASA,GAAA,CAA8B,CAAlB,CAAO;CAAnB,GAAA,SAAO;MATP;CAWC,CAAoB,CAAA,CAApB,GAAD,EAAsB,CAAtB,CAAA;CACE,GAAG,EAAH,aAAA;CACE,EAAG,CAAA,GAAO,CAAV;CACE,EAAW,CAAP,GAA8B,GAAlC;MADF,IAAA;CAGE,EAAmB,CAAf,GAA+B,GAAnC;UAJJ;QAAA;CAMA,GAAG,EAAH,eAAA;CACE,EAAmB,CAAhB,CAAA,EAAO,CAAV;CACE,EAAW,CAAP,CAAJ,EAAkC,GAAlC;MADF,IAAA;CAGE,EAAmB,CAAf,CAAe,EAAgB,GAAnC;UAJJ;QANA;CAYA,GAAG,EAAH,cAAA;CACE,EAAkB,CAAf,GAAO,CAAV;CACE,EAAW,CAAP,GAA8B,GAAlC;MADF,IAAA;CAGE,EAAmB,CAAf,GAA+B,GAAnC;UAJJ;QAZA;CADmB,YAmBnB;CAnBF,IAAqB;CAZvB,EAA4B;;CAhhE5B,CAqkEA,CAA0B,GAApB,EAAN,CAA0B;CAExB,OAAA,4DAAA;CAAA,CAFgC,EAAP,mDAEzB;AAA2B,CAA3B,GAAA,CAA2B,CAAA,EAA3B;CAAA,CAAQ,CAAA,EAAR,CAAA;MAAA;CACA,EAAA,CAAA,CAAiC;CAAjC,CAAc,CAAN,EAAR,CAAA;MADA;CAGA,EAAM,CAAN,EAAG;CAED,WAAM,kCAAN;MALF;CAAA,EAOQ,CAAR,CAAA;CAPA,EAQQ,CAAR,CAAA;CARA,EASW,CAAX,CAAA,CAAW;CATX,EAUA,CAAA,EAAU;CAVV,CAaiC,CAAxB,CAAT,CAAS,CAAT,GAAkB;CAIlB,EAA2D,CAA3D,CAAsD;AAAtD,CAAA,EAAA,QAA8B,gFAA9B;CAAA,EAAY,EAAM,CAAX,EAAP;CAAA,MAAA;MAjBA;CAoBA,EAAiD,CAAjD;AAAA,CAAA,EAAA,QAA4B,kFAA5B;CAAA,EAAY,GAAL,EAAP;CAAA,MAAA;MApBA;CAsBC,CAAkB,CAAA,CAAlB,GAAD,CAAA,CAAoB,EAApB;CAGE,QAAA,CAAA;AAAA,CAAA,EAAA,QAAiD,yFAAjD;CAAA,EAAiB,CAAZ,CAAM,CAAa,EAAxB;CAAA,MAAA;CAHiB,YAIjB;CAJF,IAAmB;CAxBrB,EAA0B;;CArkE1B,CAwmEA,CAA4B,GAAtB,EAAN,CAA6B,CAA7B;CACE,OAAA,OAAA;CAAA,EAAI,CAAJ,EAAI;CAAJ,CAEY,CAAJ,CAAR,CAAA;CAFA,CAG0B,CAAlB,CAAR,CAAA;CAEA,EAAY,CAAZ,EAAG;CACD,EAAQ,EAAR,CAAA,CAAQ;CAAR,EACQ,EAAR,CAAA,CAAQ;MAPV;CASC,CAAc,CAAsB,CAApC,CAAD,CAAA,KAAA;CAVF,EAA4B;;CAxmE5B,CAunEA,CAA8B,EAAzB,CAAO,EAAZ,CAA+B;CAE7B,OAAA,GAAA;;GAFgD,GAAJ;MAE5C;;GAFuD,GAAJ;MAEnD;CAAA,GAAA,8CAAA;CACE,CAA2B,CAAd,CAAA,CAAA,CAAb;MADF;CAGE,EAAS,GAAT,EAAiB,KAAR;CAAT,CAC6B,EAAzB,EAAJ,QAAA;CADA,EAGe,EAAf,CAAA;CAHA,EAIgB,GAAhB;MAPF;CAAA,EASA,CAAA,EAAY,IAAN;CATN,CAYuB,CAApB,CAAH,CAAA,CAAA,GAAA;CAZA,EAciB,CAAjB,WAAA;CAAiB,CAAK,IAAH;CAAF,CAAW,IAAH;CAdzB,KAAA;CAAA,EAiBW,CAAX,GAAA;CACC,GAAA,EAAD,KAAA,EAAA;CApBF,EAA8B;;CAvnE9B,CA8oEA,CAAgC,EAA3B,CAAO,CAAoB,CAAhC,CAAiC;CAE/B,OAAA,GAAA;;GAFyC,GAAV;MAE/B;CAAA,GAAA,CAAc,EAAX,gBAAoB,CAAD;CACpB,EAAG,EAAH,CAAA,0CAAA;CACA,WAAA;MAFF;CAIA,GAAA,iBAAA;CAEE,EAAgB,CAAC,CAAjB,CAAA,CAAO;IACG,EAHZ,gBAAA;CAKE,EAAiB,CAAC,CAAD,CAAjB,CAAO;MATT;CAWA,GAAA,8CAAA;CACE,CAAmC,CAAtB,CAAA,CAAA,CAAb,CAA2B;MAD7B;CAGE,EAAS,GAAT,EAAiB,KAAR;CAAT,CAC6B,EAAzB,EAAJ,QAAA;CADA,EAGe,EAAf,CAAA,CAAsB;CAHtB,EAIgB,GAAhB,CAAuB;MAlBzB;CAAA,EAoBA,CAAA,EAAY,IAAN;CApBN,CAuBE,CADC,CAAH,CAAA,CAAA,CAIS,EAJT;CAtBA,EA4BW,CAAX,GAAA;CACC,GAAA,EAAD,KAAA,EAAA;CA/BF,EAAgC;;CA9oEhC,CA+qEA,CAA8B,EAAzB,CAAO,EAAZ,CAA8B;CAC3B,CAAsB,EAAtB,CAA2B,CAA5B,GAAsC,EAAtC,EAAA;CADF,EAA8B;;CA/qE9B,CAkrEA,CAAgC,EAA3B,CAAO,EAAZ,CAAgC;CAC7B,CAAwB,EAAxB,CAA6B,GAA9B,CAAwC,EAAxC,EAAA;CADF,EAAgC;;CAlrEhC,CAqrEA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;CACG,CAA0B,EAA1B,MAAD,CAAA,EAAA;CADF,EAAiC;;CArrEjC,CA4rEA,CAAyC,EAApC,CAAO,EAAZ,CAAyC,QAAzC;CACG,CAAmC,EAAnC,OAAD,EAAA,MAAA;CADF,EAAyC;;CA5rEzC,CAqsEA,CAAsC,EAAjC,CAAO,EAAZ,CAAsC,KAAtC;CACG,CAA+B,EAA/B,OAAD,EAAA,EAAA;CADF,EAAsC;;CArsEtC,CA8sEA,CAAoC,EAA/B,CAAO,CAAwB,CAApC,CAAqC,GAArC;CACE,KAAA,EAAA;CAAA,EAAA,CAAA,CAAe,EAAZ;CACD,CACK,CADI,GAAT;CAOO,CAAD,CAAW,CAAX,EARR,CAQS;CACP,CACK,CADI,GAAT;EAOM,CAhBR,CAgBQ,CAAY,CAhBpB,CAgBQ;CACN,CACK,CADI,GAAT;MAjBF;CAyBE,CACK,CADI,GAAT;MAzBF;CAiCC,CAA6B,EAA7B,EAAD,KAAA,EAAA;CAlCF,EAAoC;;CA9sEpC,CAkvEA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;;GAAwC,GAAN;MAChC;CAAA,EAAA,CAAA;AAGM,CADL,CAAyB,CAAA,CAAzB,KAAD,EAAA,EAAA;CAHF,EAAiC;;CAlvEjC,CA4vEA,CACC,YADD;CACC,CAAa,CAAA,CAAZ,KAAa,CAAb;CACE,EAAS,CAAL,EAAJ,EAAkB;CAAlB,EACS,CAAL,EAAJ,EAAkB;CADlB,EAES,CAAL,EAAJ,EAAkB;CAHR,YAIV;CAJH,IAAa;CAAb,CAMQ,CAAA,CAAP,CAAA,IAAQ;CACN,CAAgC,CAAvB,CAAL,EAAJ,EAAgC;CAAhC,CACgC,CAAvB,CAAL,EAAJ,EAAgC;CADhC,CAEgC,CAAvB,CAAL,EAAJ,EAAgC;CAH3B,YAIL;CAVH,IAMQ;CANR,CAYW,CAAA,CAAV,IAAA,CAAW;CACT,EAAoB,CAAhB,CAA0B,CAA9B;CAAA,EACoB,CAAhB,CAA0B,CAA9B;CADA,EAEoB,CAAhB,CAA0B,CAA9B;CAHQ,YAIR;CAhBH,IAYW;CAzwEZ,GAAA;;CAAA,CA+wEA,CAA4B,CAAA,EAAtB,EAAN,CAA6B,CAA7B;CACE,OAAA,kBAAA;;GAD4C,GAAX;MACjC;AAAG,CAAH,EAAA,CAAA,CAAkB,CAAf,EAAA;CACD,EAAwB,CAArB,CAAH,CAAA,IAAc;CACZ,CAAoD,CAA7C,CAAP,CAAO,CAA8B,EAArC,EAAkB;MADpB,EAAA;CAGE,CAAqD,CAA9C,CAAP,EAAO,EAAP,EAAkB;QAJtB;MAAA;CAAA,EAAA,CAMA,IAAA;CANA,CAOiC,CAAxB,CAAT,CAAU,CAAV,IAAqB;CAPrB,CAQsC,CAA9B,CAAR,CAAA,CAAkC;CARlC,EASA,CAAA,CAAM;CATN,CAU8B,CAArB,CAAT,EAAA,GAAkB;CAEjB,CAAoB,CAAA,CAApB,GAAD,EAAsB,CAAtB,CAAA;CACE,SAAA,IAAA;CAAA,EAAA,CAAO,EAAP,IAAM;CAAN,CACiC,CAA1B,CAAP,EAAA,EAAO,CAAS;CAEhB,EAAU,CAAP,EAAH;CACE,CAAmB,CAAnB,CAAU,CAAiB,CAAA,EAA3B;CAAA,CAEgC,CAAvB,CAAL,IAAJ;CAFA,CAGgC,CAAvB,CAAL,IAAJ;CAHA,CAIgC,CAAvB,CAAL,IAAJ;QARF;CADmB,YAWnB;CAXF,IAAqB;CAbvB,EAA4B;;CA/wE5B,CAyyEA,CAAuC,CAAA,EAAjC,EAAN,CAAwC,YAAxC;CACE,OAAA,oCAAA;CAAA,EACC,CADD,IAAA;CACC,CAAW,IAAV,EAAA;CAAD,CACe,IAAd,MAAA;CADD,CAES,IAAR,MAFD;CAAA,CAIE,GADD,CAAA;CACC,CAAI,MAAH;CAAD,CACI,MAAH;CADD,CAEI,MAAH;QANH;CADD,KAAA;CAAA,CAS6B,CAAtB,CAAP,EAAO,EAAA;AAEA,CAAP,GAAA;CACE,GAAA,SAAO;AACD,CAAA,GAAA,CAAoB,CAF5B,EAAA;CAGE,CAA8B,CAApB,CAAa,EAAvB,CAAA,CAAU;CAAV,EAEC,CADG,EAAJ;CACC,CAAQ,CAAoB,CAAnB,CAAR,EAAD,CAAC,EAAkB;CAAnB,CACS,CAAqB,CAApB,EAAT,CADD,CACC,EAAmB;CANvB,OAGE;AAIM,CAAA,GAAA,CAAoB,CAP5B,EAAA;CAQE;CAAA,UAAA,gCAAA;wBAAA;AACK,CAAH,EAAoB,CAAjB,CAAyB,CAAzB,EAAH;CACE,CAA8D,CAApD,CAAN,IAAiC,EAArC;UAFJ;CAAA,MARF;CAWa,GAAL,CAAa,CAXrB,EAAA;CAYE,EAAO,CAAP,EAAA;CAAA,EAEC,CADG,EAAJ;CACC,CAAQ,EAAR,CAAC,GAAA;CAAD,CACS,EADT,EACC,EAAA;CAfJ,OAYE;MAvBF;AA4BG,CAAH,GAAA,CAA+B,CAA5B,EAAH,IAAG;CACD,CAAyE,CAArD,CAAhB,CAAiB,CAArB,EAA6C,IAA7C;MA7BF;CAAA,EAAA,CA+BA,IAAA;CA/BA,EAkCkB,CAAlB,CAAA;CAlCA,EAmCmB,CAAnB,CAAmB,CAAnB;CAnCA,EAqCC,CADD,CAAA;CACC,CAAQ,EAAC,CAAR,CAAA,IAAkB;CAAnB,CACS,EAAC,EAAT,IAAmB;CAtCrB,KAAA;AAwCiC,CAAjC,GAAA,CAAkB,CAAf,EAAH,EAAG;CACD,EAAa,CAAT,CAAJ,CAAA,CAAoB,CAAP;MAzCf;CAAA,EA4CC,CADD,EAAA;CACC,CAAO,CAAqB,CAA3B,CAAO,CAAP,IAAkB;CAAnB,CACQ,CAAoB,CAAnB,CAAR,CAAA,IAAkB;CADnB,CAES,CAAsB,CAApB,EAAV,IAAoB;CAFrB,CAGM,CAAL,CAAM,EAAN,IAAgB;CA/ClB,KAAA;CAAA,EAiDe,CAAf,GAAA;OACE;CAAA,CAAI,CAAmB,CAAf,EAAO,EAAd,IAAD;CAAA,CAA6C,CAAA,CAAI,EAAO,EAAd,IAA1C;EACA,MAFa;CAEb,CAAI,CAAoB,CAAhB,CAAJ,CAAW,EAAd,IAAD;CAAA,CAA8C,CAAA,CAAI,EAAO,EAAd,IAA3C;EACA,MAHa;CAGb,CAAI,CAAoB,CAAhB,CAAJ,CAAW,EAAd,IAAD;CAAA,CAA8C,CAAqB,CAAjB,EAAO,EAAd,IAA3C;EACA,MAJa;CAIb,CAAI,CAAmB,CAAf,EAAO,EAAd,IAAD;CAAA,CAA6C,CAAqB,CAAjB,EAAO,EAAd,IAA1C;QAJa;CAjDf,KAAA;CAAA,CAwDqC,CAAtB,CAAf,GAAA,CAAe,CAAS,GAxDxB;CA0DC,CAA+B,CAAA,CAA/B,GAAD,EAAiC,EAAjC,UAAA;CACE,SAAA,UAAA;CAAA,EAAA,CAAO,EAAP,IAAM;CAGN,EAAO,CAAJ,EAAH,CAAyB;CACvB,GAAA,WAAO;QAJT;CAKA,EAAO,CAAJ,CAAA,CAAH,CAAoF;CAClF,GAAA,WAAO;QANT;CASA,EAAM,CAAH,EAAH,CAAwB;CAEtB,EAAA,CAAmB,EAAO,CAA1B,CAAA;CACU,EAAD,CAAH,CAHR,CAAA,CAG6B,CAH7B;CAKE,EAAA,CAAmB,CAAb,CAAoB,CAA1B,CAAA;CACU,EAAD,CAAH,EANR,CAM6B,CAN7B;CAQE,EAAA,CAAW,EAAO,CAAlB,CAAA;CACU,EAAD,CAAH,EATR,CAS6B,CAT7B;CAWE,EAAA,CAAW,EAAO,CAAlB,CAAA;CACU,EAAD,CAAH,EAZR,CAY8B,CAZ9B;CAcE,CAAmC,CAAtB,CAAiC,CAA5B,EAAqC,CAAvD,EAAA;CAAA,EACA,CAAwB,GADxB,CACA,EAAO,EAAD;CACI,EAAD,CAAH,EAhBR,CAgB8B,CAhB9B;CAkBE,CAAmC,CAAtB,CAAiC,CAA5B,EAAqC,CAAvD,EAAA;CAAA,EACA,CAAwB,GADxB,CACA,EAAO,EAAD;CACI,EAAD,CAAH,EApBR,CAoB8B,CApB9B;CAsBE,CAAmC,CAAtB,CAAiC,CAA5B,EAAqC,CAAvD,EAAA;CAAA,EACA,CAAwB,GADxB,CACA,EAAO,EAAD;CACI,EAAD,CAAH,EAxBR,CAwB8B,CAxB9B;CA0BE,CAAmC,CAAtB,CAAiC,CAA5B,EAAqC,CAAvD,EAAA;CAAA,EACA,CAAwB,GADxB,CACA,EAAO,EAAD;QApCR;CAsCA,EAAe,CAAA,EAAf;CAAA,GAAA,WAAO;QAtCP;CAuCA,CAA0C,CAAnC,CAAoB,EAAJ,OAAhB,EAAgB;CAxCzB,IAAgC;CA3DlC,EAAuC;;CAsGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA/4EA;;CAAA,CAu7EG,CAAA,MAAA;CACD,OAAA,mEAAA;CAAA,CACO,CADK,CAAZ,KAAA;CAAA,CAKK,CADO,CAAZ,KAAA;CAJA,CAO+B,CAAR,CAAvB,CAAuB,CAAA,CAAA,CAAA,CAAC,WAAxB;CACE,SAAA,4BAAA;CAAA,EAAA,CAA2B,EAA3B,EAAiD,KAAR,qCAAnC;CAAN,EACG,EAAH,CAAA;CADA,EAEG,GAAH;CAFA,CAIA,CAAK,CAAc,CAAJ,CAAf,CAAK;CAJL,CAKA,CAAK,CAAc,CAAJ,CAAf,CAAK;CALL,CAOA,CAAK,CAAc,CAAJ,CAAf,CAAK;CAPL,CAQA,CAAK,CAAc,CAAJ,CAAf,CAAK;CARL,EAUU,CAAA,EAAV,CAAA,GAAU;CAVV,CAWW,CAAA,GAAX,CAAkB,CAAlB,YAAW;AACJ,CAAP,GAAG,EAAH,EAAA;CACE,CAAyB,KAAzB,CAAA,IAAA;CAAA,CACyB,KAAzB,CAAA,IAAA;MAFF,EAAA;CAIE,CAAyB,KAAzB,CAAA,IAAA;CAAA,CAC2B,CAA3B,IAAA,CAAA,IAAA;CADA,CAEyB,KAAzB,CAAA,IAAA;QAlBF;CAAA,EAoBoB,GAApB,CAAO,CApBP,CAoBA;CApBA,CAqBoB,GAApB,CAAA,CAAO,CAAP;CACA,CAA+B,GAAxB,CAAA,CAAO,KAAP,CAAA;CA9BT,IAOuB;CAPvB,CAgC+B,CAAR,CAAvB,CAAuB,CAAA,CAAA,EAAC,WAAxB;CACE,SAAA,YAAA;CAAA,EAAA,CAA2B,EAA3B,EAAiD,KAAR,qCAAnC;CAAN,EACG,EAAH,CAAA;CADA,EAEG,GAAH;CAFA,EAIU,CAAA,EAAV,CAAA,GAAU;CAJV,CAKiD,CAAtC,GAAX,CAAkB,CAAlB,YAAW;CALX,CAOyB,IAAzB,CAAA,CAAQ,IAAR;CAPA,CAQyB,IAAzB,CAAA,CAAQ,IAAR;CARA,EAUoB,GAApB,CAAO,CAVP,CAUA;CAVA,CAWoB,GAApB,CAAA,CAAO,CAAP;CACA,CAA+B,GAAxB,CAAA,CAAO,KAAP,CAAA;CA7CT,IAgCuB;CAhCvB,EA+CY,CAAZ,KAAA;CACE,EAAK,CAAJ,EAAD;CAAA,EACK,CAAJ,EAAD;CADA,EAEK,CAAJ,EAAD;CAFA,EAGK,CAAJ,EAAD;CACC,EAAO,CAAP,SAAD;CApDF,IA+CY;CA/CZ,CAsDsC,CAAA,CAAtC,CAAK,CAAO,EAAZ,CAAuC,CAAD,IAAtC;CACE,SAAA,wZAAA;CAAA,EAAQ,CAAC,CAAT,CAAA,IAAmB;CAAnB,EACS,CAAC,EAAV,IAAoB;CADpB,EAGc,CAAC,EAAf,GAHA,EAGA;CAHA,EAIe,CAJf,EAIA,IAAyB,EAAzB;CAJA,CAMA,CAAK,EAAA,CAAL;CANA,CAOM,CAAN,CAAY,EAAZ;CAPA,CAAA,CAQS,GAAT;AAEA,CAAA,EAAA,QAAoC,2DAApC;CAAA,EAAY,GAAL,EAAP,GAAwB;CAAxB,MAVA;CAAA,EAYe,GAAf,MAAA;CAZA,EAaQ,EAAR,CAAA,IAbA;CAAA,GAcc,EAAd,IAAA;AAEM,CAAN,CAAM,CAAN,CAAiB,CAAX,QAAA;CACJ,EAAU,GAAC,CAAX,CAAA;CACA,GAAY,CAAW,EAAX,CAAZ;CAAA,kBAAA;UADA;CAEA,EAA2B,CAAV,GAAA,CAAjB;CAAA,EAAU,IAAV,GAAA;UAFA;CAAA,EAIA,IAAM,CAAN;CAJA,CAKA,CAAK,CAAS,CAAT,GAAL;CALA,EAMc,EAAA,GAAd,GAAA;CANA,EAOe,GAAA,EAAf,IAAA;CAPA,EAQc,IAAA,CAAd,GAAA;CARA,EASY,KAAZ,CAAA,EAAY;CATZ,EAWiB,CAAA,IAAjB,CAAiB,CAAjB;CAXA,EAYW,GAZX,EAYA;CAZA,EAaQ,EAAR,GAAA,EAbA;AAeA,CAAA,EAAA,UAAS,yDAAT;CACE,EAAQ,CAAA,CAAR,IAAyB,CAAzB;CACA,GAAoB,CAAK,KAAzB,CAAA;CAAA,EAAW,EAAX,GAAA,IAAA;YAFF;CAAA,QAfA;CAAA,EAmBa,CAAb,CAAK,GAAL,EAnBA;CAAA,EAoBU,CApBV,GAoBA,CAAA;CApBA,EAqBW,CArBX,IAqBA;CArBA,CAuBA,CAAK,KAAL;CAvBA,EAyBU,IAAV,CAAA,CAAoB;CAzBpB,EA0BU,IAAV,CAAA,CAAoB;AAEpB,CAAA,EAAA,UAAS,qEAAT;CACE,EAAW,EAAsB,GAAjC,EAAA;CAAA,CAE2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CAFZ,CAG2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CAHZ,CAI2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CAJZ,CAAA,CAMqB,CAAZ,CAAT,IAAS,CAAT;CANA,CAAA,CAOqB,CAAZ,CAAT,IAAS,CAAT;CAPA,CAAA,CAQqB,CAAZ,CAAT,IAAS,CAAT;CARA,EAUQ,EAAR,KAAA;AAEA,CAAA,EAAA,YAAS,uFAAT;CACE,CAAA,CAAU,EAAL,OAAL;CAAA,CAAA,CACU,EAAL,OAAL;CADA,CAAA,CAEU,EAAL,OAAL;CAFA,EAGQ,CAHR,CAGA,OAAA;CAJF,UAZA;AAkBA,CAAA,EAAA,YAAS,uFAAT;CACE,CAAI,CAAA,CAAsD,OAA5C,CAAd;CAAA,CACqB,CAAD,CAAX,CAAT,CAAiC,KAAc,CAA/C;CADA,CAEqB,CAAD,CAAX,CAAT,CAAiC,MAAjC;CAFA,CAGqB,CAAD,CAAX,CAAT,CAAiC,MAAjC;CAHA,CAAA,EAKY,IAAZ,IAAA;CALA,CAAA,EAMY,IAAZ,IAAA;CANA,CAAA,EAOY,IAAZ,IAAA;CAPA,EASQ,CATR,CASA,OAAA;CAVF,UAlBA;CAAA,EA8BU,IAAV,GAAA;CA9BA,EA+BW,KAAX,EAAA;AAEA,CAAA,EAAA,YAAS,+DAAT;CACE,CAAO,CAAM,CAAqB,CAApB,CAAP,CAAM,KAAb;CAAA,CACO,CAAK,CAA0B,CAApB,CAAX,CAAU,KAAjB;CADA,CAEO,CAAK,CAA0B,CAApB,CAAX,CAAU,KAAjB;CAFA,GAIS,CAAT,IAJA,GAIA;CAJA,GAKS,CAAT,IALA,GAKA;CALA,GAMS,CAAT,IANA,GAMA;CANA,GAQa,GAAO,EAApB,GAAA;CARA,GASa,GAAO,EAApB,GAAA;CATA,GAUa,GAAO,EAApB,GAAA;CAVA,CAYK,CAAD,CAA2E,OAAjE,CAAd;CAZA,EAcyB,CAAb,EAAoB,CAAZ,CAApB,IAAA;CAdA,EAeyB,CAAb,EAAoB,CAAZ,CAApB,IAAA;CAfA,EAgByB,CAAb,EAAoB,CAAZ,CAApB,IAAA;CAhBA,GAkBS,CAAT,GAlBA,IAkBA;CAlBA,GAmBS,CAAT,GAnBA,IAmBA;CAnBA,GAoBS,CAAT,GApBA,IAoBA;CApBA,EAsBU,CAtBV,GAsBA,KAAA;CAtBA,CAwBc,CAAK,CAAN,IAAc,CAA3B,GAAA;CAxBA,CAyBc,CAAK,CAAN,IAAc,CAA3B,GAAA;CAzBA,CA0Bc,CAAK,CAAN,IAAc,CAA3B,GAAA;CA1BA,CAAA,EA4BY,IAAZ,IAAA;CA5BA,CAAA,EA6BY,IAAZ,IAAA;CA7BA,CAAA,EA8BY,IAAZ,IAAA;CA9BA,EAgCW,CAhCX,IAgCA,IAAA;CAhCA,CAkCA,EAAM,QAAN;CAnCF,UAjCA;CAAA,CAsEA,EAAM,CAtEN,KAsEA;CAvEF,QA5BA;AAqGA,CAAA,EAAA,UAAS,iEAAT;CACE,EAAW,EAAsB,GAAjC,EAAA;CAAA,CAEA,CAAK,CAAK,MAAV;CAFA,CAG2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CAHZ,CAI2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CAJZ,CAK2B,CAAf,GAA2B,GAAvC,CAAA,CAAY;CALZ,CAAA,CAOqB,CAAZ,CAAT,IAAS,CAAT;CAPA,CAAA,CAQqB,CAAZ,CAAT,IAAS,CAAT;CARA,CAAA,CASqB,CAAZ,CAAT,IAAS,CAAT;CATA,EAWQ,EAAR,KAAA;AAEA,CAAA,EAAA,YAAS,uFAAT;CACE,CAAA,CAAU,EAAL,OAAL;CAAA,CAAA,CACU,EAAL,OAAL;CADA,CAAA,CAEU,EAAL,OAAL;CAFA,EAGQ,CAHR,CAGA,OAAA;CAJF,UAbA;CAAA,CAmBA,CAAK,EAnBL,KAmBA;AAEA,CAAA,EAAA,YAAS,uFAAT;CACE,CAAA,CAAK,CAAY,QAAjB;CAAA,CACqB,CAAD,CAAX,CAAT,CAAiC,KAAe,CAAhD;CADA,CAEqB,CAAD,CAAX,CAAT,CAAiC,MAAjC;CAFA,CAGqB,CAAD,CAAX,CAAT,CAAiC,MAAjC;CAHA,CAAA,EAIY,IAAZ,IAAA;CAJA,CAAA,EAKY,IAAZ,IAAA;CALA,CAAA,EAMY,IAAZ,IAAA;CANA,EAOQ,CAPR,CAOA,OAAA;CACA,EAAoB,CAAJ,QAAhB;CAAA,CAAA,EAAM,CAAN,SAAA;cATF;CAAA,UArBA;CAAA,CAgCA,CAAK,OAAL;CAhCA,EAiCU,IAAV,GAAA;CAjCA,EAkCW,KAAX,EAAA;AAEA,CAAA,EAAA,YAAS,mEAAT;CACE,CAAI,CAAA,CAAM,QAAV;CAAA,EACY,CAAqB,CAApB,CAAN,CAAK,KAAZ;CADA,EAEW,CAA0B,CAApB,CAAV,CAAS,KAAhB;CAFA,EAGW,CAA0B,CAApB,CAAV,CAAS,KAAhB;CAHA,GAKS,CAAT,IALA,GAKA;CALA,GAMS,CAAT,IANA,GAMA;CANA,GAOS,CAAT,IAPA,GAOA;CAPA,GASa,GAAO,EAApB,GAAA;CATA,GAUa,GAAO,EAApB,GAAA;CAVA,GAWa,GAAO,EAApB,GAAA;CAXA,EAaI,CAAsF,CAAjF,MAAK,CAAd;CAbA,EAemC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,IAAV;CAfA,EAgBmC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,IAAV;CAhBA,EAiBmC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,IAAV;CAjBA,EAmBU,CAnBV,GAmBA,KAAA;CAnBA,CAqBc,CAAK,CAAN,IAAc,CAA3B,GAAA;CArBA,CAsBc,CAAK,CAAN,IAAc,CAA3B,GAAA;CAtBA,CAuBc,CAAK,CAAN,IAAc,CAA3B,GAAA;CAvBA,CAAA,EAyBY,IAAZ,IAAA;CAzBA,CAAA,EA0BY,IAAZ,IAAA;CA1BA,CAAA,EA2BY,IAAZ,IAAA;CA3BA,EA6BW,CA7BX,IA6BA,IAAA;CA7BA,CA+BA,EAAM,CA/BN,OA+BA;CAhCF,UArCF;CAAA,QArGA;CAAA,GA4KU,EAAV,EAAA,MA5KA;CAAA,CAAA,CA8KI,KAAJ;AACQ,CAAR,CAAM,CAAM,YAAN;CACJ,EAAA,CAAW,MAAX;CAAA,EACc,CAAA,CAAA,KAAd,CAAA,CAA4B;CAD5B,EAEQ,EAAR,KAAA,CAAQ;CAER,GAAG,CAAA,KAAH,EAAA;CACE,EAAQ,EAAR,MAAiB,CAAjB;CAAA,EACS,EADT,CACA,MAAA;CADA,EAGY,CAA4D,CAArD,CAAC,KAAR,CAAZ;CAHA,EAIY,CAAwE,CAA7D,CAAC,KAAZ,CAAZ;CAJA,EAKY,CAAwE,CAA7D,CAAC,KAAZ,CAAZ;CANF,EAOgC,CAAxB,CAAA,CAPR,MAAA;CAQE,EAAY,GAAc,KAAd,CAAZ;CAAA,EACY,GAAkB,KAAlB,CAAZ;CADA,EAEY,GAAkB,KAAlB,CAAZ;YAfJ;CA/KA,QA+KA;AAgBA,CA/LA,CAAA,MA+LA,IAAA;CAhNF,MAgBA;CAkMA,GAAA,SAAO;CAnNT,IAAsC;CAtDtC,CA2QmC,CAAA,CAAnC,CAAK,CAAO,EAAZ,CAAoC,EAApC;CACE,SAAA,QAAA;CAAA,EACC,GADD,EAAA;CACC,CACE,IADD,EAAA;CACC,CAAI,CAAoB,CAAnB,CAAD,KAAH;CAAD,CACI,CAAqB,CAApB,EAAD,IAAH;UAFH;CAAA,CAGQ,GAAP,GAAA;CAHD,CAIa,CAJb,KAIC,EAAA;CAJD,CAKc,MAAb,GAAA;CALD,CAMe,CANf,KAMC,IAAA;CAND,CAOQ,GAAP,GAAA;CARF,OAAA;CAAA,CAU6B,CAAtB,CAAP,EAAA,EAAO;CAVP,CAWc,CAAU,CAApB,CAAJ,CAAA;CAXA,CAYmD,CAAxC,CAAsB,CAAtB,CAAX,EAAA,EAA2C,UAAhC;CAEV,CAA8B,EAA9B,CAA8B,GAAA,GAAA,CAAA,CAA/B,CAAA;CAfF,IAAmC;CAiB7B,CAA8B,CAAA,CAAA,CAA/B,CAAO,EAAZ,CAAqC,EAArC,CAAA;CACE,SAAA,0BAAA;CAAA,EACC,GADD,EAAA;CACC,CAAO,EAAN,IAAA;CAAD,CAEE,IADD,EAAA;CACC,CAAI,CAAoB,CAAnB,CAAD,KAAH;CAAD,CACI,CAAqB,CAApB,EAAD,IAAH;UAHH;CAAA,CAIc,MAAb,GAAA;CAJD,CAKe,CALf,KAKC,IAAA;CALD,CAMQ,GAAP,GAAA;CAND,CAOS,EAPT,EAOC,EAAA;CARF,OAAA;CAAA,CAU6B,CAAtB,CAAP,EAAA,EAAO;AAEA,CAAP,GAAG,EAAH;CACE,EAAiB,CAAb,CAAa,CAAjB,EAAA,EAA4B;QAb9B;CAAA,EAeU,CAAK,EAAf,CAAA;CAfA,EAgBW,CAAI,EAAf,CAAA;CAhBA,CAkBmD,CAAxC,CAAsB,CAAtB,CAAX,CAAW,CAAX,EAA2C,UAAhC;CAEV,CAA8B,EAA9B,CAA8B,GAAA,GAAA,CAAA,CAA/B,CAAA;CArBF,IAAoC;CA7RnC,EAAA;;CAv7EH,CA4uFA,CAAqC,EAAhC,CAAO,EAAZ,CAAqC,IAArC;AAGK,CAFF,CAA8B,EAA9B,OAAD,EAAA,CAAA;CADF,EAAqC;;CA5uFrC,CAmvFA,CAAoC,EAA/B,CAAO,EAAZ,CAAoC,GAApC;AAEK,CADF,CAA6B,EAA7B,OAAD,EAAA;CADF,EAAoC;;CAnvFpC,CA0vFA,CAAgC,EAA3B,CAAO,EAAZ,CAAgC;AAE3B,CADF,CAAwB,EAAxB,IAAD,GAAA,EAAA;CADF,EAAgC;;CA1vFhC,CAiwFA,CAAmC,EAA9B,CAAO,EAAZ,CAAoC,EAApC;CACE,OAAA,eAAA;CAAA,EAAa,CAAb,EAAA,IAAA;CAAA,EACc,CAAd,EAAqB,KAArB;CAEC,CAAqB,CAAA,CAArB,GAAD,EAAuB,EAAvB;CACE,EAAS,CAAL,CAAK,CAAT,IAAoB,CAAX;CAAT,EACS,CAAL,CAAK,CAAT,IAAoB,CAAX;CADT,EAES,CAAL,CAAK,CAAT,IAAoB,CAAX;CAHW,YAIpB;CAJF,IAAsB;CAJxB,EAAmC;;CAjwFnC,CA2wFA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;;GAA6C,GAAX;MAChC;CAAA,GAAA,KAAA;CAAA,GACA,IAAA;CADA,GAEA,CAAA;CAFA,EAGA,CAAA,CAAA;CAHA,GAIA,IAAA;CAAQ,CAAO,CAAL,GAAA;CAAF,CAAgB,EAAN,EAAA;CAAV,CAA0B,GAAP,CAAA;CAJ3B,KAIA;CAJA,GAKA,CAAA;CAEA,GAAA,IAAA;CAAC,CAAgB,EAAhB,CAAD,GAAA,KAAA;MAR+B;CAAjC,EAAiC;;CA3wFjC,CAqxFA,CAA8B,EAAzB,CAAO,EAAZ,CAA+B;;GAAW,GAAX;MAC7B;CAAA,CAAA,EAAA,MAAA;CAAA,CACA,EAAA,IAAA;CADA,CAEe,CAAQ,CAAvB,CAAA,CAAA;AACa,CAHb,CAGA,EAAA,MAAA;CAHA,EAIA,CAAA,CAAA;CACA,GAAA,IAAA;CAAA,CAAiB,EAAhB,CAAD,CAAA,EAAA;MALA;CAMC,GAAA,MAAD,CAAA;CAPF,EAA8B;;CArxF9B,CA8xFA,CAAiC,CAAA,CAA5B,CAAO,EAAZ,CAAA;;GAAyC,GAAP;MAChC;CAAA,CAAA,EAAA,IAAA;CAAA,CACe,CAAQ,CAAvB,CAAA,CAAA;CADA,CAEA,EAAA,GAAA;CAFA,CAGiB,EAAjB,CAAA,GAAA;CAEA,GAAA;CACE,GAAC,EAAD,GAAA;CAAA,GACC,EAAD,EAAA;MAPF;CAD+B,UAU/B;CAVF,EAAiC;;CA9xFjC,CA0yFA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;CACE,EAAA,CAAA,IAAA;CAAA,CACA,EAAA,MAAA;CADA,CAEA,EAAA,IAAA;CAFA,CAGA,EAAA,KAAA;CAHA,CAIA,EAAA;CACC,GAAA,KAAD,EAAA;CANF,EAAiC;;CA1yFjC,CAkzFA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;CACE,EAAA,CAAA,IAAA;AACa,CADb,GACA,MAAA;CADA,CAEA,EAAA,IAAA;CAFA,CAGA,EAAA,CAAA;CAHA,CAIqB,EAArB,IAAA,CAAA;CAJA,GAKA,IAAA;CAAQ,CAAO,CAAL,GAAA;CAAF,CAAgB,EAAN,EAAA;CALlB,KAKA;CALA,GAMA,IAAA;CANA,EAOA,CAAA,CAAA;CACC,CAAgB,EAAhB,CAAD,GAAA,GAAA;CATF,EAAiC;;CAlzFjC,CA6zFA,CAAsC,EAAjC,CAAO,EAAZ,CAAsC,KAAtC;CACE,GAAA,IAAA;CAAA,CACqB,EAArB,IAAA,CAAA;CADA,CAEA,EAAA,CAAA;CAFA,GAGA,IAAA;CAAQ,CAAQ,EAAN,EAAA;CAAF,CAAgB,CAAL,GAAA;CAHnB,KAGA;CAHA,CAIa,CAAb,CAAA,EAAA;CAJA,CAKA,EAAA,IAAA;CALA,CAMA,EAAA,IAAA;CACC,EAAD,CAAC,CAAD,MAAA;CARF,EAAsC;;CA7zFtC,CAu0FA,CAAoC,EAA/B,CAAO,EAAZ,CAAoC,GAApC;CACE,CAAe,CAAQ,CAAvB,CAAA,CAAA;AACW,CADX,CACA,EAAA,IAAA;AACa,CAFb,CAEA,EAAA,MAAA;CAFA,CAGqB,EAArB,IAAA,CAAA;AACW,CAJX,GAIA,IAAA;CACC,EAAD,CAAC,CAAD,MAAA;CANF,EAAoC;;CAv0FpC,CA+0FA,CAA8B,EAAzB,CAAO,EAAZ,CAA8B;CAC5B,GAAA,MAAA;CAAA,GACA,IAAA;CADA,GAEA,IAAA;CAFA,CAGqB,EAArB,IAAA,CAAA;CAHA,CAIA,EAAA,IAAA;CACC,EAAD,CAAC,CAAD,MAAA;CANF,EAA8B;;CA/0F9B,CAu1FA,CAAgC,EAA3B,CAAO,EAAZ,CAAgC;CAC9B,EAAA,CAAA,CAAA;CAAA,CACA,EAAA;AACa,CAFb,CAEA,EAAA,MAAA;CAFA,GAGA,IAAA;CAHA,GAIA,CAAA;CACC,CAAgB,EAAhB,CAAD,GAAA,GAAA;CANF,EAAgC;;CAv1FhC,CA+1FA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;AACe,CAAb,CAAA,EAAA,MAAA;CAAA,CACa,CAAb,CAAA,EAAA;CADA,CAEa,CAAb,CAAA,EAAA;CAFA,CAGa,CAAb,CAAA,EAAA;CAHA,CAIe,CAAQ,CAAvB,CAAA,CAAA;CACC,CAAD,EAAC,GAAD,IAAA;CANF,EAAiC;;CA/1FjC,CAu2FA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;CACE,GAAA,KAAA;CAAA,CACA,EAAA,CAAA;CADA,CAEA,EAAA,IAAA;CAFA,CAGA,EAAA,IAAA;CACC,CAAgB,EAAhB,CAAD,GAAA,GAAA;CALF,EAAiC;;CAv2FjC,CA82FA,CAAiC,EAA5B,CAAO,EAAZ,CAAA;AACe,CAAb,CAAA,EAAA,MAAA;AACW,CADX,CACA,EAAA,IAAA;CADA,EAEA,CAAA,CAAA;CAFA,CAGA,EAAA,CAAA;CAHA,GAIA,IAAA;AAAgB,CAAR,CAAO,CAAL,GAAA;CAAF,CAAkB,EAAN,EAAA;CAJpB,KAIA;CAJA,CAKe,CAAkB,CAAjC,CAAA,CAAA;CACC,CAAgB,EAAhB,CAAD,GAAA,GAAA;CAPF,EAAiC;;CA92FjC,CAu3FA,CAAoC,EAA/B,CAAO,EAAZ,CAAqC,GAArC;;GAAgD,GAAX;MACnC;CAAA,CAAA,EAAA,MAAA;CAAA,EAEU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,EAIA,CAAC,CAAD,CAAA;CAJA,CAKA,EAAC,EAAD,EAAA;CACC,CAAD,EAAC,EAAM,EAAP,KAAA;CAPF,IAAU;CAFV,EAWU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,KAAA,IAAA;CAAA,CACA,EAAC,EAAD,CAAA;CACC,GAAA,KAAD,IAAA;CAHF,IAAU;CAXV,CAgBA,EAAA,IAAA;CAhBA,EAiBA,CAAA,CAAA;CACA,GAAA,IAAA;CAAC,CAAgB,EAAhB,CAAD,GAAA,KAAA;MAnBkC;CAApC,EAAoC;;CAv3FpC,CA44FA,CAAkC,EAA7B,CAAO,EAAZ,CAAkC,CAAlC;CACE,EAAA,CAAA,CAAA;CAAA,EAEU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,GAAA,MAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,GAIC,EAAD,EAAA;CAAe,CAAO,CAAL,KAAA;CAJjB,OAIA;CACC,CAAD,EAAC,EAAM,GAAP,IAAA;CANF,IAAU;CAFV,EAUU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CACC,GAAA,KAAD,IAAA;CAHF,IAAU;CAVV,EAeU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,CAIA,EAAC,EAAD,IAAA;CAJA,CAKA,EAAC,EAAD,EAAA;CALA,CAMA,EAAC,EAAD,EAAA;CANA,CAOA,EAAC,EAAD,EAAA;CAPA,CASoB,CAApB,CAAC,EAAD;CATA,CAUoB,CAApB,CAAC,EAAD;CAVA,CAWoB,CAApB,CAAC,EAAD;CAEC,GAAA,EAAM,GAAP,IAAA;CAdF,IAAU;CAfV,CA+Ba,CAAb,CAAA,EAAA;CA/BA,CAgCa,CAAb,CAAA,EAAA;CAhCA,CAiCa,CAAb,CAAA,EAAA;CAEC,CAAgB,EAAhB,CAAD,GAAA,GAAA;CApCF,EAAkC;;CA54FlC,CAk7FA,CAAoC,EAA/B,CAAO,EAAZ,CAAoC,GAApC;CACE,CAAA,EAAA,MAAA;CAAA,CACqB,EAArB,IAAA,CAAA;CADA,CAEa,CAAb,CAAA,EAAA;CAFA,EAIU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,GAAA,MAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,EAIA,CAAC,CAAD,CAAA;CACC,EAAS,CAAT,IAAD,CAAU,IAAV;CACE,GAAC,IAAD,OAAA;CAAA,CACA,EAAC,GAAD,CAAA;CACC,GAAA,KAAD,MAAA;CAHF,MAAU;CANZ,IAAU;CAJV,EAeU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,CAIA,EAAC,EAAD,IAAA;CAJA,CAKA,CAAA,CAAC,EAAD;CACC,CAAD,EAAC,EAAM,EAAP,KAAA;CAPF,IAAU;CAfV,EAwBA,CAAA,CAAA;AACW,CAzBX,CAyBA,EAAA,IAAA;CAzBA,EA2BU,CAAV,IAAA,CAAU;CACR,CAAA,EAAC,EAAD,CAAA;CACC,GAAA,KAAD,IAAA;CAFF,IAAU;CA5BwB,UAgClC;CAhCF,EAAoC;;CAl7FpC,CAo9FA,CAAmC,EAA9B,CAAO,EAAZ,CAAmC,EAAnC;CACE,CAAA,EAAA,MAAA;CAAA,EACA,CAAA,CAAA;CADA,GAEA,KAAA;CAFA,GAGA,IAAA;CAHA,EAIA,CAAA,CAAA;CAJA,GAKA,IAAA;CAAQ,CAAO,CAAL,GAAA;CAAF,CAAgB,EAAN,EAAA;CAAV,CAA0B,GAAP,CAAA;CAL3B,KAKA;CALA,EAMA,CAAA,CAAA;CANA,GAOA,IAAA;CAPA,CAQA,EAAA,IAAA;CARA,EAUU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,GAAA,MAAA;CAAA,GACC,EAAD,IAAA;CADA,CAEA,EAAC,EAAD,CAAA;CAEC,CAAD,EAAC,EAAM,GAAP,IAAA;CALF,IAAU;CAOT,CAAgB,EAAhB,CAAD,GAAA,GAAA;CAlBF,EAAmC;;CAp9FnC,CAw+FA,CAAmC,EAA9B,CAAO,EAAZ,CAAmC,EAAnC;CACE,GAAA,KAAA;CAAA,CACA,EAAA,IAAA;CADA,EAEA,CAAA,CAAA;CAFA,EAIU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,CAIA,EAAC,EAAD,EAAA;CAJA,CAKA,EAAC,EAAD,EAAA;CACC,GAAA,EAAM,EAAP,KAAA;CAAe,CAAS,GAAP,GAAA;CAAF,CAAkB,CAAL,KAAA;CAPpB,OAOR;CAPF,IAAU;CAJV,CAaA,EAAA,CAAA;CAbA,CAce,CAAS,CAAxB,CAAA,CAAA;CAdA,GAeA,IAAA;CAAQ,CAAO,CAAL,GAAA;AAAgB,CAAlB,CAAiB,GAAP,CAAA;CAflB,KAeA;CACC,CAAD,EAAC,IAAD,GAAA;CAjBF,EAAmC;;CAx+FnC,CA2/FA,CAAqC,EAAhC,CAAO,EAAZ,CAAqC,IAArC;CACE,CAAA,EAAA,GAAA;AACa,CADb,CACA,EAAA,MAAA;CADA,GAEA,IAAA;CAAQ,CAAO,CAAL,GAAA;CAFV,KAEA;CAFA,EAIU,CAAV,IAAA,CAAU;CACR,GAAC,EAAD,IAAA,KAAA;CAAA,CACA,EAAC,EAAD,CAAA;CADA,GAEC,EAAD,IAAA;CAFA,GAIC,EAAD,CAAA;CAJA,CAKA,EAAC,EAAD,EAAA;CALA,CAMA,EAAC,EAAD,EAAA;CACC,GAAA,EAAM,EAAP,KAAA;CAAe,CAAQ,EAAN,IAAA;CART,OAQR;CARF,IAAU;CAUT,CAAD,EAAC,MAAD,CAAA;CAfF,EAAqC;;CAiBrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA5gGA;;CAAA,CAqjGG,CAAA,MAAA;CAED,OAAA,uBAAA;CAAA,CAAmB,CAAP,CAAZ,KAAA;CAAA,CAEiB,CAAL,CAAZ,KAAA;CAFA,EAIY,CAAZ,KAAA;CACE,EAAK,CAAJ,EAAD;CAAA,EACK,CAAJ,EAAD;CADA,EAEK,CAAJ,EAAD;CAFA,EAGK,CAAJ,EAAD;CACC,EAAO,CAAP,SAAD;CATF,IAIY;CAJZ,CAWmC,CAAA,CAAnC,CAAK,CAAO,EAAZ,CAAoC,EAApC;CACE,SAAA,0SAAA;CAAA,EAAqC,CAA1B,CAAA,CAAX;CAAA,aAAA;QAAA;CAAA,GACU,EAAV;CADA,EAGS,CAAC,EAAV,GAHA;CAAA,EAIQ,CAAC,CAAT,CAAA,IAAmB;CAJnB,EAKS,CAAC,EAAV,IAAoB;CALpB,EAOA,GAAA;CAPA,CAQA,CAAK,CAAS,CAAT,CAAL;CARA,EASc,EAAA,CAAd,KAAA;CATA,EAUe,GAAf,MAAA;CAVA,EAWc,GAAd,KAAA;CAXA,EAYY,GAAZ,GAAA,EAAY;CAZZ,EAciB,CAAA,EAAjB,GAAiB,CAAjB;CAdA,EAeQ,EAAR,CAAA,IAfA;AAiBA,CAAA,EAAA,QAAS,2DAAT;CACE,EAAQ,CAAA,CAAR,GAAA,CAAyB;CACzB,GAAoB,CAAK,GAAzB,GAAA;CAAA,EAAW,EAAX,GAAA,EAAA;UAFF;CAAA,MAjBA;CAAA,EAqBa,CAAb,CAAK,CAAL,IArBA;CAAA,EAsBU,CAtBV,EAsBA,CAAA;CAtBA,EAuBW,CAvBX,EAuBA,EAAA;CAvBA,CAyBA,CAAK,GAAL;CAzBA,EA2BU,GAAV,CAAA,EAAoB;CA3BpB,EA4BU,GAAV,CAAA,EAAoB;AAEpB,CAAA,EAAA,QAAS,uEAAT;CACE,EAAW,EAAsB,GAAjC;CAAA,CAE2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CAFZ,CAG2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CAHZ,CAI2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CAJZ,CAAA,CAMqB,CAAZ,CAAT,GAAA,CAAS;CANT,CAAA,CAOqB,CAAZ,CAAT,GAAA,CAAS;CAPT,CAAA,CAQqB,CAAZ,CAAT,GAAA,CAAS;CART,EAUQ,EAAR,GAAA,EAVA;AAYA,CAAA,EAAA,UAAS,yFAAT;CACE,CAAA,CAAU,EAAL,KAAL;CAAA,CAAA,CACU,EAAL,KAAL;CADA,CAAA,CAEU,EAAL,KAAL;CAFA,EAGQ,CAHR,CAGA,KAAA;CAJF,QAZA;AAkBA,CAAA,EAAA,UAAS,yFAAT;CACE,CAAI,CAAA,CAAsD,MAA1D,CAAc;CAAd,CACqB,CAAD,CAAX,CAAT,CAAiC,IAAjC,CAA+C;CAD/C,CAEqB,CAAD,CAAX,CAAT,CAAiC,IAAjC;CAFA,CAGqB,CAAD,CAAX,CAAT,CAAiC,IAAjC;CAHA,CAAA,EAKY,IAAZ,EAAA;CALA,CAAA,EAMY,IAAZ,EAAA;CANA,CAAA,EAOY,IAAZ,EAAA;CAPA,EASQ,CATR,CASA,KAAA;CAVF,QAlBA;CAAA,EA8BU,IAAV,CAAA,EA9BA;CAAA,EA+BW,KAAX;AAEA,CAAA,EAAA,UAAS,iEAAT;CACE,CAAO,CAAM,CAAqB,CAApB,CAAP,CAAM,GAAb;CAAA,CACO,CAAK,CAA0B,CAApB,CAAX,CAAU,GAAjB;CADA,CAEO,CAAK,CAA0B,CAApB,CAAX,CAAU,GAAjB;CAFA,GAIS,CAAT,IAJA,CAIA;CAJA,GAKS,CAAT,IALA,CAKA;CALA,GAMS,CAAT,IANA,CAMA;CANA,GAQa,GAAO,EAApB,CAAA;CARA,GASa,GAAO,EAApB,CAAA;CATA,GAUa,GAAO,EAApB,CAAA;CAVA,CAYK,CAAD,CAA0E,EAA3D,IAAnB,CAAW;CAZX,EAcyB,CAAb,EAAoB,CAAZ,CAApB,EAAA;CAdA,EAeyB,CAAb,EAAoB,CAAZ,CAApB,EAAA;CAfA,EAgByB,CAAb,EAAoB,CAAZ,CAApB,EAAA;CAhBA,GAkBS,CAAT,GAlBA,EAkBA;CAlBA,GAmBS,CAAT,GAnBA,EAmBA;CAnBA,GAoBS,CAAT,GApBA,EAoBA;CApBA,EAsBU,CAtBV,GAsBA,GAAA;CAtBA,CAwBc,CAAK,CAAN,IAAc,CAA3B,CAAA;CAxBA,CAyBc,CAAK,CAAN,IAAc,CAA3B,CAAA;CAzBA,CA0Bc,CAAK,CAAN,IAAc,CAA3B,CAAA;CA1BA,CAAA,EA4BY,IAAZ,EAAA;CA5BA,CAAA,EA6BY,IAAZ,EAAA;CA7BA,CAAA,EA8BY,IAAZ,EAAA;CA9BA,EAgCW,CAhCX,IAgCA,EAAA;CAhCA,CAkCA,EAAM,MAAN;CAnCF,QAjCA;CAAA,CAsEA,EAAM,CAtEN,GAsEA;CAvEF,MA9BA;AAuGA,CAAA,EAAA,QAAS,mEAAT;CACE,EAAW,EAAsB,GAAjC;CAAA,CAEA,CAAK,CAAK,IAAV;CAFA,CAG2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CAHZ,CAI2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CAJZ,CAK2B,CAAf,GAA2B,EAAvC,CAAA,EAAY;CALZ,CAAA,CAOqB,CAAZ,CAAT,GAAA,CAAS;CAPT,CAAA,CAQqB,CAAZ,CAAT,GAAA,CAAS;CART,CAAA,CASqB,CAAZ,CAAT,GAAA,CAAS;CATT,EAWQ,EAAR,GAAA,EAXA;AAaA,CAAA,EAAA,UAAS,yFAAT;CACE,CAAA,CAAU,EAAL,KAAL;CAAA,CAAA,CACU,EAAL,KAAL;CADA,CAAA,CAEU,EAAL,KAAL;CAFA,EAGQ,CAHR,CAGA,KAAA;CAJF,QAbA;CAAA,CAmBA,CAAK,EAnBL,GAmBA;AAEA,CAAA,EAAA,UAAS,uEAAT;CACE,CAAA,CAAK,CAAY,MAAjB;CAAA,CAEqB,CAAD,CAAX,CAAT,CAAiC,IAAjC,CAAgD;CAFhD,CAGqB,CAAD,CAAX,CAAT,CAAiC,IAAjC;CAHA,CAIqB,CAAD,CAAX,CAAT,CAAiC,IAAjC;CAJA,CAAA,EAMY,IAAZ,EAAA;CANA,CAAA,EAOY,IAAZ,EAAA;CAPA,CAAA,EAQY,IAAZ,EAAA;CARA,EAUQ,CAVR,CAUA,KAAA;CAEA,EAAmB,CAAJ,MAAf,EAAA;CAAA,CAAA,EAAM,CAAN,OAAA;YAbF;CAAA,QArBA;CAAA,CAoCA,CAAK,KAAL;CApCA,EAqCU,IAAV,CAAA,EArCA;CAAA,EAsCW,KAAX;AAEA,CAAA,EAAA,UAAS,qEAAT;CACE,CAAI,CAAA,CAAM,MAAV;CAAA,EACY,CAAqB,CAApB,CAAN,CAAK,GAAZ;CADA,EAEW,CAA0B,CAApB,CAAV,CAAS,GAAhB;CAFA,EAGW,CAA0B,CAApB,CAAV,CAAS,GAAhB;CAHA,GAKS,CAAT,IALA,CAKA;CALA,GAMS,CAAT,IANA,CAMA;CANA,GAOS,CAAT,IAPA,CAOA;CAPA,GASa,GAAO,EAApB,CAAA;CATA,GAUa,GAAO,EAApB,CAAA;CAVA,GAWa,GAAO,EAApB,CAAA;CAXA,EAaI,CAAsF,CAAjF,KAAT,CAAc,CAAH;CAbX,EAemC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,EAAV;CAfA,EAgBmC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,EAAV;CAhBA,EAiBmC,CAA1B,CAAT,CAA0C,CAAZ,CAApB,EAAV;CAjBA,EAmBU,CAnBV,GAmBA,GAAA;CAnBA,CAqBc,CAAK,CAAN,IAAc,CAA3B,CAAA;CArBA,CAsBc,CAAK,CAAN,IAAc,CAA3B,CAAA;CAtBA,CAuBc,CAAK,CAAN,IAAc,CAA3B,CAAA;CAvBA,CAAA,EAyBY,IAAZ,EAAA;CAzBA,CAAA,EA0BY,IAAZ,EAAA;CA1BA,CAAA,EA2BY,IAAZ,EAAA;CA3BA,EA6BW,CA7BX,IA6BA,EAAA;CA7BA,CA+BA,EAAM,CA/BN,KA+BA;CAhCF,QAzCF;CAAA,MAvGA;CADiC,YAoLjC;CApLF,IAAmC;CAsL7B,CAA6B,CAAA,EAA9B,CAAO,EAAZ,CAAoC,EAApC;CACG,CAA2B,EAA3B,EAA2B,KAA5B,EAAA;CADF,IAAmC;CAnMlC,EAAA;;CArjGH,CA2vGA,CAAmC,EAA9B,CAAO,EAAZ,CAAoC,EAApC;CACG,CAAqB,CAAA,CAArB,GAAD,EAAuB,EAAvB;CACE,QAAA,CAAA;CAAA,EAAY,CAAc,EAA1B,GAAA;CAEA,EAAe,CAAZ,EAAH,GAAG;CACD,EAAS,CAAL,IAAJ;CAAA,EACS,CAAL,IAAJ;CADA,EAES,CAAL,IAAJ;MAHF,EAAA;CAKE,EAAS,CAAL,IAAJ;CAAA,EACS,CAAL,IAAJ;CADA,EAES,CAAL,IAAJ;QATF;CADoB,YAYpB;CAZF,IAAsB;CADxB,EAAmC;CA3vGnC"}
|
|
|
includes/pickers/caman/dist/caman.full.min.js
DELETED
|
@@ -1,251 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
(function(){var $,Analyze,Blender,Calculate,Caman,CamanParser,Canvas,Convert,Event,Fiber,Filter,IO,Image,Layer,Log,Module,Pixel,Plugin,Renderer,Root,Store,Util,fs,http,moduleKeywords,slice,vignetteFilters,__indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i;}return-1;},__slice=[].slice,__hasProp={}.hasOwnProperty,__bind=function(fn,me){return function(){return fn.apply(me,arguments);};},__extends=function(child,parent){for(var key in parent){if(__hasProp.call(parent,key))child[key]=parent[key];}function ctor(){this.constructor=child;}ctor.prototype=parent.prototype;child.prototype=new ctor();child.__super__=parent.prototype;return child;};moduleKeywords=['extended','included'];Module=(function(){function Module(){}
|
| 3 |
-
Module["extends"]=function(obj){var key,value,_ref;for(key in obj){value=obj[key];if(__indexOf.call(moduleKeywords,key)<0){this[key]=value;}}
|
| 4 |
-
if((_ref=obj.extended)!=null){_ref.apply(this);}
|
| 5 |
-
return this;};Module.includes=function(obj){var key,value,_ref;for(key in obj){value=obj[key];if(__indexOf.call(moduleKeywords,key)<0){this.prototype[key]=value;}}
|
| 6 |
-
if((_ref=obj.included)!=null){_ref.apply(this);}
|
| 7 |
-
return this;};Module.delegate=function(){var args,source,target,_i,_len,_results;args=1<=arguments.length?__slice.call(arguments,0):[];target=args.pop();_results=[];for(_i=0,_len=args.length;_i<_len;_i++){source=args[_i];_results.push(this.prototype[source]=target.prototype[source]);}
|
| 8 |
-
return _results;};Module.aliasFunction=function(to,from){var _this=this;return this.prototype[to]=function(){var args;args=1<=arguments.length?__slice.call(arguments,0):[];return _this.prototype[from].apply(_this,args);};};Module.aliasProperty=function(to,from){return Object.defineProperty(this.prototype,to,{get:function(){return this[from];},set:function(val){return this[from]=val;}});};Module.included=function(func){return func.call(this,this.prototype);};return Module;})();slice=Array.prototype.slice;$=function(sel,root){if(root==null){root=document;}
|
| 9 |
-
if(typeof sel==="object"||(typeof exports!=="undefined"&&exports!==null)){return sel;}
|
| 10 |
-
return root.querySelector(sel);};Util=(function(){function Util(){}
|
| 11 |
-
Util.uniqid=(function(){var id;id=0;return{get:function(){return id++;}};})();Util.extend=function(){var copy,dest,obj,prop,src,_i,_len;obj=arguments[0],src=2<=arguments.length?__slice.call(arguments,1):[];dest=obj;for(_i=0,_len=src.length;_i<_len;_i++){copy=src[_i];for(prop in copy){if(!__hasProp.call(copy,prop))continue;dest[prop]=copy[prop];}}
|
| 12 |
-
return dest;};Util.clampRGB=function(val){if(val<0){return 0;}
|
| 13 |
-
if(val>255){return 255;}
|
| 14 |
-
return val;};Util.copyAttributes=function(from,to,opts){var attr,_i,_len,_ref,_ref1,_results;if(opts==null){opts={};}
|
| 15 |
-
_ref=from.attributes;_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){attr=_ref[_i];if((opts.except!=null)&&(_ref1=attr.nodeName,__indexOf.call(opts.except,_ref1)>=0)){continue;}
|
| 16 |
-
_results.push(to.setAttribute(attr.nodeName,attr.nodeValue));}
|
| 17 |
-
return _results;};Util.dataArray=function(length){if(length==null){length=0;}
|
| 18 |
-
if(Caman.NodeJS||(window.Uint8Array!=null)){return new Uint8Array(length);}
|
| 19 |
-
return new Array(length);};return Util;})();if(typeof exports!=="undefined"&&exports!==null){Root=exports;Canvas=require('canvas');Image=Canvas.Image;Fiber=require('fibers');fs=require('fs');http=require('http');}else{Root=window;}
|
| 20 |
-
Caman=(function(_super){__extends(Caman,_super);Caman.version={release:"4.1.2",date:"7/27/2013"};Caman.DEBUG=false;Caman.allowRevert=true;Caman.crossOrigin="anonymous";Caman.remoteProxy="";Caman.proxyParam="camanProxyUrl";Caman.NodeJS=typeof exports!=="undefined"&&exports!==null;Caman.autoload=!Caman.NodeJS;Caman.toString=function(){return"Version "+Caman.version.release+", Released "+Caman.version.date;};Caman.getAttrId=function(canvas){if(Caman.NodeJS){return true;}
|
| 21 |
-
if(typeof canvas==="string"){canvas=$(canvas);}
|
| 22 |
-
if(!((canvas!=null)&&(canvas.getAttribute!=null))){return null;}
|
| 23 |
-
return canvas.getAttribute('data-caman-id');};function Caman(){this.nodeFileReady=__bind(this.nodeFileReady,this);var args,callback,id,_this=this;if(arguments.length===0){throw"Invalid arguments";}
|
| 24 |
-
if(this instanceof Caman){this.finishInit=this.finishInit.bind(this);this.imageLoaded=this.imageLoaded.bind(this);args=arguments[0];if(!Caman.NodeJS){id=parseInt(Caman.getAttrId(args[0]),10);callback=typeof args[1]==="function"?args[1]:typeof args[2]==="function"?args[2]:function(){};if(!isNaN(id)&&Store.has(id)){return Store.execute(id,callback);}}
|
| 25 |
-
this.id=Util.uniqid.get();this.initializedPixelData=this.originalPixelData=null;this.cropCoordinates={x:0,y:0};this.cropped=false;this.resized=false;this.pixelStack=[];this.layerStack=[];this.canvasQueue=[];this.currentLayer=null;this.scaled=false;this.analyze=new Analyze(this);this.renderer=new Renderer(this);this.domIsLoaded(function(){_this.parseArguments(args);return _this.setup();});return this;}else{return new Caman(arguments);}}
|
| 26 |
-
Caman.prototype.domIsLoaded=function(cb){var listener,_this=this;if(Caman.NodeJS){return setTimeout(function(){return cb.call(_this);},0);}else{if(document.readyState==="complete"){Log.debug("DOM initialized");return setTimeout(function(){return cb.call(_this);},0);}else{listener=function(){if(document.readyState==="complete"){Log.debug("DOM initialized");return cb.call(_this);}};return document.addEventListener("readystatechange",listener,false);}}};Caman.prototype.parseArguments=function(args){var key,val,_ref,_results;if(args.length===0){throw"Invalid arguments given";}
|
| 27 |
-
this.initObj=null;this.initType=null;this.imageUrl=null;this.callback=function(){};this.setInitObject(args[0]);if(args.length===1){return;}
|
| 28 |
-
switch(typeof args[1]){case"string":this.imageUrl=args[1];break;case"function":this.callback=args[1];}
|
| 29 |
-
if(args.length===2){return;}
|
| 30 |
-
this.callback=args[2];if(args.length===4){_ref=args[4];_results=[];for(key in _ref){if(!__hasProp.call(_ref,key))continue;val=_ref[key];_results.push(this.options[key]=val);}
|
| 31 |
-
return _results;}};Caman.prototype.setInitObject=function(obj){if(Caman.NodeJS){this.initObj=obj;this.initType='node';return;}
|
| 32 |
-
if(typeof obj==="object"){this.initObj=obj;}else{this.initObj=$(obj);}
|
| 33 |
-
if(this.initObj==null){throw"Could not find image or canvas for initialization.";}
|
| 34 |
-
return this.initType=this.initObj.nodeName.toLowerCase();};Caman.prototype.setup=function(){switch(this.initType){case"node":return this.initNode();case"img":return this.initImage();case"canvas":return this.initCanvas();}};Caman.prototype.initNode=function(){Log.debug("Initializing for NodeJS");if(typeof this.initObj==="string"&&this.initObj.match(/^https?:\/\//)){return this.readFromHttp(this.initObj,this.nodeFileReady);}else if(typeof this.initObj==="string"){return fs.readFile(this.initObj,this.nodeFileReady);}else{return this.nodeFileReady(null,this.initObj);}};Caman.prototype.readFromHttp=function(url,callback){var req;Log.debug("Fetching image from "+url);req=http.get(url,function(res){var buf;buf='';res.setEncoding('binary');res.on('data',function(chunk){return buf+=chunk;});return res.on('end',function(){return callback(null,new Buffer(buf,'binary'));});});return req.on('error',callback);};Caman.prototype.nodeFileReady=function(err,data){if(err){throw err;}
|
| 35 |
-
this.image=new Image();this.image.src=data;Log.debug("Image loaded. Width = "+(this.imageWidth())+", Height = "+(this.imageHeight()));this.canvas=new Canvas(this.imageWidth(),this.imageHeight());return this.finishInit();};Caman.prototype.initImage=function(){this.image=this.initObj;this.canvas=document.createElement('canvas');this.context=this.canvas.getContext('2d');Util.copyAttributes(this.image,this.canvas,{except:['src']});if(this.image.parentNode!=null){this.image.parentNode.replaceChild(this.canvas,this.image);}
|
| 36 |
-
this.imageAdjustments();return this.waitForImageLoaded();};Caman.prototype.initCanvas=function(){this.canvas=this.initObj;this.context=this.canvas.getContext('2d');if(this.imageUrl!=null){this.image=document.createElement('img');this.image.src=this.imageUrl;this.imageAdjustments();return this.waitForImageLoaded();}else{return this.finishInit();}};Caman.prototype.imageAdjustments=function(){if(this.needsHiDPISwap()){Log.debug(this.image.src,"->",this.hiDPIReplacement());this.swapped=true;this.image.src=this.hiDPIReplacement();}
|
| 37 |
-
if(IO.isRemote(this.image)){this.image.src=IO.proxyUrl(this.image.src);return Log.debug("Remote image detected, using URL = "+this.image.src);}};Caman.prototype.waitForImageLoaded=function(){if(this.isImageLoaded()){return this.imageLoaded();}else{return this.image.onload=this.imageLoaded;}};Caman.prototype.isImageLoaded=function(){if(!this.image.complete){return false;}
|
| 38 |
-
if((this.image.naturalWidth!=null)&&this.image.naturalWidth===0){return false;}
|
| 39 |
-
return true;};Caman.prototype.imageWidth=function(){return this.image.width||this.image.naturalWidth;};Caman.prototype.imageHeight=function(){return this.image.height||this.image.naturalHeight;};Caman.prototype.imageLoaded=function(){Log.debug("Image loaded. Width = "+(this.imageWidth())+", Height = "+(this.imageHeight()));if(this.swapped){this.canvas.width=this.imageWidth()/this.hiDPIRatio();this.canvas.height=this.imageHeight()/this.hiDPIRatio();}else{this.canvas.width=this.imageWidth();this.canvas.height=this.imageHeight();}
|
| 40 |
-
return this.finishInit();};Caman.prototype.finishInit=function(){var i,pixel,_i,_len,_ref;if(this.context==null){this.context=this.canvas.getContext('2d');}
|
| 41 |
-
this.originalWidth=this.preScaledWidth=this.width=this.canvas.width;this.originalHeight=this.preScaledHeight=this.height=this.canvas.height;this.hiDPIAdjustments();if(!this.hasId()){this.assignId();}
|
| 42 |
-
if(this.image!=null){this.context.drawImage(this.image,0,0,this.imageWidth(),this.imageHeight(),0,0,this.preScaledWidth,this.preScaledHeight);}
|
| 43 |
-
this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);this.pixelData=this.imageData.data;if(Caman.allowRevert){this.initializedPixelData=Util.dataArray(this.pixelData.length);this.originalPixelData=Util.dataArray(this.pixelData.length);_ref=this.pixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];this.initializedPixelData[i]=pixel;this.originalPixelData[i]=pixel;}}
|
| 44 |
-
this.dimensions={width:this.canvas.width,height:this.canvas.height};if(!Caman.NodeJS){Store.put(this.id,this);}
|
| 45 |
-
this.callback.call(this,this);return this.callback=function(){};};Caman.prototype.reloadCanvasData=function(){this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);return this.pixelData=this.imageData.data;};Caman.prototype.resetOriginalPixelData=function(){var i,pixel,_i,_len,_ref,_results;if(!Caman.allowRevert){throw"Revert disabled";}
|
| 46 |
-
this.originalPixelData=Util.dataArray(this.pixelData.length);_ref=this.pixelData;_results=[];for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];_results.push(this.originalPixelData[i]=pixel);}
|
| 47 |
-
return _results;};Caman.prototype.hasId=function(){return Caman.getAttrId(this.canvas)!=null;};Caman.prototype.assignId=function(){if(Caman.NodeJS||this.canvas.getAttribute('data-caman-id')){return;}
|
| 48 |
-
return this.canvas.setAttribute('data-caman-id',this.id);};Caman.prototype.hiDPIDisabled=function(){return this.canvas.getAttribute('data-caman-hidpi-disabled')!==null;};Caman.prototype.hiDPIAdjustments=function(){var ratio;if(Caman.NodeJS||!this.needsHiDPISwap()){return;}
|
| 49 |
-
ratio=this.hiDPIRatio();if(ratio!==1){Log.debug("HiDPI ratio = "+ratio);this.scaled=true;this.preScaledWidth=this.canvas.width;this.preScaledHeight=this.canvas.height;this.canvas.width=this.preScaledWidth*ratio;this.canvas.height=this.preScaledHeight*ratio;this.canvas.style.width=""+this.preScaledWidth+"px";this.canvas.style.height=""+this.preScaledHeight+"px";this.context.scale(ratio,ratio);this.width=this.originalWidth=this.canvas.width;return this.height=this.originalHeight=this.canvas.height;}};Caman.prototype.hiDPIRatio=function(){var backingStoreRatio,devicePixelRatio;devicePixelRatio=window.devicePixelRatio||1;backingStoreRatio=this.context.webkitBackingStorePixelRatio||this.context.mozBackingStorePixelRatio||this.context.msBackingStorePixelRatio||this.context.oBackingStorePixelRatio||this.context.backingStorePixelRatio||1;return devicePixelRatio/backingStoreRatio;};Caman.prototype.hiDPICapable=function(){return(window.devicePixelRatio!=null)&&window.devicePixelRatio!==1;};Caman.prototype.needsHiDPISwap=function(){if(this.hiDPIDisabled()||!this.hiDPICapable()){return false;}
|
| 50 |
-
return this.hiDPIReplacement()!==null;};Caman.prototype.hiDPIReplacement=function(){if(this.image==null){return null;}
|
| 51 |
-
return this.image.getAttribute('data-caman-hidpi');};Caman.prototype.replaceCanvas=function(newCanvas){var oldCanvas;oldCanvas=this.canvas;this.canvas=newCanvas;this.context=this.canvas.getContext('2d');if(!Caman.NodeJS){oldCanvas.parentNode.replaceChild(this.canvas,oldCanvas);}
|
| 52 |
-
this.width=this.canvas.width;this.height=this.canvas.height;this.reloadCanvasData();return this.dimensions={width:this.canvas.width,height:this.canvas.height};};Caman.prototype.render=function(callback){var _this=this;if(callback==null){callback=function(){};}
|
| 53 |
-
Event.trigger(this,"renderStart");return this.renderer.execute(function(){_this.context.putImageData(_this.imageData,0,0);return callback.call(_this);});};Caman.prototype.revert=function(updateContext){var i,pixel,_i,_len,_ref;if(updateContext==null){updateContext=true;}
|
| 54 |
-
if(!Caman.allowRevert){throw"Revert disabled";}
|
| 55 |
-
_ref=this.originalVisiblePixels();for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];this.pixelData[i]=pixel;}
|
| 56 |
-
if(updateContext){return this.context.putImageData(this.imageData,0,0);}};Caman.prototype.reset=function(){var canvas,ctx,i,imageData,pixel,pixelData,_i,_len,_ref;canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=this.originalWidth;canvas.height=this.originalHeight;ctx=canvas.getContext('2d');imageData=ctx.getImageData(0,0,canvas.width,canvas.height);pixelData=imageData.data;_ref=this.initializedPixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];pixelData[i]=pixel;}
|
| 57 |
-
ctx.putImageData(imageData,0,0);this.cropCoordinates={x:0,y:0};this.resized=false;return this.replaceCanvas(canvas);};Caman.prototype.originalVisiblePixels=function(){var canvas,coord,ctx,endX,endY,i,imageData,pixel,pixelData,pixels,scaledCanvas,startX,startY,width,_i,_j,_len,_ref,_ref1,_ref2,_ref3;if(!Caman.allowRevert){throw"Revert disabled";}
|
| 58 |
-
pixels=[];startX=this.cropCoordinates.x;endX=startX+this.width;startY=this.cropCoordinates.y;endY=startY+this.height;if(this.resized){canvas=document.createElement('canvas');canvas.width=this.originalWidth;canvas.height=this.originalHeight;ctx=canvas.getContext('2d');imageData=ctx.getImageData(0,0,canvas.width,canvas.height);pixelData=imageData.data;_ref=this.originalPixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];pixelData[i]=pixel;}
|
| 59 |
-
ctx.putImageData(imageData,0,0);scaledCanvas=document.createElement('canvas');scaledCanvas.width=this.width;scaledCanvas.height=this.height;ctx=scaledCanvas.getContext('2d');ctx.drawImage(canvas,0,0,this.originalWidth,this.originalHeight,0,0,this.width,this.height);pixelData=ctx.getImageData(0,0,this.width,this.height).data;width=this.width;}else{pixelData=this.originalPixelData;width=this.originalWidth;}
|
| 60 |
-
for(i=_j=0,_ref1=pixelData.length;_j<_ref1;i=_j+=4){coord=Pixel.locationToCoordinates(i,width);if(((startX<=(_ref2=coord.x)&&_ref2<endX))&&((startY<=(_ref3=coord.y)&&_ref3<endY))){pixels.push(pixelData[i],pixelData[i+1],pixelData[i+2],pixelData[i+3]);}}
|
| 61 |
-
return pixels;};Caman.prototype.process=function(name,processFn){this.renderer.add({type:Filter.Type.Single,name:name,processFn:processFn});return this;};Caman.prototype.processKernel=function(name,adjust,divisor,bias){var i,_i,_ref;if(divisor==null){divisor=null;}
|
| 62 |
-
if(bias==null){bias=0;}
|
| 63 |
-
if(divisor==null){divisor=0;for(i=_i=0,_ref=adjust.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){divisor+=adjust[i];}}
|
| 64 |
-
this.renderer.add({type:Filter.Type.Kernel,name:name,adjust:adjust,divisor:divisor,bias:bias});return this;};Caman.prototype.processPlugin=function(plugin,args){this.renderer.add({type:Filter.Type.Plugin,plugin:plugin,args:args});return this;};Caman.prototype.newLayer=function(callback){var layer;layer=new Layer(this);this.canvasQueue.push(layer);this.renderer.add({type:Filter.Type.LayerDequeue});callback.call(layer);this.renderer.add({type:Filter.Type.LayerFinished});return this;};Caman.prototype.executeLayer=function(layer){return this.pushContext(layer);};Caman.prototype.pushContext=function(layer){this.layerStack.push(this.currentLayer);this.pixelStack.push(this.pixelData);this.currentLayer=layer;return this.pixelData=layer.pixelData;};Caman.prototype.popContext=function(){this.pixelData=this.pixelStack.pop();return this.currentLayer=this.layerStack.pop();};Caman.prototype.applyCurrentLayer=function(){return this.currentLayer.applyToParent();};return Caman;})(Module);Root.Caman=Caman;Caman.Analyze=(function(){function Analyze(c){this.c=c;}
|
| 65 |
-
Analyze.prototype.calculateLevels=function(){var i,levels,numPixels,_i,_j,_k,_ref;levels={r:{},g:{},b:{}};for(i=_i=0;_i<=255;i=++_i){levels.r[i]=0;levels.g[i]=0;levels.b[i]=0;}
|
| 66 |
-
for(i=_j=0,_ref=this.c.pixelData.length;_j<_ref;i=_j+=4){levels.r[this.c.pixelData[i]]++;levels.g[this.c.pixelData[i+1]]++;levels.b[this.c.pixelData[i+2]]++;}
|
| 67 |
-
numPixels=this.c.pixelData.length/4;for(i=_k=0;_k<=255;i=++_k){levels.r[i]/=numPixels;levels.g[i]/=numPixels;levels.b[i]/=numPixels;}
|
| 68 |
-
return levels;};return Analyze;})();Analyze=Caman.Analyze;Caman.DOMUpdated=function(){var img,imgs,parser,_i,_len,_results;imgs=document.querySelectorAll("img[data-caman]");if(!(imgs.length>0)){return;}
|
| 69 |
-
_results=[];for(_i=0,_len=imgs.length;_i<_len;_i++){img=imgs[_i];_results.push(parser=new CamanParser(img,function(){this.parse();return this.execute();}));}
|
| 70 |
-
return _results;};if(Caman.autoload){(function(){if(document.readyState==="complete"){return Caman.DOMUpdated();}else{return document.addEventListener("DOMContentLoaded",Caman.DOMUpdated,false);}})();}
|
| 71 |
-
CamanParser=(function(){var INST_REGEX;INST_REGEX="(\\w+)\\((.*?)\\)";function CamanParser(ele,ready){this.dataStr=ele.getAttribute('data-caman');this.caman=Caman(ele,ready.bind(this));}
|
| 72 |
-
CamanParser.prototype.parse=function(){var args,e,filter,func,inst,instFunc,m,r,unparsedInstructions,_i,_len,_ref,_results;this.ele=this.caman.canvas;r=new RegExp(INST_REGEX,'g');unparsedInstructions=this.dataStr.match(r);if(!(unparsedInstructions.length>0)){return;}
|
| 73 |
-
r=new RegExp(INST_REGEX);_results=[];for(_i=0,_len=unparsedInstructions.length;_i<_len;_i++){inst=unparsedInstructions[_i];_ref=inst.match(r),m=_ref[0],filter=_ref[1],args=_ref[2];instFunc=new Function("return function() { this."+filter+"("+args+"); };");try{func=instFunc();_results.push(func.call(this.caman));}catch(_error){e=_error;_results.push(Log.debug(e));}}
|
| 74 |
-
return _results;};CamanParser.prototype.execute=function(){var ele;ele=this.ele;return this.caman.render(function(){return ele.parentNode.replaceChild(this.toImage(),ele);});};return CamanParser;})();Caman.Blender=(function(){function Blender(){}
|
| 75 |
-
Blender.blenders={};Blender.register=function(name,func){return this.blenders[name]=func;};Blender.execute=function(name,rgbaLayer,rgbaParent){return this.blenders[name](rgbaLayer,rgbaParent);};return Blender;})();Blender=Caman.Blender;Caman.Calculate=(function(){function Calculate(){}
|
| 76 |
-
Calculate.distance=function(x1,y1,x2,y2){return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));};Calculate.randomRange=function(min,max,getFloat){var rand;if(getFloat==null){getFloat=false;}
|
| 77 |
-
rand=min+(Math.random()*(max-min));if(getFloat){return rand.toFixed(getFloat);}else{return Math.round(rand);}};Calculate.luminance=function(rgba){return(0.299*rgba.r)+(0.587*rgba.g)+(0.114*rgba.b);};Calculate.bezier=function(start,ctrl1,ctrl2,end,lowBound,highBound){var bezier,clamp,controlPoints,endX,i,j,lerp,next,prev,t,_i,_j,_ref;if(lowBound==null){lowBound=0;}
|
| 78 |
-
if(highBound==null){highBound=255;}
|
| 79 |
-
if(start[0]instanceof Array){controlPoints=start;lowBound=ctrl1;highBound=ctrl2;}else{controlPoints=[start,ctrl1,ctrl2,end];}
|
| 80 |
-
if(controlPoints.length<2){throw"Invalid number of arguments to bezier";}
|
| 81 |
-
bezier={};lerp=function(a,b,t){return a*(1-t)+b*t;};clamp=function(a,min,max){return Math.min(Math.max(a,min),max);};for(i=_i=0;_i<1000;i=++_i){t=i/1000;prev=controlPoints;while(prev.length>1){next=[];for(j=_j=0,_ref=prev.length-2;0<=_ref?_j<=_ref:_j>=_ref;j=0<=_ref?++_j:--_j){next.push([lerp(prev[j][0],prev[j+1][0],t),lerp(prev[j][1],prev[j+1][1],t)]);}
|
| 82 |
-
prev=next;}
|
| 83 |
-
bezier[Math.round(prev[0][0])]=Math.round(clamp(prev[0][1],lowBound,highBound));}
|
| 84 |
-
endX=controlPoints[controlPoints.length-1][0];bezier=Caman.Calculate.missingValues(bezier,endX);if(bezier[endX]==null){bezier[endX]=bezier[endX-1];}
|
| 85 |
-
return bezier;};Calculate.hermite=function(controlPoints,lowBound,highBound){var add,clamp,count,endX,fac0,fac1,fac2,fac3,i,j,lerp,m0,m1,mul,p,p0,p1,pointsPerSegment,pointsPerStep,pos,ret,sub,t,_i,_j,_ref,_this=this;if(controlPoints.length<2){throw"Invalid number of arguments to hermite";}
|
| 86 |
-
ret={};lerp=function(a,b,t){return a*(1-t)+b*t;};add=function(a,b,c,d){return[a[0]+b[0]+c[0]+d[0],a[1]+b[1]+c[1]+d[1]];};mul=function(a,b){return[a[0]*b[0],a[1]*b[1]];};sub=function(a,b){return[a[0]-b[0],a[1]-b[1]];};clamp=function(a,min,max){return Math.min(Math.max(a,min),max);};count=0;for(i=_i=0,_ref=controlPoints.length-2;0<=_ref?_i<=_ref:_i>=_ref;i=0<=_ref?++_i:--_i){p0=controlPoints[i];p1=controlPoints[i+1];pointsPerSegment=p1[0]-p0[0];pointsPerStep=1/pointsPerSegment;if(i===controlPoints.length-2){pointsPerStep=1/(pointsPerSegment-1);}
|
| 87 |
-
p=i>0?controlPoints[i-1]:p0;m0=mul(sub(p1,p),[0.5,0.5]);p=i<controlPoints.length-2?controlPoints[i+2]:p1;m1=mul(sub(p,p0),[0.5,0.5]);for(j=_j=0;0<=pointsPerSegment?_j<=pointsPerSegment:_j>=pointsPerSegment;j=0<=pointsPerSegment?++_j:--_j){t=j*pointsPerStep;fac0=2.0*t*t*t-3.0*t*t+1.0;fac1=t*t*t-2.0*t*t+t;fac2=-2.0*t*t*t+3.0*t*t;fac3=t*t*t-t*t;pos=add(mul(p0,[fac0,fac0]),mul(m0,[fac1,fac1]),mul(p1,[fac2,fac2]),mul(m1,[fac3,fac3]));ret[Math.round(pos[0])]=Math.round(clamp(pos[1],lowBound,highBound));count+=1;}}
|
| 88 |
-
endX=controlPoints[controlPoints.length-1][0];ret=Caman.Calculate.missingValues(ret,endX);return ret;};Calculate.missingValues=function(values,endX){var i,j,leftCoord,ret,rightCoord,_i,_j;if(Object.keys(values).length<endX+1){ret={};for(i=_i=0;0<=endX?_i<=endX:_i>=endX;i=0<=endX?++_i:--_i){if(values[i]!=null){ret[i]=values[i];}else{leftCoord=[i-1,ret[i-1]];for(j=_j=i;i<=endX?_j<=endX:_j>=endX;j=i<=endX?++_j:--_j){if(values[j]!=null){rightCoord=[j,values[j]];break;}}
|
| 89 |
-
ret[i]=leftCoord[1]+((rightCoord[1]-leftCoord[1])/(rightCoord[0]-leftCoord[0]))*(i-leftCoord[0]);}}
|
| 90 |
-
return ret;}
|
| 91 |
-
return values;};return Calculate;})();Calculate=Caman.Calculate;Caman.Convert=(function(){function Convert(){}
|
| 92 |
-
Convert.hexToRGB=function(hex){var b,g,r;if(hex.charAt(0)==="#"){hex=hex.substr(1);}
|
| 93 |
-
r=parseInt(hex.substr(0,2),16);g=parseInt(hex.substr(2,2),16);b=parseInt(hex.substr(4,2),16);return{r:r,g:g,b:b};};Convert.rgbToHSL=function(r,g,b){var d,h,l,max,min,s;if(typeof r==="object"){g=r.g;b=r.b;r=r.r;}
|
| 94 |
-
r/=255;g/=255;b/=255;max=Math.max(r,g,b);min=Math.min(r,g,b);l=(max+min)/2;if(max===min){h=s=0;}else{d=max-min;s=l>0.5?d/(2-max-min):d/(max+min);h=(function(){switch(max){case r:return(g-b)/d+(g<b?6:0);case g:return(b-r)/d+2;case b:return(r-g)/d+4;}})();h/=6;}
|
| 95 |
-
return{h:h,s:s,l:l};};Convert.hslToRGB=function(h,s,l){var b,g,p,q,r;if(typeof h==="object"){s=h.s;l=h.l;h=h.h;}
|
| 96 |
-
if(s===0){r=g=b=l;}else{q=l<0.5?l*(1+s):l+s-l*s;p=2*l-q;r=this.hueToRGB(p,q,h+1/3);g=this.hueToRGB(p,q,h);b=this.hueToRGB(p,q,h-1/3);}
|
| 97 |
-
return{r:r*255,g:g*255,b:b*255};};Convert.hueToRGB=function(p,q,t){if(t<0){t+=1;}
|
| 98 |
-
if(t>1){t-=1;}
|
| 99 |
-
if(t<1/6){return p+(q-p)*6*t;}
|
| 100 |
-
if(t<1/2){return q;}
|
| 101 |
-
if(t<2/3){return p+(q-p)*(2/3-t)*6;}
|
| 102 |
-
return p;};Convert.rgbToHSV=function(r,g,b){var d,h,max,min,s,v;r/=255;g/=255;b/=255;max=Math.max(r,g,b);min=Math.min(r,g,b);v=max;d=max-min;s=max===0?0:d/max;if(max===min){h=0;}else{h=(function(){switch(max){case r:return(g-b)/d+(g<b?6:0);case g:return(b-r)/d+2;case b:return(r-g)/d+4;}})();h/=6;}
|
| 103 |
-
return{h:h,s:s,v:v};};Convert.hsvToRGB=function(h,s,v){var b,f,g,i,p,q,r,t;i=Math.floor(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);switch(i%6){case 0:r=v;g=t;b=p;break;case 1:r=q;g=v;b=p;break;case 2:r=p;g=v;b=t;break;case 3:r=p;g=q;b=v;break;case 4:r=t;g=p;b=v;break;case 5:r=v;g=p;b=q;}
|
| 104 |
-
return{r:Math.floor(r*255),g:Math.floor(g*255),b:Math.floor(b*255)};};Convert.rgbToXYZ=function(r,g,b){var x,y,z;r/=255;g/=255;b/=255;if(r>0.04045){r=Math.pow((r+0.055)/1.055,2.4);}else{r/=12.92;}
|
| 105 |
-
if(g>0.04045){g=Math.pow((g+0.055)/1.055,2.4);}else{g/=12.92;}
|
| 106 |
-
if(b>0.04045){b=Math.pow((b+0.055)/1.055,2.4);}else{b/=12.92;}
|
| 107 |
-
x=r*0.4124+g*0.3576+b*0.1805;y=r*0.2126+g*0.7152+b*0.0722;z=r*0.0193+g*0.1192+b*0.9505;return{x:x*100,y:y*100,z:z*100};};Convert.xyzToRGB=function(x,y,z){var b,g,r;x/=100;y/=100;z/=100;r=(3.2406*x)+(-1.5372*y)+(-0.4986*z);g=(-0.9689*x)+(1.8758*y)+(0.0415*z);b=(0.0557*x)+(-0.2040*y)+(1.0570*z);if(r>0.0031308){r=(1.055*Math.pow(r,0.4166666667))-0.055;}else{r*=12.92;}
|
| 108 |
-
if(g>0.0031308){g=(1.055*Math.pow(g,0.4166666667))-0.055;}else{g*=12.92;}
|
| 109 |
-
if(b>0.0031308){b=(1.055*Math.pow(b,0.4166666667))-0.055;}else{b*=12.92;}
|
| 110 |
-
return{r:r*255,g:g*255,b:b*255};};Convert.xyzToLab=function(x,y,z){var a,b,l,whiteX,whiteY,whiteZ;if(typeof x==="object"){y=x.y;z=x.z;x=x.x;}
|
| 111 |
-
whiteX=95.047;whiteY=100.0;whiteZ=108.883;x/=whiteX;y/=whiteY;z/=whiteZ;if(x>0.008856451679){x=Math.pow(x,0.3333333333);}else{x=(7.787037037*x)+0.1379310345;}
|
| 112 |
-
if(y>0.008856451679){y=Math.pow(y,0.3333333333);}else{y=(7.787037037*y)+0.1379310345;}
|
| 113 |
-
if(z>0.008856451679){z=Math.pow(z,0.3333333333);}else{z=(7.787037037*z)+0.1379310345;}
|
| 114 |
-
l=116*y-16;a=500*(x-y);b=200*(y-z);return{l:l,a:a,b:b};};Convert.labToXYZ=function(l,a,b){var x,y,z;if(typeof l==="object"){a=l.a;b=l.b;l=l.l;}
|
| 115 |
-
y=(l+16)/116;x=y+(a/500);z=y-(b/200);if(x>0.2068965517){x=x*x*x;}else{x=0.1284185493*(x-0.1379310345);}
|
| 116 |
-
if(y>0.2068965517){y=y*y*y;}else{y=0.1284185493*(y-0.1379310345);}
|
| 117 |
-
if(z>0.2068965517){z=z*z*z;}else{z=0.1284185493*(z-0.1379310345);}
|
| 118 |
-
return{x:x*95.047,y:y*100.0,z:z*108.883};};Convert.rgbToLab=function(r,g,b){var xyz;if(typeof r==="object"){g=r.g;b=r.b;r=r.r;}
|
| 119 |
-
xyz=this.rgbToXYZ(r,g,b);return this.xyzToLab(xyz);};Convert.labToRGB=function(l,a,b){};return Convert;})();Convert=Caman.Convert;Caman.Event=(function(){function Event(){}
|
| 120 |
-
Event.events={};Event.types=["processStart","processComplete","renderStart","renderFinished","blockStarted","blockFinished"];Event.trigger=function(target,type,data){var event,_i,_len,_ref,_results;if(data==null){data=null;}
|
| 121 |
-
if(this.events[type]&&this.events[type].length){_ref=this.events[type];_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){event=_ref[_i];if(event.target===null||target.id===event.target.id){_results.push(event.fn.call(target,data));}else{_results.push(void 0);}}
|
| 122 |
-
return _results;}};Event.listen=function(target,type,fn){var _fn,_type;if(typeof target==="string"){_type=target;_fn=type;target=null;type=_type;fn=_fn;}
|
| 123 |
-
if(__indexOf.call(this.types,type)<0){return false;}
|
| 124 |
-
if(!this.events[type]){this.events[type]=[];}
|
| 125 |
-
this.events[type].push({target:target,fn:fn});return true;};return Event;})();Event=Caman.Event;Caman.Filter=(function(){function Filter(){}
|
| 126 |
-
Filter.Type={Single:1,Kernel:2,LayerDequeue:3,LayerFinished:4,LoadOverlay:5,Plugin:6};Filter.register=function(name,filterFunc){return Caman.prototype[name]=filterFunc;};return Filter;})();Filter=Caman.Filter;Caman.IO=(function(){function IO(){}
|
| 127 |
-
IO.domainRegex=/(?:(?:http|https):\/\/)((?:\w+)\.(?:(?:\w|\.)+))/;IO.isRemote=function(img){if(img==null){return false;}
|
| 128 |
-
if(this.corsEnabled(img)){return false;}
|
| 129 |
-
return this.isURLRemote(img.src);};IO.corsEnabled=function(img){var _ref;return(img.crossOrigin!=null)&&((_ref=img.crossOrigin.toLowerCase())==='anonymous'||_ref==='use-credentials');};IO.isURLRemote=function(url){var matches;matches=url.match(this.domainRegex);if(matches){return matches[1]!==document.domain;}else{return false;}};IO.remoteCheck=function(src){if(this.isURLRemote(src)){if(!Caman.remoteProxy.length){Log.info("Attempting to load a remote image without a configured proxy. URL: "+src);}else{if(Caman.isURLRemote(Caman.remoteProxy)){Log.info("Cannot use a remote proxy for loading images.");return;}
|
| 130 |
-
return this.proxyUrl(src);}}};IO.proxyUrl=function(src){return""+Caman.remoteProxy+"?"+Caman.proxyParam+"="+(encodeURIComponent(src));};IO.useProxy=function(lang){var langToExt;langToExt={ruby:'rb',python:'py',perl:'pl',javascript:'js'};lang=lang.toLowerCase();if(langToExt[lang]!=null){lang=langToExt[lang];}
|
| 131 |
-
return"proxies/caman_proxy."+lang;};return IO;})();Caman.prototype.save=function(){if(typeof exports!=="undefined"&&exports!==null){return this.nodeSave.apply(this,arguments);}else{return this.browserSave.apply(this,arguments);}};Caman.prototype.browserSave=function(type){var image;if(type==null){type="png";}
|
| 132 |
-
type=type.toLowerCase();image=this.toBase64(type).replace("image/"+type,"image/octet-stream");return document.location.href=image;};Caman.prototype.nodeSave=function(file,overwrite,callback){var e,stats;if(overwrite==null){overwrite=true;}
|
| 133 |
-
if(callback==null){callback=null;}
|
| 134 |
-
try{stats=fs.statSync(file);if(stats.isFile()&&!overwrite){return false;}}catch(_error){e=_error;Log.debug("Creating output file "+file);}
|
| 135 |
-
return fs.writeFile(file,this.canvas.toBuffer(),function(err){Log.debug("Finished writing to "+file);if(callback){return callback.call(this,err);}});};Caman.prototype.toImage=function(type){var img;img=new Image();img.src=this.toBase64(type);img.width=this.dimensions.width;img.height=this.dimensions.height;if(window.devicePixelRatio){img.width/=window.devicePixelRatio;img.height/=window.devicePixelRatio;}
|
| 136 |
-
return img;};Caman.prototype.toBase64=function(type){if(type==null){type="png";}
|
| 137 |
-
type=type.toLowerCase();return this.canvas.toDataURL("image/"+type);};IO=Caman.IO;Caman.Layer=(function(){function Layer(c){this.c=c;this.filter=this.c;this.options={blendingMode:'normal',opacity:1.0};this.layerID=Util.uniqid.get();this.canvas=typeof exports!=="undefined"&&exports!==null?new Canvas():document.createElement('canvas');this.canvas.width=this.c.dimensions.width;this.canvas.height=this.c.dimensions.height;this.context=this.canvas.getContext('2d');this.context.createImageData(this.canvas.width,this.canvas.height);this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);this.pixelData=this.imageData.data;}
|
| 138 |
-
Layer.prototype.newLayer=function(cb){return this.c.newLayer.call(this.c,cb);};Layer.prototype.setBlendingMode=function(mode){this.options.blendingMode=mode;return this;};Layer.prototype.opacity=function(opacity){this.options.opacity=opacity/100;return this;};Layer.prototype.copyParent=function(){var i,parentData,_i,_ref;parentData=this.c.pixelData;for(i=_i=0,_ref=this.c.pixelData.length;_i<_ref;i=_i+=4){this.pixelData[i]=parentData[i];this.pixelData[i+1]=parentData[i+1];this.pixelData[i+2]=parentData[i+2];this.pixelData[i+3]=parentData[i+3];}
|
| 139 |
-
return this;};Layer.prototype.fillColor=function(){return this.c.fillColor.apply(this.c,arguments);};Layer.prototype.overlayImage=function(image){if(typeof image==="object"){image=image.src;}else if(typeof image==="string"&&image[0]==="#"){image=$(image).src;}
|
| 140 |
-
if(!image){return this;}
|
| 141 |
-
this.c.renderer.renderQueue.push({type:Filter.Type.LoadOverlay,src:image,layer:this});return this;};Layer.prototype.applyToParent=function(){var i,layerData,parentData,result,rgbaLayer,rgbaParent,_i,_ref,_results;parentData=this.c.pixelStack[this.c.pixelStack.length-1];layerData=this.c.pixelData;_results=[];for(i=_i=0,_ref=layerData.length;_i<_ref;i=_i+=4){rgbaParent={r:parentData[i],g:parentData[i+1],b:parentData[i+2],a:parentData[i+3]};rgbaLayer={r:layerData[i],g:layerData[i+1],b:layerData[i+2],a:layerData[i+3]};result=Blender.execute(this.options.blendingMode,rgbaLayer,rgbaParent);result.r=Util.clampRGB(result.r);result.g=Util.clampRGB(result.g);result.b=Util.clampRGB(result.b);if(result.a==null){result.a=rgbaLayer.a;}
|
| 142 |
-
parentData[i]=rgbaParent.r-((rgbaParent.r-result.r)*(this.options.opacity*(result.a/255)));parentData[i+1]=rgbaParent.g-((rgbaParent.g-result.g)*(this.options.opacity*(result.a/255)));_results.push(parentData[i+2]=rgbaParent.b-((rgbaParent.b-result.b)*(this.options.opacity*(result.a/255))));}
|
| 143 |
-
return _results;};return Layer;})();Layer=Caman.Layer;Caman.Logger=(function(){function Logger(){var name,_i,_len,_ref;_ref=['log','info','warn','error'];for(_i=0,_len=_ref.length;_i<_len;_i++){name=_ref[_i];this[name]=(function(name){return function(){var args,e;args=1<=arguments.length?__slice.call(arguments,0):[];if(!Caman.DEBUG){return;}
|
| 144 |
-
try{return console[name].apply(console,args);}catch(_error){e=_error;return console[name](args);}};})(name);}
|
| 145 |
-
this.debug=this.log;}
|
| 146 |
-
return Logger;})();Log=new Caman.Logger();Caman.Pixel=(function(){Pixel.coordinatesToLocation=function(x,y,width){return(y*width+x)*4;};Pixel.locationToCoordinates=function(loc,width){var x,y;y=Math.floor(loc/(width*4));x=(loc%(width*4))/4;return{x:x,y:y};};function Pixel(r,g,b,a,c){this.r=r!=null?r:0;this.g=g!=null?g:0;this.b=b!=null?b:0;this.a=a!=null?a:255;this.c=c!=null?c:null;this.loc=0;}
|
| 147 |
-
Pixel.prototype.setContext=function(c){return this.c=c;};Pixel.prototype.locationXY=function(){var x,y;if(this.c==null){throw"Requires a CamanJS context";}
|
| 148 |
-
y=this.c.dimensions.height-Math.floor(this.loc/(this.c.dimensions.width*4));x=(this.loc%(this.c.dimensions.width*4))/4;return{x:x,y:y};};Pixel.prototype.pixelAtLocation=function(loc){if(this.c==null){throw"Requires a CamanJS context";}
|
| 149 |
-
return new Pixel(this.c.pixelData[loc],this.c.pixelData[loc+1],this.c.pixelData[loc+2],this.c.pixelData[loc+3],this.c);};Pixel.prototype.getPixelRelative=function(horiz,vert){var newLoc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 150 |
-
newLoc=this.loc+(this.c.dimensions.width*4*(vert*-1))+(4*horiz);if(newLoc>this.c.pixelData.length||newLoc<0){return new Pixel(0,0,0,255,this.c);}
|
| 151 |
-
return this.pixelAtLocation(newLoc);};Pixel.prototype.putPixelRelative=function(horiz,vert,rgba){var nowLoc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 152 |
-
nowLoc=this.loc+(this.c.dimensions.width*4*(vert*-1))+(4*horiz);if(newLoc>this.c.pixelData.length||newLoc<0){return;}
|
| 153 |
-
this.c.pixelData[newLoc]=rgba.r;this.c.pixelData[newLoc+1]=rgba.g;this.c.pixelData[newLoc+2]=rgba.b;this.c.pixelData[newLoc+3]=rgba.a;return true;};Pixel.prototype.getPixel=function(x,y){var loc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 154 |
-
loc=this.coordinatesToLocation(x,y,this.width);return this.pixelAtLocation(loc);};Pixel.prototype.putPixel=function(x,y,rgba){var loc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 155 |
-
loc=this.coordinatesToLocation(x,y,this.width);this.c.pixelData[loc]=rgba.r;this.c.pixelData[loc+1]=rgba.g;this.c.pixelData[loc+2]=rgba.b;return this.c.pixelData[loc+3]=rgba.a;};Pixel.prototype.toString=function(){return this.toKey();};Pixel.prototype.toHex=function(includeAlpha){var hex;if(includeAlpha==null){includeAlpha=false;}
|
| 156 |
-
hex='#'+this.r.toString(16)+this.g.toString(16)+this.b.toString(16);if(includeAlpha){return hex+this.a.toString(16);}else{return hex;}};return Pixel;})();Pixel=Caman.Pixel;Caman.Plugin=(function(){function Plugin(){}
|
| 157 |
-
Plugin.plugins={};Plugin.register=function(name,plugin){return this.plugins[name]=plugin;};Plugin.execute=function(context,name,args){return this.plugins[name].apply(context,args);};return Plugin;})();Plugin=Caman.Plugin;Caman.Renderer=(function(){Renderer.Blocks=Caman.NodeJS?require('os').cpus().length:4;function Renderer(c){this.c=c;this.processNext=__bind(this.processNext,this);this.renderQueue=[];this.modPixelData=null;}
|
| 158 |
-
Renderer.prototype.add=function(job){if(job==null){return;}
|
| 159 |
-
return this.renderQueue.push(job);};Renderer.prototype.processNext=function(){var layer;if(this.renderQueue.length===0){Event.trigger(this,"renderFinished");if(this.finishedFn!=null){this.finishedFn.call(this.c);}
|
| 160 |
-
return this;}
|
| 161 |
-
this.currentJob=this.renderQueue.shift();switch(this.currentJob.type){case Filter.Type.LayerDequeue:layer=this.c.canvasQueue.shift();this.c.executeLayer(layer);return this.processNext();case Filter.Type.LayerFinished:this.c.applyCurrentLayer();this.c.popContext();return this.processNext();case Filter.Type.LoadOverlay:return this.loadOverlay(this.currentJob.layer,this.currentJob.src);case Filter.Type.Plugin:return this.executePlugin();default:return this.executeFilter();}};Renderer.prototype.execute=function(callback){this.finishedFn=callback;this.modPixelData=Util.dataArray(this.c.pixelData.length);return this.processNext();};Renderer.prototype.eachBlock=function(fn){var blockN,blockPixelLength,bnum,end,f,i,lastBlockN,n,start,_i,_ref,_results,_this=this;this.blocksDone=0;n=this.c.pixelData.length;blockPixelLength=Math.floor((n/4)/Renderer.Blocks);blockN=blockPixelLength*4;lastBlockN=blockN+((n/4)%Renderer.Blocks)*4;_results=[];for(i=_i=0,_ref=Renderer.Blocks;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){start=i*blockN;end=start+(i===Renderer.Blocks-1?lastBlockN:blockN);if(Caman.NodeJS){f=Fiber(function(){return fn.call(_this,i,start,end);});bnum=f.run();_results.push(this.blockFinished(bnum));}else{_results.push(setTimeout((function(i,start,end){return function(){return fn.call(_this,i,start,end);};})(i,start,end),0));}}
|
| 162 |
-
return _results;};Renderer.prototype.executeFilter=function(){Event.trigger(this.c,"processStart",this.currentJob);if(this.currentJob.type===Filter.Type.Single){return this.eachBlock(this.renderBlock);}else{return this.eachBlock(this.renderKernel);}};Renderer.prototype.executePlugin=function(){Log.debug("Executing plugin "+this.currentJob.plugin);Plugin.execute(this.c,this.currentJob.plugin,this.currentJob.args);Log.debug("Plugin "+this.currentJob.plugin+" finished!");return this.processNext();};Renderer.prototype.renderBlock=function(bnum,start,end){var i,pixel,_i;Log.debug("Block #"+bnum+" - Filter: "+this.currentJob.name+", Start: "+start+", End: "+end);Event.trigger(this.c,"blockStarted",{blockNum:bnum,totalBlocks:Renderer.Blocks,startPixel:start,endPixel:end});pixel=new Pixel();pixel.setContext(this.c);for(i=_i=start;_i<end;i=_i+=4){pixel.loc=i;pixel.r=this.c.pixelData[i];pixel.g=this.c.pixelData[i+1];pixel.b=this.c.pixelData[i+2];pixel.a=this.c.pixelData[i+3];this.currentJob.processFn(pixel);this.c.pixelData[i]=Util.clampRGB(pixel.r);this.c.pixelData[i+1]=Util.clampRGB(pixel.g);this.c.pixelData[i+2]=Util.clampRGB(pixel.b);this.c.pixelData[i+3]=Util.clampRGB(pixel.a);}
|
| 163 |
-
if(Caman.NodeJS){return Fiber["yield"](bnum);}else{return this.blockFinished(bnum);}};Renderer.prototype.renderKernel=function(bnum,start,end){var adjust,adjustSize,bias,builder,builderIndex,divisor,i,j,k,kernel,n,name,p,pixel,res,_i,_j,_k;name=this.currentJob.name;bias=this.currentJob.bias;divisor=this.currentJob.divisor;n=this.c.pixelData.length;adjust=this.currentJob.adjust;adjustSize=Math.sqrt(adjust.length);kernel=[];Log.debug("Rendering kernel - Filter: "+this.currentJob.name);start=Math.max(start,this.c.dimensions.width*4*((adjustSize-1)/2));end=Math.min(end,n-(this.c.dimensions.width*4*((adjustSize-1)/2)));builder=(adjustSize-1)/2;pixel=new Pixel();pixel.setContext(this.c);for(i=_i=start;_i<end;i=_i+=4){pixel.loc=i;builderIndex=0;for(j=_j=-builder;-builder<=builder?_j<=builder:_j>=builder;j=-builder<=builder?++_j:--_j){for(k=_k=builder;builder<=-builder?_k<=-builder:_k>=-builder;k=builder<=-builder?++_k:--_k){p=pixel.getPixelRelative(j,k);kernel[builderIndex*3]=p.r;kernel[builderIndex*3+1]=p.g;kernel[builderIndex*3+2]=p.b;builderIndex++;}}
|
| 164 |
-
res=this.processKernel(adjust,kernel,divisor,bias);this.modPixelData[i]=Util.clampRGB(res.r);this.modPixelData[i+1]=Util.clampRGB(res.g);this.modPixelData[i+2]=Util.clampRGB(res.b);this.modPixelData[i+3]=this.c.pixelData[i+3];}
|
| 165 |
-
if(Caman.NodeJS){return Fiber["yield"](bnum);}else{return this.blockFinished(bnum);}};Renderer.prototype.blockFinished=function(bnum){var i,_i,_ref;if(bnum>=0){Log.debug("Block #"+bnum+" finished! Filter: "+this.currentJob.name);}
|
| 166 |
-
this.blocksDone++;Event.trigger(this.c,"blockFinished",{blockNum:bnum,blocksFinished:this.blocksDone,totalBlocks:Renderer.Blocks});if(this.blocksDone===Renderer.Blocks){if(this.currentJob.type===Filter.Type.Kernel){for(i=_i=0,_ref=this.c.pixelData.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){this.c.pixelData[i]=this.modPixelData[i];}}
|
| 167 |
-
if(bnum>=0){Log.debug("Filter "+this.currentJob.name+" finished!");}
|
| 168 |
-
Event.trigger(this.c,"processComplete",this.currentJob);return this.processNext();}};Renderer.prototype.processKernel=function(adjust,kernel,divisor,bias){var i,val,_i,_ref;val={r:0,g:0,b:0};for(i=_i=0,_ref=adjust.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){val.r+=adjust[i]*kernel[i*3];val.g+=adjust[i]*kernel[i*3+1];val.b+=adjust[i]*kernel[i*3+2];}
|
| 169 |
-
val.r=(val.r/divisor)+bias;val.g=(val.g/divisor)+bias;val.b=(val.b/divisor)+bias;return val;};Renderer.prototype.loadOverlay=function(layer,src){var img,proxyUrl,_this=this;img=new Image();img.onload=function(){layer.context.drawImage(img,0,0,_this.c.dimensions.width,_this.c.dimensions.height);layer.imageData=layer.context.getImageData(0,0,_this.c.dimensions.width,_this.c.dimensions.height);layer.pixelData=layer.imageData.data;_this.c.pixelData=layer.pixelData;return _this.processNext();};proxyUrl=IO.remoteCheck(src);return img.src=proxyUrl!=null?proxyUrl:src;};return Renderer;})();Renderer=Caman.Renderer;Caman.Store=(function(){function Store(){}
|
| 170 |
-
Store.items={};Store.has=function(search){return this.items[search]!=null;};Store.get=function(search){return this.items[search];};Store.put=function(name,obj){return this.items[name]=obj;};Store.execute=function(search,callback){var _this=this;setTimeout(function(){return callback.call(_this.get(search),_this.get(search));},0);return this.get(search);};Store.flush=function(name){if(name==null){name=false;}
|
| 171 |
-
if(name){return delete this.items[name];}else{return this.items={};}};return Store;})();Store=Caman.Store;Blender.register("normal",function(rgbaLayer,rgbaParent){return{r:rgbaLayer.r,g:rgbaLayer.g,b:rgbaLayer.b};});Blender.register("multiply",function(rgbaLayer,rgbaParent){return{r:(rgbaLayer.r*rgbaParent.r)/255,g:(rgbaLayer.g*rgbaParent.g)/255,b:(rgbaLayer.b*rgbaParent.b)/255};});Blender.register("screen",function(rgbaLayer,rgbaParent){return{r:255-(((255-rgbaLayer.r)*(255-rgbaParent.r))/255),g:255-(((255-rgbaLayer.g)*(255-rgbaParent.g))/255),b:255-(((255-rgbaLayer.b)*(255-rgbaParent.b))/255)};});Blender.register("overlay",function(rgbaLayer,rgbaParent){var result;result={};result.r=rgbaParent.r>128?255-2*(255-rgbaLayer.r)*(255-rgbaParent.r)/255:(rgbaParent.r*rgbaLayer.r*2)/255;result.g=rgbaParent.g>128?255-2*(255-rgbaLayer.g)*(255-rgbaParent.g)/255:(rgbaParent.g*rgbaLayer.g*2)/255;result.b=rgbaParent.b>128?255-2*(255-rgbaLayer.b)*(255-rgbaParent.b)/255:(rgbaParent.b*rgbaLayer.b*2)/255;return result;});Blender.register("difference",function(rgbaLayer,rgbaParent){return{r:rgbaLayer.r-rgbaParent.r,g:rgbaLayer.g-rgbaParent.g,b:rgbaLayer.b-rgbaParent.b};});Blender.register("addition",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r+rgbaLayer.r,g:rgbaParent.g+rgbaLayer.g,b:rgbaParent.b+rgbaLayer.b};});Blender.register("exclusion",function(rgbaLayer,rgbaParent){return{r:128-2*(rgbaParent.r-128)*(rgbaLayer.r-128)/255,g:128-2*(rgbaParent.g-128)*(rgbaLayer.g-128)/255,b:128-2*(rgbaParent.b-128)*(rgbaLayer.b-128)/255};});Blender.register("softLight",function(rgbaLayer,rgbaParent){var result;result={};result.r=rgbaParent.r>128?255-((255-rgbaParent.r)*(255-(rgbaLayer.r-128)))/255:(rgbaParent.r*(rgbaLayer.r+128))/255;result.g=rgbaParent.g>128?255-((255-rgbaParent.g)*(255-(rgbaLayer.g-128)))/255:(rgbaParent.g*(rgbaLayer.g+128))/255;result.b=rgbaParent.b>128?255-((255-rgbaParent.b)*(255-(rgbaLayer.b-128)))/255:(rgbaParent.b*(rgbaLayer.b+128))/255;return result;});Blender.register("lighten",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r>rgbaLayer.r?rgbaParent.r:rgbaLayer.r,g:rgbaParent.g>rgbaLayer.g?rgbaParent.g:rgbaLayer.g,b:rgbaParent.b>rgbaLayer.b?rgbaParent.b:rgbaLayer.b};});Blender.register("darken",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r>rgbaLayer.r?rgbaLayer.r:rgbaParent.r,g:rgbaParent.g>rgbaLayer.g?rgbaLayer.g:rgbaParent.g,b:rgbaParent.b>rgbaLayer.b?rgbaLayer.b:rgbaParent.b};});Filter.register("fillColor",function(){var color;if(arguments.length===1){color=Convert.hexToRGB(arguments[0]);}else{color={r:arguments[0],g:arguments[1],b:arguments[2]};}
|
| 172 |
-
return this.process("fillColor",function(rgba){rgba.r=color.r;rgba.g=color.g;rgba.b=color.b;rgba.a=255;return rgba;});});Filter.register("brightness",function(adjust){adjust=Math.floor(255*(adjust/100));return this.process("brightness",function(rgba){rgba.r+=adjust;rgba.g+=adjust;rgba.b+=adjust;return rgba;});});Filter.register("saturation",function(adjust){adjust*=-0.01;return this.process("saturation",function(rgba){var max;max=Math.max(rgba.r,rgba.g,rgba.b);if(rgba.r!==max){rgba.r+=(max-rgba.r)*adjust;}
|
| 173 |
-
if(rgba.g!==max){rgba.g+=(max-rgba.g)*adjust;}
|
| 174 |
-
if(rgba.b!==max){rgba.b+=(max-rgba.b)*adjust;}
|
| 175 |
-
return rgba;});});Filter.register("vibrance",function(adjust){adjust*=-1;return this.process("vibrance",function(rgba){var amt,avg,max;max=Math.max(rgba.r,rgba.g,rgba.b);avg=(rgba.r+rgba.g+rgba.b)/3;amt=((Math.abs(max-avg)*2/255)*adjust)/100;if(rgba.r!==max){rgba.r+=(max-rgba.r)*amt;}
|
| 176 |
-
if(rgba.g!==max){rgba.g+=(max-rgba.g)*amt;}
|
| 177 |
-
if(rgba.b!==max){rgba.b+=(max-rgba.b)*amt;}
|
| 178 |
-
return rgba;});});Filter.register("greyscale",function(adjust){return this.process("greyscale",function(rgba){var avg;avg=Calculate.luminance(rgba);rgba.r=avg;rgba.g=avg;rgba.b=avg;return rgba;});});Filter.register("contrast",function(adjust){adjust=Math.pow((adjust+100)/100,2);return this.process("contrast",function(rgba){rgba.r/=255;rgba.r-=0.5;rgba.r*=adjust;rgba.r+=0.5;rgba.r*=255;rgba.g/=255;rgba.g-=0.5;rgba.g*=adjust;rgba.g+=0.5;rgba.g*=255;rgba.b/=255;rgba.b-=0.5;rgba.b*=adjust;rgba.b+=0.5;rgba.b*=255;return rgba;});});Filter.register("hue",function(adjust){return this.process("hue",function(rgba){var b,g,h,hsv,r,_ref;hsv=Convert.rgbToHSV(rgba.r,rgba.g,rgba.b);h=hsv.h*100;h+=Math.abs(adjust);h=h%100;h/=100;hsv.h=h;_ref=Convert.hsvToRGB(hsv.h,hsv.s,hsv.v),r=_ref.r,g=_ref.g,b=_ref.b;rgba.r=r;rgba.g=g;rgba.b=b;return rgba;});});Filter.register("colorize",function(){var level,rgb;if(arguments.length===2){rgb=Convert.hexToRGB(arguments[0]);level=arguments[1];}else if(arguments.length===4){rgb={r:arguments[0],g:arguments[1],b:arguments[2]};level=arguments[3];}
|
| 179 |
-
return this.process("colorize",function(rgba){rgba.r-=(rgba.r-rgb.r)*(level/100);rgba.g-=(rgba.g-rgb.g)*(level/100);rgba.b-=(rgba.b-rgb.b)*(level/100);return rgba;});});Filter.register("invert",function(){return this.process("invert",function(rgba){rgba.r=255-rgba.r;rgba.g=255-rgba.g;rgba.b=255-rgba.b;return rgba;});});Filter.register("sepia",function(adjust){if(adjust==null){adjust=100;}
|
| 180 |
-
adjust/=100;return this.process("sepia",function(rgba){rgba.r=Math.min(255,(rgba.r*(1-(0.607*adjust)))+(rgba.g*(0.769*adjust))+(rgba.b*(0.189*adjust)));rgba.g=Math.min(255,(rgba.r*(0.349*adjust))+(rgba.g*(1-(0.314*adjust)))+(rgba.b*(0.168*adjust)));rgba.b=Math.min(255,(rgba.r*(0.272*adjust))+(rgba.g*(0.534*adjust))+(rgba.b*(1-(0.869*adjust))));return rgba;});});Filter.register("gamma",function(adjust){return this.process("gamma",function(rgba){rgba.r=Math.pow(rgba.r/255,adjust)*255;rgba.g=Math.pow(rgba.g/255,adjust)*255;rgba.b=Math.pow(rgba.b/255,adjust)*255;return rgba;});});Filter.register("noise",function(adjust){adjust=Math.abs(adjust)*2.55;return this.process("noise",function(rgba){var rand;rand=Calculate.randomRange(adjust*-1,adjust);rgba.r+=rand;rgba.g+=rand;rgba.b+=rand;return rgba;});});Filter.register("clip",function(adjust){adjust=Math.abs(adjust)*2.55;return this.process("clip",function(rgba){if(rgba.r>255-adjust){rgba.r=255;}else if(rgba.r<adjust){rgba.r=0;}
|
| 181 |
-
if(rgba.g>255-adjust){rgba.g=255;}else if(rgba.g<adjust){rgba.g=0;}
|
| 182 |
-
if(rgba.b>255-adjust){rgba.b=255;}else if(rgba.b<adjust){rgba.b=0;}
|
| 183 |
-
return rgba;});});Filter.register("channels",function(options){var chan,value;if(typeof options!=="object"){return this;}
|
| 184 |
-
for(chan in options){if(!__hasProp.call(options,chan))continue;value=options[chan];if(value===0){delete options[chan];continue;}
|
| 185 |
-
options[chan]/=100;}
|
| 186 |
-
if(options.length===0){return this;}
|
| 187 |
-
return this.process("channels",function(rgba){if(options.red!=null){if(options.red>0){rgba.r+=(255-rgba.r)*options.red;}else{rgba.r-=rgba.r*Math.abs(options.red);}}
|
| 188 |
-
if(options.green!=null){if(options.green>0){rgba.g+=(255-rgba.g)*options.green;}else{rgba.g-=rgba.g*Math.abs(options.green);}}
|
| 189 |
-
if(options.blue!=null){if(options.blue>0){rgba.b+=(255-rgba.b)*options.blue;}else{rgba.b-=rgba.b*Math.abs(options.blue);}}
|
| 190 |
-
return rgba;});});Filter.register("curves",function(){var algo,bezier,chans,cps,end,i,last,start,_i,_j,_ref,_ref1;chans=arguments[0],cps=2<=arguments.length?__slice.call(arguments,1):[];last=cps[cps.length-1];if(typeof last==="function"){algo=last;cps.pop();}else if(typeof last==="string"){algo=Calculate[last];cps.pop();}else{algo=Calculate.bezier;}
|
| 191 |
-
if(typeof chans==="string"){chans=chans.split("");}
|
| 192 |
-
if(chans[0]==="v"){chans=['r','g','b'];}
|
| 193 |
-
if(cps.length<2){throw"Invalid number of arguments to curves filter";}
|
| 194 |
-
bezier=algo(cps,0,255);start=cps[0];if(start[0]>0){for(i=_i=0,_ref=start[0];0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){bezier[i]=start[1];}}
|
| 195 |
-
end=cps[cps.length-1];if(end[0]<255){for(i=_j=_ref1=end[0];_ref1<=255?_j<=255:_j>=255;i=_ref1<=255?++_j:--_j){bezier[i]=end[1];}}
|
| 196 |
-
return this.process("curves",function(rgba){var _k,_ref2;for(i=_k=0,_ref2=chans.length;0<=_ref2?_k<_ref2:_k>_ref2;i=0<=_ref2?++_k:--_k){rgba[chans[i]]=bezier[rgba[chans[i]]];}
|
| 197 |
-
return rgba;});});Filter.register("exposure",function(adjust){var ctrl1,ctrl2,p;p=Math.abs(adjust)/100;ctrl1=[0,255*p];ctrl2=[255-(255*p),255];if(adjust<0){ctrl1=ctrl1.reverse();ctrl2=ctrl2.reverse();}
|
| 198 |
-
return this.curves('rgb',[0,0],ctrl1,ctrl2,[255,255]);});Caman.Plugin.register("crop",function(width,height,x,y){var canvas,ctx;if(x==null){x=0;}
|
| 199 |
-
if(y==null){y=0;}
|
| 200 |
-
if(typeof exports!=="undefined"&&exports!==null){canvas=new Canvas(width,height);}else{canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=width;canvas.height=height;}
|
| 201 |
-
ctx=canvas.getContext('2d');ctx.drawImage(this.canvas,x,y,width,height,0,0,width,height);this.cropCoordinates={x:x,y:y};this.cropped=true;return this.replaceCanvas(canvas);});Caman.Plugin.register("resize",function(newDims){var canvas,ctx;if(newDims==null){newDims=null;}
|
| 202 |
-
if(newDims===null||((newDims.width==null)&&(newDims.height==null))){Log.error("Invalid or missing dimensions given for resize");return;}
|
| 203 |
-
if(newDims.width==null){newDims.width=this.canvas.width*newDims.height/this.canvas.height;}else if(newDims.height==null){newDims.height=this.canvas.height*newDims.width/this.canvas.width;}
|
| 204 |
-
if(typeof exports!=="undefined"&&exports!==null){canvas=new Canvas(newDims.width,newDims.height);}else{canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=newDims.width;canvas.height=newDims.height;}
|
| 205 |
-
ctx=canvas.getContext('2d');ctx.drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,newDims.width,newDims.height);this.resized=true;return this.replaceCanvas(canvas);});Caman.Filter.register("crop",function(){return this.processPlugin("crop",Array.prototype.slice.call(arguments,0));});Caman.Filter.register("resize",function(){return this.processPlugin("resize",Array.prototype.slice.call(arguments,0));});Caman.Filter.register("boxBlur",function(){return this.processKernel("Box Blur",[1,1,1,1,1,1,1,1,1]);});Caman.Filter.register("heavyRadialBlur",function(){return this.processKernel("Heavy Radial Blur",[0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0]);});Caman.Filter.register("gaussianBlur",function(){return this.processKernel("Gaussian Blur",[1,4,6,4,1,4,16,24,16,4,6,24,36,24,6,4,16,24,16,4,1,4,6,4,1]);});Caman.Filter.register("motionBlur",function(degrees){var kernel;if(degrees===0||degrees===180){kernel=[0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0];}else if((degrees>0&°rees<90)||(degrees>180&°rees<270)){kernel=[0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0];}else if(degrees===90||degrees===270){kernel=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0];}else{kernel=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1];}
|
| 206 |
-
return this.processKernel("Motion Blur",kernel);});Caman.Filter.register("sharpen",function(amt){if(amt==null){amt=100;}
|
| 207 |
-
amt/=100;return this.processKernel("Sharpen",[0,-amt,0,-amt,4*amt+1,-amt,0,-amt,0]);});vignetteFilters={brightness:function(rgba,amt,opts){rgba.r=rgba.r-(rgba.r*amt*opts.strength);rgba.g=rgba.g-(rgba.g*amt*opts.strength);rgba.b=rgba.b-(rgba.b*amt*opts.strength);return rgba;},gamma:function(rgba,amt,opts){rgba.r=Math.pow(rgba.r/255,Math.max(10*amt*opts.strength,1))*255;rgba.g=Math.pow(rgba.g/255,Math.max(10*amt*opts.strength,1))*255;rgba.b=Math.pow(rgba.b/255,Math.max(10*amt*opts.strength,1))*255;return rgba;},colorize:function(rgba,amt,opts){rgba.r-=(rgba.r-opts.color.r)*amt;rgba.g-=(rgba.g-opts.color.g)*amt;rgba.b-=(rgba.b-opts.color.b)*amt;return rgba;}};Filter.register("vignette",function(size,strength){var bezier,center,end,start;if(strength==null){strength=60;}
|
| 208 |
-
if(typeof size==="string"&&size.substr(-1)==="%"){if(this.dimensions.height>this.dimensions.width){size=this.dimensions.width*(parseInt(size.substr(0,size.length-1),10)/100);}else{size=this.dimensions.height*(parseInt(size.substr(0,size.length-1),10)/100);}}
|
| 209 |
-
strength/=100;center=[this.dimensions.width/2,this.dimensions.height/2];start=Math.sqrt(Math.pow(center[0],2)+Math.pow(center[1],2));end=start-size;bezier=Calculate.bezier([0,1],[30,30],[70,60],[100,80]);return this.process("vignette",function(rgba){var dist,div,loc;loc=rgba.locationXY();dist=Calculate.distance(loc.x,loc.y,center[0],center[1]);if(dist>end){div=Math.max(1,(bezier[Math.round(((dist-end)/size)*100)]/10)*strength);rgba.r=Math.pow(rgba.r/255,div)*255;rgba.g=Math.pow(rgba.g/255,div)*255;rgba.b=Math.pow(rgba.b/255,div)*255;}
|
| 210 |
-
return rgba;});});Filter.register("rectangularVignette",function(opts){var defaults,dim,percent,size,_i,_len,_ref;defaults={strength:50,cornerRadius:0,method:'brightness',color:{r:0,g:0,b:0}};opts=Util.extend(defaults,opts);if(!opts.size){return this;}else if(typeof opts.size==="string"){percent=parseInt(opts.size,10)/100;opts.size={width:this.dimensions.width*percent,height:this.dimensions.height*percent};}else if(typeof opts.size==="object"){_ref=["width","height"];for(_i=0,_len=_ref.length;_i<_len;_i++){dim=_ref[_i];if(typeof opts.size[dim]==="string"){opts.size[dim]=this.dimensions[dim]*(parseInt(opts.size[dim],10)/100);}}}else if(opts.size==="number"){size=opts.size;opts.size={width:size,height:size};}
|
| 211 |
-
if(typeof opts.cornerRadius==="string"){opts.cornerRadius=(opts.size.width/2)*(parseInt(opts.cornerRadius,10)/100);}
|
| 212 |
-
opts.strength/=100;opts.size.width=Math.floor(opts.size.width);opts.size.height=Math.floor(opts.size.height);opts.image={width:this.dimensions.width,height:this.dimensions.height};if(opts.method==="colorize"&&typeof opts.color==="string"){opts.color=Convert.hexToRGB(opts.color);}
|
| 213 |
-
opts.coords={left:(this.dimensions.width-opts.size.width)/2,right:this.dimensions.width-opts.coords.left,bottom:(this.dimensions.height-opts.size.height)/2,top:this.dimensions.height-opts.coords.bottom};opts.corners=[{x:opts.coords.left+opts.cornerRadius,y:opts.coords.top-opts.cornerRadius},{x:opts.coords.right-opts.cornerRadius,y:opts.coords.top-opts.cornerRadius},{x:opts.coords.right-opts.cornerRadius,y:opts.coords.bottom+opts.cornerRadius},{x:opts.coords.left+opts.cornerRadius,y:opts.coords.bottom+opts.cornerRadius}];opts.maxDist=Calculate.distance(0,0,opts.corners[3].x,opts.corners[3].y)-opts.cornerRadius;return this.process("rectangularVignette",function(rgba){var amt,loc,radialDist;loc=rgba.locationXY();if((loc.x>opts.corners[0].x&&loc.x<opts.corners[1].x)&&(loc.y>opts.coords.bottom&&loc.y<opts.coords.top)){return rgba;}
|
| 214 |
-
if((loc.x>opts.coords.left&&loc.x<opts.coords.right)&&(loc.y>opts.corners[3].y&&loc.y<opts.corners[2].y)){return rgba;}
|
| 215 |
-
if(loc.x>opts.corners[0].x&&loc.x<opts.corners[1].x&&loc.y>opts.coords.top){amt=(loc.y-opts.coords.top)/opts.maxDist;}else if(loc.y>opts.corners[2].y&&loc.y<opts.corners[1].y&&loc.x>opts.coords.right){amt=(loc.x-opts.coords.right)/opts.maxDist;}else if(loc.x>opts.corners[0].x&&loc.x<opts.corners[1].x&&loc.y<opts.coords.bottom){amt=(opts.coords.bottom-loc.y)/opts.maxDist;}else if(loc.y>opts.corners[2].y&&loc.y<opts.corners[1].y&&loc.x<opts.coords.left){amt=(opts.coords.left-loc.x)/opts.maxDist;}else if(loc.x<=opts.corners[0].x&&loc.y>=opts.corners[0].y){radialDist=Caman.distance(loc.x,loc.y,opts.corners[0].x,opts.corners[0].y);amt=(radialDist-opts.cornerRadius)/opts.maxDist;}else if(loc.x>=opts.corners[1].x&&loc.y>=opts.corners[1].y){radialDist=Caman.distance(loc.x,loc.y,opts.corners[1].x,opts.corners[1].y);amt=(radialDist-opts.cornerRadius)/opts.maxDist;}else if(loc.x>=opts.corners[2].x&&loc.y<=opts.corners[2].y){radialDist=Caman.distance(loc.x,loc.y,opts.corners[2].x,opts.corners[2].y);amt=(radialDist-opts.cornerRadius)/opts.maxDist;}else if(loc.x<=opts.corners[3].x&&loc.y<=opts.corners[3].y){radialDist=Caman.distance(loc.x,loc.y,opts.corners[3].x,opts.corners[3].y);amt=(radialDist-opts.cornerRadius)/opts.maxDist;}
|
| 216 |
-
if(amt<0){return rgba;}
|
| 217 |
-
return vignetteFilters[opts.method](rgba,amt,opts);});});(function(){var BlurStack,getLinearGradientMap,getRadialGradientMap,mul_table,shg_table;mul_table=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];shg_table=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];getLinearGradientMap=function(width,height,centerX,centerY,angle,length,mirrored){var cnv,context,gradient,x1,x2,y1,y2;cnv=typeof exports!=="undefined"&&exports!==null?new Canvas():document.createElement('canvas');cnv.width=width;cnv.height=height;x1=centerX+Math.cos(angle)*length*0.5;y1=centerY+Math.sin(angle)*length*0.5;x2=centerX-Math.cos(angle)*length*0.5;y2=centerY-Math.sin(angle)*length*0.5;context=cnv.getContext("2d");gradient=context.createLinearGradient(x1,y1,x2,y2);if(!mirrored){gradient.addColorStop(0,"white");gradient.addColorStop(1,"black");}else{gradient.addColorStop(0,"white");gradient.addColorStop(0.5,"black");gradient.addColorStop(1,"white");}
|
| 218 |
-
context.fillStyle=gradient;context.fillRect(0,0,width,height);return context.getImageData(0,0,width,height);};getRadialGradientMap=function(width,height,centerX,centerY,radius1,radius2){var cnv,context,gradient;cnv=typeof exports!=="undefined"&&exports!==null?new Canvas():document.createElement('canvas');cnv.width=width;cnv.height=height;context=cnv.getContext("2d");gradient=context.createRadialGradient(centerX,centerY,radius1,centerX,centerY,radius2);gradient.addColorStop(1,"white");gradient.addColorStop(0,"black");context.fillStyle=gradient;context.fillRect(0,0,width,height);return context.getImageData(0,0,width,height);};BlurStack=function(){this.r=0;this.g=0;this.b=0;this.a=0;return this.next=null;};Caman.Plugin.register("compoundBlur",function(radiusData,radius,increaseFactor,blurLevels){var b_in_sum,b_out_sum,b_sum,blend,currentIndex,div,g_in_sum,g_out_sum,g_sum,height,heightMinus1,i,iblend,idx,imagePixels,index,iradius,lookupValue,mul_sum,p,pb,pg,pixels,pr,r_in_sum,r_out_sum,r_sum,radiusPixels,radiusPlus1,rbs,shg_sum,stack,stackEnd,stackIn,stackOut,stackStart,steps,sumFactor,w4,wh,wh4,width,widthMinus1,x,y,yi,yp,yw,_i,_j,_k,_l,_m,_n,_o,_p,_q,_r;width=this.dimensions.width;height=this.dimensions.height;imagePixels=this.pixelData;radiusPixels=radiusData.data;wh=width*height;wh4=wh<<2;pixels=[];for(i=_i=0;0<=wh4?_i<wh4:_i>wh4;i=0<=wh4?++_i:--_i){pixels[i]=imagePixels[i];}
|
| 219 |
-
currentIndex=0;steps=blurLevels;blurLevels-=1;while(steps-->=0){iradius=(radius+0.5)|0;if(iradius===0){continue;}
|
| 220 |
-
if(iradius>256){iradius=256;}
|
| 221 |
-
div=iradius+iradius+1;w4=width<<2;widthMinus1=width-1;heightMinus1=height-1;radiusPlus1=iradius+1;sumFactor=radiusPlus1*(radiusPlus1+1)/2;stackStart=new BlurStack();stackEnd=void 0;stack=stackStart;for(i=_j=1;1<=div?_j<div:_j>div;i=1<=div?++_j:--_j){stack=stack.next=new BlurStack();if(i===radiusPlus1){stackEnd=stack;}}
|
| 222 |
-
stack.next=stackStart;stackIn=null;stackOut=null;yw=yi=0;mul_sum=mul_table[iradius];shg_sum=shg_table[iradius];for(y=_k=0;0<=height?_k<height:_k>height;y=0<=height?++_k:--_k){r_in_sum=g_in_sum=b_in_sum=r_sum=g_sum=b_sum=0;r_out_sum=radiusPlus1*(pr=pixels[yi]);g_out_sum=radiusPlus1*(pg=pixels[yi+1]);b_out_sum=radiusPlus1*(pb=pixels[yi+2]);r_sum+=sumFactor*pr;g_sum+=sumFactor*pg;b_sum+=sumFactor*pb;stack=stackStart;for(i=_l=0;0<=radiusPlus1?_l<radiusPlus1:_l>radiusPlus1;i=0<=radiusPlus1?++_l:--_l){stack.r=pr;stack.g=pg;stack.b=pb;stack=stack.next;}
|
| 223 |
-
for(i=_m=1;1<=radiusPlus1?_m<radiusPlus1:_m>radiusPlus1;i=1<=radiusPlus1?++_m:--_m){p=yi+((widthMinus1<i?widthMinus1:i)<<2);r_sum+=(stack.r=(pr=pixels[p]))*(rbs=radiusPlus1-i);g_sum+=(stack.g=(pg=pixels[p+1]))*rbs;b_sum+=(stack.b=(pb=pixels[p+2]))*rbs;r_in_sum+=pr;g_in_sum+=pg;b_in_sum+=pb;stack=stack.next;}
|
| 224 |
-
stackIn=stackStart;stackOut=stackEnd;for(x=_n=0;0<=width?_n<width:_n>width;x=0<=width?++_n:--_n){pixels[yi]=(r_sum*mul_sum)>>shg_sum;pixels[yi+1]=(g_sum*mul_sum)>>shg_sum;pixels[yi+2]=(b_sum*mul_sum)>>shg_sum;r_sum-=r_out_sum;g_sum-=g_out_sum;b_sum-=b_out_sum;r_out_sum-=stackIn.r;g_out_sum-=stackIn.g;b_out_sum-=stackIn.b;p=(yw+((p=x+radiusPlus1)<widthMinus1?p:widthMinus1))<<2;r_in_sum+=(stackIn.r=pixels[p]);g_in_sum+=(stackIn.g=pixels[p+1]);b_in_sum+=(stackIn.b=pixels[p+2]);r_sum+=r_in_sum;g_sum+=g_in_sum;b_sum+=b_in_sum;stackIn=stackIn.next;r_out_sum+=(pr=stackOut.r);g_out_sum+=(pg=stackOut.g);b_out_sum+=(pb=stackOut.b);r_in_sum-=pr;g_in_sum-=pg;b_in_sum-=pb;stackOut=stackOut.next;yi+=4;}
|
| 225 |
-
yw+=width;}
|
| 226 |
-
for(x=_o=0;0<=width?_o<width:_o>width;x=0<=width?++_o:--_o){g_in_sum=b_in_sum=r_in_sum=g_sum=b_sum=r_sum=0;yi=x<<2;r_out_sum=radiusPlus1*(pr=pixels[yi]);g_out_sum=radiusPlus1*(pg=pixels[yi+1]);b_out_sum=radiusPlus1*(pb=pixels[yi+2]);r_sum+=sumFactor*pr;g_sum+=sumFactor*pg;b_sum+=sumFactor*pb;stack=stackStart;for(i=_p=0;0<=radiusPlus1?_p<radiusPlus1:_p>radiusPlus1;i=0<=radiusPlus1?++_p:--_p){stack.r=pr;stack.g=pg;stack.b=pb;stack=stack.next;}
|
| 227 |
-
yp=width;for(i=_q=1;1<=radiusPlus1?_q<radiusPlus1:_q>radiusPlus1;i=1<=radiusPlus1?++_q:--_q){yi=(yp+x)<<2;r_sum+=(stack.r=(pr=pixels[yi]))*(rbs=radiusPlus1-i);g_sum+=(stack.g=(pg=pixels[yi+1]))*rbs;b_sum+=(stack.b=(pb=pixels[yi+2]))*rbs;r_in_sum+=pr;g_in_sum+=pg;b_in_sum+=pb;stack=stack.next;if(i<heightMinus1){yp+=width;}}
|
| 228 |
-
yi=x;stackIn=stackStart;stackOut=stackEnd;for(y=_r=0;0<=height?_r<height:_r>height;y=0<=height?++_r:--_r){p=yi<<2;pixels[p]=(r_sum*mul_sum)>>shg_sum;pixels[p+1]=(g_sum*mul_sum)>>shg_sum;pixels[p+2]=(b_sum*mul_sum)>>shg_sum;r_sum-=r_out_sum;g_sum-=g_out_sum;b_sum-=b_out_sum;r_out_sum-=stackIn.r;g_out_sum-=stackIn.g;b_out_sum-=stackIn.b;p=(x+(((p=y+radiusPlus1)<heightMinus1?p:heightMinus1)*width))<<2;r_sum+=(r_in_sum+=(stackIn.r=pixels[p]));g_sum+=(g_in_sum+=(stackIn.g=pixels[p+1]));b_sum+=(b_in_sum+=(stackIn.b=pixels[p+2]));stackIn=stackIn.next;r_out_sum+=(pr=stackOut.r);g_out_sum+=(pg=stackOut.g);b_out_sum+=(pb=stackOut.b);r_in_sum-=pr;g_in_sum-=pg;b_in_sum-=pb;stackOut=stackOut.next;yi+=width;}}
|
| 229 |
-
radius*=increaseFactor;i=wh;while(--i>-1){idx=i<<2;lookupValue=(radiusPixels[idx+2]&0xff)/255.0*blurLevels;index=lookupValue|0;if(index===currentIndex){blend=256.0*(lookupValue-(lookupValue|0));iblend=256-blend;imagePixels[idx]=(imagePixels[idx]*iblend+pixels[idx]*blend)>>8;imagePixels[idx+1]=(imagePixels[idx+1]*iblend+pixels[idx+1]*blend)>>8;imagePixels[idx+2]=(imagePixels[idx+2]*iblend+pixels[idx+2]*blend)>>8;}else if(index===currentIndex+1){imagePixels[idx]=pixels[idx];imagePixels[idx+1]=pixels[idx+1];imagePixels[idx+2]=pixels[idx+2];}}
|
| 230 |
-
currentIndex++;}
|
| 231 |
-
return this;});Caman.Filter.register("tiltShift",function(opts){var defaults,gradient;defaults={center:{x:this.dimensions.width/2,y:this.dimensions.height/2},angle:45,focusWidth:200,startRadius:3,radiusFactor:1.5,steps:3};opts=Util.extend(defaults,opts);opts.angle*=Math.PI/180;gradient=getLinearGradientMap(this.dimensions.width,this.dimensions.height,opts.center.x,opts.center.y,opts.angle,opts.focusWidth,true);return this.processPlugin("compoundBlur",[gradient,opts.startRadius,opts.radiusFactor,opts.steps]);});return Caman.Filter.register("radialBlur",function(opts){var defaults,gradient,radius1,radius2;defaults={size:50,center:{x:this.dimensions.width/2,y:this.dimensions.height/2},startRadius:3,radiusFactor:1.5,steps:3,radius:null};opts=Util.extend(defaults,opts);if(!opts.radius){opts.radius=this.dimensions.width<this.dimensions.height?this.dimensions.height:this.dimensions.width;}
|
| 232 |
-
radius1=(opts.radius/2)-opts.size;radius2=opts.radius/2;gradient=getRadialGradientMap(this.dimensions.width,this.dimensions.height,opts.center.x,opts.center.y,radius1,radius2);return this.processPlugin("compoundBlur",[gradient,opts.startRadius,opts.radiusFactor,opts.steps]);});})();Caman.Filter.register("edgeEnhance",function(){return this.processKernel("Edge Enhance",[0,0,0,-1,1,0,0,0,0]);});Caman.Filter.register("edgeDetect",function(){return this.processKernel("Edge Detect",[-1,-1,-1,-1,8,-1,-1,-1,-1]);});Caman.Filter.register("emboss",function(){return this.processKernel("Emboss",[-2,-1,0,-1,1,1,0,1,2]);});Caman.Filter.register("posterize",function(adjust){var numOfAreas,numOfValues;numOfAreas=256/adjust;numOfValues=255/(adjust-1);return this.process("posterize",function(rgba){rgba.r=Math.floor(Math.floor(rgba.r/numOfAreas)*numOfValues);rgba.g=Math.floor(Math.floor(rgba.g/numOfAreas)*numOfValues);rgba.b=Math.floor(Math.floor(rgba.b/numOfAreas)*numOfValues);return rgba;});});Caman.Filter.register("vintage",function(vignette){if(vignette==null){vignette=true;}
|
| 233 |
-
this.greyscale();this.contrast(5);this.noise(3);this.sepia(100);this.channels({red:8,blue:2,green:4});this.gamma(0.87);if(vignette){return this.vignette("40%",30);}});Caman.Filter.register("lomo",function(vignette){if(vignette==null){vignette=true;}
|
| 234 |
-
this.brightness(15);this.exposure(15);this.curves('rgb',[0,0],[200,0],[155,255],[255,255]);this.saturation(-20);this.gamma(1.8);if(vignette){this.vignette("50%",60);}
|
| 235 |
-
return this.brightness(5);});Caman.Filter.register("clarity",function(grey){if(grey==null){grey=false;}
|
| 236 |
-
this.vibrance(20);this.curves('rgb',[5,0],[130,150],[190,220],[250,255]);this.sharpen(15);this.vignette("45%",20);if(grey){this.greyscale();this.contrast(4);}
|
| 237 |
-
return this;});Caman.Filter.register("sinCity",function(){this.contrast(100);this.brightness(15);this.exposure(10);this.posterize(80);this.clip(30);return this.greyscale();});Caman.Filter.register("sunrise",function(){this.exposure(3.5);this.saturation(-5);this.vibrance(50);this.sepia(60);this.colorize("#e87b22",10);this.channels({red:8,blue:8});this.contrast(5);this.gamma(1.2);return this.vignette("55%",25);});Caman.Filter.register("crossProcess",function(){this.exposure(5);this.colorize("#e87b22",4);this.sepia(20);this.channels({blue:8,red:3});this.curves('b',[0,0],[100,150],[180,180],[255,255]);this.contrast(15);this.vibrance(75);return this.gamma(1.6);});Caman.Filter.register("orangePeel",function(){this.curves('rgb',[0,0],[100,50],[140,200],[255,255]);this.vibrance(-30);this.saturation(-30);this.colorize('#ff9000',30);this.contrast(-5);return this.gamma(1.4);});Caman.Filter.register("love",function(){this.brightness(5);this.exposure(8);this.contrast(4);this.colorize('#c42007',30);this.vibrance(50);return this.gamma(1.3);});Caman.Filter.register("grungy",function(){this.gamma(1.5);this.clip(25);this.saturation(-60);this.contrast(5);this.noise(5);return this.vignette("50%",30);});Caman.Filter.register("jarques",function(){this.saturation(-35);this.curves('b',[20,0],[90,120],[186,144],[255,230]);this.curves('r',[0,0],[144,90],[138,120],[255,255]);this.curves('g',[10,0],[115,105],[148,100],[255,248]);this.curves('rgb',[0,0],[120,100],[128,140],[255,255]);return this.sharpen(20);});Caman.Filter.register("pinhole",function(){this.greyscale();this.sepia(10);this.exposure(10);this.contrast(15);return this.vignette("60%",35);});Caman.Filter.register("oldBoot",function(){this.saturation(-20);this.vibrance(-50);this.gamma(1.1);this.sepia(30);this.channels({red:-10,blue:5});this.curves('rgb',[0,0],[80,50],[128,230],[255,255]);return this.vignette("60%",30);});Caman.Filter.register("glowingSun",function(vignette){if(vignette==null){vignette=true;}
|
| 238 |
-
this.brightness(10);this.newLayer(function(){this.setBlendingMode("multiply");this.opacity(80);this.copyParent();this.filter.gamma(0.8);this.filter.contrast(50);return this.filter.exposure(10);});this.newLayer(function(){this.setBlendingMode("softLight");this.opacity(80);return this.fillColor("#f49600");});this.exposure(20);this.gamma(0.8);if(vignette){return this.vignette("45%",20);}});Caman.Filter.register("hazyDays",function(){this.gamma(1.2);this.newLayer(function(){this.setBlendingMode("overlay");this.opacity(60);this.copyParent();this.filter.channels({red:5});return this.filter.stackBlur(15);});this.newLayer(function(){this.setBlendingMode("addition");this.opacity(40);return this.fillColor("#6899ba");});this.newLayer(function(){this.setBlendingMode("multiply");this.opacity(35);this.copyParent();this.filter.brightness(40);this.filter.vibrance(40);this.filter.exposure(30);this.filter.contrast(15);this.filter.curves('r',[0,40],[128,128],[128,128],[255,215]);this.filter.curves('g',[0,40],[128,128],[128,128],[255,215]);this.filter.curves('b',[0,40],[128,128],[128,128],[255,215]);return this.filter.stackBlur(5);});this.curves('r',[20,0],[128,158],[128,128],[235,255]);this.curves('g',[20,0],[128,128],[128,128],[235,255]);this.curves('b',[20,0],[128,108],[128,128],[235,255]);return this.vignette("45%",20);});Caman.Filter.register("herMajesty",function(){this.brightness(40);this.colorize("#ea1c5d",10);this.curves('b',[0,10],[128,180],[190,190],[255,255]);this.newLayer(function(){this.setBlendingMode('overlay');this.opacity(50);this.copyParent();this.filter.gamma(0.7);return this.newLayer(function(){this.setBlendingMode('normal');this.opacity(60);return this.fillColor('#ea1c5d');});});this.newLayer(function(){this.setBlendingMode('multiply');this.opacity(60);this.copyParent();this.filter.saturation(50);this.filter.hue(90);return this.filter.contrast(10);});this.gamma(1.4);this.vibrance(-30);this.newLayer(function(){this.opacity(10);return this.fillColor('#e5f0ff');});return this;});Caman.Filter.register("nostalgia",function(){this.saturation(20);this.gamma(1.4);this.greyscale();this.contrast(5);this.sepia(100);this.channels({red:8,blue:2,green:4});this.gamma(0.8);this.contrast(5);this.exposure(10);this.newLayer(function(){this.setBlendingMode('overlay');this.copyParent();this.opacity(55);return this.filter.stackBlur(10);});return this.vignette("50%",30);});Caman.Filter.register("hemingway",function(){this.greyscale();this.contrast(10);this.gamma(0.9);this.newLayer(function(){this.setBlendingMode("multiply");this.opacity(40);this.copyParent();this.filter.exposure(15);this.filter.contrast(15);return this.filter.channels({green:10,red:5});});this.sepia(30);this.curves('rgb',[0,10],[120,90],[180,200],[235,255]);this.channels({red:5,green:-2});return this.exposure(15);});Caman.Filter.register("concentrate",function(){this.sharpen(40);this.saturation(-50);this.channels({red:3});this.newLayer(function(){this.setBlendingMode("multiply");this.opacity(80);this.copyParent();this.filter.sharpen(5);this.filter.contrast(50);this.filter.exposure(10);return this.filter.channels({blue:5});});return this.brightness(10);});Caman.Plugin.register("rotate",function(degrees){var angle,canvas,ctx,height,to_radians,width,x,y;angle=degrees%360;if(angle===0){return this.dimensions={width:this.canvas.width,height:this.canvas.height};}
|
| 239 |
-
to_radians=Math.PI/180;if(typeof exports!=="undefined"&&exports!==null){canvas=new Canvas();}else{canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);}
|
| 240 |
-
if(angle===90||angle===-270||angle===270||angle===-90){width=this.canvas.height;height=this.canvas.width;x=width/2;y=height/2;}else if(angle===180){width=this.canvas.width;height=this.canvas.height;x=width/2;y=height/2;}else{width=Math.sqrt(Math.pow(this.originalWidth,2)+Math.pow(this.originalHeight,2));height=width;x=this.canvas.height/2;y=this.canvas.width/2;}
|
| 241 |
-
canvas.width=width;canvas.height=height;ctx=canvas.getContext('2d');ctx.save();ctx.translate(x,y);ctx.rotate(angle*to_radians);ctx.drawImage(this.canvas,-this.canvas.width/2,-this.canvas.height/2,this.canvas.width,this.canvas.height);ctx.restore();return this.replaceCanvas(canvas);});Caman.Filter.register("rotate",function(){return this.processPlugin("rotate",Array.prototype.slice.call(arguments,0));});(function(){var BlurStack,mul_table,shg_table;mul_table=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];shg_table=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];BlurStack=function(){this.r=0;this.g=0;this.b=0;this.a=0;return this.next=null;};Caman.Plugin.register("stackBlur",function(radius){var b_in_sum,b_out_sum,b_sum,div,g_in_sum,g_out_sum,g_sum,height,heightMinus1,i,mul_sum,p,pb,pg,pixels,pr,r_in_sum,r_out_sum,r_sum,radiusPlus1,rbs,shg_sum,stack,stackEnd,stackIn,stackOut,stackStart,sumFactor,w4,width,widthMinus1,x,y,yi,yp,yw,_i,_j,_k,_l,_m,_n,_o,_p,_q;if(isNaN(radius)||radius<1){return;}
|
| 242 |
-
radius|=0;pixels=this.pixelData;width=this.dimensions.width;height=this.dimensions.height;div=radius+radius+1;w4=width<<2;widthMinus1=width-1;heightMinus1=height-1;radiusPlus1=radius+1;sumFactor=radiusPlus1*(radiusPlus1+1)/2;stackStart=new BlurStack();stack=stackStart;for(i=_i=1;1<=div?_i<div:_i>div;i=1<=div?++_i:--_i){stack=stack.next=new BlurStack();if(i===radiusPlus1){stackEnd=stack;}}
|
| 243 |
-
stack.next=stackStart;stackIn=null;stackOut=null;yw=yi=0;mul_sum=mul_table[radius];shg_sum=shg_table[radius];for(y=_j=0;0<=height?_j<height:_j>height;y=0<=height?++_j:--_j){r_in_sum=g_in_sum=b_in_sum=r_sum=g_sum=b_sum=0;r_out_sum=radiusPlus1*(pr=pixels[yi]);g_out_sum=radiusPlus1*(pg=pixels[yi+1]);b_out_sum=radiusPlus1*(pb=pixels[yi+2]);r_sum+=sumFactor*pr;g_sum+=sumFactor*pg;b_sum+=sumFactor*pb;stack=stackStart;for(i=_k=0;0<=radiusPlus1?_k<radiusPlus1:_k>radiusPlus1;i=0<=radiusPlus1?++_k:--_k){stack.r=pr;stack.g=pg;stack.b=pb;stack=stack.next;}
|
| 244 |
-
for(i=_l=1;1<=radiusPlus1?_l<radiusPlus1:_l>radiusPlus1;i=1<=radiusPlus1?++_l:--_l){p=yi+((widthMinus1<i?widthMinus1:i)<<2);r_sum+=(stack.r=(pr=pixels[p]))*(rbs=radiusPlus1-i);g_sum+=(stack.g=(pg=pixels[p+1]))*rbs;b_sum+=(stack.b=(pb=pixels[p+2]))*rbs;r_in_sum+=pr;g_in_sum+=pg;b_in_sum+=pb;stack=stack.next;}
|
| 245 |
-
stackIn=stackStart;stackOut=stackEnd;for(x=_m=0;0<=width?_m<width:_m>width;x=0<=width?++_m:--_m){pixels[yi]=(r_sum*mul_sum)>>shg_sum;pixels[yi+1]=(g_sum*mul_sum)>>shg_sum;pixels[yi+2]=(b_sum*mul_sum)>>shg_sum;r_sum-=r_out_sum;g_sum-=g_out_sum;b_sum-=b_out_sum;r_out_sum-=stackIn.r;g_out_sum-=stackIn.g;b_out_sum-=stackIn.b;p=(yw+((p=x+radius+1)<widthMinus1?p:widthMinus1))<<2;r_in_sum+=(stackIn.r=pixels[p]);g_in_sum+=(stackIn.g=pixels[p+1]);b_in_sum+=(stackIn.b=pixels[p+2]);r_sum+=r_in_sum;g_sum+=g_in_sum;b_sum+=b_in_sum;stackIn=stackIn.next;r_out_sum+=(pr=stackOut.r);g_out_sum+=(pg=stackOut.g);b_out_sum+=(pb=stackOut.b);r_in_sum-=pr;g_in_sum-=pg;b_in_sum-=pb;stackOut=stackOut.next;yi+=4;}
|
| 246 |
-
yw+=width;}
|
| 247 |
-
for(x=_n=0;0<=width?_n<width:_n>width;x=0<=width?++_n:--_n){g_in_sum=b_in_sum=r_in_sum=g_sum=b_sum=r_sum=0;yi=x<<2;r_out_sum=radiusPlus1*(pr=pixels[yi]);g_out_sum=radiusPlus1*(pg=pixels[yi+1]);b_out_sum=radiusPlus1*(pb=pixels[yi+2]);r_sum+=sumFactor*pr;g_sum+=sumFactor*pg;b_sum+=sumFactor*pb;stack=stackStart;for(i=_o=0;0<=radiusPlus1?_o<radiusPlus1:_o>radiusPlus1;i=0<=radiusPlus1?++_o:--_o){stack.r=pr;stack.g=pg;stack.b=pb;stack=stack.next;}
|
| 248 |
-
yp=width;for(i=_p=1;1<=radius?_p<=radius:_p>=radius;i=1<=radius?++_p:--_p){yi=(yp+x)<<2;r_sum+=(stack.r=(pr=pixels[yi]))*(rbs=radiusPlus1-i);g_sum+=(stack.g=(pg=pixels[yi+1]))*rbs;b_sum+=(stack.b=(pb=pixels[yi+2]))*rbs;r_in_sum+=pr;g_in_sum+=pg;b_in_sum+=pb;stack=stack.next;if(i<heightMinus1){yp+=width;}}
|
| 249 |
-
yi=x;stackIn=stackStart;stackOut=stackEnd;for(y=_q=0;0<=height?_q<height:_q>height;y=0<=height?++_q:--_q){p=yi<<2;pixels[p]=(r_sum*mul_sum)>>shg_sum;pixels[p+1]=(g_sum*mul_sum)>>shg_sum;pixels[p+2]=(b_sum*mul_sum)>>shg_sum;r_sum-=r_out_sum;g_sum-=g_out_sum;b_sum-=b_out_sum;r_out_sum-=stackIn.r;g_out_sum-=stackIn.g;b_out_sum-=stackIn.b;p=(x+(((p=y+radiusPlus1)<heightMinus1?p:heightMinus1)*width))<<2;r_sum+=(r_in_sum+=(stackIn.r=pixels[p]));g_sum+=(g_in_sum+=(stackIn.g=pixels[p+1]));b_sum+=(b_in_sum+=(stackIn.b=pixels[p+2]));stackIn=stackIn.next;r_out_sum+=(pr=stackOut.r);g_out_sum+=(pg=stackOut.g);b_out_sum+=(pb=stackOut.b);r_in_sum-=pr;g_in_sum-=pg;b_in_sum-=pb;stackOut=stackOut.next;yi+=width;}}
|
| 250 |
-
return this;});return Caman.Filter.register("stackBlur",function(radius){return this.processPlugin("stackBlur",[radius]);});})();Caman.Filter.register("threshold",function(adjust){return this.process("threshold",function(rgba){var luminance;luminance=(0.2126*rgba.r)+(0.7152*rgba.g)+(0.0722*rgba.b);if(luminance<adjust){rgba.r=0;rgba.g=0;rgba.b=0;}else{rgba.r=255;rgba.g=255;rgba.b=255;}
|
| 251 |
-
return rgba;});});}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.full.pack.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(A(){M $,4K,2k,2b,D,54,3S,1X,2Q,6B,R,2N,4V,39,1Y,3L,28,2w,1P,7V,32,1v,fs,6y,7Z,5f,9y,6s=[].fb||A(bS){W(M i=0,l=o.P;i<l;i++){B(i 5h o&&o[i]===bS)u i}u-1},5W=[].5f,74={}.f2,9x=A(fn,cH){u A(){u fn.4r(cH,1l)}},cM=A(6e,6h){W(M 2t 5h 6h){B(74.1w(6h,2t))6e[2t]=6h[2t]}A 9b(){o.eU=6e}9b.N=6h.N;6e.N=1y 9b();6e.eT=6h.N;u 6e};7Z=[\'aN\',\'97\'];3L=(A(){A 3L(){}3L["dc"]=A(2C){M 2t,4q,K;W(2t 5h 2C){4q=2C[2t];B(6s.1w(7Z,2t)<0){o[2t]=4q}}B((K=2C.aN)!=L){K.4r(o)}u o};3L.eP=A(2C){M 2t,4q,K;W(2t 5h 2C){4q=2C[2t];B(6s.1w(7Z,2t)<0){o.N[2t]=4q}}B((K=2C.97)!=L){K.4r(o)}u o};3L.eO=A(){M 1k,7q,38,H,1n,1o;1k=1<=1l.P?5W.1w(1l,0):[];38=1k.6o();1o=[];W(H=0,1n=1k.P;H<1n;H++){7q=1k[H];1o.2j(o.N[7q]=38.N[7q])}u 1o};3L.eJ=A(3N,4M){M 1D=o;u o.N[3N]=A(){M 1k;1k=1<=1l.P?5W.1w(1l,0):[];u 1D.N[4M].4r(1D,1k)}};3L.eH=A(3N,4M){u bc.eF(o.N,3N,{4i:A(){u o[4M]},eE:A(2f){u o[4M]=2f}})};3L.97=A(5j){u 5j.1w(o,o.N)};u 3L})();5f=5T.N.5f;$=A(7A,7C){B(7C==L){7C=2p}B(1r 7A==="44"||(1r 2g!=="42"&&2g!==L)){u 7A}u 7C.ei(7A)};1v=(A(){A 1v(){}1v.8Z=(A(){M 2X;2X=0;u{4i:A(){u 2X++}}})();1v.7N=A(){M 6C,7T,2C,6E,1G,H,1n;2C=1l[0],1G=2<=1l.P?5W.1w(1l,1):[];7T=2C;W(H=0,1n=1G.P;H<1n;H++){6C=1G[H];W(6E 5h 6C){B(!74.1w(6C,6E))5I;7T[6E]=6C[6E]}}u 7T};1v.3H=A(2f){B(2f<0){u 0}B(2f>E){u E}u 2f};1v.5H=A(4M,3N,G){M 6l,H,1n,K,3T,1o;B(G==L){G={}}K=4M.e6;1o=[];W(H=0,1n=K.P;H<1n;H++){6l=K[H];B((G.8W!=L)&&(3T=6l.9U,6s.1w(G.8W,3T)>=0)){5I}1o.2j(3N.cR(6l.9U,6l.dd))}u 1o};1v.6F=A(P){B(P==L){P=0}B(D.2O||(4N.cC!=L)){u 1y cC(P)}u 1y 5T(P)};u 1v})();B(1r 2g!=="42"&&2g!==L){7V=2g;3S=6x(\'I\');4V=3S.4V;6B=6x(\'eQ\');fs=6x(\'fs\');6y=6x(\'6y\')}S{7V=4N}D=(A(cv){cM(D,cv);D.9w={ct:"4.1.2",cs:"7/27/de"};D.co=2r;D.6r=31;D.9t="cm";D.8t="";D.ck="df";D.2O=1r 2g!=="42"&&2g!==L;D.ci=!D.2O;D.65=A(){u"dg "+D.9w.ct+", dh "+D.9w.cs};D.9m=A(I){B(D.2O){u 31}B(1r I==="3j"){I=$(I)}B(!((I!=L)&&(I.6c!=L))){u L}u I.6c(\'29-3E-2X\')};A D(){o.6d=9x(o.6d,o);M 1k,1N,2X,1D=o;B(1l.P===0){2V"6i 1l";}B(o bY D){o.6k=o.6k.98(o);o.6H=o.6H.98(o);1k=1l[0];B(!D.2O){2X=49(D.9m(1k[0]),10);1N=1r 1k[1]==="A"?1k[1]:1r 1k[2]==="A"?1k[2]:A(){};B(!bQ(2X)&&32.bP(2X)){u 32.3O(2X,1N)}}o.2X=1v.8Z.4i();o.7D=o.5g=L;o.6z={x:0,y:0};o.bH=2r;o.7R=2r;o.6D=[];o.8S=[];o.8P=[];o.6N=L;o.bl=2r;o.du=1y 4K(o);o.4S=1y 1P(o);o.bi(A(){1D.bh(1k);u 1D.bg()});u o}S{u 1y D(1l)}}D.N.bi=A(cb){M 8H,1D=o;B(D.2O){u 8q(A(){u cb.1w(1D)},0)}S{B(2p.9q==="8D"){1Y.2x("aU aT");u 8q(A(){u cb.1w(1D)},0)}S{8H=A(){B(2p.9q==="8D"){1Y.2x("aU aT");u cb.1w(1D)}};u 2p.aS("dE",8H,2r)}}};D.N.bh=A(1k){M 2t,2f,K,1o;B(1k.P===0){2V"6i 1l aQ";}o.3b=L;o.8A=L;o.8z=L;o.1N=A(){};o.aM(1k[0]);B(1k.P===1){u}61(1r 1k[1]){2i"3j":o.8z=1k[1];4Z;2i"A":o.1N=1k[1]}B(1k.P===2){u}o.1N=1k[2];B(1k.P===4){K=1k[4];1o=[];W(2t 5h K){B(!74.1w(K,2t))5I;2f=K[2t];1o.2j(o.1F[2t]=2f)}u 1o}};D.N.aM=A(2C){B(D.2O){o.3b=2C;o.8A=\'ay\';u}B(1r 2C==="44"){o.3b=2C}S{o.3b=$(2C)}B(o.3b==L){2V"dN dO dV 1f d3 I W dX.";}u o.8A=o.3b.9U.6P()};D.N.bg=A(){61(o.8A){2i"ay":u o.cN();2i"1K":u o.cE();2i"I":u o.cx()}};D.N.cN=A(){1Y.2x("e8 W 2O");B(1r o.3b==="3j"&&o.3b.7W(/^ch?:\\/\\//)){u o.cf(o.3b,o.6d)}S B(1r o.3b==="3j"){u fs.eb(o.3b,o.6d)}S{u o.6d(L,o.3b)}};D.N.cf=A(6u,1N){M 9z;1Y.2x("fj 1f 4M "+6u);9z=6y.4i(6u,A(4p){M 7O;7O=\'\';4p.fk(\'aP\');4p.9B(\'29\',A(at){u 7O+=at});u 4p.9B(\'1Q\',A(){u 1N(L,1y fp(7O,\'aP\'))})});u 9z.9B(\'9C\',1N)};D.N.6d=A(6G,29){B(6G){2V 6G;}o.1f=1y 4V();o.1f.1G=29;1Y.2x("4V cS. cD = "+(o.5b())+", cy = "+(o.4W()));o.I=1y 3S(o.5b(),o.4W());u o.6k()};D.N.cE=A(){o.1f=o.3b;o.I=2p.3K(\'I\');o.1i=o.I.3h(\'2d\');1v.5H(o.1f,o.I,{8W:[\'1G\']});B(o.1f.7c!=L){o.1f.7c.9D(o.I,o.1f)}o.9J();u o.9L()};D.N.cx=A(){o.I=o.3b;o.1i=o.I.3h(\'2d\');B(o.8z!=L){o.1f=2p.3K(\'1K\');o.1f.1G=o.8z;o.9J();u o.9L()}S{u o.6k()}};D.N.9J=A(){B(o.9M()){1Y.2x(o.1f.1G,"->",o.8m());o.bd=31;o.1f.1G=o.8m()}B(2N.bb(o.1f)){o.1f.1G=2N.57(o.1f.1G);u 1Y.2x("fu 1f fx, fD cQ = "+o.1f.1G)}};D.N.9L=A(){B(o.cB()){u o.6H()}S{u o.1f.cr=o.6H}};D.N.cB=A(){B(!o.1f.8D){u 2r}B((o.1f.9P!=L)&&o.1f.9P===0){u 2r}u 31};D.N.5b=A(){u o.1f.F||o.1f.9P};D.N.4W=A(){u o.1f.J||o.1f.fN};D.N.6H=A(){1Y.2x("4V cS. cD = "+(o.5b())+", cy = "+(o.4W()));B(o.bd){o.I.F=o.5b()/o.7G();o.I.J=o.4W()/o.7G()}S{o.I.F=o.5b();o.I.J=o.4W()}u o.6k()};D.N.6k=A(){M i,1u,H,1n,K;B(o.1i==L){o.1i=o.I.3h(\'2d\')}o.51=o.6W=o.F=o.I.F;o.5D=o.6Y=o.J=o.I.J;o.d9();B(!o.c7()){o.c6()}B(o.1f!=L){o.1i.5U(o.1f,0,0,o.5b(),o.4W(),0,0,o.6W,o.6Y)}o.2y=o.1i.48(0,0,o.I.F,o.I.J);o.T=o.2y.29;B(D.6r){o.7D=1v.6F(o.T.P);o.5g=1v.6F(o.T.P);K=o.T;W(i=H=0,1n=K.P;H<1n;i=++H){1u=K[i];o.7D[i]=1u;o.5g[i]=1u}}o.1d={F:o.I.F,J:o.I.J};B(!D.2O){32.c4(o.2X,o)}o.1N.1w(o,o);u o.1N=A(){}};D.N.c1=A(){o.2y=o.1i.48(0,0,o.I.F,o.I.J);u o.T=o.2y.29};D.N.g3=A(){M i,1u,H,1n,K,1o;B(!D.6r){2V"a0 7F";}o.5g=1v.6F(o.T.P);K=o.T;1o=[];W(i=H=0,1n=K.P;H<1n;i=++H){1u=K[i];1o.2j(o.5g[i]=1u)}u 1o};D.N.c7=A(){u D.9m(o.I)!=L};D.N.c6=A(){B(D.2O||o.I.6c(\'29-3E-2X\')){u}u o.I.cR(\'29-3E-2X\',o.2X)};D.N.aE=A(){u o.I.6c(\'29-3E-cO-7F\')!==L};D.N.d9=A(){M 4d;B(D.2O||!o.9M()){u}4d=o.7G();B(4d!==1){1Y.2x("g4 4d = "+4d);o.bl=31;o.6W=o.I.F;o.6Y=o.I.J;o.I.F=o.6W*4d;o.I.J=o.6Y*4d;o.I.c8.F=""+o.6W+"c5";o.I.c8.J=""+o.6Y+"c5";o.1i.g6(4d,4d);o.F=o.51=o.I.F;u o.J=o.5D=o.I.J}};D.N.7G=A(){M a3,4j;4j=4N.4j||1;a3=o.1i.g7||o.1i.gi||o.1i.gk||o.1i.gm||o.1i.go||1;u 4j/a3};D.N.aZ=A(){u(4N.4j!=L)&&4N.4j!==1};D.N.9M=A(){B(o.aE()||!o.aZ()){u 2r}u o.8m()!==L};D.N.8m=A(){B(o.1f==L){u L}u o.1f.6c(\'29-3E-cO\')};D.N.73=A(aD){M 7z;7z=o.I;o.I=aD;o.1i=o.I.3h(\'2d\');B(!D.2O){7z.7c.9D(o.I,7z)}o.F=o.I.F;o.J=o.I.J;o.c1();u o.1d={F:o.I.F,J:o.I.J}};D.N.a8=A(1N){M 1D=o;B(1N==L){1N=A(){}}2Q.4Y(o,"aX");u o.4S.3O(A(){1D.1i.7x(1D.2y,0,0);u 1N.1w(1D)})};D.N.gu=A(8e){M i,1u,H,1n,K;B(8e==L){8e=31}B(!D.6r){2V"a0 7F";}K=o.d2();W(i=H=0,1n=K.P;H<1n;i=++H){1u=K[i];o.T[i]=1u}B(8e){u o.1i.7x(o.2y,0,0)}};D.N.gt=A(){M I,1W,i,2y,1u,T,H,1n,K;I=2p.3K(\'I\');1v.5H(o.I,I);I.F=o.51;I.J=o.5D;1W=I.3h(\'2d\');2y=1W.48(0,0,I.F,I.J);T=2y.29;K=o.7D;W(i=H=0,1n=K.P;H<1n;i=++H){1u=K[i];T[i]=1u}1W.7x(2y,0,0);o.6z={x:0,y:0};o.7R=2r;u o.73(I)};D.N.d2=A(){M I,7E,1W,26,a6,i,2y,1u,T,Y,72,8k,8w,F,H,1e,1n,K,3T,4o,a5;B(!D.6r){2V"a0 7F";}Y=[];8k=o.6z.x;26=8k+o.F;8w=o.6z.y;a6=8w+o.J;B(o.7R){I=2p.3K(\'I\');I.F=o.51;I.J=o.5D;1W=I.3h(\'2d\');2y=1W.48(0,0,I.F,I.J);T=2y.29;K=o.5g;W(i=H=0,1n=K.P;H<1n;i=++H){1u=K[i];T[i]=1u}1W.7x(2y,0,0);72=2p.3K(\'I\');72.F=o.F;72.J=o.J;1W=72.3h(\'2d\');1W.5U(I,0,0,o.51,o.5D,0,0,o.F,o.J);T=1W.48(0,0,o.F,o.J).29;F=o.F}S{T=o.5g;F=o.51}W(i=1e=0,3T=T.P;1e<3T;i=1e+=4){7E=28.cl(i,F);B(((8k<=(4o=7E.x)&&4o<26))&&((8w<=(a5=7E.y)&&a5<a6))){Y.2j(T[i],T[i+1],T[i+2],T[i+3])}}u Y};D.N.2m=A(1q,7n){o.4S.4k({1t:R.3g.a2,1q:1q,7n:7n});u o};D.N.3I=A(1q,Q,2K,3e){M i,H,K;B(2K==L){2K=L}B(3e==L){3e=0}B(2K==L){2K=0;W(i=H=0,K=Q.P;0<=K?H<K:H>K;i=0<=K?++H:--H){2K+=Q[i]}}o.4S.4k({1t:R.3g.a1,1q:1q,Q:Q,2K:2K,3e:3e});u o};D.N.5a=A(4b,1k){o.4S.4k({1t:R.3g.2w,4b:4b,1k:1k});u o};D.N.2Z=A(1N){M 2a;2a=1y 39(o);o.8P.2j(2a);o.4S.4k({1t:R.3g.9Z});1N.1w(2a);o.4S.4k({1t:R.3g.9Y});u o};D.N.bm=A(2a){u o.bn(2a)};D.N.bn=A(2a){o.8S.2j(o.6N);o.6D.2j(o.T);o.6N=2a;u o.T=2a.T};D.N.bx=A(){o.T=o.6D.6o();u o.6N=o.8S.6o()};D.N.bO=A(){u o.6N.bU()};u D})(3L);7V.D=D;D.4K=(A(){A 4K(c){o.c=c}4K.N.fX=A(){M i,3B,71,H,1e,1I,K;3B={r:{},g:{},b:{}};W(i=H=0;H<=E;i=++H){3B.r[i]=0;3B.g[i]=0;3B.b[i]=0}W(i=1e=0,K=o.c.T.P;1e<K;i=1e+=4){3B.r[o.c.T[i]]++;3B.g[o.c.T[i+1]]++;3B.b[o.c.T[i+2]]++}71=o.c.T.P/4;W(i=1I=0;1I<=E;i=++1I){3B.r[i]/=71;3B.g[i]/=71;3B.b[i]/=71}u 3B};u 4K})();4K=D.4K;D.9X=A(){M 1K,6Z,cA,H,1n,1o;6Z=2p.fU("1K[29-3E]");B(!(6Z.P>0)){u}1o=[];W(H=0,1n=6Z.P;H<1n;H++){1K=6Z[H];1o.2j(cA=1y 54(1K,A(){o.cI();u o.3O()}))}u 1o};B(D.ci){(A(){B(2p.9q==="8D"){u D.9X()}S{u 2p.aS("fT",D.9X,2r)}})()}54=(A(){M 8g;8g="(\\\\w+)\\\\((.*?)\\\\)";A 54(46,db){o.ab=46.6c(\'29-3E\');o.3E=D(46,db.98(o))}54.N.cI=A(){M 1k,e,1C,5j,9W,9V,m,r,6X,H,1n,K,1o;o.46=o.3E.I;r=1y bf(8g,\'g\');6X=o.ab.7W(r);B(!(6X.P>0)){u}r=1y bf(8g);1o=[];W(H=0,1n=6X.P;H<1n;H++){9W=6X[H];K=9W.7W(r),m=K[0],1C=K[1],1k=K[2];9V=1y fO("u A() { o."+1C+"("+1k+"); };");9S{5j=9V();1o.2j(5j.1w(o.3E))}9R(5C){e=5C;1o.2j(1Y.2x(e))}}u 1o};54.N.3O=A(){M 46;46=o.46;u o.3E.a8(A(){u 46.7c.9D(o.bJ(),46)})};u 54})();D.2k=(A(){A 2k(){}2k.9Q={};2k.V=A(1q,5j){u o.9Q[1q]=5j};2k.3O=A(1q,Z,X){u o.9Q[1q](Z,X)};u 2k})();2k=D.2k;D.2b=(A(){A 2b(){}2b.52=A(6U,6S,6R,6Q){u O.7L(O.1T(6R-6U,2)+O.1T(6Q-6S,2))};2b.ce=A(1M,1c,6M){M 4s;B(6M==L){6M=2r}4s=1M+(O.fL()*(1c-1M));B(6M){u 4s.fH(6M)}S{u O.62(4s)}};2b.6L=A(C){u(0.9O*C.r)+(0.fF*C.g)+(0.fE*C.b)};2b.2h=A(1J,4H,4G,1Q,58,59){M 2h,5r,2F,26,i,j,5s,1S,3G,t,H,1e,K;B(58==L){58=0}B(59==L){59=E}B(1J[0]bY 5T){2F=1J;58=4H;59=4G}S{2F=[1J,4H,4G,1Q]}B(2F.P<2){2V"6i 8s 9K 1l 3N 2h";}2h={};5s=A(a,b,t){u a*(1-t)+b*t};5r=A(a,1M,1c){u O.1M(O.1c(a,1M),1c)};W(i=H=0;H<bI;i=++H){t=i/bI;3G=2F;9I(3G.P>1){1S=[];W(j=1e=0,K=3G.P-2;0<=K?1e<=K:1e>=K;j=0<=K?++1e:--1e){1S.2j([5s(3G[j][0],3G[j+1][0],t),5s(3G[j][1],3G[j+1][1],t)])}3G=1S}2h[O.62(3G[0][0])]=O.62(5r(3G[0][1],58,59))}26=2F[2F.P-1][0];2h=D.2b.9H(2h,26);B(2h[26]==L){2h[26]=2h[26-1]}u 2h};2b.bR=A(2F,58,59){M 4k,5r,9G,26,8C,76,77,78,i,j,5s,9F,9E,4A,p,5A,5B,4u,7g,7i,3p,7k,t,H,1e,K,1D=o;B(2F.P<2){2V"6i 8s 9K 1l 3N bR";}3p={};5s=A(a,b,t){u a*(1-t)+b*t};4k=A(a,b,c,d){u[a[0]+b[0]+c[0]+d[0],a[1]+b[1]+c[1]+d[1]]};4A=A(a,b){u[a[0]*b[0],a[1]*b[1]]};7k=A(a,b){u[a[0]-b[0],a[1]-b[1]]};5r=A(a,1M,1c){u O.1M(O.1c(a,1M),1c)};9G=0;W(i=H=0,K=2F.P-2;0<=K?H<=K:H>=K;i=0<=K?++H:--H){5A=2F[i];5B=2F[i+1];4u=5B[0]-5A[0];7g=1/4u;B(i===2F.P-2){7g=1/(4u-1)}p=i>0?2F[i-1]:5A;9F=4A(7k(5B,p),[0.5,0.5]);p=i<2F.P-2?2F[i+2]:5B;9E=4A(7k(p,5A),[0.5,0.5]);W(j=1e=0;0<=4u?1e<=4u:1e>=4u;j=0<=4u?++1e:--1e){t=j*7g;8C=2.0*t*t*t-3.0*t*t+1.0;76=t*t*t-2.0*t*t+t;77=-2.0*t*t*t+3.0*t*t;78=t*t*t-t*t;7i=4k(4A(5A,[8C,8C]),4A(9F,[76,76]),4A(5B,[77,77]),4A(9E,[78,78]));3p[O.62(7i[0])]=O.62(5r(7i[1],58,59));9G+=1}}26=2F[2F.P-1][0];3p=D.2b.9H(3p,26);u 3p};2b.9H=A(5c,26){M i,j,5F,3p,7s,H,1e;B(bc.ft(5c).P<26+1){3p={};W(i=H=0;0<=26?H<=26:H>=26;i=0<=26?++H:--H){B(5c[i]!=L){3p[i]=5c[i]}S{5F=[i-1,3p[i-1]];W(j=1e=i;i<=26?1e<=26:1e>=26;j=i<=26?++1e:--1e){B(5c[j]!=L){7s=[j,5c[j]];4Z}}3p[i]=5F[1]+((7s[1]-5F[1])/(7s[0]-5F[0]))*(i-5F[0])}}u 3p}u 5c};u 2b})();2b=D.2b;D.1X=(A(){A 1X(){}1X.7u=A(3F){M b,g,r;B(3F.fr(0)==="#"){3F=3F.5d(1)}r=49(3F.5d(0,2),16);g=49(3F.5d(2,2),16);b=49(3F.5d(4,2),16);u{r:r,g:g,b:b}};1X.fq=A(r,g,b){M d,h,l,1c,1M,s;B(1r r==="44"){g=r.g;b=r.b;r=r.r}r/=E;g/=E;b/=E;1c=O.1c(r,g,b);1M=O.1M(r,g,b);l=(1c+1M)/2;B(1c===1M){h=s=0}S{d=1c-1M;s=l>0.5?d/(2-1c-1M):d/(1c+1M);h=(A(){61(1c){2i r:u(g-b)/d+(g<b?6:0);2i g:u(b-r)/d+2;2i b:u(r-g)/d+4}})();h/=6}u{h:h,s:s,l:l}};1X.fm=A(h,s,l){M b,g,p,q,r;B(1r h==="44"){s=h.s;l=h.l;h=h.h}B(s===0){r=g=b=l}S{q=l<0.5?l*(1+s):l+s-l*s;p=2*l-q;r=o.7I(p,q,h+1/3);g=o.7I(p,q,h);b=o.7I(p,q,h-1/3)}u{r:r*E,g:g*E,b:b*E}};1X.7I=A(p,q,t){B(t<0){t+=1}B(t>1){t-=1}B(t<1/6){u p+(q-p)*6*t}B(t<1/2){u q}B(t<2/3){u p+(q-p)*(2/3-t)*6}u p};1X.aL=A(r,g,b){M d,h,1c,1M,s,v;r/=E;g/=E;b/=E;1c=O.1c(r,g,b);1M=O.1M(r,g,b);v=1c;d=1c-1M;s=1c===0?0:d/1c;B(1c===1M){h=0}S{h=(A(){61(1c){2i r:u(g-b)/d+(g<b?6:0);2i g:u(b-r)/d+2;2i b:u(r-g)/d+4}})();h/=6}u{h:h,s:s,v:v}};1X.aW=A(h,s,v){M b,f,g,i,p,q,r,t;i=O.2P(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);61(i%6){2i 0:r=v;g=t;b=p;4Z;2i 1:r=q;g=v;b=p;4Z;2i 2:r=p;g=v;b=t;4Z;2i 3:r=p;g=q;b=v;4Z;2i 4:r=t;g=p;b=v;4Z;2i 5:r=v;g=p;b=q}u{r:O.2P(r*E),g:O.2P(g*E),b:O.2P(b*E)}};1X.b1=A(r,g,b){M x,y,z;r/=E;g/=E;b/=E;B(r>0.9A){r=O.1T((r+0.3n)/1.3n,2.4)}S{r/=12.92}B(g>0.9A){g=O.1T((g+0.3n)/1.3n,2.4)}S{g/=12.92}B(b>0.9A){b=O.1T((b+0.3n)/1.3n,2.4)}S{b/=12.92}x=r*0.fi+g*0.fh+b*0.fg;y=r*0.bp+g*0.bs+b*0.bv;z=r*0.ff+g*0.fe+b*0.fd;u{x:x*1j,y:y*1j,z:z*1j}};1X.fc=A(x,y,z){M b,g,r;x/=1j;y/=1j;z/=1j;r=(3.fa*x)+(-1.f9*y)+(-0.f8*z);g=(-0.f7*x)+(1.f6*y)+(0.f5*z);b=(0.f4*x)+(-0.f3*y)+(1.f1*z);B(r>0.9v){r=(1.3n*O.1T(r,0.9u))-0.3n}S{r*=12.92}B(g>0.9v){g=(1.3n*O.1T(g,0.9u))-0.3n}S{g*=12.92}B(b>0.9v){b=(1.3n*O.1T(b,0.9u))-0.3n}S{b*=12.92}u{r:r*E,g:g*E,b:b*E}};1X.c9=A(x,y,z){M a,b,l,9s,9r,8E;B(1r x==="44"){y=x.y;z=x.z;x=x.x}9s=95.cn;9r=1j.0;8E=9n.cu;x/=9s;y/=9r;z/=8E;B(x>0.9l){x=O.1T(x,0.9k)}S{x=(7.9j*x)+0.69}B(y>0.9l){y=O.1T(y,0.9k)}S{y=(7.9j*y)+0.69}B(z>0.9l){z=O.1T(z,0.9k)}S{z=(7.9j*z)+0.69}l=cF*y-16;a=cG*(x-y);b=6a*(y-z);u{l:l,a:a,b:b}};1X.f0=A(l,a,b){M x,y,z;B(1r l==="44"){a=l.a;b=l.b;l=l.l}y=(l+16)/cF;x=y+(a/cG);z=y-(b/6a);B(x>0.9i){x=x*x*x}S{x=0.9h*(x-0.69)}B(y>0.9i){y=y*y*y}S{y=0.9h*(y-0.69)}B(z>0.9i){z=z*z*z}S{z=0.9h*(z-0.69)}u{x:x*95.cn,y:y*1j.0,z:z*9n.cu}};1X.eZ=A(r,g,b){M 9f;B(1r r==="44"){g=r.g;b=r.b;r=r.r}9f=o.b1(r,g,b);u o.c9(9f)};1X.eY=A(l,a,b){};u 1X})();1X=D.1X;D.2Q=(A(){A 2Q(){}2Q.5n={};2Q.cU=["cV","cW","aX","d0","d1","6g"];2Q.4Y=A(38,1t,29){M 6m,H,1n,K,1o;B(29==L){29=L}B(o.5n[1t]&&o.5n[1t].P){K=o.5n[1t];1o=[];W(H=0,1n=K.P;H<1n;H++){6m=K[H];B(6m.38===L||38.2X===6m.38.2X){1o.2j(6m.fn.1w(38,29))}S{1o.2j(da 0)}}u 1o}};2Q.eX=A(38,1t,fn){M 9e,9d;B(1r 38==="3j"){9d=38;9e=1t;38=L;1t=9d;fn=9e}B(6s.1w(o.cU,1t)<0){u 2r}B(!o.5n[1t]){o.5n[1t]=[]}o.5n[1t].2j({38:38,fn:fn});u 31};u 2Q})();2Q=D.2Q;D.R=(A(){A R(){}R.3g={a2:1,a1:2,9Z:3,9Y:4,9c:5,2w:6};R.V=A(1q,ah){u D.N[1q]=ah};u R})();R=D.R;D.2N=(A(){A 2N(){}2N.aq=/(?:(?:6y|ch):\\/\\/)((?:\\w+)\\.(?:(?:\\w|\\.)+))/;2N.bb=A(1K){B(1K==L){u 2r}B(o.as(1K)){u 2r}u o.7j(1K.1G)};2N.as=A(1K){M K;u(1K.9t!=L)&&((K=1K.9t.6P())===\'cm\'||K===\'ax-eW\')};2N.7j=A(6u){M 7l;7l=6u.7W(o.aq);B(7l){u 7l[1]!==2p.eV}S{u 2r}};2N.aK=A(1G){B(o.7j(1G)){B(!D.8t.P){1Y.99("eS 3N eR a aV 1f eN a eM aY. cQ: "+1G)}S{B(D.7j(D.8t)){1Y.99("eL ax a aV aY W eK eI.");u}u o.57(1G)}}};2N.57=A(1G){u""+D.8t+"?"+D.ck+"="+(eG(1G))};2N.eD=A(5k){M 7w;7w={eC:\'eB\',eA:\'ez\',ey:\'ex\',ew:\'ev\'};5k=5k.6P();B(7w[5k]!=L){5k=7w[5k]}u"eu/es."+5k};u 2N})();D.N.bB=A(){B(1r 2g!=="42"&&2g!==L){u o.bC.4r(o,1l)}S{u o.bD.4r(o,1l)}};D.N.bD=A(1t){M 1f;B(1t==L){1t="bG"}1t=1t.6P();1f=o.94(1t).er("1f/"+1t,"1f/eq-ep");u 2p.eo.en=1f};D.N.bC=A(5R,7J,1N){M e,91;B(7J==L){7J=31}B(1N==L){1N=L}9S{91=fs.em(5R);B(91.ek()&&!7J){u 2r}}9R(5C){e=5C;1Y.2x("ej eh 5R "+5R)}u fs.eg(5R,o.I.ef(),A(6G){1Y.2x("ee ed 3N "+5R);B(1N){u 1N.1w(o,6G)}})};D.N.bJ=A(1t){M 1K;1K=1y 4V();1K.1G=o.94(1t);1K.F=o.1d.F;1K.J=o.1d.J;B(4N.4j){1K.F/=4N.4j;1K.J/=4N.4j}u 1K};D.N.94=A(1t){B(1t==L){1t="bG"}1t=1t.6P();u o.I.ec("1f/"+1t)};2N=D.2N;D.39=(A(){A 39(c){o.c=c;o.1C=o.c;o.1F={8Y:\'8X\',2q:1.0};o.ea=1v.8Z.4i();o.I=1r 2g!=="42"&&2g!==L?1y 3S():2p.3K(\'I\');o.I.F=o.c.1d.F;o.I.J=o.c.1d.J;o.1i=o.I.3h(\'2d\');o.1i.e9(o.I.F,o.I.J);o.2y=o.1i.48(0,0,o.I.F,o.I.J);o.T=o.2y.29}39.N.2Z=A(cb){u o.c.2Z.1w(o.c,cb)};39.N.3q=A(cg){o.1F.8Y=cg;u o};39.N.2q=A(2q){o.1F.2q=2q/1j;u o};39.N.4n=A(){M i,2Y,H,K;2Y=o.c.T;W(i=H=0,K=o.c.T.P;H<K;i=H+=4){o.T[i]=2Y[i];o.T[i+1]=2Y[i+1];o.T[i+2]=2Y[i+2];o.T[i+3]=2Y[i+3]}u o};39.N.4B=A(){u o.c.4B.4r(o.c,1l)};39.N.e7=A(1f){B(1r 1f==="44"){1f=1f.1G}S B(1r 1f==="3j"&&1f[0]==="#"){1f=$(1f).1G}B(!1f){u o}o.c.4S.6I.2j({1t:R.3g.9c,1G:1f,2a:o});u o};39.N.bU=A(){M i,56,2Y,1E,Z,X,H,K,1o;2Y=o.c.6D[o.c.6D.P-1];56=o.c.T;1o=[];W(i=H=0,K=56.P;H<K;i=H+=4){X={r:2Y[i],g:2Y[i+1],b:2Y[i+2],a:2Y[i+3]};Z={r:56[i],g:56[i+1],b:56[i+2],a:56[i+3]};1E=2k.3O(o.1F.8Y,Z,X);1E.r=1v.3H(1E.r);1E.g=1v.3H(1E.g);1E.b=1v.3H(1E.b);B(1E.a==L){1E.a=Z.a}2Y[i]=X.r-((X.r-1E.r)*(o.1F.2q*(1E.a/E)));2Y[i+1]=X.g-((X.g-1E.g)*(o.1F.2q*(1E.a/E)));1o.2j(2Y[i+2]=X.b-((X.b-1E.b)*(o.1F.2q*(1E.a/E))))}u 1o};u 39})();39=D.39;D.82=(A(){A 82(){M 1q,H,1n,K;K=[\'cz\',\'99\',\'e5\',\'9C\'];W(H=0,1n=K.P;H<1n;H++){1q=K[H];o[1q]=(A(1q){u A(){M 1k,e;1k=1<=1l.P?5W.1w(1l,0):[];B(!D.co){u}9S{u 8V[1q].4r(8V,1k)}9R(5C){e=5C;u 8V[1q](1k)}}})(1q)}o.2x=o.cz}u 82})();1Y=1y D.82();D.28=(A(){28.8U=A(x,y,F){u(y*F+x)*4};28.cl=A(U,F){M x,y;y=O.2P(U/(F*4));x=(U%(F*4))/4;u{x:x,y:y}};A 28(r,g,b,a,c){o.r=r!=L?r:0;o.g=g!=L?g:0;o.b=b!=L?b:0;o.a=a!=L?a:E;o.c=c!=L?c:L;o.U=0}28.N.8T=A(c){u o.c=c};28.N.8R=A(){M x,y;B(o.c==L){2V"6b a 67 1i";}y=o.c.1d.J-O.2P(o.U/(o.c.1d.F*4));x=(o.U%(o.c.1d.F*4))/4;u{x:x,y:y}};28.N.8O=A(U){B(o.c==L){2V"6b a 67 1i";}u 1y 28(o.c.T[U],o.c.T[U+1],o.c.T[U+2],o.c.T[U+3],o.c)};28.N.cJ=A(8c,8d){M 3M;B(o.c==L){2V"6b a 67 1i";}3M=o.U+(o.c.1d.F*4*(8d*-1))+(4*8c);B(3M>o.c.T.P||3M<0){u 1y 28(0,0,0,E,o.c)}u o.8O(3M)};28.N.e4=A(8c,8d,C){M cP;B(o.c==L){2V"6b a 67 1i";}cP=o.U+(o.c.1d.F*4*(8d*-1))+(4*8c);B(3M>o.c.T.P||3M<0){u}o.c.T[3M]=C.r;o.c.T[3M+1]=C.g;o.c.T[3M+2]=C.b;o.c.T[3M+3]=C.a;u 31};28.N.e3=A(x,y){M U;B(o.c==L){2V"6b a 67 1i";}U=o.8U(x,y,o.F);u o.8O(U)};28.N.e2=A(x,y,C){M U;B(o.c==L){2V"6b a 67 1i";}U=o.8U(x,y,o.F);o.c.T[U]=C.r;o.c.T[U+1]=C.g;o.c.T[U+2]=C.b;u o.c.T[U+3]=C.a};28.N.65=A(){u o.e1()};28.N.e0=A(8f){M 3F;B(8f==L){8f=2r}3F=\'#\'+o.r.65(16)+o.g.65(16)+o.b.65(16);B(8f){u 3F+o.a.65(16)}S{u 3F}};u 28})();28=D.28;D.2w=(A(){A 2w(){}2w.8N={};2w.V=A(1q,4b){u o.8N[1q]=4b};2w.3O=A(1i,1q,1k){u o.8N[1q].4r(1i,1k)};u 2w})();2w=D.2w;D.1P=(A(){1P.4t=D.2O?6x(\'dZ\').dY().P:4;A 1P(c){o.c=c;o.4l=9x(o.4l,o);o.6I=[];o.53=L}1P.N.4k=A(8M){B(8M==L){u}u o.6I.2j(8M)};1P.N.4l=A(){M 2a;B(o.6I.P===0){2Q.4Y(o,"d0");B(o.8L!=L){o.8L.1w(o.c)}u o}o.2c=o.6I.d4();61(o.2c.1t){2i R.3g.9Z:2a=o.c.8P.d4();o.c.bm(2a);u o.4l();2i R.3g.9Y:o.c.bO();o.c.bx();u o.4l();2i R.3g.9c:u o.d5(o.2c.2a,o.2c.1G);2i R.3g.2w:u o.d6();dW:u o.d8()}};1P.N.3O=A(1N){o.8L=1N;o.53=1v.6F(o.c.T.P);u o.4l()};1P.N.8K=A(fn){M 6T,8J,2T,1Q,f,i,8I,n,1J,H,K,1o,1D=o;o.8p=0;n=o.c.T.P;8J=O.2P((n/4)/1P.4t);6T=8J*4;8I=6T+((n/4)%1P.4t)*4;1o=[];W(i=H=0,K=1P.4t;0<=K?H<K:H>K;i=0<=K?++H:--H){1J=i*6T;1Q=1J+(i===1P.4t-1?8I:6T);B(D.2O){f=6B(A(){u fn.1w(1D,i,1J,1Q)});2T=f.dU();1o.2j(o.6g(2T))}S{1o.2j(8q((A(i,1J,1Q){u A(){u fn.1w(1D,i,1J,1Q)}})(i,1J,1Q),0))}}u 1o};1P.N.d8=A(){2Q.4Y(o.c,"cV",o.2c);B(o.2c.1t===R.3g.a2){u o.8K(o.ae)}S{u o.8K(o.af)}};1P.N.d6=A(){1Y.2x("dT 4b "+o.2c.4b);2w.3O(o.c,o.2c.4b,o.2c.1k);1Y.2x("2w "+o.2c.4b+" 8G!");u o.4l()};1P.N.ae=A(2T,1J,1Q){M i,1u,H;1Y.2x("ai #"+2T+" - R: "+o.2c.1q+", dS: "+1J+", dR: "+1Q);2Q.4Y(o.c,"d1",{al:2T,am:1P.4t,dQ:1J,dP:1Q});1u=1y 28();1u.8T(o.c);W(i=H=1J;H<1Q;i=H+=4){1u.U=i;1u.r=o.c.T[i];1u.g=o.c.T[i+1];1u.b=o.c.T[i+2];1u.a=o.c.T[i+3];o.2c.7n(1u);o.c.T[i]=1v.3H(1u.r);o.c.T[i+1]=1v.3H(1u.g);o.c.T[i+2]=1v.3H(1u.b);o.c.T[i+3]=1v.3H(1u.a)}B(D.2O){u 6B["ap"](2T)}S{u o.6g(2T)}};1P.N.af=A(2T,1J,1Q){M Q,6V,3e,2U,5E,2K,i,j,k,2I,n,1q,p,1u,4p,H,1e,1I;1q=o.2c.1q;3e=o.2c.3e;2K=o.2c.2K;n=o.c.T.P;Q=o.2c.Q;6V=O.7L(Q.P);2I=[];1Y.2x("dM 2I - R: "+o.2c.1q);1J=O.1c(1J,o.c.1d.F*4*((6V-1)/2));1Q=O.1M(1Q,n-(o.c.1d.F*4*((6V-1)/2)));2U=(6V-1)/2;1u=1y 28();1u.8T(o.c);W(i=H=1J;H<1Q;i=H+=4){1u.U=i;5E=0;W(j=1e=-2U;-2U<=2U?1e<=2U:1e>=2U;j=-2U<=2U?++1e:--1e){W(k=1I=2U;2U<=-2U?1I<=-2U:1I>=-2U;k=2U<=-2U?++1I:--1I){p=1u.cJ(j,k);2I[5E*3]=p.r;2I[5E*3+1]=p.g;2I[5E*3+2]=p.b;5E++}}4p=o.3I(Q,2I,2K,3e);o.53[i]=1v.3H(4p.r);o.53[i+1]=1v.3H(4p.g);o.53[i+2]=1v.3H(4p.b);o.53[i+3]=o.c.T[i+3]}B(D.2O){u 6B["ap"](2T)}S{u o.6g(2T)}};1P.N.6g=A(2T){M i,H,K;B(2T>=0){1Y.2x("ai #"+2T+" 8G! R: "+o.2c.1q)}o.8p++;2Q.4Y(o.c,"6g",{al:2T,dL:o.8p,am:1P.4t});B(o.8p===1P.4t){B(o.2c.1t===R.3g.a1){W(i=H=0,K=o.c.T.P;0<=K?H<K:H>K;i=0<=K?++H:--H){o.c.T[i]=o.53[i]}}B(2T>=0){1Y.2x("R "+o.2c.1q+" 8G!")}2Q.4Y(o.c,"cW",o.2c);u o.4l()}};1P.N.3I=A(Q,2I,2K,3e){M i,2f,H,K;2f={r:0,g:0,b:0};W(i=H=0,K=Q.P;0<=K?H<K:H>K;i=0<=K?++H:--H){2f.r+=Q[i]*2I[i*3];2f.g+=Q[i]*2I[i*3+1];2f.b+=Q[i]*2I[i*3+2]}2f.r=(2f.r/2K)+3e;2f.g=(2f.g/2K)+3e;2f.b=(2f.b/2K)+3e;u 2f};1P.N.d5=A(2a,1G){M 1K,57,1D=o;1K=1y 4V();1K.cr=A(){2a.1i.5U(1K,0,0,1D.c.1d.F,1D.c.1d.J);2a.2y=2a.1i.48(0,0,1D.c.1d.F,1D.c.1d.J);2a.T=2a.2y.29;1D.c.T=2a.T;u 1D.4l()};57=2N.aK(1G);u 1K.1G=57!=L?57:1G};u 1P})();1P=D.1P;D.32=(A(){A 32(){}32.5p={};32.bP=A(4Q){u o.5p[4Q]!=L};32.4i=A(4Q){u o.5p[4Q]};32.c4=A(1q,2C){u o.5p[1q]=2C};32.3O=A(4Q,1N){M 1D=o;8q(A(){u 1N.1w(1D.4i(4Q),1D.4i(4Q))},0);u o.4i(4Q)};32.dK=A(1q){B(1q==L){1q=2r}B(1q){u aA o.5p[1q]}S{u o.5p={}}};u 32})();32=D.32;2k.V("8X",A(Z,X){u{r:Z.r,g:Z.g,b:Z.b}});2k.V("5o",A(Z,X){u{r:(Z.r*X.r)/E,g:(Z.g*X.g)/E,b:(Z.b*X.b)/E}});2k.V("dJ",A(Z,X){u{r:E-(((E-Z.r)*(E-X.r))/E),g:E-(((E-Z.g)*(E-X.g))/E),b:E-(((E-Z.b)*(E-X.b))/E)}});2k.V("8v",A(Z,X){M 1E;1E={};1E.r=X.r>1g?E-2*(E-Z.r)*(E-X.r)/E:(X.r*Z.r*2)/E;1E.g=X.g>1g?E-2*(E-Z.g)*(E-X.g)/E:(X.g*Z.g*2)/E;1E.b=X.b>1g?E-2*(E-Z.b)*(E-X.b)/E:(X.b*Z.b*2)/E;u 1E});2k.V("dI",A(Z,X){u{r:Z.r-X.r,g:Z.g-X.g,b:Z.b-X.b}});2k.V("aG",A(Z,X){u{r:X.r+Z.r,g:X.g+Z.g,b:X.b+Z.b}});2k.V("dH",A(Z,X){u{r:1g-2*(X.r-1g)*(Z.r-1g)/E,g:1g-2*(X.g-1g)*(Z.g-1g)/E,b:1g-2*(X.b-1g)*(Z.b-1g)/E}});2k.V("aI",A(Z,X){M 1E;1E={};1E.r=X.r>1g?E-((E-X.r)*(E-(Z.r-1g)))/E:(X.r*(Z.r+1g))/E;1E.g=X.g>1g?E-((E-X.g)*(E-(Z.g-1g)))/E:(X.g*(Z.g+1g))/E;1E.b=X.b>1g?E-((E-X.b)*(E-(Z.b-1g)))/E:(X.b*(Z.b+1g))/E;u 1E});2k.V("dG",A(Z,X){u{r:X.r>Z.r?X.r:Z.r,g:X.g>Z.g?X.g:Z.g,b:X.b>Z.b?X.b:Z.b}});2k.V("gx",A(Z,X){u{r:X.r>Z.r?Z.r:X.r,g:X.g>Z.g?Z.g:X.g,b:X.b>Z.b?Z.b:X.b}});R.V("4B",A(){M 3c;B(1l.P===1){3c=1X.7u(1l[0])}S{3c={r:1l[0],g:1l[1],b:1l[2]}}u o.2m("4B",A(C){C.r=3c.r;C.g=3c.g;C.b=3c.b;C.a=E;u C})});R.V("3A",A(Q){Q=O.2P(E*(Q/1j));u o.2m("3A",A(C){C.r+=Q;C.g+=Q;C.b+=Q;u C})});R.V("3D",A(Q){Q*=-0.dF;u o.2m("3D",A(C){M 1c;1c=O.1c(C.r,C.g,C.b);B(C.r!==1c){C.r+=(1c-C.r)*Q}B(C.g!==1c){C.g+=(1c-C.g)*Q}B(C.b!==1c){C.b+=(1c-C.b)*Q}u C})});R.V("3Y",A(Q){Q*=-1;u o.2m("3Y",A(C){M 1p,4E,1c;1c=O.1c(C.r,C.g,C.b);4E=(C.r+C.g+C.b)/3;1p=((O.4D(1c-4E)*2/E)*Q)/1j;B(C.r!==1c){C.r+=(1c-C.r)*1p}B(C.g!==1c){C.g+=(1c-C.g)*1p}B(C.b!==1c){C.b+=(1c-C.b)*1p}u C})});R.V("4C",A(Q){u o.2m("4C",A(C){M 4E;4E=2b.6L(C);C.r=4E;C.g=4E;C.b=4E;u C})});R.V("2u",A(Q){Q=O.1T((Q+1j)/1j,2);u o.2m("2u",A(C){C.r/=E;C.r-=0.5;C.r*=Q;C.r+=0.5;C.r*=E;C.g/=E;C.g-=0.5;C.g*=Q;C.g+=0.5;C.g*=E;C.b/=E;C.b-=0.5;C.b*=Q;C.b+=0.5;C.b*=E;u C})});R.V("8F",A(Q){u o.2m("8F",A(C){M b,g,h,4X,r,K;4X=1X.aL(C.r,C.g,C.b);h=4X.h*1j;h+=O.4D(Q);h=h%1j;h/=1j;4X.h=h;K=1X.aW(4X.h,4X.s,4X.v),r=K.r,g=K.g,b=K.b;C.r=r;C.g=g;C.b=b;u C})});R.V("4e",A(){M 5Q,3f;B(1l.P===2){3f=1X.7u(1l[0]);5Q=1l[1]}S B(1l.P===4){3f={r:1l[0],g:1l[1],b:1l[2]};5Q=1l[3]}u o.2m("4e",A(C){C.r-=(C.r-3f.r)*(5Q/1j);C.g-=(C.g-3f.g)*(5Q/1j);C.b-=(C.b-3f.b)*(5Q/1j);u C})});R.V("b0",A(){u o.2m("b0",A(C){C.r=E-C.r;C.g=E-C.g;C.b=E-C.b;u C})});R.V("4a",A(Q){B(Q==L){Q=1j}Q/=1j;u o.2m("4a",A(C){C.r=O.1M(E,(C.r*(1-(0.dD*Q)))+(C.g*(0.dC*Q))+(C.b*(0.dB*Q)));C.g=O.1M(E,(C.r*(0.dA*Q))+(C.g*(1-(0.dz*Q)))+(C.b*(0.dy*Q)));C.b=O.1M(E,(C.r*(0.dx*Q))+(C.g*(0.dw*Q))+(C.b*(1-(0.dv*Q))));u C})});R.V("2v",A(Q){u o.2m("2v",A(C){C.r=O.1T(C.r/E,Q)*E;C.g=O.1T(C.g/E,Q)*E;C.b=O.1T(C.b/E,Q)*E;u C})});R.V("8n",A(Q){Q=O.4D(Q)*2.55;u o.2m("8n",A(C){M 4s;4s=2b.ce(Q*-1,Q);C.r+=4s;C.g+=4s;C.b+=4s;u C})});R.V("8l",A(Q){Q=O.4D(Q)*2.55;u o.2m("8l",A(C){B(C.r>E-Q){C.r=E}S B(C.r<Q){C.r=0}B(C.g>E-Q){C.g=E}S B(C.g<Q){C.g=0}B(C.b>E-Q){C.b=E}S B(C.b<Q){C.b=0}u C})});R.V("3x",A(1F){M 5S,4q;B(1r 1F!=="44"){u o}W(5S 5h 1F){B(!74.1w(1F,5S))5I;4q=1F[5S];B(4q===0){aA 1F[5S];5I}1F[5S]/=1j}B(1F.P===0){u o}u o.2m("3x",A(C){B(1F.3d!=L){B(1F.3d>0){C.r+=(E-C.r)*1F.3d}S{C.r-=C.r*O.4D(1F.3d)}}B(1F.4U!=L){B(1F.4U>0){C.g+=(E-C.g)*1F.4U}S{C.g-=C.g*O.4D(1F.4U)}}B(1F.41!=L){B(1F.41>0){C.b+=(E-C.b)*1F.41}S{C.b-=C.b*O.4D(1F.41)}}u C})});R.V("2e",A(){M 6O,2h,43,3J,1Q,i,5X,1J,H,1e,K,3T;43=1l[0],3J=2<=1l.P?5W.1w(1l,1):[];5X=3J[3J.P-1];B(1r 5X==="A"){6O=5X;3J.6o()}S B(1r 5X==="3j"){6O=2b[5X];3J.6o()}S{6O=2b.2h}B(1r 43==="3j"){43=43.dt("")}B(43[0]==="v"){43=[\'r\',\'g\',\'b\']}B(3J.P<2){2V"6i 8s 9K 1l 3N 2e 1C";}2h=6O(3J,0,E);1J=3J[0];B(1J[0]>0){W(i=H=0,K=1J[0];0<=K?H<K:H>K;i=0<=K?++H:--H){2h[i]=1J[1]}}1Q=3J[3J.P-1];B(1Q[0]<E){W(i=1e=3T=1Q[0];3T<=E?1e<=E:1e>=E;i=3T<=E?++1e:--1e){2h[i]=1Q[1]}}u o.2m("2e",A(C){M 1I,4o;W(i=1I=0,4o=43.P;0<=4o?1I<4o:1I>4o;i=0<=4o?++1I:--1I){C[43[i]]=2h[C[43[i]]]}u C})});R.V("33",A(Q){M 4H,4G,p;p=O.4D(Q)/1j;4H=[0,E*p];4G=[E-(E*p),E];B(Q<0){4H=4H.bq();4G=4G.bq()}u o.2e(\'3f\',[0,0],4H,4G,[E,E])});D.2w.V("8Q",A(F,J,x,y){M I,1W;B(x==L){x=0}B(y==L){y=0}B(1r 2g!=="42"&&2g!==L){I=1y 3S(F,J)}S{I=2p.3K(\'I\');1v.5H(o.I,I);I.F=F;I.J=J}1W=I.3h(\'2d\');1W.5U(o.I,x,y,F,J,0,0,F,J);o.6z={x:x,y:y};o.bH=31;u o.73(I)});D.2w.V("88",A(2B){M I,1W;B(2B==L){2B=L}B(2B===L||((2B.F==L)&&(2B.J==L))){1Y.9C("6i d3 ds 1d aQ W 88");u}B(2B.F==L){2B.F=o.I.F*2B.J/o.I.J}S B(2B.J==L){2B.J=o.I.J*2B.F/o.I.F}B(1r 2g!=="42"&&2g!==L){I=1y 3S(2B.F,2B.J)}S{I=2p.3K(\'I\');1v.5H(o.I,I);I.F=2B.F;I.J=2B.J}1W=I.3h(\'2d\');1W.5U(o.I,0,0,o.I.F,o.I.J,0,0,2B.F,2B.J);o.7R=31;u o.73(I)});D.R.V("8Q",A(){u o.5a("8Q",5T.N.5f.1w(1l,0))});D.R.V("88",A(){u o.5a("88",5T.N.5f.1w(1l,0))});D.R.V("dr",A(){u o.3I("dq 85",[1,1,1,1,1,1,1,1,1])});D.R.V("dp",A(){u o.3I("do dn 85",[0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0])});D.R.V("dm",A(){u o.3I("dl 85",[1,4,6,4,1,4,16,24,16,4,6,24,36,24,6,4,16,24,16,4,1,4,6,4,1])});D.R.V("dk",A(3C){M 2I;B(3C===0||3C===47){2I=[0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0]}S B((3C>0&&3C<90)||(3C>47&&3C<7K)){2I=[0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0]}S B(3C===90||3C===7K){2I=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]}S{2I=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}u o.3I("dj 85",2I)});D.R.V("6w",A(1p){B(1p==L){1p=1j}1p/=1j;u o.3I("di",[0,-1p,0,-1p,4*1p+1,-1p,0,-1p,0])});9y={3A:A(C,1p,G){C.r=C.r-(C.r*1p*G.3i);C.g=C.g-(C.g*1p*G.3i);C.b=C.b-(C.b*1p*G.3i);u C},2v:A(C,1p,G){C.r=O.1T(C.r/E,O.1c(10*1p*G.3i,1))*E;C.g=O.1T(C.g/E,O.1c(10*1p*G.3i,1))*E;C.b=O.1T(C.b/E,O.1c(10*1p*G.3i,1))*E;u C},4e:A(C,1p,G){C.r-=(C.r-G.3c.r)*1p;C.g-=(C.g-G.3c.g)*1p;C.b-=(C.b-G.3c.b)*1p;u C}};R.V("1V",A(1s,3i){M 2h,3t,1Q,1J;B(3i==L){3i=60}B(1r 1s==="3j"&&1s.5d(-1)==="%"){B(o.1d.J>o.1d.F){1s=o.1d.F*(49(1s.5d(0,1s.P-1),10)/1j)}S{1s=o.1d.J*(49(1s.5d(0,1s.P-1),10)/1j)}}3i/=1j;3t=[o.1d.F/2,o.1d.J/2];1J=O.7L(O.1T(3t[0],2)+O.1T(3t[1],2));1Q=1J-1s;2h=2b.2h([0,1],[30,30],[70,60],[1j,80]);u o.2m("1V",A(C){M 7m,2J,U;U=C.8R();7m=2b.52(U.x,U.y,3t[0],3t[1]);B(7m>1Q){2J=O.1c(1,(2h[O.62(((7m-1Q)/1s)*1j)]/10)*3i);C.r=O.1T(C.r/E,2J)*E;C.g=O.1T(C.g/E,2J)*E;C.b=O.1T(C.b/E,2J)*E}u C})});R.V("bX",A(G){M 4c,6j,7h,1s,H,1n,K;4c={3i:50,2G:0,9g:\'3A\',3c:{r:0,g:0,b:0}};G=1v.7N(4c,G);B(!G.1s){u o}S B(1r G.1s==="3j"){7h=49(G.1s,10)/1j;G.1s={F:o.1d.F*7h,J:o.1d.J*7h}}S B(1r G.1s==="44"){K=["F","J"];W(H=0,1n=K.P;H<1n;H++){6j=K[H];B(1r G.1s[6j]==="3j"){G.1s[6j]=o.1d[6j]*(49(G.1s[6j],10)/1j)}}}S B(G.1s==="8s"){1s=G.1s;G.1s={F:1s,J:1s}}B(1r G.2G==="3j"){G.2G=(G.1s.F/2)*(49(G.2G,10)/1j)}G.3i/=1j;G.1s.F=O.2P(G.1s.F);G.1s.J=O.2P(G.1s.J);G.1f={F:o.1d.F,J:o.1d.J};B(G.9g==="4e"&&1r G.3c==="3j"){G.3c=1X.7u(G.3c)}G.1Z={5m:(o.1d.F-G.1s.F)/2,68:o.1d.F-G.1Z.5m,5l:(o.1d.J-G.1s.J)/2,66:o.1d.J-G.1Z.5l};G.1x=[{x:G.1Z.5m+G.2G,y:G.1Z.66-G.2G},{x:G.1Z.68-G.2G,y:G.1Z.66-G.2G},{x:G.1Z.68-G.2G,y:G.1Z.5l+G.2G},{x:G.1Z.5m+G.2G,y:G.1Z.5l+G.2G}];G.4f=2b.52(0,0,G.1x[3].x,G.1x[3].y)-G.2G;u o.2m("bX",A(C){M 1p,U,4g;U=C.8R();B((U.x>G.1x[0].x&&U.x<G.1x[1].x)&&(U.y>G.1Z.5l&&U.y<G.1Z.66)){u C}B((U.x>G.1Z.5m&&U.x<G.1Z.68)&&(U.y>G.1x[3].y&&U.y<G.1x[2].y)){u C}B(U.x>G.1x[0].x&&U.x<G.1x[1].x&&U.y>G.1Z.66){1p=(U.y-G.1Z.66)/G.4f}S B(U.y>G.1x[2].y&&U.y<G.1x[1].y&&U.x>G.1Z.68){1p=(U.x-G.1Z.68)/G.4f}S B(U.x>G.1x[0].x&&U.x<G.1x[1].x&&U.y<G.1Z.5l){1p=(G.1Z.5l-U.y)/G.4f}S B(U.y>G.1x[2].y&&U.y<G.1x[1].y&&U.x<G.1Z.5m){1p=(G.1Z.5m-U.x)/G.4f}S B(U.x<=G.1x[0].x&&U.y>=G.1x[0].y){4g=D.52(U.x,U.y,G.1x[0].x,G.1x[0].y);1p=(4g-G.2G)/G.4f}S B(U.x>=G.1x[1].x&&U.y>=G.1x[1].y){4g=D.52(U.x,U.y,G.1x[1].x,G.1x[1].y);1p=(4g-G.2G)/G.4f}S B(U.x>=G.1x[2].x&&U.y<=G.1x[2].y){4g=D.52(U.x,U.y,G.1x[2].x,G.1x[2].y);1p=(4g-G.2G)/G.4f}S B(U.x<=G.1x[3].x&&U.y<=G.1x[3].y){4g=D.52(U.x,U.y,G.1x[3].x,G.1x[3].y);1p=(4g-G.2G)/G.4f}B(1p<0){u C}u 9y[G.9g](C,1p,G)})});(A(){M 4v,9o,9p,64,63;64=[2S,2S,37,2S,3u,37,3v,2S,3X,3u,3y,37,3W,3v,3V,2S,4J,3X,4I,3u,4F,3y,4z,37,4x,3W,4m,3v,34,3V,4T,2S,5Z,4J,3Q,3X,5P,4I,5N,3u,34,4F,5K,3y,4O,4z,4L,37,5z,4x,5y,3W,5x,4m,5w,3v,5v,34,5u,3V,5t,4T,3P,2S,8u,5Z,8r,4J,8o,3Q,8a,3X,7Y,5P,7M,4I,4y,5N,7e,3u,5q,34,7a,4F,79,5K,4w,3y,3P,4O,8y,4z,8x,4L,8j,37,8b,5z,3Q,4x,7X,5y,7U,3W,7S,5x,7P,4m,4y,5w,5G,3v,7p,5v,7o,34,7d,5u,8B,3V,5Y,5t,4w,4T,89,3P,81,2S,cK,8u,cw,5Z,4L,8r,cq,4J,cp,8o,cj,3Q,cc,8a,ca,3X,bT,7Y,bM,5P,bK,7M,bF,4I,bE,4y,83,5N,5G,7e,84,3u,bA,5q,bz,34,by,7a,bw,4F,86,79,5Y,5K,bu,4w,bo,3y,bj,3P,ba,4O,b9,8y,b8,4z,b7,8x,b6,4L,b5,8j,b4,37,b3,8b,b2,5z,aR,3Q,aO,4x,aJ,7X,aH,5y,aF,7U,aC,3W,az,7S,aw,5x,av,7P,au,4m,ar,4y,83,5w,ao,5G,an,3v,84,7p,ak,5v,5q,7o,aj,34,ag,7d,ad,5u,9O,8B,86,3V,a9,5Y,d7,5t,cZ,4w,cY,4T,3y,89,cX,3P,cT,81,4O];63=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];9o=A(F,J,5J,5M,2H,P,c2){M 3Z,1i,2s,6U,6R,6S,6Q;3Z=1r 2g!=="42"&&2g!==L?1y 3S():2p.3K(\'I\');3Z.F=F;3Z.J=J;6U=5J+O.c0(2H)*P*0.5;6S=5M+O.bZ(2H)*P*0.5;6R=5J-O.c0(2H)*P*0.5;6Q=5M-O.bZ(2H)*P*0.5;1i=3Z.3h("2d");2s=1i.el(6U,6S,6R,6Q);B(!c2){2s.5e(0,"7H");2s.5e(1,"93")}S{2s.5e(0,"7H");2s.5e(0.5,"93");2s.5e(1,"7H")}1i.bN=2s;1i.bL(0,0,F,J);u 1i.48(0,0,F,J)};9p=A(F,J,5J,5M,6v,6t){M 3Z,1i,2s;3Z=1r 2g!=="42"&&2g!==L?1y 3S():2p.3K(\'I\');3Z.F=F;3Z.J=J;1i=3Z.3h("2d");2s=1i.et(5J,5M,6v,5J,5M,6t);2s.5e(1,"7H");2s.5e(0,"93");1i.bN=2s;1i.bL(0,0,F,J);u 1i.48(0,0,F,J)};4v=A(){o.r=0;o.g=0;o.b=0;o.a=0;u o.1S=L};D.2w.V("96",A(bt,1U,br,7B){M 2n,2A,1O,5L,6q,2J,2l,2D,1L,J,3U,i,6p,2z,3o,7r,3R,6n,2L,p,1z,1B,Y,1A,2o,2E,1R,9a,1a,3a,2R,1b,4h,1m,1H,2M,5i,2W,8i,8h,5V,F,3l,x,y,1h,4R,4P,H,1e,1I,3m,3r,3s,3k,3w,3z,5O;F=o.1d.F;J=o.1d.J;3o=o.T;9a=bt.29;8h=F*J;5V=8h<<2;Y=[];W(i=H=0;0<=5V?H<5V:H>5V;i=0<=5V?++H:--H){Y[i]=3o[i]}6q=0;5i=7B;7B-=1;9I(5i-->=0){3R=(1U+0.5)|0;B(3R===0){5I}B(3R>6A){3R=6A}2J=3R+3R+1;8i=F<<2;3l=F-1;3U=J-1;1a=3R+1;2W=1a*(1a+1)/2;2M=1y 4v();4h=da 0;1b=2M;W(i=1e=1;1<=2J?1e<2J:1e>2J;i=1<=2J?++1e:--1e){1b=1b.1S=1y 4v();B(i===1a){4h=1b}}1b.1S=2M;1m=L;1H=L;4P=1h=0;2L=64[3R];2R=63[3R];W(y=1I=0;0<=J?1I<J:1I>J;y=0<=J?++1I:--1I){2o=2l=2n=1R=1L=1O=0;2E=1a*(1A=Y[1h]);2D=1a*(1B=Y[1h+1]);2A=1a*(1z=Y[1h+2]);1R+=2W*1A;1L+=2W*1B;1O+=2W*1z;1b=2M;W(i=3m=0;0<=1a?3m<1a:3m>1a;i=0<=1a?++3m:--3m){1b.r=1A;1b.g=1B;1b.b=1z;1b=1b.1S}W(i=3r=1;1<=1a?3r<1a:3r>1a;i=1<=1a?++3r:--3r){p=1h+((3l<i?3l:i)<<2);1R+=(1b.r=(1A=Y[p]))*(3a=1a-i);1L+=(1b.g=(1B=Y[p+1]))*3a;1O+=(1b.b=(1z=Y[p+2]))*3a;2o+=1A;2l+=1B;2n+=1z;1b=1b.1S}1m=2M;1H=4h;W(x=3s=0;0<=F?3s<F:3s>F;x=0<=F?++3s:--3s){Y[1h]=(1R*2L)>>2R;Y[1h+1]=(1L*2L)>>2R;Y[1h+2]=(1O*2L)>>2R;1R-=2E;1L-=2D;1O-=2A;2E-=1m.r;2D-=1m.g;2A-=1m.b;p=(4P+((p=x+1a)<3l?p:3l))<<2;2o+=(1m.r=Y[p]);2l+=(1m.g=Y[p+1]);2n+=(1m.b=Y[p+2]);1R+=2o;1L+=2l;1O+=2n;1m=1m.1S;2E+=(1A=1H.r);2D+=(1B=1H.g);2A+=(1z=1H.b);2o-=1A;2l-=1B;2n-=1z;1H=1H.1S;1h+=4}4P+=F}W(x=3k=0;0<=F?3k<F:3k>F;x=0<=F?++3k:--3k){2l=2n=2o=1L=1O=1R=0;1h=x<<2;2E=1a*(1A=Y[1h]);2D=1a*(1B=Y[1h+1]);2A=1a*(1z=Y[1h+2]);1R+=2W*1A;1L+=2W*1B;1O+=2W*1z;1b=2M;W(i=3w=0;0<=1a?3w<1a:3w>1a;i=0<=1a?++3w:--3w){1b.r=1A;1b.g=1B;1b.b=1z;1b=1b.1S}4R=F;W(i=3z=1;1<=1a?3z<1a:3z>1a;i=1<=1a?++3z:--3z){1h=(4R+x)<<2;1R+=(1b.r=(1A=Y[1h]))*(3a=1a-i);1L+=(1b.g=(1B=Y[1h+1]))*3a;1O+=(1b.b=(1z=Y[1h+2]))*3a;2o+=1A;2l+=1B;2n+=1z;1b=1b.1S;B(i<3U){4R+=F}}1h=x;1m=2M;1H=4h;W(y=5O=0;0<=J?5O<J:5O>J;y=0<=J?++5O:--5O){p=1h<<2;Y[p]=(1R*2L)>>2R;Y[p+1]=(1L*2L)>>2R;Y[p+2]=(1O*2L)>>2R;1R-=2E;1L-=2D;1O-=2A;2E-=1m.r;2D-=1m.g;2A-=1m.b;p=(x+(((p=y+1a)<3U?p:3U)*F))<<2;1R+=(2o+=(1m.r=Y[p]));1L+=(2l+=(1m.g=Y[p+1]));1O+=(2n+=(1m.b=Y[p+2]));1m=1m.1S;2E+=(1A=1H.r);2D+=(1B=1H.g);2A+=(1z=1H.b);2o-=1A;2l-=1B;2n-=1z;1H=1H.1S;1h+=F}}1U*=br;i=8h;9I(--i>-1){2z=i<<2;6n=(9a[2z+2]&fl)/E.0*7B;7r=6n|0;B(7r===6q){5L=6A.0*(6n-(6n|0));6p=6A-5L;3o[2z]=(3o[2z]*6p+Y[2z]*5L)>>8;3o[2z+1]=(3o[2z+1]*6p+Y[2z+1]*5L)>>8;3o[2z+2]=(3o[2z+2]*6p+Y[2z+2]*5L)>>8}S B(7r===6q+1){3o[2z]=Y[2z];3o[2z+1]=Y[2z+1];3o[2z+2]=Y[2z+2]}}6q++}u o});D.R.V("fo",A(G){M 4c,2s;4c={3t:{x:o.1d.F/2,y:o.1d.J/2},2H:45,aa:6a,7v:3,7t:1.5,5i:3};G=1v.7N(4c,G);G.2H*=O.aB/47;2s=9o(o.1d.F,o.1d.J,G.3t.x,G.3t.y,G.2H,G.aa,31);u o.5a("96",[2s,G.7v,G.7t,G.5i])});u D.R.V("fv",A(G){M 4c,2s,6v,6t;4c={1s:50,3t:{x:o.1d.F/2,y:o.1d.J/2},7v:3,7t:1.5,5i:3,1U:L};G=1v.7N(4c,G);B(!G.1U){G.1U=o.1d.F<o.1d.J?o.1d.J:o.1d.F}6v=(G.1U/2)-G.1s;6t=G.1U/2;2s=9p(o.1d.F,o.1d.J,G.3t.x,G.3t.y,6v,6t);u o.5a("96",[2s,G.7v,G.7t,G.5i])})})();D.R.V("fw",A(){u o.3I("ac fy",[0,0,0,-1,1,0,0,0,0])});D.R.V("fz",A(){u o.3I("ac fA",[-1,-1,-1,-1,8,-1,-1,-1,-1])});D.R.V("fB",A(){u o.3I("fC",[-2,-1,0,-1,1,1,0,1,2])});D.R.V("9N",A(Q){M 6J,6K;6J=6A/Q;6K=E/(Q-1);u o.2m("9N",A(C){C.r=O.2P(O.2P(C.r/6J)*6K);C.g=O.2P(O.2P(C.g/6J)*6K);C.b=O.2P(O.2P(C.b/6J)*6K);u C})});D.R.V("fG",A(1V){B(1V==L){1V=31}o.4C();o.2u(5);o.8n(3);o.4a(1j);o.3x({3d:8,41:2,4U:4});o.2v(0.87);B(1V){u o.1V("40%",30)}});D.R.V("fI",A(1V){B(1V==L){1V=31}o.3A(15);o.33(15);o.2e(\'3f\',[0,0],[6a,0],[fJ,E],[E,E]);o.3D(-20);o.2v(1.8);B(1V){o.1V("50%",60)}u o.3A(5)});D.R.V("fK",A(7Q){B(7Q==L){7Q=2r}o.3Y(20);o.2e(\'3f\',[5,0],[fM,cd],[9T,fP],[fQ,E]);o.6w(15);o.1V("45%",20);B(7Q){o.4C();o.2u(4)}u o});D.R.V("fR",A(){o.2u(1j);o.3A(15);o.33(10);o.9N(80);o.8l(30);u o.4C()});D.R.V("fS",A(){o.33(3.5);o.3D(-5);o.3Y(50);o.4a(60);o.4e("#cL",10);o.3x({3d:8,41:8});o.2u(5);o.2v(1.2);u o.1V("55%",25)});D.R.V("fV",A(){o.33(5);o.4e("#cL",4);o.4a(20);o.3x({41:8,3d:3});o.2e(\'b\',[0,0],[1j,cd],[47,47],[E,E]);o.2u(15);o.3Y(75);u o.2v(1.6)});D.R.V("fW",A(){o.2e(\'3f\',[0,0],[1j,50],[bW,6a],[E,E]);o.3Y(-30);o.3D(-30);o.4e(\'#fY\',30);o.2u(-5);u o.2v(1.4)});D.R.V("fZ",A(){o.3A(5);o.33(8);o.2u(4);o.4e(\'#g0\',30);o.3Y(50);u o.2v(1.3)});D.R.V("g1",A(){o.2v(1.5);o.8l(25);o.3D(-60);o.2u(5);o.8n(5);u o.1V("50%",30)});D.R.V("g2",A(){o.3D(-35);o.2e(\'b\',[20,0],[90,7y],[g5,bV],[E,be]);o.2e(\'r\',[0,0],[bV,90],[g8,7y],[E,E]);o.2e(\'g\',[10,0],[g9,ga],[gb,1j],[E,gc]);o.2e(\'3f\',[0,0],[7y,1j],[1g,bW],[E,E]);u o.6w(20)});D.R.V("gd",A(){o.4C();o.4a(10);o.33(10);o.2u(15);u o.1V("60%",35)});D.R.V("ge",A(){o.3D(-20);o.3Y(-50);o.2v(1.1);o.4a(30);o.3x({3d:-10,41:5});o.2e(\'3f\',[0,0],[80,50],[1g,be],[E,E]);u o.1V("60%",30)});D.R.V("gf",A(1V){B(1V==L){1V=31}o.3A(10);o.2Z(A(){o.3q("5o");o.2q(80);o.4n();o.1C.2v(0.8);o.1C.2u(50);u o.1C.33(10)});o.2Z(A(){o.3q("aI");o.2q(80);u o.4B("#gg")});o.33(20);o.2v(0.8);B(1V){u o.1V("45%",20)}});D.R.V("gh",A(){o.2v(1.2);o.2Z(A(){o.3q("8v");o.2q(60);o.4n();o.1C.3x({3d:5});u o.1C.6f(15)});o.2Z(A(){o.3q("aG");o.2q(40);u o.4B("#gj")});o.2Z(A(){o.3q("5o");o.2q(35);o.4n();o.1C.3A(40);o.1C.3Y(40);o.1C.33(30);o.1C.2u(15);o.1C.2e(\'r\',[0,40],[1g,1g],[1g,1g],[E,a4]);o.1C.2e(\'g\',[0,40],[1g,1g],[1g,1g],[E,a4]);o.1C.2e(\'b\',[0,40],[1g,1g],[1g,1g],[E,a4]);u o.1C.6f(5)});o.2e(\'r\',[20,0],[1g,gl],[1g,1g],[7b,E]);o.2e(\'g\',[20,0],[1g,1g],[1g,1g],[7b,E]);o.2e(\'b\',[20,0],[1g,9n],[1g,1g],[7b,E]);u o.1V("45%",20)});D.R.V("gn",A(){o.3A(40);o.4e("#bk",10);o.2e(\'b\',[0,10],[1g,47],[9T,9T],[E,E]);o.2Z(A(){o.3q(\'8v\');o.2q(50);o.4n();o.1C.2v(0.7);u o.2Z(A(){o.3q(\'8X\');o.2q(60);u o.4B(\'#bk\')})});o.2Z(A(){o.3q(\'5o\');o.2q(60);o.4n();o.1C.3D(50);o.1C.8F(90);u o.1C.2u(10)});o.2v(1.4);o.3Y(-30);o.2Z(A(){o.2q(10);u o.4B(\'#gp\')});u o});D.R.V("gq",A(){o.3D(20);o.2v(1.4);o.4C();o.2u(5);o.4a(1j);o.3x({3d:8,41:2,4U:4});o.2v(0.8);o.2u(5);o.33(10);o.2Z(A(){o.3q(\'8v\');o.4n();o.2q(55);u o.1C.6f(10)});u o.1V("50%",30)});D.R.V("gr",A(){o.4C();o.2u(10);o.2v(0.9);o.2Z(A(){o.3q("5o");o.2q(40);o.4n();o.1C.33(15);o.1C.2u(15);u o.1C.3x({4U:10,3d:5})});o.4a(30);o.2e(\'3f\',[0,10],[7y,90],[47,6a],[7b,E]);o.3x({3d:5,4U:-2});u o.33(15)});D.R.V("gs",A(){o.6w(40);o.3D(-50);o.3x({3d:3});o.2Z(A(){o.3q("5o");o.2q(80);o.4n();o.1C.6w(5);o.1C.2u(50);o.1C.33(10);u o.1C.3x({41:5})});u o.3A(10)});D.2w.V("7f",A(3C){M 2H,I,1W,J,a7,F,x,y;2H=3C%4m;B(2H===0){u o.1d={F:o.I.F,J:o.I.J}}a7=O.aB/47;B(1r 2g!=="42"&&2g!==L){I=1y 3S()}S{I=2p.3K(\'I\');1v.5H(o.I,I)}B(2H===90||2H===-7K||2H===7K||2H===-90){F=o.I.J;J=o.I.F;x=F/2;y=J/2}S B(2H===47){F=o.I.F;J=o.I.J;x=F/2;y=J/2}S{F=O.7L(O.1T(o.51,2)+O.1T(o.5D,2));J=F;x=o.I.J/2;y=o.I.F/2}I.F=F;I.J=J;1W=I.3h(\'2d\');1W.bB();1W.gv(x,y);1W.7f(2H*a7);1W.5U(o.I,-o.I.F/2,-o.I.J/2,o.I.F,o.I.J);1W.gw();u o.73(I)});D.R.V("7f",A(){u o.5a("7f",5T.N.5f.1w(1l,0))});(A(){M 4v,64,63;64=[2S,2S,37,2S,3u,37,3v,2S,3X,3u,3y,37,3W,3v,3V,2S,4J,3X,4I,3u,4F,3y,4z,37,4x,3W,4m,3v,34,3V,4T,2S,5Z,4J,3Q,3X,5P,4I,5N,3u,34,4F,5K,3y,4O,4z,4L,37,5z,4x,5y,3W,5x,4m,5w,3v,5v,34,5u,3V,5t,4T,3P,2S,8u,5Z,8r,4J,8o,3Q,8a,3X,7Y,5P,7M,4I,4y,5N,7e,3u,5q,34,7a,4F,79,5K,4w,3y,3P,4O,8y,4z,8x,4L,8j,37,8b,5z,3Q,4x,7X,5y,7U,3W,7S,5x,7P,4m,4y,5w,5G,3v,7p,5v,7o,34,7d,5u,8B,3V,5Y,5t,4w,4T,89,3P,81,2S,cK,8u,cw,5Z,4L,8r,cq,4J,cp,8o,cj,3Q,cc,8a,ca,3X,bT,7Y,bM,5P,bK,7M,bF,4I,bE,4y,83,5N,5G,7e,84,3u,bA,5q,bz,34,by,7a,bw,4F,86,79,5Y,5K,bu,4w,bo,3y,bj,3P,ba,4O,b9,8y,b8,4z,b7,8x,b6,4L,b5,8j,b4,37,b3,8b,b2,5z,aR,3Q,aO,4x,aJ,7X,aH,5y,aF,7U,aC,3W,az,7S,aw,5x,av,7P,au,4m,ar,4y,83,5w,ao,5G,an,3v,84,7p,ak,5v,5q,7o,aj,34,ag,7d,ad,5u,9O,8B,86,3V,a9,5Y,d7,5t,cZ,4w,cY,4T,3y,89,cX,3P,cT,81,4O];63=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];4v=A(){o.r=0;o.g=0;o.b=0;o.a=0;u o.1S=L};D.2w.V("6f",A(1U){M 2n,2A,1O,2J,2l,2D,1L,J,3U,i,2L,p,1z,1B,Y,1A,2o,2E,1R,1a,3a,2R,1b,4h,1m,1H,2M,2W,8i,F,3l,x,y,1h,4R,4P,H,1e,1I,3m,3r,3s,3k,3w,3z;B(bQ(1U)||1U<1){u}1U|=0;Y=o.T;F=o.1d.F;J=o.1d.J;2J=1U+1U+1;8i=F<<2;3l=F-1;3U=J-1;1a=1U+1;2W=1a*(1a+1)/2;2M=1y 4v();1b=2M;W(i=H=1;1<=2J?H<2J:H>2J;i=1<=2J?++H:--H){1b=1b.1S=1y 4v();B(i===1a){4h=1b}}1b.1S=2M;1m=L;1H=L;4P=1h=0;2L=64[1U];2R=63[1U];W(y=1e=0;0<=J?1e<J:1e>J;y=0<=J?++1e:--1e){2o=2l=2n=1R=1L=1O=0;2E=1a*(1A=Y[1h]);2D=1a*(1B=Y[1h+1]);2A=1a*(1z=Y[1h+2]);1R+=2W*1A;1L+=2W*1B;1O+=2W*1z;1b=2M;W(i=1I=0;0<=1a?1I<1a:1I>1a;i=0<=1a?++1I:--1I){1b.r=1A;1b.g=1B;1b.b=1z;1b=1b.1S}W(i=3m=1;1<=1a?3m<1a:3m>1a;i=1<=1a?++3m:--3m){p=1h+((3l<i?3l:i)<<2);1R+=(1b.r=(1A=Y[p]))*(3a=1a-i);1L+=(1b.g=(1B=Y[p+1]))*3a;1O+=(1b.b=(1z=Y[p+2]))*3a;2o+=1A;2l+=1B;2n+=1z;1b=1b.1S}1m=2M;1H=4h;W(x=3r=0;0<=F?3r<F:3r>F;x=0<=F?++3r:--3r){Y[1h]=(1R*2L)>>2R;Y[1h+1]=(1L*2L)>>2R;Y[1h+2]=(1O*2L)>>2R;1R-=2E;1L-=2D;1O-=2A;2E-=1m.r;2D-=1m.g;2A-=1m.b;p=(4P+((p=x+1U+1)<3l?p:3l))<<2;2o+=(1m.r=Y[p]);2l+=(1m.g=Y[p+1]);2n+=(1m.b=Y[p+2]);1R+=2o;1L+=2l;1O+=2n;1m=1m.1S;2E+=(1A=1H.r);2D+=(1B=1H.g);2A+=(1z=1H.b);2o-=1A;2l-=1B;2n-=1z;1H=1H.1S;1h+=4}4P+=F}W(x=3s=0;0<=F?3s<F:3s>F;x=0<=F?++3s:--3s){2l=2n=2o=1L=1O=1R=0;1h=x<<2;2E=1a*(1A=Y[1h]);2D=1a*(1B=Y[1h+1]);2A=1a*(1z=Y[1h+2]);1R+=2W*1A;1L+=2W*1B;1O+=2W*1z;1b=2M;W(i=3k=0;0<=1a?3k<1a:3k>1a;i=0<=1a?++3k:--3k){1b.r=1A;1b.g=1B;1b.b=1z;1b=1b.1S}4R=F;W(i=3w=1;1<=1U?3w<=1U:3w>=1U;i=1<=1U?++3w:--3w){1h=(4R+x)<<2;1R+=(1b.r=(1A=Y[1h]))*(3a=1a-i);1L+=(1b.g=(1B=Y[1h+1]))*3a;1O+=(1b.b=(1z=Y[1h+2]))*3a;2o+=1A;2l+=1B;2n+=1z;1b=1b.1S;B(i<3U){4R+=F}}1h=x;1m=2M;1H=4h;W(y=3z=0;0<=J?3z<J:3z>J;y=0<=J?++3z:--3z){p=1h<<2;Y[p]=(1R*2L)>>2R;Y[p+1]=(1L*2L)>>2R;Y[p+2]=(1O*2L)>>2R;1R-=2E;1L-=2D;1O-=2A;2E-=1m.r;2D-=1m.g;2A-=1m.b;p=(x+(((p=y+1a)<3U?p:3U)*F))<<2;1R+=(2o+=(1m.r=Y[p]));1L+=(2l+=(1m.g=Y[p+1]));1O+=(2n+=(1m.b=Y[p+2]));1m=1m.1S;2E+=(1A=1H.r);2D+=(1B=1H.g);2A+=(1z=1H.b);2o-=1A;2l-=1B;2n-=1z;1H=1H.1S;1h+=F}}u o});u D.R.V("6f",A(1U){u o.5a("6f",[1U])})})();D.R.V("c3",A(Q){u o.2m("c3",A(C){M 6L;6L=(0.bp*C.r)+(0.bs*C.g)+(0.bv*C.b);B(6L<Q){C.r=0;C.g=0;C.b=0}S{C.r=E;C.g=E;C.b=E}u C})})}).1w(o);',62,1026,'||||||||||||||||||||||||this||||||return||||||function|if|rgba|Caman|255|width|opts|_i|canvas|height|_ref|null|var|prototype|Math|length|adjust|Filter|else|pixelData|loc|register|for|rgbaParent|pixels|rgbaLayer|||||||||||radiusPlus1|stack|max|dimensions|_j|image|128|yi|context|100|args|arguments|stackIn|_len|_results|amt|name|typeof|size|type|pixel|Util|call|corners|new|pb|pr|pg|filter|_this|result|options|src|stackOut|_k|start|img|g_sum|min|callback|b_sum|Renderer|end|r_sum|next|pow|radius|vignette|ctx|Convert|Log|coords|||||||endX||Pixel|data|layer|Calculate|currentJob||curves|val|exports|bezier|case|push|Blender|g_in_sum|process|b_in_sum|r_in_sum|document|opacity|false|gradient|key|contrast|gamma|Plugin|debug|imageData|idx|b_out_sum|newDims|obj|g_out_sum|r_out_sum|controlPoints|cornerRadius|angle|kernel|div|divisor|mul_sum|stackStart|IO|NodeJS|floor|Event|shg_sum|512|bnum|builder|throw|sumFactor|id|parentData|newLayer||true|Store|exposure|312|||456|target|Layer|rbs|initObj|color|red|bias|rgb|Type|getContext|strength|string|_o|widthMinus1|_l|055|imagePixels|ret|setBlendingMode|_m|_n|center|328|335|_p|channels|271|_q|brightness|levels|degrees|saturation|caman|hex|prev|clampRGB|processKernel|cps|createElement|Module|newLoc|to|execute|265|428|iradius|Canvas|_ref1|heightMinus1|292|388|405|vibrance|cnv||blue|undefined|chans|object||ele|180|getImageData|parseInt|sepia|plugin|defaults|ratio|colorize|maxDist|radialDist|stackEnd|get|devicePixelRatio|add|processNext|360|copyParent|_ref2|res|value|apply|rand|Blocks|pointsPerSegment|BlurStack|278|420|354|496|mul|fillColor|greyscale|abs|avg|298|ctrl2|ctrl1|364|454|Analyze|475|from|window|259|yw|search|yp|renderer|273|green|Image|imageHeight|hsv|trigger|break||originalWidth|distance|modPixelData|CamanParser||layerData|proxyUrl|lowBound|highBound|processPlugin|imageWidth|values|substr|addColorStop|slice|originalPixelData|in|steps|func|lang|bottom|left|events|multiply|items|320|clamp|lerp|282|302|323|347|374|404|437|p0|p1|_error|originalHeight|builderIndex|leftCoord|341|copyAttributes|continue|centerX|284|blend|centerY|345|_r|383|level|file|chan|Array|drawImage|wh4|__slice|last|287|482||switch|round|shg_table|mul_table|toString|top|CamanJS|right|1379310345|200|Requires|getAttribute|nodeFileReady|child|stackBlur|blockFinished|parent|Invalid|dim|finishInit|attr|event|lookupValue|pop|iblend|currentIndex|allowRevert|__indexOf|radius2|url|radius1|sharpen|require|http|cropCoordinates|256|Fiber|copy|pixelStack|prop|dataArray|err|imageLoaded|renderQueue|numOfAreas|numOfValues|luminance|getFloat|currentLayer|algo|toLowerCase|y2|x2|y1|blockN|x1|adjustSize|preScaledWidth|unparsedInstructions|preScaledHeight|imgs||numPixels|scaledCanvas|replaceCanvas|__hasProp||fac1|fac2|fac3|291|305|235|parentNode|307|337|rotate|pointsPerStep|percent|pos|isURLRemote|sub|matches|dist|processFn|318|329|source|index|rightCoord|radiusFactor|hexToRGB|startRadius|langToExt|putImageData|120|oldCanvas|sel|blurLevels|root|initializedPixelData|coord|disabled|hiDPIRatio|white|hueToRGB|overwrite|270|sqrt|373|extend|buf|367|grey|resized|381|dest|396|Root|match|412|394|moduleKeywords||261|Logger|350|332|Blur|294||resize|269|417|446|horiz|vert|updateContext|includeAlpha|INST_REGEX|wh|w4|465|startX|clip|hiDPIReplacement|noise|441|blocksDone|setTimeout|468|number|remoteProxy|497|overlay|startY|485|507|imageUrl|initType|297|fac0|complete|whiteZ|hue|finished|listener|lastBlockN|blockPixelLength|eachBlock|finishedFn|job|plugins|pixelAtLocation|canvasQueue|crop|locationXY|layerStack|setContext|coordinatesToLocation|console|except|normal|blendingMode|uniqid||stats||black|toBase64||compoundBlur|included|bind|info|radiusPixels|ctor|LoadOverlay|_type|_fn|xyz|method|1284185493|2068965517|787037037|3333333333|008856451679|getAttrId|108|getLinearGradientMap|getRadialGradientMap|readyState|whiteY|whiteX|crossOrigin|4166666667|0031308|version|__bind|vignetteFilters|req|04045|on|error|replaceChild|m1|m0|count|missingValues|while|imageAdjustments|of|waitForImageLoaded|needsHiDPISwap|posterize|299|naturalWidth|blenders|catch|try|190|nodeName|instFunc|inst|DOMUpdated|LayerFinished|LayerDequeue|Revert|Kernel|Single|backingStoreRatio|215|_ref3|endY|to_radians|render|289|focusWidth|dataStr|Edge|304|renderBlock|renderKernel|310|filterFunc|Block|315|326|blockNum|totalBlocks|338|344|yield|domainRegex|357|corsEnabled|chunk|363|370|377|use|node|385|delete|PI|392|newCanvas|hiDPIDisabled|400|addition|408|softLight|416|remoteCheck|rgbToHSV|setInitObject|extended|424|binary|given|433|addEventListener|initialized|DOM|remote|hsvToRGB|renderStart|proxy|hiDPICapable|invert|rgbToXYZ|442|451|460|470|480|491|501|257|262|isRemote|Object|swapped|230|RegExp|setup|parseArguments|domIsLoaded|268|ea1c5d|scaled|executeLayer|pushContext|274|2126|reverse|increaseFactor|7152|radiusData|281|0722|301|popContext|309|316|324|save|nodeSave|browserSave|359|368|png|cropped|1000|toImage|378|fillRect|389|fillStyle|applyCurrentLayer|has|isNaN|hermite|item|399|applyToParent|144|140|rectangularVignette|instanceof|sin|cos|reloadCanvasData|mirrored|threshold|put|px|assignId|hasId|style|xyzToLab|411||422|150|randomRange|readFromHttp|mode|https|autoload|435|proxyParam|locationToCoordinates|anonymous|047|DEBUG|447|461|onload|date|release|883|_super|489|initCanvas|Height|log|parser|isImageLoaded|Uint8Array|Width|initImage|116|500|me|parse|getPixelRelative|505|e87b22|__extends|initNode|hidpi|nowLoc|URL|setAttribute|loaded|263|types|processStart|processComplete|267|275|280|renderFinished|blockStarted|originalVisiblePixels|or|shift|loadOverlay|executePlugin|285|executeFilter|hiDPIAdjustments|void|ready|extends|nodeValue|2013|camanProxyUrl|Version|Released|Sharpen|Motion|motionBlur|Gaussian|gaussianBlur|Radial|Heavy|heavyRadialBlur|Box|boxBlur|missing|split|analyze|869|534|272|168|314|349|189|769|607|readystatechange|01|lighten|exclusion|difference|screen|flush|blocksFinished|Rendering|Could|not|endPixel|startPixel|End|Start|Executing|run|find|default|initialization|cpus|os|toHex|toKey|putPixel|getPixel|putPixelRelative|warn|attributes|overlayImage|Initializing|createImageData|layerID|readFile|toDataURL|writing|Finished|toBuffer|writeFile|output|querySelector|Creating|isFile|createLinearGradient|statSync|href|location|stream|octet|replace|caman_proxy|createRadialGradient|proxies|js|javascript|pl|perl|py|python|rb|ruby|useProxy|set|defineProperty|encodeURIComponent|aliasProperty|images|aliasFunction|loading|Cannot|configured|without|delegate|includes|fibers|load|Attempting|__super__|constructor|domain|credentials|listen|labToRGB|rgbToLab|labToXYZ|0570|hasOwnProperty|2040|0557|0415|8758|9689|4986|5372|2406|indexOf|xyzToRGB|9505|1192|0193|1805|3576|4124|Fetching|setEncoding|0xff|hslToRGB||tiltShift|Buffer|rgbToHSL|charAt||keys|Remote|radialBlur|edgeEnhance|detected|Enhance|edgeDetect|Detect|emboss|Emboss|using|114|587|vintage|toFixed|lomo|155|clarity|random|130|naturalHeight|Function|220|250|sinCity|sunrise|DOMContentLoaded|querySelectorAll|crossProcess|orangePeel|calculateLevels|ff9000|love|c42007|grungy|jarques|resetOriginalPixelData|HiDPI|186|scale|webkitBackingStorePixelRatio|138|115|105|148|248|pinhole|oldBoot|glowingSun|f49600|hazyDays|mozBackingStorePixelRatio|6899ba|msBackingStorePixelRatio|158|oBackingStorePixelRatio|herMajesty|backingStorePixelRatio|e5f0ff|nostalgia|hemingway|concentrate|reset|revert|translate|restore|darken'.split('|'),0,{}))
|
|
|
includes/pickers/caman/dist/caman.js
DELETED
|
@@ -1,2578 +0,0 @@
|
|
| 1 |
-
// Generated by CoffeeScript 1.6.3
|
| 2 |
-
(function() {
|
| 3 |
-
var $, Analyze, Blender, Calculate, Caman, CamanParser, Canvas, Convert, Event, Fiber, Filter, IO, Image, Layer, Log, Module, Pixel, Plugin, Renderer, Root, Store, Util, fs, http, moduleKeywords, slice,
|
| 4 |
-
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
| 5 |
-
__slice = [].slice,
|
| 6 |
-
__hasProp = {}.hasOwnProperty,
|
| 7 |
-
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
| 8 |
-
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
| 9 |
-
|
| 10 |
-
moduleKeywords = ['extended', 'included'];
|
| 11 |
-
|
| 12 |
-
Module = (function() {
|
| 13 |
-
function Module() {}
|
| 14 |
-
|
| 15 |
-
Module["extends"] = function(obj) {
|
| 16 |
-
var key, value, _ref;
|
| 17 |
-
for (key in obj) {
|
| 18 |
-
value = obj[key];
|
| 19 |
-
if (__indexOf.call(moduleKeywords, key) < 0) {
|
| 20 |
-
this[key] = value;
|
| 21 |
-
}
|
| 22 |
-
}
|
| 23 |
-
if ((_ref = obj.extended) != null) {
|
| 24 |
-
_ref.apply(this);
|
| 25 |
-
}
|
| 26 |
-
return this;
|
| 27 |
-
};
|
| 28 |
-
|
| 29 |
-
Module.includes = function(obj) {
|
| 30 |
-
var key, value, _ref;
|
| 31 |
-
for (key in obj) {
|
| 32 |
-
value = obj[key];
|
| 33 |
-
if (__indexOf.call(moduleKeywords, key) < 0) {
|
| 34 |
-
this.prototype[key] = value;
|
| 35 |
-
}
|
| 36 |
-
}
|
| 37 |
-
if ((_ref = obj.included) != null) {
|
| 38 |
-
_ref.apply(this);
|
| 39 |
-
}
|
| 40 |
-
return this;
|
| 41 |
-
};
|
| 42 |
-
|
| 43 |
-
Module.delegate = function() {
|
| 44 |
-
var args, source, target, _i, _len, _results;
|
| 45 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 46 |
-
target = args.pop();
|
| 47 |
-
_results = [];
|
| 48 |
-
for (_i = 0, _len = args.length; _i < _len; _i++) {
|
| 49 |
-
source = args[_i];
|
| 50 |
-
_results.push(this.prototype[source] = target.prototype[source]);
|
| 51 |
-
}
|
| 52 |
-
return _results;
|
| 53 |
-
};
|
| 54 |
-
|
| 55 |
-
Module.aliasFunction = function(to, from) {
|
| 56 |
-
var _this = this;
|
| 57 |
-
return this.prototype[to] = function() {
|
| 58 |
-
var args;
|
| 59 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 60 |
-
return _this.prototype[from].apply(_this, args);
|
| 61 |
-
};
|
| 62 |
-
};
|
| 63 |
-
|
| 64 |
-
Module.aliasProperty = function(to, from) {
|
| 65 |
-
return Object.defineProperty(this.prototype, to, {
|
| 66 |
-
get: function() {
|
| 67 |
-
return this[from];
|
| 68 |
-
},
|
| 69 |
-
set: function(val) {
|
| 70 |
-
return this[from] = val;
|
| 71 |
-
}
|
| 72 |
-
});
|
| 73 |
-
};
|
| 74 |
-
|
| 75 |
-
Module.included = function(func) {
|
| 76 |
-
return func.call(this, this.prototype);
|
| 77 |
-
};
|
| 78 |
-
|
| 79 |
-
return Module;
|
| 80 |
-
|
| 81 |
-
})();
|
| 82 |
-
|
| 83 |
-
slice = Array.prototype.slice;
|
| 84 |
-
|
| 85 |
-
$ = function(sel, root) {
|
| 86 |
-
if (root == null) {
|
| 87 |
-
root = document;
|
| 88 |
-
}
|
| 89 |
-
if (typeof sel === "object" || (typeof exports !== "undefined" && exports !== null)) {
|
| 90 |
-
return sel;
|
| 91 |
-
}
|
| 92 |
-
return root.querySelector(sel);
|
| 93 |
-
};
|
| 94 |
-
|
| 95 |
-
Util = (function() {
|
| 96 |
-
function Util() {}
|
| 97 |
-
|
| 98 |
-
Util.uniqid = (function() {
|
| 99 |
-
var id;
|
| 100 |
-
id = 0;
|
| 101 |
-
return {
|
| 102 |
-
get: function() {
|
| 103 |
-
return id++;
|
| 104 |
-
}
|
| 105 |
-
};
|
| 106 |
-
})();
|
| 107 |
-
|
| 108 |
-
Util.extend = function() {
|
| 109 |
-
var copy, dest, obj, prop, src, _i, _len;
|
| 110 |
-
obj = arguments[0], src = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
| 111 |
-
dest = obj;
|
| 112 |
-
for (_i = 0, _len = src.length; _i < _len; _i++) {
|
| 113 |
-
copy = src[_i];
|
| 114 |
-
for (prop in copy) {
|
| 115 |
-
if (!__hasProp.call(copy, prop)) continue;
|
| 116 |
-
dest[prop] = copy[prop];
|
| 117 |
-
}
|
| 118 |
-
}
|
| 119 |
-
return dest;
|
| 120 |
-
};
|
| 121 |
-
|
| 122 |
-
Util.clampRGB = function(val) {
|
| 123 |
-
if (val < 0) {
|
| 124 |
-
return 0;
|
| 125 |
-
}
|
| 126 |
-
if (val > 255) {
|
| 127 |
-
return 255;
|
| 128 |
-
}
|
| 129 |
-
return val;
|
| 130 |
-
};
|
| 131 |
-
|
| 132 |
-
Util.copyAttributes = function(from, to, opts) {
|
| 133 |
-
var attr, _i, _len, _ref, _ref1, _results;
|
| 134 |
-
if (opts == null) {
|
| 135 |
-
opts = {};
|
| 136 |
-
}
|
| 137 |
-
_ref = from.attributes;
|
| 138 |
-
_results = [];
|
| 139 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 140 |
-
attr = _ref[_i];
|
| 141 |
-
if ((opts.except != null) && (_ref1 = attr.nodeName, __indexOf.call(opts.except, _ref1) >= 0)) {
|
| 142 |
-
continue;
|
| 143 |
-
}
|
| 144 |
-
_results.push(to.setAttribute(attr.nodeName, attr.nodeValue));
|
| 145 |
-
}
|
| 146 |
-
return _results;
|
| 147 |
-
};
|
| 148 |
-
|
| 149 |
-
Util.dataArray = function(length) {
|
| 150 |
-
if (length == null) {
|
| 151 |
-
length = 0;
|
| 152 |
-
}
|
| 153 |
-
if (Caman.NodeJS || (window.Uint8Array != null)) {
|
| 154 |
-
return new Uint8Array(length);
|
| 155 |
-
}
|
| 156 |
-
return new Array(length);
|
| 157 |
-
};
|
| 158 |
-
|
| 159 |
-
return Util;
|
| 160 |
-
|
| 161 |
-
})();
|
| 162 |
-
|
| 163 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 164 |
-
Root = exports;
|
| 165 |
-
Canvas = require('canvas');
|
| 166 |
-
Image = Canvas.Image;
|
| 167 |
-
Fiber = require('fibers');
|
| 168 |
-
fs = require('fs');
|
| 169 |
-
http = require('http');
|
| 170 |
-
} else {
|
| 171 |
-
Root = window;
|
| 172 |
-
}
|
| 173 |
-
|
| 174 |
-
Caman = (function(_super) {
|
| 175 |
-
__extends(Caman, _super);
|
| 176 |
-
|
| 177 |
-
Caman.version = {
|
| 178 |
-
release: "4.1.2",
|
| 179 |
-
date: "7/27/2013"
|
| 180 |
-
};
|
| 181 |
-
|
| 182 |
-
Caman.DEBUG = false;
|
| 183 |
-
|
| 184 |
-
Caman.allowRevert = true;
|
| 185 |
-
|
| 186 |
-
Caman.crossOrigin = "anonymous";
|
| 187 |
-
|
| 188 |
-
Caman.remoteProxy = "";
|
| 189 |
-
|
| 190 |
-
Caman.proxyParam = "camanProxyUrl";
|
| 191 |
-
|
| 192 |
-
Caman.NodeJS = typeof exports !== "undefined" && exports !== null;
|
| 193 |
-
|
| 194 |
-
Caman.autoload = !Caman.NodeJS;
|
| 195 |
-
|
| 196 |
-
Caman.toString = function() {
|
| 197 |
-
return "Version " + Caman.version.release + ", Released " + Caman.version.date;
|
| 198 |
-
};
|
| 199 |
-
|
| 200 |
-
Caman.getAttrId = function(canvas) {
|
| 201 |
-
if (Caman.NodeJS) {
|
| 202 |
-
return true;
|
| 203 |
-
}
|
| 204 |
-
if (typeof canvas === "string") {
|
| 205 |
-
canvas = $(canvas);
|
| 206 |
-
}
|
| 207 |
-
if (!((canvas != null) && (canvas.getAttribute != null))) {
|
| 208 |
-
return null;
|
| 209 |
-
}
|
| 210 |
-
return canvas.getAttribute('data-caman-id');
|
| 211 |
-
};
|
| 212 |
-
|
| 213 |
-
function Caman() {
|
| 214 |
-
this.nodeFileReady = __bind(this.nodeFileReady, this);
|
| 215 |
-
var args, callback, id,
|
| 216 |
-
_this = this;
|
| 217 |
-
if (arguments.length === 0) {
|
| 218 |
-
throw "Invalid arguments";
|
| 219 |
-
}
|
| 220 |
-
if (this instanceof Caman) {
|
| 221 |
-
this.finishInit = this.finishInit.bind(this);
|
| 222 |
-
this.imageLoaded = this.imageLoaded.bind(this);
|
| 223 |
-
args = arguments[0];
|
| 224 |
-
if (!Caman.NodeJS) {
|
| 225 |
-
id = parseInt(Caman.getAttrId(args[0]), 10);
|
| 226 |
-
callback = typeof args[1] === "function" ? args[1] : typeof args[2] === "function" ? args[2] : function() {};
|
| 227 |
-
if (!isNaN(id) && Store.has(id)) {
|
| 228 |
-
return Store.execute(id, callback);
|
| 229 |
-
}
|
| 230 |
-
}
|
| 231 |
-
this.id = Util.uniqid.get();
|
| 232 |
-
this.initializedPixelData = this.originalPixelData = null;
|
| 233 |
-
this.cropCoordinates = {
|
| 234 |
-
x: 0,
|
| 235 |
-
y: 0
|
| 236 |
-
};
|
| 237 |
-
this.cropped = false;
|
| 238 |
-
this.resized = false;
|
| 239 |
-
this.pixelStack = [];
|
| 240 |
-
this.layerStack = [];
|
| 241 |
-
this.canvasQueue = [];
|
| 242 |
-
this.currentLayer = null;
|
| 243 |
-
this.scaled = false;
|
| 244 |
-
this.analyze = new Analyze(this);
|
| 245 |
-
this.renderer = new Renderer(this);
|
| 246 |
-
this.domIsLoaded(function() {
|
| 247 |
-
_this.parseArguments(args);
|
| 248 |
-
return _this.setup();
|
| 249 |
-
});
|
| 250 |
-
return this;
|
| 251 |
-
} else {
|
| 252 |
-
return new Caman(arguments);
|
| 253 |
-
}
|
| 254 |
-
}
|
| 255 |
-
|
| 256 |
-
Caman.prototype.domIsLoaded = function(cb) {
|
| 257 |
-
var listener,
|
| 258 |
-
_this = this;
|
| 259 |
-
if (Caman.NodeJS) {
|
| 260 |
-
return setTimeout(function() {
|
| 261 |
-
return cb.call(_this);
|
| 262 |
-
}, 0);
|
| 263 |
-
} else {
|
| 264 |
-
if (document.readyState === "complete") {
|
| 265 |
-
Log.debug("DOM initialized");
|
| 266 |
-
return setTimeout(function() {
|
| 267 |
-
return cb.call(_this);
|
| 268 |
-
}, 0);
|
| 269 |
-
} else {
|
| 270 |
-
listener = function() {
|
| 271 |
-
if (document.readyState === "complete") {
|
| 272 |
-
Log.debug("DOM initialized");
|
| 273 |
-
return cb.call(_this);
|
| 274 |
-
}
|
| 275 |
-
};
|
| 276 |
-
return document.addEventListener("readystatechange", listener, false);
|
| 277 |
-
}
|
| 278 |
-
}
|
| 279 |
-
};
|
| 280 |
-
|
| 281 |
-
Caman.prototype.parseArguments = function(args) {
|
| 282 |
-
var key, val, _ref, _results;
|
| 283 |
-
if (args.length === 0) {
|
| 284 |
-
throw "Invalid arguments given";
|
| 285 |
-
}
|
| 286 |
-
this.initObj = null;
|
| 287 |
-
this.initType = null;
|
| 288 |
-
this.imageUrl = null;
|
| 289 |
-
this.callback = function() {};
|
| 290 |
-
this.setInitObject(args[0]);
|
| 291 |
-
if (args.length === 1) {
|
| 292 |
-
return;
|
| 293 |
-
}
|
| 294 |
-
switch (typeof args[1]) {
|
| 295 |
-
case "string":
|
| 296 |
-
this.imageUrl = args[1];
|
| 297 |
-
break;
|
| 298 |
-
case "function":
|
| 299 |
-
this.callback = args[1];
|
| 300 |
-
}
|
| 301 |
-
if (args.length === 2) {
|
| 302 |
-
return;
|
| 303 |
-
}
|
| 304 |
-
this.callback = args[2];
|
| 305 |
-
if (args.length === 4) {
|
| 306 |
-
_ref = args[4];
|
| 307 |
-
_results = [];
|
| 308 |
-
for (key in _ref) {
|
| 309 |
-
if (!__hasProp.call(_ref, key)) continue;
|
| 310 |
-
val = _ref[key];
|
| 311 |
-
_results.push(this.options[key] = val);
|
| 312 |
-
}
|
| 313 |
-
return _results;
|
| 314 |
-
}
|
| 315 |
-
};
|
| 316 |
-
|
| 317 |
-
Caman.prototype.setInitObject = function(obj) {
|
| 318 |
-
if (Caman.NodeJS) {
|
| 319 |
-
this.initObj = obj;
|
| 320 |
-
this.initType = 'node';
|
| 321 |
-
return;
|
| 322 |
-
}
|
| 323 |
-
if (typeof obj === "object") {
|
| 324 |
-
this.initObj = obj;
|
| 325 |
-
} else {
|
| 326 |
-
this.initObj = $(obj);
|
| 327 |
-
}
|
| 328 |
-
if (this.initObj == null) {
|
| 329 |
-
throw "Could not find image or canvas for initialization.";
|
| 330 |
-
}
|
| 331 |
-
return this.initType = this.initObj.nodeName.toLowerCase();
|
| 332 |
-
};
|
| 333 |
-
|
| 334 |
-
Caman.prototype.setup = function() {
|
| 335 |
-
switch (this.initType) {
|
| 336 |
-
case "node":
|
| 337 |
-
return this.initNode();
|
| 338 |
-
case "img":
|
| 339 |
-
return this.initImage();
|
| 340 |
-
case "canvas":
|
| 341 |
-
return this.initCanvas();
|
| 342 |
-
}
|
| 343 |
-
};
|
| 344 |
-
|
| 345 |
-
Caman.prototype.initNode = function() {
|
| 346 |
-
Log.debug("Initializing for NodeJS");
|
| 347 |
-
if (typeof this.initObj === "string" && this.initObj.match(/^https?:\/\//)) {
|
| 348 |
-
return this.readFromHttp(this.initObj, this.nodeFileReady);
|
| 349 |
-
} else if (typeof this.initObj === "string") {
|
| 350 |
-
return fs.readFile(this.initObj, this.nodeFileReady);
|
| 351 |
-
} else {
|
| 352 |
-
return this.nodeFileReady(null, this.initObj);
|
| 353 |
-
}
|
| 354 |
-
};
|
| 355 |
-
|
| 356 |
-
Caman.prototype.readFromHttp = function(url, callback) {
|
| 357 |
-
var req;
|
| 358 |
-
Log.debug("Fetching image from " + url);
|
| 359 |
-
req = http.get(url, function(res) {
|
| 360 |
-
var buf;
|
| 361 |
-
buf = '';
|
| 362 |
-
res.setEncoding('binary');
|
| 363 |
-
res.on('data', function(chunk) {
|
| 364 |
-
return buf += chunk;
|
| 365 |
-
});
|
| 366 |
-
return res.on('end', function() {
|
| 367 |
-
return callback(null, new Buffer(buf, 'binary'));
|
| 368 |
-
});
|
| 369 |
-
});
|
| 370 |
-
return req.on('error', callback);
|
| 371 |
-
};
|
| 372 |
-
|
| 373 |
-
Caman.prototype.nodeFileReady = function(err, data) {
|
| 374 |
-
if (err) {
|
| 375 |
-
throw err;
|
| 376 |
-
}
|
| 377 |
-
this.image = new Image();
|
| 378 |
-
this.image.src = data;
|
| 379 |
-
Log.debug("Image loaded. Width = " + (this.imageWidth()) + ", Height = " + (this.imageHeight()));
|
| 380 |
-
this.canvas = new Canvas(this.imageWidth(), this.imageHeight());
|
| 381 |
-
return this.finishInit();
|
| 382 |
-
};
|
| 383 |
-
|
| 384 |
-
Caman.prototype.initImage = function() {
|
| 385 |
-
this.image = this.initObj;
|
| 386 |
-
this.canvas = document.createElement('canvas');
|
| 387 |
-
this.context = this.canvas.getContext('2d');
|
| 388 |
-
Util.copyAttributes(this.image, this.canvas, {
|
| 389 |
-
except: ['src']
|
| 390 |
-
});
|
| 391 |
-
if (this.image.parentNode != null) {
|
| 392 |
-
this.image.parentNode.replaceChild(this.canvas, this.image);
|
| 393 |
-
}
|
| 394 |
-
this.imageAdjustments();
|
| 395 |
-
return this.waitForImageLoaded();
|
| 396 |
-
};
|
| 397 |
-
|
| 398 |
-
Caman.prototype.initCanvas = function() {
|
| 399 |
-
this.canvas = this.initObj;
|
| 400 |
-
this.context = this.canvas.getContext('2d');
|
| 401 |
-
if (this.imageUrl != null) {
|
| 402 |
-
this.image = document.createElement('img');
|
| 403 |
-
this.image.src = this.imageUrl;
|
| 404 |
-
this.imageAdjustments();
|
| 405 |
-
return this.waitForImageLoaded();
|
| 406 |
-
} else {
|
| 407 |
-
return this.finishInit();
|
| 408 |
-
}
|
| 409 |
-
};
|
| 410 |
-
|
| 411 |
-
Caman.prototype.imageAdjustments = function() {
|
| 412 |
-
if (this.needsHiDPISwap()) {
|
| 413 |
-
Log.debug(this.image.src, "->", this.hiDPIReplacement());
|
| 414 |
-
this.swapped = true;
|
| 415 |
-
this.image.src = this.hiDPIReplacement();
|
| 416 |
-
}
|
| 417 |
-
if (IO.isRemote(this.image)) {
|
| 418 |
-
this.image.src = IO.proxyUrl(this.image.src);
|
| 419 |
-
return Log.debug("Remote image detected, using URL = " + this.image.src);
|
| 420 |
-
}
|
| 421 |
-
};
|
| 422 |
-
|
| 423 |
-
Caman.prototype.waitForImageLoaded = function() {
|
| 424 |
-
if (this.isImageLoaded()) {
|
| 425 |
-
return this.imageLoaded();
|
| 426 |
-
} else {
|
| 427 |
-
return this.image.onload = this.imageLoaded;
|
| 428 |
-
}
|
| 429 |
-
};
|
| 430 |
-
|
| 431 |
-
Caman.prototype.isImageLoaded = function() {
|
| 432 |
-
if (!this.image.complete) {
|
| 433 |
-
return false;
|
| 434 |
-
}
|
| 435 |
-
if ((this.image.naturalWidth != null) && this.image.naturalWidth === 0) {
|
| 436 |
-
return false;
|
| 437 |
-
}
|
| 438 |
-
return true;
|
| 439 |
-
};
|
| 440 |
-
|
| 441 |
-
Caman.prototype.imageWidth = function() {
|
| 442 |
-
return this.image.width || this.image.naturalWidth;
|
| 443 |
-
};
|
| 444 |
-
|
| 445 |
-
Caman.prototype.imageHeight = function() {
|
| 446 |
-
return this.image.height || this.image.naturalHeight;
|
| 447 |
-
};
|
| 448 |
-
|
| 449 |
-
Caman.prototype.imageLoaded = function() {
|
| 450 |
-
Log.debug("Image loaded. Width = " + (this.imageWidth()) + ", Height = " + (this.imageHeight()));
|
| 451 |
-
if (this.swapped) {
|
| 452 |
-
this.canvas.width = this.imageWidth() / this.hiDPIRatio();
|
| 453 |
-
this.canvas.height = this.imageHeight() / this.hiDPIRatio();
|
| 454 |
-
} else {
|
| 455 |
-
this.canvas.width = this.imageWidth();
|
| 456 |
-
this.canvas.height = this.imageHeight();
|
| 457 |
-
}
|
| 458 |
-
return this.finishInit();
|
| 459 |
-
};
|
| 460 |
-
|
| 461 |
-
Caman.prototype.finishInit = function() {
|
| 462 |
-
var i, pixel, _i, _len, _ref;
|
| 463 |
-
if (this.context == null) {
|
| 464 |
-
this.context = this.canvas.getContext('2d');
|
| 465 |
-
}
|
| 466 |
-
this.originalWidth = this.preScaledWidth = this.width = this.canvas.width;
|
| 467 |
-
this.originalHeight = this.preScaledHeight = this.height = this.canvas.height;
|
| 468 |
-
this.hiDPIAdjustments();
|
| 469 |
-
if (!this.hasId()) {
|
| 470 |
-
this.assignId();
|
| 471 |
-
}
|
| 472 |
-
if (this.image != null) {
|
| 473 |
-
this.context.drawImage(this.image, 0, 0, this.imageWidth(), this.imageHeight(), 0, 0, this.preScaledWidth, this.preScaledHeight);
|
| 474 |
-
}
|
| 475 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 476 |
-
this.pixelData = this.imageData.data;
|
| 477 |
-
if (Caman.allowRevert) {
|
| 478 |
-
this.initializedPixelData = Util.dataArray(this.pixelData.length);
|
| 479 |
-
this.originalPixelData = Util.dataArray(this.pixelData.length);
|
| 480 |
-
_ref = this.pixelData;
|
| 481 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 482 |
-
pixel = _ref[i];
|
| 483 |
-
this.initializedPixelData[i] = pixel;
|
| 484 |
-
this.originalPixelData[i] = pixel;
|
| 485 |
-
}
|
| 486 |
-
}
|
| 487 |
-
this.dimensions = {
|
| 488 |
-
width: this.canvas.width,
|
| 489 |
-
height: this.canvas.height
|
| 490 |
-
};
|
| 491 |
-
if (!Caman.NodeJS) {
|
| 492 |
-
Store.put(this.id, this);
|
| 493 |
-
}
|
| 494 |
-
this.callback.call(this, this);
|
| 495 |
-
return this.callback = function() {};
|
| 496 |
-
};
|
| 497 |
-
|
| 498 |
-
Caman.prototype.reloadCanvasData = function() {
|
| 499 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 500 |
-
return this.pixelData = this.imageData.data;
|
| 501 |
-
};
|
| 502 |
-
|
| 503 |
-
Caman.prototype.resetOriginalPixelData = function() {
|
| 504 |
-
var i, pixel, _i, _len, _ref, _results;
|
| 505 |
-
if (!Caman.allowRevert) {
|
| 506 |
-
throw "Revert disabled";
|
| 507 |
-
}
|
| 508 |
-
this.originalPixelData = Util.dataArray(this.pixelData.length);
|
| 509 |
-
_ref = this.pixelData;
|
| 510 |
-
_results = [];
|
| 511 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 512 |
-
pixel = _ref[i];
|
| 513 |
-
_results.push(this.originalPixelData[i] = pixel);
|
| 514 |
-
}
|
| 515 |
-
return _results;
|
| 516 |
-
};
|
| 517 |
-
|
| 518 |
-
Caman.prototype.hasId = function() {
|
| 519 |
-
return Caman.getAttrId(this.canvas) != null;
|
| 520 |
-
};
|
| 521 |
-
|
| 522 |
-
Caman.prototype.assignId = function() {
|
| 523 |
-
if (Caman.NodeJS || this.canvas.getAttribute('data-caman-id')) {
|
| 524 |
-
return;
|
| 525 |
-
}
|
| 526 |
-
return this.canvas.setAttribute('data-caman-id', this.id);
|
| 527 |
-
};
|
| 528 |
-
|
| 529 |
-
Caman.prototype.hiDPIDisabled = function() {
|
| 530 |
-
return this.canvas.getAttribute('data-caman-hidpi-disabled') !== null;
|
| 531 |
-
};
|
| 532 |
-
|
| 533 |
-
Caman.prototype.hiDPIAdjustments = function() {
|
| 534 |
-
var ratio;
|
| 535 |
-
if (Caman.NodeJS || !this.needsHiDPISwap()) {
|
| 536 |
-
return;
|
| 537 |
-
}
|
| 538 |
-
ratio = this.hiDPIRatio();
|
| 539 |
-
if (ratio !== 1) {
|
| 540 |
-
Log.debug("HiDPI ratio = " + ratio);
|
| 541 |
-
this.scaled = true;
|
| 542 |
-
this.preScaledWidth = this.canvas.width;
|
| 543 |
-
this.preScaledHeight = this.canvas.height;
|
| 544 |
-
this.canvas.width = this.preScaledWidth * ratio;
|
| 545 |
-
this.canvas.height = this.preScaledHeight * ratio;
|
| 546 |
-
this.canvas.style.width = "" + this.preScaledWidth + "px";
|
| 547 |
-
this.canvas.style.height = "" + this.preScaledHeight + "px";
|
| 548 |
-
this.context.scale(ratio, ratio);
|
| 549 |
-
this.width = this.originalWidth = this.canvas.width;
|
| 550 |
-
return this.height = this.originalHeight = this.canvas.height;
|
| 551 |
-
}
|
| 552 |
-
};
|
| 553 |
-
|
| 554 |
-
Caman.prototype.hiDPIRatio = function() {
|
| 555 |
-
var backingStoreRatio, devicePixelRatio;
|
| 556 |
-
devicePixelRatio = window.devicePixelRatio || 1;
|
| 557 |
-
backingStoreRatio = this.context.webkitBackingStorePixelRatio || this.context.mozBackingStorePixelRatio || this.context.msBackingStorePixelRatio || this.context.oBackingStorePixelRatio || this.context.backingStorePixelRatio || 1;
|
| 558 |
-
return devicePixelRatio / backingStoreRatio;
|
| 559 |
-
};
|
| 560 |
-
|
| 561 |
-
Caman.prototype.hiDPICapable = function() {
|
| 562 |
-
return (window.devicePixelRatio != null) && window.devicePixelRatio !== 1;
|
| 563 |
-
};
|
| 564 |
-
|
| 565 |
-
Caman.prototype.needsHiDPISwap = function() {
|
| 566 |
-
if (this.hiDPIDisabled() || !this.hiDPICapable()) {
|
| 567 |
-
return false;
|
| 568 |
-
}
|
| 569 |
-
return this.hiDPIReplacement() !== null;
|
| 570 |
-
};
|
| 571 |
-
|
| 572 |
-
Caman.prototype.hiDPIReplacement = function() {
|
| 573 |
-
if (this.image == null) {
|
| 574 |
-
return null;
|
| 575 |
-
}
|
| 576 |
-
return this.image.getAttribute('data-caman-hidpi');
|
| 577 |
-
};
|
| 578 |
-
|
| 579 |
-
Caman.prototype.replaceCanvas = function(newCanvas) {
|
| 580 |
-
var oldCanvas;
|
| 581 |
-
oldCanvas = this.canvas;
|
| 582 |
-
this.canvas = newCanvas;
|
| 583 |
-
this.context = this.canvas.getContext('2d');
|
| 584 |
-
if (!Caman.NodeJS) {
|
| 585 |
-
oldCanvas.parentNode.replaceChild(this.canvas, oldCanvas);
|
| 586 |
-
}
|
| 587 |
-
this.width = this.canvas.width;
|
| 588 |
-
this.height = this.canvas.height;
|
| 589 |
-
this.reloadCanvasData();
|
| 590 |
-
return this.dimensions = {
|
| 591 |
-
width: this.canvas.width,
|
| 592 |
-
height: this.canvas.height
|
| 593 |
-
};
|
| 594 |
-
};
|
| 595 |
-
|
| 596 |
-
Caman.prototype.render = function(callback) {
|
| 597 |
-
var _this = this;
|
| 598 |
-
if (callback == null) {
|
| 599 |
-
callback = function() {};
|
| 600 |
-
}
|
| 601 |
-
Event.trigger(this, "renderStart");
|
| 602 |
-
return this.renderer.execute(function() {
|
| 603 |
-
_this.context.putImageData(_this.imageData, 0, 0);
|
| 604 |
-
return callback.call(_this);
|
| 605 |
-
});
|
| 606 |
-
};
|
| 607 |
-
|
| 608 |
-
Caman.prototype.revert = function(updateContext) {
|
| 609 |
-
var i, pixel, _i, _len, _ref;
|
| 610 |
-
if (updateContext == null) {
|
| 611 |
-
updateContext = true;
|
| 612 |
-
}
|
| 613 |
-
if (!Caman.allowRevert) {
|
| 614 |
-
throw "Revert disabled";
|
| 615 |
-
}
|
| 616 |
-
_ref = this.originalVisiblePixels();
|
| 617 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 618 |
-
pixel = _ref[i];
|
| 619 |
-
this.pixelData[i] = pixel;
|
| 620 |
-
}
|
| 621 |
-
if (updateContext) {
|
| 622 |
-
return this.context.putImageData(this.imageData, 0, 0);
|
| 623 |
-
}
|
| 624 |
-
};
|
| 625 |
-
|
| 626 |
-
Caman.prototype.reset = function() {
|
| 627 |
-
var canvas, ctx, i, imageData, pixel, pixelData, _i, _len, _ref;
|
| 628 |
-
canvas = document.createElement('canvas');
|
| 629 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 630 |
-
canvas.width = this.originalWidth;
|
| 631 |
-
canvas.height = this.originalHeight;
|
| 632 |
-
ctx = canvas.getContext('2d');
|
| 633 |
-
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
| 634 |
-
pixelData = imageData.data;
|
| 635 |
-
_ref = this.initializedPixelData;
|
| 636 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 637 |
-
pixel = _ref[i];
|
| 638 |
-
pixelData[i] = pixel;
|
| 639 |
-
}
|
| 640 |
-
ctx.putImageData(imageData, 0, 0);
|
| 641 |
-
this.cropCoordinates = {
|
| 642 |
-
x: 0,
|
| 643 |
-
y: 0
|
| 644 |
-
};
|
| 645 |
-
this.resized = false;
|
| 646 |
-
return this.replaceCanvas(canvas);
|
| 647 |
-
};
|
| 648 |
-
|
| 649 |
-
Caman.prototype.originalVisiblePixels = function() {
|
| 650 |
-
var canvas, coord, ctx, endX, endY, i, imageData, pixel, pixelData, pixels, scaledCanvas, startX, startY, width, _i, _j, _len, _ref, _ref1, _ref2, _ref3;
|
| 651 |
-
if (!Caman.allowRevert) {
|
| 652 |
-
throw "Revert disabled";
|
| 653 |
-
}
|
| 654 |
-
pixels = [];
|
| 655 |
-
startX = this.cropCoordinates.x;
|
| 656 |
-
endX = startX + this.width;
|
| 657 |
-
startY = this.cropCoordinates.y;
|
| 658 |
-
endY = startY + this.height;
|
| 659 |
-
if (this.resized) {
|
| 660 |
-
canvas = document.createElement('canvas');
|
| 661 |
-
canvas.width = this.originalWidth;
|
| 662 |
-
canvas.height = this.originalHeight;
|
| 663 |
-
ctx = canvas.getContext('2d');
|
| 664 |
-
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
| 665 |
-
pixelData = imageData.data;
|
| 666 |
-
_ref = this.originalPixelData;
|
| 667 |
-
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
|
| 668 |
-
pixel = _ref[i];
|
| 669 |
-
pixelData[i] = pixel;
|
| 670 |
-
}
|
| 671 |
-
ctx.putImageData(imageData, 0, 0);
|
| 672 |
-
scaledCanvas = document.createElement('canvas');
|
| 673 |
-
scaledCanvas.width = this.width;
|
| 674 |
-
scaledCanvas.height = this.height;
|
| 675 |
-
ctx = scaledCanvas.getContext('2d');
|
| 676 |
-
ctx.drawImage(canvas, 0, 0, this.originalWidth, this.originalHeight, 0, 0, this.width, this.height);
|
| 677 |
-
pixelData = ctx.getImageData(0, 0, this.width, this.height).data;
|
| 678 |
-
width = this.width;
|
| 679 |
-
} else {
|
| 680 |
-
pixelData = this.originalPixelData;
|
| 681 |
-
width = this.originalWidth;
|
| 682 |
-
}
|
| 683 |
-
for (i = _j = 0, _ref1 = pixelData.length; _j < _ref1; i = _j += 4) {
|
| 684 |
-
coord = Pixel.locationToCoordinates(i, width);
|
| 685 |
-
if (((startX <= (_ref2 = coord.x) && _ref2 < endX)) && ((startY <= (_ref3 = coord.y) && _ref3 < endY))) {
|
| 686 |
-
pixels.push(pixelData[i], pixelData[i + 1], pixelData[i + 2], pixelData[i + 3]);
|
| 687 |
-
}
|
| 688 |
-
}
|
| 689 |
-
return pixels;
|
| 690 |
-
};
|
| 691 |
-
|
| 692 |
-
Caman.prototype.process = function(name, processFn) {
|
| 693 |
-
this.renderer.add({
|
| 694 |
-
type: Filter.Type.Single,
|
| 695 |
-
name: name,
|
| 696 |
-
processFn: processFn
|
| 697 |
-
});
|
| 698 |
-
return this;
|
| 699 |
-
};
|
| 700 |
-
|
| 701 |
-
Caman.prototype.processKernel = function(name, adjust, divisor, bias) {
|
| 702 |
-
var i, _i, _ref;
|
| 703 |
-
if (divisor == null) {
|
| 704 |
-
divisor = null;
|
| 705 |
-
}
|
| 706 |
-
if (bias == null) {
|
| 707 |
-
bias = 0;
|
| 708 |
-
}
|
| 709 |
-
if (divisor == null) {
|
| 710 |
-
divisor = 0;
|
| 711 |
-
for (i = _i = 0, _ref = adjust.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 712 |
-
divisor += adjust[i];
|
| 713 |
-
}
|
| 714 |
-
}
|
| 715 |
-
this.renderer.add({
|
| 716 |
-
type: Filter.Type.Kernel,
|
| 717 |
-
name: name,
|
| 718 |
-
adjust: adjust,
|
| 719 |
-
divisor: divisor,
|
| 720 |
-
bias: bias
|
| 721 |
-
});
|
| 722 |
-
return this;
|
| 723 |
-
};
|
| 724 |
-
|
| 725 |
-
Caman.prototype.processPlugin = function(plugin, args) {
|
| 726 |
-
this.renderer.add({
|
| 727 |
-
type: Filter.Type.Plugin,
|
| 728 |
-
plugin: plugin,
|
| 729 |
-
args: args
|
| 730 |
-
});
|
| 731 |
-
return this;
|
| 732 |
-
};
|
| 733 |
-
|
| 734 |
-
Caman.prototype.newLayer = function(callback) {
|
| 735 |
-
var layer;
|
| 736 |
-
layer = new Layer(this);
|
| 737 |
-
this.canvasQueue.push(layer);
|
| 738 |
-
this.renderer.add({
|
| 739 |
-
type: Filter.Type.LayerDequeue
|
| 740 |
-
});
|
| 741 |
-
callback.call(layer);
|
| 742 |
-
this.renderer.add({
|
| 743 |
-
type: Filter.Type.LayerFinished
|
| 744 |
-
});
|
| 745 |
-
return this;
|
| 746 |
-
};
|
| 747 |
-
|
| 748 |
-
Caman.prototype.executeLayer = function(layer) {
|
| 749 |
-
return this.pushContext(layer);
|
| 750 |
-
};
|
| 751 |
-
|
| 752 |
-
Caman.prototype.pushContext = function(layer) {
|
| 753 |
-
this.layerStack.push(this.currentLayer);
|
| 754 |
-
this.pixelStack.push(this.pixelData);
|
| 755 |
-
this.currentLayer = layer;
|
| 756 |
-
return this.pixelData = layer.pixelData;
|
| 757 |
-
};
|
| 758 |
-
|
| 759 |
-
Caman.prototype.popContext = function() {
|
| 760 |
-
this.pixelData = this.pixelStack.pop();
|
| 761 |
-
return this.currentLayer = this.layerStack.pop();
|
| 762 |
-
};
|
| 763 |
-
|
| 764 |
-
Caman.prototype.applyCurrentLayer = function() {
|
| 765 |
-
return this.currentLayer.applyToParent();
|
| 766 |
-
};
|
| 767 |
-
|
| 768 |
-
return Caman;
|
| 769 |
-
|
| 770 |
-
})(Module);
|
| 771 |
-
|
| 772 |
-
Root.Caman = Caman;
|
| 773 |
-
|
| 774 |
-
Caman.Analyze = (function() {
|
| 775 |
-
function Analyze(c) {
|
| 776 |
-
this.c = c;
|
| 777 |
-
}
|
| 778 |
-
|
| 779 |
-
Analyze.prototype.calculateLevels = function() {
|
| 780 |
-
var i, levels, numPixels, _i, _j, _k, _ref;
|
| 781 |
-
levels = {
|
| 782 |
-
r: {},
|
| 783 |
-
g: {},
|
| 784 |
-
b: {}
|
| 785 |
-
};
|
| 786 |
-
for (i = _i = 0; _i <= 255; i = ++_i) {
|
| 787 |
-
levels.r[i] = 0;
|
| 788 |
-
levels.g[i] = 0;
|
| 789 |
-
levels.b[i] = 0;
|
| 790 |
-
}
|
| 791 |
-
for (i = _j = 0, _ref = this.c.pixelData.length; _j < _ref; i = _j += 4) {
|
| 792 |
-
levels.r[this.c.pixelData[i]]++;
|
| 793 |
-
levels.g[this.c.pixelData[i + 1]]++;
|
| 794 |
-
levels.b[this.c.pixelData[i + 2]]++;
|
| 795 |
-
}
|
| 796 |
-
numPixels = this.c.pixelData.length / 4;
|
| 797 |
-
for (i = _k = 0; _k <= 255; i = ++_k) {
|
| 798 |
-
levels.r[i] /= numPixels;
|
| 799 |
-
levels.g[i] /= numPixels;
|
| 800 |
-
levels.b[i] /= numPixels;
|
| 801 |
-
}
|
| 802 |
-
return levels;
|
| 803 |
-
};
|
| 804 |
-
|
| 805 |
-
return Analyze;
|
| 806 |
-
|
| 807 |
-
})();
|
| 808 |
-
|
| 809 |
-
Analyze = Caman.Analyze;
|
| 810 |
-
|
| 811 |
-
Caman.DOMUpdated = function() {
|
| 812 |
-
var img, imgs, parser, _i, _len, _results;
|
| 813 |
-
imgs = document.querySelectorAll("img[data-caman]");
|
| 814 |
-
if (!(imgs.length > 0)) {
|
| 815 |
-
return;
|
| 816 |
-
}
|
| 817 |
-
_results = [];
|
| 818 |
-
for (_i = 0, _len = imgs.length; _i < _len; _i++) {
|
| 819 |
-
img = imgs[_i];
|
| 820 |
-
_results.push(parser = new CamanParser(img, function() {
|
| 821 |
-
this.parse();
|
| 822 |
-
return this.execute();
|
| 823 |
-
}));
|
| 824 |
-
}
|
| 825 |
-
return _results;
|
| 826 |
-
};
|
| 827 |
-
|
| 828 |
-
if (Caman.autoload) {
|
| 829 |
-
(function() {
|
| 830 |
-
if (document.readyState === "complete") {
|
| 831 |
-
return Caman.DOMUpdated();
|
| 832 |
-
} else {
|
| 833 |
-
return document.addEventListener("DOMContentLoaded", Caman.DOMUpdated, false);
|
| 834 |
-
}
|
| 835 |
-
})();
|
| 836 |
-
}
|
| 837 |
-
|
| 838 |
-
CamanParser = (function() {
|
| 839 |
-
var INST_REGEX;
|
| 840 |
-
|
| 841 |
-
INST_REGEX = "(\\w+)\\((.*?)\\)";
|
| 842 |
-
|
| 843 |
-
function CamanParser(ele, ready) {
|
| 844 |
-
this.dataStr = ele.getAttribute('data-caman');
|
| 845 |
-
this.caman = Caman(ele, ready.bind(this));
|
| 846 |
-
}
|
| 847 |
-
|
| 848 |
-
CamanParser.prototype.parse = function() {
|
| 849 |
-
var args, e, filter, func, inst, instFunc, m, r, unparsedInstructions, _i, _len, _ref, _results;
|
| 850 |
-
this.ele = this.caman.canvas;
|
| 851 |
-
r = new RegExp(INST_REGEX, 'g');
|
| 852 |
-
unparsedInstructions = this.dataStr.match(r);
|
| 853 |
-
if (!(unparsedInstructions.length > 0)) {
|
| 854 |
-
return;
|
| 855 |
-
}
|
| 856 |
-
r = new RegExp(INST_REGEX);
|
| 857 |
-
_results = [];
|
| 858 |
-
for (_i = 0, _len = unparsedInstructions.length; _i < _len; _i++) {
|
| 859 |
-
inst = unparsedInstructions[_i];
|
| 860 |
-
_ref = inst.match(r), m = _ref[0], filter = _ref[1], args = _ref[2];
|
| 861 |
-
instFunc = new Function("return function() { this." + filter + "(" + args + "); };");
|
| 862 |
-
try {
|
| 863 |
-
func = instFunc();
|
| 864 |
-
_results.push(func.call(this.caman));
|
| 865 |
-
} catch (_error) {
|
| 866 |
-
e = _error;
|
| 867 |
-
_results.push(Log.debug(e));
|
| 868 |
-
}
|
| 869 |
-
}
|
| 870 |
-
return _results;
|
| 871 |
-
};
|
| 872 |
-
|
| 873 |
-
CamanParser.prototype.execute = function() {
|
| 874 |
-
var ele;
|
| 875 |
-
ele = this.ele;
|
| 876 |
-
return this.caman.render(function() {
|
| 877 |
-
return ele.parentNode.replaceChild(this.toImage(), ele);
|
| 878 |
-
});
|
| 879 |
-
};
|
| 880 |
-
|
| 881 |
-
return CamanParser;
|
| 882 |
-
|
| 883 |
-
})();
|
| 884 |
-
|
| 885 |
-
Caman.Blender = (function() {
|
| 886 |
-
function Blender() {}
|
| 887 |
-
|
| 888 |
-
Blender.blenders = {};
|
| 889 |
-
|
| 890 |
-
Blender.register = function(name, func) {
|
| 891 |
-
return this.blenders[name] = func;
|
| 892 |
-
};
|
| 893 |
-
|
| 894 |
-
Blender.execute = function(name, rgbaLayer, rgbaParent) {
|
| 895 |
-
return this.blenders[name](rgbaLayer, rgbaParent);
|
| 896 |
-
};
|
| 897 |
-
|
| 898 |
-
return Blender;
|
| 899 |
-
|
| 900 |
-
})();
|
| 901 |
-
|
| 902 |
-
Blender = Caman.Blender;
|
| 903 |
-
|
| 904 |
-
Caman.Calculate = (function() {
|
| 905 |
-
function Calculate() {}
|
| 906 |
-
|
| 907 |
-
Calculate.distance = function(x1, y1, x2, y2) {
|
| 908 |
-
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
|
| 909 |
-
};
|
| 910 |
-
|
| 911 |
-
Calculate.randomRange = function(min, max, getFloat) {
|
| 912 |
-
var rand;
|
| 913 |
-
if (getFloat == null) {
|
| 914 |
-
getFloat = false;
|
| 915 |
-
}
|
| 916 |
-
rand = min + (Math.random() * (max - min));
|
| 917 |
-
if (getFloat) {
|
| 918 |
-
return rand.toFixed(getFloat);
|
| 919 |
-
} else {
|
| 920 |
-
return Math.round(rand);
|
| 921 |
-
}
|
| 922 |
-
};
|
| 923 |
-
|
| 924 |
-
Calculate.luminance = function(rgba) {
|
| 925 |
-
return (0.299 * rgba.r) + (0.587 * rgba.g) + (0.114 * rgba.b);
|
| 926 |
-
};
|
| 927 |
-
|
| 928 |
-
Calculate.bezier = function(start, ctrl1, ctrl2, end, lowBound, highBound) {
|
| 929 |
-
var bezier, clamp, controlPoints, endX, i, j, lerp, next, prev, t, _i, _j, _ref;
|
| 930 |
-
if (lowBound == null) {
|
| 931 |
-
lowBound = 0;
|
| 932 |
-
}
|
| 933 |
-
if (highBound == null) {
|
| 934 |
-
highBound = 255;
|
| 935 |
-
}
|
| 936 |
-
if (start[0] instanceof Array) {
|
| 937 |
-
controlPoints = start;
|
| 938 |
-
lowBound = ctrl1;
|
| 939 |
-
highBound = ctrl2;
|
| 940 |
-
} else {
|
| 941 |
-
controlPoints = [start, ctrl1, ctrl2, end];
|
| 942 |
-
}
|
| 943 |
-
if (controlPoints.length < 2) {
|
| 944 |
-
throw "Invalid number of arguments to bezier";
|
| 945 |
-
}
|
| 946 |
-
bezier = {};
|
| 947 |
-
lerp = function(a, b, t) {
|
| 948 |
-
return a * (1 - t) + b * t;
|
| 949 |
-
};
|
| 950 |
-
clamp = function(a, min, max) {
|
| 951 |
-
return Math.min(Math.max(a, min), max);
|
| 952 |
-
};
|
| 953 |
-
for (i = _i = 0; _i < 1000; i = ++_i) {
|
| 954 |
-
t = i / 1000;
|
| 955 |
-
prev = controlPoints;
|
| 956 |
-
while (prev.length > 1) {
|
| 957 |
-
next = [];
|
| 958 |
-
for (j = _j = 0, _ref = prev.length - 2; 0 <= _ref ? _j <= _ref : _j >= _ref; j = 0 <= _ref ? ++_j : --_j) {
|
| 959 |
-
next.push([lerp(prev[j][0], prev[j + 1][0], t), lerp(prev[j][1], prev[j + 1][1], t)]);
|
| 960 |
-
}
|
| 961 |
-
prev = next;
|
| 962 |
-
}
|
| 963 |
-
bezier[Math.round(prev[0][0])] = Math.round(clamp(prev[0][1], lowBound, highBound));
|
| 964 |
-
}
|
| 965 |
-
endX = controlPoints[controlPoints.length - 1][0];
|
| 966 |
-
bezier = Caman.Calculate.missingValues(bezier, endX);
|
| 967 |
-
if (bezier[endX] == null) {
|
| 968 |
-
bezier[endX] = bezier[endX - 1];
|
| 969 |
-
}
|
| 970 |
-
return bezier;
|
| 971 |
-
};
|
| 972 |
-
|
| 973 |
-
Calculate.hermite = function(controlPoints, lowBound, highBound) {
|
| 974 |
-
var add, clamp, count, endX, fac0, fac1, fac2, fac3, i, j, lerp, m0, m1, mul, p, p0, p1, pointsPerSegment, pointsPerStep, pos, ret, sub, t, _i, _j, _ref,
|
| 975 |
-
_this = this;
|
| 976 |
-
if (controlPoints.length < 2) {
|
| 977 |
-
throw "Invalid number of arguments to hermite";
|
| 978 |
-
}
|
| 979 |
-
ret = {};
|
| 980 |
-
lerp = function(a, b, t) {
|
| 981 |
-
return a * (1 - t) + b * t;
|
| 982 |
-
};
|
| 983 |
-
add = function(a, b, c, d) {
|
| 984 |
-
return [a[0] + b[0] + c[0] + d[0], a[1] + b[1] + c[1] + d[1]];
|
| 985 |
-
};
|
| 986 |
-
mul = function(a, b) {
|
| 987 |
-
return [a[0] * b[0], a[1] * b[1]];
|
| 988 |
-
};
|
| 989 |
-
sub = function(a, b) {
|
| 990 |
-
return [a[0] - b[0], a[1] - b[1]];
|
| 991 |
-
};
|
| 992 |
-
clamp = function(a, min, max) {
|
| 993 |
-
return Math.min(Math.max(a, min), max);
|
| 994 |
-
};
|
| 995 |
-
count = 0;
|
| 996 |
-
for (i = _i = 0, _ref = controlPoints.length - 2; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 997 |
-
p0 = controlPoints[i];
|
| 998 |
-
p1 = controlPoints[i + 1];
|
| 999 |
-
pointsPerSegment = p1[0] - p0[0];
|
| 1000 |
-
pointsPerStep = 1 / pointsPerSegment;
|
| 1001 |
-
if (i === controlPoints.length - 2) {
|
| 1002 |
-
pointsPerStep = 1 / (pointsPerSegment - 1);
|
| 1003 |
-
}
|
| 1004 |
-
p = i > 0 ? controlPoints[i - 1] : p0;
|
| 1005 |
-
m0 = mul(sub(p1, p), [0.5, 0.5]);
|
| 1006 |
-
p = i < controlPoints.length - 2 ? controlPoints[i + 2] : p1;
|
| 1007 |
-
m1 = mul(sub(p, p0), [0.5, 0.5]);
|
| 1008 |
-
for (j = _j = 0; 0 <= pointsPerSegment ? _j <= pointsPerSegment : _j >= pointsPerSegment; j = 0 <= pointsPerSegment ? ++_j : --_j) {
|
| 1009 |
-
t = j * pointsPerStep;
|
| 1010 |
-
fac0 = 2.0 * t * t * t - 3.0 * t * t + 1.0;
|
| 1011 |
-
fac1 = t * t * t - 2.0 * t * t + t;
|
| 1012 |
-
fac2 = -2.0 * t * t * t + 3.0 * t * t;
|
| 1013 |
-
fac3 = t * t * t - t * t;
|
| 1014 |
-
pos = add(mul(p0, [fac0, fac0]), mul(m0, [fac1, fac1]), mul(p1, [fac2, fac2]), mul(m1, [fac3, fac3]));
|
| 1015 |
-
ret[Math.round(pos[0])] = Math.round(clamp(pos[1], lowBound, highBound));
|
| 1016 |
-
count += 1;
|
| 1017 |
-
}
|
| 1018 |
-
}
|
| 1019 |
-
endX = controlPoints[controlPoints.length - 1][0];
|
| 1020 |
-
ret = Caman.Calculate.missingValues(ret, endX);
|
| 1021 |
-
return ret;
|
| 1022 |
-
};
|
| 1023 |
-
|
| 1024 |
-
Calculate.missingValues = function(values, endX) {
|
| 1025 |
-
var i, j, leftCoord, ret, rightCoord, _i, _j;
|
| 1026 |
-
if (Object.keys(values).length < endX + 1) {
|
| 1027 |
-
ret = {};
|
| 1028 |
-
for (i = _i = 0; 0 <= endX ? _i <= endX : _i >= endX; i = 0 <= endX ? ++_i : --_i) {
|
| 1029 |
-
if (values[i] != null) {
|
| 1030 |
-
ret[i] = values[i];
|
| 1031 |
-
} else {
|
| 1032 |
-
leftCoord = [i - 1, ret[i - 1]];
|
| 1033 |
-
for (j = _j = i; i <= endX ? _j <= endX : _j >= endX; j = i <= endX ? ++_j : --_j) {
|
| 1034 |
-
if (values[j] != null) {
|
| 1035 |
-
rightCoord = [j, values[j]];
|
| 1036 |
-
break;
|
| 1037 |
-
}
|
| 1038 |
-
}
|
| 1039 |
-
ret[i] = leftCoord[1] + ((rightCoord[1] - leftCoord[1]) / (rightCoord[0] - leftCoord[0])) * (i - leftCoord[0]);
|
| 1040 |
-
}
|
| 1041 |
-
}
|
| 1042 |
-
return ret;
|
| 1043 |
-
}
|
| 1044 |
-
return values;
|
| 1045 |
-
};
|
| 1046 |
-
|
| 1047 |
-
return Calculate;
|
| 1048 |
-
|
| 1049 |
-
})();
|
| 1050 |
-
|
| 1051 |
-
Calculate = Caman.Calculate;
|
| 1052 |
-
|
| 1053 |
-
Caman.Convert = (function() {
|
| 1054 |
-
function Convert() {}
|
| 1055 |
-
|
| 1056 |
-
Convert.hexToRGB = function(hex) {
|
| 1057 |
-
var b, g, r;
|
| 1058 |
-
if (hex.charAt(0) === "#") {
|
| 1059 |
-
hex = hex.substr(1);
|
| 1060 |
-
}
|
| 1061 |
-
r = parseInt(hex.substr(0, 2), 16);
|
| 1062 |
-
g = parseInt(hex.substr(2, 2), 16);
|
| 1063 |
-
b = parseInt(hex.substr(4, 2), 16);
|
| 1064 |
-
return {
|
| 1065 |
-
r: r,
|
| 1066 |
-
g: g,
|
| 1067 |
-
b: b
|
| 1068 |
-
};
|
| 1069 |
-
};
|
| 1070 |
-
|
| 1071 |
-
Convert.rgbToHSL = function(r, g, b) {
|
| 1072 |
-
var d, h, l, max, min, s;
|
| 1073 |
-
if (typeof r === "object") {
|
| 1074 |
-
g = r.g;
|
| 1075 |
-
b = r.b;
|
| 1076 |
-
r = r.r;
|
| 1077 |
-
}
|
| 1078 |
-
r /= 255;
|
| 1079 |
-
g /= 255;
|
| 1080 |
-
b /= 255;
|
| 1081 |
-
max = Math.max(r, g, b);
|
| 1082 |
-
min = Math.min(r, g, b);
|
| 1083 |
-
l = (max + min) / 2;
|
| 1084 |
-
if (max === min) {
|
| 1085 |
-
h = s = 0;
|
| 1086 |
-
} else {
|
| 1087 |
-
d = max - min;
|
| 1088 |
-
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
| 1089 |
-
h = (function() {
|
| 1090 |
-
switch (max) {
|
| 1091 |
-
case r:
|
| 1092 |
-
return (g - b) / d + (g < b ? 6 : 0);
|
| 1093 |
-
case g:
|
| 1094 |
-
return (b - r) / d + 2;
|
| 1095 |
-
case b:
|
| 1096 |
-
return (r - g) / d + 4;
|
| 1097 |
-
}
|
| 1098 |
-
})();
|
| 1099 |
-
h /= 6;
|
| 1100 |
-
}
|
| 1101 |
-
return {
|
| 1102 |
-
h: h,
|
| 1103 |
-
s: s,
|
| 1104 |
-
l: l
|
| 1105 |
-
};
|
| 1106 |
-
};
|
| 1107 |
-
|
| 1108 |
-
Convert.hslToRGB = function(h, s, l) {
|
| 1109 |
-
var b, g, p, q, r;
|
| 1110 |
-
if (typeof h === "object") {
|
| 1111 |
-
s = h.s;
|
| 1112 |
-
l = h.l;
|
| 1113 |
-
h = h.h;
|
| 1114 |
-
}
|
| 1115 |
-
if (s === 0) {
|
| 1116 |
-
r = g = b = l;
|
| 1117 |
-
} else {
|
| 1118 |
-
q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
| 1119 |
-
p = 2 * l - q;
|
| 1120 |
-
r = this.hueToRGB(p, q, h + 1 / 3);
|
| 1121 |
-
g = this.hueToRGB(p, q, h);
|
| 1122 |
-
b = this.hueToRGB(p, q, h - 1 / 3);
|
| 1123 |
-
}
|
| 1124 |
-
return {
|
| 1125 |
-
r: r * 255,
|
| 1126 |
-
g: g * 255,
|
| 1127 |
-
b: b * 255
|
| 1128 |
-
};
|
| 1129 |
-
};
|
| 1130 |
-
|
| 1131 |
-
Convert.hueToRGB = function(p, q, t) {
|
| 1132 |
-
if (t < 0) {
|
| 1133 |
-
t += 1;
|
| 1134 |
-
}
|
| 1135 |
-
if (t > 1) {
|
| 1136 |
-
t -= 1;
|
| 1137 |
-
}
|
| 1138 |
-
if (t < 1 / 6) {
|
| 1139 |
-
return p + (q - p) * 6 * t;
|
| 1140 |
-
}
|
| 1141 |
-
if (t < 1 / 2) {
|
| 1142 |
-
return q;
|
| 1143 |
-
}
|
| 1144 |
-
if (t < 2 / 3) {
|
| 1145 |
-
return p + (q - p) * (2 / 3 - t) * 6;
|
| 1146 |
-
}
|
| 1147 |
-
return p;
|
| 1148 |
-
};
|
| 1149 |
-
|
| 1150 |
-
Convert.rgbToHSV = function(r, g, b) {
|
| 1151 |
-
var d, h, max, min, s, v;
|
| 1152 |
-
r /= 255;
|
| 1153 |
-
g /= 255;
|
| 1154 |
-
b /= 255;
|
| 1155 |
-
max = Math.max(r, g, b);
|
| 1156 |
-
min = Math.min(r, g, b);
|
| 1157 |
-
v = max;
|
| 1158 |
-
d = max - min;
|
| 1159 |
-
s = max === 0 ? 0 : d / max;
|
| 1160 |
-
if (max === min) {
|
| 1161 |
-
h = 0;
|
| 1162 |
-
} else {
|
| 1163 |
-
h = (function() {
|
| 1164 |
-
switch (max) {
|
| 1165 |
-
case r:
|
| 1166 |
-
return (g - b) / d + (g < b ? 6 : 0);
|
| 1167 |
-
case g:
|
| 1168 |
-
return (b - r) / d + 2;
|
| 1169 |
-
case b:
|
| 1170 |
-
return (r - g) / d + 4;
|
| 1171 |
-
}
|
| 1172 |
-
})();
|
| 1173 |
-
h /= 6;
|
| 1174 |
-
}
|
| 1175 |
-
return {
|
| 1176 |
-
h: h,
|
| 1177 |
-
s: s,
|
| 1178 |
-
v: v
|
| 1179 |
-
};
|
| 1180 |
-
};
|
| 1181 |
-
|
| 1182 |
-
Convert.hsvToRGB = function(h, s, v) {
|
| 1183 |
-
var b, f, g, i, p, q, r, t;
|
| 1184 |
-
i = Math.floor(h * 6);
|
| 1185 |
-
f = h * 6 - i;
|
| 1186 |
-
p = v * (1 - s);
|
| 1187 |
-
q = v * (1 - f * s);
|
| 1188 |
-
t = v * (1 - (1 - f) * s);
|
| 1189 |
-
switch (i % 6) {
|
| 1190 |
-
case 0:
|
| 1191 |
-
r = v;
|
| 1192 |
-
g = t;
|
| 1193 |
-
b = p;
|
| 1194 |
-
break;
|
| 1195 |
-
case 1:
|
| 1196 |
-
r = q;
|
| 1197 |
-
g = v;
|
| 1198 |
-
b = p;
|
| 1199 |
-
break;
|
| 1200 |
-
case 2:
|
| 1201 |
-
r = p;
|
| 1202 |
-
g = v;
|
| 1203 |
-
b = t;
|
| 1204 |
-
break;
|
| 1205 |
-
case 3:
|
| 1206 |
-
r = p;
|
| 1207 |
-
g = q;
|
| 1208 |
-
b = v;
|
| 1209 |
-
break;
|
| 1210 |
-
case 4:
|
| 1211 |
-
r = t;
|
| 1212 |
-
g = p;
|
| 1213 |
-
b = v;
|
| 1214 |
-
break;
|
| 1215 |
-
case 5:
|
| 1216 |
-
r = v;
|
| 1217 |
-
g = p;
|
| 1218 |
-
b = q;
|
| 1219 |
-
}
|
| 1220 |
-
return {
|
| 1221 |
-
r: Math.floor(r * 255),
|
| 1222 |
-
g: Math.floor(g * 255),
|
| 1223 |
-
b: Math.floor(b * 255)
|
| 1224 |
-
};
|
| 1225 |
-
};
|
| 1226 |
-
|
| 1227 |
-
Convert.rgbToXYZ = function(r, g, b) {
|
| 1228 |
-
var x, y, z;
|
| 1229 |
-
r /= 255;
|
| 1230 |
-
g /= 255;
|
| 1231 |
-
b /= 255;
|
| 1232 |
-
if (r > 0.04045) {
|
| 1233 |
-
r = Math.pow((r + 0.055) / 1.055, 2.4);
|
| 1234 |
-
} else {
|
| 1235 |
-
r /= 12.92;
|
| 1236 |
-
}
|
| 1237 |
-
if (g > 0.04045) {
|
| 1238 |
-
g = Math.pow((g + 0.055) / 1.055, 2.4);
|
| 1239 |
-
} else {
|
| 1240 |
-
g /= 12.92;
|
| 1241 |
-
}
|
| 1242 |
-
if (b > 0.04045) {
|
| 1243 |
-
b = Math.pow((b + 0.055) / 1.055, 2.4);
|
| 1244 |
-
} else {
|
| 1245 |
-
b /= 12.92;
|
| 1246 |
-
}
|
| 1247 |
-
x = r * 0.4124 + g * 0.3576 + b * 0.1805;
|
| 1248 |
-
y = r * 0.2126 + g * 0.7152 + b * 0.0722;
|
| 1249 |
-
z = r * 0.0193 + g * 0.1192 + b * 0.9505;
|
| 1250 |
-
return {
|
| 1251 |
-
x: x * 100,
|
| 1252 |
-
y: y * 100,
|
| 1253 |
-
z: z * 100
|
| 1254 |
-
};
|
| 1255 |
-
};
|
| 1256 |
-
|
| 1257 |
-
Convert.xyzToRGB = function(x, y, z) {
|
| 1258 |
-
var b, g, r;
|
| 1259 |
-
x /= 100;
|
| 1260 |
-
y /= 100;
|
| 1261 |
-
z /= 100;
|
| 1262 |
-
r = (3.2406 * x) + (-1.5372 * y) + (-0.4986 * z);
|
| 1263 |
-
g = (-0.9689 * x) + (1.8758 * y) + (0.0415 * z);
|
| 1264 |
-
b = (0.0557 * x) + (-0.2040 * y) + (1.0570 * z);
|
| 1265 |
-
if (r > 0.0031308) {
|
| 1266 |
-
r = (1.055 * Math.pow(r, 0.4166666667)) - 0.055;
|
| 1267 |
-
} else {
|
| 1268 |
-
r *= 12.92;
|
| 1269 |
-
}
|
| 1270 |
-
if (g > 0.0031308) {
|
| 1271 |
-
g = (1.055 * Math.pow(g, 0.4166666667)) - 0.055;
|
| 1272 |
-
} else {
|
| 1273 |
-
g *= 12.92;
|
| 1274 |
-
}
|
| 1275 |
-
if (b > 0.0031308) {
|
| 1276 |
-
b = (1.055 * Math.pow(b, 0.4166666667)) - 0.055;
|
| 1277 |
-
} else {
|
| 1278 |
-
b *= 12.92;
|
| 1279 |
-
}
|
| 1280 |
-
return {
|
| 1281 |
-
r: r * 255,
|
| 1282 |
-
g: g * 255,
|
| 1283 |
-
b: b * 255
|
| 1284 |
-
};
|
| 1285 |
-
};
|
| 1286 |
-
|
| 1287 |
-
Convert.xyzToLab = function(x, y, z) {
|
| 1288 |
-
var a, b, l, whiteX, whiteY, whiteZ;
|
| 1289 |
-
if (typeof x === "object") {
|
| 1290 |
-
y = x.y;
|
| 1291 |
-
z = x.z;
|
| 1292 |
-
x = x.x;
|
| 1293 |
-
}
|
| 1294 |
-
whiteX = 95.047;
|
| 1295 |
-
whiteY = 100.0;
|
| 1296 |
-
whiteZ = 108.883;
|
| 1297 |
-
x /= whiteX;
|
| 1298 |
-
y /= whiteY;
|
| 1299 |
-
z /= whiteZ;
|
| 1300 |
-
if (x > 0.008856451679) {
|
| 1301 |
-
x = Math.pow(x, 0.3333333333);
|
| 1302 |
-
} else {
|
| 1303 |
-
x = (7.787037037 * x) + 0.1379310345;
|
| 1304 |
-
}
|
| 1305 |
-
if (y > 0.008856451679) {
|
| 1306 |
-
y = Math.pow(y, 0.3333333333);
|
| 1307 |
-
} else {
|
| 1308 |
-
y = (7.787037037 * y) + 0.1379310345;
|
| 1309 |
-
}
|
| 1310 |
-
if (z > 0.008856451679) {
|
| 1311 |
-
z = Math.pow(z, 0.3333333333);
|
| 1312 |
-
} else {
|
| 1313 |
-
z = (7.787037037 * z) + 0.1379310345;
|
| 1314 |
-
}
|
| 1315 |
-
l = 116 * y - 16;
|
| 1316 |
-
a = 500 * (x - y);
|
| 1317 |
-
b = 200 * (y - z);
|
| 1318 |
-
return {
|
| 1319 |
-
l: l,
|
| 1320 |
-
a: a,
|
| 1321 |
-
b: b
|
| 1322 |
-
};
|
| 1323 |
-
};
|
| 1324 |
-
|
| 1325 |
-
Convert.labToXYZ = function(l, a, b) {
|
| 1326 |
-
var x, y, z;
|
| 1327 |
-
if (typeof l === "object") {
|
| 1328 |
-
a = l.a;
|
| 1329 |
-
b = l.b;
|
| 1330 |
-
l = l.l;
|
| 1331 |
-
}
|
| 1332 |
-
y = (l + 16) / 116;
|
| 1333 |
-
x = y + (a / 500);
|
| 1334 |
-
z = y - (b / 200);
|
| 1335 |
-
if (x > 0.2068965517) {
|
| 1336 |
-
x = x * x * x;
|
| 1337 |
-
} else {
|
| 1338 |
-
x = 0.1284185493 * (x - 0.1379310345);
|
| 1339 |
-
}
|
| 1340 |
-
if (y > 0.2068965517) {
|
| 1341 |
-
y = y * y * y;
|
| 1342 |
-
} else {
|
| 1343 |
-
y = 0.1284185493 * (y - 0.1379310345);
|
| 1344 |
-
}
|
| 1345 |
-
if (z > 0.2068965517) {
|
| 1346 |
-
z = z * z * z;
|
| 1347 |
-
} else {
|
| 1348 |
-
z = 0.1284185493 * (z - 0.1379310345);
|
| 1349 |
-
}
|
| 1350 |
-
return {
|
| 1351 |
-
x: x * 95.047,
|
| 1352 |
-
y: y * 100.0,
|
| 1353 |
-
z: z * 108.883
|
| 1354 |
-
};
|
| 1355 |
-
};
|
| 1356 |
-
|
| 1357 |
-
Convert.rgbToLab = function(r, g, b) {
|
| 1358 |
-
var xyz;
|
| 1359 |
-
if (typeof r === "object") {
|
| 1360 |
-
g = r.g;
|
| 1361 |
-
b = r.b;
|
| 1362 |
-
r = r.r;
|
| 1363 |
-
}
|
| 1364 |
-
xyz = this.rgbToXYZ(r, g, b);
|
| 1365 |
-
return this.xyzToLab(xyz);
|
| 1366 |
-
};
|
| 1367 |
-
|
| 1368 |
-
Convert.labToRGB = function(l, a, b) {};
|
| 1369 |
-
|
| 1370 |
-
return Convert;
|
| 1371 |
-
|
| 1372 |
-
})();
|
| 1373 |
-
|
| 1374 |
-
Convert = Caman.Convert;
|
| 1375 |
-
|
| 1376 |
-
Caman.Event = (function() {
|
| 1377 |
-
function Event() {}
|
| 1378 |
-
|
| 1379 |
-
Event.events = {};
|
| 1380 |
-
|
| 1381 |
-
Event.types = ["processStart", "processComplete", "renderStart", "renderFinished", "blockStarted", "blockFinished"];
|
| 1382 |
-
|
| 1383 |
-
Event.trigger = function(target, type, data) {
|
| 1384 |
-
var event, _i, _len, _ref, _results;
|
| 1385 |
-
if (data == null) {
|
| 1386 |
-
data = null;
|
| 1387 |
-
}
|
| 1388 |
-
if (this.events[type] && this.events[type].length) {
|
| 1389 |
-
_ref = this.events[type];
|
| 1390 |
-
_results = [];
|
| 1391 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 1392 |
-
event = _ref[_i];
|
| 1393 |
-
if (event.target === null || target.id === event.target.id) {
|
| 1394 |
-
_results.push(event.fn.call(target, data));
|
| 1395 |
-
} else {
|
| 1396 |
-
_results.push(void 0);
|
| 1397 |
-
}
|
| 1398 |
-
}
|
| 1399 |
-
return _results;
|
| 1400 |
-
}
|
| 1401 |
-
};
|
| 1402 |
-
|
| 1403 |
-
Event.listen = function(target, type, fn) {
|
| 1404 |
-
var _fn, _type;
|
| 1405 |
-
if (typeof target === "string") {
|
| 1406 |
-
_type = target;
|
| 1407 |
-
_fn = type;
|
| 1408 |
-
target = null;
|
| 1409 |
-
type = _type;
|
| 1410 |
-
fn = _fn;
|
| 1411 |
-
}
|
| 1412 |
-
if (__indexOf.call(this.types, type) < 0) {
|
| 1413 |
-
return false;
|
| 1414 |
-
}
|
| 1415 |
-
if (!this.events[type]) {
|
| 1416 |
-
this.events[type] = [];
|
| 1417 |
-
}
|
| 1418 |
-
this.events[type].push({
|
| 1419 |
-
target: target,
|
| 1420 |
-
fn: fn
|
| 1421 |
-
});
|
| 1422 |
-
return true;
|
| 1423 |
-
};
|
| 1424 |
-
|
| 1425 |
-
return Event;
|
| 1426 |
-
|
| 1427 |
-
})();
|
| 1428 |
-
|
| 1429 |
-
Event = Caman.Event;
|
| 1430 |
-
|
| 1431 |
-
Caman.Filter = (function() {
|
| 1432 |
-
function Filter() {}
|
| 1433 |
-
|
| 1434 |
-
Filter.Type = {
|
| 1435 |
-
Single: 1,
|
| 1436 |
-
Kernel: 2,
|
| 1437 |
-
LayerDequeue: 3,
|
| 1438 |
-
LayerFinished: 4,
|
| 1439 |
-
LoadOverlay: 5,
|
| 1440 |
-
Plugin: 6
|
| 1441 |
-
};
|
| 1442 |
-
|
| 1443 |
-
Filter.register = function(name, filterFunc) {
|
| 1444 |
-
return Caman.prototype[name] = filterFunc;
|
| 1445 |
-
};
|
| 1446 |
-
|
| 1447 |
-
return Filter;
|
| 1448 |
-
|
| 1449 |
-
})();
|
| 1450 |
-
|
| 1451 |
-
Filter = Caman.Filter;
|
| 1452 |
-
|
| 1453 |
-
Caman.IO = (function() {
|
| 1454 |
-
function IO() {}
|
| 1455 |
-
|
| 1456 |
-
IO.domainRegex = /(?:(?:http|https):\/\/)((?:\w+)\.(?:(?:\w|\.)+))/;
|
| 1457 |
-
|
| 1458 |
-
IO.isRemote = function(img) {
|
| 1459 |
-
if (img == null) {
|
| 1460 |
-
return false;
|
| 1461 |
-
}
|
| 1462 |
-
if (this.corsEnabled(img)) {
|
| 1463 |
-
return false;
|
| 1464 |
-
}
|
| 1465 |
-
return this.isURLRemote(img.src);
|
| 1466 |
-
};
|
| 1467 |
-
|
| 1468 |
-
IO.corsEnabled = function(img) {
|
| 1469 |
-
var _ref;
|
| 1470 |
-
return (img.crossOrigin != null) && ((_ref = img.crossOrigin.toLowerCase()) === 'anonymous' || _ref === 'use-credentials');
|
| 1471 |
-
};
|
| 1472 |
-
|
| 1473 |
-
IO.isURLRemote = function(url) {
|
| 1474 |
-
var matches;
|
| 1475 |
-
matches = url.match(this.domainRegex);
|
| 1476 |
-
if (matches) {
|
| 1477 |
-
return matches[1] !== document.domain;
|
| 1478 |
-
} else {
|
| 1479 |
-
return false;
|
| 1480 |
-
}
|
| 1481 |
-
};
|
| 1482 |
-
|
| 1483 |
-
IO.remoteCheck = function(src) {
|
| 1484 |
-
if (this.isURLRemote(src)) {
|
| 1485 |
-
if (!Caman.remoteProxy.length) {
|
| 1486 |
-
Log.info("Attempting to load a remote image without a configured proxy. URL: " + src);
|
| 1487 |
-
} else {
|
| 1488 |
-
if (Caman.isURLRemote(Caman.remoteProxy)) {
|
| 1489 |
-
Log.info("Cannot use a remote proxy for loading images.");
|
| 1490 |
-
return;
|
| 1491 |
-
}
|
| 1492 |
-
return this.proxyUrl(src);
|
| 1493 |
-
}
|
| 1494 |
-
}
|
| 1495 |
-
};
|
| 1496 |
-
|
| 1497 |
-
IO.proxyUrl = function(src) {
|
| 1498 |
-
return "" + Caman.remoteProxy + "?" + Caman.proxyParam + "=" + (encodeURIComponent(src));
|
| 1499 |
-
};
|
| 1500 |
-
|
| 1501 |
-
IO.useProxy = function(lang) {
|
| 1502 |
-
var langToExt;
|
| 1503 |
-
langToExt = {
|
| 1504 |
-
ruby: 'rb',
|
| 1505 |
-
python: 'py',
|
| 1506 |
-
perl: 'pl',
|
| 1507 |
-
javascript: 'js'
|
| 1508 |
-
};
|
| 1509 |
-
lang = lang.toLowerCase();
|
| 1510 |
-
if (langToExt[lang] != null) {
|
| 1511 |
-
lang = langToExt[lang];
|
| 1512 |
-
}
|
| 1513 |
-
return "proxies/caman_proxy." + lang;
|
| 1514 |
-
};
|
| 1515 |
-
|
| 1516 |
-
return IO;
|
| 1517 |
-
|
| 1518 |
-
})();
|
| 1519 |
-
|
| 1520 |
-
Caman.prototype.save = function() {
|
| 1521 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 1522 |
-
return this.nodeSave.apply(this, arguments);
|
| 1523 |
-
} else {
|
| 1524 |
-
return this.browserSave.apply(this, arguments);
|
| 1525 |
-
}
|
| 1526 |
-
};
|
| 1527 |
-
|
| 1528 |
-
Caman.prototype.browserSave = function(type) {
|
| 1529 |
-
var image;
|
| 1530 |
-
if (type == null) {
|
| 1531 |
-
type = "png";
|
| 1532 |
-
}
|
| 1533 |
-
type = type.toLowerCase();
|
| 1534 |
-
image = this.toBase64(type).replace("image/" + type, "image/octet-stream");
|
| 1535 |
-
return document.location.href = image;
|
| 1536 |
-
};
|
| 1537 |
-
|
| 1538 |
-
Caman.prototype.nodeSave = function(file, overwrite, callback) {
|
| 1539 |
-
var e, stats;
|
| 1540 |
-
if (overwrite == null) {
|
| 1541 |
-
overwrite = true;
|
| 1542 |
-
}
|
| 1543 |
-
if (callback == null) {
|
| 1544 |
-
callback = null;
|
| 1545 |
-
}
|
| 1546 |
-
try {
|
| 1547 |
-
stats = fs.statSync(file);
|
| 1548 |
-
if (stats.isFile() && !overwrite) {
|
| 1549 |
-
return false;
|
| 1550 |
-
}
|
| 1551 |
-
} catch (_error) {
|
| 1552 |
-
e = _error;
|
| 1553 |
-
Log.debug("Creating output file " + file);
|
| 1554 |
-
}
|
| 1555 |
-
return fs.writeFile(file, this.canvas.toBuffer(), function(err) {
|
| 1556 |
-
Log.debug("Finished writing to " + file);
|
| 1557 |
-
if (callback) {
|
| 1558 |
-
return callback.call(this, err);
|
| 1559 |
-
}
|
| 1560 |
-
});
|
| 1561 |
-
};
|
| 1562 |
-
|
| 1563 |
-
Caman.prototype.toImage = function(type) {
|
| 1564 |
-
var img;
|
| 1565 |
-
img = new Image();
|
| 1566 |
-
img.src = this.toBase64(type);
|
| 1567 |
-
img.width = this.dimensions.width;
|
| 1568 |
-
img.height = this.dimensions.height;
|
| 1569 |
-
if (window.devicePixelRatio) {
|
| 1570 |
-
img.width /= window.devicePixelRatio;
|
| 1571 |
-
img.height /= window.devicePixelRatio;
|
| 1572 |
-
}
|
| 1573 |
-
return img;
|
| 1574 |
-
};
|
| 1575 |
-
|
| 1576 |
-
Caman.prototype.toBase64 = function(type) {
|
| 1577 |
-
if (type == null) {
|
| 1578 |
-
type = "png";
|
| 1579 |
-
}
|
| 1580 |
-
type = type.toLowerCase();
|
| 1581 |
-
return this.canvas.toDataURL("image/" + type);
|
| 1582 |
-
};
|
| 1583 |
-
|
| 1584 |
-
IO = Caman.IO;
|
| 1585 |
-
|
| 1586 |
-
Caman.Layer = (function() {
|
| 1587 |
-
function Layer(c) {
|
| 1588 |
-
this.c = c;
|
| 1589 |
-
this.filter = this.c;
|
| 1590 |
-
this.options = {
|
| 1591 |
-
blendingMode: 'normal',
|
| 1592 |
-
opacity: 1.0
|
| 1593 |
-
};
|
| 1594 |
-
this.layerID = Util.uniqid.get();
|
| 1595 |
-
this.canvas = typeof exports !== "undefined" && exports !== null ? new Canvas() : document.createElement('canvas');
|
| 1596 |
-
this.canvas.width = this.c.dimensions.width;
|
| 1597 |
-
this.canvas.height = this.c.dimensions.height;
|
| 1598 |
-
this.context = this.canvas.getContext('2d');
|
| 1599 |
-
this.context.createImageData(this.canvas.width, this.canvas.height);
|
| 1600 |
-
this.imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
| 1601 |
-
this.pixelData = this.imageData.data;
|
| 1602 |
-
}
|
| 1603 |
-
|
| 1604 |
-
Layer.prototype.newLayer = function(cb) {
|
| 1605 |
-
return this.c.newLayer.call(this.c, cb);
|
| 1606 |
-
};
|
| 1607 |
-
|
| 1608 |
-
Layer.prototype.setBlendingMode = function(mode) {
|
| 1609 |
-
this.options.blendingMode = mode;
|
| 1610 |
-
return this;
|
| 1611 |
-
};
|
| 1612 |
-
|
| 1613 |
-
Layer.prototype.opacity = function(opacity) {
|
| 1614 |
-
this.options.opacity = opacity / 100;
|
| 1615 |
-
return this;
|
| 1616 |
-
};
|
| 1617 |
-
|
| 1618 |
-
Layer.prototype.copyParent = function() {
|
| 1619 |
-
var i, parentData, _i, _ref;
|
| 1620 |
-
parentData = this.c.pixelData;
|
| 1621 |
-
for (i = _i = 0, _ref = this.c.pixelData.length; _i < _ref; i = _i += 4) {
|
| 1622 |
-
this.pixelData[i] = parentData[i];
|
| 1623 |
-
this.pixelData[i + 1] = parentData[i + 1];
|
| 1624 |
-
this.pixelData[i + 2] = parentData[i + 2];
|
| 1625 |
-
this.pixelData[i + 3] = parentData[i + 3];
|
| 1626 |
-
}
|
| 1627 |
-
return this;
|
| 1628 |
-
};
|
| 1629 |
-
|
| 1630 |
-
Layer.prototype.fillColor = function() {
|
| 1631 |
-
return this.c.fillColor.apply(this.c, arguments);
|
| 1632 |
-
};
|
| 1633 |
-
|
| 1634 |
-
Layer.prototype.overlayImage = function(image) {
|
| 1635 |
-
if (typeof image === "object") {
|
| 1636 |
-
image = image.src;
|
| 1637 |
-
} else if (typeof image === "string" && image[0] === "#") {
|
| 1638 |
-
image = $(image).src;
|
| 1639 |
-
}
|
| 1640 |
-
if (!image) {
|
| 1641 |
-
return this;
|
| 1642 |
-
}
|
| 1643 |
-
this.c.renderer.renderQueue.push({
|
| 1644 |
-
type: Filter.Type.LoadOverlay,
|
| 1645 |
-
src: image,
|
| 1646 |
-
layer: this
|
| 1647 |
-
});
|
| 1648 |
-
return this;
|
| 1649 |
-
};
|
| 1650 |
-
|
| 1651 |
-
Layer.prototype.applyToParent = function() {
|
| 1652 |
-
var i, layerData, parentData, result, rgbaLayer, rgbaParent, _i, _ref, _results;
|
| 1653 |
-
parentData = this.c.pixelStack[this.c.pixelStack.length - 1];
|
| 1654 |
-
layerData = this.c.pixelData;
|
| 1655 |
-
_results = [];
|
| 1656 |
-
for (i = _i = 0, _ref = layerData.length; _i < _ref; i = _i += 4) {
|
| 1657 |
-
rgbaParent = {
|
| 1658 |
-
r: parentData[i],
|
| 1659 |
-
g: parentData[i + 1],
|
| 1660 |
-
b: parentData[i + 2],
|
| 1661 |
-
a: parentData[i + 3]
|
| 1662 |
-
};
|
| 1663 |
-
rgbaLayer = {
|
| 1664 |
-
r: layerData[i],
|
| 1665 |
-
g: layerData[i + 1],
|
| 1666 |
-
b: layerData[i + 2],
|
| 1667 |
-
a: layerData[i + 3]
|
| 1668 |
-
};
|
| 1669 |
-
result = Blender.execute(this.options.blendingMode, rgbaLayer, rgbaParent);
|
| 1670 |
-
result.r = Util.clampRGB(result.r);
|
| 1671 |
-
result.g = Util.clampRGB(result.g);
|
| 1672 |
-
result.b = Util.clampRGB(result.b);
|
| 1673 |
-
if (result.a == null) {
|
| 1674 |
-
result.a = rgbaLayer.a;
|
| 1675 |
-
}
|
| 1676 |
-
parentData[i] = rgbaParent.r - ((rgbaParent.r - result.r) * (this.options.opacity * (result.a / 255)));
|
| 1677 |
-
parentData[i + 1] = rgbaParent.g - ((rgbaParent.g - result.g) * (this.options.opacity * (result.a / 255)));
|
| 1678 |
-
_results.push(parentData[i + 2] = rgbaParent.b - ((rgbaParent.b - result.b) * (this.options.opacity * (result.a / 255))));
|
| 1679 |
-
}
|
| 1680 |
-
return _results;
|
| 1681 |
-
};
|
| 1682 |
-
|
| 1683 |
-
return Layer;
|
| 1684 |
-
|
| 1685 |
-
})();
|
| 1686 |
-
|
| 1687 |
-
Layer = Caman.Layer;
|
| 1688 |
-
|
| 1689 |
-
Caman.Logger = (function() {
|
| 1690 |
-
function Logger() {
|
| 1691 |
-
var name, _i, _len, _ref;
|
| 1692 |
-
_ref = ['log', 'info', 'warn', 'error'];
|
| 1693 |
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| 1694 |
-
name = _ref[_i];
|
| 1695 |
-
this[name] = (function(name) {
|
| 1696 |
-
return function() {
|
| 1697 |
-
var args, e;
|
| 1698 |
-
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
| 1699 |
-
if (!Caman.DEBUG) {
|
| 1700 |
-
return;
|
| 1701 |
-
}
|
| 1702 |
-
try {
|
| 1703 |
-
return console[name].apply(console, args);
|
| 1704 |
-
} catch (_error) {
|
| 1705 |
-
e = _error;
|
| 1706 |
-
return console[name](args);
|
| 1707 |
-
}
|
| 1708 |
-
};
|
| 1709 |
-
})(name);
|
| 1710 |
-
}
|
| 1711 |
-
this.debug = this.log;
|
| 1712 |
-
}
|
| 1713 |
-
|
| 1714 |
-
return Logger;
|
| 1715 |
-
|
| 1716 |
-
})();
|
| 1717 |
-
|
| 1718 |
-
Log = new Caman.Logger();
|
| 1719 |
-
|
| 1720 |
-
Caman.Pixel = (function() {
|
| 1721 |
-
Pixel.coordinatesToLocation = function(x, y, width) {
|
| 1722 |
-
return (y * width + x) * 4;
|
| 1723 |
-
};
|
| 1724 |
-
|
| 1725 |
-
Pixel.locationToCoordinates = function(loc, width) {
|
| 1726 |
-
var x, y;
|
| 1727 |
-
y = Math.floor(loc / (width * 4));
|
| 1728 |
-
x = (loc % (width * 4)) / 4;
|
| 1729 |
-
return {
|
| 1730 |
-
x: x,
|
| 1731 |
-
y: y
|
| 1732 |
-
};
|
| 1733 |
-
};
|
| 1734 |
-
|
| 1735 |
-
function Pixel(r, g, b, a, c) {
|
| 1736 |
-
this.r = r != null ? r : 0;
|
| 1737 |
-
this.g = g != null ? g : 0;
|
| 1738 |
-
this.b = b != null ? b : 0;
|
| 1739 |
-
this.a = a != null ? a : 255;
|
| 1740 |
-
this.c = c != null ? c : null;
|
| 1741 |
-
this.loc = 0;
|
| 1742 |
-
}
|
| 1743 |
-
|
| 1744 |
-
Pixel.prototype.setContext = function(c) {
|
| 1745 |
-
return this.c = c;
|
| 1746 |
-
};
|
| 1747 |
-
|
| 1748 |
-
Pixel.prototype.locationXY = function() {
|
| 1749 |
-
var x, y;
|
| 1750 |
-
if (this.c == null) {
|
| 1751 |
-
throw "Requires a CamanJS context";
|
| 1752 |
-
}
|
| 1753 |
-
y = this.c.dimensions.height - Math.floor(this.loc / (this.c.dimensions.width * 4));
|
| 1754 |
-
x = (this.loc % (this.c.dimensions.width * 4)) / 4;
|
| 1755 |
-
return {
|
| 1756 |
-
x: x,
|
| 1757 |
-
y: y
|
| 1758 |
-
};
|
| 1759 |
-
};
|
| 1760 |
-
|
| 1761 |
-
Pixel.prototype.pixelAtLocation = function(loc) {
|
| 1762 |
-
if (this.c == null) {
|
| 1763 |
-
throw "Requires a CamanJS context";
|
| 1764 |
-
}
|
| 1765 |
-
return new Pixel(this.c.pixelData[loc], this.c.pixelData[loc + 1], this.c.pixelData[loc + 2], this.c.pixelData[loc + 3], this.c);
|
| 1766 |
-
};
|
| 1767 |
-
|
| 1768 |
-
Pixel.prototype.getPixelRelative = function(horiz, vert) {
|
| 1769 |
-
var newLoc;
|
| 1770 |
-
if (this.c == null) {
|
| 1771 |
-
throw "Requires a CamanJS context";
|
| 1772 |
-
}
|
| 1773 |
-
newLoc = this.loc + (this.c.dimensions.width * 4 * (vert * -1)) + (4 * horiz);
|
| 1774 |
-
if (newLoc > this.c.pixelData.length || newLoc < 0) {
|
| 1775 |
-
return new Pixel(0, 0, 0, 255, this.c);
|
| 1776 |
-
}
|
| 1777 |
-
return this.pixelAtLocation(newLoc);
|
| 1778 |
-
};
|
| 1779 |
-
|
| 1780 |
-
Pixel.prototype.putPixelRelative = function(horiz, vert, rgba) {
|
| 1781 |
-
var nowLoc;
|
| 1782 |
-
if (this.c == null) {
|
| 1783 |
-
throw "Requires a CamanJS context";
|
| 1784 |
-
}
|
| 1785 |
-
nowLoc = this.loc + (this.c.dimensions.width * 4 * (vert * -1)) + (4 * horiz);
|
| 1786 |
-
if (newLoc > this.c.pixelData.length || newLoc < 0) {
|
| 1787 |
-
return;
|
| 1788 |
-
}
|
| 1789 |
-
this.c.pixelData[newLoc] = rgba.r;
|
| 1790 |
-
this.c.pixelData[newLoc + 1] = rgba.g;
|
| 1791 |
-
this.c.pixelData[newLoc + 2] = rgba.b;
|
| 1792 |
-
this.c.pixelData[newLoc + 3] = rgba.a;
|
| 1793 |
-
return true;
|
| 1794 |
-
};
|
| 1795 |
-
|
| 1796 |
-
Pixel.prototype.getPixel = function(x, y) {
|
| 1797 |
-
var loc;
|
| 1798 |
-
if (this.c == null) {
|
| 1799 |
-
throw "Requires a CamanJS context";
|
| 1800 |
-
}
|
| 1801 |
-
loc = this.coordinatesToLocation(x, y, this.width);
|
| 1802 |
-
return this.pixelAtLocation(loc);
|
| 1803 |
-
};
|
| 1804 |
-
|
| 1805 |
-
Pixel.prototype.putPixel = function(x, y, rgba) {
|
| 1806 |
-
var loc;
|
| 1807 |
-
if (this.c == null) {
|
| 1808 |
-
throw "Requires a CamanJS context";
|
| 1809 |
-
}
|
| 1810 |
-
loc = this.coordinatesToLocation(x, y, this.width);
|
| 1811 |
-
this.c.pixelData[loc] = rgba.r;
|
| 1812 |
-
this.c.pixelData[loc + 1] = rgba.g;
|
| 1813 |
-
this.c.pixelData[loc + 2] = rgba.b;
|
| 1814 |
-
return this.c.pixelData[loc + 3] = rgba.a;
|
| 1815 |
-
};
|
| 1816 |
-
|
| 1817 |
-
Pixel.prototype.toString = function() {
|
| 1818 |
-
return this.toKey();
|
| 1819 |
-
};
|
| 1820 |
-
|
| 1821 |
-
Pixel.prototype.toHex = function(includeAlpha) {
|
| 1822 |
-
var hex;
|
| 1823 |
-
if (includeAlpha == null) {
|
| 1824 |
-
includeAlpha = false;
|
| 1825 |
-
}
|
| 1826 |
-
hex = '#' + this.r.toString(16) + this.g.toString(16) + this.b.toString(16);
|
| 1827 |
-
if (includeAlpha) {
|
| 1828 |
-
return hex + this.a.toString(16);
|
| 1829 |
-
} else {
|
| 1830 |
-
return hex;
|
| 1831 |
-
}
|
| 1832 |
-
};
|
| 1833 |
-
|
| 1834 |
-
return Pixel;
|
| 1835 |
-
|
| 1836 |
-
})();
|
| 1837 |
-
|
| 1838 |
-
Pixel = Caman.Pixel;
|
| 1839 |
-
|
| 1840 |
-
Caman.Plugin = (function() {
|
| 1841 |
-
function Plugin() {}
|
| 1842 |
-
|
| 1843 |
-
Plugin.plugins = {};
|
| 1844 |
-
|
| 1845 |
-
Plugin.register = function(name, plugin) {
|
| 1846 |
-
return this.plugins[name] = plugin;
|
| 1847 |
-
};
|
| 1848 |
-
|
| 1849 |
-
Plugin.execute = function(context, name, args) {
|
| 1850 |
-
return this.plugins[name].apply(context, args);
|
| 1851 |
-
};
|
| 1852 |
-
|
| 1853 |
-
return Plugin;
|
| 1854 |
-
|
| 1855 |
-
})();
|
| 1856 |
-
|
| 1857 |
-
Plugin = Caman.Plugin;
|
| 1858 |
-
|
| 1859 |
-
Caman.Renderer = (function() {
|
| 1860 |
-
Renderer.Blocks = Caman.NodeJS ? require('os').cpus().length : 4;
|
| 1861 |
-
|
| 1862 |
-
function Renderer(c) {
|
| 1863 |
-
this.c = c;
|
| 1864 |
-
this.processNext = __bind(this.processNext, this);
|
| 1865 |
-
this.renderQueue = [];
|
| 1866 |
-
this.modPixelData = null;
|
| 1867 |
-
}
|
| 1868 |
-
|
| 1869 |
-
Renderer.prototype.add = function(job) {
|
| 1870 |
-
if (job == null) {
|
| 1871 |
-
return;
|
| 1872 |
-
}
|
| 1873 |
-
return this.renderQueue.push(job);
|
| 1874 |
-
};
|
| 1875 |
-
|
| 1876 |
-
Renderer.prototype.processNext = function() {
|
| 1877 |
-
var layer;
|
| 1878 |
-
if (this.renderQueue.length === 0) {
|
| 1879 |
-
Event.trigger(this, "renderFinished");
|
| 1880 |
-
if (this.finishedFn != null) {
|
| 1881 |
-
this.finishedFn.call(this.c);
|
| 1882 |
-
}
|
| 1883 |
-
return this;
|
| 1884 |
-
}
|
| 1885 |
-
this.currentJob = this.renderQueue.shift();
|
| 1886 |
-
switch (this.currentJob.type) {
|
| 1887 |
-
case Filter.Type.LayerDequeue:
|
| 1888 |
-
layer = this.c.canvasQueue.shift();
|
| 1889 |
-
this.c.executeLayer(layer);
|
| 1890 |
-
return this.processNext();
|
| 1891 |
-
case Filter.Type.LayerFinished:
|
| 1892 |
-
this.c.applyCurrentLayer();
|
| 1893 |
-
this.c.popContext();
|
| 1894 |
-
return this.processNext();
|
| 1895 |
-
case Filter.Type.LoadOverlay:
|
| 1896 |
-
return this.loadOverlay(this.currentJob.layer, this.currentJob.src);
|
| 1897 |
-
case Filter.Type.Plugin:
|
| 1898 |
-
return this.executePlugin();
|
| 1899 |
-
default:
|
| 1900 |
-
return this.executeFilter();
|
| 1901 |
-
}
|
| 1902 |
-
};
|
| 1903 |
-
|
| 1904 |
-
Renderer.prototype.execute = function(callback) {
|
| 1905 |
-
this.finishedFn = callback;
|
| 1906 |
-
this.modPixelData = Util.dataArray(this.c.pixelData.length);
|
| 1907 |
-
return this.processNext();
|
| 1908 |
-
};
|
| 1909 |
-
|
| 1910 |
-
Renderer.prototype.eachBlock = function(fn) {
|
| 1911 |
-
var blockN, blockPixelLength, bnum, end, f, i, lastBlockN, n, start, _i, _ref, _results,
|
| 1912 |
-
_this = this;
|
| 1913 |
-
this.blocksDone = 0;
|
| 1914 |
-
n = this.c.pixelData.length;
|
| 1915 |
-
blockPixelLength = Math.floor((n / 4) / Renderer.Blocks);
|
| 1916 |
-
blockN = blockPixelLength * 4;
|
| 1917 |
-
lastBlockN = blockN + ((n / 4) % Renderer.Blocks) * 4;
|
| 1918 |
-
_results = [];
|
| 1919 |
-
for (i = _i = 0, _ref = Renderer.Blocks; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 1920 |
-
start = i * blockN;
|
| 1921 |
-
end = start + (i === Renderer.Blocks - 1 ? lastBlockN : blockN);
|
| 1922 |
-
if (Caman.NodeJS) {
|
| 1923 |
-
f = Fiber(function() {
|
| 1924 |
-
return fn.call(_this, i, start, end);
|
| 1925 |
-
});
|
| 1926 |
-
bnum = f.run();
|
| 1927 |
-
_results.push(this.blockFinished(bnum));
|
| 1928 |
-
} else {
|
| 1929 |
-
_results.push(setTimeout((function(i, start, end) {
|
| 1930 |
-
return function() {
|
| 1931 |
-
return fn.call(_this, i, start, end);
|
| 1932 |
-
};
|
| 1933 |
-
})(i, start, end), 0));
|
| 1934 |
-
}
|
| 1935 |
-
}
|
| 1936 |
-
return _results;
|
| 1937 |
-
};
|
| 1938 |
-
|
| 1939 |
-
Renderer.prototype.executeFilter = function() {
|
| 1940 |
-
Event.trigger(this.c, "processStart", this.currentJob);
|
| 1941 |
-
if (this.currentJob.type === Filter.Type.Single) {
|
| 1942 |
-
return this.eachBlock(this.renderBlock);
|
| 1943 |
-
} else {
|
| 1944 |
-
return this.eachBlock(this.renderKernel);
|
| 1945 |
-
}
|
| 1946 |
-
};
|
| 1947 |
-
|
| 1948 |
-
Renderer.prototype.executePlugin = function() {
|
| 1949 |
-
Log.debug("Executing plugin " + this.currentJob.plugin);
|
| 1950 |
-
Plugin.execute(this.c, this.currentJob.plugin, this.currentJob.args);
|
| 1951 |
-
Log.debug("Plugin " + this.currentJob.plugin + " finished!");
|
| 1952 |
-
return this.processNext();
|
| 1953 |
-
};
|
| 1954 |
-
|
| 1955 |
-
Renderer.prototype.renderBlock = function(bnum, start, end) {
|
| 1956 |
-
var i, pixel, _i;
|
| 1957 |
-
Log.debug("Block #" + bnum + " - Filter: " + this.currentJob.name + ", Start: " + start + ", End: " + end);
|
| 1958 |
-
Event.trigger(this.c, "blockStarted", {
|
| 1959 |
-
blockNum: bnum,
|
| 1960 |
-
totalBlocks: Renderer.Blocks,
|
| 1961 |
-
startPixel: start,
|
| 1962 |
-
endPixel: end
|
| 1963 |
-
});
|
| 1964 |
-
pixel = new Pixel();
|
| 1965 |
-
pixel.setContext(this.c);
|
| 1966 |
-
for (i = _i = start; _i < end; i = _i += 4) {
|
| 1967 |
-
pixel.loc = i;
|
| 1968 |
-
pixel.r = this.c.pixelData[i];
|
| 1969 |
-
pixel.g = this.c.pixelData[i + 1];
|
| 1970 |
-
pixel.b = this.c.pixelData[i + 2];
|
| 1971 |
-
pixel.a = this.c.pixelData[i + 3];
|
| 1972 |
-
this.currentJob.processFn(pixel);
|
| 1973 |
-
this.c.pixelData[i] = Util.clampRGB(pixel.r);
|
| 1974 |
-
this.c.pixelData[i + 1] = Util.clampRGB(pixel.g);
|
| 1975 |
-
this.c.pixelData[i + 2] = Util.clampRGB(pixel.b);
|
| 1976 |
-
this.c.pixelData[i + 3] = Util.clampRGB(pixel.a);
|
| 1977 |
-
}
|
| 1978 |
-
if (Caman.NodeJS) {
|
| 1979 |
-
return Fiber["yield"](bnum);
|
| 1980 |
-
} else {
|
| 1981 |
-
return this.blockFinished(bnum);
|
| 1982 |
-
}
|
| 1983 |
-
};
|
| 1984 |
-
|
| 1985 |
-
Renderer.prototype.renderKernel = function(bnum, start, end) {
|
| 1986 |
-
var adjust, adjustSize, bias, builder, builderIndex, divisor, i, j, k, kernel, n, name, p, pixel, res, _i, _j, _k;
|
| 1987 |
-
name = this.currentJob.name;
|
| 1988 |
-
bias = this.currentJob.bias;
|
| 1989 |
-
divisor = this.currentJob.divisor;
|
| 1990 |
-
n = this.c.pixelData.length;
|
| 1991 |
-
adjust = this.currentJob.adjust;
|
| 1992 |
-
adjustSize = Math.sqrt(adjust.length);
|
| 1993 |
-
kernel = [];
|
| 1994 |
-
Log.debug("Rendering kernel - Filter: " + this.currentJob.name);
|
| 1995 |
-
start = Math.max(start, this.c.dimensions.width * 4 * ((adjustSize - 1) / 2));
|
| 1996 |
-
end = Math.min(end, n - (this.c.dimensions.width * 4 * ((adjustSize - 1) / 2)));
|
| 1997 |
-
builder = (adjustSize - 1) / 2;
|
| 1998 |
-
pixel = new Pixel();
|
| 1999 |
-
pixel.setContext(this.c);
|
| 2000 |
-
for (i = _i = start; _i < end; i = _i += 4) {
|
| 2001 |
-
pixel.loc = i;
|
| 2002 |
-
builderIndex = 0;
|
| 2003 |
-
for (j = _j = -builder; -builder <= builder ? _j <= builder : _j >= builder; j = -builder <= builder ? ++_j : --_j) {
|
| 2004 |
-
for (k = _k = builder; builder <= -builder ? _k <= -builder : _k >= -builder; k = builder <= -builder ? ++_k : --_k) {
|
| 2005 |
-
p = pixel.getPixelRelative(j, k);
|
| 2006 |
-
kernel[builderIndex * 3] = p.r;
|
| 2007 |
-
kernel[builderIndex * 3 + 1] = p.g;
|
| 2008 |
-
kernel[builderIndex * 3 + 2] = p.b;
|
| 2009 |
-
builderIndex++;
|
| 2010 |
-
}
|
| 2011 |
-
}
|
| 2012 |
-
res = this.processKernel(adjust, kernel, divisor, bias);
|
| 2013 |
-
this.modPixelData[i] = Util.clampRGB(res.r);
|
| 2014 |
-
this.modPixelData[i + 1] = Util.clampRGB(res.g);
|
| 2015 |
-
this.modPixelData[i + 2] = Util.clampRGB(res.b);
|
| 2016 |
-
this.modPixelData[i + 3] = this.c.pixelData[i + 3];
|
| 2017 |
-
}
|
| 2018 |
-
if (Caman.NodeJS) {
|
| 2019 |
-
return Fiber["yield"](bnum);
|
| 2020 |
-
} else {
|
| 2021 |
-
return this.blockFinished(bnum);
|
| 2022 |
-
}
|
| 2023 |
-
};
|
| 2024 |
-
|
| 2025 |
-
Renderer.prototype.blockFinished = function(bnum) {
|
| 2026 |
-
var i, _i, _ref;
|
| 2027 |
-
if (bnum >= 0) {
|
| 2028 |
-
Log.debug("Block #" + bnum + " finished! Filter: " + this.currentJob.name);
|
| 2029 |
-
}
|
| 2030 |
-
this.blocksDone++;
|
| 2031 |
-
Event.trigger(this.c, "blockFinished", {
|
| 2032 |
-
blockNum: bnum,
|
| 2033 |
-
blocksFinished: this.blocksDone,
|
| 2034 |
-
totalBlocks: Renderer.Blocks
|
| 2035 |
-
});
|
| 2036 |
-
if (this.blocksDone === Renderer.Blocks) {
|
| 2037 |
-
if (this.currentJob.type === Filter.Type.Kernel) {
|
| 2038 |
-
for (i = _i = 0, _ref = this.c.pixelData.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2039 |
-
this.c.pixelData[i] = this.modPixelData[i];
|
| 2040 |
-
}
|
| 2041 |
-
}
|
| 2042 |
-
if (bnum >= 0) {
|
| 2043 |
-
Log.debug("Filter " + this.currentJob.name + " finished!");
|
| 2044 |
-
}
|
| 2045 |
-
Event.trigger(this.c, "processComplete", this.currentJob);
|
| 2046 |
-
return this.processNext();
|
| 2047 |
-
}
|
| 2048 |
-
};
|
| 2049 |
-
|
| 2050 |
-
Renderer.prototype.processKernel = function(adjust, kernel, divisor, bias) {
|
| 2051 |
-
var i, val, _i, _ref;
|
| 2052 |
-
val = {
|
| 2053 |
-
r: 0,
|
| 2054 |
-
g: 0,
|
| 2055 |
-
b: 0
|
| 2056 |
-
};
|
| 2057 |
-
for (i = _i = 0, _ref = adjust.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2058 |
-
val.r += adjust[i] * kernel[i * 3];
|
| 2059 |
-
val.g += adjust[i] * kernel[i * 3 + 1];
|
| 2060 |
-
val.b += adjust[i] * kernel[i * 3 + 2];
|
| 2061 |
-
}
|
| 2062 |
-
val.r = (val.r / divisor) + bias;
|
| 2063 |
-
val.g = (val.g / divisor) + bias;
|
| 2064 |
-
val.b = (val.b / divisor) + bias;
|
| 2065 |
-
return val;
|
| 2066 |
-
};
|
| 2067 |
-
|
| 2068 |
-
Renderer.prototype.loadOverlay = function(layer, src) {
|
| 2069 |
-
var img, proxyUrl,
|
| 2070 |
-
_this = this;
|
| 2071 |
-
img = new Image();
|
| 2072 |
-
img.onload = function() {
|
| 2073 |
-
layer.context.drawImage(img, 0, 0, _this.c.dimensions.width, _this.c.dimensions.height);
|
| 2074 |
-
layer.imageData = layer.context.getImageData(0, 0, _this.c.dimensions.width, _this.c.dimensions.height);
|
| 2075 |
-
layer.pixelData = layer.imageData.data;
|
| 2076 |
-
_this.c.pixelData = layer.pixelData;
|
| 2077 |
-
return _this.processNext();
|
| 2078 |
-
};
|
| 2079 |
-
proxyUrl = IO.remoteCheck(src);
|
| 2080 |
-
return img.src = proxyUrl != null ? proxyUrl : src;
|
| 2081 |
-
};
|
| 2082 |
-
|
| 2083 |
-
return Renderer;
|
| 2084 |
-
|
| 2085 |
-
})();
|
| 2086 |
-
|
| 2087 |
-
Renderer = Caman.Renderer;
|
| 2088 |
-
|
| 2089 |
-
Caman.Store = (function() {
|
| 2090 |
-
function Store() {}
|
| 2091 |
-
|
| 2092 |
-
Store.items = {};
|
| 2093 |
-
|
| 2094 |
-
Store.has = function(search) {
|
| 2095 |
-
return this.items[search] != null;
|
| 2096 |
-
};
|
| 2097 |
-
|
| 2098 |
-
Store.get = function(search) {
|
| 2099 |
-
return this.items[search];
|
| 2100 |
-
};
|
| 2101 |
-
|
| 2102 |
-
Store.put = function(name, obj) {
|
| 2103 |
-
return this.items[name] = obj;
|
| 2104 |
-
};
|
| 2105 |
-
|
| 2106 |
-
Store.execute = function(search, callback) {
|
| 2107 |
-
var _this = this;
|
| 2108 |
-
setTimeout(function() {
|
| 2109 |
-
return callback.call(_this.get(search), _this.get(search));
|
| 2110 |
-
}, 0);
|
| 2111 |
-
return this.get(search);
|
| 2112 |
-
};
|
| 2113 |
-
|
| 2114 |
-
Store.flush = function(name) {
|
| 2115 |
-
if (name == null) {
|
| 2116 |
-
name = false;
|
| 2117 |
-
}
|
| 2118 |
-
if (name) {
|
| 2119 |
-
return delete this.items[name];
|
| 2120 |
-
} else {
|
| 2121 |
-
return this.items = {};
|
| 2122 |
-
}
|
| 2123 |
-
};
|
| 2124 |
-
|
| 2125 |
-
return Store;
|
| 2126 |
-
|
| 2127 |
-
})();
|
| 2128 |
-
|
| 2129 |
-
Store = Caman.Store;
|
| 2130 |
-
|
| 2131 |
-
Blender.register("normal", function(rgbaLayer, rgbaParent) {
|
| 2132 |
-
return {
|
| 2133 |
-
r: rgbaLayer.r,
|
| 2134 |
-
g: rgbaLayer.g,
|
| 2135 |
-
b: rgbaLayer.b
|
| 2136 |
-
};
|
| 2137 |
-
});
|
| 2138 |
-
|
| 2139 |
-
Blender.register("multiply", function(rgbaLayer, rgbaParent) {
|
| 2140 |
-
return {
|
| 2141 |
-
r: (rgbaLayer.r * rgbaParent.r) / 255,
|
| 2142 |
-
g: (rgbaLayer.g * rgbaParent.g) / 255,
|
| 2143 |
-
b: (rgbaLayer.b * rgbaParent.b) / 255
|
| 2144 |
-
};
|
| 2145 |
-
});
|
| 2146 |
-
|
| 2147 |
-
Blender.register("screen", function(rgbaLayer, rgbaParent) {
|
| 2148 |
-
return {
|
| 2149 |
-
r: 255 - (((255 - rgbaLayer.r) * (255 - rgbaParent.r)) / 255),
|
| 2150 |
-
g: 255 - (((255 - rgbaLayer.g) * (255 - rgbaParent.g)) / 255),
|
| 2151 |
-
b: 255 - (((255 - rgbaLayer.b) * (255 - rgbaParent.b)) / 255)
|
| 2152 |
-
};
|
| 2153 |
-
});
|
| 2154 |
-
|
| 2155 |
-
Blender.register("overlay", function(rgbaLayer, rgbaParent) {
|
| 2156 |
-
var result;
|
| 2157 |
-
result = {};
|
| 2158 |
-
result.r = rgbaParent.r > 128 ? 255 - 2 * (255 - rgbaLayer.r) * (255 - rgbaParent.r) / 255 : (rgbaParent.r * rgbaLayer.r * 2) / 255;
|
| 2159 |
-
result.g = rgbaParent.g > 128 ? 255 - 2 * (255 - rgbaLayer.g) * (255 - rgbaParent.g) / 255 : (rgbaParent.g * rgbaLayer.g * 2) / 255;
|
| 2160 |
-
result.b = rgbaParent.b > 128 ? 255 - 2 * (255 - rgbaLayer.b) * (255 - rgbaParent.b) / 255 : (rgbaParent.b * rgbaLayer.b * 2) / 255;
|
| 2161 |
-
return result;
|
| 2162 |
-
});
|
| 2163 |
-
|
| 2164 |
-
Blender.register("difference", function(rgbaLayer, rgbaParent) {
|
| 2165 |
-
return {
|
| 2166 |
-
r: rgbaLayer.r - rgbaParent.r,
|
| 2167 |
-
g: rgbaLayer.g - rgbaParent.g,
|
| 2168 |
-
b: rgbaLayer.b - rgbaParent.b
|
| 2169 |
-
};
|
| 2170 |
-
});
|
| 2171 |
-
|
| 2172 |
-
Blender.register("addition", function(rgbaLayer, rgbaParent) {
|
| 2173 |
-
return {
|
| 2174 |
-
r: rgbaParent.r + rgbaLayer.r,
|
| 2175 |
-
g: rgbaParent.g + rgbaLayer.g,
|
| 2176 |
-
b: rgbaParent.b + rgbaLayer.b
|
| 2177 |
-
};
|
| 2178 |
-
});
|
| 2179 |
-
|
| 2180 |
-
Blender.register("exclusion", function(rgbaLayer, rgbaParent) {
|
| 2181 |
-
return {
|
| 2182 |
-
r: 128 - 2 * (rgbaParent.r - 128) * (rgbaLayer.r - 128) / 255,
|
| 2183 |
-
g: 128 - 2 * (rgbaParent.g - 128) * (rgbaLayer.g - 128) / 255,
|
| 2184 |
-
b: 128 - 2 * (rgbaParent.b - 128) * (rgbaLayer.b - 128) / 255
|
| 2185 |
-
};
|
| 2186 |
-
});
|
| 2187 |
-
|
| 2188 |
-
Blender.register("softLight", function(rgbaLayer, rgbaParent) {
|
| 2189 |
-
var result;
|
| 2190 |
-
result = {};
|
| 2191 |
-
result.r = rgbaParent.r > 128 ? 255 - ((255 - rgbaParent.r) * (255 - (rgbaLayer.r - 128))) / 255 : (rgbaParent.r * (rgbaLayer.r + 128)) / 255;
|
| 2192 |
-
result.g = rgbaParent.g > 128 ? 255 - ((255 - rgbaParent.g) * (255 - (rgbaLayer.g - 128))) / 255 : (rgbaParent.g * (rgbaLayer.g + 128)) / 255;
|
| 2193 |
-
result.b = rgbaParent.b > 128 ? 255 - ((255 - rgbaParent.b) * (255 - (rgbaLayer.b - 128))) / 255 : (rgbaParent.b * (rgbaLayer.b + 128)) / 255;
|
| 2194 |
-
return result;
|
| 2195 |
-
});
|
| 2196 |
-
|
| 2197 |
-
Blender.register("lighten", function(rgbaLayer, rgbaParent) {
|
| 2198 |
-
return {
|
| 2199 |
-
r: rgbaParent.r > rgbaLayer.r ? rgbaParent.r : rgbaLayer.r,
|
| 2200 |
-
g: rgbaParent.g > rgbaLayer.g ? rgbaParent.g : rgbaLayer.g,
|
| 2201 |
-
b: rgbaParent.b > rgbaLayer.b ? rgbaParent.b : rgbaLayer.b
|
| 2202 |
-
};
|
| 2203 |
-
});
|
| 2204 |
-
|
| 2205 |
-
Blender.register("darken", function(rgbaLayer, rgbaParent) {
|
| 2206 |
-
return {
|
| 2207 |
-
r: rgbaParent.r > rgbaLayer.r ? rgbaLayer.r : rgbaParent.r,
|
| 2208 |
-
g: rgbaParent.g > rgbaLayer.g ? rgbaLayer.g : rgbaParent.g,
|
| 2209 |
-
b: rgbaParent.b > rgbaLayer.b ? rgbaLayer.b : rgbaParent.b
|
| 2210 |
-
};
|
| 2211 |
-
});
|
| 2212 |
-
|
| 2213 |
-
Filter.register("fillColor", function() {
|
| 2214 |
-
var color;
|
| 2215 |
-
if (arguments.length === 1) {
|
| 2216 |
-
color = Convert.hexToRGB(arguments[0]);
|
| 2217 |
-
} else {
|
| 2218 |
-
color = {
|
| 2219 |
-
r: arguments[0],
|
| 2220 |
-
g: arguments[1],
|
| 2221 |
-
b: arguments[2]
|
| 2222 |
-
};
|
| 2223 |
-
}
|
| 2224 |
-
return this.process("fillColor", function(rgba) {
|
| 2225 |
-
rgba.r = color.r;
|
| 2226 |
-
rgba.g = color.g;
|
| 2227 |
-
rgba.b = color.b;
|
| 2228 |
-
rgba.a = 255;
|
| 2229 |
-
return rgba;
|
| 2230 |
-
});
|
| 2231 |
-
});
|
| 2232 |
-
|
| 2233 |
-
Filter.register("brightness", function(adjust) {
|
| 2234 |
-
adjust = Math.floor(255 * (adjust / 100));
|
| 2235 |
-
return this.process("brightness", function(rgba) {
|
| 2236 |
-
rgba.r += adjust;
|
| 2237 |
-
rgba.g += adjust;
|
| 2238 |
-
rgba.b += adjust;
|
| 2239 |
-
return rgba;
|
| 2240 |
-
});
|
| 2241 |
-
});
|
| 2242 |
-
|
| 2243 |
-
Filter.register("saturation", function(adjust) {
|
| 2244 |
-
adjust *= -0.01;
|
| 2245 |
-
return this.process("saturation", function(rgba) {
|
| 2246 |
-
var max;
|
| 2247 |
-
max = Math.max(rgba.r, rgba.g, rgba.b);
|
| 2248 |
-
if (rgba.r !== max) {
|
| 2249 |
-
rgba.r += (max - rgba.r) * adjust;
|
| 2250 |
-
}
|
| 2251 |
-
if (rgba.g !== max) {
|
| 2252 |
-
rgba.g += (max - rgba.g) * adjust;
|
| 2253 |
-
}
|
| 2254 |
-
if (rgba.b !== max) {
|
| 2255 |
-
rgba.b += (max - rgba.b) * adjust;
|
| 2256 |
-
}
|
| 2257 |
-
return rgba;
|
| 2258 |
-
});
|
| 2259 |
-
});
|
| 2260 |
-
|
| 2261 |
-
Filter.register("vibrance", function(adjust) {
|
| 2262 |
-
adjust *= -1;
|
| 2263 |
-
return this.process("vibrance", function(rgba) {
|
| 2264 |
-
var amt, avg, max;
|
| 2265 |
-
max = Math.max(rgba.r, rgba.g, rgba.b);
|
| 2266 |
-
avg = (rgba.r + rgba.g + rgba.b) / 3;
|
| 2267 |
-
amt = ((Math.abs(max - avg) * 2 / 255) * adjust) / 100;
|
| 2268 |
-
if (rgba.r !== max) {
|
| 2269 |
-
rgba.r += (max - rgba.r) * amt;
|
| 2270 |
-
}
|
| 2271 |
-
if (rgba.g !== max) {
|
| 2272 |
-
rgba.g += (max - rgba.g) * amt;
|
| 2273 |
-
}
|
| 2274 |
-
if (rgba.b !== max) {
|
| 2275 |
-
rgba.b += (max - rgba.b) * amt;
|
| 2276 |
-
}
|
| 2277 |
-
return rgba;
|
| 2278 |
-
});
|
| 2279 |
-
});
|
| 2280 |
-
|
| 2281 |
-
Filter.register("greyscale", function(adjust) {
|
| 2282 |
-
return this.process("greyscale", function(rgba) {
|
| 2283 |
-
var avg;
|
| 2284 |
-
avg = Calculate.luminance(rgba);
|
| 2285 |
-
rgba.r = avg;
|
| 2286 |
-
rgba.g = avg;
|
| 2287 |
-
rgba.b = avg;
|
| 2288 |
-
return rgba;
|
| 2289 |
-
});
|
| 2290 |
-
});
|
| 2291 |
-
|
| 2292 |
-
Filter.register("contrast", function(adjust) {
|
| 2293 |
-
adjust = Math.pow((adjust + 100) / 100, 2);
|
| 2294 |
-
return this.process("contrast", function(rgba) {
|
| 2295 |
-
rgba.r /= 255;
|
| 2296 |
-
rgba.r -= 0.5;
|
| 2297 |
-
rgba.r *= adjust;
|
| 2298 |
-
rgba.r += 0.5;
|
| 2299 |
-
rgba.r *= 255;
|
| 2300 |
-
rgba.g /= 255;
|
| 2301 |
-
rgba.g -= 0.5;
|
| 2302 |
-
rgba.g *= adjust;
|
| 2303 |
-
rgba.g += 0.5;
|
| 2304 |
-
rgba.g *= 255;
|
| 2305 |
-
rgba.b /= 255;
|
| 2306 |
-
rgba.b -= 0.5;
|
| 2307 |
-
rgba.b *= adjust;
|
| 2308 |
-
rgba.b += 0.5;
|
| 2309 |
-
rgba.b *= 255;
|
| 2310 |
-
return rgba;
|
| 2311 |
-
});
|
| 2312 |
-
});
|
| 2313 |
-
|
| 2314 |
-
Filter.register("hue", function(adjust) {
|
| 2315 |
-
return this.process("hue", function(rgba) {
|
| 2316 |
-
var b, g, h, hsv, r, _ref;
|
| 2317 |
-
hsv = Convert.rgbToHSV(rgba.r, rgba.g, rgba.b);
|
| 2318 |
-
h = hsv.h * 100;
|
| 2319 |
-
h += Math.abs(adjust);
|
| 2320 |
-
h = h % 100;
|
| 2321 |
-
h /= 100;
|
| 2322 |
-
hsv.h = h;
|
| 2323 |
-
_ref = Convert.hsvToRGB(hsv.h, hsv.s, hsv.v), r = _ref.r, g = _ref.g, b = _ref.b;
|
| 2324 |
-
rgba.r = r;
|
| 2325 |
-
rgba.g = g;
|
| 2326 |
-
rgba.b = b;
|
| 2327 |
-
return rgba;
|
| 2328 |
-
});
|
| 2329 |
-
});
|
| 2330 |
-
|
| 2331 |
-
Filter.register("colorize", function() {
|
| 2332 |
-
var level, rgb;
|
| 2333 |
-
if (arguments.length === 2) {
|
| 2334 |
-
rgb = Convert.hexToRGB(arguments[0]);
|
| 2335 |
-
level = arguments[1];
|
| 2336 |
-
} else if (arguments.length === 4) {
|
| 2337 |
-
rgb = {
|
| 2338 |
-
r: arguments[0],
|
| 2339 |
-
g: arguments[1],
|
| 2340 |
-
b: arguments[2]
|
| 2341 |
-
};
|
| 2342 |
-
level = arguments[3];
|
| 2343 |
-
}
|
| 2344 |
-
return this.process("colorize", function(rgba) {
|
| 2345 |
-
rgba.r -= (rgba.r - rgb.r) * (level / 100);
|
| 2346 |
-
rgba.g -= (rgba.g - rgb.g) * (level / 100);
|
| 2347 |
-
rgba.b -= (rgba.b - rgb.b) * (level / 100);
|
| 2348 |
-
return rgba;
|
| 2349 |
-
});
|
| 2350 |
-
});
|
| 2351 |
-
|
| 2352 |
-
Filter.register("invert", function() {
|
| 2353 |
-
return this.process("invert", function(rgba) {
|
| 2354 |
-
rgba.r = 255 - rgba.r;
|
| 2355 |
-
rgba.g = 255 - rgba.g;
|
| 2356 |
-
rgba.b = 255 - rgba.b;
|
| 2357 |
-
return rgba;
|
| 2358 |
-
});
|
| 2359 |
-
});
|
| 2360 |
-
|
| 2361 |
-
Filter.register("sepia", function(adjust) {
|
| 2362 |
-
if (adjust == null) {
|
| 2363 |
-
adjust = 100;
|
| 2364 |
-
}
|
| 2365 |
-
adjust /= 100;
|
| 2366 |
-
return this.process("sepia", function(rgba) {
|
| 2367 |
-
rgba.r = Math.min(255, (rgba.r * (1 - (0.607 * adjust))) + (rgba.g * (0.769 * adjust)) + (rgba.b * (0.189 * adjust)));
|
| 2368 |
-
rgba.g = Math.min(255, (rgba.r * (0.349 * adjust)) + (rgba.g * (1 - (0.314 * adjust))) + (rgba.b * (0.168 * adjust)));
|
| 2369 |
-
rgba.b = Math.min(255, (rgba.r * (0.272 * adjust)) + (rgba.g * (0.534 * adjust)) + (rgba.b * (1 - (0.869 * adjust))));
|
| 2370 |
-
return rgba;
|
| 2371 |
-
});
|
| 2372 |
-
});
|
| 2373 |
-
|
| 2374 |
-
Filter.register("gamma", function(adjust) {
|
| 2375 |
-
return this.process("gamma", function(rgba) {
|
| 2376 |
-
rgba.r = Math.pow(rgba.r / 255, adjust) * 255;
|
| 2377 |
-
rgba.g = Math.pow(rgba.g / 255, adjust) * 255;
|
| 2378 |
-
rgba.b = Math.pow(rgba.b / 255, adjust) * 255;
|
| 2379 |
-
return rgba;
|
| 2380 |
-
});
|
| 2381 |
-
});
|
| 2382 |
-
|
| 2383 |
-
Filter.register("noise", function(adjust) {
|
| 2384 |
-
adjust = Math.abs(adjust) * 2.55;
|
| 2385 |
-
return this.process("noise", function(rgba) {
|
| 2386 |
-
var rand;
|
| 2387 |
-
rand = Calculate.randomRange(adjust * -1, adjust);
|
| 2388 |
-
rgba.r += rand;
|
| 2389 |
-
rgba.g += rand;
|
| 2390 |
-
rgba.b += rand;
|
| 2391 |
-
return rgba;
|
| 2392 |
-
});
|
| 2393 |
-
});
|
| 2394 |
-
|
| 2395 |
-
Filter.register("clip", function(adjust) {
|
| 2396 |
-
adjust = Math.abs(adjust) * 2.55;
|
| 2397 |
-
return this.process("clip", function(rgba) {
|
| 2398 |
-
if (rgba.r > 255 - adjust) {
|
| 2399 |
-
rgba.r = 255;
|
| 2400 |
-
} else if (rgba.r < adjust) {
|
| 2401 |
-
rgba.r = 0;
|
| 2402 |
-
}
|
| 2403 |
-
if (rgba.g > 255 - adjust) {
|
| 2404 |
-
rgba.g = 255;
|
| 2405 |
-
} else if (rgba.g < adjust) {
|
| 2406 |
-
rgba.g = 0;
|
| 2407 |
-
}
|
| 2408 |
-
if (rgba.b > 255 - adjust) {
|
| 2409 |
-
rgba.b = 255;
|
| 2410 |
-
} else if (rgba.b < adjust) {
|
| 2411 |
-
rgba.b = 0;
|
| 2412 |
-
}
|
| 2413 |
-
return rgba;
|
| 2414 |
-
});
|
| 2415 |
-
});
|
| 2416 |
-
|
| 2417 |
-
Filter.register("channels", function(options) {
|
| 2418 |
-
var chan, value;
|
| 2419 |
-
if (typeof options !== "object") {
|
| 2420 |
-
return this;
|
| 2421 |
-
}
|
| 2422 |
-
for (chan in options) {
|
| 2423 |
-
if (!__hasProp.call(options, chan)) continue;
|
| 2424 |
-
value = options[chan];
|
| 2425 |
-
if (value === 0) {
|
| 2426 |
-
delete options[chan];
|
| 2427 |
-
continue;
|
| 2428 |
-
}
|
| 2429 |
-
options[chan] /= 100;
|
| 2430 |
-
}
|
| 2431 |
-
if (options.length === 0) {
|
| 2432 |
-
return this;
|
| 2433 |
-
}
|
| 2434 |
-
return this.process("channels", function(rgba) {
|
| 2435 |
-
if (options.red != null) {
|
| 2436 |
-
if (options.red > 0) {
|
| 2437 |
-
rgba.r += (255 - rgba.r) * options.red;
|
| 2438 |
-
} else {
|
| 2439 |
-
rgba.r -= rgba.r * Math.abs(options.red);
|
| 2440 |
-
}
|
| 2441 |
-
}
|
| 2442 |
-
if (options.green != null) {
|
| 2443 |
-
if (options.green > 0) {
|
| 2444 |
-
rgba.g += (255 - rgba.g) * options.green;
|
| 2445 |
-
} else {
|
| 2446 |
-
rgba.g -= rgba.g * Math.abs(options.green);
|
| 2447 |
-
}
|
| 2448 |
-
}
|
| 2449 |
-
if (options.blue != null) {
|
| 2450 |
-
if (options.blue > 0) {
|
| 2451 |
-
rgba.b += (255 - rgba.b) * options.blue;
|
| 2452 |
-
} else {
|
| 2453 |
-
rgba.b -= rgba.b * Math.abs(options.blue);
|
| 2454 |
-
}
|
| 2455 |
-
}
|
| 2456 |
-
return rgba;
|
| 2457 |
-
});
|
| 2458 |
-
});
|
| 2459 |
-
|
| 2460 |
-
Filter.register("curves", function() {
|
| 2461 |
-
var algo, bezier, chans, cps, end, i, last, start, _i, _j, _ref, _ref1;
|
| 2462 |
-
chans = arguments[0], cps = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
| 2463 |
-
last = cps[cps.length - 1];
|
| 2464 |
-
if (typeof last === "function") {
|
| 2465 |
-
algo = last;
|
| 2466 |
-
cps.pop();
|
| 2467 |
-
} else if (typeof last === "string") {
|
| 2468 |
-
algo = Calculate[last];
|
| 2469 |
-
cps.pop();
|
| 2470 |
-
} else {
|
| 2471 |
-
algo = Calculate.bezier;
|
| 2472 |
-
}
|
| 2473 |
-
if (typeof chans === "string") {
|
| 2474 |
-
chans = chans.split("");
|
| 2475 |
-
}
|
| 2476 |
-
if (chans[0] === "v") {
|
| 2477 |
-
chans = ['r', 'g', 'b'];
|
| 2478 |
-
}
|
| 2479 |
-
if (cps.length < 2) {
|
| 2480 |
-
throw "Invalid number of arguments to curves filter";
|
| 2481 |
-
}
|
| 2482 |
-
bezier = algo(cps, 0, 255);
|
| 2483 |
-
start = cps[0];
|
| 2484 |
-
if (start[0] > 0) {
|
| 2485 |
-
for (i = _i = 0, _ref = start[0]; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
| 2486 |
-
bezier[i] = start[1];
|
| 2487 |
-
}
|
| 2488 |
-
}
|
| 2489 |
-
end = cps[cps.length - 1];
|
| 2490 |
-
if (end[0] < 255) {
|
| 2491 |
-
for (i = _j = _ref1 = end[0]; _ref1 <= 255 ? _j <= 255 : _j >= 255; i = _ref1 <= 255 ? ++_j : --_j) {
|
| 2492 |
-
bezier[i] = end[1];
|
| 2493 |
-
}
|
| 2494 |
-
}
|
| 2495 |
-
return this.process("curves", function(rgba) {
|
| 2496 |
-
var _k, _ref2;
|
| 2497 |
-
for (i = _k = 0, _ref2 = chans.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
|
| 2498 |
-
rgba[chans[i]] = bezier[rgba[chans[i]]];
|
| 2499 |
-
}
|
| 2500 |
-
return rgba;
|
| 2501 |
-
});
|
| 2502 |
-
});
|
| 2503 |
-
|
| 2504 |
-
Filter.register("exposure", function(adjust) {
|
| 2505 |
-
var ctrl1, ctrl2, p;
|
| 2506 |
-
p = Math.abs(adjust) / 100;
|
| 2507 |
-
ctrl1 = [0, 255 * p];
|
| 2508 |
-
ctrl2 = [255 - (255 * p), 255];
|
| 2509 |
-
if (adjust < 0) {
|
| 2510 |
-
ctrl1 = ctrl1.reverse();
|
| 2511 |
-
ctrl2 = ctrl2.reverse();
|
| 2512 |
-
}
|
| 2513 |
-
return this.curves('rgb', [0, 0], ctrl1, ctrl2, [255, 255]);
|
| 2514 |
-
});
|
| 2515 |
-
|
| 2516 |
-
Caman.Plugin.register("crop", function(width, height, x, y) {
|
| 2517 |
-
var canvas, ctx;
|
| 2518 |
-
if (x == null) {
|
| 2519 |
-
x = 0;
|
| 2520 |
-
}
|
| 2521 |
-
if (y == null) {
|
| 2522 |
-
y = 0;
|
| 2523 |
-
}
|
| 2524 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 2525 |
-
canvas = new Canvas(width, height);
|
| 2526 |
-
} else {
|
| 2527 |
-
canvas = document.createElement('canvas');
|
| 2528 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 2529 |
-
canvas.width = width;
|
| 2530 |
-
canvas.height = height;
|
| 2531 |
-
}
|
| 2532 |
-
ctx = canvas.getContext('2d');
|
| 2533 |
-
ctx.drawImage(this.canvas, x, y, width, height, 0, 0, width, height);
|
| 2534 |
-
this.cropCoordinates = {
|
| 2535 |
-
x: x,
|
| 2536 |
-
y: y
|
| 2537 |
-
};
|
| 2538 |
-
this.cropped = true;
|
| 2539 |
-
return this.replaceCanvas(canvas);
|
| 2540 |
-
});
|
| 2541 |
-
|
| 2542 |
-
Caman.Plugin.register("resize", function(newDims) {
|
| 2543 |
-
var canvas, ctx;
|
| 2544 |
-
if (newDims == null) {
|
| 2545 |
-
newDims = null;
|
| 2546 |
-
}
|
| 2547 |
-
if (newDims === null || ((newDims.width == null) && (newDims.height == null))) {
|
| 2548 |
-
Log.error("Invalid or missing dimensions given for resize");
|
| 2549 |
-
return;
|
| 2550 |
-
}
|
| 2551 |
-
if (newDims.width == null) {
|
| 2552 |
-
newDims.width = this.canvas.width * newDims.height / this.canvas.height;
|
| 2553 |
-
} else if (newDims.height == null) {
|
| 2554 |
-
newDims.height = this.canvas.height * newDims.width / this.canvas.width;
|
| 2555 |
-
}
|
| 2556 |
-
if (typeof exports !== "undefined" && exports !== null) {
|
| 2557 |
-
canvas = new Canvas(newDims.width, newDims.height);
|
| 2558 |
-
} else {
|
| 2559 |
-
canvas = document.createElement('canvas');
|
| 2560 |
-
Util.copyAttributes(this.canvas, canvas);
|
| 2561 |
-
canvas.width = newDims.width;
|
| 2562 |
-
canvas.height = newDims.height;
|
| 2563 |
-
}
|
| 2564 |
-
ctx = canvas.getContext('2d');
|
| 2565 |
-
ctx.drawImage(this.canvas, 0, 0, this.canvas.width, this.canvas.height, 0, 0, newDims.width, newDims.height);
|
| 2566 |
-
this.resized = true;
|
| 2567 |
-
return this.replaceCanvas(canvas);
|
| 2568 |
-
});
|
| 2569 |
-
|
| 2570 |
-
Caman.Filter.register("crop", function() {
|
| 2571 |
-
return this.processPlugin("crop", Array.prototype.slice.call(arguments, 0));
|
| 2572 |
-
});
|
| 2573 |
-
|
| 2574 |
-
Caman.Filter.register("resize", function() {
|
| 2575 |
-
return this.processPlugin("resize", Array.prototype.slice.call(arguments, 0));
|
| 2576 |
-
});
|
| 2577 |
-
|
| 2578 |
-
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"file":"caman.js","sourceRoot":"","sources":["caman.coffee"],"names":[],"mappings":"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"}
|
|
|
includes/pickers/caman/dist/caman.min.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
(function(){var $,Analyze,Blender,Calculate,Caman,CamanParser,Canvas,Convert,Event,Fiber,Filter,IO,Image,Layer,Log,Module,Pixel,Plugin,Renderer,Root,Store,Util,fs,http,moduleKeywords,slice,__indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i;}return-1;},__slice=[].slice,__hasProp={}.hasOwnProperty,__bind=function(fn,me){return function(){return fn.apply(me,arguments);};},__extends=function(child,parent){for(var key in parent){if(__hasProp.call(parent,key))child[key]=parent[key];}function ctor(){this.constructor=child;}ctor.prototype=parent.prototype;child.prototype=new ctor();child.__super__=parent.prototype;return child;};moduleKeywords=['extended','included'];Module=(function(){function Module(){}
|
| 3 |
-
Module["extends"]=function(obj){var key,value,_ref;for(key in obj){value=obj[key];if(__indexOf.call(moduleKeywords,key)<0){this[key]=value;}}
|
| 4 |
-
if((_ref=obj.extended)!=null){_ref.apply(this);}
|
| 5 |
-
return this;};Module.includes=function(obj){var key,value,_ref;for(key in obj){value=obj[key];if(__indexOf.call(moduleKeywords,key)<0){this.prototype[key]=value;}}
|
| 6 |
-
if((_ref=obj.included)!=null){_ref.apply(this);}
|
| 7 |
-
return this;};Module.delegate=function(){var args,source,target,_i,_len,_results;args=1<=arguments.length?__slice.call(arguments,0):[];target=args.pop();_results=[];for(_i=0,_len=args.length;_i<_len;_i++){source=args[_i];_results.push(this.prototype[source]=target.prototype[source]);}
|
| 8 |
-
return _results;};Module.aliasFunction=function(to,from){var _this=this;return this.prototype[to]=function(){var args;args=1<=arguments.length?__slice.call(arguments,0):[];return _this.prototype[from].apply(_this,args);};};Module.aliasProperty=function(to,from){return Object.defineProperty(this.prototype,to,{get:function(){return this[from];},set:function(val){return this[from]=val;}});};Module.included=function(func){return func.call(this,this.prototype);};return Module;})();slice=Array.prototype.slice;$=function(sel,root){if(root==null){root=document;}
|
| 9 |
-
if(typeof sel==="object"||(typeof exports!=="undefined"&&exports!==null)){return sel;}
|
| 10 |
-
return root.querySelector(sel);};Util=(function(){function Util(){}
|
| 11 |
-
Util.uniqid=(function(){var id;id=0;return{get:function(){return id++;}};})();Util.extend=function(){var copy,dest,obj,prop,src,_i,_len;obj=arguments[0],src=2<=arguments.length?__slice.call(arguments,1):[];dest=obj;for(_i=0,_len=src.length;_i<_len;_i++){copy=src[_i];for(prop in copy){if(!__hasProp.call(copy,prop))continue;dest[prop]=copy[prop];}}
|
| 12 |
-
return dest;};Util.clampRGB=function(val){if(val<0){return 0;}
|
| 13 |
-
if(val>255){return 255;}
|
| 14 |
-
return val;};Util.copyAttributes=function(from,to,opts){var attr,_i,_len,_ref,_ref1,_results;if(opts==null){opts={};}
|
| 15 |
-
_ref=from.attributes;_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){attr=_ref[_i];if((opts.except!=null)&&(_ref1=attr.nodeName,__indexOf.call(opts.except,_ref1)>=0)){continue;}
|
| 16 |
-
_results.push(to.setAttribute(attr.nodeName,attr.nodeValue));}
|
| 17 |
-
return _results;};Util.dataArray=function(length){if(length==null){length=0;}
|
| 18 |
-
if(Caman.NodeJS||(window.Uint8Array!=null)){return new Uint8Array(length);}
|
| 19 |
-
return new Array(length);};return Util;})();if(typeof exports!=="undefined"&&exports!==null){Root=exports;Canvas=require('canvas');Image=Canvas.Image;Fiber=require('fibers');fs=require('fs');http=require('http');}else{Root=window;}
|
| 20 |
-
Caman=(function(_super){__extends(Caman,_super);Caman.version={release:"4.1.2",date:"7/27/2013"};Caman.DEBUG=false;Caman.allowRevert=true;Caman.crossOrigin="anonymous";Caman.remoteProxy="";Caman.proxyParam="camanProxyUrl";Caman.NodeJS=typeof exports!=="undefined"&&exports!==null;Caman.autoload=!Caman.NodeJS;Caman.toString=function(){return"Version "+Caman.version.release+", Released "+Caman.version.date;};Caman.getAttrId=function(canvas){if(Caman.NodeJS){return true;}
|
| 21 |
-
if(typeof canvas==="string"){canvas=$(canvas);}
|
| 22 |
-
if(!((canvas!=null)&&(canvas.getAttribute!=null))){return null;}
|
| 23 |
-
return canvas.getAttribute('data-caman-id');};function Caman(){this.nodeFileReady=__bind(this.nodeFileReady,this);var args,callback,id,_this=this;if(arguments.length===0){throw"Invalid arguments";}
|
| 24 |
-
if(this instanceof Caman){this.finishInit=this.finishInit.bind(this);this.imageLoaded=this.imageLoaded.bind(this);args=arguments[0];if(!Caman.NodeJS){id=parseInt(Caman.getAttrId(args[0]),10);callback=typeof args[1]==="function"?args[1]:typeof args[2]==="function"?args[2]:function(){};if(!isNaN(id)&&Store.has(id)){return Store.execute(id,callback);}}
|
| 25 |
-
this.id=Util.uniqid.get();this.initializedPixelData=this.originalPixelData=null;this.cropCoordinates={x:0,y:0};this.cropped=false;this.resized=false;this.pixelStack=[];this.layerStack=[];this.canvasQueue=[];this.currentLayer=null;this.scaled=false;this.analyze=new Analyze(this);this.renderer=new Renderer(this);this.domIsLoaded(function(){_this.parseArguments(args);return _this.setup();});return this;}else{return new Caman(arguments);}}
|
| 26 |
-
Caman.prototype.domIsLoaded=function(cb){var listener,_this=this;if(Caman.NodeJS){return setTimeout(function(){return cb.call(_this);},0);}else{if(document.readyState==="complete"){Log.debug("DOM initialized");return setTimeout(function(){return cb.call(_this);},0);}else{listener=function(){if(document.readyState==="complete"){Log.debug("DOM initialized");return cb.call(_this);}};return document.addEventListener("readystatechange",listener,false);}}};Caman.prototype.parseArguments=function(args){var key,val,_ref,_results;if(args.length===0){throw"Invalid arguments given";}
|
| 27 |
-
this.initObj=null;this.initType=null;this.imageUrl=null;this.callback=function(){};this.setInitObject(args[0]);if(args.length===1){return;}
|
| 28 |
-
switch(typeof args[1]){case"string":this.imageUrl=args[1];break;case"function":this.callback=args[1];}
|
| 29 |
-
if(args.length===2){return;}
|
| 30 |
-
this.callback=args[2];if(args.length===4){_ref=args[4];_results=[];for(key in _ref){if(!__hasProp.call(_ref,key))continue;val=_ref[key];_results.push(this.options[key]=val);}
|
| 31 |
-
return _results;}};Caman.prototype.setInitObject=function(obj){if(Caman.NodeJS){this.initObj=obj;this.initType='node';return;}
|
| 32 |
-
if(typeof obj==="object"){this.initObj=obj;}else{this.initObj=$(obj);}
|
| 33 |
-
if(this.initObj==null){throw"Could not find image or canvas for initialization.";}
|
| 34 |
-
return this.initType=this.initObj.nodeName.toLowerCase();};Caman.prototype.setup=function(){switch(this.initType){case"node":return this.initNode();case"img":return this.initImage();case"canvas":return this.initCanvas();}};Caman.prototype.initNode=function(){Log.debug("Initializing for NodeJS");if(typeof this.initObj==="string"&&this.initObj.match(/^https?:\/\//)){return this.readFromHttp(this.initObj,this.nodeFileReady);}else if(typeof this.initObj==="string"){return fs.readFile(this.initObj,this.nodeFileReady);}else{return this.nodeFileReady(null,this.initObj);}};Caman.prototype.readFromHttp=function(url,callback){var req;Log.debug("Fetching image from "+url);req=http.get(url,function(res){var buf;buf='';res.setEncoding('binary');res.on('data',function(chunk){return buf+=chunk;});return res.on('end',function(){return callback(null,new Buffer(buf,'binary'));});});return req.on('error',callback);};Caman.prototype.nodeFileReady=function(err,data){if(err){throw err;}
|
| 35 |
-
this.image=new Image();this.image.src=data;Log.debug("Image loaded. Width = "+(this.imageWidth())+", Height = "+(this.imageHeight()));this.canvas=new Canvas(this.imageWidth(),this.imageHeight());return this.finishInit();};Caman.prototype.initImage=function(){this.image=this.initObj;this.canvas=document.createElement('canvas');this.context=this.canvas.getContext('2d');Util.copyAttributes(this.image,this.canvas,{except:['src']});if(this.image.parentNode!=null){this.image.parentNode.replaceChild(this.canvas,this.image);}
|
| 36 |
-
this.imageAdjustments();return this.waitForImageLoaded();};Caman.prototype.initCanvas=function(){this.canvas=this.initObj;this.context=this.canvas.getContext('2d');if(this.imageUrl!=null){this.image=document.createElement('img');this.image.src=this.imageUrl;this.imageAdjustments();return this.waitForImageLoaded();}else{return this.finishInit();}};Caman.prototype.imageAdjustments=function(){if(this.needsHiDPISwap()){Log.debug(this.image.src,"->",this.hiDPIReplacement());this.swapped=true;this.image.src=this.hiDPIReplacement();}
|
| 37 |
-
if(IO.isRemote(this.image)){this.image.src=IO.proxyUrl(this.image.src);return Log.debug("Remote image detected, using URL = "+this.image.src);}};Caman.prototype.waitForImageLoaded=function(){if(this.isImageLoaded()){return this.imageLoaded();}else{return this.image.onload=this.imageLoaded;}};Caman.prototype.isImageLoaded=function(){if(!this.image.complete){return false;}
|
| 38 |
-
if((this.image.naturalWidth!=null)&&this.image.naturalWidth===0){return false;}
|
| 39 |
-
return true;};Caman.prototype.imageWidth=function(){return this.image.width||this.image.naturalWidth;};Caman.prototype.imageHeight=function(){return this.image.height||this.image.naturalHeight;};Caman.prototype.imageLoaded=function(){Log.debug("Image loaded. Width = "+(this.imageWidth())+", Height = "+(this.imageHeight()));if(this.swapped){this.canvas.width=this.imageWidth()/this.hiDPIRatio();this.canvas.height=this.imageHeight()/this.hiDPIRatio();}else{this.canvas.width=this.imageWidth();this.canvas.height=this.imageHeight();}
|
| 40 |
-
return this.finishInit();};Caman.prototype.finishInit=function(){var i,pixel,_i,_len,_ref;if(this.context==null){this.context=this.canvas.getContext('2d');}
|
| 41 |
-
this.originalWidth=this.preScaledWidth=this.width=this.canvas.width;this.originalHeight=this.preScaledHeight=this.height=this.canvas.height;this.hiDPIAdjustments();if(!this.hasId()){this.assignId();}
|
| 42 |
-
if(this.image!=null){this.context.drawImage(this.image,0,0,this.imageWidth(),this.imageHeight(),0,0,this.preScaledWidth,this.preScaledHeight);}
|
| 43 |
-
this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);this.pixelData=this.imageData.data;if(Caman.allowRevert){this.initializedPixelData=Util.dataArray(this.pixelData.length);this.originalPixelData=Util.dataArray(this.pixelData.length);_ref=this.pixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];this.initializedPixelData[i]=pixel;this.originalPixelData[i]=pixel;}}
|
| 44 |
-
this.dimensions={width:this.canvas.width,height:this.canvas.height};if(!Caman.NodeJS){Store.put(this.id,this);}
|
| 45 |
-
this.callback.call(this,this);return this.callback=function(){};};Caman.prototype.reloadCanvasData=function(){this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);return this.pixelData=this.imageData.data;};Caman.prototype.resetOriginalPixelData=function(){var i,pixel,_i,_len,_ref,_results;if(!Caman.allowRevert){throw"Revert disabled";}
|
| 46 |
-
this.originalPixelData=Util.dataArray(this.pixelData.length);_ref=this.pixelData;_results=[];for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];_results.push(this.originalPixelData[i]=pixel);}
|
| 47 |
-
return _results;};Caman.prototype.hasId=function(){return Caman.getAttrId(this.canvas)!=null;};Caman.prototype.assignId=function(){if(Caman.NodeJS||this.canvas.getAttribute('data-caman-id')){return;}
|
| 48 |
-
return this.canvas.setAttribute('data-caman-id',this.id);};Caman.prototype.hiDPIDisabled=function(){return this.canvas.getAttribute('data-caman-hidpi-disabled')!==null;};Caman.prototype.hiDPIAdjustments=function(){var ratio;if(Caman.NodeJS||!this.needsHiDPISwap()){return;}
|
| 49 |
-
ratio=this.hiDPIRatio();if(ratio!==1){Log.debug("HiDPI ratio = "+ratio);this.scaled=true;this.preScaledWidth=this.canvas.width;this.preScaledHeight=this.canvas.height;this.canvas.width=this.preScaledWidth*ratio;this.canvas.height=this.preScaledHeight*ratio;this.canvas.style.width=""+this.preScaledWidth+"px";this.canvas.style.height=""+this.preScaledHeight+"px";this.context.scale(ratio,ratio);this.width=this.originalWidth=this.canvas.width;return this.height=this.originalHeight=this.canvas.height;}};Caman.prototype.hiDPIRatio=function(){var backingStoreRatio,devicePixelRatio;devicePixelRatio=window.devicePixelRatio||1;backingStoreRatio=this.context.webkitBackingStorePixelRatio||this.context.mozBackingStorePixelRatio||this.context.msBackingStorePixelRatio||this.context.oBackingStorePixelRatio||this.context.backingStorePixelRatio||1;return devicePixelRatio/backingStoreRatio;};Caman.prototype.hiDPICapable=function(){return(window.devicePixelRatio!=null)&&window.devicePixelRatio!==1;};Caman.prototype.needsHiDPISwap=function(){if(this.hiDPIDisabled()||!this.hiDPICapable()){return false;}
|
| 50 |
-
return this.hiDPIReplacement()!==null;};Caman.prototype.hiDPIReplacement=function(){if(this.image==null){return null;}
|
| 51 |
-
return this.image.getAttribute('data-caman-hidpi');};Caman.prototype.replaceCanvas=function(newCanvas){var oldCanvas;oldCanvas=this.canvas;this.canvas=newCanvas;this.context=this.canvas.getContext('2d');if(!Caman.NodeJS){oldCanvas.parentNode.replaceChild(this.canvas,oldCanvas);}
|
| 52 |
-
this.width=this.canvas.width;this.height=this.canvas.height;this.reloadCanvasData();return this.dimensions={width:this.canvas.width,height:this.canvas.height};};Caman.prototype.render=function(callback){var _this=this;if(callback==null){callback=function(){};}
|
| 53 |
-
Event.trigger(this,"renderStart");return this.renderer.execute(function(){_this.context.putImageData(_this.imageData,0,0);return callback.call(_this);});};Caman.prototype.revert=function(updateContext){var i,pixel,_i,_len,_ref;if(updateContext==null){updateContext=true;}
|
| 54 |
-
if(!Caman.allowRevert){throw"Revert disabled";}
|
| 55 |
-
_ref=this.originalVisiblePixels();for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];this.pixelData[i]=pixel;}
|
| 56 |
-
if(updateContext){return this.context.putImageData(this.imageData,0,0);}};Caman.prototype.reset=function(){var canvas,ctx,i,imageData,pixel,pixelData,_i,_len,_ref;canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=this.originalWidth;canvas.height=this.originalHeight;ctx=canvas.getContext('2d');imageData=ctx.getImageData(0,0,canvas.width,canvas.height);pixelData=imageData.data;_ref=this.initializedPixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];pixelData[i]=pixel;}
|
| 57 |
-
ctx.putImageData(imageData,0,0);this.cropCoordinates={x:0,y:0};this.resized=false;return this.replaceCanvas(canvas);};Caman.prototype.originalVisiblePixels=function(){var canvas,coord,ctx,endX,endY,i,imageData,pixel,pixelData,pixels,scaledCanvas,startX,startY,width,_i,_j,_len,_ref,_ref1,_ref2,_ref3;if(!Caman.allowRevert){throw"Revert disabled";}
|
| 58 |
-
pixels=[];startX=this.cropCoordinates.x;endX=startX+this.width;startY=this.cropCoordinates.y;endY=startY+this.height;if(this.resized){canvas=document.createElement('canvas');canvas.width=this.originalWidth;canvas.height=this.originalHeight;ctx=canvas.getContext('2d');imageData=ctx.getImageData(0,0,canvas.width,canvas.height);pixelData=imageData.data;_ref=this.originalPixelData;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){pixel=_ref[i];pixelData[i]=pixel;}
|
| 59 |
-
ctx.putImageData(imageData,0,0);scaledCanvas=document.createElement('canvas');scaledCanvas.width=this.width;scaledCanvas.height=this.height;ctx=scaledCanvas.getContext('2d');ctx.drawImage(canvas,0,0,this.originalWidth,this.originalHeight,0,0,this.width,this.height);pixelData=ctx.getImageData(0,0,this.width,this.height).data;width=this.width;}else{pixelData=this.originalPixelData;width=this.originalWidth;}
|
| 60 |
-
for(i=_j=0,_ref1=pixelData.length;_j<_ref1;i=_j+=4){coord=Pixel.locationToCoordinates(i,width);if(((startX<=(_ref2=coord.x)&&_ref2<endX))&&((startY<=(_ref3=coord.y)&&_ref3<endY))){pixels.push(pixelData[i],pixelData[i+1],pixelData[i+2],pixelData[i+3]);}}
|
| 61 |
-
return pixels;};Caman.prototype.process=function(name,processFn){this.renderer.add({type:Filter.Type.Single,name:name,processFn:processFn});return this;};Caman.prototype.processKernel=function(name,adjust,divisor,bias){var i,_i,_ref;if(divisor==null){divisor=null;}
|
| 62 |
-
if(bias==null){bias=0;}
|
| 63 |
-
if(divisor==null){divisor=0;for(i=_i=0,_ref=adjust.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){divisor+=adjust[i];}}
|
| 64 |
-
this.renderer.add({type:Filter.Type.Kernel,name:name,adjust:adjust,divisor:divisor,bias:bias});return this;};Caman.prototype.processPlugin=function(plugin,args){this.renderer.add({type:Filter.Type.Plugin,plugin:plugin,args:args});return this;};Caman.prototype.newLayer=function(callback){var layer;layer=new Layer(this);this.canvasQueue.push(layer);this.renderer.add({type:Filter.Type.LayerDequeue});callback.call(layer);this.renderer.add({type:Filter.Type.LayerFinished});return this;};Caman.prototype.executeLayer=function(layer){return this.pushContext(layer);};Caman.prototype.pushContext=function(layer){this.layerStack.push(this.currentLayer);this.pixelStack.push(this.pixelData);this.currentLayer=layer;return this.pixelData=layer.pixelData;};Caman.prototype.popContext=function(){this.pixelData=this.pixelStack.pop();return this.currentLayer=this.layerStack.pop();};Caman.prototype.applyCurrentLayer=function(){return this.currentLayer.applyToParent();};return Caman;})(Module);Root.Caman=Caman;Caman.Analyze=(function(){function Analyze(c){this.c=c;}
|
| 65 |
-
Analyze.prototype.calculateLevels=function(){var i,levels,numPixels,_i,_j,_k,_ref;levels={r:{},g:{},b:{}};for(i=_i=0;_i<=255;i=++_i){levels.r[i]=0;levels.g[i]=0;levels.b[i]=0;}
|
| 66 |
-
for(i=_j=0,_ref=this.c.pixelData.length;_j<_ref;i=_j+=4){levels.r[this.c.pixelData[i]]++;levels.g[this.c.pixelData[i+1]]++;levels.b[this.c.pixelData[i+2]]++;}
|
| 67 |
-
numPixels=this.c.pixelData.length/4;for(i=_k=0;_k<=255;i=++_k){levels.r[i]/=numPixels;levels.g[i]/=numPixels;levels.b[i]/=numPixels;}
|
| 68 |
-
return levels;};return Analyze;})();Analyze=Caman.Analyze;Caman.DOMUpdated=function(){var img,imgs,parser,_i,_len,_results;imgs=document.querySelectorAll("img[data-caman]");if(!(imgs.length>0)){return;}
|
| 69 |
-
_results=[];for(_i=0,_len=imgs.length;_i<_len;_i++){img=imgs[_i];_results.push(parser=new CamanParser(img,function(){this.parse();return this.execute();}));}
|
| 70 |
-
return _results;};if(Caman.autoload){(function(){if(document.readyState==="complete"){return Caman.DOMUpdated();}else{return document.addEventListener("DOMContentLoaded",Caman.DOMUpdated,false);}})();}
|
| 71 |
-
CamanParser=(function(){var INST_REGEX;INST_REGEX="(\\w+)\\((.*?)\\)";function CamanParser(ele,ready){this.dataStr=ele.getAttribute('data-caman');this.caman=Caman(ele,ready.bind(this));}
|
| 72 |
-
CamanParser.prototype.parse=function(){var args,e,filter,func,inst,instFunc,m,r,unparsedInstructions,_i,_len,_ref,_results;this.ele=this.caman.canvas;r=new RegExp(INST_REGEX,'g');unparsedInstructions=this.dataStr.match(r);if(!(unparsedInstructions.length>0)){return;}
|
| 73 |
-
r=new RegExp(INST_REGEX);_results=[];for(_i=0,_len=unparsedInstructions.length;_i<_len;_i++){inst=unparsedInstructions[_i];_ref=inst.match(r),m=_ref[0],filter=_ref[1],args=_ref[2];instFunc=new Function("return function() { this."+filter+"("+args+"); };");try{func=instFunc();_results.push(func.call(this.caman));}catch(_error){e=_error;_results.push(Log.debug(e));}}
|
| 74 |
-
return _results;};CamanParser.prototype.execute=function(){var ele;ele=this.ele;return this.caman.render(function(){return ele.parentNode.replaceChild(this.toImage(),ele);});};return CamanParser;})();Caman.Blender=(function(){function Blender(){}
|
| 75 |
-
Blender.blenders={};Blender.register=function(name,func){return this.blenders[name]=func;};Blender.execute=function(name,rgbaLayer,rgbaParent){return this.blenders[name](rgbaLayer,rgbaParent);};return Blender;})();Blender=Caman.Blender;Caman.Calculate=(function(){function Calculate(){}
|
| 76 |
-
Calculate.distance=function(x1,y1,x2,y2){return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));};Calculate.randomRange=function(min,max,getFloat){var rand;if(getFloat==null){getFloat=false;}
|
| 77 |
-
rand=min+(Math.random()*(max-min));if(getFloat){return rand.toFixed(getFloat);}else{return Math.round(rand);}};Calculate.luminance=function(rgba){return(0.299*rgba.r)+(0.587*rgba.g)+(0.114*rgba.b);};Calculate.bezier=function(start,ctrl1,ctrl2,end,lowBound,highBound){var bezier,clamp,controlPoints,endX,i,j,lerp,next,prev,t,_i,_j,_ref;if(lowBound==null){lowBound=0;}
|
| 78 |
-
if(highBound==null){highBound=255;}
|
| 79 |
-
if(start[0]instanceof Array){controlPoints=start;lowBound=ctrl1;highBound=ctrl2;}else{controlPoints=[start,ctrl1,ctrl2,end];}
|
| 80 |
-
if(controlPoints.length<2){throw"Invalid number of arguments to bezier";}
|
| 81 |
-
bezier={};lerp=function(a,b,t){return a*(1-t)+b*t;};clamp=function(a,min,max){return Math.min(Math.max(a,min),max);};for(i=_i=0;_i<1000;i=++_i){t=i/1000;prev=controlPoints;while(prev.length>1){next=[];for(j=_j=0,_ref=prev.length-2;0<=_ref?_j<=_ref:_j>=_ref;j=0<=_ref?++_j:--_j){next.push([lerp(prev[j][0],prev[j+1][0],t),lerp(prev[j][1],prev[j+1][1],t)]);}
|
| 82 |
-
prev=next;}
|
| 83 |
-
bezier[Math.round(prev[0][0])]=Math.round(clamp(prev[0][1],lowBound,highBound));}
|
| 84 |
-
endX=controlPoints[controlPoints.length-1][0];bezier=Caman.Calculate.missingValues(bezier,endX);if(bezier[endX]==null){bezier[endX]=bezier[endX-1];}
|
| 85 |
-
return bezier;};Calculate.hermite=function(controlPoints,lowBound,highBound){var add,clamp,count,endX,fac0,fac1,fac2,fac3,i,j,lerp,m0,m1,mul,p,p0,p1,pointsPerSegment,pointsPerStep,pos,ret,sub,t,_i,_j,_ref,_this=this;if(controlPoints.length<2){throw"Invalid number of arguments to hermite";}
|
| 86 |
-
ret={};lerp=function(a,b,t){return a*(1-t)+b*t;};add=function(a,b,c,d){return[a[0]+b[0]+c[0]+d[0],a[1]+b[1]+c[1]+d[1]];};mul=function(a,b){return[a[0]*b[0],a[1]*b[1]];};sub=function(a,b){return[a[0]-b[0],a[1]-b[1]];};clamp=function(a,min,max){return Math.min(Math.max(a,min),max);};count=0;for(i=_i=0,_ref=controlPoints.length-2;0<=_ref?_i<=_ref:_i>=_ref;i=0<=_ref?++_i:--_i){p0=controlPoints[i];p1=controlPoints[i+1];pointsPerSegment=p1[0]-p0[0];pointsPerStep=1/pointsPerSegment;if(i===controlPoints.length-2){pointsPerStep=1/(pointsPerSegment-1);}
|
| 87 |
-
p=i>0?controlPoints[i-1]:p0;m0=mul(sub(p1,p),[0.5,0.5]);p=i<controlPoints.length-2?controlPoints[i+2]:p1;m1=mul(sub(p,p0),[0.5,0.5]);for(j=_j=0;0<=pointsPerSegment?_j<=pointsPerSegment:_j>=pointsPerSegment;j=0<=pointsPerSegment?++_j:--_j){t=j*pointsPerStep;fac0=2.0*t*t*t-3.0*t*t+1.0;fac1=t*t*t-2.0*t*t+t;fac2=-2.0*t*t*t+3.0*t*t;fac3=t*t*t-t*t;pos=add(mul(p0,[fac0,fac0]),mul(m0,[fac1,fac1]),mul(p1,[fac2,fac2]),mul(m1,[fac3,fac3]));ret[Math.round(pos[0])]=Math.round(clamp(pos[1],lowBound,highBound));count+=1;}}
|
| 88 |
-
endX=controlPoints[controlPoints.length-1][0];ret=Caman.Calculate.missingValues(ret,endX);return ret;};Calculate.missingValues=function(values,endX){var i,j,leftCoord,ret,rightCoord,_i,_j;if(Object.keys(values).length<endX+1){ret={};for(i=_i=0;0<=endX?_i<=endX:_i>=endX;i=0<=endX?++_i:--_i){if(values[i]!=null){ret[i]=values[i];}else{leftCoord=[i-1,ret[i-1]];for(j=_j=i;i<=endX?_j<=endX:_j>=endX;j=i<=endX?++_j:--_j){if(values[j]!=null){rightCoord=[j,values[j]];break;}}
|
| 89 |
-
ret[i]=leftCoord[1]+((rightCoord[1]-leftCoord[1])/(rightCoord[0]-leftCoord[0]))*(i-leftCoord[0]);}}
|
| 90 |
-
return ret;}
|
| 91 |
-
return values;};return Calculate;})();Calculate=Caman.Calculate;Caman.Convert=(function(){function Convert(){}
|
| 92 |
-
Convert.hexToRGB=function(hex){var b,g,r;if(hex.charAt(0)==="#"){hex=hex.substr(1);}
|
| 93 |
-
r=parseInt(hex.substr(0,2),16);g=parseInt(hex.substr(2,2),16);b=parseInt(hex.substr(4,2),16);return{r:r,g:g,b:b};};Convert.rgbToHSL=function(r,g,b){var d,h,l,max,min,s;if(typeof r==="object"){g=r.g;b=r.b;r=r.r;}
|
| 94 |
-
r/=255;g/=255;b/=255;max=Math.max(r,g,b);min=Math.min(r,g,b);l=(max+min)/2;if(max===min){h=s=0;}else{d=max-min;s=l>0.5?d/(2-max-min):d/(max+min);h=(function(){switch(max){case r:return(g-b)/d+(g<b?6:0);case g:return(b-r)/d+2;case b:return(r-g)/d+4;}})();h/=6;}
|
| 95 |
-
return{h:h,s:s,l:l};};Convert.hslToRGB=function(h,s,l){var b,g,p,q,r;if(typeof h==="object"){s=h.s;l=h.l;h=h.h;}
|
| 96 |
-
if(s===0){r=g=b=l;}else{q=l<0.5?l*(1+s):l+s-l*s;p=2*l-q;r=this.hueToRGB(p,q,h+1/3);g=this.hueToRGB(p,q,h);b=this.hueToRGB(p,q,h-1/3);}
|
| 97 |
-
return{r:r*255,g:g*255,b:b*255};};Convert.hueToRGB=function(p,q,t){if(t<0){t+=1;}
|
| 98 |
-
if(t>1){t-=1;}
|
| 99 |
-
if(t<1/6){return p+(q-p)*6*t;}
|
| 100 |
-
if(t<1/2){return q;}
|
| 101 |
-
if(t<2/3){return p+(q-p)*(2/3-t)*6;}
|
| 102 |
-
return p;};Convert.rgbToHSV=function(r,g,b){var d,h,max,min,s,v;r/=255;g/=255;b/=255;max=Math.max(r,g,b);min=Math.min(r,g,b);v=max;d=max-min;s=max===0?0:d/max;if(max===min){h=0;}else{h=(function(){switch(max){case r:return(g-b)/d+(g<b?6:0);case g:return(b-r)/d+2;case b:return(r-g)/d+4;}})();h/=6;}
|
| 103 |
-
return{h:h,s:s,v:v};};Convert.hsvToRGB=function(h,s,v){var b,f,g,i,p,q,r,t;i=Math.floor(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);switch(i%6){case 0:r=v;g=t;b=p;break;case 1:r=q;g=v;b=p;break;case 2:r=p;g=v;b=t;break;case 3:r=p;g=q;b=v;break;case 4:r=t;g=p;b=v;break;case 5:r=v;g=p;b=q;}
|
| 104 |
-
return{r:Math.floor(r*255),g:Math.floor(g*255),b:Math.floor(b*255)};};Convert.rgbToXYZ=function(r,g,b){var x,y,z;r/=255;g/=255;b/=255;if(r>0.04045){r=Math.pow((r+0.055)/1.055,2.4);}else{r/=12.92;}
|
| 105 |
-
if(g>0.04045){g=Math.pow((g+0.055)/1.055,2.4);}else{g/=12.92;}
|
| 106 |
-
if(b>0.04045){b=Math.pow((b+0.055)/1.055,2.4);}else{b/=12.92;}
|
| 107 |
-
x=r*0.4124+g*0.3576+b*0.1805;y=r*0.2126+g*0.7152+b*0.0722;z=r*0.0193+g*0.1192+b*0.9505;return{x:x*100,y:y*100,z:z*100};};Convert.xyzToRGB=function(x,y,z){var b,g,r;x/=100;y/=100;z/=100;r=(3.2406*x)+(-1.5372*y)+(-0.4986*z);g=(-0.9689*x)+(1.8758*y)+(0.0415*z);b=(0.0557*x)+(-0.2040*y)+(1.0570*z);if(r>0.0031308){r=(1.055*Math.pow(r,0.4166666667))-0.055;}else{r*=12.92;}
|
| 108 |
-
if(g>0.0031308){g=(1.055*Math.pow(g,0.4166666667))-0.055;}else{g*=12.92;}
|
| 109 |
-
if(b>0.0031308){b=(1.055*Math.pow(b,0.4166666667))-0.055;}else{b*=12.92;}
|
| 110 |
-
return{r:r*255,g:g*255,b:b*255};};Convert.xyzToLab=function(x,y,z){var a,b,l,whiteX,whiteY,whiteZ;if(typeof x==="object"){y=x.y;z=x.z;x=x.x;}
|
| 111 |
-
whiteX=95.047;whiteY=100.0;whiteZ=108.883;x/=whiteX;y/=whiteY;z/=whiteZ;if(x>0.008856451679){x=Math.pow(x,0.3333333333);}else{x=(7.787037037*x)+0.1379310345;}
|
| 112 |
-
if(y>0.008856451679){y=Math.pow(y,0.3333333333);}else{y=(7.787037037*y)+0.1379310345;}
|
| 113 |
-
if(z>0.008856451679){z=Math.pow(z,0.3333333333);}else{z=(7.787037037*z)+0.1379310345;}
|
| 114 |
-
l=116*y-16;a=500*(x-y);b=200*(y-z);return{l:l,a:a,b:b};};Convert.labToXYZ=function(l,a,b){var x,y,z;if(typeof l==="object"){a=l.a;b=l.b;l=l.l;}
|
| 115 |
-
y=(l+16)/116;x=y+(a/500);z=y-(b/200);if(x>0.2068965517){x=x*x*x;}else{x=0.1284185493*(x-0.1379310345);}
|
| 116 |
-
if(y>0.2068965517){y=y*y*y;}else{y=0.1284185493*(y-0.1379310345);}
|
| 117 |
-
if(z>0.2068965517){z=z*z*z;}else{z=0.1284185493*(z-0.1379310345);}
|
| 118 |
-
return{x:x*95.047,y:y*100.0,z:z*108.883};};Convert.rgbToLab=function(r,g,b){var xyz;if(typeof r==="object"){g=r.g;b=r.b;r=r.r;}
|
| 119 |
-
xyz=this.rgbToXYZ(r,g,b);return this.xyzToLab(xyz);};Convert.labToRGB=function(l,a,b){};return Convert;})();Convert=Caman.Convert;Caman.Event=(function(){function Event(){}
|
| 120 |
-
Event.events={};Event.types=["processStart","processComplete","renderStart","renderFinished","blockStarted","blockFinished"];Event.trigger=function(target,type,data){var event,_i,_len,_ref,_results;if(data==null){data=null;}
|
| 121 |
-
if(this.events[type]&&this.events[type].length){_ref=this.events[type];_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){event=_ref[_i];if(event.target===null||target.id===event.target.id){_results.push(event.fn.call(target,data));}else{_results.push(void 0);}}
|
| 122 |
-
return _results;}};Event.listen=function(target,type,fn){var _fn,_type;if(typeof target==="string"){_type=target;_fn=type;target=null;type=_type;fn=_fn;}
|
| 123 |
-
if(__indexOf.call(this.types,type)<0){return false;}
|
| 124 |
-
if(!this.events[type]){this.events[type]=[];}
|
| 125 |
-
this.events[type].push({target:target,fn:fn});return true;};return Event;})();Event=Caman.Event;Caman.Filter=(function(){function Filter(){}
|
| 126 |
-
Filter.Type={Single:1,Kernel:2,LayerDequeue:3,LayerFinished:4,LoadOverlay:5,Plugin:6};Filter.register=function(name,filterFunc){return Caman.prototype[name]=filterFunc;};return Filter;})();Filter=Caman.Filter;Caman.IO=(function(){function IO(){}
|
| 127 |
-
IO.domainRegex=/(?:(?:http|https):\/\/)((?:\w+)\.(?:(?:\w|\.)+))/;IO.isRemote=function(img){if(img==null){return false;}
|
| 128 |
-
if(this.corsEnabled(img)){return false;}
|
| 129 |
-
return this.isURLRemote(img.src);};IO.corsEnabled=function(img){var _ref;return(img.crossOrigin!=null)&&((_ref=img.crossOrigin.toLowerCase())==='anonymous'||_ref==='use-credentials');};IO.isURLRemote=function(url){var matches;matches=url.match(this.domainRegex);if(matches){return matches[1]!==document.domain;}else{return false;}};IO.remoteCheck=function(src){if(this.isURLRemote(src)){if(!Caman.remoteProxy.length){Log.info("Attempting to load a remote image without a configured proxy. URL: "+src);}else{if(Caman.isURLRemote(Caman.remoteProxy)){Log.info("Cannot use a remote proxy for loading images.");return;}
|
| 130 |
-
return this.proxyUrl(src);}}};IO.proxyUrl=function(src){return""+Caman.remoteProxy+"?"+Caman.proxyParam+"="+(encodeURIComponent(src));};IO.useProxy=function(lang){var langToExt;langToExt={ruby:'rb',python:'py',perl:'pl',javascript:'js'};lang=lang.toLowerCase();if(langToExt[lang]!=null){lang=langToExt[lang];}
|
| 131 |
-
return"proxies/caman_proxy."+lang;};return IO;})();Caman.prototype.save=function(){if(typeof exports!=="undefined"&&exports!==null){return this.nodeSave.apply(this,arguments);}else{return this.browserSave.apply(this,arguments);}};Caman.prototype.browserSave=function(type){var image;if(type==null){type="png";}
|
| 132 |
-
type=type.toLowerCase();image=this.toBase64(type).replace("image/"+type,"image/octet-stream");return document.location.href=image;};Caman.prototype.nodeSave=function(file,overwrite,callback){var e,stats;if(overwrite==null){overwrite=true;}
|
| 133 |
-
if(callback==null){callback=null;}
|
| 134 |
-
try{stats=fs.statSync(file);if(stats.isFile()&&!overwrite){return false;}}catch(_error){e=_error;Log.debug("Creating output file "+file);}
|
| 135 |
-
return fs.writeFile(file,this.canvas.toBuffer(),function(err){Log.debug("Finished writing to "+file);if(callback){return callback.call(this,err);}});};Caman.prototype.toImage=function(type){var img;img=new Image();img.src=this.toBase64(type);img.width=this.dimensions.width;img.height=this.dimensions.height;if(window.devicePixelRatio){img.width/=window.devicePixelRatio;img.height/=window.devicePixelRatio;}
|
| 136 |
-
return img;};Caman.prototype.toBase64=function(type){if(type==null){type="png";}
|
| 137 |
-
type=type.toLowerCase();return this.canvas.toDataURL("image/"+type);};IO=Caman.IO;Caman.Layer=(function(){function Layer(c){this.c=c;this.filter=this.c;this.options={blendingMode:'normal',opacity:1.0};this.layerID=Util.uniqid.get();this.canvas=typeof exports!=="undefined"&&exports!==null?new Canvas():document.createElement('canvas');this.canvas.width=this.c.dimensions.width;this.canvas.height=this.c.dimensions.height;this.context=this.canvas.getContext('2d');this.context.createImageData(this.canvas.width,this.canvas.height);this.imageData=this.context.getImageData(0,0,this.canvas.width,this.canvas.height);this.pixelData=this.imageData.data;}
|
| 138 |
-
Layer.prototype.newLayer=function(cb){return this.c.newLayer.call(this.c,cb);};Layer.prototype.setBlendingMode=function(mode){this.options.blendingMode=mode;return this;};Layer.prototype.opacity=function(opacity){this.options.opacity=opacity/100;return this;};Layer.prototype.copyParent=function(){var i,parentData,_i,_ref;parentData=this.c.pixelData;for(i=_i=0,_ref=this.c.pixelData.length;_i<_ref;i=_i+=4){this.pixelData[i]=parentData[i];this.pixelData[i+1]=parentData[i+1];this.pixelData[i+2]=parentData[i+2];this.pixelData[i+3]=parentData[i+3];}
|
| 139 |
-
return this;};Layer.prototype.fillColor=function(){return this.c.fillColor.apply(this.c,arguments);};Layer.prototype.overlayImage=function(image){if(typeof image==="object"){image=image.src;}else if(typeof image==="string"&&image[0]==="#"){image=$(image).src;}
|
| 140 |
-
if(!image){return this;}
|
| 141 |
-
this.c.renderer.renderQueue.push({type:Filter.Type.LoadOverlay,src:image,layer:this});return this;};Layer.prototype.applyToParent=function(){var i,layerData,parentData,result,rgbaLayer,rgbaParent,_i,_ref,_results;parentData=this.c.pixelStack[this.c.pixelStack.length-1];layerData=this.c.pixelData;_results=[];for(i=_i=0,_ref=layerData.length;_i<_ref;i=_i+=4){rgbaParent={r:parentData[i],g:parentData[i+1],b:parentData[i+2],a:parentData[i+3]};rgbaLayer={r:layerData[i],g:layerData[i+1],b:layerData[i+2],a:layerData[i+3]};result=Blender.execute(this.options.blendingMode,rgbaLayer,rgbaParent);result.r=Util.clampRGB(result.r);result.g=Util.clampRGB(result.g);result.b=Util.clampRGB(result.b);if(result.a==null){result.a=rgbaLayer.a;}
|
| 142 |
-
parentData[i]=rgbaParent.r-((rgbaParent.r-result.r)*(this.options.opacity*(result.a/255)));parentData[i+1]=rgbaParent.g-((rgbaParent.g-result.g)*(this.options.opacity*(result.a/255)));_results.push(parentData[i+2]=rgbaParent.b-((rgbaParent.b-result.b)*(this.options.opacity*(result.a/255))));}
|
| 143 |
-
return _results;};return Layer;})();Layer=Caman.Layer;Caman.Logger=(function(){function Logger(){var name,_i,_len,_ref;_ref=['log','info','warn','error'];for(_i=0,_len=_ref.length;_i<_len;_i++){name=_ref[_i];this[name]=(function(name){return function(){var args,e;args=1<=arguments.length?__slice.call(arguments,0):[];if(!Caman.DEBUG){return;}
|
| 144 |
-
try{return console[name].apply(console,args);}catch(_error){e=_error;return console[name](args);}};})(name);}
|
| 145 |
-
this.debug=this.log;}
|
| 146 |
-
return Logger;})();Log=new Caman.Logger();Caman.Pixel=(function(){Pixel.coordinatesToLocation=function(x,y,width){return(y*width+x)*4;};Pixel.locationToCoordinates=function(loc,width){var x,y;y=Math.floor(loc/(width*4));x=(loc%(width*4))/4;return{x:x,y:y};};function Pixel(r,g,b,a,c){this.r=r!=null?r:0;this.g=g!=null?g:0;this.b=b!=null?b:0;this.a=a!=null?a:255;this.c=c!=null?c:null;this.loc=0;}
|
| 147 |
-
Pixel.prototype.setContext=function(c){return this.c=c;};Pixel.prototype.locationXY=function(){var x,y;if(this.c==null){throw"Requires a CamanJS context";}
|
| 148 |
-
y=this.c.dimensions.height-Math.floor(this.loc/(this.c.dimensions.width*4));x=(this.loc%(this.c.dimensions.width*4))/4;return{x:x,y:y};};Pixel.prototype.pixelAtLocation=function(loc){if(this.c==null){throw"Requires a CamanJS context";}
|
| 149 |
-
return new Pixel(this.c.pixelData[loc],this.c.pixelData[loc+1],this.c.pixelData[loc+2],this.c.pixelData[loc+3],this.c);};Pixel.prototype.getPixelRelative=function(horiz,vert){var newLoc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 150 |
-
newLoc=this.loc+(this.c.dimensions.width*4*(vert*-1))+(4*horiz);if(newLoc>this.c.pixelData.length||newLoc<0){return new Pixel(0,0,0,255,this.c);}
|
| 151 |
-
return this.pixelAtLocation(newLoc);};Pixel.prototype.putPixelRelative=function(horiz,vert,rgba){var nowLoc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 152 |
-
nowLoc=this.loc+(this.c.dimensions.width*4*(vert*-1))+(4*horiz);if(newLoc>this.c.pixelData.length||newLoc<0){return;}
|
| 153 |
-
this.c.pixelData[newLoc]=rgba.r;this.c.pixelData[newLoc+1]=rgba.g;this.c.pixelData[newLoc+2]=rgba.b;this.c.pixelData[newLoc+3]=rgba.a;return true;};Pixel.prototype.getPixel=function(x,y){var loc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 154 |
-
loc=this.coordinatesToLocation(x,y,this.width);return this.pixelAtLocation(loc);};Pixel.prototype.putPixel=function(x,y,rgba){var loc;if(this.c==null){throw"Requires a CamanJS context";}
|
| 155 |
-
loc=this.coordinatesToLocation(x,y,this.width);this.c.pixelData[loc]=rgba.r;this.c.pixelData[loc+1]=rgba.g;this.c.pixelData[loc+2]=rgba.b;return this.c.pixelData[loc+3]=rgba.a;};Pixel.prototype.toString=function(){return this.toKey();};Pixel.prototype.toHex=function(includeAlpha){var hex;if(includeAlpha==null){includeAlpha=false;}
|
| 156 |
-
hex='#'+this.r.toString(16)+this.g.toString(16)+this.b.toString(16);if(includeAlpha){return hex+this.a.toString(16);}else{return hex;}};return Pixel;})();Pixel=Caman.Pixel;Caman.Plugin=(function(){function Plugin(){}
|
| 157 |
-
Plugin.plugins={};Plugin.register=function(name,plugin){return this.plugins[name]=plugin;};Plugin.execute=function(context,name,args){return this.plugins[name].apply(context,args);};return Plugin;})();Plugin=Caman.Plugin;Caman.Renderer=(function(){Renderer.Blocks=Caman.NodeJS?require('os').cpus().length:4;function Renderer(c){this.c=c;this.processNext=__bind(this.processNext,this);this.renderQueue=[];this.modPixelData=null;}
|
| 158 |
-
Renderer.prototype.add=function(job){if(job==null){return;}
|
| 159 |
-
return this.renderQueue.push(job);};Renderer.prototype.processNext=function(){var layer;if(this.renderQueue.length===0){Event.trigger(this,"renderFinished");if(this.finishedFn!=null){this.finishedFn.call(this.c);}
|
| 160 |
-
return this;}
|
| 161 |
-
this.currentJob=this.renderQueue.shift();switch(this.currentJob.type){case Filter.Type.LayerDequeue:layer=this.c.canvasQueue.shift();this.c.executeLayer(layer);return this.processNext();case Filter.Type.LayerFinished:this.c.applyCurrentLayer();this.c.popContext();return this.processNext();case Filter.Type.LoadOverlay:return this.loadOverlay(this.currentJob.layer,this.currentJob.src);case Filter.Type.Plugin:return this.executePlugin();default:return this.executeFilter();}};Renderer.prototype.execute=function(callback){this.finishedFn=callback;this.modPixelData=Util.dataArray(this.c.pixelData.length);return this.processNext();};Renderer.prototype.eachBlock=function(fn){var blockN,blockPixelLength,bnum,end,f,i,lastBlockN,n,start,_i,_ref,_results,_this=this;this.blocksDone=0;n=this.c.pixelData.length;blockPixelLength=Math.floor((n/4)/Renderer.Blocks);blockN=blockPixelLength*4;lastBlockN=blockN+((n/4)%Renderer.Blocks)*4;_results=[];for(i=_i=0,_ref=Renderer.Blocks;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){start=i*blockN;end=start+(i===Renderer.Blocks-1?lastBlockN:blockN);if(Caman.NodeJS){f=Fiber(function(){return fn.call(_this,i,start,end);});bnum=f.run();_results.push(this.blockFinished(bnum));}else{_results.push(setTimeout((function(i,start,end){return function(){return fn.call(_this,i,start,end);};})(i,start,end),0));}}
|
| 162 |
-
return _results;};Renderer.prototype.executeFilter=function(){Event.trigger(this.c,"processStart",this.currentJob);if(this.currentJob.type===Filter.Type.Single){return this.eachBlock(this.renderBlock);}else{return this.eachBlock(this.renderKernel);}};Renderer.prototype.executePlugin=function(){Log.debug("Executing plugin "+this.currentJob.plugin);Plugin.execute(this.c,this.currentJob.plugin,this.currentJob.args);Log.debug("Plugin "+this.currentJob.plugin+" finished!");return this.processNext();};Renderer.prototype.renderBlock=function(bnum,start,end){var i,pixel,_i;Log.debug("Block #"+bnum+" - Filter: "+this.currentJob.name+", Start: "+start+", End: "+end);Event.trigger(this.c,"blockStarted",{blockNum:bnum,totalBlocks:Renderer.Blocks,startPixel:start,endPixel:end});pixel=new Pixel();pixel.setContext(this.c);for(i=_i=start;_i<end;i=_i+=4){pixel.loc=i;pixel.r=this.c.pixelData[i];pixel.g=this.c.pixelData[i+1];pixel.b=this.c.pixelData[i+2];pixel.a=this.c.pixelData[i+3];this.currentJob.processFn(pixel);this.c.pixelData[i]=Util.clampRGB(pixel.r);this.c.pixelData[i+1]=Util.clampRGB(pixel.g);this.c.pixelData[i+2]=Util.clampRGB(pixel.b);this.c.pixelData[i+3]=Util.clampRGB(pixel.a);}
|
| 163 |
-
if(Caman.NodeJS){return Fiber["yield"](bnum);}else{return this.blockFinished(bnum);}};Renderer.prototype.renderKernel=function(bnum,start,end){var adjust,adjustSize,bias,builder,builderIndex,divisor,i,j,k,kernel,n,name,p,pixel,res,_i,_j,_k;name=this.currentJob.name;bias=this.currentJob.bias;divisor=this.currentJob.divisor;n=this.c.pixelData.length;adjust=this.currentJob.adjust;adjustSize=Math.sqrt(adjust.length);kernel=[];Log.debug("Rendering kernel - Filter: "+this.currentJob.name);start=Math.max(start,this.c.dimensions.width*4*((adjustSize-1)/2));end=Math.min(end,n-(this.c.dimensions.width*4*((adjustSize-1)/2)));builder=(adjustSize-1)/2;pixel=new Pixel();pixel.setContext(this.c);for(i=_i=start;_i<end;i=_i+=4){pixel.loc=i;builderIndex=0;for(j=_j=-builder;-builder<=builder?_j<=builder:_j>=builder;j=-builder<=builder?++_j:--_j){for(k=_k=builder;builder<=-builder?_k<=-builder:_k>=-builder;k=builder<=-builder?++_k:--_k){p=pixel.getPixelRelative(j,k);kernel[builderIndex*3]=p.r;kernel[builderIndex*3+1]=p.g;kernel[builderIndex*3+2]=p.b;builderIndex++;}}
|
| 164 |
-
res=this.processKernel(adjust,kernel,divisor,bias);this.modPixelData[i]=Util.clampRGB(res.r);this.modPixelData[i+1]=Util.clampRGB(res.g);this.modPixelData[i+2]=Util.clampRGB(res.b);this.modPixelData[i+3]=this.c.pixelData[i+3];}
|
| 165 |
-
if(Caman.NodeJS){return Fiber["yield"](bnum);}else{return this.blockFinished(bnum);}};Renderer.prototype.blockFinished=function(bnum){var i,_i,_ref;if(bnum>=0){Log.debug("Block #"+bnum+" finished! Filter: "+this.currentJob.name);}
|
| 166 |
-
this.blocksDone++;Event.trigger(this.c,"blockFinished",{blockNum:bnum,blocksFinished:this.blocksDone,totalBlocks:Renderer.Blocks});if(this.blocksDone===Renderer.Blocks){if(this.currentJob.type===Filter.Type.Kernel){for(i=_i=0,_ref=this.c.pixelData.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){this.c.pixelData[i]=this.modPixelData[i];}}
|
| 167 |
-
if(bnum>=0){Log.debug("Filter "+this.currentJob.name+" finished!");}
|
| 168 |
-
Event.trigger(this.c,"processComplete",this.currentJob);return this.processNext();}};Renderer.prototype.processKernel=function(adjust,kernel,divisor,bias){var i,val,_i,_ref;val={r:0,g:0,b:0};for(i=_i=0,_ref=adjust.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){val.r+=adjust[i]*kernel[i*3];val.g+=adjust[i]*kernel[i*3+1];val.b+=adjust[i]*kernel[i*3+2];}
|
| 169 |
-
val.r=(val.r/divisor)+bias;val.g=(val.g/divisor)+bias;val.b=(val.b/divisor)+bias;return val;};Renderer.prototype.loadOverlay=function(layer,src){var img,proxyUrl,_this=this;img=new Image();img.onload=function(){layer.context.drawImage(img,0,0,_this.c.dimensions.width,_this.c.dimensions.height);layer.imageData=layer.context.getImageData(0,0,_this.c.dimensions.width,_this.c.dimensions.height);layer.pixelData=layer.imageData.data;_this.c.pixelData=layer.pixelData;return _this.processNext();};proxyUrl=IO.remoteCheck(src);return img.src=proxyUrl!=null?proxyUrl:src;};return Renderer;})();Renderer=Caman.Renderer;Caman.Store=(function(){function Store(){}
|
| 170 |
-
Store.items={};Store.has=function(search){return this.items[search]!=null;};Store.get=function(search){return this.items[search];};Store.put=function(name,obj){return this.items[name]=obj;};Store.execute=function(search,callback){var _this=this;setTimeout(function(){return callback.call(_this.get(search),_this.get(search));},0);return this.get(search);};Store.flush=function(name){if(name==null){name=false;}
|
| 171 |
-
if(name){return delete this.items[name];}else{return this.items={};}};return Store;})();Store=Caman.Store;Blender.register("normal",function(rgbaLayer,rgbaParent){return{r:rgbaLayer.r,g:rgbaLayer.g,b:rgbaLayer.b};});Blender.register("multiply",function(rgbaLayer,rgbaParent){return{r:(rgbaLayer.r*rgbaParent.r)/255,g:(rgbaLayer.g*rgbaParent.g)/255,b:(rgbaLayer.b*rgbaParent.b)/255};});Blender.register("screen",function(rgbaLayer,rgbaParent){return{r:255-(((255-rgbaLayer.r)*(255-rgbaParent.r))/255),g:255-(((255-rgbaLayer.g)*(255-rgbaParent.g))/255),b:255-(((255-rgbaLayer.b)*(255-rgbaParent.b))/255)};});Blender.register("overlay",function(rgbaLayer,rgbaParent){var result;result={};result.r=rgbaParent.r>128?255-2*(255-rgbaLayer.r)*(255-rgbaParent.r)/255:(rgbaParent.r*rgbaLayer.r*2)/255;result.g=rgbaParent.g>128?255-2*(255-rgbaLayer.g)*(255-rgbaParent.g)/255:(rgbaParent.g*rgbaLayer.g*2)/255;result.b=rgbaParent.b>128?255-2*(255-rgbaLayer.b)*(255-rgbaParent.b)/255:(rgbaParent.b*rgbaLayer.b*2)/255;return result;});Blender.register("difference",function(rgbaLayer,rgbaParent){return{r:rgbaLayer.r-rgbaParent.r,g:rgbaLayer.g-rgbaParent.g,b:rgbaLayer.b-rgbaParent.b};});Blender.register("addition",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r+rgbaLayer.r,g:rgbaParent.g+rgbaLayer.g,b:rgbaParent.b+rgbaLayer.b};});Blender.register("exclusion",function(rgbaLayer,rgbaParent){return{r:128-2*(rgbaParent.r-128)*(rgbaLayer.r-128)/255,g:128-2*(rgbaParent.g-128)*(rgbaLayer.g-128)/255,b:128-2*(rgbaParent.b-128)*(rgbaLayer.b-128)/255};});Blender.register("softLight",function(rgbaLayer,rgbaParent){var result;result={};result.r=rgbaParent.r>128?255-((255-rgbaParent.r)*(255-(rgbaLayer.r-128)))/255:(rgbaParent.r*(rgbaLayer.r+128))/255;result.g=rgbaParent.g>128?255-((255-rgbaParent.g)*(255-(rgbaLayer.g-128)))/255:(rgbaParent.g*(rgbaLayer.g+128))/255;result.b=rgbaParent.b>128?255-((255-rgbaParent.b)*(255-(rgbaLayer.b-128)))/255:(rgbaParent.b*(rgbaLayer.b+128))/255;return result;});Blender.register("lighten",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r>rgbaLayer.r?rgbaParent.r:rgbaLayer.r,g:rgbaParent.g>rgbaLayer.g?rgbaParent.g:rgbaLayer.g,b:rgbaParent.b>rgbaLayer.b?rgbaParent.b:rgbaLayer.b};});Blender.register("darken",function(rgbaLayer,rgbaParent){return{r:rgbaParent.r>rgbaLayer.r?rgbaLayer.r:rgbaParent.r,g:rgbaParent.g>rgbaLayer.g?rgbaLayer.g:rgbaParent.g,b:rgbaParent.b>rgbaLayer.b?rgbaLayer.b:rgbaParent.b};});Filter.register("fillColor",function(){var color;if(arguments.length===1){color=Convert.hexToRGB(arguments[0]);}else{color={r:arguments[0],g:arguments[1],b:arguments[2]};}
|
| 172 |
-
return this.process("fillColor",function(rgba){rgba.r=color.r;rgba.g=color.g;rgba.b=color.b;rgba.a=255;return rgba;});});Filter.register("brightness",function(adjust){adjust=Math.floor(255*(adjust/100));return this.process("brightness",function(rgba){rgba.r+=adjust;rgba.g+=adjust;rgba.b+=adjust;return rgba;});});Filter.register("saturation",function(adjust){adjust*=-0.01;return this.process("saturation",function(rgba){var max;max=Math.max(rgba.r,rgba.g,rgba.b);if(rgba.r!==max){rgba.r+=(max-rgba.r)*adjust;}
|
| 173 |
-
if(rgba.g!==max){rgba.g+=(max-rgba.g)*adjust;}
|
| 174 |
-
if(rgba.b!==max){rgba.b+=(max-rgba.b)*adjust;}
|
| 175 |
-
return rgba;});});Filter.register("vibrance",function(adjust){adjust*=-1;return this.process("vibrance",function(rgba){var amt,avg,max;max=Math.max(rgba.r,rgba.g,rgba.b);avg=(rgba.r+rgba.g+rgba.b)/3;amt=((Math.abs(max-avg)*2/255)*adjust)/100;if(rgba.r!==max){rgba.r+=(max-rgba.r)*amt;}
|
| 176 |
-
if(rgba.g!==max){rgba.g+=(max-rgba.g)*amt;}
|
| 177 |
-
if(rgba.b!==max){rgba.b+=(max-rgba.b)*amt;}
|
| 178 |
-
return rgba;});});Filter.register("greyscale",function(adjust){return this.process("greyscale",function(rgba){var avg;avg=Calculate.luminance(rgba);rgba.r=avg;rgba.g=avg;rgba.b=avg;return rgba;});});Filter.register("contrast",function(adjust){adjust=Math.pow((adjust+100)/100,2);return this.process("contrast",function(rgba){rgba.r/=255;rgba.r-=0.5;rgba.r*=adjust;rgba.r+=0.5;rgba.r*=255;rgba.g/=255;rgba.g-=0.5;rgba.g*=adjust;rgba.g+=0.5;rgba.g*=255;rgba.b/=255;rgba.b-=0.5;rgba.b*=adjust;rgba.b+=0.5;rgba.b*=255;return rgba;});});Filter.register("hue",function(adjust){return this.process("hue",function(rgba){var b,g,h,hsv,r,_ref;hsv=Convert.rgbToHSV(rgba.r,rgba.g,rgba.b);h=hsv.h*100;h+=Math.abs(adjust);h=h%100;h/=100;hsv.h=h;_ref=Convert.hsvToRGB(hsv.h,hsv.s,hsv.v),r=_ref.r,g=_ref.g,b=_ref.b;rgba.r=r;rgba.g=g;rgba.b=b;return rgba;});});Filter.register("colorize",function(){var level,rgb;if(arguments.length===2){rgb=Convert.hexToRGB(arguments[0]);level=arguments[1];}else if(arguments.length===4){rgb={r:arguments[0],g:arguments[1],b:arguments[2]};level=arguments[3];}
|
| 179 |
-
return this.process("colorize",function(rgba){rgba.r-=(rgba.r-rgb.r)*(level/100);rgba.g-=(rgba.g-rgb.g)*(level/100);rgba.b-=(rgba.b-rgb.b)*(level/100);return rgba;});});Filter.register("invert",function(){return this.process("invert",function(rgba){rgba.r=255-rgba.r;rgba.g=255-rgba.g;rgba.b=255-rgba.b;return rgba;});});Filter.register("sepia",function(adjust){if(adjust==null){adjust=100;}
|
| 180 |
-
adjust/=100;return this.process("sepia",function(rgba){rgba.r=Math.min(255,(rgba.r*(1-(0.607*adjust)))+(rgba.g*(0.769*adjust))+(rgba.b*(0.189*adjust)));rgba.g=Math.min(255,(rgba.r*(0.349*adjust))+(rgba.g*(1-(0.314*adjust)))+(rgba.b*(0.168*adjust)));rgba.b=Math.min(255,(rgba.r*(0.272*adjust))+(rgba.g*(0.534*adjust))+(rgba.b*(1-(0.869*adjust))));return rgba;});});Filter.register("gamma",function(adjust){return this.process("gamma",function(rgba){rgba.r=Math.pow(rgba.r/255,adjust)*255;rgba.g=Math.pow(rgba.g/255,adjust)*255;rgba.b=Math.pow(rgba.b/255,adjust)*255;return rgba;});});Filter.register("noise",function(adjust){adjust=Math.abs(adjust)*2.55;return this.process("noise",function(rgba){var rand;rand=Calculate.randomRange(adjust*-1,adjust);rgba.r+=rand;rgba.g+=rand;rgba.b+=rand;return rgba;});});Filter.register("clip",function(adjust){adjust=Math.abs(adjust)*2.55;return this.process("clip",function(rgba){if(rgba.r>255-adjust){rgba.r=255;}else if(rgba.r<adjust){rgba.r=0;}
|
| 181 |
-
if(rgba.g>255-adjust){rgba.g=255;}else if(rgba.g<adjust){rgba.g=0;}
|
| 182 |
-
if(rgba.b>255-adjust){rgba.b=255;}else if(rgba.b<adjust){rgba.b=0;}
|
| 183 |
-
return rgba;});});Filter.register("channels",function(options){var chan,value;if(typeof options!=="object"){return this;}
|
| 184 |
-
for(chan in options){if(!__hasProp.call(options,chan))continue;value=options[chan];if(value===0){delete options[chan];continue;}
|
| 185 |
-
options[chan]/=100;}
|
| 186 |
-
if(options.length===0){return this;}
|
| 187 |
-
return this.process("channels",function(rgba){if(options.red!=null){if(options.red>0){rgba.r+=(255-rgba.r)*options.red;}else{rgba.r-=rgba.r*Math.abs(options.red);}}
|
| 188 |
-
if(options.green!=null){if(options.green>0){rgba.g+=(255-rgba.g)*options.green;}else{rgba.g-=rgba.g*Math.abs(options.green);}}
|
| 189 |
-
if(options.blue!=null){if(options.blue>0){rgba.b+=(255-rgba.b)*options.blue;}else{rgba.b-=rgba.b*Math.abs(options.blue);}}
|
| 190 |
-
return rgba;});});Filter.register("curves",function(){var algo,bezier,chans,cps,end,i,last,start,_i,_j,_ref,_ref1;chans=arguments[0],cps=2<=arguments.length?__slice.call(arguments,1):[];last=cps[cps.length-1];if(typeof last==="function"){algo=last;cps.pop();}else if(typeof last==="string"){algo=Calculate[last];cps.pop();}else{algo=Calculate.bezier;}
|
| 191 |
-
if(typeof chans==="string"){chans=chans.split("");}
|
| 192 |
-
if(chans[0]==="v"){chans=['r','g','b'];}
|
| 193 |
-
if(cps.length<2){throw"Invalid number of arguments to curves filter";}
|
| 194 |
-
bezier=algo(cps,0,255);start=cps[0];if(start[0]>0){for(i=_i=0,_ref=start[0];0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){bezier[i]=start[1];}}
|
| 195 |
-
end=cps[cps.length-1];if(end[0]<255){for(i=_j=_ref1=end[0];_ref1<=255?_j<=255:_j>=255;i=_ref1<=255?++_j:--_j){bezier[i]=end[1];}}
|
| 196 |
-
return this.process("curves",function(rgba){var _k,_ref2;for(i=_k=0,_ref2=chans.length;0<=_ref2?_k<_ref2:_k>_ref2;i=0<=_ref2?++_k:--_k){rgba[chans[i]]=bezier[rgba[chans[i]]];}
|
| 197 |
-
return rgba;});});Filter.register("exposure",function(adjust){var ctrl1,ctrl2,p;p=Math.abs(adjust)/100;ctrl1=[0,255*p];ctrl2=[255-(255*p),255];if(adjust<0){ctrl1=ctrl1.reverse();ctrl2=ctrl2.reverse();}
|
| 198 |
-
return this.curves('rgb',[0,0],ctrl1,ctrl2,[255,255]);});Caman.Plugin.register("crop",function(width,height,x,y){var canvas,ctx;if(x==null){x=0;}
|
| 199 |
-
if(y==null){y=0;}
|
| 200 |
-
if(typeof exports!=="undefined"&&exports!==null){canvas=new Canvas(width,height);}else{canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=width;canvas.height=height;}
|
| 201 |
-
ctx=canvas.getContext('2d');ctx.drawImage(this.canvas,x,y,width,height,0,0,width,height);this.cropCoordinates={x:x,y:y};this.cropped=true;return this.replaceCanvas(canvas);});Caman.Plugin.register("resize",function(newDims){var canvas,ctx;if(newDims==null){newDims=null;}
|
| 202 |
-
if(newDims===null||((newDims.width==null)&&(newDims.height==null))){Log.error("Invalid or missing dimensions given for resize");return;}
|
| 203 |
-
if(newDims.width==null){newDims.width=this.canvas.width*newDims.height/this.canvas.height;}else if(newDims.height==null){newDims.height=this.canvas.height*newDims.width/this.canvas.width;}
|
| 204 |
-
if(typeof exports!=="undefined"&&exports!==null){canvas=new Canvas(newDims.width,newDims.height);}else{canvas=document.createElement('canvas');Util.copyAttributes(this.canvas,canvas);canvas.width=newDims.width;canvas.height=newDims.height;}
|
| 205 |
-
ctx=canvas.getContext('2d');ctx.drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,newDims.width,newDims.height);this.resized=true;return this.replaceCanvas(canvas);});Caman.Filter.register("crop",function(){return this.processPlugin("crop",Array.prototype.slice.call(arguments,0));});Caman.Filter.register("resize",function(){return this.processPlugin("resize",Array.prototype.slice.call(arguments,0));});}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pickers/caman/dist/caman.pack.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(o(){I $,2F,1z,1J,B,2Y,30,1p,1O,3X,V,1Q,2I,22,1o,2g,1r,1V,1g,4o,21,1a,3q,49,4G,3r,4g=[].9q||o(7j){T(I i=0,l=8.L;i<l;i++){u(i 2X 8&&8[i]===7j)9 i}9-1},3x=[].3r,3L={}.9e,5k=o(2n,7S){9 o(){9 2n.2u(7S,X)}},6x=o(3z,3A){T(I 1B 2X 3A){u(3L.18(3A,1B))3z[1B]=3A[1B]}o 5j(){8.bo=3z}5j.H=3A.H;3z.H=1m 5j();3z.aR=3A.H;9 3z};4G=[\'7D\',\'5B\'];2g=(o(){o 2g(){}2g["aa"]=o(1D){I 1B,2y,F;T(1B 2X 1D){2y=1D[1B];u(4g.18(4G,1B)<0){8[1B]=2y}}u((F=1D.7D)!=G){F.2u(8)}9 8};2g.a6=o(1D){I 1B,2y,F;T(1B 2X 1D){2y=1D[1B];u(4g.18(4G,1B)<0){8.H[1B]=2y}}u((F=1D.5B)!=G){F.2u(8)}9 8};2g.a5=o(){I W,4S,24,C,13,Y;W=1<=X.L?3x.18(X,0):[];24=W.4h();Y=[];T(C=0,13=W.L;C<13;C++){4S=W[C];Y.1A(8.H[4S]=24.H[4S])}9 Y};2g.9s=o(2l,2R){I 1b=8;9 8.H[2l]=o(){I W;W=1<=X.L?3x.18(X,0):[];9 1b.H[2R].2u(1b,W)}};2g.9l=o(2l,2R){9 6I.8S(8.H,2l,{2t:o(){9 8[2R]},8R:o(1x){9 8[2R]=1x}})};2g.5B=o(35){9 35.18(8,8.H)};9 2g})();3r=4c.H.3r;$=o(4K,4J){u(4J==G){4J=1M}u(1f 4K==="2w"||(1f 1Y!=="36"&&1Y!==G)){9 4K}9 4J.a9(4K)};1a=(o(){o 1a(){}1a.6e=(o(){I 1W;1W=0;9{2t:o(){9 1W++}}})();1a.9u=o(){I 45,4t,1D,43,1c,C,13;1D=X[0],1c=2<=X.L?3x.18(X,1):[];4t=1D;T(C=0,13=1c.L;C<13;C++){45=1c[C];T(43 2X 45){u(!3L.18(45,43))42;4t[43]=45[43]}}9 4t};1a.2j=o(1x){u(1x<0){9 0}u(1x>D){9 D}9 1x};1a.40=o(2R,2l,3Z){I 3W,C,13,F,2q,Y;u(3Z==G){3Z={}}F=2R.aH;Y=[];T(C=0,13=F.L;C<13;C++){3W=F[C];u((3Z.6m!=G)&&(2q=3W.6p,4g.18(3Z.6m,2q)>=0)){42}Y.1A(2l.7G(3W.6p,3W.am))}9 Y};1a.3T=o(L){u(L==G){L=0}u(B.1S||(2T.7B!=G)){9 1m 7B(L)}9 1m 4c(L)};9 1a})();u(1f 1Y!=="36"&&1Y!==G){4o=1Y;30=3S(\'E\');2I=30.2I;3X=3S(\'a0\');3q=3S(\'3q\');49=3S(\'49\')}R{4o=2T}B=(o(7d){6x(B,7d);B.6s={7M:"4.1.2",7s:"7/27/b8"};B.6V=1G;B.44=2c;B.6v="7x";B.5e="";B.7P="aP";B.1S=1f 1Y!=="36"&&1Y!==G;B.82=!B.1S;B.3D=o(){9"a2 "+B.6s.7M+", aO "+B.6s.7s};B.5V=o(E){u(B.1S){9 2c}u(1f E==="2S"){E=$(E)}u(!((E!=G)&&(E.3G!=G))){9 G}9 E.3G(\'1v-2h-1W\')};o B(){8.3n=5k(8.3n,8);I W,1j,1W,1b=8;u(X.L===0){1R"3l X";}u(8 8m B){8.3h=8.3h.5o(8);8.4f=8.4f.5o(8);W=X[0];u(!B.1S){1W=4D(B.5V(W[0]),10);1j=1f W[1]==="o"?W[1]:1f W[2]==="o"?W[2]:o(){};u(!aT(1W)&&21.8z(1W)){9 21.2o(1W,1j)}}8.1W=1a.6e.2t();8.4Q=8.38=G;8.3U={x:0,y:0};8.84=1G;8.4w=1G;8.4b=[];8.63=[];8.5R=[];8.4j=G;8.76=1G;8.aN=1m 2F(8);8.2L=1m 1g(8);8.6L(o(){1b.8v(W);9 1b.86()});9 8}R{9 1m B(X)}}B.H.6L=o(3y){I 5m,1b=8;u(B.1S){9 59(o(){9 3y.18(1b)},0)}R{u(1M.5F==="4P"){1o.1C("6S 6R");9 59(o(){9 3y.18(1b)},0)}R{5m=o(){u(1M.5F==="4P"){1o.1C("6S 6R");9 3y.18(1b)}};9 1M.6B("a4",5m,1G)}}};B.H.8v=o(W){I 1B,1x,F,Y;u(W.L===0){1R"3l X 80";}8.23=G;8.4A=G;8.4F=G;8.1j=o(){};8.8D(W[0]);u(W.L===1){9}3I(1f W[1]){1t"2S":8.4F=W[1];3c;1t"o":8.1j=W[1]}u(W.L===2){9}8.1j=W[2];u(W.L===4){F=W[4];Y=[];T(1B 2X F){u(!3L.18(F,1B))42;1x=F[1B];Y.1A(8.1e[1B]=1x)}9 Y}};B.H.8D=o(1D){u(B.1S){8.23=1D;8.4A=\'7Q\';9}u(1f 1D==="2w"){8.23=1D}R{8.23=$(1D)}u(8.23==G){1R"bb 9F 9X S 85 E T ak.";}9 8.4A=8.23.6p.4m()};B.H.86=o(){3I(8.4A){1t"7Q":9 8.8F();1t"1i":9 8.8B();1t"E":9 8.8t()}};B.H.8F=o(){1o.1C("aU T 1S");u(1f 8.23==="2S"&&8.23.4N(/^8e?:\\/\\//)){9 8.89(8.23,8.3n)}R u(1f 8.23==="2S"){9 3q.9Y(8.23,8.3n)}R{9 8.3n(G,8.23)}};B.H.89=o(3Y,1j){I 6j;1o.1C("ac S 2R "+3Y);6j=49.2t(3Y,o(2r){I 4z;4z=\'\';2r.aK(\'7z\');2r.5X(\'1v\',o(7t){9 4z+=7t});9 2r.5X(\'1q\',o(){9 1j(G,1m aS(4z,\'7z\'))})});9 6j.5X(\'5K\',1j)};B.H.3n=o(4l,1v){u(4l){1R 4l;}8.S=1m 2I();8.S.1c=1v;1o.1C("2I 6E. 8u = "+(8.3f())+", 8j = "+(8.3e()));8.E=1m 30(8.3f(),8.3e());9 8.3h()};B.H.8B=o(){8.S=8.23;8.E=1M.2U(\'E\');8.19=8.E.2p(\'2d\');1a.40(8.S,8.E,{6m:[\'1c\']});u(8.S.58!=G){8.S.58.5S(8.E,8.S)}8.5i();9 8.5Z()};B.H.8t=o(){8.E=8.23;8.19=8.E.2p(\'2d\');u(8.4F!=G){8.S=1M.2U(\'1i\');8.S.1c=8.4F;8.5i();9 8.5Z()}R{9 8.3h()}};B.H.5i=o(){u(8.61()){1o.1C(8.S.1c,"->",8.4L());8.7c=2c;8.S.1c=8.4L()}u(1Q.7l(8.S)){8.S.1c=1Q.3b(8.S.1c);9 1o.1C("90 S 9f, 9j 7m = "+8.S.1c)}};B.H.5Z=o(){u(8.7F()){9 8.4f()}R{9 8.S.6T=8.4f}};B.H.7F=o(){u(!8.S.4P){9 1G}u((8.S.5A!=G)&&8.S.5A===0){9 1G}9 2c};B.H.3f=o(){9 8.S.K||8.S.5A};B.H.3e=o(){9 8.S.P||8.S.ag};B.H.4f=o(){1o.1C("2I 6E. 8u = "+(8.3f())+", 8j = "+(8.3e()));u(8.7c){8.E.K=8.3f()/8.4x();8.E.P=8.3e()/8.4x()}R{8.E.K=8.3f();8.E.P=8.3e()}9 8.3h()};B.H.3h=o(){I i,15,C,13,F;u(8.19==G){8.19=8.E.2p(\'2d\')}8.3J=8.3M=8.K=8.E.K;8.3N=8.3O=8.P=8.E.P;8.7O();u(!8.8d()){8.6J()}u(8.S!=G){8.19.3P(8.S,0,0,8.3f(),8.3e(),0,0,8.3M,8.3O)}8.1H=8.19.3a(0,0,8.E.K,8.E.P);8.M=8.1H.1v;u(B.44){8.4Q=1a.3T(8.M.L);8.38=1a.3T(8.M.L);F=8.M;T(i=C=0,13=F.L;C<13;i=++C){15=F[i];8.4Q[i]=15;8.38[i]=15}}8.1E={K:8.E.K,P:8.E.P};u(!B.1S){21.7f(8.1W,8)}8.1j.18(8,8);9 8.1j=o(){}};B.H.7k=o(){8.1H=8.19.3a(0,0,8.E.K,8.E.P);9 8.M=8.1H.1v};B.H.9r=o(){I i,15,C,13,F,Y;u(!B.44){1R"6u 4V";}8.38=1a.3T(8.M.L);F=8.M;Y=[];T(i=C=0,13=F.L;C<13;i=++C){15=F[i];Y.1A(8.38[i]=15)}9 Y};B.H.8d=o(){9 B.5V(8.E)!=G};B.H.6J=o(){u(B.1S||8.E.3G(\'1v-2h-1W\')){9}9 8.E.7G(\'1v-2h-1W\',8.1W)};B.H.7n=o(){9 8.E.3G(\'1v-2h-7p-4V\')!==G};B.H.7O=o(){I 2s;u(B.1S||!8.61()){9}2s=8.4x();u(2s!==1){1o.1C("a7 2s = "+2s);8.76=2c;8.3M=8.E.K;8.3O=8.E.P;8.E.K=8.3M*2s;8.E.P=8.3O*2s;8.E.7C.K=""+8.3M+"7E";8.E.7C.P=""+8.3O+"7E";8.19.ah(2s,2s);8.K=8.3J=8.E.K;9 8.P=8.3N=8.E.P}};B.H.4x=o(){I 6t,2C;2C=2T.2C||1;6t=8.19.ap||8.19.at||8.19.av||8.19.aG||8.19.aI||1;9 2C/6t};B.H.7N=o(){9(2T.2C!=G)&&2T.2C!==1};B.H.61=o(){u(8.7n()||!8.7N()){9 1G}9 8.4L()!==G};B.H.4L=o(){u(8.S==G){9 G}9 8.S.3G(\'1v-2h-7p\')};B.H.57=o(7V){I 5a;5a=8.E;8.E=7V;8.19=8.E.2p(\'2d\');u(!B.1S){5a.58.5S(8.E,5a)}8.K=8.E.K;8.P=8.E.P;8.7k();9 8.1E={K:8.E.K,P:8.E.P}};B.H.8f=o(1j){I 1b=8;u(1j==G){1j=o(){}}1O.39(8,"6D");9 8.2L.2o(o(){1b.19.5d(1b.1H,0,0);9 1j.18(1b)})};B.H.b5=o(4p){I i,15,C,13,F;u(4p==G){4p=2c}u(!B.44){1R"6u 4V";}F=8.6U();T(i=C=0,13=F.L;C<13;i=++C){15=F[i];8.M[i]=15}u(4p){9 8.19.5d(8.1H,0,0)}};B.H.bm=o(){I E,1K,i,1H,15,M,C,13,F;E=1M.2U(\'E\');1a.40(8.E,E);E.K=8.3J;E.P=8.3N;1K=E.2p(\'2d\');1H=1K.3a(0,0,E.K,E.P);M=1H.1v;F=8.4Q;T(i=C=0,13=F.L;C<13;i=++C){15=F[i];M[i]=15}1K.5d(1H,0,0);8.3U={x:0,y:0};8.4w=1G;9 8.57(E)};B.H.6U=o(){I E,4r,1K,1s,6r,i,1H,15,M,4u,3R,4B,4C,K,C,Z,13,F,2q,2x,6q;u(!B.44){1R"6u 4V";}4u=[];4B=8.3U.x;1s=4B+8.K;4C=8.3U.y;6r=4C+8.P;u(8.4w){E=1M.2U(\'E\');E.K=8.3J;E.P=8.3N;1K=E.2p(\'2d\');1H=1K.3a(0,0,E.K,E.P);M=1H.1v;F=8.38;T(i=C=0,13=F.L;C<13;i=++C){15=F[i];M[i]=15}1K.5d(1H,0,0);3R=1M.2U(\'E\');3R.K=8.K;3R.P=8.P;1K=3R.2p(\'2d\');1K.3P(E,0,0,8.3J,8.3N,0,0,8.K,8.P);M=1K.3a(0,0,8.K,8.P).1v;K=8.K}R{M=8.38;K=8.3J}T(i=Z=0,2q=M.L;Z<2q;i=Z+=4){4r=1r.7u(i,K);u(((4B<=(2x=4r.x)&&2x<1s))&&((4C<=(6q=4r.y)&&6q<6r))){4u.1A(M[i],M[i+1],M[i+2],M[i+3])}}9 4u};B.H.1T=o(11,4M){8.2L.2D({14:V.25.6o,11:11,4M:4M});9 8};B.H.6n=o(11,J,1P,26){I i,C,F;u(1P==G){1P=G}u(26==G){26=0}u(1P==G){1P=0;T(i=C=0,F=J.L;0<=F?C<F:C>F;i=0<=F?++C:--C){1P+=J[i]}}8.2L.2D({14:V.25.6l,11:11,J:J,1P:1P,26:26});9 8};B.H.6k=o(2v,W){8.2L.2D({14:V.25.1V,2v:2v,W:W});9 8};B.H.6i=o(1j){I 1w;1w=1m 22(8);8.5R.1A(1w);8.2L.2D({14:V.25.6h});1j.18(1w);8.2L.2D({14:V.25.6g});9 8};B.H.6Z=o(1w){9 8.71(1w)};B.H.71=o(1w){8.63.1A(8.4j);8.4b.1A(8.M);8.4j=1w;9 8.M=1w.M};B.H.73=o(){8.M=8.4b.4h();9 8.4j=8.63.4h()};B.H.77=o(){9 8.4j.7b()};9 B})(2g);4o.B=B;B.2F=(o(){o 2F(c){8.c=c}2F.H.8T=o(){I i,2a,3K,C,Z,1N,F;2a={r:{},g:{},b:{}};T(i=C=0;C<=D;i=++C){2a.r[i]=0;2a.g[i]=0;2a.b[i]=0}T(i=Z=0,F=8.c.M.L;Z<F;i=Z+=4){2a.r[8.c.M[i]]++;2a.g[8.c.M[i+1]]++;2a.b[8.c.M[i+2]]++}3K=8.c.M.L/4;T(i=1N=0;1N<=D;i=++1N){2a.r[i]/=3K;2a.g[i]/=3K;2a.b[i]/=3K}9 2a};9 2F})();2F=B.2F;B.6d=o(){I 1i,46,7q,C,13,Y;46=1M.a1("1i[1v-2h]");u(!(46.L>0)){9}Y=[];T(C=0,13=46.L;C<13;C++){1i=46[C];Y.1A(7q=1m 2Y(1i,o(){8.7r();9 8.2o()}))}9 Y};u(B.82){(o(){u(1M.5F==="4P"){9 B.6d()}R{9 1M.6B("a3",B.6d,1G)}})()}2Y=(o(){I 4y;4y="(\\\\w+)\\\\((.*?)\\\\)";o 2Y(2z,7v){8.7y=2z.3G(\'1v-2h\');8.2h=B(2z,7v.5o(8))}2Y.H.7r=o(){I W,e,47,35,6a,68,m,r,4a,C,13,F,Y;8.2z=8.2h.E;r=1m 7H(4y,\'g\');4a=8.7y.4N(r);u(!(4a.L>0)){9}r=1m 7H(4y);Y=[];T(C=0,13=4a.L;C<13;C++){6a=4a[C];F=6a.4N(r),m=F[0],47=F[1],W=F[2];68=1m az("9 o() { 8."+47+"("+W+"); };");65{35=68();Y.1A(35.18(8.2h))}64(3H){e=3H;Y.1A(1o.1C(e))}}9 Y};2Y.H.2o=o(){I 2z;2z=8.2z;9 8.2h.8f(o(){9 2z.58.5S(8.7R(),2z)})};9 2Y})();B.1z=(o(){o 1z(){}1z.60={};1z.17=o(11,35){9 8.60[11]=35};1z.2o=o(11,O,N){9 8.60[11](O,N)};9 1z})();1z=B.1z;B.1J=(o(){o 1J(){}1J.aQ=o(8l,8w,8x,8A){9 Q.8E(Q.1Z(8x-8l,2)+Q.1Z(8A-8w,2))};1J.6C=o(1h,U,4d){I 2A;u(4d==G){4d=1G}2A=1h+(Q.91()*(U-1h));u(4d){9 2A.9d(4d)}R{9 Q.4e(2A)}};1J.6K=o(A){9(0.9m*A.r)+(0.9o*A.g)+(0.9p*A.b)};1J.1L=o(1k,2Q,2P,1q,32,2V){I 1L,3F,1I,1s,i,j,3E,4U,2f,t,C,Z,F;u(32==G){32=0}u(2V==G){2V=D}u(1k[0]8m 4c){1I=1k;32=2Q;2V=2P}R{1I=[1k,2Q,2P,1q]}u(1I.L<2){1R"3l 5Q 5P X 2l 1L";}1L={};3E=o(a,b,t){9 a*(1-t)+b*t};3F=o(a,1h,U){9 Q.1h(Q.U(a,1h),U)};T(i=C=0;C<7e;i=++C){t=i/7e;2f=1I;ad(2f.L>1){4U=[];T(j=Z=0,F=2f.L-2;0<=F?Z<=F:Z>=F;j=0<=F?++Z:--Z){4U.1A([3E(2f[j][0],2f[j+1][0],t),3E(2f[j][1],2f[j+1][1],t)])}2f=4U}1L[Q.4e(2f[0][0])]=Q.4e(3F(2f[0][1],32,2V))}1s=1I[1I.L-1][0];1L=B.1J.5O(1L,1s);u(1L[1s]==G){1L[1s]=1L[1s-1]}9 1L};1J.7h=o(1I,32,2V){I 2D,3F,5L,1s,4Z,50,51,52,i,j,3E,5I,5G,2O,p,3g,3C,2N,4n,5b,28,5c,t,C,Z,F,1b=8;u(1I.L<2){1R"3l 5Q 5P X 2l 7h";}28={};3E=o(a,b,t){9 a*(1-t)+b*t};2D=o(a,b,c,d){9[a[0]+b[0]+c[0]+d[0],a[1]+b[1]+c[1]+d[1]]};2O=o(a,b){9[a[0]*b[0],a[1]*b[1]]};5c=o(a,b){9[a[0]-b[0],a[1]-b[1]]};3F=o(a,1h,U){9 Q.1h(Q.U(a,1h),U)};5L=0;T(i=C=0,F=1I.L-2;0<=F?C<=F:C>=F;i=0<=F?++C:--C){3g=1I[i];3C=1I[i+1];2N=3C[0]-3g[0];4n=1/2N;u(i===1I.L-2){4n=1/(2N-1)}p=i>0?1I[i-1]:3g;5I=2O(5c(3C,p),[0.5,0.5]);p=i<1I.L-2?1I[i+2]:3C;5G=2O(5c(p,3g),[0.5,0.5]);T(j=Z=0;0<=2N?Z<=2N:Z>=2N;j=0<=2N?++Z:--Z){t=j*4n;4Z=2.0*t*t*t-3.0*t*t+1.0;50=t*t*t-2.0*t*t+t;51=-2.0*t*t*t+3.0*t*t;52=t*t*t-t*t;5b=2D(2O(3g,[4Z,4Z]),2O(5I,[50,50]),2O(3C,[51,51]),2O(5G,[52,52]));28[Q.4e(5b[0])]=Q.4e(3F(5b[1],32,2V));5L+=1}}1s=1I[1I.L-1][0];28=B.1J.5O(28,1s);9 28};1J.5O=o(2Z,1s){I i,j,3B,28,5f,C,Z;u(6I.b7(2Z).L<1s+1){28={};T(i=C=0;0<=1s?C<=1s:C>=1s;i=0<=1s?++C:--C){u(2Z[i]!=G){28[i]=2Z[i]}R{3B=[i-1,28[i-1]];T(j=Z=i;i<=1s?Z<=1s:Z>=1s;j=i<=1s?++Z:--Z){u(2Z[j]!=G){5f=[j,2Z[j]];3c}}28[i]=3B[1]+((5f[1]-3B[1])/(5f[0]-3B[0]))*(i-3B[0])}}9 28}9 2Z};9 1J})();1J=B.1J;B.1p=(o(){o 1p(){}1p.5l=o(2e){I b,g,r;u(2e.be(0)==="#"){2e=2e.5h(1)}r=4D(2e.5h(0,2),16);g=4D(2e.5h(2,2),16);b=4D(2e.5h(4,2),16);9{r:r,g:g,b:b}};1p.8Q=o(r,g,b){I d,h,l,U,1h,s;u(1f r==="2w"){g=r.g;b=r.b;r=r.r}r/=D;g/=D;b/=D;U=Q.U(r,g,b);1h=Q.1h(r,g,b);l=(U+1h)/2;u(U===1h){h=s=0}R{d=U-1h;s=l>0.5?d/(2-U-1h):d/(U+1h);h=(o(){3I(U){1t r:9(g-b)/d+(g<b?6:0);1t g:9(b-r)/d+2;1t b:9(r-g)/d+4}})();h/=6}9{h:h,s:s,l:l}};1p.8Z=o(h,s,l){I b,g,p,q,r;u(1f h==="2w"){s=h.s;l=h.l;h=h.h}u(s===0){r=g=b=l}R{q=l<0.5?l*(1+s):l+s-l*s;p=2*l-q;r=8.5g(p,q,h+1/3);g=8.5g(p,q,h);b=8.5g(p,q,h-1/3)}9{r:r*D,g:g*D,b:b*D}};1p.5g=o(p,q,t){u(t<0){t+=1}u(t>1){t-=1}u(t<1/6){9 p+(q-p)*6*t}u(t<1/2){9 q}u(t<2/3){9 p+(q-p)*(2/3-t)*6}9 p};1p.81=o(r,g,b){I d,h,U,1h,s,v;r/=D;g/=D;b/=D;U=Q.U(r,g,b);1h=Q.1h(r,g,b);v=U;d=U-1h;s=U===0?0:d/U;u(U===1h){h=0}R{h=(o(){3I(U){1t r:9(g-b)/d+(g<b?6:0);1t g:9(b-r)/d+2;1t b:9(r-g)/d+4}})();h/=6}9{h:h,s:s,v:v}};1p.83=o(h,s,v){I b,f,g,i,p,q,r,t;i=Q.2E(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);3I(i%6){1t 0:r=v;g=t;b=p;3c;1t 1:r=q;g=v;b=p;3c;1t 2:r=p;g=v;b=t;3c;1t 3:r=p;g=q;b=v;3c;1t 4:r=t;g=p;b=v;3c;1t 5:r=v;g=p;b=q}9{r:Q.2E(r*D),g:Q.2E(g*D),b:Q.2E(b*D)}};1p.88=o(r,g,b){I x,y,z;r/=D;g/=D;b/=D;u(r>0.5n){r=Q.1Z((r+0.29)/1.29,2.4)}R{r/=12.92}u(g>0.5n){g=Q.1Z((g+0.29)/1.29,2.4)}R{g/=12.92}u(b>0.5n){b=Q.1Z((b+0.29)/1.29,2.4)}R{b/=12.92}x=r*0.9v+g*0.9w+b*0.9x;y=r*0.9z+g*0.9A+b*0.9B;z=r*0.9C+g*0.9D+b*0.9E;9{x:x*1n,y:y*1n,z:z*1n}};1p.9H=o(x,y,z){I b,g,r;x/=1n;y/=1n;z/=1n;r=(3.9M*x)+(-1.9N*y)+(-0.9O*z);g=(-0.9R*x)+(1.9S*y)+(0.9T*z);b=(0.9U*x)+(-0.9V*y)+(1.9W*z);u(r>0.5p){r=(1.29*Q.1Z(r,0.5q))-0.29}R{r*=12.92}u(g>0.5p){g=(1.29*Q.1Z(g,0.5q))-0.29}R{g*=12.92}u(b>0.5p){b=(1.29*Q.1Z(b,0.5q))-0.29}R{b*=12.92}9{r:r*D,g:g*D,b:b*D}};1p.8y=o(x,y,z){I a,b,l,5r,5s,5t;u(1f x==="2w"){y=x.y;z=x.z;x=x.x}5r=95.6y;5s=1n.0;5t=6z.6A;x/=5r;y/=5s;z/=5t;u(x>0.5u){x=Q.1Z(x,0.5v)}R{x=(7.5w*x)+0.3w}u(y>0.5u){y=Q.1Z(y,0.5v)}R{y=(7.5w*y)+0.3w}u(z>0.5u){z=Q.1Z(z,0.5v)}R{z=(7.5w*z)+0.3w}l=6F*y-16;a=6G*(x-y);b=6H*(y-z);9{l:l,a:a,b:b}};1p.al=o(l,a,b){I x,y,z;u(1f l==="2w"){a=l.a;b=l.b;l=l.l}y=(l+16)/6F;x=y+(a/6G);z=y-(b/6H);u(x>0.5x){x=x*x*x}R{x=0.5y*(x-0.3w)}u(y>0.5x){y=y*y*y}R{y=0.5y*(y-0.3w)}u(z>0.5x){z=z*z*z}R{z=0.5y*(z-0.3w)}9{x:x*95.6y,y:y*1n.0,z:z*6z.6A}};1p.ao=o(r,g,b){I 5z;u(1f r==="2w"){g=r.g;b=r.b;r=r.r}5z=8.88(r,g,b);9 8.8y(5z)};1p.as=o(l,a,b){};9 1p})();1p=B.1p;B.1O=(o(){o 1O(){}1O.2W={};1O.6M=["6N","6O","6D","6P","6Q","3v"];1O.39=o(24,14,1v){I 4k,C,13,F,Y;u(1v==G){1v=G}u(8.2W[14]&&8.2W[14].L){F=8.2W[14];Y=[];T(C=0,13=F.L;C<13;C++){4k=F[C];u(4k.24===G||24.1W===4k.24.1W){Y.1A(4k.2n.18(24,1v))}R{Y.1A(aL 0)}}9 Y}};1O.aM=o(24,14,2n){I 5C,5D;u(1f 24==="2S"){5D=24;5C=14;24=G;14=5D;2n=5C}u(4g.18(8.6M,14)<0){9 1G}u(!8.2W[14]){8.2W[14]=[]}8.2W[14].1A({24:24,2n:2n});9 2c};9 1O})();1O=B.1O;B.V=(o(){o V(){}V.25={6o:1,6l:2,6h:3,6g:4,5E:5,1V:6};V.17=o(11,6W){9 B.H[11]=6W};9 V})();V=B.V;B.1Q=(o(){o 1Q(){}1Q.6X=/(?:(?:49|8e):\\/\\/)((?:\\w+)\\.(?:(?:\\w|\\.)+))/;1Q.7l=o(1i){u(1i==G){9 1G}u(8.6Y(1i)){9 1G}9 8.56(1i.1c)};1Q.6Y=o(1i){I F;9(1i.6v!=G)&&((F=1i.6v.4m())===\'7x\'||F===\'70-aV\')};1Q.56=o(3Y){I 54;54=3Y.4N(8.6X);u(54){9 54[1]!==1M.b6}R{9 1G}};1Q.72=o(1c){u(8.56(1c)){u(!B.5e.L){1o.5H("b9 2l ba a 74 S bc a bd 75. 7m: "+1c)}R{u(B.56(B.5e)){1o.5H("bf 70 a 74 75 T bg bh.");9}9 8.3b(1c)}}};1Q.3b=o(1c){9""+B.5e+"?"+B.7P+"="+(bi(1c))};1Q.bl=o(3d){I 53;53={bn:\'8G\',8H:\'8I\',8J:\'8K\',8L:\'8M\'};3d=3d.4m();u(53[3d]!=G){3d=53[3d]}9"8N/8O."+3d};9 1Q})();B.H.8P=o(){u(1f 1Y!=="36"&&1Y!==G){9 8.78.2u(8,X)}R{9 8.79.2u(8,X)}};B.H.79=o(14){I S;u(14==G){14="7a"}14=14.4m();S=8.5J(14).8U("S/"+14,"S/8V-8W");9 1M.8X.8Y=S};B.H.78=o(3u,4Y,1j){I e,5M;u(4Y==G){4Y=2c}u(1j==G){1j=G}65{5M=3q.93(3u);u(5M.94()&&!4Y){9 1G}}64(3H){e=3H;1o.1C("96 97 3u "+3u)}9 3q.98(3u,8.E.99(),o(4l){1o.1C("9a 9b 2l "+3u);u(1j){9 1j.18(8,4l)}})};B.H.7R=o(14){I 1i;1i=1m 2I();1i.1c=8.5J(14);1i.K=8.1E.K;1i.P=8.1E.P;u(2T.2C){1i.K/=2T.2C;1i.P/=2T.2C}9 1i};B.H.5J=o(14){u(14==G){14="7a"}14=14.4m();9 8.E.9c("S/"+14)};1Q=B.1Q;B.22=(o(){o 22(c){8.c=c;8.47=8.c;8.1e={5N:\'7g\',2K:1.0};8.9g=1a.6e.2t();8.E=1f 1Y!=="36"&&1Y!==G?1m 30():1M.2U(\'E\');8.E.K=8.c.1E.K;8.E.P=8.c.1E.P;8.19=8.E.2p(\'2d\');8.19.9h(8.E.K,8.E.P);8.1H=8.19.3a(0,0,8.E.K,8.E.P);8.M=8.1H.1v}22.H.6i=o(3y){9 8.c.6i.18(8.c,3y)};22.H.9i=o(7i){8.1e.5N=7i;9 8};22.H.2K=o(2K){8.1e.2K=2K/1n;9 8};22.H.9k=o(){I i,20,C,F;20=8.c.M;T(i=C=0,F=8.c.M.L;C<F;i=C+=4){8.M[i]=20[i];8.M[i+1]=20[i+1];8.M[i+2]=20[i+2];8.M[i+3]=20[i+3]}9 8};22.H.4W=o(){9 8.c.4W.2u(8.c,X)};22.H.9n=o(S){u(1f S==="2w"){S=S.1c}R u(1f S==="2S"&&S[0]==="#"){S=$(S).1c}u(!S){9 8}8.c.2L.4i.1A({14:V.25.5E,1c:S,1w:8});9 8};22.H.7b=o(){I i,37,20,1d,O,N,C,F,Y;20=8.c.4b[8.c.4b.L-1];37=8.c.M;Y=[];T(i=C=0,F=37.L;C<F;i=C+=4){N={r:20[i],g:20[i+1],b:20[i+2],a:20[i+3]};O={r:37[i],g:37[i+1],b:37[i+2],a:37[i+3]};1d=1z.2o(8.1e.5N,O,N);1d.r=1a.2j(1d.r);1d.g=1a.2j(1d.g);1d.b=1a.2j(1d.b);u(1d.a==G){1d.a=O.a}20[i]=N.r-((N.r-1d.r)*(8.1e.2K*(1d.a/D)));20[i+1]=N.g-((N.g-1d.g)*(8.1e.2K*(1d.a/D)));Y.1A(20[i+2]=N.b-((N.b-1d.b)*(8.1e.2K*(1d.a/D))))}9 Y};9 22})();22=B.22;B.4T=(o(){o 4T(){I 11,C,13,F;F=[\'7o\',\'5H\',\'9t\',\'5K\'];T(C=0,13=F.L;C<13;C++){11=F[C];8[11]=(o(11){9 o(){I W,e;W=1<=X.L?3x.18(X,0):[];u(!B.6V){9}65{9 5T[11].2u(5T,W)}64(3H){e=3H;9 5T[11](W)}}})(11)}8.1C=8.7o}9 4T})();1o=1m B.4T();B.1r=(o(){1r.5U=o(x,y,K){9(y*K+x)*4};1r.7u=o(1l,K){I x,y;y=Q.2E(1l/(K*4));x=(1l%(K*4))/4;9{x:x,y:y}};o 1r(r,g,b,a,c){8.r=r!=G?r:0;8.g=g!=G?g:0;8.b=b!=G?b:0;8.a=a!=G?a:D;8.c=c!=G?c:G;8.1l=0}1r.H.5W=o(c){9 8.c=c};1r.H.9y=o(){I x,y;u(8.c==G){1R"3t a 3s 19";}y=8.c.1E.P-Q.2E(8.1l/(8.c.1E.K*4));x=(8.1l%(8.c.1E.K*4))/4;9{x:x,y:y}};1r.H.5Y=o(1l){u(8.c==G){1R"3t a 3s 19";}9 1m 1r(8.c.M[1l],8.c.M[1l+1],8.c.M[1l+2],8.c.M[1l+3],8.c)};1r.H.7w=o(4O,4I){I 2k;u(8.c==G){1R"3t a 3s 19";}2k=8.1l+(8.c.1E.K*4*(4I*-1))+(4*4O);u(2k>8.c.M.L||2k<0){9 1m 1r(0,0,0,D,8.c)}9 8.5Y(2k)};1r.H.9G=o(4O,4I,A){I 7A;u(8.c==G){1R"3t a 3s 19";}7A=8.1l+(8.c.1E.K*4*(4I*-1))+(4*4O);u(2k>8.c.M.L||2k<0){9}8.c.M[2k]=A.r;8.c.M[2k+1]=A.g;8.c.M[2k+2]=A.b;8.c.M[2k+3]=A.a;9 2c};1r.H.9I=o(x,y){I 1l;u(8.c==G){1R"3t a 3s 19";}1l=8.5U(x,y,8.K);9 8.5Y(1l)};1r.H.9J=o(x,y,A){I 1l;u(8.c==G){1R"3t a 3s 19";}1l=8.5U(x,y,8.K);8.c.M[1l]=A.r;8.c.M[1l+1]=A.g;8.c.M[1l+2]=A.b;9 8.c.M[1l+3]=A.a};1r.H.3D=o(){9 8.9K()};1r.H.9L=o(4H){I 2e;u(4H==G){4H=1G}2e=\'#\'+8.r.3D(16)+8.g.3D(16)+8.b.3D(16);u(4H){9 2e+8.a.3D(16)}R{9 2e}};9 1r})();1r=B.1r;B.1V=(o(){o 1V(){}1V.62={};1V.17=o(11,2v){9 8.62[11]=2v};1V.2o=o(19,11,W){9 8.62[11].2u(19,W)};9 1V})();1V=B.1V;B.1g=(o(){1g.2J=B.1S?3S(\'9P\').9Q().L:4;o 1g(c){8.c=c;8.2B=5k(8.2B,8);8.4i=[];8.33=G}1g.H.2D=o(66){u(66==G){9}9 8.4i.1A(66)};1g.H.2B=o(){I 1w;u(8.4i.L===0){1O.39(8,"6P");u(8.67!=G){8.67.18(8.c)}9 8}8.1u=8.4i.7I();3I(8.1u.14){1t V.25.6h:1w=8.c.5R.7I();8.c.6Z(1w);9 8.2B();1t V.25.6g:8.c.77();8.c.73();9 8.2B();1t V.25.5E:9 8.7J(8.1u.1w,8.1u.1c);1t V.25.1V:9 8.7K();9Z:9 8.7L()}};1g.H.2o=o(1j){8.67=1j;8.33=1a.3T(8.c.M.L);9 8.2B()};1g.H.69=o(2n){I 48,6b,1X,1q,f,i,6c,n,1k,C,F,Y,1b=8;8.4v=0;n=8.c.M.L;6b=Q.2E((n/4)/1g.2J);48=6b*4;6c=48+((n/4)%1g.2J)*4;Y=[];T(i=C=0,F=1g.2J;0<=F?C<F:C>F;i=0<=F?++C:--C){1k=i*48;1q=1k+(i===1g.2J-1?6c:48);u(B.1S){f=3X(o(){9 2n.18(1b,i,1k,1q)});1X=f.a8();Y.1A(8.3v(1X))}R{Y.1A(59((o(i,1k,1q){9 o(){9 2n.18(1b,i,1k,1q)}})(i,1k,1q),0))}}9 Y};1g.H.7L=o(){1O.39(8.c,"6N",8.1u);u(8.1u.14===V.25.6o){9 8.69(8.7T)}R{9 8.69(8.7U)}};1g.H.7K=o(){1o.1C("ab 2v "+8.1u.2v);1V.2o(8.c,8.1u.2v,8.1u.W);1o.1C("1V "+8.1u.2v+" 6f!");9 8.2B()};1g.H.7T=o(1X,1k,1q){I i,15,C;1o.1C("7W #"+1X+" - V: "+8.1u.11+", ae: "+1k+", af: "+1q);1O.39(8.c,"6Q",{7X:1X,7Y:1g.2J,ai:1k,aj:1q});15=1m 1r();15.5W(8.c);T(i=C=1k;C<1q;i=C+=4){15.1l=i;15.r=8.c.M[i];15.g=8.c.M[i+1];15.b=8.c.M[i+2];15.a=8.c.M[i+3];8.1u.4M(15);8.c.M[i]=1a.2j(15.r);8.c.M[i+1]=1a.2j(15.g);8.c.M[i+2]=1a.2j(15.b);8.c.M[i+3]=1a.2j(15.a)}u(B.1S){9 3X["7Z"](1X)}R{9 8.3v(1X)}};1g.H.7U=o(1X,1k,1q){I J,41,26,1U,3p,1P,i,j,k,2b,n,11,p,15,2r,C,Z,1N;11=8.1u.11;26=8.1u.26;1P=8.1u.1P;n=8.c.M.L;J=8.1u.J;41=Q.8E(J.L);2b=[];1o.1C("aq 2b - V: "+8.1u.11);1k=Q.U(1k,8.c.1E.K*4*((41-1)/2));1q=Q.1h(1q,n-(8.c.1E.K*4*((41-1)/2)));1U=(41-1)/2;15=1m 1r();15.5W(8.c);T(i=C=1k;C<1q;i=C+=4){15.1l=i;3p=0;T(j=Z=-1U;-1U<=1U?Z<=1U:Z>=1U;j=-1U<=1U?++Z:--Z){T(k=1N=1U;1U<=-1U?1N<=-1U:1N>=-1U;k=1U<=-1U?++1N:--1N){p=15.7w(j,k);2b[3p*3]=p.r;2b[3p*3+1]=p.g;2b[3p*3+2]=p.b;3p++}}2r=8.6n(J,2b,1P,26);8.33[i]=1a.2j(2r.r);8.33[i+1]=1a.2j(2r.g);8.33[i+2]=1a.2j(2r.b);8.33[i+3]=8.c.M[i+3]}u(B.1S){9 3X["7Z"](1X)}R{9 8.3v(1X)}};1g.H.3v=o(1X){I i,C,F;u(1X>=0){1o.1C("7W #"+1X+" 6f! V: "+8.1u.11)}8.4v++;1O.39(8.c,"3v",{7X:1X,ar:8.4v,7Y:1g.2J});u(8.4v===1g.2J){u(8.1u.14===V.25.6l){T(i=C=0,F=8.c.M.L;0<=F?C<F:C>F;i=0<=F?++C:--C){8.c.M[i]=8.33[i]}}u(1X>=0){1o.1C("V "+8.1u.11+" 6f!")}1O.39(8.c,"6O",8.1u);9 8.2B()}};1g.H.6n=o(J,2b,1P,26){I i,1x,C,F;1x={r:0,g:0,b:0};T(i=C=0,F=J.L;0<=F?C<F:C>F;i=0<=F?++C:--C){1x.r+=J[i]*2b[i*3];1x.g+=J[i]*2b[i*3+1];1x.b+=J[i]*2b[i*3+2]}1x.r=(1x.r/1P)+26;1x.g=(1x.g/1P)+26;1x.b=(1x.b/1P)+26;9 1x};1g.H.7J=o(1w,1c){I 1i,3b,1b=8;1i=1m 2I();1i.6T=o(){1w.19.3P(1i,0,0,1b.c.1E.K,1b.c.1E.P);1w.1H=1w.19.3a(0,0,1b.c.1E.K,1b.c.1E.P);1w.M=1w.1H.1v;1b.c.M=1w.M;9 1b.2B()};3b=1Q.72(1c);9 1i.1c=3b!=G?3b:1c};9 1g})();1g=B.1g;B.21=(o(){o 21(){}21.3o={};21.8z=o(2H){9 8.3o[2H]!=G};21.2t=o(2H){9 8.3o[2H]};21.7f=o(11,1D){9 8.3o[11]=1D};21.2o=o(2H,1j){I 1b=8;59(o(){9 1j.18(1b.2t(2H),1b.2t(2H))},0);9 8.2t(2H)};21.au=o(11){u(11==G){11=1G}u(11){9 87 8.3o[11]}R{9 8.3o={}}};9 21})();21=B.21;1z.17("7g",o(O,N){9{r:O.r,g:O.g,b:O.b}});1z.17("aw",o(O,N){9{r:(O.r*N.r)/D,g:(O.g*N.g)/D,b:(O.b*N.b)/D}});1z.17("ax",o(O,N){9{r:D-(((D-O.r)*(D-N.r))/D),g:D-(((D-O.g)*(D-N.g))/D),b:D-(((D-O.b)*(D-N.b))/D)}});1z.17("ay",o(O,N){I 1d;1d={};1d.r=N.r>1y?D-2*(D-O.r)*(D-N.r)/D:(N.r*O.r*2)/D;1d.g=N.g>1y?D-2*(D-O.g)*(D-N.g)/D:(N.g*O.g*2)/D;1d.b=N.b>1y?D-2*(D-O.b)*(D-N.b)/D:(N.b*O.b*2)/D;9 1d});1z.17("aA",o(O,N){9{r:O.r-N.r,g:O.g-N.g,b:O.b-N.b}});1z.17("aB",o(O,N){9{r:N.r+O.r,g:N.g+O.g,b:N.b+O.b}});1z.17("aC",o(O,N){9{r:1y-2*(N.r-1y)*(O.r-1y)/D,g:1y-2*(N.g-1y)*(O.g-1y)/D,b:1y-2*(N.b-1y)*(O.b-1y)/D}});1z.17("aD",o(O,N){I 1d;1d={};1d.r=N.r>1y?D-((D-N.r)*(D-(O.r-1y)))/D:(N.r*(O.r+1y))/D;1d.g=N.g>1y?D-((D-N.g)*(D-(O.g-1y)))/D:(N.g*(O.g+1y))/D;1d.b=N.b>1y?D-((D-N.b)*(D-(O.b-1y)))/D:(N.b*(O.b+1y))/D;9 1d});1z.17("aE",o(O,N){9{r:N.r>O.r?N.r:O.r,g:N.g>O.g?N.g:O.g,b:N.b>O.b?N.b:O.b}});1z.17("aF",o(O,N){9{r:N.r>O.r?O.r:N.r,g:N.g>O.g?O.g:N.g,b:N.b>O.b?O.b:N.b}});V.17("4W",o(){I 3m;u(X.L===1){3m=1p.5l(X[0])}R{3m={r:X[0],g:X[1],b:X[2]}}9 8.1T("4W",o(A){A.r=3m.r;A.g=3m.g;A.b=3m.b;A.a=D;9 A})});V.17("8a",o(J){J=Q.2E(D*(J/1n));9 8.1T("8a",o(A){A.r+=J;A.g+=J;A.b+=J;9 A})});V.17("8b",o(J){J*=-0.aJ;9 8.1T("8b",o(A){I U;U=Q.U(A.r,A.g,A.b);u(A.r!==U){A.r+=(U-A.r)*J}u(A.g!==U){A.g+=(U-A.g)*J}u(A.b!==U){A.b+=(U-A.b)*J}9 A})});V.17("8c",o(J){J*=-1;9 8.1T("8c",o(A){I 3V,2G,U;U=Q.U(A.r,A.g,A.b);2G=(A.r+A.g+A.b)/3;3V=((Q.2M(U-2G)*2/D)*J)/1n;u(A.r!==U){A.r+=(U-A.r)*3V}u(A.g!==U){A.g+=(U-A.g)*3V}u(A.b!==U){A.b+=(U-A.b)*3V}9 A})});V.17("8g",o(J){9 8.1T("8g",o(A){I 2G;2G=1J.6K(A);A.r=2G;A.g=2G;A.b=2G;9 A})});V.17("8h",o(J){J=Q.1Z((J+1n)/1n,2);9 8.1T("8h",o(A){A.r/=D;A.r-=0.5;A.r*=J;A.r+=0.5;A.r*=D;A.g/=D;A.g-=0.5;A.g*=J;A.g+=0.5;A.g*=D;A.b/=D;A.b-=0.5;A.b*=J;A.b+=0.5;A.b*=D;9 A})});V.17("8i",o(J){9 8.1T("8i",o(A){I b,g,h,34,r,F;34=1p.81(A.r,A.g,A.b);h=34.h*1n;h+=Q.2M(J);h=h%1n;h/=1n;34.h=h;F=1p.83(34.h,34.s,34.v),r=F.r,g=F.g,b=F.b;A.r=r;A.g=g;A.b=b;9 A})});V.17("8k",o(){I 3k,31;u(X.L===2){31=1p.5l(X[0]);3k=X[1]}R u(X.L===4){31={r:X[0],g:X[1],b:X[2]};3k=X[3]}9 8.1T("8k",o(A){A.r-=(A.r-31.r)*(3k/1n);A.g-=(A.g-31.g)*(3k/1n);A.b-=(A.b-31.b)*(3k/1n);9 A})});V.17("8n",o(){9 8.1T("8n",o(A){A.r=D-A.r;A.g=D-A.g;A.b=D-A.b;9 A})});V.17("8o",o(J){u(J==G){J=1n}J/=1n;9 8.1T("8o",o(A){A.r=Q.1h(D,(A.r*(1-(0.aW*J)))+(A.g*(0.aX*J))+(A.b*(0.aY*J)));A.g=Q.1h(D,(A.r*(0.aZ*J))+(A.g*(1-(0.b0*J)))+(A.b*(0.b1*J)));A.b=Q.1h(D,(A.r*(0.b2*J))+(A.g*(0.b3*J))+(A.b*(1-(0.b4*J))));9 A})});V.17("8p",o(J){9 8.1T("8p",o(A){A.r=Q.1Z(A.r/D,J)*D;A.g=Q.1Z(A.g/D,J)*D;A.b=Q.1Z(A.b/D,J)*D;9 A})});V.17("8q",o(J){J=Q.2M(J)*2.55;9 8.1T("8q",o(A){I 2A;2A=1J.6C(J*-1,J);A.r+=2A;A.g+=2A;A.b+=2A;9 A})});V.17("8r",o(J){J=Q.2M(J)*2.55;9 8.1T("8r",o(A){u(A.r>D-J){A.r=D}R u(A.r<J){A.r=0}u(A.g>D-J){A.g=D}R u(A.g<J){A.g=0}u(A.b>D-J){A.b=D}R u(A.b<J){A.b=0}9 A})});V.17("8s",o(1e){I 3j,2y;u(1f 1e!=="2w"){9 8}T(3j 2X 1e){u(!3L.18(1e,3j))42;2y=1e[3j];u(2y===0){87 1e[3j];42}1e[3j]/=1n}u(1e.L===0){9 8}9 8.1T("8s",o(A){u(1e.4E!=G){u(1e.4E>0){A.r+=(D-A.r)*1e.4E}R{A.r-=A.r*Q.2M(1e.4E)}}u(1e.4s!=G){u(1e.4s>0){A.g+=(D-A.g)*1e.4s}R{A.g-=A.g*Q.2M(1e.4s)}}u(1e.4q!=G){u(1e.4q>0){A.b+=(D-A.b)*1e.4q}R{A.b-=A.b*Q.2M(1e.4q)}}9 A})});V.17("4X",o(){I 3Q,1L,2m,2i,1q,i,3i,1k,C,Z,F,2q;2m=X[0],2i=2<=X.L?3x.18(X,1):[];3i=2i[2i.L-1];u(1f 3i==="o"){3Q=3i;2i.4h()}R u(1f 3i==="2S"){3Q=1J[3i];2i.4h()}R{3Q=1J.1L}u(1f 2m==="2S"){2m=2m.bj("")}u(2m[0]==="v"){2m=[\'r\',\'g\',\'b\']}u(2i.L<2){1R"3l 5Q 5P X 2l 4X 47";}1L=3Q(2i,0,D);1k=2i[0];u(1k[0]>0){T(i=C=0,F=1k[0];0<=F?C<F:C>F;i=0<=F?++C:--C){1L[i]=1k[1]}}1q=2i[2i.L-1];u(1q[0]<D){T(i=Z=2q=1q[0];2q<=D?Z<=D:Z>=D;i=2q<=D?++Z:--Z){1L[i]=1q[1]}}9 8.1T("4X",o(A){I 1N,2x;T(i=1N=0,2x=2m.L;0<=2x?1N<2x:1N>2x;i=0<=2x?++1N:--1N){A[2m[i]]=1L[A[2m[i]]]}9 A})});V.17("bk",o(J){I 2Q,2P,p;p=Q.2M(J)/1n;2Q=[0,D*p];2P=[D-(D*p),D];u(J<0){2Q=2Q.8C();2P=2P.8C()}9 8.4X(\'31\',[0,0],2Q,2P,[D,D])});B.1V.17("6w",o(K,P,x,y){I E,1K;u(x==G){x=0}u(y==G){y=0}u(1f 1Y!=="36"&&1Y!==G){E=1m 30(K,P)}R{E=1M.2U(\'E\');1a.40(8.E,E);E.K=K;E.P=P}1K=E.2p(\'2d\');1K.3P(8.E,x,y,K,P,0,0,K,P);8.3U={x:x,y:y};8.84=2c;9 8.57(E)});B.1V.17("4R",o(1F){I E,1K;u(1F==G){1F=G}u(1F===G||((1F.K==G)&&(1F.P==G))){1o.5K("3l 85 an 1E 80 T 4R");9}u(1F.K==G){1F.K=8.E.K*1F.P/8.E.P}R u(1F.P==G){1F.P=8.E.P*1F.K/8.E.K}u(1f 1Y!=="36"&&1Y!==G){E=1m 30(1F.K,1F.P)}R{E=1M.2U(\'E\');1a.40(8.E,E);E.K=1F.K;E.P=1F.P}1K=E.2p(\'2d\');1K.3P(8.E,0,0,8.E.K,8.E.P,0,0,1F.K,1F.P);8.4w=2c;9 8.57(E)});B.V.17("6w",o(){9 8.6k("6w",4c.H.3r.18(X,0))});B.V.17("4R",o(){9 8.6k("4R",4c.H.3r.18(X,0))})}).18(8);',62,707,'||||||||this|return|||||||||||||||function||||||if||||||rgba|Caman|_i|255|canvas|_ref|null|prototype|var|adjust|width|length|pixelData|rgbaParent|rgbaLayer|height|Math|else|image|for|max|Filter|args|arguments|_results|_j||name||_len|type|pixel||register|call|context|Util|_this|src|result|options|typeof|Renderer|min|img|callback|start|loc|new|100|Log|Convert|end|Pixel|endX|case|currentJob|data|layer|val|128|Blender|push|key|debug|obj|dimensions|newDims|false|imageData|controlPoints|Calculate|ctx|bezier|document|_k|Event|divisor|IO|throw|NodeJS|process|builder|Plugin|id|bnum|exports|pow|parentData|Store|Layer|initObj|target|Type|bias||ret|055|levels|kernel|true||hex|prev|Module|caman|cps|clampRGB|newLoc|to|chans|fn|execute|getContext|_ref1|res|ratio|get|apply|plugin|object|_ref2|value|ele|rand|processNext|devicePixelRatio|add|floor|Analyze|avg|search|Image|Blocks|opacity|renderer|abs|pointsPerSegment|mul|ctrl2|ctrl1|from|string|window|createElement|highBound|events|in|CamanParser|values|Canvas|rgb|lowBound|modPixelData|hsv|func|undefined|layerData|originalPixelData|trigger|getImageData|proxyUrl|break|lang|imageHeight|imageWidth|p0|finishInit|last|chan|level|Invalid|color|nodeFileReady|items|builderIndex|fs|slice|CamanJS|Requires|file|blockFinished|1379310345|__slice|cb|child|parent|leftCoord|p1|toString|lerp|clamp|getAttribute|_error|switch|originalWidth|numPixels|__hasProp|preScaledWidth|originalHeight|preScaledHeight|drawImage|algo|scaledCanvas|require|dataArray|cropCoordinates|amt|attr|Fiber|url|opts|copyAttributes|adjustSize|continue|prop|allowRevert|copy|imgs|filter|blockN|http|unparsedInstructions|pixelStack|Array|getFloat|round|imageLoaded|__indexOf|pop|renderQueue|currentLayer|event|err|toLowerCase|pointsPerStep|Root|updateContext|blue|coord|green|dest|pixels|blocksDone|resized|hiDPIRatio|INST_REGEX|buf|initType|startX|startY|parseInt|red|imageUrl|moduleKeywords|includeAlpha|vert|root|sel|hiDPIReplacement|processFn|match|horiz|complete|initialize
|
|
|
