169 lines
3.9 KiB
PHP
169 lines
3.9 KiB
PHP
<?php
|
|
/* _ _____ _ _ _
|
|
* ___ | |_ ___ | __||_| ___ | | ___ | |_
|
|
* | . || || . || __|| || . || || -_|| _|
|
|
* | _||_|_|| _||__| |_||_ ||_||___||_|
|
|
* |_| |_| |___|
|
|
*
|
|
* Author : Lucas Baltes (lucas@thebobo.com)
|
|
* $Author: lhb $
|
|
*
|
|
* Website : http://www.thebobo.com/
|
|
*
|
|
* Date : $Date: 2003/03/16 10:08:01 $
|
|
* Rev : $Revision: 1.0 $
|
|
*
|
|
* Copyright: 2003 - Lucas Baltes
|
|
* License : GPL - http://www.gnu.org/licenses/gpl.html
|
|
*
|
|
* Purpose : Figlet font class
|
|
*
|
|
* Comments : phpFiglet is a php class to somewhat recreate the
|
|
* functionality provided by the original figlet program
|
|
* (http://www.figlet.org/). It does not (yet) support the
|
|
* more advanced features like kerning or smushing. It can
|
|
* use the same (flf2a) fonts as the original figlet program
|
|
* (see their website for more fonts).
|
|
*
|
|
* Usage : $phpFiglet = new phpFiglet();
|
|
*
|
|
* if ($phpFiglet->loadFont("fonts/standard.flf")) {
|
|
* $phpFiglet->display("Hello World");
|
|
* } else {
|
|
* trigger_error("Could not load font file");
|
|
* }
|
|
*
|
|
*/
|
|
|
|
|
|
class phpFiglet
|
|
{
|
|
|
|
/*
|
|
* Internal variables
|
|
*/
|
|
|
|
var $signature;
|
|
var $hardblank;
|
|
var $height;
|
|
var $baseline;
|
|
var $maxLenght;
|
|
var $oldLayout;
|
|
var $commentLines;
|
|
var $printDirection;
|
|
var $fullLayout;
|
|
var $codeTagCount;
|
|
var $fontFile;
|
|
|
|
|
|
/*
|
|
* Contructor
|
|
*/
|
|
|
|
function phpFiglet()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
* Load an flf font file. Return true on success, false on error.
|
|
*/
|
|
|
|
function loadfont($fontfile)
|
|
{
|
|
$this->fontFile = @file($fontfile);
|
|
if (!$this->fontFile) return false;
|
|
|
|
$hp = explode(" ", $this->fontFile[0]); // get header
|
|
|
|
$this->signature = substr($hp[0], 0, strlen($hp[0]) -1);
|
|
$this->hardblank = substr($hp[0], strlen($hp[0]) -1, 1);
|
|
$this->height = $hp[1];
|
|
$this->baseline = $hp[2];
|
|
$this->maxLenght = $hp[3];
|
|
$this->oldLayout = $hp[4];
|
|
$this->commentLines = $hp[5] + 1;
|
|
$this->printDirection = $hp[6];
|
|
$this->fullLayout = $hp[7];
|
|
$this->codeTagCount = $hp[8];
|
|
|
|
unset($hp);
|
|
|
|
if ($this->signature != "flf2a") {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* Get a character as a string, or an array with one line
|
|
* for each font height.
|
|
*/
|
|
|
|
function getCharacter($character, $asarray = false)
|
|
{
|
|
$asciValue = ord($character);
|
|
$start = $this->commentLines + ($asciValue - 32) * $this->height;
|
|
$data = ($asarray) ? array() : "";
|
|
|
|
for ($a = 0; $a < $this->height; $a++)
|
|
{
|
|
$tmp = $this->fontFile[$start + $a];
|
|
$tmp = str_replace("@", "", $tmp);
|
|
//$tmp = trim($tmp);
|
|
$tmp = str_replace($this->hardblank, " ", $tmp);
|
|
|
|
if ($asarray) {
|
|
$data[] = $tmp;
|
|
} else {
|
|
$data .= $tmp;
|
|
}
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
/*
|
|
* Returns a figletized line of characters.
|
|
*/
|
|
|
|
function fetch($line)
|
|
{
|
|
$ret = "";
|
|
|
|
for ($i = 0; $i < (strlen($line)); $i++)
|
|
{
|
|
$data[] = $this->getCharacter($line[$i], true);
|
|
}
|
|
|
|
@reset($data);
|
|
|
|
for ($i = 0; $i < $this->height; $i++)
|
|
{
|
|
while (list($k, $v) = each($data))
|
|
{
|
|
$ret .= str_replace("\n", "", $v[$i]);
|
|
}
|
|
reset($data);
|
|
$ret .= "\n";
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
|
|
/*
|
|
* Display (print) a figletized line of characters.
|
|
*/
|
|
|
|
function display($line)
|
|
{
|
|
print $this->fetch($line);
|
|
}
|
|
|
|
}
|
|
?>
|