Nightly news, 12 August 2013

Developer Notes

WPF Elements 6.0

  • Wrapping in legends with many series.
  • Improvements to the IsChartClipped feature.
  • Added live data demo to the Sample Explorer.
  • Support for Double.PossitiveInfinity and Double.MaxValue in charts.
  • Resolved a minor issue in some of the PropertyGrid themes. (details)
  • Don’t clear selection when switching DataSeries to single selection mode. (details)
  • Category axes can never have an auto tick spacing less than 1.

WPF Diagrams 3.0

  • Resolved a potential exception in the ChartGrid when unloading and reloading a DiagramSurface. (details)
  • Resolved a potential issue caused by a cleared DiagramGrid still holding onto node events.

LightSpeed

  • Fixed issue with dialog disappearing from the designer when minimising
  • Improve handling of setting Nullable types in projections

Raygun.io

As usual the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

Nightly news, 6 August 2013

Developer Notes

Lots of changes this week, in particular in our XAML products. Some bigger releases are in the works for our other product lines!

WPF Elements 6.0

  • Resolved a bug with setting the index of a DataGrid row after deleting rows while scrolled to the bottom. (details)
  • Added DateTimeIntervalDefinition IntervalFormat property. (details)
  • Added CurencyTextBox.DecimalPlaces property. (details)
  • Fix for potential index out of bounds exception.
  • Resolved minor binding error. (details)
  • MinDelta is ignored when zooming a chart with a custom MajorTickSpacing. (details)
  • Resolved DsiplayMemberBinding lost focus issue. (details)
  • Resolved a potential null reference exception. (details)
  • Resolved a DataGrid validation visual issue. (details)
  • Resolved an issue causing the DataGrid.SelectionChanged event being raised twice.
  • Resolved minor PropertyGrid editor clipping issue. (details)
  • Started implementing DataGrid filtering. (Coming soon!)

WPF Diagrams 3.0

  • Resolved some memory leaks when switching between diagrams. (details)

Raygun.io

  • Improved icons for web app when displaying on Retina displays
  • Blog re-designed to be more mobile friendly
  • Better looking, more seductive looking trends charts.
  • YouTrack integration for connecting errors with YouTrack tickets
  • Improved the flow when paying for a plan on behalf of somebody else

As usual the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

WPF Diagrams: Improved path routing

Our WPF Diagrams framework includes a few connection routing algorithms each with different speed and collision-detection preferences. The most impressive router of them all is the AStarPathfinder. As the name suggests, this pathfinder uses the well known A* algorithm to route the connections around all the nodes in the diagram. This algorithm is paired with a custom built data collection which functions similar to a quad-map to minimize the collision detections and thus improve performance.

The first version that was released a couple of years ago performed very well and was great at routing connections while avoid collisions with nodes and minimizing the number of bends in each connection. The main thing that it was missing however is that it did not consider parallel connection collisions. This can easily occur when there are multiple connections on a single node that follow the same path as seen in the image below. This makes it difficult for the user to follow the connections in this kind of diagram.

Old Connection Paths

A little later, we upgraded this path router to consider parallel connections. This was done by updating the A* algorithm to think of clusters of connections as obstacles to route around. This feature is enabled by passing a number into the constructor to specify the desired distance between parallel connections. This produced great results for the customer who requested this feature.

New Connection Paths

Although the results were great, the performance for much MUCH larger diagrams was almost unusable. There were also some bugs around the ordering of the connections which could cause lots of perpendicular overlaps. Considering each connection cluster as an obstacle to route around was just too much for the algorithm to handle. So we reverted the connection considerations and did some research into a 3-phase routing algorithm:

  • Phase 1: Create an imaginary grid of horizontal and vertical lines around the nodes.
  • Phase 2: For each connection, run the A* algorithm on the grid from phase 1.
  • Phase 3: Iterate through each cluster of parallel connections and order/separate them.

The first 2 phases were already in our pathfinder. The problem with the 3rd phase is that it requires the first 2 phases to have already been applied to the entire diagram in order for it to work. This would cause bad performance when dragging a node because all 3 phases would need to be re-run on the whole diagram model. We managed to solve this issue be implementing another custom data collection that could cache the post A* connection paths and very quickly return them for a given area of the diagram. This made it possible to run the 3rd phase only on the parts of the diagram that changed.

The result was a huge boost to both the performance and outcome of the AStarPathfinder on large diagrams such as the extreme case below. (Click on the image to get a better look at the magnitude of the diagram I was using for testing! :-).

Large Diagram

Got a diagram with lots of connection that needs a powerful path router? Grab these improvements right now from the current nightly build. Remember to pass in the desired connection separation value into the constructor of the AStarPathfinder your connections are using.

Thanks for reading! Happy coding :)

Tagged as WPF Diagrams

Nightly news, 30 July 2013

Developer Notes

WPF Elements 6.0

  • Resolved a minor bug when rendering minor tick marks or grid lines on a DateTime chart.
  • Added PropertyGrid.CanDisplayReadOnlyProperties. (details)
  • Added LogarithmicAxisValueConverter.StartsFromZero property. (details)
  • Prevent dropping a DataGridColumnHeader on a TextBox etc. (details)
  • Resolved a NullReferenceException. (details)

WPF Diagrams 3.0

  • Resolved an issue with rendering dynamically updated connections. (details)
  • Fix for when the thickness of snap line drawings is less than 1.

Raygun.io – error tracking

As usual the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

Nightly news, 12 July 2013

It has been a busy week at Mindscape and here’s the updates that have flowed out into our nightly builds. Enjoy!

WPF Elements 6.0

  • Resolved a bizarre DataGrid selection issue when calling Window.DragMove.(details)
  • Resolved a bug when setting the FrozenRowCount to be negative.
  • Resolved some binding issues in the HSV color picker.(details)
  • Support changing DataGrid column headers dynamically.(details)
  • Clicking anywhere on the Hue slider causes it to instantly select that value.(details)
  • Added DataGrid.IsToggleSelectAllButtonEnabled property.(details)
  • Resolved a minor bug when dynamically changing the Title of a BarSeries.(details)
  • Padding support in generic MaskedTextBox style.(details)
  • Boxplot support for negative values.
  • Added BoxplotSeries.Orientation property to create horizontal charts.
  • Resolved a rare but critical issue in the physical-to-logical chart conversion method.
  • Improved the MaskedTextBox auto measuring.(details)
  • Added VerticalGridLineBrush and HorizontalGridLineBrush properties for the DataGrid.
  • Added DataGrid.AlternatingRowBackground property.
  • Resolved a minor rounding issue when calculating the minimum value of an axis.

WPF Diagrams 3.0

LightSpeed

  • Support IncludeDeleted for joined entities
  • Fixed some Visual Studio related crash issues
  • Added IdentityMethod option for defaults policy
  • Updated the regex used for the ValidateEmail rule to cater for more recent TLD changes
  • Fixed issue with second level caching and composite key based entities
  • Fixed issues relating to adding and removing the same entity multiple times for a entity collection which is operating in a disconnected mode

Raygun.io

  • Improved messaging when error information can’t be displayed because it’s still being indexed by our search cluster (only impacts users who would load error information within a few seconds of it being sent to Raygun).
  • Video posted on getting started with Raygun & ASP.NET.

As usual the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

Archives

Join our mailer

You should join our newsletter! Sent monthly:

Back to Top