Ignore:
Timestamp:
Sep 12, 2009, 11:19:21 AM (12 years ago)
Author:
roux
Message:

C une bonne base de travail ce plugin pChart mais y a quand meme un paquet de fonctios améliorables en mettant les mains dans le cambouis ;)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/plugins/xsPChartPlugin/lib/pChart/pChart/pChart.class

    r266 r525  
    8888 define("PIE_LABELS",2);
    8989 define("PIE_NOLABEL",3);
     90 define("PIE_VALUES",4);
    9091
    9192 /* pChart class definition */
     
    15791580          { $YOffset = $Height; $XOffset = -$Width; }
    15801581
    1581          if ( $Angle > 180 && $Angle <= 270 )
     1582         if ( $Angle > 180 && $Angle <= 260 )
    15821583          { $XOffset = -$Width; }
    15831584
     
    17811782
    17821783     /* Calculate all polygons */
    1783      $Angle    = 0; $TopPlots = "";
     1784     $Angle    = 260; $TopPlots = "";
    17841785     foreach($iValues as $Key => $Value)
    17851786      {
     
    17911792        {
    17921793         $TAngle   = $Angle+($Value*$SpliceRatio/2);
     1794         if ($TAngle > 359) $TAngle -= 360;
    17931795         if ($DrawLabels == PIE_PERCENTAGE)
    17941796          $Caption  = (floor($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%";
    1795          elseif ($DrawLabels == PIE_LABELS)
     1797         elseif ($DrawLabels == PIE_VALUES)
     1798          $Caption  = (floor($Value));
     1799         elseif ($DrawLabels == PIE_LABELS)
    17961800          $Caption  = $iLabels[$Key];
    17971801         $TX       = cos(($TAngle) * 3.1418 / 180 ) * ($Radius + 10)+ $XPos;
    17981802         $TY       = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+ 10) + $YPos + 4;
    17991803
    1800          if ( $TAngle > 90 && $TAngle < 270 )
     1804         if ( $TAngle > 90 && $TAngle < 260 )
    18011805          {
    18021806           $Position  = imageftbbox($this->FontSize,0,$this->FontName,$Caption);
     
    18791883
    18801884     /* Calculate all polygons */
    1881      $Angle    = 0; $TopPlots = "";
     1885     $Angle    = 260; $TopPlots = "";
    18821886     foreach($iValues as $Key => $Value)
    18831887      {
     
    18921896        {
    18931897         $TAngle   = $Angle+($Value*$SpliceRatio/2);
     1898         if ($TAngle > 359) $TAngle -= 360;
    18941899         if ($DrawLabels == PIE_PERCENTAGE)
    18951900          $Caption  = (floor($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%";
     1901         elseif ($DrawLabels == PIE_VALUES)
     1902          $Caption  = (floor($Value));
    18961903         elseif ($DrawLabels == PIE_LABELS)
    18971904          $Caption  = $iLabels[$Key];
     
    18991906         $TY       = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+10+$SpliceDistance) + $YPos + 4;
    19001907
    1901          if ( $TAngle > 90 && $TAngle < 270 )
     1908         if ( $TAngle > 90 && $TAngle < 260 )
    19021909          {
    19031910           $Position  = imageftbbox($this->FontSize,0,$this->FontName,$Caption);
     
    19871994           {
    19881995            if ( $Data[$Key][$ColName] == 0 )
    1989              { $PieSum++; $iValues[] = 1; $rValues[] = 0; }
     1996             { $PieSum += 0.00001; $iValues[] = 0.00001; $rValues[] = 0; }
    19901997            else
    19911998             { $PieSum += $Data[$Key][$ColName]; $iValues[] = $Data[$Key][$ColName]; $iLabels[] = $Data[$Key][$DataDescription["Position"]]; $rValues[] = $Data[$Key][$ColName]; $rPieSum += $Data[$Key][$ColName];}
     
    20022009     $SpliceRatio         = (360 - $SpliceDistanceRatio * count($iValues) ) / $PieSum;
    20032010     $SplicePercent       = 100 / $PieSum;
     2011     if ($rPieSum == 0) $rPieSum = 1;
    20042012     $rSplicePercent      = 100 / $rPieSum;
    20052013
    20062014     /* Calculate all polygons */
    2007      $Angle    = 0; $TopPlots = ""; $BotPlots = ""; $CDev = 5;
     2015     $Angle    = 260; $TopPlots = ""; $BotPlots = ""; $CDev = 5;
    20082016     foreach($iValues as $Key => $Value)
    20092017      {
     
    20202028        {
    20212029         $TAngle   = $Angle+($Value*$SpliceRatio/2);
     2030         if ($TAngle > 359) $TAngle -= 360;
    20222031         if ($DrawLabels == PIE_PERCENTAGE)
    20232032          $Caption  = (floor($rValues[$Key] * pow(10,$Decimals) * $rSplicePercent)/pow(10,$Decimals))."%";
     2033         elseif ($DrawLabels == PIE_VALUES)
     2034         if ($Value == 0) $Caption = '';
     2035         else $Caption  = (floor($Value));
    20242036         elseif ($DrawLabels == PIE_LABELS)
    20252037          $Caption  = $iLabels[$Key];
    20262038
    2027          $TX       = cos(($TAngle) * 3.1418 / 180 ) * ($Radius + 10)+ $XPos;
     2039         $TX       = cos(($TAngle) * 3.1418 / 180 ) * ($Radius + 5)+ $XPos;
    20282040
    20292041         if ( $TAngle > 0 && $TAngle < 180 )
     
    20322044          $TY = sin(($TAngle) * 3.1418 / 180 ) * ($SkewHeight + 10) + $YPos + 4;
    20332045
    2034          if ( $TAngle > 90 && $TAngle < 270 )
     2046         if ( $TAngle > 90 && $TAngle < 260 )
    20352047          {
    20362048           $Position  = imageftbbox($this->FontSize,0,$this->FontName,$Caption);
     
    20392051          }
    20402052
    2041          $C_TextColor = imagecolorallocate($this->Picture,70,70,70);
     2053        // $C_TextColor = imagecolorallocate($this->Picture,70,70,70);
     2054         $C_TextColor = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"],-20);
    20422055         imagettftext($this->Picture,$this->FontSize,0,$TX,$TY,$C_TextColor,$this->FontName,$Caption);
    20432056        }
Note: See TracChangeset for help on using the changeset viewer.