Old Virtual Pen Project History
30 Apr 2002
- EPSITEC meeting today. Tried to implement a plug-in for polygons. I did
not finish it, however...
29 Apr 2002
- Added pretty little cursors for visual feed-back. Currently, the cursors
are painted on top of the graphic view and are therefore clipped; I will
have to use transparent windows instead, so that clipping won't affect
drawing the cursor.
The visual feed-back required a lot of work in the grip management. An
improvement of the factory was also necessary, so that images could be
associated with an offset (used to define the cursors' hot spots).
- Improved the management of the color swatches.
- Implemented dragging of selected objects (by gripping their body, not
their grips). This proved to be rather simple, since I can rely on GDI+ to
do the hit testing... This is, nevertheless, a breakthrough.
- Added a very simple line style edition dialog (currently just for the line
width).
28 Apr 2002
- Fixed details about automatic scrolling.
- Identified the cause of the System.OutOfMemoryException
exception thrown sometimes while drawing. When a set of dashed lines form a
figure of zero width/height and very small height/width, GDI+ generates an
exception which gets catched as an out of memory condition. This must
be the result of an internal problem, such as a divide by zero or other sort
of unusual condition...
- Reworked the way VP::Render::Context::Execute
works when processing an object reached through a block-begin trace. This is
now fully compatible with links. Calling ExecuteFromRootedStart
with a root set to the root document and a start set to any graphic object
will walk through the document up to the graphic object, traversing the layout
root, the logical pages root, the containing logical page,
etc.
- It is now possible to query an object for its grips without
having to select it first.
- The bounding box management has been fixed and improved so
that any object can query the active bounding box by calling VP::Render::Context::RetActiveBBox.
- Implemented object selection and deselection. Dragging the
selected objects by their grips works.
27 Apr 2002
- Open and Save dialogs are now fully implemented and tested. Using a
command such as :
GUI.OpenDialog vp 'doc.LoadDocument
{0}'
does all the magic needed to show the dialog and then load the document...
Nice, isn't it ? This required a few changes in the way commands got
parsed (escaping spaces, for instance, was not done properly, which is a
must for file paths).
- Moved the application settings files into the ApplicationData
folder.
- Added basic support for page setup and printing. However, the output
generated by VP is not yet acceptable. Printing might involve a lot of work
to get it fast and accurate.
- Menus have been reworked. The application almost looks like a real
application now.
26 Apr 2002
- Added support for front-end commands in the CommandHub
class. All commands which start with the "GUI."
prefix generate a CommandHub.CommandForGUI
event. This is currently used by the forms plug-in controller (class VP.FrontEnd.Controllers.ToolsForms)
to show the windows of the respective plug-ins, when
the commands get executed.
- Integrated a form implementing a simple command line
debugger, allowing to send commands directly to method VP.CoreWrapper.CommandHub.Execute.
- Implemented support for common dialogs. The Save and Open
dialogs provided by the operating system are now implemented using the GUI.SaveDialog
and GUI.OpenDialog commands. Extension
management and command forwarding are not implemented yet.
25 Apr 2002
- This morning, I wanted to regenerate my RAID mirror (which worked fine).
However, somehow, Windows XP no longer wanted to mount the regenerated
dynamic disk (!) and whatever I did, it would not accept the now foreign
disk set. Finally, I made a backup image of the backup disk and reverted my
hardware RAID mirror to basic disks, then I restored the data. Now,
everything is up and running again (but two hours are gone).
- Designed icons for Daniel to draw...
- Redesigned the plug-in interfaces : ICommon,
IObject and IFormCreator
are now distinct.
- Reworked the VP.Forms.Cmd.Sink class to
accept localised texts (for instance those provided by the plug-ins).
24 Apr 2002
- Integrated the color swatches into the attribute edition dialog. This
required some additional effort, since I also added support for loading and
saving custom colors, using serialisation (interface ISerialize),
and stumbled on versioning matters. Finally, I had to move the VP.Color.ColorBase
classes (and friends) into a separate file, which will have a fixed revision
over time).
- A new class used to manage the color swatches for the application (VP.Logic.ColorSwatches)
implements all the support needed for color customisation.
- Added support for application-wide default settings.
- Fixed floating tool palette problem. Once you get it right, it is pretty
simple to have a floating tool palette... I feared it would be as tricky as
with OPaC, but no.
- Added a new plug-in type for classes implenting the VP.PlugInServices.GUI.IFormCreator
interface (for the future interactive command execution tool).
23 Apr 2002
- The surface and the outline no longer paint the same pixels twice (thanks
to clipping).
- A-Surface now has two painting
modes : one (fast) which paints the whole surface whatever the
outline is, and another (exclude outline) which clips away the
outline path first. The fast mode is needed to draw surface samples.
- A-Color no longer contains the
transparency information; this has been extracted into a separate attribute,
A-Alpha, for greater flexibility. The VP::Render::Context
maintains the state of the transparency, allowing for combined transparency
(not implemented yet).
- Added a color swatch (VP.Forms.ColorSwatch),
which implied being able to manipulate cursors in the front-end; therefore
added support for cursors in VP.Form.Factory.
Updated the test application for the forms.
22 Apr 2002
- Reworking the event notifications sent when editing attributes,
in order to minimise the number of widgets which get
recreated/changed/updated when a simple attribute is written or cloned. This
implied lots of small changes :
- Class VP::CallbackHub now supports the
association of arguments and events, which allow the event generator
(e.g. Style_ValueChanged) to specify
which elements are affected (e.g. the style or attribute which gets
changed).
- The AttributeAnalyser is now much
smarter and accepts incremental changes; there is no need to re-parse
the whole attribute definition if the only change was a cloning
operation or an attribute change.
- The widgets which represent attribute values in the edition palette
register observers with the attribute definition instances (AttributeDef)
in order to get notified when the attribute change. This simplifies much
the design of the panels containing the different elements.
- Added a transparency slider (still experimental). This confirmed the fact
that a figure cannot simply be drawn by painting the surface, then the
outline; a clipping operation must be used when painting the surface, in
order to avoid putting any paint below the possibly translucent outline.
- Still need to clean up the attribute panels.
21 Apr 2002
- No work on Virtual Pen (but lots of work still, mainly administrative and
computer setup problems).
20 Apr 2002
- Found and fixed problems in VP::Styled::Manager,
which prevented the attribute edition code to work properly when switching
from surface to outline color forth and back. The attribute edition palette
now works properly. I will have to improve its speed, however.
19 Apr 2002
- Worked very hard on the color edition code. Color edition is now working
for RGB, HSB and
CMYK.
- Added code to read/write the color attributes from the front-end.
- Added style and attribute synchronisation code; this is not fully tested and must still be
improved, because it generates a lot of work for the poor CPU...
- Looking for bugs (front-end crashes when working on the attribute
palette).
- Implemented HSB and CMYK
color models in VP::DocObj::Color management
class.
- Renamed the units for color components (colors formerly called R,
G, B have
been renamed to RGBr, RGBg,
RGBb).
18 Apr 2002
- Working on the color edition code : color edition is now ready for
the HSB color model.
- Finally found why the launch of the application in Visual Studio.NET
debugger took so much time : somehow, a few DLLs refer to a machine
named CPVSBUILD for their symbols, and the debugger is trying to find it.
Solved (temporarily) the problem by starting a VMware instance running a
computer named CPVSBUILD.
17 Apr 2002
- Working on the attribute edition palette.
- Added support for vertical (XP) toolbars.
- Added support for standard named images.
- Drew a few icons... I hate doing that...
- Added color space conversion code, taken from Daniel's PAGE/PC sources,
and ported to C#.
- Added a color slider which represents a single color component. Nice thing
:-)
16 Apr 2002
- Modified VP::DocObj::Style so that it also
emits fence marks on the attribute stack, allowing the front-end to locate
more precisely where a style definition ends.
The processing takes place in VP.FrontEnd.Logic.AttributeAnalyser.
- Working on the attribute edition palette (mainly design).
15 Apr 2002
- Added build tools to the Visual Studio environment (tried out a post-build
rules add-in, which did not work as expected; finally added buttons which
call external commands to run batch files, in order to copy plug-ins and
build resources semi-automatically).
- Working on the attribute edition palette.
- Modified the way VP::Render::Context
stores the attribute stack, which simplifies the front-end's attribute stack
analysis (it is now possible to find out about fence boundaries on the
attribute stack).
- Design for attribute stack analysis and palette layout.
14 Apr 2002
- Added more support for the XP look & feel in the attribute palette
(more specifically a separation widget, which needed a means of computing
the exact width of a string, since Graphics.MeasureString
does not behave as expected). Submitted the routine to www.CodeProject.com
(published here).
13 Apr 2002
- The plug-ins behave as expected (icons and text properties can be
queried).
- Dynamically create the tools palette, based on the available plug-ins.
- Working on the attribute palette : the look & feel of the icons
in the palette now approximatively match XP's Visual Styles. I also
re-created the connections between the outline and surface samples to the
figure outline and surface. This was pretty hard to get right, since there
is no means of painting after a widget executed OnPaint.
12 Apr 2002
11 Apr 2002 (back on-line again)
- Trying to fix a few software installation problems on my workstation. This
is very time consuming (crashes with the Matrox G450 display adapter
software when configuring primary display in 2048x1536 and trying to change
its refresh rate, hibernation problems related to the Adaptec 1200A RAID
controller, etc.)
10 Apr 2002
- Worked on the plug-in mechanisms. Dynamic loading works fine, as does
resource access in the plug-ins.
- Installed RAID array in my workstation.
09 Apr 2002
- Fixed problems with the source safe repository.
- Took the afternoon off.
08 Apr 2002 (off-line)
- The OPaC web site is partially down for maintainance, which means I cannot
update anymore its contents.
- Implementing VP.PlugInServices.GUI
classes (BaseClass implements IObject).
- Added a plug-in manager which is able to load plug-ins by
using reflection.
06 Apr 2002
05 Apr 2002
- I got more books on .NET, so I spent most of the day reading... No real
work on VP.
04 Apr 2002
- Working on plug-in mechanisms.
- Created a C++ managed DLL to allow the front-end to gain access to some
core types.
- Reorganised the namespaces used for the different components of VP. The
name Opac is no longer used for the Forms classes.
- Improved internal image manipulation, which will be used by plug-ins to
declare their resources to the front-end.
03 Apr 2002
- Installed Visual Studio .NET on the new workstation. Compiling is now 4.7
times faster than with my old bi-Pentium II 266MHz box. Somehow, I
expected more performance gain. Wait till I move to RAID disks. Perhaps this
will change things significantly.
02 Apr 2002
- I finally got my new DELL Precision 530 Workstation. Everything seems to
run fine, but the graphics card does not match what I ordered.
History of previous months.