2 #include "fitz-stream.h"
4 typedef struct fz_a85e_s fz_a85e
;
13 fz_newa85e(fz_filter
**fp
, fz_obj
*params
)
15 FZ_NEWFILTER(fz_a85e
, f
, a85e
);
21 fz_dropa85e(fz_filter
*f
)
26 fz_processa85e(fz_filter
*filter
, fz_buffer
*in
, fz_buffer
*out
)
28 fz_a85e
*f
= (fz_a85e
*)filter
;
38 if (out
->wp
+ 1 > out
->ep
)
45 if (in
->rp
+ 4 <= in
->wp
)
47 word
= (in
->rp
[0] << 24) |
52 if (out
->wp
+ 1 > out
->ep
)
59 unsigned long v1
, v2
, v3
, v4
;
61 if (out
->wp
+ 5 > out
->ep
)
69 *out
->wp
++ = (v1
% 85) + '!';
70 *out
->wp
++ = (v2
% 85) + '!';
71 *out
->wp
++ = (v3
% 85) + '!';
72 *out
->wp
++ = (v4
% 85) + '!';
73 *out
->wp
++ = (word
% 85) + '!';
82 unsigned long divisor
;
85 goto needinput
; /* handle clean eof here */
87 count
= in
->wp
- in
->rp
;
89 if (out
->wp
+ count
+ 3 > out
->ep
)
94 case 3: word
|= in
->rp
[2] << 8;
95 case 2: word
|= in
->rp
[1] << 16;
96 case 1: word
|= in
->rp
[0] << 24;
100 divisor
= 85L * 85 * 85 * 85;
101 while (count
-- >= 0) {
102 *out
->wp
++ = ((word
/ divisor
) % 85) + '!';
119 if (out
->wp
+ 2 > out
->ep
)