[mapserver-commits] r8254 - sandbox/graphics
svn at osgeo.org
svn at osgeo.org
Wed Dec 17 12:24:29 EST 2008
Author: tbonfort
Date: 2008-12-17 12:24:29 -0500 (Wed, 17 Dec 2008)
New Revision: 8254
Modified:
sandbox/graphics/HISTORY.TXT
sandbox/graphics/mapdraw.c
sandbox/graphics/mapfile.c
sandbox/graphics/maplabel.c
sandbox/graphics/mapserver.h
Log:
RFC49 implementation: min/max scale on style and label - outlinewidth
on lines
Modified: sandbox/graphics/HISTORY.TXT
===================================================================
--- sandbox/graphics/HISTORY.TXT 2008-12-17 17:14:53 UTC (rev 8253)
+++ sandbox/graphics/HISTORY.TXT 2008-12-17 17:24:29 UTC (rev 8254)
@@ -11,6 +11,8 @@
Current Version (5.3-dev, SVN trunk):
------------------------------------
+- RFC49 implementation: min/max scale on style and label. outlinewidth
+ on lines
- mappostgis.c: Fix trailing spaces in fixed varchar fields (#2817)
Modified: sandbox/graphics/mapdraw.c
===================================================================
--- sandbox/graphics/mapdraw.c 2008-12-17 17:14:53 UTC (rev 8253)
+++ sandbox/graphics/mapdraw.c 2008-12-17 17:24:29 UTC (rev 8254)
@@ -890,7 +890,7 @@
}
cache = MS_FALSE;
- if(layer->type == MS_LAYER_LINE && layer->class[shape.classindex]->numstyles > 1)
+ if(layer->type == MS_LAYER_LINE && (layer->class[shape.classindex]->numstyles > 1||layer->class[shape.classindex]->styles[0]->outlinewidth>0))
cache = MS_TRUE; /* only line layers with multiple styles need be cached (I don't think POLYLINE layers need caching - SDL) */
/* With 'STYLEITEM AUTO', we will have the datasource fill the class' */
@@ -908,8 +908,38 @@
if(annotate && (layer->class[shape.classindex]->text.string || layer->labelitem) && layer->class[shape.classindex]->label.size != -1)
shape.text = msShapeGetAnnotation(layer, &shape);
- if(cache)
- status = msDrawShape(map, layer, &shape, image, 0, MS_FALSE); /* draw only the first style */
+ if(cache) {
+ int i;
+ for(i=0;i<layer->class[shape.classindex]->numstyles;i++) {
+ if(layer->class[shape.classindex]->styles[i]->outlinewidth>0) {
+ colorObj tmp;
+ styleObj *styleTmp = layer->class[shape.classindex]->styles[i];
+ //msDebug("layer width before:%f\n",styleTmp->width);
+ styleTmp->width+=styleTmp->outlinewidth/layer->scalefactor*2;
+ //msDebug("layer width after:%f\n",styleTmp->width);
+ styleTmp->minwidth+=styleTmp->outlinewidth*2;
+ styleTmp->maxwidth+=styleTmp->outlinewidth*2;
+ tmp = styleTmp->color;
+ styleTmp->color=styleTmp->outlinecolor;
+ styleTmp->outlinecolor=tmp;
+ //layer->class[shape.classindex]->styles[i]->width+=layer->class[shape.classindex]->styles[i]->outlinewidth;
+ }
+ }
+ status = msDrawShape(map, layer, &shape, image, 0,MS_TRUE); /* draw only the first style */
+ for(i=0;i<layer->class[shape.classindex]->numstyles;i++) {
+ if(layer->class[shape.classindex]->styles[i]->outlinewidth>0) {
+ colorObj tmp;
+ styleObj *styleTmp = layer->class[shape.classindex]->styles[i];
+ styleTmp->width-=styleTmp->outlinewidth/layer->scalefactor*2;
+ styleTmp->minwidth-=styleTmp->outlinewidth*2;
+ styleTmp->maxwidth-=styleTmp->outlinewidth*2;
+ tmp = styleTmp->color;
+ styleTmp->color=styleTmp->outlinecolor;
+ styleTmp->outlinecolor=tmp;
+ }
+ }
+ }
+
else
status = msDrawShape(map, layer, &shape, image, -1, MS_FALSE); /* all styles */
if(status != MS_SUCCESS) {
@@ -944,12 +974,23 @@
if(shpcache) {
int s;
- for(s=1; s<maxnumstyles; s++) {
- for(current=shpcache; current; current=current->next) {
- if(layer->class[current->shape.classindex]->numstyles > s &&
- layer->class[current->shape.classindex]->styles[s]->_geomtransform==MS_GEOMTRANSFORM_NONE) {
- msDrawLineSymbol(&map->symbolset, image, ¤t->shape, layer->class[current->shape.classindex]->styles[s], layer->scalefactor);
- }
+ for(s=0; s<maxnumstyles; s++) {
+ for(current=shpcache; current; current=current->next) {
+ if(layer->class[current->shape.classindex]->numstyles > s) {
+ styleObj *curStyle = layer->class[current->shape.classindex]->styles[s];
+ if(curStyle->_geomtransform!=MS_GEOMTRANSFORM_NONE)
+ continue; /*skip this as it has already been rendered*/
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ if(s==0 && curStyle->outlinewidth>0) {
+ msDrawLineSymbol(&map->symbolset, image, ¤t->shape, curStyle, layer->scalefactor);
+ } else if(s>0)
+ msDrawLineSymbol(&map->symbolset, image, ¤t->shape, curStyle, layer->scalefactor);
+ }
}
}
@@ -1134,8 +1175,16 @@
for(s=1; s<maxnumstyles; s++) {
for(current=shpcache; current; current=current->next) {
- if(layer->class[current->shape.classindex]->numstyles > s)
- msDrawLineSymbol(&map->symbolset, image, ¤t->shape, (layer->class[current->shape.classindex]->styles[s]), layer->scalefactor);
+ if(layer->class[current->shape.classindex]->numstyles > s) {
+ styleObj *curStyle = layer->class[current->shape.classindex]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawLineSymbol(&map->symbolset, image, ¤t->shape, (layer->class[current->shape.classindex]->styles[s]), layer->scalefactor);
+ }
}
}
@@ -1329,16 +1378,14 @@
* adjust the clipping rectangle so that clipped polygon shapes with thick lines
* do not enter the image */
if(layer->class[c]->numstyles > 0 && layer->class[c]->styles[0] != NULL) {
- double maxsize;
- if(layer->class[c]->styles[0]->size == -1)
- maxsize=MS_MAX(
- msSymbolGetDefaultSize(map->symbolset.symbol[layer->class[c]->styles[0]->symbol]),
- layer->class[c]->styles[0]->width);
- else
- maxsize=MS_MAX(
- layer->class[c]->styles[0]->size,
- layer->class[c]->styles[0]->width);
- csz = MS_NINT((maxsize*layer->scalefactor));
+ double maxsize,maxunscaledsize;
+ maxsize = MS_MAX(
+ msSymbolGetDefaultSize(map->symbolset.symbol[layer->class[c]->styles[0]->symbol]),
+ MS_MAX(layer->class[c]->styles[0]->size,layer->class[c]->styles[0]->width)
+ );
+ maxunscaledsize = MS_MAX( layer->class[c]->styles[0]->minsize,
+ layer->class[c]->styles[0]->minwidth);
+ csz = MS_NINT(MS_MAX(maxsize*layer->scalefactor,maxunscaledsize)+1);
} else {
csz = 0;
}
@@ -1353,7 +1400,7 @@
if(shape->text && (layer->class[c]->label.encoding || layer->class[c]->label.wrap
||layer->class[c]->label.maxlength)) {
char *newtext=msTransformLabelText(map,image,&(layer->class[c]->label),shape->text);
- if(!newtext) return MS_FAILURE;
+ //if(!newtext) return MS_FAILURE;
free(shape->text);
shape->text = newtext;
}
@@ -1382,11 +1429,15 @@
msOffsetPointRelativeTo(¢er, layer);
/* shade symbol drawing will call outline function if color not set */
- if(style != -1)
- msCircleDrawShadeSymbol(&map->symbolset, image, ¢er, r, (layer->class[c]->styles[style]), layer->scalefactor);
- else {
- for(s=0; s<layer->class[c]->numstyles; s++)
- msCircleDrawShadeSymbol(&map->symbolset, image, ¢er, r, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msCircleDrawShadeSymbol(&map->symbolset, image, ¢er, r, curStyle, layer->scalefactor);
}
/* TO DO: need to handle circle annotation */
@@ -1479,8 +1530,16 @@
if(msAddLabel(map, layer->index, c, shape->index, shape->tileindex, &annopnt, NULL, shape->text, length, &label) != MS_SUCCESS) return(MS_FAILURE);
} else {
if(layer->class[c]->numstyles > 0 && MS_VALID_COLOR(layer->class[c]->styles[0]->color)) {
- for(s=0; s<layer->class[c]->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, &annopnt, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, &annopnt, curStyle, layer->scalefactor);
+ }
}
msDrawLabel(map, image, annopnt, shape->text, &label, layer->scalefactor);
}
@@ -1515,8 +1574,16 @@
if(msAddLabel(map, layer->index, c, shape->index, shape->tileindex, &annopnt, NULL, shape->text, MS_MIN(shape->bounds.maxx-shape->bounds.minx,shape->bounds.maxy-shape->bounds.miny), &label) != MS_SUCCESS) return(MS_FAILURE);
} else {
if(layer->class[c]->numstyles > 0 && MS_VALID_COLOR(layer->class[c]->styles[0]->color)) {
- for(s=0; s<layer->class[c]->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, &annopnt, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, &annopnt, curStyle, layer->scalefactor);
+ }
}
msDrawLabel(map, image, annopnt, shape->text, &label, layer->scalefactor);
}
@@ -1544,8 +1611,16 @@
if(msAddLabel(map, layer->index, c, shape->index, shape->tileindex, point, NULL, shape->text, -1, &label) != MS_SUCCESS) return(MS_FAILURE);
} else {
if(layer->class[c]->numstyles > 0 && MS_VALID_COLOR(layer->class[c]->styles[0]->color)) {
- for(s=0; s<layer->class[c]->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, point, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, point, curStyle, layer->scalefactor);
+ }
}
msDrawLabel(map, image, *point, shape->text, &label, layer->scalefactor);
}
@@ -1575,8 +1650,16 @@
} else
msOffsetPointRelativeTo(point, layer);
- for(s=0; s<layer->class[c]->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, point, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, point, (layer->class[c]->styles[s]), layer->scalefactor);
+ }
if(shape->text) {
labelObj label = layer->class[c]->label;
@@ -1650,17 +1733,25 @@
msTransformShape(&nonClippedShape, map->extent, map->cellsize, image);
} else {
msOffsetShapeRelativeTo(shape, layer);
- if(hasGeomTransform)
- msOffsetShapeRelativeTo(&nonClippedShape, layer);
}
+ if(hasGeomTransform)
+ msOffsetShapeRelativeTo(&nonClippedShape, layer);
+
/*RFC48: loop through the styles, and pass off to the type-specific
function if the style has an appropriate type*/
for(s=0; s<layer->class[c]->numstyles; s++) {
- if(layer->class[c]->styles[s]->_geomtransform != MS_GEOMTRANSFORM_NONE)
- msDrawTransformedShape(map, &map->symbolset, image, &nonClippedShape, (layer->class[c]->styles[s]), layer->scalefactor);
- else if(style==-1 || s==style)
- msDrawLineSymbol(&map->symbolset, image, shape, (layer->class[c]->styles[s]), layer->scalefactor);
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ if(curStyle->_geomtransform != MS_GEOMTRANSFORM_NONE)
+ msDrawTransformedShape(map, &map->symbolset, image, &nonClippedShape, curStyle, layer->scalefactor);
+ else if(style==-1 || s==style)
+ msDrawLineSymbol(&map->symbolset, image, shape, curStyle, layer->scalefactor);
}
/*RFC48: free non clipped shape if it was previously alloced/used*/
@@ -1778,13 +1869,22 @@
msTransformShape(&nonClippedShape, map->extent, map->cellsize, image);
}
- for(s=0; s<layer->class[c]->numstyles; s++)
- if(layer->class[c]->styles[s]->_geomtransform != MS_GEOMTRANSFORM_NONE)
- msDrawTransformedShape(map, &map->symbolset, image, &nonClippedShape, (layer->class[c]->styles[s]), layer->scalefactor);
+ for(s=0; s<layer->class[c]->numstyles; s++) {
+ styleObj *curStyle = layer->class[c]->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ if(curStyle->_geomtransform==MS_GEOMTRANSFORM_NONE)
+ msDrawShadeSymbol(&map->symbolset, image, shape, curStyle, layer->scalefactor);
else
- msDrawShadeSymbol(&map->symbolset, image, shape, (layer->class[c]->styles[s]), layer->scalefactor);
- if(hasGeomTransform)
+ msDrawTransformedShape(map, &map->symbolset, image, &nonClippedShape, curStyle, layer->scalefactor);
+ }
+ if(hasGeomTransform)
msFreeShape(&nonClippedShape);
+
if(shape->text) {
if((bLabelNoClip == MS_TRUE && annocallret == MS_SUCCESS) ||
(msPolygonLabelPoint(shape, &annopnt, layer->class[c]->label.minfeaturesize) == MS_SUCCESS)) {
@@ -1847,8 +1947,16 @@
if(msAddLabel(map, layer->index, classindex, -1, -1, point, NULL, newtext, -1,NULL) != MS_SUCCESS) return(MS_FAILURE);
} else {
if(theclass->numstyles > 0 && MS_VALID_COLOR(theclass->styles[0]->color)) {
- for(s=0; s<theclass->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, point, (theclass->styles[s]), layer->scalefactor);
+ for(s=0; s<theclass->numstyles; s++) {
+ styleObj *curStyle = theclass->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, point, (curStyle), layer->scalefactor);
+ }
}
msDrawLabel(map, image, *point, newtext, label, layer->scalefactor);
}
@@ -1863,9 +1971,16 @@
} else
msOffsetPointRelativeTo(point, layer);
- for(s=0; s<theclass->numstyles; s++)
- msDrawMarkerSymbol(&map->symbolset, image, point, (theclass->styles[s]), layer->scalefactor);
-
+ for(s=0; s<theclass->numstyles; s++) {
+ styleObj *curStyle = theclass->styles[s];
+ if(map->scaledenom > 0) {
+ if((curStyle->maxscaledenom != -1) && (map->scaledenom >= curStyle->maxscaledenom))
+ continue;
+ if((curStyle->minscaledenom != -1) && (map->scaledenom < curStyle->minscaledenom))
+ continue;
+ }
+ msDrawMarkerSymbol(&map->symbolset, image, point, (curStyle), layer->scalefactor);
+ }
if(labeltext) {
if(layer->labelcache) {
if(msAddLabel(map, layer->index, classindex, -1, -1, point, NULL, newtext, -1,NULL) != MS_SUCCESS) return(MS_FAILURE);
Modified: sandbox/graphics/mapfile.c
===================================================================
--- sandbox/graphics/mapfile.c 2008-12-17 17:14:53 UTC (rev 8253)
+++ sandbox/graphics/mapfile.c 2008-12-17 17:24:29 UTC (rev 8254)
@@ -1206,7 +1206,8 @@
label->maxsize = MS_MAXFONTSIZE;
label->buffer = 0;
label->offsetx = label->offsety = 0;
-
+ label->minscaledenom=-1;
+ label->maxscaledenom=-1;
label->minfeaturesize = -1; /* no limit */
label->autominfeaturesize = MS_FALSE;
label->mindistance = -1; /* no limit */
@@ -1329,6 +1330,10 @@
case(MAXSIZE):
if(getInteger(&(label->maxsize)) == -1) return(-1);
break;
+ case(MAXSCALE):
+ case(MAXSCALEDENOM):
+ if(getDouble(&(label->maxscaledenom)) == -1) return(-1);
+ break;
case(MAXLENGTH):
if(getInteger(&(label->maxlength)) == -1) return(-1);
break;
@@ -1347,6 +1352,10 @@
else
label->autominfeaturesize = MS_TRUE;
break;
+ case(MINSCALE):
+ case(MINSCALEDENOM):
+ if(getDouble(&(label->minscaledenom)) == -1) return(-1);
+ break;
case(MINSIZE):
if(getInteger(&(label->minsize)) == -1) return(-1);
break;
@@ -1375,7 +1384,7 @@
label->priority = (int) msyynumber;
if(label->priority < 1 || label->priority > MS_MAX_LABEL_PRIORITY) {
msSetError(MS_MISCERR, "Invalid PRIORITY, must be an integer between 1 and %d." ,
- "loadStyle()", MS_MAX_LABEL_PRIORITY);
+ "loadLabel()", MS_MAX_LABEL_PRIORITY);
return(-1);
}
} else {
@@ -1765,8 +1774,10 @@
style->minsize = MS_MINSYMBOLSIZE;
style->maxsize = MS_MAXSYMBOLSIZE;
style->width = 1; /* in pixels */
+ style->outlinewidth = 0; /* in pixels */
style->minwidth = MS_MINSYMBOLWIDTH;
style->maxwidth = MS_MAXSYMBOLWIDTH;
+ style->minscaledenom=style->maxscaledenom = -1.0;
style->offsetx = style->offsety = 0; /* no offset */
style->antialias = MS_FALSE;
style->angle = 360;
@@ -1843,6 +1854,12 @@
case(END):
return(MS_SUCCESS); /* done */
break;
+ case(MAXSCALEDENOM):
+ if(getDouble(&(style->maxscaledenom)) == -1) return(MS_FAILURE);
+ break;
+ case(MINSCALEDENOM):
+ if(getDouble(&(style->minscaledenom)) == -1) return(MS_FAILURE);
+ break;
case(GEOMTRANSFORM):
{
char *expr=NULL;
@@ -1874,6 +1891,13 @@
if(loadColor(&(style->outlinecolor), &(style->bindings[MS_STYLE_BINDING_OUTLINECOLOR])) != MS_SUCCESS) return(MS_FAILURE);
if(style->bindings[MS_STYLE_BINDING_OUTLINECOLOR].item) style->numbindings++;
break;
+ case(OUTLINEWIDTH):
+ if(getDouble(&(style->outlinewidth)) == -1) return(MS_FAILURE);
+ if(style->outlinewidth < 0) {
+ msSetError(MS_MISCERR, "Invalid WIDTH, must an integer greater or equal to 1." , "loadStyle()");
+ return(MS_FAILURE);
+ }
+ break;
case(SIZE):
if((symbol = getSymbol(2, MS_NUMBER,MS_BINDING)) == -1) return(MS_FAILURE);
if(symbol == MS_NUMBER)
Modified: sandbox/graphics/maplabel.c
===================================================================
--- sandbox/graphics/maplabel.c 2008-12-17 17:14:53 UTC (rev 8253)
+++ sandbox/graphics/maplabel.c 2008-12-17 17:24:29 UTC (rev 8254)
@@ -318,6 +318,12 @@
classObj *classPtr=NULL;
if(!string) return(MS_SUCCESS); /* not an error */
+ if(map->scaledenom > 0) {
+ if((label->maxscaledenom != -1) && (map->scaledenom >= label->maxscaledenom))
+ return(MS_SUCCESS);
+ if((label->minscaledenom != -1) && (map->scaledenom < label->minscaledenom))
+ return(MS_SUCCESS);
+ }
layerPtr = (GET_LAYER(map, layerindex)); /* set up a few pointers for clarity */
classPtr = GET_LAYER(map, layerindex)->class[classindex];
Modified: sandbox/graphics/mapserver.h
===================================================================
--- sandbox/graphics/mapserver.h 2008-12-17 17:14:53 UTC (rev 8253)
+++ sandbox/graphics/mapserver.h 2008-12-17 17:24:29 UTC (rev 8254)
@@ -616,6 +616,8 @@
int minfeaturesize; /* minimum feature size (in pixels) to label */
int autominfeaturesize; /* true or false */
+ double minscaledenom,maxscaledenom;
+
int mindistance;
int partials; /* can labels run of an image */
@@ -721,6 +723,7 @@
double minsize, maxsize;
double width;
+ double outlinewidth;
double minwidth, maxwidth;
int offsetx, offsety; /* for shadows, hollow symbols, etc... */
@@ -729,6 +732,8 @@
int antialias;
+ double minscaledenom, maxscaledenom;
+
#ifndef SWIG
attributeBindingObj bindings[MS_STYLE_BINDING_LENGTH];
int numbindings;
More information about the mapserver-commits
mailing list