June 7, 2018♦
<?php
class Mixes extends Page
{
public function __construct()
{
parent::__construct();
$this->map = new Navigation_Map();
}
}
<?php
define("IMAGE_FORMAT", "png");
define("FONT_DIRECTORY", "/usr/share/fonts");
define("DEFAULT_FONT_SIZE", "16");
define("DEFAULT_FONT_WEIGHT", 500);
define("DEFAULT_COLOR", "Black");
define("DEFAULT_FONT_NAME", "FreeSans");
define("DEFAULT_BACKGROUND", "#00000000");
define("DEFAULT_HORIZONTAL_PADDING", 16);
define("DEFAULT_VERTICAL_PADDING", 0);
define("DEFAULT_STROKE_WIDTH", 0);
define("DEFAULT_STROKE_COLOR", "White");
class Label extends Image
{
public $_image;
private $_text;
public function __construct(
$text, $path=null, $font_size=null, $font_weight=null, $color=null,
$font_name=null, $background=null, $horizontal_padding=null,
$vertical_padding=null, $stroke_width=null, $stroke_color=null)
{
if ($path)
{
parent::__construct($path);
}
$this->_text = $text;
$this->_font_size = $font_size;
$this->_font_weight = $font_weight;
$this->_color = $color;
$this->_font_name = $font_name;
$this->_background = $background;
$this->_horizontal_padding = $horizontal_padding;
$this->_vertical_padding = $vertical_padding;
$this->_stroke_width = $stroke_width;
$this->_stroke_color = $stroke_color;
$this->initialize_label();
}
/* public function __set($name, $value) */
/* { */
/* if ($value === null) */
/* { */
/* $value = $this->find_definition($name); */
/* } */
/* if ($name[0] != "_") */
/* { */
/* parent::__set($name, $value); */
/* } */
/* else */
/* { */
/* $this->$name = $value; */
/* } */
/* } */
/* private function find_definition($name) */
/* { */
/* $name = strtoupper(ltrim($name, "_")); */
/* $class_prefix = strtoupper(get_class($this)) . "_"; */
/* if (isset($GLOBALS[$class_prefix . $name])) */
/* { */
/* return $GLOBALS[$class_prefix . $name]; */
/* } */
/* if (isset($GLOBALS[$name])) */
/* { */
/* return $GLOBALS[$name]; */
/* } */
/* if (defined("DEFAULT_" . $name)) */
/* { */
/* return constant("DEFAULT_" . $name); */
/* } */
/* } */
private function initialize_label()
{
$this->_image = new Imagick();
$specification = $this->create_specification();
$text_properties =
$this->_image->queryFontMetrics($specification, $this->_text);
$this->create_background($text_properties);
$this->_image->setImageFormat(IMAGE_FORMAT);
$this->_image->drawImage($specification);
}
private function create_background($text_properties)
{
$this->_image->newImage(
$text_properties["textWidth"] + $this->_horizontal_padding,
$text_properties["textHeight"] + $this->_vertical_padding,
$this->_background);
}
private function create_specification()
{
$specification = new ImagickDraw();
$specification->setGravity(Imagick::GRAVITY_CENTER);
$specification->setFontSize($this->_font_size);
$specification->setFontWeight($this->_font_weight);
$specification->setFillColor($this->_color);
$font_path = $this->find_font($this->_font_name);
$specification->setFont($font_path);
$specification->annotation(0, 0, $this->_text);
return $specification;
}
private function find_font($name)
{
$expression = $name . ".*";
$font_file = file\find_file($expression, FONT_DIRECTORY);
return $font_file;
}
}
<?php
include_files(dirname(__FILE__) . "/operations");
function include_files($path)
{
$directory = opendir($path);
while ($file = readdir($directory))
{
if ($file[0] == '.')
{
continue;
}
$absolute = $path . "/" . $file;
if (is_dir($absolute))
{
include_files($absolute);
}
if (fnmatch("*.php", $absolute))
{
require_once $absolute;
}
}
}
<?php
namespace text;
require_once "translate_text_to_markup.php";
function translate_plain_text_file_to_markup($file_path)
{
$text = file_get_contents($file_path);
$markup = translate_text_to_markup($text);
return $markup;
}
<?php
namespace text;
function skip_extra_white_space($text, $ii, $char=" ")
{
while ($text[$ii+1] == $char)
{
$ii++;
}
return $ii;
}
<?php
namespace text;
require_once "skip_extra_white_space.php";
function translate_text_to_markup($text)
{
$markup = "<p>\n";
$paragraph_char_count = 0;
for ($ii = 0; $ii < strlen($text); $ii++)
{
$fragment = $text[$ii];
if ($text[$ii] == " " && isset($text[$ii+1]) && $text[$ii+1] == " ")
{
$fragment = " ";
$ii = skip_extra_white_space($text, $ii);
}
elseif ($text[$ii] == "\n")
{
if (isset($text[$ii+1]) && $text[$ii+1] == "\n")
{
$fragment = "\n</p>\n<p>\n";
$ii = skip_extra_white_space($text, $ii, "\n");
}
else
{
$fragment = "";
}
}
$markup .= $fragment;
}
$markup .= "\n</p>\n";
return $markup;
}