Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* jQuery rotate
- * Copyright 2010 Thomas Preusse
- * feel free to use under MIT or GPL licenses
- * CSS support check by Wilq32 <http://wilq32.blogspot.com>
- * IE support based on Jordan Andree <http://noblegiant.com/blog/>
- */
- (function($) {
- var supportedCSS, styles=document.getElementsByTagName("head")[0].style,toCheck="transform MozTransform WebkitTransform OTransform".split(" ");
- for (var a=0;a<toCheck.length;a++) if (styles[toCheck[a]] !== undefined) supportedCSS = toCheck[a];
- var rMatrix = /Matrix\([^)]*\)/;
- jQuery.fn.extend({
- rotateSupportCSS:function(){
- if(supportedCSS) {
- return true;
- }
- else {
- return false;
- }
- },
- rotateSupport:undefined,
- rotate:function(degree)
- {
- if($.rotateSupport === undefined) {
- if(supportedCSS || this.get(0).filters) {
- $.rotateSupport = true;
- }
- else {
- $.rotateSupport = false;
- }
- }
- if($.rotateSupport === false || this.length===0) return;
- var element, eXCenter, eYCenter, eX, eY, eWidth, eHeight, eData;
- if(!supportedCSS) {
- var rad, costheta, sintheta, deg2radians = Math.PI * 2 / 360;
- }
- for(var i=0; i < this.length; i++)
- {
- element = this.get(i);
- jElement = $(element);
- if(supportedCSS) {
- jElement.css(supportedCSS, 'rotate('+degree+'deg)');
- }
- else {
- if(element.tagName == 'IMG') {
- var imgId = element.id+'', divWraper = document.createElement('div'), jDivWraper = $(divWraper), setSelectedObject;
- if(selectedObject !== undefined && selectedObject.attr('id') == imgId) {
- selectedObject = false;
- setSelectedObject = true;
- }
- element.id = '';
- divWraper.id = imgId;
- divWraper.className = element.className;
- jDivWraper.attr('style', jElement.attr('style'));
- divWraper.width = element.width;
- divWraper.height = element.height;
- 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+'" />';
- jElement.parent().append(divWraper);
- jElement.remove();
- element = divWraper;
- jElement = jDivWraper;
- if(setSelectedObject) selectedObject = jDivWraper;
- else if (jResizeTool !== undefined && imgId == 'resizeTool') jResizeTool = jDivWraper;
- }
- var originalSize;
- if(allMoveableObjects && (eData = allMoveableObjects[jElement.attr('id')])) {
- eWidth = eData.originalWidth * eData.ratio;
- eHeight = eData.originalHeight * eData.ratio;
- }
- else if(resizeToolSize && jElement.attr('id') == 'resizeTool') {
- eWidth = resizeToolSize.w;
- eHeight = resizeToolSize.h;
- }
- else {
- originalSize = jElement.data('originalSize');
- if(originalSize === null) {
- eWidth = jElement.width();
- eHeight = jElement.height();
- jElement.data('originalSize', {w:eWidth, h:eHeight});
- }
- else {
- eWidth = originalSize.w;
- eHeight = originalSize.h;
- }
- }
- rad = degree * deg2radians;
- costheta = Math.cos(rad);
- sintheta = Math.sin(rad);
- //progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+element.src+"',sizingMethod='scale')
- //progid:DXImageTransform.Microsoft.Chroma(color='green')
- var filter = element.style.filter, matrix = "Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",sizingMethod='auto expand')";
- element.style.filter = rMatrix.test(filter) ? filter.replace(rMatrix, matrix) : filter+' progid:DXImageTransform.Microsoft.'+matrix;
- /*eX = (eData.x -(1/2)*(jElement.width()-eWidth));
- eY = (eData.y -(1/2)*(jElement.height()-eHeight));
- if(eData) {
- eData.x = eX;
- eData.y = eY;
- //eData.ratio = jElement.width() / eData.originalWidth;
- }
- jElement.css('left', eX+'px');
- jElement.css('top', eY+'px');*/
- if(eWidth && eHeight) {
- jElement.css('margin', (-(1/2)*(jElement.height()-eHeight))+'px 0px 0px '+ (-(1/2)*(jElement.width()-eWidth))+'px');
- }
- }
- }
- return this;
- }
- });
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement