public static final Image TransformImage (Image srcImage, int transform)
{
Image result = null;
int srcW = srcImage.getWidth();
int srcH = srcImage.getHeight();
Graphics g = null;
switch (transform)
{
// nothing to do
case TRANS_NONE:
return srcImage;
// X-flip
case TRANS_MIRROR:
result = Image.createImage(srcW, srcH);
g = result.getGraphics();
for (int i = 0; i < srcW; i++)
{
g.setClip(i, 0, 1, srcH);
g.drawImage(srcImage, i * 2 - srcW + 1, 0, Graphics.TOP
| Graphics.LEFT);
}
break;
// Y-flip
case TRANS_MIRROR_ROT180:
result = Image.createImage(srcW, srcH);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
g.setClip(0, i, srcW, 1);
g.drawImage(srcImage, 0, 2 * i - srcH + 1, Graphics.TOP
| Graphics.LEFT);
}
break;
// rotate 180 degree deasil
case TRANS_ROT180:
result = TransformImage(srcImage, TRANS_MIRROR_ROT180);
result = TransformImage(result, TRANS_MIRROR);
break;
// rotate 90 degree deasil
case TRANS_ROT90:
result = Image.createImage(srcH, srcW);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
for (int j = 0; j < srcW; j++)
{
g.setClip(i, j, 1, 1);
g.drawImage(srcImage, i - j, i + j - srcH, Graphics.TOP
| Graphics.LEFT);
}
}
break;
// X-flip and then rotate 270 degree deasil
case TRANS_MIRROR_ROT270:
result = Image.createImage(srcH, srcW);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
for (int j = 0; j < srcW; j++)
{
g.setClip(i, j, 1, 1);
g.drawImage(srcImage, i - j, j - i, Graphics.TOP
| Graphics.LEFT);
}
}
break;
// X-flip and then rotate 90 degree deasil
case TRANS_MIRROR_ROT90:
result = TransformImage(srcImage, TRANS_ROT90);
result = TransformImage(result, TRANS_MIRROR_ROT180);
break;
// Rotate 270 degree deasil
case TRANS_ROT270:
result = TransformImage(srcImage, TRANS_MIRROR_ROT270);
result = TransformImage(result, TRANS_MIRROR_ROT180);
break;
}
return result;
}
{
Image result = null;
int srcW = srcImage.getWidth();
int srcH = srcImage.getHeight();
Graphics g = null;
switch (transform)
{
// nothing to do
case TRANS_NONE:
return srcImage;
// X-flip
case TRANS_MIRROR:
result = Image.createImage(srcW, srcH);
g = result.getGraphics();
for (int i = 0; i < srcW; i++)
{
g.setClip(i, 0, 1, srcH);
g.drawImage(srcImage, i * 2 - srcW + 1, 0, Graphics.TOP
| Graphics.LEFT);
}
break;
// Y-flip
case TRANS_MIRROR_ROT180:
result = Image.createImage(srcW, srcH);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
g.setClip(0, i, srcW, 1);
g.drawImage(srcImage, 0, 2 * i - srcH + 1, Graphics.TOP
| Graphics.LEFT);
}
break;
// rotate 180 degree deasil
case TRANS_ROT180:
result = TransformImage(srcImage, TRANS_MIRROR_ROT180);
result = TransformImage(result, TRANS_MIRROR);
break;
// rotate 90 degree deasil
case TRANS_ROT90:
result = Image.createImage(srcH, srcW);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
for (int j = 0; j < srcW; j++)
{
g.setClip(i, j, 1, 1);
g.drawImage(srcImage, i - j, i + j - srcH, Graphics.TOP
| Graphics.LEFT);
}
}
break;
// X-flip and then rotate 270 degree deasil
case TRANS_MIRROR_ROT270:
result = Image.createImage(srcH, srcW);
g = result.getGraphics();
for (int i = 0; i < srcH; i++)
{
for (int j = 0; j < srcW; j++)
{
g.setClip(i, j, 1, 1);
g.drawImage(srcImage, i - j, j - i, Graphics.TOP
| Graphics.LEFT);
}
}
break;
// X-flip and then rotate 90 degree deasil
case TRANS_MIRROR_ROT90:
result = TransformImage(srcImage, TRANS_ROT90);
result = TransformImage(result, TRANS_MIRROR_ROT180);
break;
// Rotate 270 degree deasil
case TRANS_ROT270:
result = TransformImage(srcImage, TRANS_MIRROR_ROT270);
result = TransformImage(result, TRANS_MIRROR_ROT180);
break;
}
return result;
}