Файловый менеджер - Редактировать - /home/harasnat/.backupOvh/pfanner/pfanner.1334840217/modules/graphartichow/artichow/inc/Mark.class.php
Назад
<?php /* * This work is hereby released into the Public Domain. * To view a copy of the public domain dedication, * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. * */ require_once dirname(__FILE__)."/../Graph.class.php"; /** * Draw marks * * @package Artichow */ class awMark { /** * Circle mark * * @var int */ const CIRCLE = 1; /** * Square mark * * @var int */ const SQUARE = 2; /** * Triangle mark * * @var int */ const TRIANGLE = 3; /** * Inverted triangle mark * * @var int */ const INVERTED_TRIANGLE = 4; /** * Rhombus mark * * @var int */ const RHOMBUS = 5; /** * Cross (X) mark * * @var int */ const CROSS = 6; /** * Plus mark * * @var int */ const PLUS = 7; /** * Image mark * * @var int */ const IMAGE = 8; /** * Star mark * * @var int */ const STAR = 9; /** * Paperclip mark * * @var int */ const PAPERCLIP = 10; /** * Book mark * * @var int */ const BOOK = 11; /** * Must marks be hidden ? * * @var bool */ protected $hide; /** * Mark type * * @var int */ protected $type; /** * Mark size * * @var int */ protected $size = 8; /** * Fill mark * * @var Color, Gradient */ protected $fill; /** * Mark image * * @var Image */ protected $image; /** * To draw marks * * @var Driver */ protected $driver; /** * Move position from this vector * * @var Point */ protected $move; /** * Marks border * * @var Border */ public $border; /** * Build the mark */ public function __construct() { $this->fill = new awColor(255, 0, 0, 0); $this->border = new awBorder; $this->border->hide(); $this->move = new awPoint(0, 0); } /** * Change mark position * * @param int $x Add this interval to X coord * @param int $y Add this interval to Y coord */ public function move($x, $y) { $this->move = $this->move->move($x, $y); } /** * Hide marks ? * * @param bool $hide TRUE to hide marks, FALSE otherwise */ public function hide($hide = TRUE) { $this->hide = (bool)$hide; } /** * Show marks ? * * @param bool $show */ public function show($show = TRUE) { $this->hide = (bool)!$show; } /** * Change mark type * * @param int $size Size in pixels */ public function setSize($size) { $this->size = (int)$size; } /** * Change mark type * * @param int $type New mark type * @param int $size Mark size (can be NULL) */ public function setType($type, $size = NULL) { $this->type = (int)$type; if ($size !== NULL) { $this->setSize($size); } } /** * Fill the mark with a color or a gradient * * @param mixed $fill A color or a gradient */ public function setFill($fill) { if ($fill instanceof awColor or $fill instanceof awGradient) { $this->fill = $fill; } } /** * Set an image * Only for awMark::IMAGE type. * * @param Image An image */ public function setImage(awImage $image) { $this->image = $image; } /** * Draw the mark * * @param awDriver $driver * @param awPoint $point Mark center */ public function draw(awDriver $driver, awPoint $point) { // Hide marks ? if ($this->hide) { return; } // Check if we can print marks if ($this->type !== NULL) { $this->driver = $driver; $realPoint = $this->move->move($point->x, $point->y); switch($this->type) { case awMark::CIRCLE : $this->drawCircle($realPoint); break; case awMark::SQUARE : $this->drawSquare($realPoint); break; case awMark::TRIANGLE : $this->drawTriangle($realPoint); break; case awMark::INVERTED_TRIANGLE : $this->drawTriangle($realPoint, TRUE); break; case awMark::RHOMBUS : $this->drawRhombus($realPoint); break; case awMark::CROSS : $this->drawCross($realPoint); break; case awMark::PLUS : $this->drawCross($realPoint, TRUE); break; case awMark::IMAGE : $this->drawImage($realPoint); break; case awMark::STAR : $this->changeType('star'); $this->draw($driver, $point); break; case awMark::PAPERCLIP : $this->changeType('paperclip'); $this->draw($driver, $point); break; case awMark::BOOK : $this->changeType('book'); $this->draw($driver, $point); break; } } } protected function changeType($image) { $this->setType(awMARK::IMAGE); $this->setImage(new awFileImage(ARTICHOW_IMAGE.DIRECTORY_SEPARATOR.$image.'.png')); } protected function drawCircle(awPoint $point) { $this->driver->filledEllipse( $this->fill, $point, $this->size, $this->size ); $this->border->ellipse( $this->driver, $point, $this->size, $this->size ); } protected function drawSquare(awPoint $point) { list($x, $y) = $point->getLocation(); $x1 = (int)($x - $this->size / 2); $x2 = $x1 + $this->size; $y1 = (int)($y - $this->size / 2); $y2 = $y1 + $this->size; $this->border->rectangle($this->driver, new awPoint($x1, $y1), new awPoint($x2, $y2)); $size = $this->border->visible() ? 1 : 0; $this->driver->filledRectangle( $this->fill, new awLine( new awPoint($x1 + $size, $y1 + $size), new awPoint($x2 - $size, $y2 - $size) ) ); } protected function drawTriangle(awPoint $point, $inverted = FALSE) { list($x, $y) = $point->getLocation(); $size = $this->size; $triangle = new awPolygon; // Set default style and thickness $triangle->setStyle(awPolygon::SOLID); $triangle->setThickness(1); if ($inverted === TRUE) { // Bottom of the triangle $triangle->append(new awPoint($x, $y + $size / sqrt(3))); // Upper left corner $triangle->append(new awPoint($x - $size / 2, $y - $size / (2 * sqrt(3)))); // Upper right corner $triangle->append(new awPoint($x + $size / 2, $y - $size / (2 * sqrt(3)))); } else { // Top of the triangle $triangle->append(new awPoint($x, $y - $size / sqrt(3))); // Lower left corner $triangle->append(new awPoint($x - $size / 2, $y + $size / (2 * sqrt(3)))); // Lower right corner $triangle->append(new awPoint($x + $size / 2, $y + $size / (2 * sqrt(3)))); } $this->driver->filledPolygon($this->fill, $triangle); if ($this->border->visible()) { $this->border->polygon($this->driver, $triangle); } } protected function drawRhombus(awPoint $point) { list($x, $y) = $point->getLocation(); $rhombus = new awPolygon; // Set default style and thickness $rhombus->setStyle(awPolygon::SOLID); $rhombus->setThickness(1); // Top of the rhombus $rhombus->append(new awPoint($x, $y - $this->size / 2)); // Right of the rhombus $rhombus->append(new awPoint($x + $this->size / 2, $y)); // Bottom of the rhombus $rhombus->append(new awPoint($x, $y + $this->size / 2)); // Left of the rhombus $rhombus->append(new awPoint($x - $this->size / 2, $y)); $this->driver->filledPolygon($this->fill, $rhombus); if ($this->border->visible()) { $this->border->polygon($this->driver, $rhombus); } } protected function drawCross(awPoint $point, $upright = FALSE) { list($x, $y) = $point->getLocation(); if ($upright === TRUE) { $x11 = (int)($x); $y11 = (int)($y - $this->size / 2); $x12 = (int)($x); $y12 = (int)($y + $this->size / 2); $y21 = (int)($y); $y22 = (int)($y); } else { $x11 = (int)($x - $this->size / 2); $y11 = (int)($y + $this->size / 2); $x12 = (int)($x + $this->size / 2); $y12 = (int)($y - $this->size / 2); $y21 = (int)($y - $this->size / 2); $y22 = (int)($y + $this->size / 2); } $x21 = (int)($x - $this->size / 2); $x22 = (int)($x + $this->size / 2); $this->driver->line( $this->fill, new awLine( new awPoint($x11, $y11), new awPoint($x12, $y12) ) ); $this->driver->line( $this->fill, new awLine( new awPoint($x21, $y21), new awPoint($x22, $y22) ) ); } protected function drawImage(awPoint $point) { if ($this->image instanceof awImage) { $width = $this->image->width; $height = $this->image->height; list($x, $y) = $point->getLocation(); $x1 = (int)($x - $width / 2); $x2 = $x1 + $width; $y1 = (int)($y - $width / 2); $y2 = $y1 + $height; $this->border->rectangle($this->driver, new awPoint($x1 - 1, $y1 - 1), new awPoint($x2 + 1, $y2 + 1)); $this->driver->copyImage($this->image, new awPoint($x1, $y1), new awPoint($x2, $y2)); } } } registerClass('Mark');
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.02 |
proxy
|
phpinfo
|
Настройка