Opened 9 years ago

Closed 9 years ago

#757 closed defect (fixed)

Polygon features are drawn wrong when not completely in the window (part 2)

Reported by: waltweltonlair Owned by: waltweltonlair
Priority: high Milestone: 2.1
Component: General Version: 2.0.2
Severity: minor Keywords:
Cc: External ID: 1130374

Description

Ticket 754 described some rendering quirks that occur with the new stylization engine as a result of feature geometry being clipped to the edge of the visible window. This ticket is for the exact same problem, but against old stylization.

Change History (4)

comment:1 Changed 9 years ago by waltweltonlair

Status: newassigned

comment:2 Changed 9 years ago by waltweltonlair

Feature processing now occurs as follows:

  • get the unclipped geometry from the feature reader
  • call the adapter's Stylize method with the unclipped geometry
  • each adapter computes the required clip offset
  • each adapter clips the feature geometry, taking into account any offset
  • each adapter applies the style to the clipped geometry

The following code changes have been made:

  • DefaultStylizer.cpp
    • removed clipping code in StylizeVLHelper
    • pass in the unmodified feature geometry to the Stylize call on the adapter
  • PolygonAdapter.h
  • PolygonAdapter.cpp
  • PolylineAdapter.h
  • PolylineAdapter.cpp
  • PointAdapter.h
  • PointAdapter.cpp
    • added code in Stylize to compute the clip offset from the style
    • added code in Stylize to clip using the offset
  • GeometryAdapter.h
  • GeometryAdapter.cpp
    • added a GetClipOffset method which computes the necessary offset for a given RS_LineStroke
    • the method takes into account line width and decorations
  • SE_SymbolDefProxies.h
  • LineBuffer.cpp
  • StylizationDefs.h
  • StylizationEngine.h
  • SE_LineBuffer.cpp
  • SE_LineRenderer.h
    • replaced #defines of numbers with 'const' declarations
    • moved most declarations into StylizationDefs.h
  • StylizationEngine.cpp
    • minor cleanup

I also fixed a problem in PointAdapter. The StartFeature notification was not being done in the case where a label is used as the symbol.

Finally, I updated the FENCELINE1 rendering code in AGGRenderer and GDRenderer to use up to 64 segments for approximating circular decorations.

comment:3 Changed 9 years ago by waltweltonlair

Fixed in trunk with submission https://trac.osgeo.org/mapguide/changeset/3451.

comment:4 Changed 9 years ago by waltweltonlair

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.