X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fimagesqueeze%2Fcodec%2FApproximator.java;h=1535a9d7ef2f28a6638c89d404a36f79850d196d;hp=a4f78af536609df43c6df329ad856e1b0441cbfe;hb=HEAD;hpb=4bcffe8896c08c9f60b2707da71bb39a64618d93 diff --git a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java index a4f78af..1535a9d 100755 --- a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java +++ b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java @@ -1,83 +1,65 @@ /* - * Imagesqueeze - Image codec optimized for photos. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. + * Image codec. Author: Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * This project is released under Creative Commons Zero (CC0) license. */ - package eu.svjatoslav.imagesqueeze.codec; -import java.io.IOException; - import eu.svjatoslav.commons.data.BitInputStream; import eu.svjatoslav.commons.data.BitOutputStream; +import java.io.IOException; + /** * Since it is a lossy codec, instead of storing exact values, approximated * values are stored to save on bit count. */ -public class Approximator implements Comparable { - - public Table yTable = new Table(); - public Table uTable = new Table(); - public Table vTable = new Table(); - - public Approximator() { - } - - @Override - public int compareTo(final Approximator o) { - int result = yTable.compareTo(o.yTable); - if (result != 0) - return result; - - result = uTable.compareTo(o.uTable); - if (result != 0) - return result; - - result = vTable.compareTo(o.vTable); - return result; - } - - public void computeLookupTables() { - yTable.computeLookupTables(); - uTable.computeLookupTables(); - vTable.computeLookupTables(); - } - - public void initialize() { - yTable.reset(); - uTable.reset(); - vTable.reset(); - - yTable.addEntry(0, 6, 0); - yTable.addEntry(27, 30, 4); - yTable.addEntry(255, 255, 6); - - uTable.addEntry(0, 9, 0); - uTable.addEntry(27, 30, 4); - uTable.addEntry(255, 255, 6); - - vTable.addEntry(0, 9, 0); - vTable.addEntry(27, 30, 4); - vTable.addEntry(255, 255, 6); - - computeLookupTables(); - } - - public void load(final BitInputStream inputStream) throws IOException { - yTable.load(inputStream); - uTable.load(inputStream); - vTable.load(inputStream); - } - - public void save(final BitOutputStream outputStream) throws IOException { - yTable.save(outputStream); - uTable.save(outputStream); - vTable.save(outputStream); - } +class Approximator { + + public final Table yTable = new Table(); + public final Table uTable = new Table(); + public final Table vTable = new Table(); + + public Approximator() { + } + + + public void computeLookupTables() { + yTable.computeLookupTables(); + uTable.computeLookupTables(); + vTable.computeLookupTables(); + } + + public void initialize() { + yTable.reset(); + uTable.reset(); + vTable.reset(); + + yTable.addEntry(0, 6, 0); + yTable.addEntry(27, 30, 4); + yTable.addEntry(255, 255, 6); + + uTable.addEntry(0, 9, 0); + uTable.addEntry(27, 30, 4); + uTable.addEntry(255, 255, 6); + + vTable.addEntry(0, 9, 0); + vTable.addEntry(27, 30, 4); + vTable.addEntry(255, 255, 6); + + computeLookupTables(); + } + + public void load(final BitInputStream inputStream) throws IOException { + yTable.load(inputStream); + uTable.load(inputStream); + vTable.load(inputStream); + } + + public void save(final BitOutputStream outputStream) throws IOException { + yTable.save(outputStream); + uTable.save(outputStream); + vTable.save(outputStream); + } }