!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/intervention/image/src/Intervention/Image/Gd/   drwxr-xr-x
Free 13.25 GB of 57.97 GB (22.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Font.php (7.42 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Intervention\Image\Gd;

use 
Intervention\Image\Exception\NotSupportedException;
use 
Intervention\Image\Image;

class 
Font extends \Intervention\Image\AbstractFont
{
    
/**
     * Get font size in points
     *
     * @return int
     */
    
protected function getPointSize()
    {
        return 
intval(ceil($this->size 0.75));
    }

    
/**
     * Filter function to access internal integer font values
     *
     * @return int
     */
    
private function getInternalFont()
    {
        
$internalfont is_null($this->file) ? $this->file;
        
$internalfont is_numeric($internalfont) ? $internalfont false;

        if ( ! 
in_array($internalfont, [12345])) {
            throw new 
NotSupportedException(
                
sprintf('Internal GD font (%s) not available. Use only 1-5.'$internalfont)
            );
        }

        return 
intval($internalfont);
    }

    
/**
     * Get width of an internal font character
     *
     * @return int
     */
    
private function getInternalFontWidth()
    {
        return 
$this->getInternalFont() + 4;
    }

    
/**
     * Get height of an internal font character
     *
     * @return int
     */
    
private function getInternalFontHeight()
    {
        switch (
$this->getInternalFont()) {
            case 
1:
                return 
8;

            case 
2:
                return 
14;

            case 
3:
                return 
14;

            case 
4:
                return 
16;

            case 
5:
                return 
16;
        }
    }

    
/**
     * Calculates bounding box of current font setting
     *
     * @return Array
     */
    
public function getBoxSize()
    {
        
$box = [];

        if (
$this->hasApplicableFontFile()) {

            
// get bounding box with angle 0
            
$box imagettfbbox($this->getPointSize(), 0$this->file$this->text);

            
// rotate points manually
            
if ($this->angle != 0) {

                
$angle pi() * $this->angle pi() * 360;

                for (
$i=0$i<4$i++) {
                    
$x $box[$i 2];
                    
$y $box[$i 1];
                    
$box[$i 2] = cos($angle) * $x sin($angle) * $y;
                    
$box[$i 1] = sin($angle) * $x cos($angle) * $y;
                }
            }

            
$box['width'] = intval(abs($box[4] - $box[0]));
            
$box['height'] = intval(abs($box[5] - $box[1]));

        } else {

            
// get current internal font size
            
$width $this->getInternalFontWidth();
            
$height $this->getInternalFontHeight();

            if (
strlen($this->text) == 0) {
                
// no text -> no boxsize
                
$box['width'] = 0;
                
$box['height'] = 0;
            } else {
                
// calculate boxsize
                
$box['width'] = strlen($this->text) * $width;
                
$box['height'] = $height;
            }
        }

        return 
$box;
    }

    
/**
     * Draws font to given image at given position
     *
     * @param  Image   $image
     * @param  int     $posx
     * @param  int     $posy
     * @return void
     */
    
public function applyToImage(Image $image$posx 0$posy 0)
    {
        
// parse text color
        
$color = new Color($this->color);

        if (
$this->hasApplicableFontFile()) {

            if (
$this->angle != || is_string($this->align) || is_string($this->valign)) {

                
$box $this->getBoxSize();

                
$align is_null($this->align) ? 'left' strtolower($this->align);
                
$valign is_null($this->valign) ? 'bottom' strtolower($this->valign);

                
// correction on position depending on v/h alignment
                
switch ($align.'-'.$valign) {

                    case 
'center-top':
                        
$posx $posx round(($box[6]+$box[4])/2);
                        
$posy $posy round(($box[7]+$box[5])/2);
                        break;

                    case 
'right-top':
                        
$posx $posx $box[4];
                        
$posy $posy $box[5];
                        break;

                    case 
'left-top':
                        
$posx $posx $box[6];
                        
$posy $posy $box[7];
                        break;

                    case 
'center-center':
                    case 
'center-middle':
                        
$posx $posx round(($box[0]+$box[4])/2);
                        
$posy $posy round(($box[1]+$box[5])/2);
                        break;

                    case 
'right-center':
                    case 
'right-middle':
                        
$posx $posx round(($box[2]+$box[4])/2);
                        
$posy $posy round(($box[3]+$box[5])/2);
                        break;

                    case 
'left-center':
                    case 
'left-middle':
                        
$posx $posx round(($box[0]+$box[6])/2);
                        
$posy $posy round(($box[1]+$box[7])/2);
                        break;

                    case 
'center-bottom':
                        
$posx $posx round(($box[0]+$box[2])/2);
                        
$posy $posy round(($box[1]+$box[3])/2);
                        break;

                    case 
'right-bottom':
                        
$posx $posx $box[2];
                        
$posy $posy $box[3];
                        break;

                    case 
'left-bottom':
                        
$posx $posx $box[0];
                        
$posy $posy $box[1];
                        break;
                }
            }

            
// enable alphablending for imagettftext
            
imagealphablending($image->getCore(), true);

            
// draw ttf text
            
imagettftext($image->getCore(), $this->getPointSize(), $this->angle$posx$posy$color->getInt(), $this->file$this->text);

        } else {

            
// get box size
            
$box $this->getBoxSize();
            
$width $box['width'];
            
$height $box['height'];

            
// internal font specific position corrections
            
if ($this->getInternalFont() == 1) {
                
$top_correction 1;
                
$bottom_correction 2;
            } elseif (
$this->getInternalFont() == 3) {
                
$top_correction 2;
                
$bottom_correction 4;
            } else {
                
$top_correction 3;
                
$bottom_correction 4;
            }

            
// x-position corrections for horizontal alignment
            
switch (strtolower($this->align)) {
                case 
'center':
                    
$posx ceil($posx - ($width 2));
                    break;

                case 
'right':
                    
$posx ceil($posx $width) + 1;
                    break;
            }

            
// y-position corrections for vertical alignment
            
switch (strtolower($this->valign)) {
                case 
'center':
                case 
'middle':
                    
$posy ceil($posy - ($height 2));
                    break;

                case 
'top':
                    
$posy ceil($posy $top_correction);
                    break;

                default:
                case 
'bottom':
                    
$posy round($posy $height $bottom_correction);
                    break;
            }

            
// draw text
            
imagestring($image->getCore(), $this->getInternalFont(), $posx$posy$this->text$color->getInt());
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0066 ]--