navigation |
This page was subverted to blog what I'm up to in July 2006AToM3 SVG Canvas Project
C++ Layout server
The DChartsV3 Digital Watch
SVG Exporter
You will need Firefox 1.5+ or some other viewer to display the SVG.
Old content follows...Recap of meeting on Tuesday September 7
Recap of meeting on Thursday July 14
Recap of meeting on Tuesday June 71) Talked about an alternative to Inskape called Skencil/Sketch. The idea is to use these programs to work with SVG graphics and produce high quality images for research papers. Skencil also has plugins, including SkLatex that allows the visual creation of latex formulas, and their automatic conversion to a pure vector form that SVG understands. I will determine how easy it is to install Skencil and SkLatex and whether or not they're useable... Update: Successfully installed both Skencil and SkLatex on Red Hat 8.0. This required installed TeTex 3.0 from source, PMW megawigets (pure Python), and PSTOEDIT 3.33 (3.40 should work too) from source. I had previously installed PIL (Python Imaging Library) and Python 1.4 with Tkinter, so I didn't need to install those. Modus operandi: convert PS files to SK files with PSTOEDIT. In Skencil, load SK files and create SkLatex formulas, mix well, and output SVG or PDF :) NOTE: If you export then re-import SVG, you lose textures and gradients, but solid colors and everything else survives unscathed :) 2) Clean up changes to the SCC generator. The changes make it possible to use SCC generated DCharts code with the Tkinter GUI loop by removing non-Tkinter threads from the generated code. By including the modified generator in the main SCC package, less confusion all around. 3) Attempt a SWIG'ification of Cassowary C++ distribution. Goal is to be able to easily compile the C++ code on many platforms. QOCA's C++ distribution has already proved to be extremely challenging in this regard. As a last resort, the QOCA Java distribution (which includes the Cassowary solver), will be used via TCP/IP communication with the Python implementation of AToM3. [Updated info] i) Unable to compile C++ version of either Cassowary or QOCA (cross-platform compilation of C code is really ugly is it not?) ii) Implemented a parser to convert string commands to QOCA calls in Java iii) Implemented Pipe communication between Python and Java. Am able to start a Java jar file automatically given a Java in the environment path. iv) Implemented TCP/IP communication between Python and Java. Requires manually starting the TCP/IP Java server. Have a nice Java GUI to start/stop server. TCP/IP has advantage of working on a remote computer and displaying standard error streams to console :) v) Implemented a low level Python wrapper over the two communication types. vi) Implemented a medium level Python wrapper over the various QOCA commands. vii) Implement a high level Python wrapper for complex QOCA constraints similar to that of GenGED. Note: GenGED uses ParCon which can handle disjunctive constraints, something not natively supported by QOCA (although there are research papers that have implemented this in QOCA, without releasing source code, and with not terribly great performance. Disjunctive constraints are necessary to specify outsidness constraints and attach to border constraints. Thus alternative solution mechanisms will be needed). viii) Integration of QOCA module with AToM3. This is very difficult to work into the existing architecture. Currently QOCA can constrain the position and size of entities. Should it be extended to indivual components of a visual icon? 4) Once constraints are working, use them with the following formalisms: i) Entity Relationship ii) Petri-Nets iii) Devs iv) State-Charts UPDATE: Attempted to use linear constraints with State-charts. Did not work well. Investigated implementation of DiaGen which uses linear constraints for statecharts and found they didn't manage any miracles either. CONCLUSION: Linear constraints are useful only for a restricted set of graphical layout problems. In other words, only those formalisms that can be described with rigid constraints like simple trees and top to bottom flow charts have any chance of working well. v) PacManV3 5) Objective of opportunity (didn't come up in the meeting minutes but...): I discovered that Eclipse + PyDevs + PyLint = Python IDE from heaven. After seeing Shahla using Eclipse for coding standards, I decided to try it out for my Java code. I was stunned, it's about 1000% better than NetBeans. Makes coding more fun it does! Then I started wondering what Eclipse could do for Python... and what do you know, it works wonders. Can see errors in real-time (make a syntax mistake? Red marker appears right at that line!). But it gets better, you can even see "design" errors, like lines that are too long, methods that take too many arguments, classes that are too long, etc. This is provided by PyLint, which when used individually, gave a code rating of -8 or so out of 10 for ATOM3.py after finding many thousands of questionable items... Recap of meeting on Monday May 161) I have completed the class diagram formalism I mentioned. It is modeled in Entity Relationship version 3 and allows you to hide/show aspects of the class diagram by editing the ASG properties (where you give your model a name). Caveat: the graphical icons do not inherit, nor do attributes that are shown in the visual icons. This formalism is now the default in the bug fixed version of AToM3 I've put on my website. I hope Sagar will finally be able to implement a decent version of Bond Graphs with this! 2) Dealing with the threading issue in AToM3 user interface and statecharts. I'm still unsure as to whether I should implement polling on the AToM3 side or change SVM to have a special option for dealing with GUI event loops. On the other hand, if I'm going to implement the dynamic keybinding idea in the statechart, I'll be spending so much time re-working the statechart that the polling idea will be easiest to implement. 3) [See 3 for June 7, 2005] Work on integration of a constraint solver with AToM3. Will need some formalism that allows for the specification of such constraints and the generation of appropriate code... mmm, should the constraints for a formalism be stored in a seperate file or spread out accross each formalism component? A single file for just constraints probably makes more sense. Idea for formalism that specifies constraints: use graph grammar to transform a class diagram into a constraint specification model, then work on that. 4) Integrate C code generated by Stateflow with AToM3 for Icon Editor behaviour. [Need StateFlow] 5) Implement a hierarchical layout algorithm that is fully integerated with AToM3. 6) This isn't so much on my todo list but we did discuss the idea of weaving together a hierarchical visual model with an equally hierarchical behaviour model, all connected to a static class model that provides state variables and methods. |
Maintained by Denis Dube. | Last Modified: 2008/09/10 00:03:05. |