blob: ad0a62d667f73494cd1a9c651aa29a1cb9d9bd4f [file] [log] [blame]
<?php
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// most of this was taken from Troy's documentation at
// http://sysadm.eos.ncsu.edu/site/pages/phpdev/gd-graphics
$face = "fonts/arialbd.ttf";
function vectordist($a, $b){
if($a < 0 && $b < 0) return abs($a - $b);
else if( $a < 0 || $b < 0) return abs($a) + abs($b);
else return abs($a - $b);
}
// create a filename safe version of the provided text for the button
$text = $_GET["text"];
$lowertext = strtolower($_GET["text"]);
$pattern = "/\W/";
$replacement = "";
$lowertext = preg_replace($pattern, $replacement, $lowertext);
//if($_GET["style"] == "off") $lowertext .= "_off";
//else $lowertext .= "_on";
// these headers are needed so the browser knows what it is getting
header('Content-Type: image/gif');
header('Content-Disposition: inline; filename=$lowertext.gif');
// calculate the size the text will fill
$size = imagettfbbox( 14, 90, $face, $text);
$height = vectordist($size[1], $size[3]);
$width = vectordist($size[0], $size[4]) + 2;
#print "<pre>\n";
#print_r($size);
#print "</pre>\nwidth - $width<br>height - $height<br>\n";
// create an "image resource" big enough to show the text and have some padding.
// set the background color, the text color, and make the background color the
// transparency color.
$image = imagecreate($width, $height);
#imagecolorallocate($image, 0xDD, 0xDD, 0xDD);
#imagefill($image, 0, 0, 0xDDDDDD);
$background = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$textcolor = imagecolorallocate($image, 0, 0, 0);
imagecolortransparent($image, $background);
// this line inserts the text into the image, I have noticed that the font sizes
// that GD uses do not really match point sizes. 11 below roughly matches 15 points.
// 90 is the angle the text is rotated at, 5 is the horizontal displacement (right) of the text,
// $height + 2 is the vertical displacement (down) of the text.
imagettftext( $image, 13, 90, 13, $height - 5, $textcolor, $face, $text);
// output the image, destroy the resource (not really needed in this case), and terminate
imagegif($image);
imagedestroy($image);
?>