mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-27 01:39:22 +02:00
347 lines
8.7 KiB
PHP
347 lines
8.7 KiB
PHP
<?PHP
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
/**
|
|
* @author Christopher Eklund
|
|
* @copyright MadPHP.org 2009
|
|
* @version 2.4.5
|
|
**/
|
|
class MadGD
|
|
{
|
|
public $textConfig = array( 'font' => 2, 'size' => 9, 'color' => 'FFFFFF', 'shadow' => true );
|
|
public $textBold = array( 'font' => 3, 'size' => 9, 'color' => 'FFFFFF', 'shadow' => true );
|
|
public $testMode = false;
|
|
public $background = null;
|
|
public $extension = null;
|
|
public $instance = null;
|
|
|
|
public $equipment = array(
|
|
'pos' => array(
|
|
'x' => 339,
|
|
'y' => 3
|
|
),
|
|
'x' => array( ),
|
|
'y' => array( )
|
|
);
|
|
|
|
public $x = 0;
|
|
public $y = 0;
|
|
public $l = 0;
|
|
|
|
|
|
/**
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function __construct( $path = null )
|
|
{
|
|
if ( $path != null )
|
|
{
|
|
$this->setBackground( $path );
|
|
}
|
|
$this->setEquipments( );
|
|
}
|
|
|
|
|
|
public function save($player_id)
|
|
{
|
|
imagepng($this->instance, SIGNATURES_CACHE . $player_id . '.png');
|
|
imagedestroy($this->instance);
|
|
}
|
|
/**
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
private function setEquipments( )
|
|
{
|
|
$equipments = array(
|
|
'amulet' => array( 1, 15 ),
|
|
'helmet' => array( 38, 1 ),
|
|
'backpack' => array( 76, 15 ),
|
|
'lefthand' => array( 1, 52 ),
|
|
'armor' => array( 38, 38 ),
|
|
'righthand' => array( 75, 52 ),
|
|
'ring' => array( 1, 89 ),
|
|
'legs' => array( 38, 75 ),
|
|
'ammunition' => array( 75, 89 ),
|
|
'boots' => array( 38, 112 )
|
|
);
|
|
|
|
foreach( $equipments as $eq => $positions )
|
|
{
|
|
$this->equipment['x'][$eq] = $this->equipment['pos']['x'] + $positions[0];
|
|
$this->equipment['y'][$eq] = $this->equipment['pos']['y'] + $positions[1];
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $path
|
|
* @access public
|
|
* @return instance
|
|
**/
|
|
public function setBackground( $path )
|
|
{
|
|
$this->background = $path;
|
|
$this->extension = strtolower( pathinfo( $path, PATHINFO_EXTENSION ) );
|
|
|
|
switch( $this->extension )
|
|
{
|
|
case MADGD_PNG:
|
|
$this->instance = @imagecreatefrompng( $this->background );
|
|
break;
|
|
|
|
case MADGD_GIF:
|
|
$this->instance = @imagecreatefromgif( $this->background );
|
|
break;
|
|
|
|
case MADGD_JPG:
|
|
case MADGD_JPEG:
|
|
$this->instance = @imagecreatefromjpeg( $this->background );
|
|
break;
|
|
}
|
|
return $this->instance;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $image
|
|
* @param integer $x
|
|
* @param integer $y
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function setEquipmentBackground( $image, $x = false, $y = false )
|
|
{
|
|
if ( $x )
|
|
{
|
|
$this->equipment['pos']['x'] = $x;
|
|
}
|
|
if ( $y )
|
|
{
|
|
$this->equipment['pos']['y'] = $y;
|
|
}
|
|
|
|
$this->setEquipments( );
|
|
return $this->addIcon( $image )->setPosition( $this->equipment['pos']['x'], $this->equipment['pos']['y'] );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string/int $regular
|
|
* @param string/int $bold
|
|
* @param int $size
|
|
* @param string $color
|
|
* @param boolean $shadow
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function setDefaultStyle( $regular = 2, $bold = 3, $size = 9, $color = 'FFFFFF', $shadow = true )
|
|
{
|
|
$this->textConfig = array( 'font' => $regular, 'size' => $size, 'color' => $color, 'shadow' => $shadow );
|
|
$this->textBold = array( 'font' => $bold, 'size' => $size, 'color' => $color, 'shadow' => $shadow );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $text
|
|
* @param array $style
|
|
* @access public
|
|
* @return instance
|
|
**/
|
|
public function addText( $text, $style = array( ) )
|
|
{
|
|
foreach( $this->textConfig as $key => $value )
|
|
{
|
|
if ( !array_key_exists( $key, $style ) )
|
|
{
|
|
$style[$key] = $value;
|
|
}
|
|
}
|
|
return new MadGDText( $this, array( $text, $style ) );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $icon
|
|
* @access public
|
|
* @return instance
|
|
**/
|
|
public function addIcon( $icon, $width = null, $height = null )
|
|
{
|
|
return new MadGDIcon( $this, $icon, $width, $height );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $hex
|
|
* @param boolean/int $index
|
|
* @access public
|
|
* @return array $hex
|
|
**/
|
|
public function HexRGB( $hex, $index = false )
|
|
{
|
|
if ( !is_array( $hex ) )
|
|
{
|
|
$hex = preg_replace( '/#/', '', $hex );
|
|
if ( strlen( $hex ) == 6 )
|
|
{
|
|
$hex = array(
|
|
hexdec( substr( $hex, 0, 2 ) ),
|
|
hexdec( substr( $hex, 2, 2 ) ),
|
|
hexdec( substr( $hex, 4, 2 ) )
|
|
);
|
|
}
|
|
}
|
|
return ( in_array( $index, array( 0, 1, 2 ) ) ? $hex[$index] : $hex );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $path
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function display( $path = false )
|
|
{
|
|
if ( !$this->testMode )
|
|
{
|
|
if ( !$path )
|
|
{
|
|
header( 'Content-Type: image/png' );
|
|
imagepng( $this->instance, '', 9 );
|
|
}
|
|
else
|
|
{
|
|
imagepng( $this->instance, $path, 9 );
|
|
}
|
|
imagedestroy( $this->instance );
|
|
unset( $this->instance );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
class MadGDText
|
|
{
|
|
private $parent = null;
|
|
private $text = null;
|
|
private $style = array( );
|
|
|
|
/**
|
|
* @param instance $parent
|
|
* @param array $object
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function __construct( $parent, $object )
|
|
{
|
|
$this->parent = $parent;
|
|
$this->text = $object[0];
|
|
$this->style = $object[1];
|
|
}
|
|
|
|
|
|
/**
|
|
* @param int $x
|
|
* @param int $y
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function setPosition( $x = MADGD_STACK, $y = 5 )
|
|
{
|
|
$textSize = ( !is_int( $this->style['font'] ) ? imagettfbbox( $this->style['size'], 0, $this->style['font'], $this->text ) : null );
|
|
|
|
$this->parent->x = ( $x === MADGD_STACK ? $this->parent->x + $this->parent->l + $y : $x );
|
|
$this->parent->y = ( $x === MADGD_STACK ? $this->parent->y : $y );
|
|
$this->parent->l = ( is_int( $this->style['font'] ) ? imagefontwidth( $this->style['font'] ) * strlen( $this->text ) : $textSize[2] );
|
|
|
|
if ( is_int( $this->style['font'] ) )
|
|
{
|
|
if ( $this->style['shadow'] )
|
|
{
|
|
imagestring( $this->parent->instance, $this->style['font'], $this->parent->x + 1, $this->parent->y + 1, $this->text, imagecolorallocate( $this->parent->instance, 0, 0, 0 ) );
|
|
}
|
|
imagestring( $this->parent->instance, $this->style['font'], $this->parent->x, $this->parent->y, $this->text, imagecolorallocate( $this->parent->instance, $this->parent->HexRGB( $this->style['color'], 0 ), $this->parent->HexRGB( $this->style['color'], 1 ), $this->parent->HexRGB( $this->style['color'], 2 ) ) );
|
|
}
|
|
else
|
|
{
|
|
if ( $this->style['shadow'] )
|
|
{
|
|
imagettftext( $this->parent->instance, $this->style['size'], 0, $this->parent->x + 1, $this->parent->y + 11, imagecolorallocate( $this->parent->instance, 0, 0, 0 ), $this->style['font'], $this->text );
|
|
}
|
|
imagettftext( $this->parent->instance, $this->style['size'], 0, $this->parent->x, $this->parent->y + 10, imagecolorallocate( $this->parent->instance, $this->parent->HexRGB( $this->style['color'], 0 ), $this->parent->HexRGB( $this->style['color'], 1 ), $this->parent->HexRGB( $this->style['color'], 2 ) ), $this->style['font'], $this->text );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
class MadGDIcon
|
|
{
|
|
public $extension = null;
|
|
public $instance = null;
|
|
public $parent = null;
|
|
public $height = null;
|
|
public $width = null;
|
|
public $icon = null;
|
|
|
|
/**
|
|
* @param instance $parent
|
|
* @param string $icon
|
|
* @param int $width
|
|
* @param int $height
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function __construct( $parent, $icon, $width, $height )
|
|
{
|
|
$this->parent = $parent;
|
|
$this->height = $height;
|
|
$this->width = $width;
|
|
$this->icon = $icon;
|
|
$this->extension = strtolower( pathinfo( $this->icon, PATHINFO_EXTENSION ) );
|
|
}
|
|
|
|
|
|
/**
|
|
* @param int $x
|
|
* @param int $y
|
|
* @access public
|
|
* @return null
|
|
**/
|
|
public function setPosition( $x = MADGD_STACK, $y = 5 )
|
|
{
|
|
$this->parent->x = ( $x === MADGD_STACK ? $this->parent->x + $this->parent->l + $y : $x );
|
|
$this->parent->y = ( $x === MADGD_STACK ? $this->parent->y : $y );
|
|
|
|
list( $imageWidth, $imageHeight ) = getimagesize( $this->icon );
|
|
$this->parent->l = $imageWidth;
|
|
|
|
switch( $this->extension )
|
|
{
|
|
case MADGD_PNG:
|
|
$this->instance = @imagecreatefrompng( $this->icon );
|
|
break;
|
|
|
|
case MADGD_GIF:
|
|
$this->instance = @imagecreatefromgif( $this->icon );
|
|
break;
|
|
|
|
case MADGD_JPG:
|
|
case MADGD_JPEG:
|
|
$this->instance = @imagecreatefromjpeg( $this->icon );
|
|
break;
|
|
}
|
|
return imagecopyresampled( $this->parent->instance, $this->instance, $this->parent->x, $this->parent->y,
|
|
0, 0, ( $this->width != null ? (int)$this->width : (int)$imageWidth ), ( $this->height != null ?
|
|
(int)$this->height : (int)$imageHeight ), (int)$imageWidth, (int)$imageHeight );
|
|
}
|
|
}
|
|
|
|
define( 'MADGD_PNG', 'png' );
|
|
define( 'MADGD_JPG', 'jpg' );
|
|
define( 'MADGD_JPEG', 'jpeg' );
|
|
define( 'MADGD_GIF', 'gif' );
|
|
define( 'MADGD_STACK', 'stack' );
|
|
define( 'X_SLOT', 'X_SLOT_' );
|
|
define( 'Y_SLOT', 'Y_SLOT_' );
|