• Jump To … +
    analyze.coffee autoload.coffee blender.coffee calculate.coffee caman.coffee convert.coffee event.coffee filter.coffee io.coffee layer.coffee logger.coffee module.coffee pixel.coffee plugin.coffee renderer.coffee store.coffee util.coffee blenders.coffee filters.coffee size.coffee blur.coffee camera.coffee compoundBlur.coffee edges.coffee posterize.coffee presets.coffee rotate.coffee stackBlur.coffee threshold.coffee
  • rotate.coffee

  • ¶
    Caman.Plugin.register "rotate", (degrees) ->
      angle = degrees%360
      if angle == 0 
        return @dimensions =
          width: @canvas.width
          height: @canvas.height 
      to_radians = Math.PI/180;
     
      if exports?
        canvas = new Canvas()
      else
        canvas = document.createElement 'canvas'  
        Util.copyAttributes @canvas, canvas
      
      if angle == 90 or angle == -270 or angle == 270 or angle == -90
        width = @canvas.height
        height = @canvas.width
        x = width/2
        y = height/2
      else if angle == 180
        width = @canvas.width
        height = @canvas.height
        x = width/2
        y = height/2 
      else 
        width = Math.sqrt(Math.pow(@originalWidth, 2) + Math.pow(@originalHeight, 2))
        height = width
        x = @canvas.height/2
        y = @canvas.width/2
      
      canvas.width = width
      canvas.height = height
      ctx = canvas.getContext '2d'
      ctx.save()
      ctx.translate x, y	
      ctx.rotate angle*to_radians
      ctx.drawImage @canvas, -@canvas.width/2, -@canvas.height/2, @canvas.width, @canvas.height
      ctx.restore()
    
      @replaceCanvas canvas
    
    Caman.Filter.register "rotate", ->
      @processPlugin "rotate", Array.prototype.slice.call(arguments, 0)