From 5880bbee8f11b4a999cf9f11e9fca3c5739057ec Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Wed, 4 Jul 2012 17:37:47 +0200 Subject: [PATCH] add miniColors --- 3rdparty/miniColors/GPL-LICENSE.txt | 278 +++++++++ 3rdparty/miniColors/MIT-LICENSE.txt | 20 + 3rdparty/miniColors/css/images/colors.png | Bin 0 -> 12485 bytes 3rdparty/miniColors/css/images/trigger.png | Bin 0 -> 1406 bytes 3rdparty/miniColors/css/jquery.miniColors.css | 81 +++ 3rdparty/miniColors/js/jquery.miniColors.js | 580 ++++++++++++++++++ .../miniColors/js/jquery.miniColors.min.js | 9 + 7 files changed, 968 insertions(+) create mode 100644 3rdparty/miniColors/GPL-LICENSE.txt create mode 100644 3rdparty/miniColors/MIT-LICENSE.txt create mode 100755 3rdparty/miniColors/css/images/colors.png create mode 100755 3rdparty/miniColors/css/images/trigger.png create mode 100755 3rdparty/miniColors/css/jquery.miniColors.css create mode 100755 3rdparty/miniColors/js/jquery.miniColors.js create mode 100755 3rdparty/miniColors/js/jquery.miniColors.min.js diff --git a/3rdparty/miniColors/GPL-LICENSE.txt b/3rdparty/miniColors/GPL-LICENSE.txt new file mode 100644 index 00000000000..11dddd00ef0 --- /dev/null +++ b/3rdparty/miniColors/GPL-LICENSE.txt @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/3rdparty/miniColors/MIT-LICENSE.txt b/3rdparty/miniColors/MIT-LICENSE.txt new file mode 100644 index 00000000000..ec6f7581576 --- /dev/null +++ b/3rdparty/miniColors/MIT-LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) Cory LaViska + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/3rdparty/miniColors/css/images/colors.png b/3rdparty/miniColors/css/images/colors.png new file mode 100755 index 0000000000000000000000000000000000000000..1b4f819d8d9367147e8b1d2145e5fa1c5d6a48d3 GIT binary patch literal 12485 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ⅇsG=?cNMoCqvR`-c?ZWfsDabqvs zz}LZjcShYxZmFKhoT+s^dCGz{z0U;HOZz+l{+hf&mcbyJUcw?ncA(w@uu9^_v-jAC z{%vpeRGH}1%v`BuoGIn!1li=`X8@38(|5Umi@?cxi~l9hmD`Vc5B*tuKcP`qFI0lf zR!{P~o$PG*dyz#lH}%WsY6avg5#iNyRow2WADpnB`Ljs^)aN|XSDEA0_pDsN6~Mpp zp6Xb1S*@OV-^xw40yNhqd-8^Em8nl9ZsnVGOc8KBMtuQz&wy$5ZZA*V`Oh-OQ_0jS zi$?Ezj~nw zK{Gurv^@hN6Kkgt&B>PT4!bKADSQix;Y{{C$)2^X`e=I{@60pF0C;>qmW; z?_Ju=DX)dIRd#qLNqaFAzdN)16WxNJ8KmPwbIsb$US<8R% zfByu~um1a&kDq@M6Ztx!|D1QqaR%DlQ~&q&@Tcc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=Ysky7Esj-oY45WOi_+yd2$+aLNs$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa?kr@s7UU|{^@ z>Eaktacj*~$E-sRB5mp?BgD7u(%yAKHs;l})P)a3cWG2{e-&!7?th>gvs+vwW{XHj z&V_A;GfVy@#?3g=p?UVeXVt^i_y7Df_FMC?;Kvz>>^EOen!6;zabwilu;g6^dl-e>WDmLJGs&^yJ4ueh&55'); + trigger.insertAfter(input); + + // Set input data and update attributes + input + .addClass('miniColors') + .data('original-maxlength', input.attr('maxlength') || null) + .data('original-autocomplete', input.attr('autocomplete') || null) + .data('letterCase', 'uppercase') + .data('trigger', trigger) + .data('hsb', hsb) + .data('change', o.change ? o.change : null) + .data('close', o.close ? o.close : null) + .data('open', o.open ? o.open : null) + .attr('maxlength', 7) + .attr('autocomplete', 'off') + .val('#' + convertCase(color, o.letterCase)); + + // Handle options + if( o.readonly ) input.prop('readonly', true); + if( o.disabled ) disable(input); + + // Show selector when trigger is clicked + trigger.bind('click.miniColors', function(event) { + event.preventDefault(); + if( input.val() === '' ) input.val('#'); + show(input); + + }); + + // Show selector when input receives focus + input.bind('focus.miniColors', function(event) { + if( input.val() === '' ) input.val('#'); + show(input); + }); + + // Hide on blur + input.bind('blur.miniColors', function(event) { + var hex = expandHex( hsb2hex(input.data('hsb')) ); + input.val( hex ? '#' + convertCase(hex, input.data('letterCase')) : '' ); + }); + + // Hide when tabbing out of the input + input.bind('keydown.miniColors', function(event) { + if( event.keyCode === 9 ) hide(input); + }); + + // Update when color is typed in + input.bind('keyup.miniColors', function(event) { + setColorFromInput(input); + }); + + // Handle pasting + input.bind('paste.miniColors', function(event) { + // Short pause to wait for paste to complete + setTimeout( function() { + setColorFromInput(input); + }, 5); + }); + + }; + + var destroy = function(input) { + // + // Destroys an active instance of the miniColors selector + // + + hide(); + input = $(input); + + // Restore to original state + input.data('trigger').remove(); + input + .attr('autocomplete', input.data('original-autocomplete')) + .attr('maxlength', input.data('original-maxlength')) + .removeData() + .removeClass('miniColors') + .unbind('.miniColors'); + $(document).unbind('.miniColors'); + }; + + var enable = function(input) { + // + // Enables the input control and the selector + // + input + .prop('disabled', false) + .data('trigger') + .css('opacity', 1); + }; + + var disable = function(input) { + // + // Disables the input control and the selector + // + hide(input); + input + .prop('disabled', true) + .data('trigger') + .css('opacity', 0.5); + }; + + var show = function(input) { + // + // Shows the miniColors selector + // + if( input.prop('disabled') ) return false; + + // Hide all other instances + hide(); + + // Generate the selector + var selector = $('

