Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- this.angle=0; //added it in the constructor
- this.rotated = false;
- Caman.Plugin.register("rotate", function(degrees) {
- //....
- //....
- //....
- this.angle += degrees;
- this.rotated = true;
- return this.replaceCanvas(canvas);
- }
- else if (this.rotated){
- canvas = document.createElement('canvas');//Canvas for initial state
- canvas.width = this.originalWidth; //give it the original width
- canvas.height = this.originalHeight; //and original height
- ctx = canvas.getContext('2d');
- imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
- pixelData = imageData.data;//get the pixelData (length equal to those of initial canvas
- _ref = this.originalPixelData; //use it as a reference array
- for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
- pixel = _ref[i];
- pixelData[i] = pixel; //give pixelData the initial pixels
- }
- ctx.putImageData(imageData, 0, 0); //put it back on our canvas
- rotatedCanvas = document.createElement('canvas'); //canvas to rotate from initial
- rotatedCtx = rotatedCanvas.getContext('2d');
- rotatedCanvas.width = this.canvas.width;//Our canvas was already rotated so it has been replaced. Caman's canvas attribute is allready rotated, So use that width
- rotatedCanvas.height = this.canvas.height; //the same
- x = rotatedCanvas.width / 2; //for translating
- y = rotatedCanvas.width / 2; //same
- rotatedCtx.save();
- rotatedCtx.translate(x, y);
- rotatedCtx.rotate(this.angle * Math.PI / 180); //rotation based on the total angle
- rotatedCtx.drawImage(canvas, -canvas.width / 2, -canvas.height / 2, canvas.width, canvas.height); //put the image back on canvas
- rotatedCtx.restore(); //restore it
- pixelData = rotatedCtx.getImageData(0, 0, rotatedCanvas.width, rotatedCanvas.height).data; //get the pixelData back
- width = rotatedCanvas.width; //used for returning the pixels in revert function
- }
- Caman.prototype.reset = function() {
- //....
- //....
- this.angle = 0;
- this.rotated = false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement