Old Virtual Pen Project History
29-31 Mar / 01 Apr 2002
28 Mar 2002
- Continuing work on attribute edition palette.
- The object creation mechanism is now fully tested. The grip management is
back to the state of the pre-.NET version.
27 Mar 2002
- Automatic scrolling was not fully tested. While checking it thoroughly, I
discovered that the model used to map display coordinates to document
coordinates could introduce annoying rounding problems. To fix this, I had
to redesign part of the VP::DocView, VP::DocObj::View::Manager
and Graphic.DocViewScrollable classes.
- Implemented grip feed-back from core to GUI. Still need feed-back from GUI
to core when a grip is being clicked.
26 Mar 2002
- Modified/fixed the Undo mechanism with
respect to transactions, so that transactions really can be cancelled (which
means we really want to undo & purge the undone commands).
- The ReadAttribute and WriteAttribute
commands are now fully implemented.
- Added support for automatic scrolling when drawing and selecting :
when the cursor moves outside of the document surface, the document scrolls
in the opposit direction.
25 Mar 2002
- Fixed a few details in the VP::Unit::Val
and VP::Unit::Conv classes.
- Design... rethinking the way attributes and styles get combined. Also
thinking about how the plug-ins will be split between the managed and
unmanaged code parts.
- The moderators now also get pushed on the attribute stack when calling
method Render::Context::FindObjectAttributes.
23 Mar 2002
- Fixed a few more issues with class VP::Styled.
- Fixed a leak in ObjectStore: when deleting
aliases, Document::CleanUpReferrer was
called, but if the number of aliases referring to the referrer dropped to
zero, no action was taken to remove the now dead referrer and its associated
data.
- New "to do" list for the
.NET version of Virtual Pen.
22 Mar 2002
- Modified the VP::Styled class to clone
styles in a completely different way, without having to rely on the UI to
know what styles are being shown/edited. Almost done it, but not everything
has been fully tested yet.
21 Mar 2002
- Written my first VB macro for the Visual Studio .NET environment. This macro
allows an easy switch between the .h and .cpp files.
- CreateSampleFigure improved in the DocObj::Creator
derived classes. Implemented it for the line and polyline objects.
20 Mar 2002
- Trying out the Compuware DevPartner Profiler.
- Applied SP1 to the .NET environment.
- Added commands QueryObjAttributes and QueryStyleAttributes.
- Working on the attribute edition palette : one thing is certain, the Styled
class will have to be modified.
19 Mar 2002
- Still not fully comfortable with the bitmap handling in .NET... A lot of
operations (such as bitmap cloning) do not copy the data, but share it with
the original, which means that if a bitmap data source goes out of scope,
the clones contain garbage.
- Draft implementation with open/save/undo/redo attached to buttons, just to
play a bit at the EPSITEC meeting.
18 Mar 2002
- Rebuilding the style edition palette with .NET. This required the
following changes :
- Callback mechanism to allow the core DLL to call the managed code
front-end (this is the CallbackHub).
- Named images in the Opac.Forms.Factory.
- New commands to generate sample images (SampleLine,
SampleSurface, SampleFigure)
and to query and analyse styles (QueryRootStyle,
ExtractSurfacePaintStyle, ExtractOutlinePaintStyle).
- Tracked a bug which caused the application to crash on quit (the
destructor of a static instance of class VP::DocSampler
caused the deletion of GDI+ instances when GDI+ had already been shut down).
17 Mar 2002
- Trying out Adobe
InDesign 2.0, a wonderful tool with lots of good ideas And a few
weaknesses too :-)
- Trying out QuarkXPress 5.0
too... but it does not run on a French Windows 2000.
- Written document for next EPSITEC meeting (on .NET and Virtual Pen plans).
16 Mar 2002
- The slowdown observed yesterday was caused by a very nasty bug, which was
hard to locate : one day of intense study, call stack analysis and
profiler helped.
The trouble was caused by a problem in the attribute stack unwinding
code : moderators were not popped off the attribute stack and were
therefore called increasingly often (5 objects = 1+2+3+4+5 = 15 moderators
invoked, instead of 5).
15 Mar 2002
- Virtual Pen takes shape... The front-end application is now running again,
with rectangle creation the only supported feature. Strangely, drawing of
lots of rectangles soon becomes slow. I will have to investigate.
14 Mar 2002
- Class VP::Path::Simple was removed
completely.
- The A-LineStyle source was completely
rewritten.
- Most of the complicated PostScript stuff was replaced with much more
straightforward GDI+ code.
- The core compiles. And the core draws (however, the user interface is not
back yet; all tests done with command scripting).
- Put all the new updated code back into a new branch of the Visual Source
Safe tree.
13 Mar 2002
- Replacing the PostScript code with GDI+ code. Not finished (there are a
lot of implications, and an occasion to clean up).
- Got a new chair from SITAG. I recommend
you take a look at the ergonomics
web page of JOMA :-)
12 Mar 2002
- Experimented with several ways of interfacing the managed GUI with GDI+
and passing some kind of GDI+ handle to the unmanaged code. Microsoft does
not seem to privide any help here.
Getting an HDC from a Bitmap
derived Graphics object and marshaling it to
the core will not allow for a new Graphics
object to be created (I consistently got the error ObjectBusy).
Extracting a BitmapData from the Bitmap
and recreating a Graphics object to access
it from the core is relatively slow (50 ms for
1000 x 1000 x 16 pixmap).
Finally, I will settle for a solution where the core directly paints into
the Form's Graphics
HDC.
11 Mar 2002
- Improving command execution environment.
- Class CommandHub is fully tested. It
provides now a means for the managed code to access the last error code. CoreWrapper.CommandHub.Execute
forwards the error code as an exception.
10 Mar 2002
- Cleaning up the document manager. Part of it can flow into other classes
(such as the document class and the specific command classes).
- Written the CommandHub which allows the C# environment to ask the Core to
execute commands and get back responses. A small test program shows that on
my 266 MHz Pentium II box, it takes about 200us to do a trip from
C# to unmanaged code and back, while marshaling the command and response
strings.
09 Mar 2002
- The expanded Core now builds with Visual Studio 7 (still C++ unmanaged
code).
08 Mar 2002
- Ported the core and part of the back-end to the new Visual Studio
environment. Started removing references to OPaC found in the back-end.
07 Mar 2002
- Finishing home made widget toolkit.
06 Mar 2002
- Building a layer on top of the widgets and the resources.
- Read C# Essentials 2nd Edition, great book for people like me.
- Read .NET Windows Forms Custom Controls; too much sample code and not
enough hard stuff in there; however, one or two sub-chapters would have
proven useful two days ago...
05 Mar 2002
- Found lots of widgets for free, with the newer application look &
feel. I will have to decide which will do the job best.
- Digged into the resources and into the samples. Nothing is as simple as it
looks like at first. There will be tremendous work to make everything work
smoothly.
04 Mar 2002
- Working on a draft user interface based on C# and the .NET framework.
- Here are the first results :
- It is possible to extend Microsoft Visual C# .NET Designer, for
instance to attach command managers to widgets. However, the extensions
cannot work with menus and toolbars, which make them questionable.
- The Windows XP Look and Feel must be activated by setting the Control's
FlatStyle property to System,
rather than Standard. The manifest is
not sufficient.
- There is a (free) encapsulation of the CommandBar and MenuBar widgets
which works great with .NET too.
- I am still waiting for my books to arrive...
- I am still searching for a simple yet elegant way to integrate the current
work (mainly back-end and core) into a C# application.
03 Mar 2002
- Thinking about how/where to change things in VP in order to minimise
development time and maximise efficiency.
02 Mar 2002
- Developer Studio .NET installed properly last night. Now, I am playing
around with it. Amazing how similar the .NET framework is with respect to
OPaC. I have already been able to write :
- A small home made control with cross hairs.
- A small hosting application for the home made control.
- This non-optimised C# stuff runs faster than my hyper-optimized
OPaC/Grafix code. [sigh]
01 Mar 2002
- Cleaning up disk contents in order to install Developer Studio .NET. This
took about all day (my disks were crowded and I had to get a few GB of space
for the installation).
History of previous months.