Advertisement
Guest User

Untitled

a guest
Jun 27th, 2011
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* jQuery rotate
  2.  * Copyright 2010 Thomas Preusse
  3.  * feel free to use under MIT or GPL licenses
  4.  * CSS support check by Wilq32 <http://wilq32.blogspot.com>
  5.  * IE support based on Jordan Andree <http://noblegiant.com/blog/>
  6.  */
  7. (function($) {
  8.  
  9.     var supportedCSS, styles=document.getElementsByTagName("head")[0].style,toCheck="transform MozTransform WebkitTransform OTransform".split(" ");
  10.     for (var a=0;a<toCheck.length;a++) if (styles[toCheck[a]] !== undefined) supportedCSS = toCheck[a];
  11.     var rMatrix = /Matrix\([^)]*\)/;
  12.  
  13. jQuery.fn.extend({
  14.     rotateSupportCSS:function(){
  15.         if(supportedCSS) {
  16.             return true;
  17.         }
  18.         else {
  19.             return false;
  20.         }
  21.     },
  22.     rotateSupport:undefined,
  23.     rotate:function(degree)
  24.     {
  25.         if($.rotateSupport === undefined) {
  26.             if(supportedCSS || this.get(0).filters) {
  27.                 $.rotateSupport = true;
  28.             }
  29.             else {
  30.                 $.rotateSupport = false;
  31.             }
  32.         }
  33.         if($.rotateSupport === false || this.length===0) return;
  34.        
  35.         var element, eXCenter, eYCenter, eX, eY, eWidth, eHeight, eData;
  36.         if(!supportedCSS) {
  37.             var rad, costheta, sintheta, deg2radians = Math.PI * 2 / 360;
  38.         }
  39.         for(var i=0; i < this.length; i++)
  40.         {
  41.             element = this.get(i);
  42.             jElement = $(element);
  43.             if(supportedCSS) {
  44.                 jElement.css(supportedCSS, 'rotate('+degree+'deg)');
  45.             }
  46.             else {
  47.                 if(element.tagName == 'IMG') {
  48.                     var imgId = element.id+'', divWraper = document.createElement('div'), jDivWraper = $(divWraper), setSelectedObject;
  49.                     if(selectedObject !== undefined && selectedObject.attr('id') == imgId) {
  50.                         selectedObject = false;
  51.                         setSelectedObject = true;
  52.                     }
  53.                     element.id = '';
  54.                     divWraper.id = imgId;
  55.                     divWraper.className = element.className;
  56.                     jDivWraper.attr('style', jElement.attr('style'));
  57.                     divWraper.width = element.width;
  58.                     divWraper.height = element.height;
  59.                     divWraper.innerHTML = '<img width="100%" height="100%" src="'+element.src+'" style="margin:0px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+element.src+'\',sizingMethod=\'scale\');" alt="'+element.alt+'" />';
  60.                     jElement.parent().append(divWraper);
  61.                     jElement.remove();
  62.                     element = divWraper;
  63.                     jElement = jDivWraper;
  64.                     if(setSelectedObject) selectedObject = jDivWraper;
  65.                     else if (jResizeTool !== undefined && imgId == 'resizeTool') jResizeTool = jDivWraper;
  66.                 }
  67.                 var originalSize;
  68.                 if(allMoveableObjects && (eData = allMoveableObjects[jElement.attr('id')])) {
  69.                     eWidth = eData.originalWidth * eData.ratio;
  70.                     eHeight = eData.originalHeight * eData.ratio;
  71.                 }
  72.                 else if(resizeToolSize && jElement.attr('id') == 'resizeTool') {
  73.                     eWidth = resizeToolSize.w;
  74.                     eHeight = resizeToolSize.h;
  75.                 }
  76.                 else {
  77.                     originalSize = jElement.data('originalSize');
  78.                     if(originalSize === null) {
  79.                         eWidth = jElement.width();
  80.                         eHeight = jElement.height();
  81.                         jElement.data('originalSize', {w:eWidth, h:eHeight});
  82.                     }
  83.                     else {
  84.                         eWidth = originalSize.w;
  85.                         eHeight = originalSize.h;
  86.                     }
  87.                 }
  88.                
  89.                 rad = degree * deg2radians;
  90.                 costheta = Math.cos(rad);
  91.                 sintheta = Math.sin(rad);
  92.                 //progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+element.src+"',sizingMethod='scale')
  93.                 //progid:DXImageTransform.Microsoft.Chroma(color='green')
  94.                 var filter = element.style.filter, matrix = "Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",sizingMethod='auto expand')";
  95.                 element.style.filter = rMatrix.test(filter) ? filter.replace(rMatrix, matrix) : filter+' progid:DXImageTransform.Microsoft.'+matrix;
  96.                
  97.                 /*eX = (eData.x -(1/2)*(jElement.width()-eWidth));
  98.                 eY = (eData.y -(1/2)*(jElement.height()-eHeight));
  99.                 if(eData) {
  100.                     eData.x = eX;
  101.                     eData.y = eY;
  102.                     //eData.ratio = jElement.width() / eData.originalWidth;
  103.                 }
  104.                 jElement.css('left', eX+'px');
  105.                 jElement.css('top', eY+'px');*/
  106.                 if(eWidth && eHeight) {
  107.                     jElement.css('margin', (-(1/2)*(jElement.height()-eHeight))+'px 0px 0px '+ (-(1/2)*(jElement.width()-eWidth))+'px');
  108.                 }
  109.                
  110.             }
  111.         }
  112.         return this;
  113.     }
  114.  
  115. });
  116.  
  117. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement