// (c) Copyright 1997 Peter Sandborn ALL RIGHTS RESERVED

//package savantage.awt;

import java.awt.*;
import java.awt.image.*;
//import savantage.util.*;

//------------------------------------------------------------------------------
// Rotate90DegreeFilter.java:
//		An ImageFilter that rotates an image 90 degrees counter clockwise
//      This filter was obtained from David Dagon (ddagon@mindspring.com)
//      off the www.dejanews.com web site.
//------------------------------------------------------------------------------

public class Rotate90DegreeFilter extends ImageFilter
{
 public Rotate90DegreeFilter( ) { }
 public void setHints(int hints) {
  consumer.setHints(hints & ~(ImageConsumer.COMPLETESCANLINES +
   ImageConsumer.TOPDOWNLEFTRIGHT));
 }

 public void setDimensions(int width, int height) {
  consumer.setDimensions(height, width);
 }

 public void setPixels(int x, int y, int width, int height, ColorModel model, byte[] pixels, int offset, int scansize) {
  byte[] rotatePixels = new byte[pixels.length];
  for (int ry=0; ry < height; ry++) {
   for (int rx=0; rx < width; rx++) {
    rotatePixels[rx*height + ry] = pixels[(ry+1)*scansize-rx-1+offset];
   }
  }
  consumer.setPixels(y, x, height, width, model, rotatePixels, 0, height);
 }

 public void setPixels(int x, int y, int width, int height,
  ColorModel model, int[] pixels, int offset, int scansize) {
  int[] rotatePixels = new int[pixels.length];
  for (int ry=0; ry < height; ry++) {
   for (int rx=0; rx < width; rx++) {
    rotatePixels[rx*height + ry] = pixels[(ry+1)*scansize-rx-1+offset];
   }
  }
  consumer.setPixels(y, x, height, width, model, rotatePixels, 0, height);
 }
}