/library/html2pdf/fpdi/filters/FilterASCII85.php
PHP | 101 lines | 71 code | 13 blank | 17 comment | 28 complexity | af0a3a7c79322bd04c29f37d5ad7015f MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0, GPL-2.0, MPL-2.0
- <?php
- //
- // FPDI - Version 1.4.2
- //
- // Copyright 2004-2011 Setasign - Jan Slabon
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- if (!defined('ORD_z'))
- define('ORD_z',ord('z'));
- if (!defined('ORD_exclmark'))
- define('ORD_exclmark', ord('!'));
- if (!defined('ORD_u'))
- define('ORD_u', ord('u'));
- if (!defined('ORD_tilde'))
- define('ORD_tilde', ord('~'));
- if (!class_exists('FilterASCII85', false)) {
- class FilterASCII85 {
-
- function error($msg) {
- die($msg);
- }
-
- function decode($in) {
- $out = '';
- $state = 0;
- $chn = null;
-
- $l = strlen($in);
-
- for ($k = 0; $k < $l; ++$k) {
- $ch = ord($in[$k]) & 0xff;
-
- if ($ch == ORD_tilde) {
- break;
- }
- if (preg_match('/^\s$/',chr($ch))) {
- continue;
- }
- if ($ch == ORD_z && $state == 0) {
- $out .= chr(0) . chr(0) . chr(0) . chr(0);
- continue;
- }
- if ($ch < ORD_exclmark || $ch > ORD_u) {
- return $this->error('Illegal character in ASCII85Decode.');
- }
-
- $chn[$state++] = $ch - ORD_exclmark;
-
- if ($state == 5) {
- $state = 0;
- $r = 0;
- for ($j = 0; $j < 5; ++$j)
- $r = $r * 85 + $chn[$j];
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- $out .= chr($r >> 8);
- $out .= chr($r);
- }
- }
- $r = 0;
-
- if ($state == 1)
- return $this->error('Illegal length in ASCII85Decode.');
- if ($state == 2) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
- $out .= chr($r >> 24);
- }
- else if ($state == 3) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- }
- else if ($state == 4) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- $out .= chr($r >> 8);
- }
-
- return $out;
- }
-
- function encode($in) {
- return $this->error("ASCII85 encoding not implemented.");
- }
- }
- }