PHP7 compatibility fixes.
[fa-stable.git] / reporting / includes / fpdi / decoders / ASCII85Decode.php
1 <?php
2 //
3 //  FPDI - Version 1.2.1
4 //
5 //    Copyright 2004-2008 Setasign - Jan Slabon
6 //
7 //  Licensed under the Apache License, Version 2.0 (the "License");
8 //  you may not use this file except in compliance with the License.
9 //  You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 //  Unless required by applicable law or agreed to in writing, software
14 //  distributed under the License is distributed on an "AS IS" BASIS,
15 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 //  See the License for the specific language governing permissions and
17 //  limitations under the License.
18 //
19
20 if (!defined("ORD_z"))
21         define("ORD_z",ord('z'));
22 if (!defined("ORD_exclmark"))
23         define("ORD_exclmark", ord('!'));
24 if (!defined("ORD_u"))  
25         define("ORD_u", ord("u"));
26 if (!defined("ORD_tilde"))
27         define("ORD_tilde", ord('~'));
28
29 class ASCII85Decode {
30
31     function __construct(&$fpdi) {
32         $this->fpdi =& $fpdi;
33     }
34
35
36     function decode($in) {
37         $out = "";
38         $state = 0;
39         $chn = null;
40         
41         $l = strlen($in);
42         
43         for ($k = 0; $k < $l; ++$k) {
44             $ch = ord($in[$k]) & 0xff;
45             
46             if ($ch == ORD_tilde) {
47                 break;
48             }
49             if (preg_match("/^\s$/",chr($ch))) {
50                 continue;
51             }
52             if ($ch == ORD_z && $state == 0) {
53                 $out .= chr(0).chr(0).chr(0).chr(0);
54                 continue;
55             }
56             if ($ch < ORD_exclmark || $ch > ORD_u) {
57                 $this->fpdi->error("Illegal character in ASCII85Decode.");
58             }
59             
60             $chn[$state++] = $ch - ORD_exclmark;
61             
62             if ($state == 5) {
63                 $state = 0;
64                 $r = 0;
65                 for ($j = 0; $j < 5; ++$j)
66                     $r = $r * 85 + $chn[$j];
67                 $out .= chr($r >> 24);
68                 $out .= chr($r >> 16);
69                 $out .= chr($r >> 8);
70                 $out .= chr($r);
71             }
72         }
73         $r = 0;
74         
75         if ($state == 1)
76             $this->fpdi->error("Illegal length in ASCII85Decode.");
77         if ($state == 2) {
78             $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
79             $out .= chr($r >> 24);
80         }
81         else if ($state == 3) {
82             $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + ($chn[2]+1) * 85 * 85;
83             $out .= chr($r >> 24);
84             $out .= chr($r >> 16);
85         }
86         else if ($state == 4) {
87             $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + $chn[2] * 85 * 85  + ($chn[3]+1) * 85 ;
88             $out .= chr($r >> 24);
89             $out .= chr($r >> 16);
90             $out .= chr($r >> 8);
91         }
92
93         return $out;
94     }
95 }