forked from extern/egroupware
89 lines
2.9 KiB
PHP
89 lines
2.9 KiB
PHP
|
<?php
|
||
|
/**************************************************************************\
|
||
|
* eGroupWare - calendar: rounded corners *
|
||
|
* http://www.egroupware.org *
|
||
|
* Written by RalfBecker@outdoor-training.de *
|
||
|
* -------------------------------------------- *
|
||
|
* This program is free software; you can redistribute it and/or modify it *
|
||
|
* under the terms of the GNU General Public License as published by the *
|
||
|
* Free Software Foundation; either version 2 of the License, or (at your *
|
||
|
* option) any later version. *
|
||
|
\**************************************************************************/
|
||
|
|
||
|
/* $Id$ */
|
||
|
|
||
|
// some constanst for pre php4.3
|
||
|
if (!defined('PHP_SHLIB_SUFFIX'))
|
||
|
{
|
||
|
define('PHP_SHLIB_SUFFIX',strtoupper(substr(PHP_OS, 0,3)) == 'WIN' ? 'dll' : 'so');
|
||
|
}
|
||
|
if (!defined('PHP_SHLIB_PREFIX'))
|
||
|
{
|
||
|
define('PHP_SHLIB_PREFIX',PHP_SHLIB_SUFFIX == 'dll' ? 'php_' : '');
|
||
|
}
|
||
|
|
||
|
if (!extension_loaded('gd') && !@dl(PHP_SHLIB_PREFIX.'gd.'.PHP_SHLIB_SUFFIX))
|
||
|
{
|
||
|
die("Can't load the needed php-extension 'gd' !!!");
|
||
|
}
|
||
|
|
||
|
foreach(array('width'=>-20,'height'=>40,'border'=>1,'color'=>'000080','bgcolor'=>'0000FF') as $name => $default)
|
||
|
{
|
||
|
$$name = isset($_GET[$name]) ? $_GET[$name] : $default;
|
||
|
}
|
||
|
|
||
|
$image = @imagecreate(abs($width),abs($height))
|
||
|
or die("Cannot Initialize new GD image stream");
|
||
|
|
||
|
$white = imagecolorallocate($image, 254, 254, 254);
|
||
|
imagecolortransparent($image, $white);
|
||
|
|
||
|
foreach(array('color','bgcolor') as $name)
|
||
|
{
|
||
|
preg_match('/^#?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/',$$name,$rgb) or
|
||
|
die("Wrong value '".$$name."' for $name, should be something like #80FFFF' !!!");
|
||
|
|
||
|
$$name = imagecolorallocate($image,hexdec($rgb[1]),hexdec($rgb[2]),hexdec($rgb[3]));
|
||
|
}
|
||
|
$radius = min(abs($width),abs($height));
|
||
|
$center_x = $width > 0 ? abs($width)-$radius-1 : $radius;
|
||
|
$center_y = $height < 0 ? abs($height)-$radius-1 : $radius;
|
||
|
//echo "width=$width, height=$height => radius=$radius: center_x=$center_x, center_y=$center_y";
|
||
|
if ($border) imagefilledellipse($image,$center_x,$center_y,2*$radius,2*$radius,$color);
|
||
|
imagefilledellipse($image,$center_x,$center_y,2*($radius-$border),2*($radius-$border),$bgcolor);
|
||
|
|
||
|
if (abs($height) > abs($width))
|
||
|
{
|
||
|
if ($height < 0) // lower corners
|
||
|
{
|
||
|
$y1 = 0;
|
||
|
$y2 = abs($height)-$radius-1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$y1 = $radius;
|
||
|
$y2 = abs($height)-1;
|
||
|
}
|
||
|
imagefilledrectangle($image,0,$y1,abs($width),$y2,$bgcolor);
|
||
|
if ($border)
|
||
|
{
|
||
|
$x1 = $width < 0 ? 0 : abs($width)-$border;
|
||
|
$x2 = $width < 0 ? $border-1 : abs($width)-1;
|
||
|
imagefilledrectangle($image,$x1,$y1,$x2,$y2,$color);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
session_cache_limiter('public'); // allow caching
|
||
|
if (function_exists('imagegif'))
|
||
|
{
|
||
|
header("Content-type: image/gif");
|
||
|
imagegif($image);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
header("Content-type: image/png");
|
||
|
imagepng($image);
|
||
|
}
|
||
|
imagedestroy($image);
|
||
|
?>
|