public static function createDrawingObject($drawingObjectName)
{
$editorName = self::detectAvailableEditor();
$p = func_get_args();
if ('Imagick' === $editorName) {
switch ($drawingObjectName) {
case 'CubicBezier':
return new ImagickCubicBezier($p[1], $p[2], $p[3], $p[4], array_key_exists(5, $p) ? $p[5] : '#000000');
case 'Ellipse':
return new ImagickEllipse($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : array(0, 0), array_key_exists(4, $p) ? $p[4] : 1, array_key_exists(5, $p) ? $p[5] : '#000000', array_key_exists(6, $p) ? $p[6] : '#FFFFFF');
case 'Line':
return new ImagickLine($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : 1, array_key_exists(4, $p) ? $p[4] : '#000000');
case 'Polygon':
return new ImagickPolygon($p[1], array_key_exists(2, $p) ? $p[2] : 1, array_key_exists(3, $p) ? $p[3] : '#000000', array_key_exists(4, $p) ? $p[4] : '#FFFFFF');
case 'Rectangle':
return new ImagickRectangle($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : array(0, 0), array_key_exists(4, $p) ? $p[4] : 1, array_key_exists(5, $p) ? $p[5] : '#000000', array_key_exists(6, $p) ? $p[6] : '#FFFFFF');
case 'QuadraticBezier':
return new ImagickQuadraticBezier($p[1], $p[2], $p[3], array_key_exists(4, $p) ? $p[4] : '#000000');
}
throw new \Exception('Invalid drawing object name.');
} else {
switch ($drawingObjectName) {
case 'CubicBezier':
return new GdCubicBezier($p[1], $p[2], $p[3], $p[4], array_key_exists(5, $p) ? $p[5] : '#000000');
case 'Ellipse':
return new GdEllipse($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : array(0, 0), array_key_exists(4, $p) ? $p[4] : 1, array_key_exists(5, $p) ? $p[5] : '#000000', array_key_exists(6, $p) ? $p[6] : '#FFFFFF');
case 'Line':
return new GdLine($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : 1, array_key_exists(4, $p) ? $p[4] : '#000000');
case 'Polygon':
return new GdPolygon($p[1], array_key_exists(2, $p) ? $p[2] : 1, array_key_exists(3, $p) ? $p[3] : '#000000', array_key_exists(4, $p) ? $p[4] : '#FFFFFF');
case 'Rectangle':
return new GdRectangle($p[1], $p[2], array_key_exists(3, $p) ? $p[3] : array(0, 0), array_key_exists(4, $p) ? $p[4] : 1, array_key_exists(5, $p) ? $p[5] : '#000000', array_key_exists(6, $p) ? $p[6] : '#FFFFFF');
case 'QuadraticBezier':
return new GdQuadraticBezier($p[1], $p[2], $p[3], array_key_exists(4, $p) ? $p[4] : '#000000');
}
throw new \Exception('Invalid drawing object name.');
}
}