[ Index ]
 

Code source de jpGraph 2.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/src/ -> jpgraph_iconplot.php (source)

   1  <?php
   2  //=======================================================================
   3  // File:    JPGRAPH_ICONPLOT.PHP
   4  // Description:    PHP4 Graph Plotting library. Extension module.
   5  // Created:     2004-02-18
   6  // Ver:        $Id: jpgraph_iconplot.php 781 2006-10-08 08:07:47Z ljp $
   7  //
   8  // Copyright (c) Aditus Consulting. All rights reserved.
   9  //========================================================================
  10  
  11  
  12  //===================================================
  13  // CLASS IconPlot
  14  // Description: Make it possible to add a (small) image
  15  // to the graph
  16  //===================================================
  17  class IconPlot {
  18      public $iX=0,$iY=0,$iScale=1.0,$iMix=100;
  19      private $iHorAnchor='left',$iVertAnchor='top';
  20      private $iFile='';
  21      private $iAnchors = array('left','right','top','bottom','center');
  22      private $iCountryFlag='',$iCountryStdSize=3;
  23      private $iScalePosY=null,$iScalePosX=null;
  24      private $iImgString='';
  25  
  26  
  27      function IconPlot($aFile="",$aX=0,$aY=0,$aScale=1.0,$aMix=100) {
  28      $this->iFile = $aFile;
  29      $this->iX=$aX;
  30      $this->iY=$aY;
  31      $this->iScale= $aScale;
  32      if( $aMix < 0 || $aMix > 100 ) {
  33          JpGraphError::RaiseL(8001); //('Mix value for icon must be between 0 and 100.');
  34      }
  35      $this->iMix = $aMix ;
  36      }
  37  
  38      function SetCountryFlag($aFlag,$aX=0,$aY=0,$aScale=1.0,$aMix=100,$aStdSize=3) {
  39      $this->iCountryFlag = $aFlag;
  40      $this->iX=$aX;
  41      $this->iY=$aY;
  42      $this->iScale= $aScale;
  43      if( $aMix < 0 || $aMix > 100 ) {
  44          JpGraphError::RaiseL(8001);//'Mix value for icon must be between 0 and 100.');
  45      }
  46      $this->iMix = $aMix;
  47      $this->iCountryStdSize = $aStdSize;
  48      }
  49  
  50      function SetPos($aX,$aY) {
  51      $this->iX=$aX;
  52      $this->iY=$aY;
  53      }
  54  
  55      function CreateFromString($aStr) {
  56      $this->iImgString = $aStr;
  57      }
  58  
  59      function SetScalePos($aX,$aY) {
  60      $this->iScalePosX = $aX;
  61      $this->iScalePosY = $aY;
  62      }
  63  
  64      function SetScale($aScale) {
  65      $this->iScale = $aScale;
  66      }
  67  
  68      function SetMix($aMix) {
  69      if( $aMix < 0 || $aMix > 100 ) {
  70          JpGraphError::RaiseL(8001);//('Mix value for icon must be between 0 and 100.');
  71      }
  72      $this->iMix = $aMix ;
  73      }
  74  
  75      function SetAnchor($aXAnchor='left',$aYAnchor='center') {
  76      if( !in_array($aXAnchor,$this->iAnchors) ||
  77          !in_array($aYAnchor,$this->iAnchors) ) {
  78          JpGraphError::RaiseL(8002);//("Anchor position for icons must be one of 'top', 'bottom', 'left', 'right' or 'center'");
  79      }
  80      $this->iHorAnchor=$aXAnchor;
  81      $this->iVertAnchor=$aYAnchor;
  82      }
  83      
  84      function PreStrokeAdjust($aGraph) {
  85      // Nothing to do ...
  86      }
  87  
  88      function DoLegend($aGraph) {
  89      // Nothing to do ...
  90      }
  91  
  92      function Max() {
  93      return array(false,false);
  94      }
  95  
  96  
  97      // The next four function are framework function tht gets called
  98      // from Gantt and is not menaiungfull in the context of Icons but
  99      // they must be implemented to avoid errors.
 100      function GetMaxDate() { return false;   }
 101      function GetMinDate() { return false;   }
 102      function GetLineNbr() { return 0;   }
 103      function GetAbsHeight() {return 0;  }
 104  
 105  
 106      function Min() {
 107      return array(false,false);
 108      }
 109  
 110      function StrokeMargin(&$aImg) {
 111      return true;
 112      }
 113  
 114      function Stroke($aImg,$axscale,$ayscale) {
 115      $this->StrokeWithScale($aImg,$axscale,$ayscale);
 116      }
 117  
 118      function StrokeWithScale($aImg,$axscale,$ayscale) {
 119      if( $this->iScalePosX === null ||
 120          $this->iScalePosY === null ) {
 121          $this->_Stroke($aImg);
 122      }
 123      else {
 124          $this->_Stroke($aImg,
 125                round($axscale->Translate($this->iScalePosX)),
 126                round($ayscale->Translate($this->iScalePosY)));
 127      }
 128      }
 129  
 130      function GetWidthHeight() {
 131      $dummy=0;
 132      return $this->_Stroke($dummy,null,null,true);
 133      }
 134  
 135      function _Stroke($aImg,$x=null,$y=null,$aReturnWidthHeight=false) {
 136      if( $this->iFile != '' && $this->iCountryFlag != '' ) {
 137          JpGraphError::RaiseL(8003);//('It is not possible to specify both an image file and a country flag for the same icon.');    
 138      }
 139      if( $this->iFile != '' ) {
 140          $gdimg = Graph::LoadBkgImage('',$this->iFile);
 141      }
 142      elseif( $this->iImgString != '') {
 143          $gdimg = Image::CreateFromString($this->iImgString);
 144      }
 145  
 146      else {
 147          if( ! class_exists('FlagImages',false) ) {
 148          JpGraphError::RaiseL(8004);//('In order to use Country flags as icons you must include the "jpgraph_flags.php" file.');
 149          }
 150          $fobj = new FlagImages($this->iCountryStdSize);
 151          $dummy='';
 152          $gdimg = $fobj->GetImgByName($this->iCountryFlag,$dummy);
 153      }
 154  
 155      $iconw = imagesx($gdimg);
 156      $iconh = imagesy($gdimg);
 157      
 158      if( $aReturnWidthHeight ) {
 159          return array(round($iconw*$this->iScale),round($iconh*$this->iScale));
 160      }
 161  
 162      if( $x !== null && $y !== null ) {
 163          $this->iX = $x; $this->iY = $y;
 164      }
 165      if( $this->iX >= 0  && $this->iX <= 1.0 ) {
 166          $w = imagesx($aImg->img);
 167          $this->iX = round($w*$this->iX);
 168      }
 169      if( $this->iY >= 0  && $this->iY <= 1.0 ) {
 170          $h = imagesy($aImg->img);
 171          $this->iY = round($h*$this->iY);
 172      }
 173  
 174      if( $this->iHorAnchor == 'center' ) 
 175          $this->iX -= round($iconw*$this->iScale/2);
 176      if( $this->iHorAnchor == 'right' ) 
 177          $this->iX -= round($iconw*$this->iScale);
 178      if( $this->iVertAnchor == 'center' ) 
 179          $this->iY -= round($iconh*$this->iScale/2);
 180      if( $this->iVertAnchor == 'bottom' ) 
 181          $this->iY -= round($iconh*$this->iScale);
 182  
 183      $aImg->CopyMerge($gdimg,$this->iX,$this->iY,0,0,
 184               round($iconw*$this->iScale),round($iconh*$this->iScale),
 185               $iconw,$iconh,
 186               $this->iMix);
 187      }
 188  }
 189  
 190  ?>


Généré le : Sat Nov 24 09:27:55 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics