web/wp-includes/js/crop/cropper.js
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
 * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/)
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * All rights reserved.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 *     * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
 *     * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
 *     * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
 * http://www.opensource.org/licenses/bsd-license.php
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
 * See scriptaculous.js for full scriptaculous licence
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
var CropDraggable=Class.create();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(_1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
this.options=Object.extend({drawMethod:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
}},arguments[1]||{});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
this.element=$(_1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
this.handle=this.element;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
this.delta=this.currentDelta();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
this.dragging=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
this.eventMouseDown=this.initDrag.bindAsEventListener(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
Event.observe(this.handle,"mousedown",this.eventMouseDown);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
Draggables.register(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
},draw:function(_2){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
var _3=Position.cumulativeOffset(this.element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
var d=this.currentDelta();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
_3[0]-=d[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
_3[1]-=d[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
var p=[0,1].map(function(i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
return (_2[i]-_3[i]-this.offset[i]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
}.bind(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
this.options.drawMethod(p);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
}});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
var Cropper={};
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
Cropper.Img=Class.create();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
Cropper.Img.prototype={initialize:function(_7,_8){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true},_8||{});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
if(this.options.minWidth>0&&this.options.minHeight>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
this.options.ratioDim.x=this.options.minWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
this.options.ratioDim.y=this.options.minHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
this.img=$(_7);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
this.clickCoords={x:0,y:0};
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
this.dragging=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
this.resizing=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
this.isIE=/MSIE/.test(navigator.userAgent);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
this.ratioX=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
this.ratioY=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
this.attached=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
$A(document.getElementsByTagName("script")).each(function(s){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
if(s.src.match(/cropper\.js/)){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
var _a=s.src.replace(/cropper\.js(.*)?/,"");
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
var _b=document.createElement("link");
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
_b.rel="stylesheet";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
_b.type="text/css";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
_b.href=_a+"cropper.css";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
_b.media="screen";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
document.getElementsByTagName("head")[0].appendChild(_b);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
var _c=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
this.ratioX=this.options.ratioDim.x/_c;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
this.ratioY=this.options.ratioDim.y/_c;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
this.subInitialize();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
if(this.img.complete||this.isWebKit){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
this.onLoad();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
},getGCD:function(a,b){return 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
if(b==0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
return a;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
return this.getGCD(b,a%b);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
},onLoad:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
var _f="imgCrop_";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
var _10=this.img.parentNode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
var _11="";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
if(this.isOpera8){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
_11=" opera8";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
this.imgWrap=Builder.node("div",{"class":_f+"wrap"+_11});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
if(this.isIE){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
this.north=Builder.node("div",{"class":_f+"overlay "+_f+"north"},[Builder.node("span")]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
this.east=Builder.node("div",{"class":_f+"overlay "+_f+"east"},[Builder.node("span")]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
this.south=Builder.node("div",{"class":_f+"overlay "+_f+"south"},[Builder.node("span")]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
this.west=Builder.node("div",{"class":_f+"overlay "+_f+"west"},[Builder.node("span")]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
var _12=[this.north,this.east,this.south,this.west];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
this.overlay=Builder.node("div",{"class":_f+"overlay"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
var _12=[this.overlay];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
this.dragArea=Builder.node("div",{"class":_f+"dragArea"},_12);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
this.handleN=Builder.node("div",{"class":_f+"handle "+_f+"handleN"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
this.handleNE=Builder.node("div",{"class":_f+"handle "+_f+"handleNE"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
this.handleE=Builder.node("div",{"class":_f+"handle "+_f+"handleE"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
this.handleSE=Builder.node("div",{"class":_f+"handle "+_f+"handleSE"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
this.handleS=Builder.node("div",{"class":_f+"handle "+_f+"handleS"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
this.handleSW=Builder.node("div",{"class":_f+"handle "+_f+"handleSW"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
this.handleW=Builder.node("div",{"class":_f+"handle "+_f+"handleW"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
this.handleNW=Builder.node("div",{"class":_f+"handle "+_f+"handleNW"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
this.selArea=Builder.node("div",{"class":_f+"selArea"},[Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":_f+"clickArea"})]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
Element.setStyle($(this.selArea),{backgroundColor:"transparent",backgroundRepeat:"no-repeat",backgroundPosition:"0 0"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
this.imgWrap.appendChild(this.img);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
this.imgWrap.appendChild(this.dragArea);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
this.dragArea.appendChild(this.selArea);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
this.dragArea.appendChild(Builder.node("div",{"class":_f+"clickArea"}));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
_10.appendChild(this.imgWrap);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
Event.observe(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
Event.observe(document,"mousemove",this.onDrag.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
Event.observe(document,"mouseup",this.endCrop.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
var _13=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
for(var i=0;i<_13.length;i++){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
Event.observe(_13[i],"mousedown",this.startResize.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
if(this.options.captureKeys){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
Event.observe(document,"keydown",this.handleKeys.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
this.setParams();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
},setParams:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
this.imgW=this.img.width;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
this.imgH=this.img.height;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
if(!this.isIE){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
Element.setStyle($(this.overlay),{width:this.imgW+"px",height:this.imgH+"px"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
Element.hide($(this.overlay));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
Element.setStyle($(this.selArea),{backgroundImage:"url("+this.img.src+")"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
Element.setStyle($(this.north),{height:0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
Element.setStyle($(this.east),{width:0,height:0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
Element.setStyle($(this.south),{height:0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
Element.setStyle($(this.west),{width:0,height:0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
Element.setStyle($(this.imgWrap),{"width":this.imgW+"px","height":this.imgH+"px"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
Element.hide($(this.selArea));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
var _15=Position.positionedOffset(this.imgWrap);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
this.wrapOffsets={"top":_15[1],"left":_15[0]};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
var _16={x1:0,y1:0,x2:0,y2:0};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
this.setAreaCoords(_16);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0&&this.options.displayOnInit){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
_16.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
_16.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
_16.x2=_16.x1+this.options.ratioDim.x;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
_16.y2=_16.y1+this.options.ratioDim.y;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
Element.show(this.selArea);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
this.drawArea();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
this.endCrop();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
this.attached=true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
},remove:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
this.attached=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
this.imgWrap.parentNode.removeChild(this.imgWrap);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
Event.stopObserving(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
Event.stopObserving(document,"mousemove",this.onDrag.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
Event.stopObserving(document,"mouseup",this.endCrop.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
var _17=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
for(var i=0;i<_17.length;i++){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
Event.stopObserving(_17[i],"mousedown",this.startResize.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
if(this.options.captureKeys){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
Event.stopObserving(document,"keydown",this.handleKeys.bindAsEventListener(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
},reset:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
if(!this.attached){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
this.onLoad();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
this.setParams();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
this.endCrop();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
},handleKeys:function(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
var dir={x:0,y:0};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
if(!this.dragging){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
switch(e.keyCode){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
case (37):
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
dir.x=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
case (38):
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
dir.y=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
case (39):
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
dir.x=1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
case (40):
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
dir.y=1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
if(dir.x!=0||dir.y!=0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
if(e.shiftKey){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
dir.x*=10;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
dir.y*=10;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
this.moveArea([this.areaCoords.x1+dir.x,this.areaCoords.y1+dir.y]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
Event.stop(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
},calcW:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
return (this.areaCoords.x2-this.areaCoords.x1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
},calcH:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
return (this.areaCoords.y2-this.areaCoords.y1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
},moveArea:function(_1b){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
this.setAreaCoords({x1:_1b[0],y1:_1b[1],x2:_1b[0]+this.calcW(),y2:_1b[1]+this.calcH()},true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
this.drawArea();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
},cloneCoords:function(_1c){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
return {x1:_1c.x1,y1:_1c.y1,x2:_1c.x2,y2:_1c.y2};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
},setAreaCoords:function(_1d,_1e,_1f,_20,_21){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
var _22=typeof _1e!="undefined"?_1e:false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
var _23=typeof _1f!="undefined"?_1f:false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
if(_1e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
var _24=_1d.x2-_1d.x1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
var _25=_1d.y2-_1d.y1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
if(_1d.x1<0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
_1d.x1=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
_1d.x2=_24;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
if(_1d.y1<0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
_1d.y1=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
_1d.y2=_25;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
if(_1d.x2>this.imgW){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
_1d.x2=this.imgW;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
_1d.x1=this.imgW-_24;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
if(_1d.y2>this.imgH){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
_1d.y2=this.imgH;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
_1d.y1=this.imgH-_25;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
if(_1d.x1<0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
_1d.x1=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
if(_1d.y1<0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
_1d.y1=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
if(_1d.x2>this.imgW){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
_1d.x2=this.imgW;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
if(_1d.y2>this.imgH){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
_1d.y2=this.imgH;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
if(typeof (_20)!="undefined"){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
if(this.ratioX>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
this.applyRatio(_1d,{x:this.ratioX,y:this.ratioY},_20,_21);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
if(_23){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
this.applyRatio(_1d,{x:1,y:1},_20,_21);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
var _26={a1:_1d.x1,a2:_1d.x2};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
var _27={a1:_1d.y1,a2:_1d.y2};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
var _28=this.options.minWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
var _29=this.options.minHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
if((_28==0||_29==0)&&_23){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
if(_28>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
_29=_28;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
if(_29>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
_28=_29;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
this.applyMinDimension(_26,_28,_20.x,{min:0,max:this.imgW});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
this.applyMinDimension(_27,_29,_20.y,{min:0,max:this.imgH});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
_1d={x1:_26.a1,y1:_27.a1,x2:_26.a2,y2:_27.a2};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
this.areaCoords=_1d;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
},applyMinDimension:function(_2a,_2b,_2c,_2d){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
if((_2a.a2-_2a.a1)<_2b){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
if(_2c==1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
_2a.a2=_2a.a1+_2b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
_2a.a1=_2a.a2-_2b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
if(_2a.a1<_2d.min){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
_2a.a1=_2d.min;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
_2a.a2=_2b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
if(_2a.a2>_2d.max){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
_2a.a1=_2d.max-_2b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
_2a.a2=_2d.max;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
},applyRatio:function(_2e,_2f,_30,_31){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
var _32;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
if(_31=="N"||_31=="S"){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
_32=this.applyRatioToAxis({a1:_2e.y1,b1:_2e.x1,a2:_2e.y2,b2:_2e.x2},{a:_2f.y,b:_2f.x},{a:_30.y,b:_30.x},{min:0,max:this.imgW});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
_2e.x1=_32.b1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
_2e.y1=_32.a1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
_2e.x2=_32.b2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
_2e.y2=_32.a2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
_32=this.applyRatioToAxis({a1:_2e.x1,b1:_2e.y1,a2:_2e.x2,b2:_2e.y2},{a:_2f.x,b:_2f.y},{a:_30.x,b:_30.y},{min:0,max:this.imgH});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
_2e.x1=_32.a1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
_2e.y1=_32.b1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
_2e.x2=_32.a2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
_2e.y2=_32.b2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   308
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   309
},applyRatioToAxis:function(_33,_34,_35,_36){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   310
var _37=Object.extend(_33,{});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   311
var _38=_37.a2-_37.a1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   312
var _3a=Math.floor(_38*_34.b/_34.a);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   313
var _3b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   314
var _3c;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   315
var _3d=null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   316
if(_35.b==1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   317
_3b=_37.b1+_3a;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   318
if(_3b>_36.max){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   319
_3b=_36.max;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   320
_3d=_3b-_37.b1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   321
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   322
_37.b2=_3b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   323
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   324
_3b=_37.b2-_3a;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   325
if(_3b<_36.min){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   326
_3b=_36.min;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   327
_3d=_3b+_37.b2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   328
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   329
_37.b1=_3b;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   330
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   331
if(_3d!=null){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   332
_3c=Math.floor(_3d*_34.a/_34.b);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   333
if(_35.a==1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   334
_37.a2=_37.a1+_3c;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   335
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   336
_37.a1=_37.a1=_37.a2-_3c;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   337
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   338
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   339
return _37;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   340
},drawArea:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   341
if(!this.isIE){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   342
Element.show($(this.overlay));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   343
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   344
var _3e=this.calcW();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   345
var _3f=this.calcH();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   346
var _40=this.areaCoords.x2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   347
var _41=this.areaCoords.y2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   348
var _42=this.selArea.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   349
_42.left=this.areaCoords.x1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   350
_42.top=this.areaCoords.y1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   351
_42.width=_3e+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   352
_42.height=_3f+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   353
var _43=Math.ceil((_3e-6)/2)+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   354
var _44=Math.ceil((_3f-6)/2)+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   355
this.handleN.style.left=_43;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   356
this.handleE.style.top=_44;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   357
this.handleS.style.left=_43;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   358
this.handleW.style.top=_44;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   359
if(this.isIE){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   360
this.north.style.height=this.areaCoords.y1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   361
var _45=this.east.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   362
_45.top=this.areaCoords.y1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   363
_45.height=_3f+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   364
_45.left=_40+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   365
_45.width=(this.img.width-_40)+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   366
var _46=this.south.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   367
_46.top=_41+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   368
_46.height=(this.img.height-_41)+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   369
var _47=this.west.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   370
_47.top=this.areaCoords.y1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   371
_47.height=_3f+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   372
_47.width=this.areaCoords.x1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   373
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   374
_42.backgroundPosition="-"+this.areaCoords.x1+"px "+"-"+this.areaCoords.y1+"px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   375
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   376
this.subDrawArea();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   377
this.forceReRender();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   378
},forceReRender:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   379
if(this.isIE||this.isWebKit){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   380
var n=document.createTextNode(" ");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   381
var d,el,fixEL,i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   382
if(this.isIE){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   383
fixEl=this.selArea;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   384
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   385
if(this.isWebKit){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   386
fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   387
d=Builder.node("div","");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   388
d.style.visibility="hidden";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   389
var _4a=["SE","S","SW"];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   390
for(i=0;i<_4a.length;i++){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   391
el=document.getElementsByClassName("imgCrop_handle"+_4a[i],this.selArea)[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   392
if(el.childNodes.length){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   393
el.removeChild(el.childNodes[0]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   394
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   395
el.appendChild(d);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   396
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   397
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   398
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   399
fixEl.appendChild(n);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   400
fixEl.removeChild(n);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   401
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   402
},startResize:function(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   403
this.startCoords=this.cloneCoords(this.areaCoords);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   404
this.resizing=true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   405
this.resizeHandle=Element.classNames(Event.element(e)).toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,"");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   406
Event.stop(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   407
},startDrag:function(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   408
Element.show(this.selArea);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   409
this.clickCoords=this.getCurPos(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   410
this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   411
this.dragging=true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   412
this.onDrag(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   413
Event.stop(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   414
},getCurPos:function(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   415
return curPos={x:Event.pointerX(e)-this.wrapOffsets.left,y:Event.pointerY(e)-this.wrapOffsets.top};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   416
},onDrag:function(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   417
var _4f=null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   418
if(this.dragging||this.resizing){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   419
var _50=this.getCurPos(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   420
var _51=this.cloneCoords(this.areaCoords);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   421
var _52={x:1,y:1};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   422
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   423
if(this.dragging){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   424
if(_50.x<this.clickCoords.x){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   425
_52.x=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   426
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   427
if(_50.y<this.clickCoords.y){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   428
_52.y=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   429
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   430
this.transformCoords(_50.x,this.clickCoords.x,_51,"x");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   431
this.transformCoords(_50.y,this.clickCoords.y,_51,"y");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   432
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   433
if(this.resizing){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   434
_4f=this.resizeHandle;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   435
if(_4f.match(/E/)){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   436
this.transformCoords(_50.x,this.startCoords.x1,_51,"x");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   437
if(_50.x<this.startCoords.x1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   438
_52.x=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   439
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   440
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   441
if(_4f.match(/W/)){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   442
this.transformCoords(_50.x,this.startCoords.x2,_51,"x");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   443
if(_50.x<this.startCoords.x2){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   444
_52.x=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   445
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   446
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   447
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   448
if(_4f.match(/N/)){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   449
this.transformCoords(_50.y,this.startCoords.y2,_51,"y");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   450
if(_50.y<this.startCoords.y2){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   451
_52.y=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   452
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   453
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   454
if(_4f.match(/S/)){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   455
this.transformCoords(_50.y,this.startCoords.y1,_51,"y");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   456
if(_50.y<this.startCoords.y1){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   457
_52.y=-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   458
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   459
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   460
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   461
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   462
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   463
if(this.dragging||this.resizing){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   464
this.setAreaCoords(_51,false,e.shiftKey,_52,_4f);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   465
this.drawArea();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   466
Event.stop(e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   467
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   468
},transformCoords:function(_53,_54,_55,_56){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   469
var _57=new Array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   470
if(_53<_54){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   471
_57[0]=_53;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   472
_57[1]=_54;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   473
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   474
_57[0]=_54;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   475
_57[1]=_53;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   476
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   477
if(_56=="x"){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   478
_55.x1=_57[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   479
_55.x2=_57[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   480
}else{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   481
_55.y1=_57[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   482
_55.y2=_57[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   483
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   484
},endCrop:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   485
this.dragging=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   486
this.resizing=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   487
this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   488
},subInitialize:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   489
},subDrawArea:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   490
}};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   491
Cropper.ImgWithPreview=Class.create();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   492
Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   493
this.hasPreviewImg=false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   494
if(typeof (this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   495
this.previewWrap=$(this.options.previewWrap);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   496
this.previewImg=this.img.cloneNode(false);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   497
this.options.displayOnInit=true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   498
this.hasPreviewImg=true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   499
Element.addClassName(this.previewWrap,"imgCrop_previewWrap");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   500
Element.setStyle(this.previewWrap,{width:this.options.minWidth+"px",height:this.options.minHeight+"px"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   501
this.previewWrap.appendChild(this.previewImg);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   502
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   503
},subDrawArea:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   504
if(this.hasPreviewImg){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   505
var _58=this.calcW();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   506
var _59=this.calcH();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   507
var _5a={x:this.imgW/_58,y:this.imgH/_59};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   508
var _5b={x:_58/this.options.minWidth,y:_59/this.options.minHeight};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   509
var _5c={w:Math.ceil(this.options.minWidth*_5a.x)+"px",h:Math.ceil(this.options.minHeight*_5a.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/_5b.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/_5b.y)+"px"};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   510
var _5d=this.previewImg.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   511
_5d.width=_5c.w;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   512
_5d.height=_5c.h;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   513
_5d.left=_5c.x;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   514
_5d.top=_5c.y;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   515
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   516
}});