view gnv-artifacts/src/main/java/de/intevation/gnv/raster/RasterToPPM.java @ 628:bfe33e658576

Added XSLT sheet to transform palette xml files into a style definition template used for mapfile generation. gnv-artifacts/trunk@703 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 23 Feb 2010 15:50:15 +0000
parents 6e8364e766fa
children b1f5f2a8840f
line wrap: on
line source
package de.intevation.gnv.raster;

import java.io.IOException;
import java.io.OutputStream;

import java.awt.Color;

/**
 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
 */
public class RasterToPPM
{
    private RasterToPPM() {
    }

    public static void writeToPPM(Raster raster, Palette palette, OutputStream out)
    throws IOException
    {
        int W = raster.getWidth();
        int H = raster.getHeight();
        out.write(("P6\n" + W + " " + H + "\n255\n").getBytes("US-ASCII"));
        double [] values = raster.getValues();
        int pos = 0;
        byte [] data = new byte[W*3];
        int black = Color.BLACK.getRGB();
        for (int i = 0; i < H; ++i) {
            for (int j = 0; j < data.length; ++pos) {
                Palette.Entry entry = palette.getEntry(values[pos]);
                int rgb = entry == null
                    ? black
                    : entry.getColor().getRGB();
                data[j++] = (byte)((rgb >> 16) & 0xff);
                data[j++] = (byte)((rgb >>  8) & 0xff);
                data[j++] = (byte)( rgb        & 0xff);
            }
            out.write(data);
        }
        out.flush();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org