1 | <?php
|
---|
2 | /* _ _____ _ _ _
|
---|
3 | * ___ | |_ ___ | __||_| ___ | | ___ | |_
|
---|
4 | * | . || || . || __|| || . || || -_|| _|
|
---|
5 | * | _||_|_|| _||__| |_||_ ||_||___||_|
|
---|
6 | * |_| |_| |___|
|
---|
7 | *
|
---|
8 | * Author : Lucas Baltes ([email protected])
|
---|
9 | * $Author: lhb $
|
---|
10 | *
|
---|
11 | * Website : http://www.thebobo.com/
|
---|
12 | *
|
---|
13 | * Date : $Date: 2003/03/16 10:08:01 $
|
---|
14 | * Rev : $Revision: 1.0 $
|
---|
15 | *
|
---|
16 | * Copyright: 2003 - Lucas Baltes
|
---|
17 | * License : GPL - http://www.gnu.org/licenses/gpl.html
|
---|
18 | *
|
---|
19 | * Purpose : Figlet font class
|
---|
20 | *
|
---|
21 | * Comments : phpFiglet is a php class to somewhat recreate the
|
---|
22 | * functionality provided by the original figlet program
|
---|
23 | * (http://www.figlet.org/). It does not (yet) support the
|
---|
24 | * more advanced features like kerning or smushing. It can
|
---|
25 | * use the same (flf2a) fonts as the original figlet program
|
---|
26 | * (see their website for more fonts).
|
---|
27 | *
|
---|
28 | * Usage : $phpFiglet = new phpFiglet();
|
---|
29 | *
|
---|
30 | * if ($phpFiglet->loadFont("fonts/standard.flf")) {
|
---|
31 | * $phpFiglet->display("Hello World");
|
---|
32 | * } else {
|
---|
33 | * trigger_error("Could not load font file");
|
---|
34 | * }
|
---|
35 | *
|
---|
36 | */
|
---|
37 |
|
---|
38 |
|
---|
39 | class phpFiglet
|
---|
40 | {
|
---|
41 |
|
---|
42 | /*
|
---|
43 | * Internal variables
|
---|
44 | */
|
---|
45 |
|
---|
46 | var $signature;
|
---|
47 | var $hardblank;
|
---|
48 | var $height;
|
---|
49 | var $baseline;
|
---|
50 | var $maxLenght;
|
---|
51 | var $oldLayout;
|
---|
52 | var $commentLines;
|
---|
53 | var $printDirection;
|
---|
54 | var $fullLayout;
|
---|
55 | var $codeTagCount;
|
---|
56 | var $fontFile;
|
---|
57 |
|
---|
58 |
|
---|
59 | /*
|
---|
60 | * Contructor
|
---|
61 | */
|
---|
62 |
|
---|
63 | function phpFiglet()
|
---|
64 | {
|
---|
65 |
|
---|
66 | }
|
---|
67 |
|
---|
68 |
|
---|
69 | /*
|
---|
70 | * Load an flf font file. Return true on success, false on error.
|
---|
71 | */
|
---|
72 |
|
---|
73 | function loadfont($fontfile)
|
---|
74 | {
|
---|
75 | $this->fontFile = @file($fontfile);
|
---|
76 | if (!$this->fontFile) return false;
|
---|
77 |
|
---|
78 | $hp = explode(" ", $this->fontFile[0]); // get header
|
---|
79 |
|
---|
80 | $this->signature = substr($hp[0], 0, strlen($hp[0]) -1);
|
---|
81 | $this->hardblank = substr($hp[0], strlen($hp[0]) -1, 1);
|
---|
82 | $this->height = $hp[1];
|
---|
83 | $this->baseline = $hp[2];
|
---|
84 | $this->maxLenght = $hp[3];
|
---|
85 | $this->oldLayout = $hp[4];
|
---|
86 | $this->commentLines = $hp[5] + 1;
|
---|
87 | $this->printDirection = $hp[6];
|
---|
88 | $this->fullLayout = $hp[7];
|
---|
89 | $this->codeTagCount = $hp[8];
|
---|
90 |
|
---|
91 | unset($hp);
|
---|
92 |
|
---|
93 | if ($this->signature != "flf2a") {
|
---|
94 | return false;
|
---|
95 | } else {
|
---|
96 | return true;
|
---|
97 | }
|
---|
98 | }
|
---|
99 |
|
---|
100 |
|
---|
101 | /*
|
---|
102 | * Get a character as a string, or an array with one line
|
---|
103 | * for each font height.
|
---|
104 | */
|
---|
105 |
|
---|
106 | function getCharacter($character, $asarray = false)
|
---|
107 | {
|
---|
108 | $asciValue = ord($character);
|
---|
109 | $start = $this->commentLines + ($asciValue - 32) * $this->height;
|
---|
110 | $data = ($asarray) ? array() : "";
|
---|
111 |
|
---|
112 | for ($a = 0; $a < $this->height; $a++)
|
---|
113 | {
|
---|
114 | $tmp = $this->fontFile[$start + $a];
|
---|
115 | $tmp = str_replace("@", "", $tmp);
|
---|
116 | //$tmp = trim($tmp);
|
---|
117 | $tmp = str_replace($this->hardblank, " ", $tmp);
|
---|
118 |
|
---|
119 | if ($asarray) {
|
---|
120 | $data[] = $tmp;
|
---|
121 | } else {
|
---|
122 | $data .= $tmp;
|
---|
123 | }
|
---|
124 | }
|
---|
125 |
|
---|
126 | return $data;
|
---|
127 | }
|
---|
128 |
|
---|
129 |
|
---|
130 | /*
|
---|
131 | * Returns a figletized line of characters.
|
---|
132 | */
|
---|
133 |
|
---|
134 | function fetch($line)
|
---|
135 | {
|
---|
136 | $ret = "";
|
---|
137 |
|
---|
138 | for ($i = 0; $i < (strlen($line)); $i++)
|
---|
139 | {
|
---|
140 | $data[] = $this->getCharacter($line[$i], true);
|
---|
141 | }
|
---|
142 |
|
---|
143 | @reset($data);
|
---|
144 |
|
---|
145 | for ($i = 0; $i < $this->height; $i++)
|
---|
146 | {
|
---|
147 | while (list($k, $v) = each($data))
|
---|
148 | {
|
---|
149 | $ret .= str_replace("\n", "", $v[$i]);
|
---|
150 | }
|
---|
151 | reset($data);
|
---|
152 | $ret .= "\n";
|
---|
153 | }
|
---|
154 |
|
---|
155 | return $ret;
|
---|
156 | }
|
---|
157 |
|
---|
158 |
|
---|
159 | /*
|
---|
160 | * Display (print) a figletized line of characters.
|
---|
161 | */
|
---|
162 |
|
---|
163 | function display($line)
|
---|
164 | {
|
---|
165 | print $this->fetch($line);
|
---|
166 | }
|
---|
167 |
|
---|
168 | }
|
---|
169 | ?>
|
---|