diff options
Diffstat (limited to 'org.fox.ttcomics/src/main/java/org/fox/ttcomics2/junrar/unpack/ppm/SEE2Context.java')
-rw-r--r-- | org.fox.ttcomics/src/main/java/org/fox/ttcomics2/junrar/unpack/ppm/SEE2Context.java | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/junrar/unpack/ppm/SEE2Context.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/junrar/unpack/ppm/SEE2Context.java new file mode 100644 index 0000000..378c0d3 --- /dev/null +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/junrar/unpack/ppm/SEE2Context.java @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved. + * Original author: Edmund Wagner + * Creation date: 31.05.2007 + * + * Source: $HeadURL$ + * Last changed: $LastChangedDate$ + * + * the unrar licence applies to all junrar source and binary distributions + * you are not allowed to use this source to re-create the RAR compression algorithm + * + * Here some html entities which can be used for escaping javadoc tags: + * "&": "&" or "&" + * "<": "<" or "<" + * ">": ">" or ">" + * "@": "@" + */ +package org.fox.ttcomics2.junrar.unpack.ppm; + +public class SEE2Context { + public static final int size = 4; + + // ushort Summ; + private int summ; + + // byte Shift; + private int shift; + + // byte Count; + private int count; + + public void init(int initVal) { + shift = (ModelPPM.PERIOD_BITS - 4) & 0xff; + summ = (initVal << shift) & 0xffff; + count = 4; + } + + public int getMean() { + int retVal = summ >>> shift; + summ -= retVal; + return retVal + ((retVal == 0) ? 1 : 0); + } + + public void update() { + if (shift < ModelPPM.PERIOD_BITS && --count == 0) { + summ += summ; + count = (3 << shift++); + } + summ &= 0xffff; + count &= 0xff; + shift &= 0xff; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count & 0xff; + } + + public int getShift() { + return shift; + } + + public void setShift(int shift) { + this.shift = shift & 0xff; + } + + public int getSumm() { + return summ; + } + + public void setSumm(int summ) { + this.summ = summ & 0xffff; + } + + public void incSumm(int dSumm) { + setSumm(getSumm() + dSumm); + } + + public String toString() { + StringBuilder buffer = new StringBuilder(); + buffer.append("SEE2Context["); + buffer.append("\n size="); + buffer.append(size); + buffer.append("\n summ="); + buffer.append(summ); + buffer.append("\n shift="); + buffer.append(shift); + buffer.append("\n count="); + buffer.append(count); + buffer.append("\n]"); + return buffer.toString(); + } +} |