annotate web/lib/tapmodo-Jcrop-1902fbc/js/jquery.Jcrop.js @ 2376:4556eebe5d73

topdir reorgs; let pdm have its src/ dir; separate vite area from light9/
author drewp@bigasterisk.com
date Sun, 12 May 2024 19:02:10 -0700
parents light9/web/lib/tapmodo-Jcrop-1902fbc/js/jquery.Jcrop.js@95dfce5c12ce
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1094
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1 /**
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
2 * jquery.Jcrop.js v0.9.12
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
3 * jQuery Image Cropping Plugin - released under MIT License
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
4 * Author: Kelly Hallman <khallman@gmail.com>
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
5 * http://github.com/tapmodo/Jcrop
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
6 * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
7 *
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
8 * Permission is hereby granted, free of charge, to any person
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
9 * obtaining a copy of this software and associated documentation
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
10 * files (the "Software"), to deal in the Software without
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
11 * restriction, including without limitation the rights to use,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
12 * copy, modify, merge, publish, distribute, sublicense, and/or sell
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
13 * copies of the Software, and to permit persons to whom the
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
14 * Software is furnished to do so, subject to the following
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
15 * conditions:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
16 *
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
17 * The above copyright notice and this permission notice shall be
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
18 * included in all copies or substantial portions of the Software.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
19 *
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
22 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
23 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
24 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
25 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
27 * OTHER DEALINGS IN THE SOFTWARE.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
28 *
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
29 * }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
30 */
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
31
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
32 (function ($) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
33
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
34 $.Jcrop = function (obj, opt) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
35 var options = $.extend({}, $.Jcrop.defaults),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
36 docOffset,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
37 _ua = navigator.userAgent.toLowerCase(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
38 is_msie = /msie/.test(_ua),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
39 ie6mode = /msie [1-6]\./.test(_ua);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
40
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
41 // Internal Methods {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
42 function px(n) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
43 return Math.round(n) + 'px';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
44 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
45 function cssClass(cl) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
46 return options.baseClass + '-' + cl;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
47 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
48 function supportsColorFade() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
49 return $.fx.step.hasOwnProperty('backgroundColor');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
50 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
51 function getPos(obj) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
52 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
53 var pos = $(obj).offset();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
54 return [pos.left, pos.top];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
55 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
56 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
57 function mouseAbs(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
58 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
59 return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
60 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
61 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
62 function setOptions(opt) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
63 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
64 if (typeof(opt) !== 'object') opt = {};
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
65 options = $.extend(options, opt);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
66
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
67 $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
68 if (typeof(options[e]) !== 'function') options[e] = function () {};
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
69 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
70 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
71 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
72 function startDragMode(mode, pos, touch) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
73 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
74 docOffset = getPos($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
75 Tracker.setCursor(mode === 'move' ? mode : mode + '-resize');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
76
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
77 if (mode === 'move') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
78 return Tracker.activateHandlers(createMover(pos), doneSelect, touch);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
79 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
80
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
81 var fc = Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
82 var opp = oppLockCorner(mode);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
83 var opc = Coords.getCorner(oppLockCorner(opp));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
84
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
85 Coords.setPressed(Coords.getCorner(opp));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
86 Coords.setCurrent(opc);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
87
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
88 Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
89 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
90 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
91 function dragmodeHandler(mode, f) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
92 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
93 return function (pos) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
94 if (!options.aspectRatio) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
95 switch (mode) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
96 case 'e':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
97 pos[1] = f.y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
98 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
99 case 'w':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
100 pos[1] = f.y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
101 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
102 case 'n':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
103 pos[0] = f.x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
104 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
105 case 's':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
106 pos[0] = f.x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
107 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
108 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
109 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
110 switch (mode) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
111 case 'e':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
112 pos[1] = f.y + 1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
113 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
114 case 'w':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
115 pos[1] = f.y + 1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
116 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
117 case 'n':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
118 pos[0] = f.x + 1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
119 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
120 case 's':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
121 pos[0] = f.x + 1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
122 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
123 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
124 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
125 Coords.setCurrent(pos);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
126 Selection.update();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
127 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
128 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
129 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
130 function createMover(pos) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
131 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
132 var lloc = pos;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
133 KeyManager.watchKeys();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
134
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
135 return function (pos) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
136 Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
137 lloc = pos;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
138
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
139 Selection.update();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
140 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
141 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
142 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
143 function oppLockCorner(ord) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
144 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
145 switch (ord) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
146 case 'n':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
147 return 'sw';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
148 case 's':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
149 return 'nw';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
150 case 'e':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
151 return 'nw';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
152 case 'w':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
153 return 'ne';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
154 case 'ne':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
155 return 'sw';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
156 case 'nw':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
157 return 'se';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
158 case 'se':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
159 return 'nw';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
160 case 'sw':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
161 return 'ne';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
162 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
163 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
164 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
165 function createDragger(ord) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
166 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
167 return function (e) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
168 if (options.disabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
169 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
170 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
171 if ((ord === 'move') && !options.allowMove) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
172 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
173 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
174
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
175 // Fix position of crop area when dragged the very first time.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
176 // Necessary when crop image is in a hidden element when page is loaded.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
177 docOffset = getPos($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
178
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
179 btndown = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
180 startDragMode(ord, mouseAbs(e));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
181 e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
182 e.preventDefault();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
183 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
184 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
185 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
186 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
187 function presize($obj, w, h) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
188 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
189 var nw = $obj.width(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
190 nh = $obj.height();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
191 if ((nw > w) && w > 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
192 nw = w;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
193 nh = (w / $obj.width()) * $obj.height();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
194 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
195 if ((nh > h) && h > 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
196 nh = h;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
197 nw = (h / $obj.height()) * $obj.width();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
198 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
199 xscale = $obj.width() / nw;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
200 yscale = $obj.height() / nh;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
201 $obj.width(nw).height(nh);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
202 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
203 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
204 function unscale(c) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
205 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
206 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
207 x: c.x * xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
208 y: c.y * yscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
209 x2: c.x2 * xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
210 y2: c.y2 * yscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
211 w: c.w * xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
212 h: c.h * yscale
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
213 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
214 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
215 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
216 function doneSelect(pos) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
217 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
218 var c = Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
219 if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
220 Selection.enableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
221 Selection.done();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
222 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
223 Selection.release();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
224 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
225 Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
226 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
227 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
228 function newSelection(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
229 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
230 if (options.disabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
231 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
232 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
233 if (!options.allowSelect) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
234 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
235 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
236 btndown = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
237 docOffset = getPos($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
238 Selection.disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
239 Tracker.setCursor('crosshair');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
240 var pos = mouseAbs(e);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
241 Coords.setPressed(pos);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
242 Selection.update();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
243 Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
244 KeyManager.watchKeys();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
245
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
246 e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
247 e.preventDefault();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
248 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
249 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
250 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
251 function selectDrag(pos) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
252 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
253 Coords.setCurrent(pos);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
254 Selection.update();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
255 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
256 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
257 function newTracker() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
258 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
259 var trk = $('<div></div>').addClass(cssClass('tracker'));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
260 if (is_msie) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
261 trk.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
262 opacity: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
263 backgroundColor: 'white'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
264 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
265 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
266 return trk;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
267 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
268 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
269
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
270 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
271 // Initialization {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
272 // Sanitize some options {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
273 if (typeof(obj) !== 'object') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
274 obj = $(obj)[0];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
275 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
276 if (typeof(opt) !== 'object') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
277 opt = {};
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
278 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
279 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
280 setOptions(opt);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
281 // Initialize some jQuery objects {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
282 // The values are SET on the image(s) for the interface
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
283 // If the original image has any of these set, they will be reset
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
284 // However, if you destroy() the Jcrop instance the original image's
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
285 // character in the DOM will be as you left it.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
286 var img_css = {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
287 border: 'none',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
288 visibility: 'visible',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
289 margin: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
290 padding: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
291 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
292 top: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
293 left: 0
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
294 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
295
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
296 var $origimg = $(obj),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
297 img_mode = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
298
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
299 if (obj.tagName == 'IMG') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
300 // Fix size of crop image.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
301 // Necessary when crop image is within a hidden element when page is loaded.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
302 if ($origimg[0].width != 0 && $origimg[0].height != 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
303 // Obtain dimensions from contained img element.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
304 $origimg.width($origimg[0].width);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
305 $origimg.height($origimg[0].height);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
306 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
307 // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0).
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
308 var tempImage = new Image();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
309 tempImage.src = $origimg[0].src;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
310 $origimg.width(tempImage.width);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
311 $origimg.height(tempImage.height);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
312 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
313
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
314 var $img = $origimg.clone().removeAttr('id').css(img_css).show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
315
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
316 $img.width($origimg.width());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
317 $img.height($origimg.height());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
318 $origimg.after($img).hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
319
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
320 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
321 $img = $origimg.css(img_css).show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
322 img_mode = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
323 if (options.shade === null) { options.shade = true; }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
324 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
325
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
326 presize($img, options.boxWidth, options.boxHeight);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
327
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
328 var boundx = $img.width(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
329 boundy = $img.height(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
330
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
331
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
332 $div = $('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
333 position: 'relative',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
334 backgroundColor: options.bgColor
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
335 }).insertAfter($origimg).append($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
336
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
337 if (options.addClass) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
338 $div.addClass(options.addClass);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
339 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
340
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
341 var $img2 = $('<div />'),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
342
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
343 $img_holder = $('<div />')
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
344 .width('100%').height('100%').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
345 zIndex: 310,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
346 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
347 overflow: 'hidden'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
348 }),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
349
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
350 $hdl_holder = $('<div />')
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
351 .width('100%').height('100%').css('zIndex', 320),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
352
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
353 $sel = $('<div />')
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
354 .css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
355 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
356 zIndex: 600
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
357 }).dblclick(function(){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
358 var c = Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
359 options.onDblClick.call(api,c);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
360 }).insertBefore($img).append($img_holder, $hdl_holder);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
361
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
362 if (img_mode) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
363
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
364 $img2 = $('<img />')
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
365 .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
366
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
367 $img_holder.append($img2);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
368
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
369 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
370
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
371 if (ie6mode) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
372 $sel.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
373 overflowY: 'hidden'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
374 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
375 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
376
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
377 var bound = options.boundary;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
378 var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
379 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
380 top: px(-bound),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
381 left: px(-bound),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
382 zIndex: 290
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
383 }).mousedown(newSelection);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
384
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
385 /* }}} */
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
386 // Set more variables {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
387 var bgcolor = options.bgColor,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
388 bgopacity = options.bgOpacity,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
389 xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
390 btndown, animating, shift_down;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
391
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
392 docOffset = getPos($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
393 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
394 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
395 // Internal Modules {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
396 // Touch Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
397 var Touch = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
398 // Touch support detection function adapted (under MIT License)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
399 // from code by Jeffrey Sambells - http://github.com/iamamused/
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
400 function hasTouchSupport() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
401 var support = {}, events = ['touchstart', 'touchmove', 'touchend'],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
402 el = document.createElement('div'), i;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
403
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
404 try {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
405 for(i=0; i<events.length; i++) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
406 var eventName = events[i];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
407 eventName = 'on' + eventName;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
408 var isSupported = (eventName in el);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
409 if (!isSupported) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
410 el.setAttribute(eventName, 'return;');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
411 isSupported = typeof el[eventName] == 'function';
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
412 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
413 support[events[i]] = isSupported;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
414 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
415 return support.touchstart && support.touchend && support.touchmove;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
416 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
417 catch(err) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
418 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
419 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
420 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
421
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
422 function detectSupport() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
423 if ((options.touchSupport === true) || (options.touchSupport === false)) return options.touchSupport;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
424 else return hasTouchSupport();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
425 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
426 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
427 createDragger: function (ord) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
428 return function (e) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
429 if (options.disabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
430 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
431 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
432 if ((ord === 'move') && !options.allowMove) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
433 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
434 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
435 docOffset = getPos($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
436 btndown = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
437 startDragMode(ord, mouseAbs(Touch.cfilter(e)), true);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
438 e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
439 e.preventDefault();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
440 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
441 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
442 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
443 newSelection: function (e) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
444 return newSelection(Touch.cfilter(e));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
445 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
446 cfilter: function (e){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
447 e.pageX = e.originalEvent.changedTouches[0].pageX;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
448 e.pageY = e.originalEvent.changedTouches[0].pageY;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
449 return e;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
450 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
451 isSupported: hasTouchSupport,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
452 support: detectSupport()
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
453 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
454 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
455 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
456 // Coords Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
457 var Coords = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
458 var x1 = 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
459 y1 = 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
460 x2 = 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
461 y2 = 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
462 ox, oy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
463
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
464 function setPressed(pos) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
465 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
466 pos = rebound(pos);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
467 x2 = x1 = pos[0];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
468 y2 = y1 = pos[1];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
469 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
470 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
471 function setCurrent(pos) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
472 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
473 pos = rebound(pos);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
474 ox = pos[0] - x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
475 oy = pos[1] - y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
476 x2 = pos[0];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
477 y2 = pos[1];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
478 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
479 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
480 function getOffset() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
481 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
482 return [ox, oy];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
483 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
484 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
485 function moveOffset(offset) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
486 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
487 var ox = offset[0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
488 oy = offset[1];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
489
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
490 if (0 > x1 + ox) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
491 ox -= ox + x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
492 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
493 if (0 > y1 + oy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
494 oy -= oy + y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
495 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
496
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
497 if (boundy < y2 + oy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
498 oy += boundy - (y2 + oy);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
499 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
500 if (boundx < x2 + ox) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
501 ox += boundx - (x2 + ox);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
502 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
503
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
504 x1 += ox;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
505 x2 += ox;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
506 y1 += oy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
507 y2 += oy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
508 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
509 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
510 function getCorner(ord) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
511 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
512 var c = getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
513 switch (ord) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
514 case 'ne':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
515 return [c.x2, c.y];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
516 case 'nw':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
517 return [c.x, c.y];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
518 case 'se':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
519 return [c.x2, c.y2];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
520 case 'sw':
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
521 return [c.x, c.y2];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
522 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
523 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
524 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
525 function getFixed() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
526 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
527 if (!options.aspectRatio) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
528 return getRect();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
529 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
530 // This function could use some optimization I think...
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
531 var aspect = options.aspectRatio,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
532 min_x = options.minSize[0] / xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
533
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
534
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
535 //min_y = options.minSize[1]/yscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
536 max_x = options.maxSize[0] / xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
537 max_y = options.maxSize[1] / yscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
538 rw = x2 - x1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
539 rh = y2 - y1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
540 rwa = Math.abs(rw),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
541 rha = Math.abs(rh),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
542 real_ratio = rwa / rha,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
543 xx, yy, w, h;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
544
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
545 if (max_x === 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
546 max_x = boundx * 10;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
547 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
548 if (max_y === 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
549 max_y = boundy * 10;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
550 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
551 if (real_ratio < aspect) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
552 yy = y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
553 w = rha * aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
554 xx = rw < 0 ? x1 - w : w + x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
555
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
556 if (xx < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
557 xx = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
558 h = Math.abs((xx - x1) / aspect);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
559 yy = rh < 0 ? y1 - h : h + y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
560 } else if (xx > boundx) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
561 xx = boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
562 h = Math.abs((xx - x1) / aspect);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
563 yy = rh < 0 ? y1 - h : h + y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
564 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
565 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
566 xx = x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
567 h = rwa / aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
568 yy = rh < 0 ? y1 - h : y1 + h;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
569 if (yy < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
570 yy = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
571 w = Math.abs((yy - y1) * aspect);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
572 xx = rw < 0 ? x1 - w : w + x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
573 } else if (yy > boundy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
574 yy = boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
575 w = Math.abs(yy - y1) * aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
576 xx = rw < 0 ? x1 - w : w + x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
577 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
578 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
579
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
580 // Magic %-)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
581 if (xx > x1) { // right side
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
582 if (xx - x1 < min_x) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
583 xx = x1 + min_x;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
584 } else if (xx - x1 > max_x) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
585 xx = x1 + max_x;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
586 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
587 if (yy > y1) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
588 yy = y1 + (xx - x1) / aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
589 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
590 yy = y1 - (xx - x1) / aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
591 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
592 } else if (xx < x1) { // left side
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
593 if (x1 - xx < min_x) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
594 xx = x1 - min_x;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
595 } else if (x1 - xx > max_x) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
596 xx = x1 - max_x;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
597 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
598 if (yy > y1) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
599 yy = y1 + (x1 - xx) / aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
600 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
601 yy = y1 - (x1 - xx) / aspect;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
602 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
603 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
604
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
605 if (xx < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
606 x1 -= xx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
607 xx = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
608 } else if (xx > boundx) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
609 x1 -= xx - boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
610 xx = boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
611 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
612
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
613 if (yy < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
614 y1 -= yy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
615 yy = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
616 } else if (yy > boundy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
617 y1 -= yy - boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
618 yy = boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
619 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
620
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
621 return makeObj(flipCoords(x1, y1, xx, yy));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
622 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
623 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
624 function rebound(p) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
625 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
626 if (p[0] < 0) p[0] = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
627 if (p[1] < 0) p[1] = 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
628
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
629 if (p[0] > boundx) p[0] = boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
630 if (p[1] > boundy) p[1] = boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
631
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
632 return [Math.round(p[0]), Math.round(p[1])];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
633 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
634 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
635 function flipCoords(x1, y1, x2, y2) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
636 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
637 var xa = x1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
638 xb = x2,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
639 ya = y1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
640 yb = y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
641 if (x2 < x1) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
642 xa = x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
643 xb = x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
644 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
645 if (y2 < y1) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
646 ya = y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
647 yb = y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
648 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
649 return [xa, ya, xb, yb];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
650 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
651 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
652 function getRect() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
653 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
654 var xsize = x2 - x1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
655 ysize = y2 - y1,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
656 delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
657
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
658 if (xlimit && (Math.abs(xsize) > xlimit)) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
659 x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
660 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
661 if (ylimit && (Math.abs(ysize) > ylimit)) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
662 y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
663 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
664
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
665 if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
666 y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
667 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
668 if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
669 x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
670 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
671
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
672 if (x1 < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
673 x2 -= x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
674 x1 -= x1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
675 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
676 if (y1 < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
677 y2 -= y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
678 y1 -= y1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
679 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
680 if (x2 < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
681 x1 -= x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
682 x2 -= x2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
683 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
684 if (y2 < 0) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
685 y1 -= y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
686 y2 -= y2;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
687 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
688 if (x2 > boundx) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
689 delta = x2 - boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
690 x1 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
691 x2 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
692 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
693 if (y2 > boundy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
694 delta = y2 - boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
695 y1 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
696 y2 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
697 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
698 if (x1 > boundx) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
699 delta = x1 - boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
700 y2 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
701 y1 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
702 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
703 if (y1 > boundy) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
704 delta = y1 - boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
705 y2 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
706 y1 -= delta;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
707 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
708
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
709 return makeObj(flipCoords(x1, y1, x2, y2));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
710 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
711 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
712 function makeObj(a) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
713 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
714 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
715 x: a[0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
716 y: a[1],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
717 x2: a[2],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
718 y2: a[3],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
719 w: a[2] - a[0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
720 h: a[3] - a[1]
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
721 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
722 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
723 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
724
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
725 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
726 flipCoords: flipCoords,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
727 setPressed: setPressed,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
728 setCurrent: setCurrent,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
729 getOffset: getOffset,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
730 moveOffset: moveOffset,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
731 getCorner: getCorner,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
732 getFixed: getFixed
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
733 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
734 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
735
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
736 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
737 // Shade Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
738 var Shade = (function() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
739 var enabled = false,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
740 holder = $('<div />').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
741 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
742 zIndex: 240,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
743 opacity: 0
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
744 }),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
745 shades = {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
746 top: createShade(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
747 left: createShade().height(boundy),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
748 right: createShade().height(boundy),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
749 bottom: createShade()
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
750 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
751
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
752 function resizeShades(w,h) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
753 shades.left.css({ height: px(h) });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
754 shades.right.css({ height: px(h) });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
755 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
756 function updateAuto()
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
757 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
758 return updateShade(Coords.getFixed());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
759 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
760 function updateShade(c)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
761 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
762 shades.top.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
763 left: px(c.x),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
764 width: px(c.w),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
765 height: px(c.y)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
766 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
767 shades.bottom.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
768 top: px(c.y2),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
769 left: px(c.x),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
770 width: px(c.w),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
771 height: px(boundy-c.y2)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
772 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
773 shades.right.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
774 left: px(c.x2),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
775 width: px(boundx-c.x2)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
776 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
777 shades.left.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
778 width: px(c.x)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
779 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
780 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
781 function createShade() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
782 return $('<div />').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
783 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
784 backgroundColor: options.shadeColor||options.bgColor
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
785 }).appendTo(holder);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
786 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
787 function enableShade() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
788 if (!enabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
789 enabled = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
790 holder.insertBefore($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
791 updateAuto();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
792 Selection.setBgOpacity(1,0,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
793 $img2.hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
794
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
795 setBgColor(options.shadeColor||options.bgColor,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
796 if (Selection.isAwake())
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
797 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
798 setOpacity(options.bgOpacity,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
799 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
800 else setOpacity(1,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
801 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
802 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
803 function setBgColor(color,now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
804 colorChangeMacro(getShades(),color,now);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
805 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
806 function disableShade() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
807 if (enabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
808 holder.remove();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
809 $img2.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
810 enabled = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
811 if (Selection.isAwake()) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
812 Selection.setBgOpacity(options.bgOpacity,1,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
813 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
814 Selection.setBgOpacity(1,1,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
815 Selection.disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
816 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
817 colorChangeMacro($div,0,1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
818 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
819 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
820 function setOpacity(opacity,now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
821 if (enabled) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
822 if (options.bgFade && !now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
823 holder.animate({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
824 opacity: 1-opacity
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
825 },{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
826 queue: false,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
827 duration: options.fadeTime
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
828 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
829 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
830 else holder.css({opacity:1-opacity});
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
831 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
832 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
833 function refreshAll() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
834 options.shade ? enableShade() : disableShade();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
835 if (Selection.isAwake()) setOpacity(options.bgOpacity);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
836 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
837 function getShades() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
838 return holder.children();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
839 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
840
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
841 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
842 update: updateAuto,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
843 updateRaw: updateShade,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
844 getShades: getShades,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
845 setBgColor: setBgColor,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
846 enable: enableShade,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
847 disable: disableShade,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
848 resize: resizeShades,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
849 refresh: refreshAll,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
850 opacity: setOpacity
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
851 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
852 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
853 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
854 // Selection Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
855 var Selection = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
856 var awake,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
857 hdep = 370,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
858 borders = {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
859 handle = {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
860 dragbar = {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
861 seehandles = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
862
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
863 // Private Methods
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
864 function insertBorder(type) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
865 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
866 var jq = $('<div />').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
867 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
868 opacity: options.borderOpacity
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
869 }).addClass(cssClass(type));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
870 $img_holder.append(jq);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
871 return jq;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
872 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
873 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
874 function dragDiv(ord, zi) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
875 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
876 var jq = $('<div />').mousedown(createDragger(ord)).css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
877 cursor: ord + '-resize',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
878 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
879 zIndex: zi
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
880 }).addClass('ord-'+ord);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
881
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
882 if (Touch.support) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
883 jq.bind('touchstart.jcrop', Touch.createDragger(ord));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
884 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
885
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
886 $hdl_holder.append(jq);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
887 return jq;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
888 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
889 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
890 function insertHandle(ord) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
891 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
892 var hs = options.handleSize,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
893
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
894 div = dragDiv(ord, hdep++).css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
895 opacity: options.handleOpacity
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
896 }).addClass(cssClass('handle'));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
897
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
898 if (hs) { div.width(hs).height(hs); }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
899
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
900 return div;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
901 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
902 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
903 function insertDragbar(ord) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
904 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
905 return dragDiv(ord, hdep++).addClass('jcrop-dragbar');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
906 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
907 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
908 function createDragbars(li) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
909 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
910 var i;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
911 for (i = 0; i < li.length; i++) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
912 dragbar[li[i]] = insertDragbar(li[i]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
913 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
914 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
915 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
916 function createBorders(li) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
917 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
918 var cl,i;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
919 for (i = 0; i < li.length; i++) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
920 switch(li[i]){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
921 case'n': cl='hline'; break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
922 case's': cl='hline bottom'; break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
923 case'e': cl='vline right'; break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
924 case'w': cl='vline'; break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
925 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
926 borders[li[i]] = insertBorder(cl);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
927 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
928 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
929 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
930 function createHandles(li) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
931 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
932 var i;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
933 for (i = 0; i < li.length; i++) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
934 handle[li[i]] = insertHandle(li[i]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
935 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
936 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
937 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
938 function moveto(x, y) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
939 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
940 if (!options.shade) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
941 $img2.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
942 top: px(-y),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
943 left: px(-x)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
944 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
945 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
946 $sel.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
947 top: px(y),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
948 left: px(x)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
949 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
950 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
951 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
952 function resize(w, h) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
953 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
954 $sel.width(Math.round(w)).height(Math.round(h));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
955 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
956 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
957 function refresh() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
958 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
959 var c = Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
960
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
961 Coords.setPressed([c.x, c.y]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
962 Coords.setCurrent([c.x2, c.y2]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
963
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
964 updateVisible();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
965 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
966 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
967
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
968 // Internal Methods
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
969 function updateVisible(select) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
970 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
971 if (awake) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
972 return update(select);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
973 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
974 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
975 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
976 function update(select) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
977 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
978 var c = Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
979
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
980 resize(c.w, c.h);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
981 moveto(c.x, c.y);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
982 if (options.shade) Shade.updateRaw(c);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
983
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
984 awake || show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
985
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
986 if (select) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
987 options.onSelect.call(api, unscale(c));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
988 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
989 options.onChange.call(api, unscale(c));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
990 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
991 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
992 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
993 function setBgOpacity(opacity,force,now) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
994 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
995 if (!awake && !force) return;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
996 if (options.bgFade && !now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
997 $img.animate({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
998 opacity: opacity
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
999 },{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1000 queue: false,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1001 duration: options.fadeTime
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1002 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1003 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1004 $img.css('opacity', opacity);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1005 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1006 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1007 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1008 function show() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1009 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1010 $sel.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1011
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1012 if (options.shade) Shade.opacity(bgopacity);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1013 else setBgOpacity(bgopacity,true);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1014
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1015 awake = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1016 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1017 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1018 function release() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1019 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1020 disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1021 $sel.hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1022
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1023 if (options.shade) Shade.opacity(1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1024 else setBgOpacity(1);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1025
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1026 awake = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1027 options.onRelease.call(api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1028 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1029 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1030 function showHandles() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1031 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1032 if (seehandles) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1033 $hdl_holder.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1034 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1035 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1036 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1037 function enableHandles() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1038 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1039 seehandles = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1040 if (options.allowResize) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1041 $hdl_holder.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1042 return true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1043 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1044 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1045 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1046 function disableHandles() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1047 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1048 seehandles = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1049 $hdl_holder.hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1050 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1051 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1052 function animMode(v) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1053 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1054 if (v) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1055 animating = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1056 disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1057 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1058 animating = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1059 enableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1060 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1061 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1062 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1063 function done() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1064 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1065 animMode(false);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1066 refresh();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1067 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1068 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1069 // Insert draggable elements {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1070 // Insert border divs for outline
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1071
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1072 if (options.dragEdges && $.isArray(options.createDragbars))
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1073 createDragbars(options.createDragbars);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1074
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1075 if ($.isArray(options.createHandles))
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1076 createHandles(options.createHandles);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1077
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1078 if (options.drawBorders && $.isArray(options.createBorders))
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1079 createBorders(options.createBorders);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1080
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1081 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1082
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1083 // This is a hack for iOS5 to support drag/move touch functionality
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1084 $(document).bind('touchstart.jcrop-ios',function(e) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1085 if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1086 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1087
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1088 var $track = newTracker().mousedown(createDragger('move')).css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1089 cursor: 'move',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1090 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1091 zIndex: 360
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1092 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1093
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1094 if (Touch.support) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1095 $track.bind('touchstart.jcrop', Touch.createDragger('move'));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1096 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1097
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1098 $img_holder.append($track);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1099 disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1100
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1101 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1102 updateVisible: updateVisible,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1103 update: update,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1104 release: release,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1105 refresh: refresh,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1106 isAwake: function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1107 return awake;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1108 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1109 setCursor: function (cursor) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1110 $track.css('cursor', cursor);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1111 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1112 enableHandles: enableHandles,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1113 enableOnly: function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1114 seehandles = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1115 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1116 showHandles: showHandles,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1117 disableHandles: disableHandles,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1118 animMode: animMode,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1119 setBgOpacity: setBgOpacity,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1120 done: done
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1121 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1122 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1123
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1124 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1125 // Tracker Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1126 var Tracker = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1127 var onMove = function () {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1128 onDone = function () {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1129 trackDoc = options.trackDocument;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1130
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1131 function toFront(touch) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1132 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1133 $trk.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1134 zIndex: 450
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1135 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1136
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1137 if (touch)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1138 $(document)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1139 .bind('touchmove.jcrop', trackTouchMove)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1140 .bind('touchend.jcrop', trackTouchEnd);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1141
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1142 else if (trackDoc)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1143 $(document)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1144 .bind('mousemove.jcrop',trackMove)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1145 .bind('mouseup.jcrop',trackUp);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1146 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1147 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1148 function toBack() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1149 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1150 $trk.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1151 zIndex: 290
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1152 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1153 $(document).unbind('.jcrop');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1154 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1155 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1156 function trackMove(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1157 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1158 onMove(mouseAbs(e));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1159 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1160 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1161 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1162 function trackUp(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1163 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1164 e.preventDefault();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1165 e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1166
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1167 if (btndown) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1168 btndown = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1169
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1170 onDone(mouseAbs(e));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1171
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1172 if (Selection.isAwake()) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1173 options.onSelect.call(api, unscale(Coords.getFixed()));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1174 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1175
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1176 toBack();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1177 onMove = function () {};
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1178 onDone = function () {};
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1179 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1180
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1181 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1182 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1183 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1184 function activateHandlers(move, done, touch) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1185 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1186 btndown = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1187 onMove = move;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1188 onDone = done;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1189 toFront(touch);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1190 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1191 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1192 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1193 function trackTouchMove(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1194 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1195 onMove(mouseAbs(Touch.cfilter(e)));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1196 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1197 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1198 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1199 function trackTouchEnd(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1200 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1201 return trackUp(Touch.cfilter(e));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1202 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1203 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1204 function setCursor(t) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1205 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1206 $trk.css('cursor', t);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1207 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1208 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1209
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1210 if (!trackDoc) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1211 $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1212 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1213
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1214 $img.before($trk);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1215 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1216 activateHandlers: activateHandlers,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1217 setCursor: setCursor
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1218 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1219 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1220 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1221 // KeyManager Module {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1222 var KeyManager = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1223 var $keymgr = $('<input type="radio" />').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1224 position: 'fixed',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1225 left: '-120px',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1226 width: '12px'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1227 }).addClass('jcrop-keymgr'),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1228
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1229 $keywrap = $('<div />').css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1230 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1231 overflow: 'hidden'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1232 }).append($keymgr);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1233
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1234 function watchKeys() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1235 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1236 if (options.keySupport) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1237 $keymgr.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1238 $keymgr.focus();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1239 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1240 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1241 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1242 function onBlur(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1243 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1244 $keymgr.hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1245 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1246 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1247 function doNudge(e, x, y) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1248 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1249 if (options.allowMove) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1250 Coords.moveOffset([x, y]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1251 Selection.updateVisible(true);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1252 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1253 e.preventDefault();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1254 e.stopPropagation();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1255 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1256 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1257 function parseKey(e) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1258 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1259 if (e.ctrlKey || e.metaKey) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1260 return true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1261 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1262 shift_down = e.shiftKey ? true : false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1263 var nudge = shift_down ? 10 : 1;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1264
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1265 switch (e.keyCode) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1266 case 37:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1267 doNudge(e, -nudge, 0);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1268 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1269 case 39:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1270 doNudge(e, nudge, 0);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1271 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1272 case 38:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1273 doNudge(e, 0, -nudge);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1274 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1275 case 40:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1276 doNudge(e, 0, nudge);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1277 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1278 case 27:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1279 if (options.allowSelect) Selection.release();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1280 break;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1281 case 9:
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1282 return true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1283 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1284
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1285 return false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1286 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1287 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1288
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1289 if (options.keySupport) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1290 $keymgr.keydown(parseKey).blur(onBlur);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1291 if (ie6mode || !options.fixedSupport) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1292 $keymgr.css({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1293 position: 'absolute',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1294 left: '-20px'
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1295 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1296 $keywrap.append($keymgr).insertBefore($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1297 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1298 $keymgr.insertBefore($img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1299 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1300 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1301
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1302
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1303 return {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1304 watchKeys: watchKeys
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1305 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1306 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1307 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1308 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1309 // API methods {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1310 function setClass(cname) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1311 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1312 $div.removeClass().addClass(cssClass('holder')).addClass(cname);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1313 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1314 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1315 function animateTo(a, callback) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1316 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1317 var x1 = a[0] / xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1318 y1 = a[1] / yscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1319 x2 = a[2] / xscale,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1320 y2 = a[3] / yscale;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1321
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1322 if (animating) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1323 return;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1324 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1325
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1326 var animto = Coords.flipCoords(x1, y1, x2, y2),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1327 c = Coords.getFixed(),
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1328 initcr = [c.x, c.y, c.x2, c.y2],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1329 animat = initcr,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1330 interv = options.animationDelay,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1331 ix1 = animto[0] - initcr[0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1332 iy1 = animto[1] - initcr[1],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1333 ix2 = animto[2] - initcr[2],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1334 iy2 = animto[3] - initcr[3],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1335 pcent = 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1336 velocity = options.swingSpeed;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1337
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1338 x1 = animat[0];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1339 y1 = animat[1];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1340 x2 = animat[2];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1341 y2 = animat[3];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1342
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1343 Selection.animMode(true);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1344 var anim_timer;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1345
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1346 function queueAnimator() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1347 window.setTimeout(animator, interv);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1348 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1349 var animator = (function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1350 return function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1351 pcent += (100 - pcent) / velocity;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1352
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1353 animat[0] = Math.round(x1 + ((pcent / 100) * ix1));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1354 animat[1] = Math.round(y1 + ((pcent / 100) * iy1));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1355 animat[2] = Math.round(x2 + ((pcent / 100) * ix2));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1356 animat[3] = Math.round(y2 + ((pcent / 100) * iy2));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1357
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1358 if (pcent >= 99.8) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1359 pcent = 100;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1360 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1361 if (pcent < 100) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1362 setSelectRaw(animat);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1363 queueAnimator();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1364 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1365 Selection.done();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1366 Selection.animMode(false);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1367 if (typeof(callback) === 'function') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1368 callback.call(api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1369 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1370 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1371 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1372 }());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1373 queueAnimator();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1374 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1375 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1376 function setSelect(rect) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1377 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1378 setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1379 options.onSelect.call(api, unscale(Coords.getFixed()));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1380 Selection.enableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1381 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1382 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1383 function setSelectRaw(l) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1384 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1385 Coords.setPressed([l[0], l[1]]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1386 Coords.setCurrent([l[2], l[3]]);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1387 Selection.update();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1388 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1389 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1390 function tellSelect() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1391 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1392 return unscale(Coords.getFixed());
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1393 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1394 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1395 function tellScaled() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1396 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1397 return Coords.getFixed();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1398 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1399 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1400 function setOptionsNew(opt) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1401 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1402 setOptions(opt);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1403 interfaceUpdate();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1404 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1405 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1406 function disableCrop() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1407 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1408 options.disabled = true;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1409 Selection.disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1410 Selection.setCursor('default');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1411 Tracker.setCursor('default');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1412 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1413 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1414 function enableCrop() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1415 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1416 options.disabled = false;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1417 interfaceUpdate();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1418 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1419 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1420 function cancelCrop() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1421 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1422 Selection.done();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1423 Tracker.activateHandlers(null, null);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1424 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1425 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1426 function destroy() //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1427 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1428 $div.remove();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1429 $origimg.show();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1430 $origimg.css('visibility','visible');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1431 $(obj).removeData('Jcrop');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1432 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1433 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1434 function setImage(src, callback) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1435 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1436 Selection.release();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1437 disableCrop();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1438 var img = new Image();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1439 img.onload = function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1440 var iw = img.width;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1441 var ih = img.height;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1442 var bw = options.boxWidth;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1443 var bh = options.boxHeight;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1444 $img.width(iw).height(ih);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1445 $img.attr('src', src);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1446 $img2.attr('src', src);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1447 presize($img, bw, bh);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1448 boundx = $img.width();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1449 boundy = $img.height();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1450 $img2.width(boundx).height(boundy);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1451 $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1452 $div.width(boundx).height(boundy);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1453 Shade.resize(boundx,boundy);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1454 enableCrop();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1455
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1456 if (typeof(callback) === 'function') {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1457 callback.call(api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1458 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1459 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1460 img.src = src;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1461 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1462 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1463 function colorChangeMacro($obj,color,now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1464 var mycolor = color || options.bgColor;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1465 if (options.bgFade && supportsColorFade() && options.fadeTime && !now) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1466 $obj.animate({
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1467 backgroundColor: mycolor
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1468 }, {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1469 queue: false,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1470 duration: options.fadeTime
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1471 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1472 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1473 $obj.css('backgroundColor', mycolor);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1474 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1475 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1476 function interfaceUpdate(alt) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1477 // This method tweaks the interface based on options object.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1478 // Called when options are changed and at end of initialization.
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1479 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1480 if (options.allowResize) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1481 if (alt) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1482 Selection.enableOnly();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1483 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1484 Selection.enableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1485 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1486 } else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1487 Selection.disableHandles();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1488 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1489
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1490 Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1491 Selection.setCursor(options.allowMove ? 'move' : 'default');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1492
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1493 if (options.hasOwnProperty('trueSize')) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1494 xscale = options.trueSize[0] / boundx;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1495 yscale = options.trueSize[1] / boundy;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1496 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1497
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1498 if (options.hasOwnProperty('setSelect')) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1499 setSelect(options.setSelect);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1500 Selection.done();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1501 delete(options.setSelect);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1502 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1503
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1504 Shade.refresh();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1505
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1506 if (options.bgColor != bgcolor) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1507 colorChangeMacro(
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1508 options.shade? Shade.getShades(): $div,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1509 options.shade?
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1510 (options.shadeColor || options.bgColor):
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1511 options.bgColor
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1512 );
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1513 bgcolor = options.bgColor;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1514 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1515
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1516 if (bgopacity != options.bgOpacity) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1517 bgopacity = options.bgOpacity;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1518 if (options.shade) Shade.refresh();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1519 else Selection.setBgOpacity(bgopacity);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1520 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1521
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1522 xlimit = options.maxSize[0] || 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1523 ylimit = options.maxSize[1] || 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1524 xmin = options.minSize[0] || 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1525 ymin = options.minSize[1] || 0;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1526
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1527 if (options.hasOwnProperty('outerImage')) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1528 $img.attr('src', options.outerImage);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1529 delete(options.outerImage);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1530 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1531
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1532 Selection.refresh();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1533 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1534 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1535 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1536
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1537 if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1538
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1539 $hdl_holder.hide();
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1540 interfaceUpdate(true);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1541
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1542 var api = {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1543 setImage: setImage,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1544 animateTo: animateTo,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1545 setSelect: setSelect,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1546 setOptions: setOptionsNew,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1547 tellSelect: tellSelect,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1548 tellScaled: tellScaled,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1549 setClass: setClass,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1550
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1551 disable: disableCrop,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1552 enable: enableCrop,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1553 cancel: cancelCrop,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1554 release: Selection.release,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1555 destroy: destroy,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1556
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1557 focus: KeyManager.watchKeys,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1558
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1559 getBounds: function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1560 return [boundx * xscale, boundy * yscale];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1561 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1562 getWidgetSize: function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1563 return [boundx, boundy];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1564 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1565 getScaleFactor: function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1566 return [xscale, yscale];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1567 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1568 getOptions: function() {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1569 // careful: internal values are returned
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1570 return options;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1571 },
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1572
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1573 ui: {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1574 holder: $div,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1575 selection: $sel
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1576 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1577 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1578
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1579 if (is_msie) $div.bind('selectstart', function () { return false; });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1580
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1581 $origimg.data('Jcrop', api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1582 return api;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1583 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1584 $.fn.Jcrop = function (options, callback) //{{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1585 {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1586 var api;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1587 // Iterate over each object, attach Jcrop
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1588 this.each(function () {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1589 // If we've already attached to this object
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1590 if ($(this).data('Jcrop')) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1591 // The API can be requested this way (undocumented)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1592 if (options === 'api') return $(this).data('Jcrop');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1593 // Otherwise, we just reset the options...
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1594 else $(this).data('Jcrop').setOptions(options);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1595 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1596 // If we haven't been attached, preload and attach
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1597 else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1598 if (this.tagName == 'IMG')
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1599 $.Jcrop.Loader(this,function(){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1600 $(this).css({display:'block',visibility:'hidden'});
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1601 api = $.Jcrop(this, options);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1602 if ($.isFunction(callback)) callback.call(api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1603 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1604 else {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1605 $(this).css({display:'block',visibility:'hidden'});
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1606 api = $.Jcrop(this, options);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1607 if ($.isFunction(callback)) callback.call(api);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1608 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1609 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1610 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1611
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1612 // Return "this" so the object is chainable (jQuery-style)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1613 return this;
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1614 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1615 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1616 // $.Jcrop.Loader - basic image loader {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1617
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1618 $.Jcrop.Loader = function(imgobj,success,error){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1619 var $img = $(imgobj), img = $img[0];
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1620
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1621 function completeCheck(){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1622 if (img.complete) {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1623 $img.unbind('.jcloader');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1624 if ($.isFunction(success)) success.call(img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1625 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1626 else window.setTimeout(completeCheck,50);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1627 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1628
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1629 $img
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1630 .bind('load.jcloader',completeCheck)
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1631 .bind('error.jcloader',function(e){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1632 $img.unbind('.jcloader');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1633 if ($.isFunction(error)) error.call(img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1634 });
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1635
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1636 if (img.complete && $.isFunction(success)){
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1637 $img.unbind('.jcloader');
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1638 success.call(img);
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1639 }
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1640 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1641
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1642 //}}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1643 // Global Defaults {{{
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1644 $.Jcrop.defaults = {
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1645
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1646 // Basic Settings
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1647 allowSelect: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1648 allowMove: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1649 allowResize: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1650
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1651 trackDocument: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1652
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1653 // Styling Options
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1654 baseClass: 'jcrop',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1655 addClass: null,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1656 bgColor: 'black',
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1657 bgOpacity: 0.6,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1658 bgFade: false,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1659 borderOpacity: 0.4,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1660 handleOpacity: 0.5,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1661 handleSize: null,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1662
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1663 aspectRatio: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1664 keySupport: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1665 createHandles: ['n','s','e','w','nw','ne','se','sw'],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1666 createDragbars: ['n','s','e','w'],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1667 createBorders: ['n','s','e','w'],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1668 drawBorders: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1669 dragEdges: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1670 fixedSupport: true,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1671 touchSupport: null,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1672
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1673 shade: null,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1674
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1675 boxWidth: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1676 boxHeight: 0,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1677 boundary: 2,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1678 fadeTime: 400,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1679 animationDelay: 20,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1680 swingSpeed: 3,
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1681
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1682 minSelect: [0, 0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1683 maxSize: [0, 0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1684 minSize: [0, 0],
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1685
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1686 // Callbacks / Event Handlers
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1687 onChange: function () {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1688 onSelect: function () {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1689 onDblClick: function () {},
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1690 onRelease: function () {}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1691 };
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1692
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1693 // }}}
42101737e3cd add jcrop lib
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1694 }(jQuery));