<?php
 
/*        _         _____  _       _       _
 
 *   ___ | |_  ___ |   __||_| ___ | | ___ | |_
 
 *  | . ||   || . ||   __|| || . || || -_||  _|
 
 *  |  _||_|_||  _||__|   |_||_  ||_||___||_|
 
 *  |_|       |_|            |___|
 
 *
 
 *    Author     :        Lucas Baltes ([email protected])
 
 *                    $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) die("Couldnt open fontfile $fontfile\n");
 
 
        $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") {
 
            trigger_error("Unknown font version " . $this->signature . "\n");
 
            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);
 
    }
 
 
}
 
?>
 
 |