Changeset 1079

Show
Ignore:
Timestamp:
04/07/09 19:06:51 (16 months ago)
Author:
dane
Message:

Apply patch from Marcin to handle smooth transitions between raster layers for both gdal and raster plugin - closed #295

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/CHANGELOG

    r1078 r1079  
    14140.6.1 SVN 
    1515--------- 
     16 
     17- Rasters: Handle rounding to allow better alignment of raster layers (r1079) (#295) 
    1618 
    1719- AGG Renderer: Added option to control output JPEG quality (r1078) (#198) 
  • trunk/plugins/input/gdal/gdal_featureset.cpp

    r571 r1079  
    126126      Envelope<double> box = t.forward(intersection); 
    127127       
    128       int start_x = int(box.minx()); 
    129       int start_y = int(box.miny()); 
    130       int width = int(box.width()); 
    131       int height = int(box.height()); 
     128      int start_x = int(box.minx()+0.5); 
     129      int start_y = int(box.miny()+0.5); 
     130      int width = int(box.width()+0.5); 
     131      int height = int(box.height()+0.5); 
    132132       
    133133      if (width > 0 && height > 0) 
  • trunk/plugins/input/raster/raster_featureset.cpp

    r584 r1079  
    6969               Envelope<double> ext=t.forward(intersect); 
    7070                     
    71                ImageData32 image((int)ext.width(),(int)ext.height()); 
    72                reader->read((int)ext.minx(),(int)ext.miny(),image); 
     71               ImageData32 image((int)(ext.width()+0.5),(int)(ext.height()+0.5)); 
     72               reader->read((int)(ext.minx()+0.5),(int)(ext.miny()+0.5),image); 
    7373               feature->set_raster(mapnik::raster_ptr(new raster(intersect,image))); 
    7474            } 
  • trunk/src/agg_renderer.cpp

    r1050 r1079  
    670670         Envelope<double> ext=t_.forward(raster->ext_); 
    671671         ImageData32 target(int(ext.width() + 0.5),int(ext.height() + 0.5)); 
     672         int start_x = int(ext.minx()+0.5); 
     673         int start_y = int(ext.miny()+0.5); 
    672674 
    673675         if (sym.get_scaling() == "fast"){ 
     
    683685         if (sym.get_mode() == "normal"){ 
    684686             if (sym.get_opacity() == 1.0) { 
    685                 pixmap_.set_rectangle(int(ext.minx()),int(ext.miny()),target); 
     687                pixmap_.set_rectangle(start_x,start_y,target); 
    686688             } else { 
    687                 pixmap_.set_rectangle_alpha2(target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     689                pixmap_.set_rectangle_alpha2(target,start_x,start_y, sym.get_opacity()); 
    688690             } 
    689691         } else if (sym.get_mode() == "grain_merge"){ 
    690             pixmap_.template merge_rectangle<MergeGrain> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     692            pixmap_.template merge_rectangle<MergeGrain> (target,start_x,start_y, sym.get_opacity()); 
    691693         } else if (sym.get_mode() == "grain_merge2"){ 
    692             pixmap_.template merge_rectangle<MergeGrain2> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     694            pixmap_.template merge_rectangle<MergeGrain2> (target,start_x,start_y, sym.get_opacity()); 
    693695         } else if (sym.get_mode() == "multiply"){ 
    694             pixmap_.template merge_rectangle<Multiply> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     696            pixmap_.template merge_rectangle<Multiply> (target,start_x,start_y, sym.get_opacity()); 
    695697         } else if (sym.get_mode() == "multiply2"){ 
    696             pixmap_.template merge_rectangle<Multiply2> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     698            pixmap_.template merge_rectangle<Multiply2> (target,start_x,start_y, sym.get_opacity()); 
    697699         } else if (sym.get_mode() == "divide"){ 
    698             pixmap_.template merge_rectangle<Divide> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     700            pixmap_.template merge_rectangle<Divide> (target,start_x,start_y, sym.get_opacity()); 
    699701         } else if (sym.get_mode() == "divide2"){ 
    700             pixmap_.template merge_rectangle<Divide2> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     702            pixmap_.template merge_rectangle<Divide2> (target,start_x,start_y, sym.get_opacity()); 
    701703         } else if (sym.get_mode() == "screen"){ 
    702             pixmap_.template merge_rectangle<Screen> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     704            pixmap_.template merge_rectangle<Screen> (target,start_x,start_y, sym.get_opacity()); 
    703705         } else if (sym.get_mode() == "hard_light"){ 
    704             pixmap_.template merge_rectangle<HardLight> (target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     706            pixmap_.template merge_rectangle<HardLight> (target,start_x,start_y, sym.get_opacity()); 
    705707         } else { 
    706708             if (sym.get_opacity() == 1.0){ 
    707                  pixmap_.set_rectangle(int(ext.minx()),int(ext.miny()),target); 
     709                 pixmap_.set_rectangle(start_x,start_y,target); 
    708710             } else { 
    709                 pixmap_.set_rectangle_alpha2(target,int(ext.minx()),int(ext.miny()), sym.get_opacity()); 
     711                pixmap_.set_rectangle_alpha2(target,start_x,start_y, sym.get_opacity()); 
    710712             } 
    711713         } 
  • trunk/src/cairo_renderer.cpp

    r1027 r1079  
    988988 
    989989         //TODO -- support for advanced image merging 
    990          context.add_image(int(ext.minx()), int(ext.miny()), target, sym.get_opacity()); 
     990         context.add_image(int(ext.minx()+0.5), int(ext.miny()+0.5), target, sym.get_opacity()); 
    991991      } 
    992992   }