-
Thomas Oster authored
Dithering algorithms don't have internal variables for source and target, but they are provided as method arguments
Thomas Oster authoredDithering algorithms don't have internal variables for source and target, but they are provided as method arguments
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DitheringAlgorithm.java 2.30 KiB
/**
* This file is part of VisiCut.
* Copyright (C) 2012 Thomas Oster <thomas.oster@rwth-aachen.de>
* RWTH Aachen University - 52062 Aachen, Germany
*
* VisiCut is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VisiCut 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
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with VisiCut. If not, see <http://www.gnu.org/licenses/>.
**/
package com.t_oster.liblasercut.dithering;
import com.t_oster.liblasercut.BlackWhiteRaster;
import com.t_oster.liblasercut.Customizable;
import com.t_oster.liblasercut.GreyscaleRaster;
import com.t_oster.liblasercut.TimeIntensiveOperation;
/**
*
* @author Thomas Oster <thomas.oster@rwth-aachen.de>
*/
public abstract class DitheringAlgorithm extends TimeIntensiveOperation implements Customizable, Cloneable
{
protected void setBlack(GreyscaleRaster src, BlackWhiteRaster target, int x, int y, boolean black)
{
if (target != null)
{
target.setBlack(x, y, black);
}
else
{
src.setGreyScale(x, y, black ? 0 : 255);
}
}
public BlackWhiteRaster dither(GreyscaleRaster input)
{
BlackWhiteRaster target = new BlackWhiteRaster(input.getWidth(), input.getHeight());
doDithering(input, target);
return target;
}
public void ditherDirect(GreyscaleRaster input)
{
doDithering(input, null);
}
public void ditherDirect(GreyscaleRaster input, BlackWhiteRaster output)
{
doDithering(input, output);
}
protected abstract void doDithering(GreyscaleRaster src, BlackWhiteRaster target);
@Override
public String[] getPropertyKeys() {
return new String[0];
}
@Override
public void setProperty(String key, Object value) {
}
@Override
public Object getProperty(String key) {
return null;
}
@Override
public abstract DitheringAlgorithm clone();
@Override
public abstract String toString();
}