source: documentation/trunk/packages/dokuwiki-2011-05-25a/lib/plugins/captcha/figlet.php@ 25027

Last change on this file since 25027 was 25027, checked in by jmt12, 12 years ago

Adding the packages directory, and within it a configured version of dokuwiki all ready to run

File size: 3.9 KB
Line 
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
39class 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?>
Note: See TracBrowser for help on using the repository browser.