'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' ); private static $currentResource; public static function assignImageSourceCollection(&$imageSourceCollection) { self::$imageSourceCollection =& $imageSourceCollection; } public static function ifRunCollected() { return static::$runCollected; } public static function transparency(&$image_resource, $color = '#000000', $opacity = 100, $tMax = 127) { if (!is_array($color)) { $color = sscanf($color, '#%2x%2x%2x'); } /* $tMax = ($tMax == 127 || $tMax == 100) ? $tMax : 127; $transparency = $tMax - (($tMax / 100) * $opacity); */ $transparency = self::calculateTransparency($opacity, $tMax); $bgcolor = imagecolorallocatealpha($image_resource, $color[0], $color[1], $color[2], $transparency); imagecolortransparent($image_resource, $bgcolor); return $bgcolor; } public static function calculateTransparency($opacity = 100, $tMax = 127) { $tMax = ($tMax == 127 || $tMax == 100) ? $tMax : 127; $transparency = $tMax - (($tMax / 100) * $opacity); return $transparency; } public static function replaceSourceCollection($image_resource) { self::$imageSourceCollection = array(); self::addToSourceCollection($image_resource); } public static function addToSourceCollection($image_resource) { if (!is_array(self::$imageSourceCollection)) { self::$imageSourceCollection = array(); } self::$imageSourceCollection[] = array( 'resource' => $image_resource, 'width' => imagesx($image_resource), 'height' => imagesy($image_resource), 'name' => uniqid(mt_rand(), true) ); } public static function setFont($fontFile, $size, $color, $opacity) { self::$fontFile = $fontFile; self::$fontSize = $size; self::$fontColor = $color; self::$fontOpacity = $opacity; } public static function getFontFile() { return self::$fontFile; } public static function getFontSize() { return self::$fontSize; } public static function getFontColor() { return self::$fontColor; } public static function getFontOpacity() { return self::$fontOpacity; } public static function getElementPositions($xpos, $ypos, $image_data, $elementWidth, $elementHight) { switch ($xpos) { case phImaginator::POSITION_LEFT: $pos_x = 0; break; case phImaginator::POSITION_CENTER: $pos_x = ($image_data['width'] - $elementWidth) / 2; break; case phImaginator::POSITION_RIGHT: $pos_x = $image_data['width'] - $elementWidth; break; case $xpos >= 0: $pos_x = $xpos; break; case $xpos < 0: $pos_x = ($image_data['width'] - $elementWidth) + $xpos; break; } switch ($ypos) { case phImaginator::POSITION_TOP: $pos_y = 0; break; case phImaginator::POSITION_MIDDLE: $pos_y = ($image_data['height'] - $elementHight) / 2; break; case phImaginator::POSITION_BOTTOM: $pos_y = $image_data['height'] - $elementHight; break; case $ypos >= 0: $pos_y = $ypos; break; case $ypos < 0: $pos_y = ($image_data['height'] - $elementHight) + $ypos; break; } return array('x' => $pos_x, 'y' => $pos_y); } public static function computeElementSizes($image_data, $width, $height, $element_width = null, $element_height = null) { switch ($width) { case !$width: break; case phImaginator::FITTING_WIDTH: $computed_width = $image_data['width']; $computed_height = $element_height * ($image_data['width'] / $element_width); break; case phImaginator::FITTING_HEIGHT: $computed_height = $image_data['height']; $computed_width = $element_width * ($image_data['height'] / $element_height); break; case phImaginator::FITTING_BOTH: $computed_width = $image_data['width']; $computed_height = $image_data['height']; break; default: if (substr($width, -1, 1) == '%') { settype($width, "integer"); $computed_width = $image_data['width'] / 100 * $width; } else if (is_numeric($width)) { $computed_width = $width; } break; } if ($height) { if (substr($height, -1, 1) == '%') { settype($height, "integer"); $computed_height = $image_data['height'] / 100 * $height; } else if (is_numeric($height)) { $computed_height = $height; } } return array('w' => $computed_width, 'h' => $computed_height); } public static function getCachedData($name) { return self::$cachedData[$name]; } public static function cacheData($name, $data) { self::$cachedData[$name] = $data; } public static function getImageResource($resource_name) { return self::$imageResources[$resource_name]; } public static function setCurrentResource(&$image_data) { self::$currentResource =& $image_data; } public static function &getCurrentResource() { return self::$currentResource; } } ?>