Files
gzz-mirror/Modules/multimedia/crop.java
2026-09-14 20:19:29 -04:00

95 lines
2.2 KiB
Java

/*
crop.java
*
* Copyright (c) 2000-2001, Ted Nelson and Tuomas Lukka
*
* You may use and distribute under the terms of either the GNU Lesser
* General Public License, either version 2 of the license or,
* at your choice, any later version. Alternatively, you may use and
* distribute under the terms of the XPL.
*
* See the LICENSE.lgpl and LICENSE.xpl files for the specific terms of
* the licenses.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the README
* file for more details.
*
*/
/*
* Written by Tero Mäyränen
*/
package org.gzigzag.module.multimedia;
import org.gzigzag.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
/**
* unfinished
*/
public class crop extends MediaZOb
{
public static final String rcsid = "$Id: crop.java,v 1.2 2001/03/05 08:44:14 deetsay Exp $";
private Pixels pix = null;
private int oldframe=0, oldpw=0, oldph=0, oldpx=0, oldpy=0;
public Pixels getPixels()
{
Pixels inpix = readParam("input").getPixels();
int iw = inpix.getWidth();
int ih = inpix.getHeight();
int ix = inpix.getX();
int iy = inpix.getY();
int pw = readParam("width").getInt(iw);
int ph = readParam("height").getInt(ih);
int px = readParam("x").getInt(ix);
int py = readParam("y").getInt(iy);
if (pix != null && inpix.getFrame() == oldframe
&& pw == oldpw && ph == oldph && px == oldpx && py == oldpy)
{
return pix;
}
oldpw = pw; oldph = ph; oldpx = px; oldpy = py; oldframe = inpix.getFrame();
if (pix == null)
{
pix = new Pixels(pw, ph);
}
else
{
pix.setSize(pw, ph);
}
pix.setX(px);
pix.setY(py);
int p[] = pix.getPixels(), ip[] = inpix.getPixels();
int i = 0;
for (int y=py; y<py+ph; y++)
{
if ((y < iy) || (y >= iy + ih))
{
for (int x=0; x<pw; x++) p[i++] = 0xff000000;
}
else
{
for (int x=px; x<px+pw; x++)
{
if ((x < ix) || (x >= ix + iw)) p[i++] = 0xff000000;
else p[i++] = ip[ ((y-iy)*iw)+(x-ix) ];
}
}
}
pix.setFrame(pix.getFrame()+1);
return pix;
}
}