<?php /** * Does everything relevant to creating and drawing or filling an n-point polygon * * The routine for getting a polygon onto an image is generally to create one, * add all its points (The order in which the points are added determines how * the polygon will be drawn), set the image to draw on, and draw. * * @version 0.3 * @author Matt McClanahan <cardinal@dodds.net> * @package Imlib * @access public */ class ImlibPoly extends ImlibCliprect { /** * Resource id# of the image to draw on * * @access private */ var $im; /** * The resource id# of the current polygon * * @access private */ var $poly; /** * ImlibPoly constructor * * @access public */ function ImlibPoly() { $this->cliprect = 0; $this->cliprect_inuse = 0; $this->color = 0; $this->im = 0; $this->poly = 0; } /** * Add a point to the current polygon * * @param int X coordinate * @param int Y coordinate * @return bool False if there is no polygon set * @access public */ function add_point($x,$y) { if (!is_resource($this->poly)) return false; imlib_polygon_add_point($this->poly,$x,$y); } /** * Checks if the current polygon contains a given point * * @param int X coordinate * @param int Y coordinate * @return bool True if it does, false otherwise * @access public */ function contains_point($x,$y) { if (!is_resource($this->poly)) return false; return imlib_polygon_contains_point($this->poly,$x,$y); } /** * Draw the current polygon on the current image * * @param integer If true, the polygon will be drawn with the endpoints connected * @return bool False if there is no polygon or image set * @access public */ function draw($closed=1) { if (!is_resource($this->im) || !is_resource($this->poly)) return false; if (!$this->get_color($r,$g,$b,$a)) list($r,$g,$b,$a) = Array(255,255,255,255); if ($this->cliprect_inuse) imlib_image_draw_polygon($this->im,$this->poly,$closed,$r,$g,$b,$a, $this->get_cliprect_array()); else imlib_image_draw_polygon($this->im,$this->poly,$closed,$r,$g,$b,$a); } /** * Fill the current polygon on the current image * * @return bool False if there is no polygon or image set * @access public */ function fill() { if (!is_resource($this->im) || !is_resource($this->poly)) return false; if (!$this->get_color($r,$g,$b,$a)) list($r,$g,$b,$a) = Array(255,255,255,255); if ($this->cliprect_inuse) imlib_image_fill_polygon($this->im,$this->poly,$r,$g,$b,$a, $this->get_cliprect_array()); else imlib_image_fill_polygon($this->im,$this->poly,$r,$g,$b,$a); } /** * Free the current polygon * * @return bool False if there is no polygon or image set * @access public */ function free() { if (!is_resource($this->poly)) return false; imlib_polygon_free($this->poly); $this->poly = 0; } /** * Get the bounds of the polygon * * @param int Upper left X coordinate * @param int Upper left Y coordinate * @param int Lower right X coordinate * @param int Lower right Y coordinate * @return bool False if there is no polygon or image set * @access public */ function get_bounds(&$x1,&$y1,&$x2,&$y2) { if (!is_resource($this->poly)) return false; imlib_polygon_get_bounds($this->poly,&$x1,&$y1,&$x2,&$y2); } /** * Get the current image resource id# * * @return int Current image resource id# * @access public */ function get_image() { return $this->im; } /** * Create a new polygon * * @return int Resource id# of the new polygon * @access public */ function new_poly() { if (is_resource($this->poly)) return false; return $this->poly = imlib_polygon_new(); } /** * Set the image resource id# to draw on * * @param int Image resource id# * @access public */ function set_image($im) { $this->im = $im; } }; ?>