1 /* Delta.c -- Delta converter
\r
2 2009-05-26 : Igor Pavlov : Public domain */
\r
6 void Delta_Init(Byte *state)
\r
9 for (i = 0; i < DELTA_STATE_SIZE; i++)
\r
13 static void MyMemCpy(Byte *dest, const Byte *src, unsigned size)
\r
16 for (i = 0; i < size; i++)
\r
20 void Delta_Encode(Byte *state, unsigned delta, Byte *data, SizeT size)
\r
22 Byte buf[DELTA_STATE_SIZE];
\r
24 MyMemCpy(buf, state, delta);
\r
27 for (i = 0; i < size;)
\r
29 for (j = 0; j < delta && i < size; i++, j++)
\r
32 data[i] = (Byte)(b - buf[j]);
\r
39 MyMemCpy(state, buf + j, delta - j);
\r
40 MyMemCpy(state + delta - j, buf, j);
\r
43 void Delta_Decode(Byte *state, unsigned delta, Byte *data, SizeT size)
\r
45 Byte buf[DELTA_STATE_SIZE];
\r
47 MyMemCpy(buf, state, delta);
\r
50 for (i = 0; i < size;)
\r
52 for (j = 0; j < delta && i < size; i++, j++)
\r
54 buf[j] = data[i] = (Byte)(buf[j] + data[i]);
\r
60 MyMemCpy(state, buf + j, delta - j);
\r
61 MyMemCpy(state + delta - j, buf, j);
\r