[GRASS-dev] [GRASS GIS] #72: PNG driver: boundary rendering is off by one pixel

GRASS GIS trac at osgeo.org
Thu Jul 25 13:31:53 PDT 2013


#72: PNG driver: boundary rendering is off by one pixel
-------------------------------------------+--------------------------------
 Reporter:  hamish                         |       Owner:  grass-dev@…              
     Type:  defect                         |      Status:  new                      
 Priority:  critical                       |   Milestone:  6.4.4                    
Component:  Default                        |     Version:  svn-develbranch6         
 Keywords:  d.vect, rendering, PNG_DRIVER  |    Platform:  Unspecified              
      Cpu:  Unspecified                    |  
-------------------------------------------+--------------------------------

Comment(by mmetz):

 Replying to [comment:24 mlennert]:
 > Replying to [comment:23 mmetz]:
 > > Replying to [comment:22 hamish]:
 > > > Hi,
 > > >
 > > > there is a similar off-by-one problem in the Cairo driver for 6.4
 and 6.5, very easy to reproduce:
 > > >
 > > {{{
 > > export GRASS_WIDTH=100
 > > export GRASS_HEIGHT=100
 > > d.mon start=cairo
 > > d.mon stop=cairo
 > > }}}
 > > >
 > > > you will see a single pixel black line along both the right and
 bottom edges of the resulting map.png file. (trouble if you wanted to use
 GRASS_TRANSPARENT=TRUE)
 > >
 > > This has been introduced by you with r12527. Reverting r12527 removes
 the single pixel black line along both the right and bottom edges. Do you
 remember by any chance the reason for r12527?
 >
 > It's explained in the mailing list message referenced in the changelog:
 >
 > [http://grass.fbk.eu/pipermail/grass5/2004-February/013625.html]
 >
 > "I was having a look at why d.frame's boxes don't line up properly.."

 This seems to be two problems at once. d.frame tries to draw a one pixel
 wide black border around each frame, but does so outside the frame. That
 means that each frame is eating away one row / column from each adjacent
 frame, resulting in 2 pixel wide borders, thus "you can see that the
 frames are drawn one pixel to wide and tall".

 The fact that d.frame draws a border outside the frame is due to
 D_show_window() which draws outside the current screen window.

 The ideal solution would be if D_show_window() would not draw a border
 outside the current screen window and if d.frame would leave a one pixel
 wide gap between frames to draw a border between frames in that gap.

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/72#comment:25>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list