Changeset 7577

Show
Ignore:
Timestamp:
05/12/08 12:32:27 (2 months ago)
Author:
tbonfort
Message:

use an agg specific label size calculation function where possible (#2357)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/mapserver/HISTORY.TXT

    r7575 r7577  
    1313Current Version (5.1-dev, SVN trunk): 
    1414------------------------------------- 
     15- AGG: use an agg specific label size calculation function where possible (#2357) 
    1516 
    1617- mapogcsld.c: fetch TextSymbolizer/Label/ogc:PropertyName correctly (#2611) 
  • trunk/mapserver/mapagg.cpp

    r7476 r7577  
    19481948} 
    19491949 
     1950int msGetLabelSizeAGG(imageObj *img, char *string, labelObj *label, rectObj *rect, fontSetObj *fontset, double scalefactor, int adjustBaseline) 
     1951{ 
     1952    AGGMapserverRenderer* ren = getAGGRenderer(img); 
     1953    int size; 
     1954    size = MS_NINT(label->size*scalefactor); 
     1955    size = MS_MAX(size, label->minsize); 
     1956    size = MS_MIN(size, label->maxsize); 
     1957    char * font = msLookupHashTable(&(fontset->fonts), label->font); 
     1958    if(!font) { 
     1959        msSetError(MS_TTFERR, "Requested font (%s) not found.", "msGetLabelSizeAGG()", label->font); 
     1960        return MS_FAILURE; 
     1961    } 
     1962    if(ren->getLabelSize(string, font, label->size, rect) != MS_SUCCESS) 
     1963        return MS_FAILURE; 
     1964    if(adjustBaseline) { 
     1965        label->offsety += MS_NINT(((rect->miny+rect->maxy) + size) / 2); 
     1966        label->offsetx += MS_NINT(rect->minx / 2); 
     1967    } 
     1968    return MS_SUCCESS; 
     1969} 
    19501970// --------------------------------------------------------------------------- 
    19511971// Draw a label curved along a line 
  • trunk/mapserver/mapdraw.c

    r7544 r7577  
    19561956    rectObj r; 
    19571957 
    1958     if(msGetLabelSize(string, label, &r, fontset, scalefactor, MS_FALSE) == -1) return(-1); 
     1958    if(msGetLabelSize(image,string, label, &r, fontset, scalefactor, MS_FALSE) == -1) return(-1); 
    19591959    p = get_metrics(&labelPnt, label->position, r, label->offsetx, label->offsety, label->angle, 0, NULL); 
    19601960    msDrawText(image, p, string, label, fontset, scalefactor); /* actually draw the label */ 
     
    20872087                        continue; /* not an error, just don't want to do anything */ 
    20882088 
    2089                     if(msGetLabelSize(cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
     2089                    if(msGetLabelSize(image,cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
    20902090                        return(-1); 
    20912091 
  • trunk/mapserver/mapgraticule.c

    r7418 r7577  
    656656                msTransformShapeToPixel( pShape, pLayer->map->extent, pLayer->map->cellsize ); 
    657657 
    658         if (msGetLabelSize( pShape->text, &pLayer->class[0]->label, &rectLabel, &pLayer->map->fontset, 1.0, MS_FALSE) != 0) 
     658        if (msGetLabelSizeGD( pShape->text, &pLayer->class[0]->label, &rectLabel, &pLayer->map->fontset, 1.0, MS_FALSE) != 0) 
    659659        return MS_FAILURE;  /* msSetError already called */ 
    660660 
  • trunk/mapserver/mapimagemap.c

    r7426 r7577  
    18511851      cachePtr->label.size = (int)(cachePtr->label.size*layerPtr->scalefactor); 
    18521852 
    1853     if(msGetLabelSize(cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
     1853    if(msGetLabelSize(img,cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
    18541854      return(-1); 
    18551855 
  • trunk/mapserver/maplabel.c

    r7418 r7577  
    11/****************************************************************************** 
    2  * $Id:
     2 * $Id
    33 * 
    44 * Project:  MapServer 
     
    397397} 
    398398 
     399 
     400int msGetLabelSize(imageObj *img, char *string, labelObj *label, rectObj *rect, fontSetObj *fontset, double scalefactor, int adjustBaseline) 
     401{ 
     402#ifdef USE_AGG 
     403    if(MS_RENDERER_AGG(img->format)) 
     404        return msGetLabelSizeAGG(img,string,label,rect,fontset,scalefactor,adjustBaseline); 
     405    else 
     406#endif 
     407        return msGetLabelSizeGD(string,label,rect,fontset,scalefactor,adjustBaseline); 
     408} 
     409 
    399410/* 
    400411** Note: All these routines assume a reference point at the LL corner of the text. GD's 
     
    404415 
    405416/* assumes an angle of 0 regardless of what's in the label object */ 
    406 int msGetLabelSize(char *string, labelObj *label, rectObj *rect, fontSetObj *fontset, double scalefactor, int adjustBaseline) 
     417int msGetLabelSizeGD(char *string, labelObj *label, rectObj *rect, fontSetObj *fontset, double scalefactor, int adjustBaseline) 
    407418{ 
    408419  int size; 
     
    803814  label.antialias = symbol->antialias; 
    804815   
    805   if(msGetLabelSize(symbol->character, &label, &label_rect, symbolset->fontset, scalefactor, MS_FALSE) == -1) 
     816  if(msGetLabelSizeGD(symbol->character, &label, &label_rect, symbolset->fontset, scalefactor, MS_FALSE) == -1) 
    806817    return(-1); 
    807818 
  • trunk/mapserver/maplegend.c

    r7544 r7577  
    201201 
    202202            if (   transformedText == NULL 
    203                 || msGetLabelSize(transformedText, &map->legend.label,  
     203                || msGetLabelSizeGD(transformedText, &map->legend.label,  
    204204                                  &rect, &(map->fontset), 1.0, MS_FALSE) != 0) 
    205205            { /* something bad happened */ 
     
    310310            head=cur; 
    311311            if(cur->transformedText==NULL|| 
    312                     msGetLabelSize(cur->transformedText, &map->legend.label, &rect, &(map->fontset), 1.0, MS_FALSE) != 0) 
     312                    msGetLabelSizeGD(cur->transformedText, &map->legend.label, &rect, &(map->fontset), 1.0, MS_FALSE) != 0) 
    313313            { /* something bad happened, free allocated mem */ 
    314314                while(cur) { 
  • trunk/mapserver/mapscale.c

    r7418 r7577  
    11/****************************************************************************** 
    2  * $Id:
     2 * $Id
    33 * 
    44 * Project:  MapServer 
     
    311311      p.x = ox + j*isx; /* + MS_NINT(fontPtr->w/2); */ 
    312312      p.y = oy + map->scalebar.height + MS_NINT(VSPACING*fontPtr->h); 
    313       if(msGetLabelSize(label,&(map->scalebar.label), &r,  
     313      if(msGetLabelSizeGD(label,&(map->scalebar.label), &r,  
    314314              &(map->fontset), 1, MS_FALSE) == -1) return(NULL); 
    315315      p2 = get_metrics(&p, MS_CC, r, 0,0, 0, 0, NULL); 
     
    324324    p.x = ox; /* + MS_NINT(fontPtr->w/2); */ 
    325325    p.y = oy + map->scalebar.height + MS_NINT(VSPACING*fontPtr->h); 
    326     if(msGetLabelSize(label,&(map->scalebar.label), &r,  
     326    if(msGetLabelSizeGD(label,&(map->scalebar.label), &r,  
    327327            &(map->fontset), 1, MS_FALSE) == -1) return(NULL); 
    328328    p2 = get_metrics(&p, MS_CR, r, 0,0, 0, 0, NULL); 
     
    344344      p.x = ox + j*isx; /* + MS_NINT(fontPtr->w/2); */ 
    345345      p.y = oy + map->scalebar.height + MS_NINT(VSPACING*fontPtr->h); 
    346       if(msGetLabelSize(label,&(map->scalebar.label), &r,  
     346      if(msGetLabelSizeGD(label,&(map->scalebar.label), &r,  
    347347              &(map->fontset), 1, MS_FALSE) == -1) return(NULL); 
    348348      p2 = get_metrics(&p, MS_CC, r, 0,0, 0, 0, NULL); 
     
    360360    p.x = ox; /* + MS_NINT(fontPtr->w/2); */ 
    361361    p.y = oy + map->scalebar.height + MS_NINT(VSPACING*fontPtr->h); 
    362     if(msGetLabelSize(label,&(map->scalebar.label), &r,  
     362    if(msGetLabelSizeGD(label,&(map->scalebar.label), &r,  
    363363            &(map->fontset), 1, MS_FALSE) == -1) return(NULL); 
    364364    p2 = get_metrics(&p, MS_CR, r, 0,0, 0, 0, NULL); 
  • trunk/mapserver/mapserver.h

    r7569 r7577  
    16811681MS_DLL_EXPORT int msFreeFontSet(fontSetObj *fontset); 
    16821682MS_DLL_EXPORT char *msTransformLabelText(labelObj *label, char *text); 
    1683 MS_DLL_EXPORT int msGetLabelSize(char *string, labelObj *label, rectObj *rect, fontSetObj *fontSet, double scalefactor, int adjustBaseline); 
     1683MS_DLL_EXPORT int msGetLabelSize(imageObj *img, char *string, labelObj *label, rectObj *rect, fontSetObj *fontSet, double scalefactor, int adjustBaseline); 
     1684MS_DLL_EXPORT int msGetLabelSizeGD(char *string, labelObj *label, rectObj *rect, fontSetObj *fontSet, double scalefactor, int adjustBaseline); 
     1685 
    16841686MS_DLL_EXPORT int msGetLabelSizeEx(char *string, labelObj *label, rectObj *rect, fontSetObj *fontSet, double scalefactor, int adjustBaseline, double **offsets); 
    16851687MS_DLL_EXPORT int msAddLabel(mapObj *map, int layerindex, int classindex, int shapeindex, int tileindex, pointObj *point, labelPathObj *labelpath, char *string, double featuresize, labelObj *label); 
     
    19271929MS_DLL_EXPORT void msDrawShadeSymbolAGG(symbolSetObj *symbolset, imageObj *image,shapeObj *p, styleObj *style, double scalefactor); 
    19281930 
     1931MS_DLL_EXPORT int msGetLabelSizeAGG(imageObj *img, char *string, labelObj *label, rectObj *rect, fontSetObj *fontSet, double scalefactor, int adjustBaseline); 
    19291932MS_DLL_EXPORT int msDrawTextAGG(imageObj *imgage, pointObj labelPnt, char *string, labelObj *label, fontSetObj *fontset, double scalefactor); 
    19301933MS_DLL_EXPORT int msDrawTextLineAGG(imageObj *image, char *string, labelObj *label, labelPathObj *labelpath, fontSetObj *fontset, double scalefactor); 
  • trunk/mapserver/mapsvg.c

    r7418 r7577  
    11531153      continue; /* not an error, just don't want to do anything */ 
    11541154 
    1155     if(msGetLabelSize(cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
     1155    if(msGetLabelSizeGD(cachePtr->text, labelPtr, &r, &(map->fontset), layerPtr->scalefactor, MS_TRUE) == -1) 
    11561156      return(-1); 
    11571157