'); + selector + .append('
') + .append('
') + .css({ + top: input.is(':visible') ? input.offset().top + input.outerHeight() : input.data('trigger').offset().top + input.data('trigger').outerHeight(), + left: input.is(':visible') ? input.offset().left : input.data('trigger').offset().left, + display: 'none' + }) + .addClass( input.attr('class') ); + + // Set background for colors + var hsb = input.data('hsb'); + selector + .find('.miniColors-colors') + .css('backgroundColor', '#' + hsb2hex({ h: hsb.h, s: 100, b: 100 })); + + // Set colorPicker position + var colorPosition = input.data('colorPosition'); + if( !colorPosition ) colorPosition = getColorPositionFromHSB(hsb); + selector.find('.miniColors-colorPicker') + .css('top', colorPosition.y + 'px') + .css('left', colorPosition.x + 'px'); + + // Set huePicker position + var huePosition = input.data('huePosition'); + if( !huePosition ) huePosition = getHuePositionFromHSB(hsb); + selector.find('.miniColors-huePicker').css('top', huePosition.y + 'px'); + + // Set input data + input + .data('selector', selector) + .data('huePicker', selector.find('.miniColors-huePicker')) + .data('colorPicker', selector.find('.miniColors-colorPicker')) + .data('mousebutton', 0); + + $('BODY').append(selector); + selector.fadeIn(100); + + // Prevent text selection in IE + selector.bind('selectstart', function() { return false; }); + + $(document).bind('mousedown.miniColors touchstart.miniColors', function(event) { + + input.data('mousebutton', 1); + var testSubject = $(event.target).parents().andSelf(); + + if( testSubject.hasClass('miniColors-colors') ) { + event.preventDefault(); + input.data('moving', 'colors'); + moveColor(input, event); + } + + if( testSubject.hasClass('miniColors-hues') ) { + event.preventDefault(); + input.data('moving', 'hues'); + moveHue(input, event); + } + + if( testSubject.hasClass('miniColors-selector') ) { + event.preventDefault(); + return; + } + + if( testSubject.hasClass('miniColors') ) return; + + hide(input); + }); + + $(document) + .bind('mouseup.miniColors touchend.miniColors', function(event) { + event.preventDefault(); + input.data('mousebutton', 0).removeData('moving'); + }) + .bind('mousemove.miniColors touchmove.miniColors', function(event) { + event.preventDefault(); + if( input.data('mousebutton') === 1 ) { + if( input.data('moving') === 'colors' ) moveColor(input, event); + if( input.data('moving') === 'hues' ) moveHue(input, event); + } + }); + + // Fire open callback + if( input.data('open') ) { + input.data('open').call(input.get(0), '#' + hsb2hex(hsb), hsb2rgb(hsb)); + } + + }; + + var hide = function(input) { + + // + // Hides one or more miniColors selectors + // + + // Hide all other instances if input isn't specified + if( !input ) input = '.miniColors'; + + $(input).each( function() { + var selector = $(this).data('selector'); + $(this).removeData('selector'); + $(selector).fadeOut(100, function() { + // Fire close callback + if( input.data('close') ) { + var hsb = input.data('hsb'), hex = hsb2hex(hsb); + input.data('close').call(input.get(0), '#' + hex, hsb2rgb(hsb)); + } + $(this).remove(); + }); + }); + + $(document).unbind('.miniColors'); + + }; + + var moveColor = function(input, event) { + + var colorPicker = input.data('colorPicker'); + + colorPicker.hide(); + + var position = { + x: event.pageX, + y: event.pageY + }; + + // Touch support + if( event.originalEvent.changedTouches ) { + position.x = event.originalEvent.changedTouches[0].pageX; + position.y = event.originalEvent.changedTouches[0].pageY; + } + position.x = position.x - input.data('selector').find('.miniColors-colors').offset().left - 5; + position.y = position.y - input.data('selector').find('.miniColors-colors').offset().top - 5; + if( position.x <= -5 ) position.x = -5; + if( position.x >= 144 ) position.x = 144; + if( position.y <= -5 ) position.y = -5; + if( position.y >= 144 ) position.y = 144; + + input.data('colorPosition', position); + colorPicker.css('left', position.x).css('top', position.y).show(); + + // Calculate saturation + var s = Math.round((position.x + 5) * 0.67); + if( s < 0 ) s = 0; + if( s > 100 ) s = 100; + + // Calculate brightness + var b = 100 - Math.round((position.y + 5) * 0.67); + if( b < 0 ) b = 0; + if( b > 100 ) b = 100; + + // Update HSB values + var hsb = input.data('hsb'); + hsb.s = s; + hsb.b = b; + + // Set color + setColor(input, hsb, true); + }; + + var moveHue = function(input, event) { + + var huePicker = input.data('huePicker'); + + huePicker.hide(); + + var position = { + y: event.pageY + }; + + // Touch support + if( event.originalEvent.changedTouches ) { + position.y = event.originalEvent.changedTouches[0].pageY; + } + + position.y = position.y - input.data('selector').find('.miniColors-colors').offset().top - 1; + if( position.y <= -1 ) position.y = -1; + if( position.y >= 149 ) position.y = 149; + input.data('huePosition', position); + huePicker.css('top', position.y).show(); + + // Calculate hue + var h = Math.round((150 - position.y - 1) * 2.4); + if( h < 0 ) h = 0; + if( h > 360 ) h = 360; + + // Update HSB values + var hsb = input.data('hsb'); + hsb.h = h; + + // Set color + setColor(input, hsb, true); + + }; + + var setColor = function(input, hsb, updateInput) { + input.data('hsb', hsb); + var hex = hsb2hex(hsb); + if( updateInput ) input.val( '#' + convertCase(hex, input.data('letterCase')) ); + input.data('trigger').css('backgroundColor', '#' + hex); + if( input.data('selector') ) input.data('selector').find('.miniColors-colors').css('backgroundColor', '#' + hsb2hex({ h: hsb.h, s: 100, b: 100 })); + + // Fire change callback + if( input.data('change') ) { + if( hex === input.data('lastChange') ) return; + input.data('change').call(input.get(0), '#' + hex, hsb2rgb(hsb)); + input.data('lastChange', hex); + } + + }; + + var setColorFromInput = function(input) { + + input.val('#' + cleanHex(input.val())); + var hex = expandHex(input.val()); + if( !hex ) return false; + + // Get HSB equivalent + var hsb = hex2hsb(hex); + + // If color is the same, no change required + var currentHSB = input.data('hsb'); + if( hsb.h === currentHSB.h && hsb.s === currentHSB.s && hsb.b === currentHSB.b ) return true; + + // Set colorPicker position + var colorPosition = getColorPositionFromHSB(hsb); + var colorPicker = $(input.data('colorPicker')); + colorPicker.css('top', colorPosition.y + 'px').css('left', colorPosition.x + 'px'); + input.data('colorPosition', colorPosition); + + // Set huePosition position + var huePosition = getHuePositionFromHSB(hsb); + var huePicker = $(input.data('huePicker')); + huePicker.css('top', huePosition.y + 'px'); + input.data('huePosition', huePosition); + + setColor(input, hsb); + + return true; + + }; + + var convertCase = function(string, letterCase) { + if( letterCase === 'lowercase' ) return string.toLowerCase(); + if( letterCase === 'uppercase' ) return string.toUpperCase(); + return string; + }; + + var getColorPositionFromHSB = function(hsb) { + var x = Math.ceil(hsb.s / 0.67); + if( x < 0 ) x = 0; + if( x > 150 ) x = 150; + var y = 150 - Math.ceil(hsb.b / 0.67); + if( y < 0 ) y = 0; + if( y > 150 ) y = 150; + return { x: x - 5, y: y - 5 }; + }; + + var getHuePositionFromHSB = function(hsb) { + var y = 150 - (hsb.h / 2.4); + if( y < 0 ) h = 0; + if( y > 150 ) h = 150; + return { y: y - 1 }; + }; + + var cleanHex = function(hex) { + return hex.replace(/[^A-F0-9]/ig, ''); + }; + + var expandHex = function(hex) { + hex = cleanHex(hex); + if( !hex ) return null; + if( hex.length === 3 ) hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + return hex.length === 6 ? hex : null; + }; + + var hsb2rgb = function(hsb) { + var rgb = {}; + var h = Math.round(hsb.h); + var s = Math.round(hsb.s*255/100); + var v = Math.round(hsb.b*255/100); + if(s === 0) { + rgb.r = rgb.g = rgb.b = v; + } else { + var t1 = v; + var t2 = (255 - s) * v / 255; + var t3 = (t1 - t2) * (h % 60) / 60; + if( h === 360 ) h = 0; + if( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; } + else if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; } + else if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; } + else if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; } + else if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; } + else if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; } + else { rgb.r = 0; rgb.g = 0; rgb.b = 0; } + } + return { + r: Math.round(rgb.r), + g: Math.round(rgb.g), + b: Math.round(rgb.b) + }; + }; + + var rgb2hex = function(rgb) { + var hex = [ + rgb.r.toString(16), + rgb.g.toString(16), + rgb.b.toString(16) + ]; + $.each(hex, function(nr, val) { + if (val.length === 1) hex[nr] = '0' + val; + }); + return hex.join(''); + }; + + var hex2rgb = function(hex) { + hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16); + + return { + r: hex >> 16, + g: (hex & 0x00FF00) >> 8, + b: (hex & 0x0000FF) + }; + }; + + var rgb2hsb = function(rgb) { + var hsb = { h: 0, s: 0, b: 0 }; + var min = Math.min(rgb.r, rgb.g, rgb.b); + var max = Math.max(rgb.r, rgb.g, rgb.b); + var delta = max - min; + hsb.b = max; + hsb.s = max !== 0 ? 255 * delta / max : 0; + if( hsb.s !== 0 ) { + if( rgb.r === max ) { + hsb.h = (rgb.g - rgb.b) / delta; + } else if( rgb.g === max ) { + hsb.h = 2 + (rgb.b - rgb.r) / delta; + } else { + hsb.h = 4 + (rgb.r - rgb.g) / delta; + } + } else { + hsb.h = -1; + } + hsb.h *= 60; + if( hsb.h < 0 ) { + hsb.h += 360; + } + hsb.s *= 100/255; + hsb.b *= 100/255; + return hsb; + }; + + var hex2hsb = function(hex) { + var hsb = rgb2hsb(hex2rgb(hex)); + // Zero out hue marker for black, white, and grays (saturation === 0) + if( hsb.s === 0 ) hsb.h = 360; + return hsb; + }; + + var hsb2hex = function(hsb) { + return rgb2hex(hsb2rgb(hsb)); + }; + + + // Handle calls to $([selector]).miniColors() + switch(o) { + + case 'readonly': + + $(this).each( function() { + if( !$(this).hasClass('miniColors') ) return; + $(this).prop('readonly', data); + }); + + return $(this); + + case 'disabled': + + $(this).each( function() { + if( !$(this).hasClass('miniColors') ) return; + if( data ) { + disable($(this)); + } else { + enable($(this)); + } + }); + + return $(this); + + case 'value': + + // Getter + if( data === undefined ) { + if( !$(this).hasClass('miniColors') ) return; + var input = $(this), + hex = expandHex(input.val()); + return hex ? '#' + convertCase(hex, input.data('letterCase')) : null; + } + + // Setter + $(this).each( function() { + if( !$(this).hasClass('miniColors') ) return; + $(this).val(data); + setColorFromInput($(this)); + }); + + return $(this); + + case 'destroy': + + $(this).each( function() { + if( !$(this).hasClass('miniColors') ) return; + destroy($(this)); + }); + + return $(this); + + default: + + if( !o ) o = {}; + + $(this).each( function() { + + // Must be called on an input element + if( $(this)[0].tagName.toLowerCase() !== 'input' ) return; + + // If a trigger is present, the control was already created + if( $(this).data('trigger') ) return; + + // Create the control + create($(this), o, data); + + }); + + return $(this); + + } + + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/3rdparty/miniColors/js/jquery.miniColors.min.js b/3rdparty/miniColors/js/jquery.miniColors.min.js new file mode 100755 index 00000000000..c00e0ace6b5 --- /dev/null +++ b/3rdparty/miniColors/js/jquery.miniColors.min.js @@ -0,0 +1,9 @@ +/* + * jQuery miniColors: A small color selector + * + * Copyright 2011 Cory LaViska for A Beautiful Site, LLC. (http://abeautifulsite.net/) + * + * Dual licensed under the MIT or GPL Version 2 licenses + * +*/ +if(jQuery)(function($){$.extend($.fn,{miniColors:function(o,data){var create=function(input,o,data){var color=expandHex(input.val());if(!color)color='ffffff';var hsb=hex2hsb(color);var trigger=$('');trigger.insertAfter(input);input.addClass('miniColors').data('original-maxlength',input.attr('maxlength')||null).data('original-autocomplete',input.attr('autocomplete')||null).data('letterCase','uppercase').data('trigger',trigger).data('hsb',hsb).data('change',o.change?o.change:null).data('close',o.close?o.close:null).data('open',o.open?o.open:null).attr('maxlength',7).attr('autocomplete','off').val('#'+convertCase(color,o.letterCase));if(o.readonly)input.prop('readonly',true);if(o.disabled)disable(input);trigger.bind('click.miniColors',function(event){event.preventDefault();if(input.val()==='')input.val('#');show(input)});input.bind('focus.miniColors',function(event){if(input.val()==='')input.val('#');show(input)});input.bind('blur.miniColors',function(event){var hex=expandHex(hsb2hex(input.data('hsb')));input.val(hex?'#'+convertCase(hex,input.data('letterCase')):'')});input.bind('keydown.miniColors',function(event){if(event.keyCode===9)hide(input)});input.bind('keyup.miniColors',function(event){setColorFromInput(input)});input.bind('paste.miniColors',function(event){setTimeout(function(){setColorFromInput(input)},5)})};var destroy=function(input){hide();input=$(input);input.data('trigger').remove();input.attr('autocomplete',input.data('original-autocomplete')).attr('maxlength',input.data('original-maxlength')).removeData().removeClass('miniColors').unbind('.miniColors');$(document).unbind('.miniColors')};var enable=function(input){input.prop('disabled',false).data('trigger').css('opacity',1)};var disable=function(input){hide(input);input.prop('disabled',true).data('trigger').css('opacity',0.5)};var show=function(input){if(input.prop('disabled'))return false;hide();var selector=$('
');selector.append('
').append('
').css({top:input.is(':visible')?input.offset().top+input.outerHeight():input.data('trigger').offset().top+input.data('trigger').outerHeight(),left:input.is(':visible')?input.offset().left:input.data('trigger').offset().left,display:'none'}).addClass(input.attr('class'));var hsb=input.data('hsb');selector.find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100}));var colorPosition=input.data('colorPosition');if(!colorPosition)colorPosition=getColorPositionFromHSB(hsb);selector.find('.miniColors-colorPicker').css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');var huePosition=input.data('huePosition');if(!huePosition)huePosition=getHuePositionFromHSB(hsb);selector.find('.miniColors-huePicker').css('top',huePosition.y+'px');input.data('selector',selector).data('huePicker',selector.find('.miniColors-huePicker')).data('colorPicker',selector.find('.miniColors-colorPicker')).data('mousebutton',0);$('BODY').append(selector);selector.fadeIn(100);selector.bind('selectstart',function(){return false});$(document).bind('mousedown.miniColors touchstart.miniColors',function(event){input.data('mousebutton',1);var testSubject=$(event.target).parents().andSelf();if(testSubject.hasClass('miniColors-colors')){event.preventDefault();input.data('moving','colors');moveColor(input,event)}if(testSubject.hasClass('miniColors-hues')){event.preventDefault();input.data('moving','hues');moveHue(input,event)}if(testSubject.hasClass('miniColors-selector')){event.preventDefault();return}if(testSubject.hasClass('miniColors'))return;hide(input)});$(document).bind('mouseup.miniColors touchend.miniColors',function(event){event.preventDefault();input.data('mousebutton',0).removeData('moving')}).bind('mousemove.miniColors touchmove.miniColors',function(event){event.preventDefault();if(input.data('mousebutton')===1){if(input.data('moving')==='colors')moveColor(input,event);if(input.data('moving')==='hues')moveHue(input,event)}});if(input.data('open')){input.data('open').call(input.get(0),'#'+hsb2hex(hsb),hsb2rgb(hsb))}};var hide=function(input){if(!input)input='.miniColors';$(input).each(function(){var selector=$(this).data('selector');$(this).removeData('selector');$(selector).fadeOut(100,function(){if(input.data('close')){var hsb=input.data('hsb'),hex=hsb2hex(hsb);input.data('close').call(input.get(0),'#'+hex,hsb2rgb(hsb))}$(this).remove()})});$(document).unbind('.miniColors')};var moveColor=function(input,event){var colorPicker=input.data('colorPicker');colorPicker.hide();var position={x:event.pageX,y:event.pageY};if(event.originalEvent.changedTouches){position.x=event.originalEvent.changedTouches[0].pageX;position.y=event.originalEvent.changedTouches[0].pageY}position.x=position.x-input.data('selector').find('.miniColors-colors').offset().left-5;position.y=position.y-input.data('selector').find('.miniColors-colors').offset().top-5;if(position.x<=-5)position.x=-5;if(position.x>=144)position.x=144;if(position.y<=-5)position.y=-5;if(position.y>=144)position.y=144;input.data('colorPosition',position);colorPicker.css('left',position.x).css('top',position.y).show();var s=Math.round((position.x+5)*0.67);if(s<0)s=0;if(s>100)s=100;var b=100-Math.round((position.y+5)*0.67);if(b<0)b=0;if(b>100)b=100;var hsb=input.data('hsb');hsb.s=s;hsb.b=b;setColor(input,hsb,true)};var moveHue=function(input,event){var huePicker=input.data('huePicker');huePicker.hide();var position={y:event.pageY};if(event.originalEvent.changedTouches){position.y=event.originalEvent.changedTouches[0].pageY}position.y=position.y-input.data('selector').find('.miniColors-colors').offset().top-1;if(position.y<=-1)position.y=-1;if(position.y>=149)position.y=149;input.data('huePosition',position);huePicker.css('top',position.y).show();var h=Math.round((150-position.y-1)*2.4);if(h<0)h=0;if(h>360)h=360;var hsb=input.data('hsb');hsb.h=h;setColor(input,hsb,true)};var setColor=function(input,hsb,updateInput){input.data('hsb',hsb);var hex=hsb2hex(hsb);if(updateInput)input.val('#'+convertCase(hex,input.data('letterCase')));input.data('trigger').css('backgroundColor','#'+hex);if(input.data('selector'))input.data('selector').find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100}));if(input.data('change')){if(hex===input.data('lastChange'))return;input.data('change').call(input.get(0),'#'+hex,hsb2rgb(hsb));input.data('lastChange',hex)}};var setColorFromInput=function(input){input.val('#'+cleanHex(input.val()));var hex=expandHex(input.val());if(!hex)return false;var hsb=hex2hsb(hex);var currentHSB=input.data('hsb');if(hsb.h===currentHSB.h&&hsb.s===currentHSB.s&&hsb.b===currentHSB.b)return true;var colorPosition=getColorPositionFromHSB(hsb);var colorPicker=$(input.data('colorPicker'));colorPicker.css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');input.data('colorPosition',colorPosition);var huePosition=getHuePositionFromHSB(hsb);var huePicker=$(input.data('huePicker'));huePicker.css('top',huePosition.y+'px');input.data('huePosition',huePosition);setColor(input,hsb);return true};var convertCase=function(string,letterCase){if(letterCase==='lowercase')return string.toLowerCase();if(letterCase==='uppercase')return string.toUpperCase();return string};var getColorPositionFromHSB=function(hsb){var x=Math.ceil(hsb.s/0.67);if(x<0)x=0;if(x>150)x=150;var y=150-Math.ceil(hsb.b/0.67);if(y<0)y=0;if(y>150)y=150;return{x:x-5,y:y-5}};var getHuePositionFromHSB=function(hsb){var y=150-(hsb.h/2.4);if(y<0)h=0;if(y>150)h=150;return{y:y-1}};var cleanHex=function(hex){return hex.replace(/[^A-F0-9]/ig,'')};var expandHex=function(hex){hex=cleanHex(hex);if(!hex)return null;if(hex.length===3)hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];return hex.length===6?hex:null};var hsb2rgb=function(hsb){var rgb={};var h=Math.round(hsb.h);var s=Math.round(hsb.s*255/100);var v=Math.round(hsb.b*255/100);if(s===0){rgb.r=rgb.g=rgb.b=v}else{var t1=v;var t2=(255-s)*v/255;var t3=(t1-t2)*(h%60)/60;if(h===360)h=0;if(h<60){rgb.r=t1;rgb.b=t2;rgb.g=t2+t3}else if(h<120){rgb.g=t1;rgb.b=t2;rgb.r=t1-t3}else if(h<180){rgb.g=t1;rgb.r=t2;rgb.b=t2+t3}else if(h<240){rgb.b=t1;rgb.r=t2;rgb.g=t1-t3}else if(h<300){rgb.b=t1;rgb.g=t2;rgb.r=t2+t3}else if(h<360){rgb.r=t1;rgb.g=t2;rgb.b=t1-t3}else{rgb.r=0;rgb.g=0;rgb.b=0}}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)}};var rgb2hex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];$.each(hex,function(nr,val){if(val.length===1)hex[nr]='0'+val});return hex.join('')};var hex2rgb=function(hex){hex=parseInt(((hex.indexOf('#')>-1)?hex.substring(1):hex),16);return{r:hex>>16,g:(hex&0x00FF00)>>8,b:(hex&0x0000FF)}};var rgb2hsb=function(rgb){var hsb={h:0,s:0,b:0};var min=Math.min(rgb.r,rgb.g,rgb.b);var max=Math.max(rgb.r,rgb.g,rgb.b);var delta=max-min;hsb.b=max;hsb.s=max!==0?255*delta/max:0;if(hsb.s!==0){if(rgb.r===max){hsb.h=(rgb.g-rgb.b)/delta}else if(rgb.g===max){hsb.h=2+(rgb.b-rgb.r)/delta}else{hsb.h=4+(rgb.r-rgb.g)/delta}}else{hsb.h=-1}hsb.h*=60;if(hsb.h<0){hsb.h+=360}hsb.s*=100/255;hsb.b*=100/255;return hsb};var hex2hsb=function(hex){var hsb=rgb2hsb(hex2rgb(hex));if(hsb.s===0)hsb.h=360;return hsb};var hsb2hex=function(hsb){return rgb2hex(hsb2rgb(hsb))};switch(o){case'readonly':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).prop('readonly',data)});return $(this);case'disabled':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;if(data){disable($(this))}else{enable($(this))}});return $(this);case'value':if(data===undefined){if(!$(this).hasClass('miniColors'))return;var input=$(this),hex=expandHex(input.val());return hex?'#'+convertCase(hex,input.data('letterCase')):null}$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).val(data);setColorFromInput($(this))});return $(this);case'destroy':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;destroy($(this))});return $(this);default:if(!o)o={};$(this).each(function(){if($(this)[0].tagName.toLowerCase()!=='input')return;if($(this).data('trigger'))return;create($(this),o,data)});return $(this)}}})})(jQuery); \ No newline at end of file