Skip to content

Commit

Permalink
Implement pie chart enhancement (#4285)
Browse files Browse the repository at this point in the history
  • Loading branch information
szekerest committed Apr 15, 2012
1 parent 5dbd68c commit 12b9113
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions mapchart.c
Expand Up @@ -329,7 +329,7 @@ int msDrawPieChartLayer(mapObj *map, layerObj *layer, imageObj *image)
int status=MS_SUCCESS;
const char *chartRangeProcessingKey=NULL;
const char *chartSizeProcessingKey=msLayerGetProcessingKey( layer,"CHART_SIZE" );
float diameter, mindiameter=-1, maxdiameter, minvalue, maxvalue;
float diameter, mindiameter=-1, maxdiameter, minvalue, maxvalue, exponent=0;
float *values;
styleObj **styles;
pointObj center;
Expand All @@ -340,8 +340,8 @@ int msDrawPieChartLayer(mapObj *map, layerObj *layer, imageObj *image)
if(chartRangeProcessingKey==NULL)
diameter=20;
else {
sscanf(chartRangeProcessingKey,"%*s %f %f %f %f",
&mindiameter,&maxdiameter,&minvalue,&maxvalue);
sscanf(chartRangeProcessingKey,"%*s %f %f %f %f %f",
&mindiameter,&maxdiameter,&minvalue,&maxvalue,&exponent);
}
}
else
Expand Down Expand Up @@ -377,11 +377,18 @@ int msDrawPieChartLayer(mapObj *map, layerObj *layer, imageObj *image)
else if(diameter>=maxvalue)
diameter=maxdiameter;
else {
diameter=MS_NINT(
if (exponent <= 0)
diameter=MS_NINT(
mindiameter+
((diameter-minvalue)/(maxvalue-minvalue))*
(maxdiameter-mindiameter)
);
);
else
diameter=MS_NINT(
mindiameter+
pow((diameter-minvalue)/(maxvalue-minvalue),1.0/exponent)*
(maxdiameter-mindiameter)
);
}
}
}
Expand Down

0 comments on commit 12b9113

Please sign in to comment.