Alexander Smirnov

Development blog & recent changes (Twitter also)

75 posts in this topic

Now also on Twitter: https://twitter.com/panthernetru
 
Latest source code with specified changes is available on GitHub
 

Version 2.3.7 WIP

 

DETAILED CHANGELOG:

 

- Added edge drag functionality to be able to reattach edge to another vertex (thanks to LaborJos)
- Fixed SimpleTreeLayout vertex sizes supplement (thanks to edgardozoppi)
- Fixed and improved parallel edge handling (thanks to perturbare)
- Fixed RemoveEdge() method were not removing edges from data graph (thanks to perturbare)

Edited by Alexander Smirnov
This post is updated SOMETIMES

Share this post


Link to post
Share on other sites

After some investigations on the possibilities to port GraphX to the different platforms I've started to develop a new project branch which will be conceptually different from current GraphX architecture. 

First of all i want to break GraphX into three logicaly isolated projects:

  • GraphX.Logic - separated logics and algorithmic calculations
  • GraphX.Controls - all the visual controls and associated stuff goes here
  • GraphX.Common - common classes and interfaces for all others GraphX subprojects

Most of the names will remain the same but just will change its parent class.

 

This will help to:

  • Separate logicaly different code parts from each other making it easier to port visuals and logic modules to different platforms
  • Isolate GraphX algorithms into a separate entity able to be used independently from visuals in any external projects. Also it will allow to make and use custom Logics modules for GraphX visuals or viceversa.
  • Make GraphX architecture more modular and extension friendly.

Share this post


Link to post
Share on other sites

The process still goes very slow as i'm busy at my primary work and GoGoRam project. Recently, i've included some fixes into the repository. Feel free to download and compile latest v1 sources.

Share this post


Link to post
Share on other sites

Today i've managed to do some major breakthrough on GraphX v2. I've made separate PCL compatible GraphX.Common and basic GraphX.Logic libraries.

Also i've managed to get working basic controls for Silverlight. This is not event an alpha because too many features are broken or absent at the moment.

 

Currently, i've decided to make two different sets of projects: one for windows and one for PCL platforms. Windows project will be full-featured and PCL projects will have single core library with limited features implementation (PCL limitation). Hopefully, i'll be able to implement missing features separately  for each platform.

 

Currently PCL library lacks following features:

  • Any data save/load or serializtion
  • Animation
  • Graph state save/load 
  • Possibly less algorithms implementations

Share this post


Link to post
Share on other sites

Ported all algorithms to PCL except bundling and pathfinder ER. Also i've been forced to implement my own basic classes for PCL: Point, Rect, Vector, Thickness, Size. Assuming that they might be unaccurate and needs to be checked deeply i'm not sure all algorithms are working as expected. 

 

Also i've ported ZoomControl with limited functionality. It also needs to be reviewed from the point of SL XAML templates implementation.

Share this post


Link to post
Share on other sites

It's time to get to work after the long Russian holidays :) Ported all of the GraphX examples to v2 and fixed some potential issues, so now it looks completed. I'm planning to release v2 soon along with the yet unfinished Silverlight port sources as i definetly don't have time to support several GraphX versions at once and there are some new features incoming.

Share this post


Link to post
Share on other sites

Maybe i'll delay the release for a while due to investigations on long-lived vertex dragging issue in ZoomBox. There are some ideas that are needed to be checked so if i'll get the expected results i'll need to rewrite GraphArea rendering code.

And this can take some time.

Share this post


Link to post
Share on other sites

The good news is that investigations brought nice results and i know what to do to eliminate vertex drag bug.

The bad news is that the work needed to be done is very annoying and math intensive. So by now i can say that following must be done:

Completed

+ Change GraphAreaBase parent to Canvas

+ Change GraphArea coordinates system work for Canvas specifics

+ Add slider to minimap window, remove state buttons as they are not supported by now

 

In progress

+ Merge ZoomBox minimap with ZoomControl (i'm realy sick working with ZoomBox as its implementation is too complex and takes a lot of time to make corrections )

+ Remove ZoomBox control

+ Cleanup old UseNativeObjectArrange logic as obsolete

+ Fine tune ZoomControl content fill, possibly add some other modes from ZoomBox

Share this post


Link to post
Share on other sites

Completed all of the tasks that was specified earlier though there are some inconsistencies left in dynamic graph example that i'm looking into. Planning to implement some tweaks for the code and update Showcase example with some recent features. I hope i still can release the new version this week, we'll see.

Share this post


Link to post
Share on other sites

Found that image export has been broken as Canvas provide means for objects placement outside of the real component space. So... need to find a workaround for this issue. Except this small dissapointment all other stuff seems to be working.

Share this post


Link to post
Share on other sites

Fixed some issues and made some changes to the logic. In particluar i've decided to hide Children property as when you commonly add/remove edge or vertex controls there are some background work being done in corresponding methods (e.g. animation handling and automatic cleanup). If you've used this property before consider using other means and if you have any questions do not hesitate to contact me.

 

Sources has been updated.

Share this post


Link to post
Share on other sites

Fixed an issue that caused some algorithms visualization to be displayed inproperly. That was related to overlap removal algorithm work with new coordinates system. The issue has been resolved and sources are up to date.

Share this post


Link to post
Share on other sites

I'm to lazy to post constant updates here so if anyone is reading this please be sure that there is some work going on in the background.  I've completely focused on the PCL version of the library which (i hope) will help GraphX to spread into different platforms more actively.  I've added VB.NET example and some minor tweaks in a past few days.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.