Вход Регистрация
Файл: outs/wideimage/Operation/RoundCorners.php
Строк: 129
<?php
    
/**
 * @author Gasper Kozak
 * @copyright 2007-2011

    This file is part of WideImage.
        
    WideImage is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 2.1 of the License, or
    (at your option) any later version.
        
    WideImage is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.
        
    You should have received a copy of the GNU Lesser General Public License
    along with WideImage; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

    * @package Internal/Operations
  **/
    
    /**
     * ApplyMask operation class
     * 
     * @package Internal/Operations
     */
    
class WideImage_Operation_RoundCorners
    
{
        
/**
         * @param WideImage_Image $image
         * @param int $radius
         * @param int $color
         * @param int $smoothness
         * @return WideImage_Image
         */
        
function execute($image$radius$color$smoothness$corners)
        {
            if (
$smoothness 1)
                
$sample_ratio 1;
            elseif (
$smoothness 16)
                
$sample_ratio 16;
            else
                
$sample_ratio $smoothness;
            
            
$corner WideImage::createTrueColorImage($radius $sample_ratio$radius $sample_ratio);
            if (
$color === null)
            {
                
imagepalettecopy($corner->getHandle(), $image->getHandle());
                
$bg_color $corner->allocateColor(000);
                
                
$corner->fill(00$bg_color);
                
$fg_color $corner->allocateColor(255255255);
                
$corner->getCanvas()->filledEllipse($radius $sample_ratio$radius $sample_ratio$radius $sample_ratio$radius $sample_ratio$fg_color);
                
$corner $corner->resize($radius$radius);
                
                
$result $image->asTrueColor();
                
                
$tc $result->getTransparentColor();
                if (
$tc == -1)
                {
                    
$tc $result->allocateColorAlpha(255255255127);
                    
imagecolortransparent($result->getHandle(), $tc);
                    
$result->setTransparentColor($tc);
                }
                
                if (
$corners WideImage::SIDE_TOP_LEFT || $corners WideImage::SIDE_LEFT || $corners WideImage::SIDE_TOP)
                    
$result $result->applyMask($corner, -1, -1);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_TOP_RIGHT || $corners WideImage::SIDE_TOP || $corners WideImage::SIDE_RIGHT)
                    
$result $result->applyMask($corner$result->getWidth() - $corner->getWidth() + 1, -1100);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_BOTTOM_RIGHT || $corners WideImage::SIDE_RIGHT || $corners WideImage::SIDE_BOTTOM)
                    
$result $result->applyMask($corner$result->getWidth() - $corner->getWidth() + 1$result->getHeight() - $corner->getHeight() + 1100);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_BOTTOM_LEFT || $corners WideImage::SIDE_LEFT || $corners WideImage::SIDE_BOTTOM)
                    
$result $result->applyMask($corner, -1$result->getHeight() - $corner->getHeight() + 1100);
                
                return 
$result;
            }
            else
            {
                
$bg_color $color;
                
                
$corner->fill(00$bg_color);
                
$fg_color $corner->allocateColorAlpha(127127127127);
                
$corner->getCanvas()->filledEllipse($radius $sample_ratio$radius $sample_ratio$radius $sample_ratio$radius $sample_ratio$fg_color);
                
$corner $corner->resize($radius$radius);
                
                
$result $image->copy();
                if (
$corners WideImage::SIDE_TOP_LEFT || $corners WideImage::SIDE_LEFT || $corners WideImage::SIDE_TOP)
                    
$result $result->merge($corner, -1, -1100);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_TOP_RIGHT || $corners WideImage::SIDE_TOP || $corners WideImage::SIDE_RIGHT)
                    
$result $result->merge($corner$result->getWidth() - $corner->getWidth() + 1, -1100);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_BOTTOM_RIGHT || $corners WideImage::SIDE_RIGHT || $corners WideImage::SIDE_BOTTOM)
                    
$result $result->merge($corner$result->getWidth() - $corner->getWidth() + 1$result->getHeight() - $corner->getHeight() + 1100);
                
                
$corner $corner->rotate(90);
                if (
$corners WideImage::SIDE_BOTTOM_LEFT || $corners WideImage::SIDE_LEFT || $corners WideImage::SIDE_BOTTOM)
                    
$result $result->merge($corner, -1$result->getHeight() - $corner->getHeight() + 1100);
                
                return 
$result;
            }
        }
    }
Онлайн: 2
Реклама