Skip to content

0.3.0

Compare
Choose a tag to compare
@airbreather airbreather released this 09 Sep 03:43
· 55 commits to master since this release
8197f70

0.3.0

  • GpxReaderSettings now has a DefaultCreatorIfMissing attribute to use for filling in a missing GpxMetadata.Creator value, to help read values saved from legacy versions of IHM (#23).
  • Custom GpxExtensionReader and GpxExtensionWriter subclasses can now override just one method if there's a common way to handle extensions regardless of where they show up (#26).
  • All immutable data model types now override Equals(object) and GetHashCode() to have "value" semantics (#9).
    • Mutable types, such as GpxFile, do not do this, for your own safety.
    • In all lists, including lists of web links, ordering matters. [A, B] is not considered equal to [B, A].
    • Extensions values are considered for equality.
      • If you do not use a custom GpxExtensionReader for extensions, or if yours always returns ImmutableXElementContainer, then this should work like you would expect it to work.
      • Otherwise, whenever you return non-null, it is your responsibility to make sure that the result's Equals(object) and GetHashCode() semantics match what you want the container's semantics to be.
  • GpxWebLink now has a constructor that accepts just the value for Href, since that's the only required value.
  • GpxLongitude no longer permits +180 as a legal value, in keeping with the GPX 1.1 schema. (#25).
    • Converting from NTS features will automatically replace +180 with the equivalent -180.
  • GpxLongitude, GpxLatitude, GpxDegrees, and GpxDgpsStationId now all have static MinValue and MaxValue fields to get the smallest and largest legal values.
  • GpxBounds now has a shortcut for getting the a value that covers the entire WGS-84 ellipsoid.
  • GpxWaypoint now has a constructor that accepts a GeoAPI.Geometries.Coordinate instance, for convenience (#20).
  • GpxWaypoint constructors and helper method now both reject infinite values of elevationInMeters (#24).
  • GpxWaypoint constructors and helper methods now throw ArgumentOutOfRangeException instead of ArgumentException in situations where the former is more appropriate.
  • Trying to set GpxFile.Metadata to null now throws ArgumentNullException right away (#21).
  • Add methods on GpxFile to allow converting to / from string, for convenience (#19).