linea21-externals
[ class tree: linea21-externals ] [ index: linea21-externals ] [ all elements ]

Source for file Grid.class.php

Documentation is available at Grid.class.php

  1. <?php
  2. /*
  3.  * This work is hereby released into the Public Domain.
  4.  * To view a copy of the public domain dedication,
  5.  * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to
  6.  * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
  7.  *
  8.  */
  9.  
  10. require_once dirname(__FILE__)."/../Graph.class.php";
  11.  
  12. /**
  13.  * Grid
  14.  *
  15.  * @package linea21.externals
  16.  * @subpackage artichow
  17.  */
  18. class awGrid {
  19.  
  20.   /**
  21.    * Vertical lines of the grid
  22.    *
  23.    * @var array 
  24.    */
  25.   private $xgrid array();
  26.  
  27.   /**
  28.    * Horizontal lines of the grid
  29.    *
  30.    * @var array 
  31.    */
  32.   private $ygrid array();
  33.  
  34.   /**
  35.    * Is the component grid hidden ?
  36.    *
  37.    * @var bool 
  38.    */
  39.   private $hide FALSE;
  40.  
  41.   /**
  42.    * Are horizontal lines hidden ?
  43.    *
  44.    * @var bool 
  45.    */
  46.   private $hideHorizontal FALSE;
  47.  
  48.   /**
  49.    * Are vertical lines hidden ?
  50.    *
  51.    * @var bool 
  52.    */
  53.   private $hideVertical FALSE;
  54.  
  55.   /**
  56.    * Grid color
  57.    *
  58.    * @var Color 
  59.    */
  60.   private $color;
  61.  
  62.   /**
  63.    * Grid space
  64.    *
  65.    * @var int 
  66.    */
  67.   private $space;
  68.  
  69.   /**
  70.    * Line type
  71.    *
  72.    * @var int 
  73.    */
  74.   private $type awLine::SOLID;
  75.  
  76.   /**
  77.    * Grid interval
  78.    *
  79.    * @var int 
  80.    */
  81.   private $interval array(11);
  82.  
  83.   /**
  84.    * Grid background color
  85.    *
  86.    * @var Color 
  87.    */
  88.   private $background;
  89.  
  90.   /**
  91.    * Build the factory
  92.    */
  93.   public function __construct({
  94.  
  95.     // Set a grid default color
  96.     $this->color new awColor(210210210);
  97.     $this->background new awColor(255255255100);
  98.  
  99.   }
  100.  
  101.   /**
  102.    * Hide grid ?
  103.    *
  104.    * @param bool $hide 
  105.    */
  106.   public function hide($hide TRUE{
  107.     $this->hide = (bool)$hide;
  108.   }
  109.  
  110.   /**
  111.    * Hide horizontal lines ?
  112.    *
  113.    * @param bool $hideHorizontal 
  114.    */
  115.   public function hideHorizontal($hide TRUE{
  116.     $this->hideHorizontal = (bool)$hide;
  117.   }
  118.  
  119.   /**
  120.    * Hide vertical lines ?
  121.    *
  122.    * @param bool $hideVertical 
  123.    */
  124.   public function hideVertical($hide TRUE{
  125.     $this->hideVertical = (bool)$hide;
  126.   }
  127.  
  128.   /**
  129.    * Change grid color
  130.    *
  131.    * @param awColor $color 
  132.    */
  133.   public function setColor(awColor $color{
  134.     $this->color $color;
  135.   }
  136.  
  137.   /**
  138.    * Remove grid background
  139.    */
  140.   public function setNoBackground({
  141.     $this->background NULL;
  142.   }
  143.  
  144.   /**
  145.    * Change grid background color
  146.    *
  147.    * @param awColor $color 
  148.    */
  149.   public function setBackgroundColor(awColor $color{
  150.     $this->background $color;
  151.   }
  152.  
  153.   /**
  154.    * Change line type
  155.    *
  156.    * @param int $type 
  157.    */
  158.   public function setType($type{
  159.     $this->type = (int)$type;
  160.   }
  161.  
  162.   /**
  163.    * Change grid interval
  164.    *
  165.    * @param int $hInterval 
  166.    * @param int $vInterval 
  167.    */
  168.   public function setInterval($hInterval$vInterval{
  169.     $this->interval array((int)$hInterval(int)$vInterval);
  170.   }
  171.  
  172.   /**
  173.    * Set grid space
  174.    *
  175.    * @param int $left Left space in pixels
  176.    * @param int $right Right space in pixels
  177.    * @param int $top Top space in pixels
  178.    * @param int $bottom Bottom space in pixels
  179.    */
  180.   public function setSpace($left$right$top$bottom{
  181.     $this->space array((int)$left(int)$right(int)$top(int)$bottom);
  182.   }
  183.  
  184.   /**
  185.    * Change the current grid
  186.    *
  187.    * @param array $xgrid Vertical lines
  188.    * @param array $ygrid Horizontal lines
  189.    */
  190.   public function setGrid($xgrid$ygrid{
  191.  
  192.     if(empty($this->xgrid)) {
  193.       $this->xgrid $xgrid;
  194.     }
  195.     if(empty($this->ygrid)) {
  196.       $this->ygrid $ygrid;
  197.     }
  198.  
  199.   }
  200.  
  201.   /**
  202.    * Draw grids
  203.    *
  204.    * @param awDriver $driver A driver object
  205.    * @param int $x1 
  206.    * @param int $y1 
  207.    * @param int $x2 
  208.    * @param int $y2 
  209.    */
  210.   public function draw(awDriver $driver$x1$y1$x2$y2{
  211.  
  212.     if($this->background instanceof awColor{
  213.  
  214.       // Draw background color
  215.       $driver->filledRectangle(
  216.       $this->background,
  217.       awLine::build($x1$y1$x2$y2)
  218.       );
  219.           
  220.     }
  221.  
  222.     if($this->hide === FALSE{
  223.           
  224.       $this->drawGrid(
  225.       $driver,
  226.       $this->color,
  227.       $this->hideVertical array($this->xgrid,
  228.       $this->hideHorizontal array($this->ygrid,
  229.       $x1$y1$x2$y2,
  230.       $this->type,
  231.       $this->space,
  232.       $this->interval[0],
  233.       $this->interval[1]
  234.       );
  235.           
  236.     }
  237.  
  238.   }
  239.  
  240.   private function drawGrid(
  241.   awDriver $driverawColor $color,
  242.   $nx$ny$x1$y1$x2$y2,
  243.   $type$space$hInterval$vInterval
  244.   {
  245.  
  246.     list($left$right$top$bottom$space;
  247.  
  248.     $width $x2 $x1 $left $right;
  249.     $height $y2 $y1 $top $bottom;
  250.  
  251.     foreach($nx as $key => $n{
  252.  
  253.       if(($key $vInterval=== 0{
  254.  
  255.         $pos = (int)round($x1 $left $n $width);
  256.         $driver->line(
  257.         $color,
  258.         new awLine(
  259.         new awPoint($pos$y1),
  260.         new awPoint($pos$y2),
  261.         $type
  262.         )
  263.         );
  264.  
  265.       }
  266.  
  267.     }
  268.  
  269.     foreach($ny as $key => $n{
  270.  
  271.       if(($key $hInterval=== 0{
  272.  
  273.         $pos = (int)round($y1 $top $n $height);
  274.         $driver->line(
  275.         $color,
  276.         new awLine(
  277.         new awPoint($x1$pos),
  278.         new awPoint($x2$pos),
  279.         $type
  280.         )
  281.         );
  282.  
  283.       }
  284.  
  285.     }
  286.  
  287.   }
  288.  
  289. }
  290.  
  291. registerClass('Grid');
  292. ?>

Documentation generated on Thu, 03 May 2012 15:05:00 +0200 by phpDocumentor 1.4.1