author | pohly <pohly> | 2004-08-24 20:52:45 (UTC) |
---|---|---|
committer | pohly <pohly> | 2004-08-24 20:52:45 (UTC) |
commit | 73253e93327cf4ef0932de1b4afb56af22a0f37e (patch) (unidiff) | |
tree | 1c9a7a6dd3341e036a894d348a3372525d29acec /noncore/apps/opie-reader/ppm_expander.cpp | |
parent | e90847c784c48bd21bf8768cb38edb853b832697 (diff) | |
download | opie-73253e93327cf4ef0932de1b4afb56af22a0f37e.zip opie-73253e93327cf4ef0932de1b4afb56af22a0f37e.tar.gz opie-73253e93327cf4ef0932de1b4afb56af22a0f37e.tar.bz2 |
updated source to opie-reader 0.7g
Diffstat (limited to 'noncore/apps/opie-reader/ppm_expander.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/ppm_expander.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/noncore/apps/opie-reader/ppm_expander.cpp b/noncore/apps/opie-reader/ppm_expander.cpp index fe2745c..ea5b955 100644 --- a/noncore/apps/opie-reader/ppm_expander.cpp +++ b/noncore/apps/opie-reader/ppm_expander.cpp | |||
@@ -5,12 +5,13 @@ | |||
5 | 5 | ||
6 | #include <stdlib.h> | 6 | #include <stdlib.h> |
7 | //#include <unistd.h> | 7 | //#include <unistd.h> |
8 | #include <stdio.h> | 8 | #include <stdio.h> |
9 | #include <string.h> | 9 | #include <string.h> |
10 | #include <time.h> | 10 | #include <time.h> |
11 | #include "static.h" | ||
11 | 12 | ||
12 | /*************************************************************************** | 13 | /*************************************************************************** |
13 | * Interface avec les routines de compression | 14 | * Interface avec les routines de compression |
14 | */ | 15 | */ |
15 | 16 | ||
16 | #define METHOD_NB 2 /* nombre total de méthodes de compression */ | 17 | #define METHOD_NB 2 /* nombre total de méthodes de compression */ |
@@ -62,32 +63,32 @@ int ppm_expander::home() | |||
62 | return 1; | 63 | return 1; |
63 | } | 64 | } |
64 | if (fread(&maxnode,sizeof(maxnode),1,my_file_in) != 1) return 1; | 65 | if (fread(&maxnode,sizeof(maxnode),1,my_file_in) != 1) return 1; |
65 | if (fread(&blocksize,sizeof(blocksize),1,my_file_in) != 1) return 1; | 66 | if (fread(&blocksize,sizeof(blocksize),1,my_file_in) != 1) return 1; |
66 | if (fread(&numblocks,sizeof(numblocks),1,my_file_in) != 1) return 1; | 67 | if (fread(&numblocks,sizeof(numblocks),1,my_file_in) != 1) return 1; |
67 | //fprintf(stderr,"<%u,%u,%u>\n",maxnode,blocksize,numblocks); | 68 | //fprintf(stderr,"<%u,%u,%u>\n",maxnode,blocksize,numblocks); |
68 | int err = locate(0,0); | 69 | locate(0,0); |
69 | outbytes = 0; | 70 | outbytes = 0; |
70 | return err; | 71 | return 0; |
71 | } | 72 | } |
72 | 73 | ||
73 | void ppm_expander::locate(unsigned int n) { | 74 | void ppm_expander::locate(unsigned int n) { |
74 | locate(n/blocksize, n%blocksize); | 75 | locate(n/blocksize, n%blocksize); |
75 | outbytes = n; | 76 | outbytes = n; |
76 | } | 77 | } |
77 | 78 | ||
78 | int ppm_expander::locate(unsigned short block, unsigned int n) | 79 | void ppm_expander::locate(unsigned short block, unsigned int n) |
79 | { | 80 | { |
80 | if (needppmend) | 81 | if (needppmend) |
81 | { | 82 | { |
82 | ppm.PPM_End(); | 83 | ppm.PPM_End(); |
83 | needppmend = false; | 84 | needppmend = false; |
84 | } | 85 | } |
85 | size_t fpos; | 86 | size_t fpos; |
86 | fseek(my_file_in,STAT_MAGIC_SIZE+sizeof(maxnode)+sizeof(blocksize)+sizeof(numblocks)+block*sizeof(fpos),SEEK_SET); | 87 | fseek(my_file_in,STAT_MAGIC_SIZE+sizeof(maxnode)+sizeof(blocksize)+sizeof(numblocks)+block*sizeof(fpos),SEEK_SET); |
87 | if (fread(&fpos,sizeof(fpos),1,my_file_in) != 1) return 1; | 88 | fread(&fpos,sizeof(fpos),1,my_file_in); |
88 | fseek(my_file_in,fpos,SEEK_SET); | 89 | fseek(my_file_in,fpos,SEEK_SET); |
89 | 90 | ||
90 | ppm.arith.Arith_DecodeInit(my_read_buf,buf_in,bufsize); | 91 | ppm.arith.Arith_DecodeInit(my_read_buf,buf_in,bufsize); |
91 | int err=ppm.PPM_Init(maxnode); | 92 | int err=ppm.PPM_Init(maxnode); |
92 | needppmend = true; | 93 | needppmend = true; |
93 | curblock = block; | 94 | curblock = block; |
@@ -103,6 +104,13 @@ int ppm_expander::getch() { | |||
103 | locate(curblock,0); | 104 | locate(curblock,0); |
104 | c = ppm.PPM_Decode(); | 105 | c = ppm.PPM_Decode(); |
105 | } | 106 | } |
106 | outbytes++; | 107 | outbytes++; |
107 | return (c==SYM_EOF) ? EOF : c; | 108 | return (c==SYM_EOF) ? EOF : c; |
108 | } | 109 | } |
110 | |||
111 | #ifndef __STATIC | ||
112 | extern "C" | ||
113 | { | ||
114 | CExpander* newcodec() { return new ppm_expander; } | ||
115 | } | ||
116 | #endif | ||