Version 2.67 (02 July 2008)
- Fixed: A GPF in the Draw icon loading where if the icon was loaded from a
resource using WinEvent to get the handle, and the size was specified, and
the icon contained only a 4 bit (16 colour) icon, and was completely
transparent (had no coloured pixels). This resolves and issue in SendTo
Version 2.66 (03 June 2008)
- Changed: DrawHeader: The control is now populated with the width set to
Full rather than a specific value.
- Fixed: DrawHeader: For a number of the prompts color:black was being
ignored as if it was color:none
- Added: DrawHeader: The Local DrawHeader class override is blank by
default, and unless it it filled in the global setting is used. If the
global setting is blank then the default DrawHeader class is used. This
allows the local setting to be overridden but still use a base class that is
specified globally.
Version 2.65 (03 June 2008)
- Fixed: DrawHeader, the code was not being generated correctly if a
variable was used for the Heading Text and Icon fields in the template.
- Fixed: DrawHeader, if the DrawHeader base class was overridden in the
global settings then the custom based class setting would be ignored and the
default class would be used.
- Added: Draw.Captcha() method, creates a "CAPTHCA" from a string, and
optionally saves the PNG to disk with the file name specified. A CAPTCHA is
a challenge-response mechanism that is intended to differentiate between a
human and a computer. The current implementation is very simple, but will be
expanded.
- Added: Draw.EnumProcessModules() method, which populates and array with
the handles to all of the loaded modules for the current process.
- Added: DrawHeader can now use icons from any module, regardless of which
DLL the icon is actually in.
- Fixed: DrawHeader template not populating the code for the x and y
position of the text and icon.
- Changed: The EnumFont date types did not have the draw: namespace
prepended.
- Changed: Merged two LOGFONT data declarations.
- Added: Module enumeration with the first instance of Draw that
initialised. The handles to all loaded modules are retrieved and can then be
used to loade resources from.
- Changed: External function and API prototypes have been moved to the
DrawAPI.clw file.
- Added: SetDisplayArea() method that allows a specific region to be
updated without the entire contents of each layer being composited together
for a display [BETA].
- Added: ResetDisplayArea() method. Clears the SetDisplayArea setting and
allows the entire image to be refreshed when calling Display()
- Fixed: Drawheader: Incorrectly named properties of the class in template
generated code (iconPostionX, iconPositionY and barColor).
- Added: DrawHeader: Bar shading support to the template so that the bar
drawn at the bottom of the header can be shaded between two colours.
Version 2.64 (23 May 2008)
- Fixed: Old Draw Window Headings not being displayed properly becuase the
old procedure is no longer used (the global option to use the old draw
header template should be enabled until migration to the new template is
complete. See the DrawHeader
documentation).
- Fixed: Function called as a Procedure warning on compile.
- Fixed: Template generating the call to Init() twice which could result
in the GDI device contexts not being created when procedures with Draw
objects where rapidly opened and closed.
- Added: Logging and error checking code to the GDI initialisation, as
well as font rendering.
- Fixed: Copylayer() inverted source and destination calculations. This
could result in the copied section y coordinate being inversed, or the
copied blocks being inverted.
- Added: Entirely new DrawHeader template
- Added: All DrawHeader settabtings exposed on the global template
- Added: DrawHeader template ability to use a different base class
- Added: DrawHeader local template to allow the global settings to be
overridden
- Added: DrawHeader backward compatibility, and an option to use the old
template by ticking the box on the global extension.
- Added: Documented all properties and methods in the DrawPaint Class, see
the DrawPaint documentation.
- New Methods:
- AddItem(),
AlignBottom(),
AlignLeft(),
AlignRight(),
AlignTop(),
CalcStringDims(),
Construct(),
CopyItems(),
DeleteItem(),
Destruct(),
DrawHighlightBox(),
DrawHighlights(),
DrawItems(),
FindParent(),
HideHighlight(),
Init(),
InResizeCorner(),
ItemClicked(),
Kill(),
MakeSameHeight(),
MakeSameSize(),
MakeSameWidth(),
MoveItems(),
PasteItems(),
RedrawHighlightBox(),
Reset(),
ResizeItem(),
SaveHighlightPos(),
SetCanvasSize(),
SetCursor(),
SetGrid(),
SortItems(),
SpreadHorizontally(),
SpreadVertically(),
TakeClickEvent(),
TakeDragEvent(),
TakeDropEvent(),
TakeEvent(),
TakeResizeEvent(),
WithItem().
-
New Properties:
- CanMoveNow, canvasColor, CopyItemQueue,
gridColor,
gridEnabled,
gridStyle,
gridWidth, hDrawFactor,
HighLight,
ItemQueue,
LockParents,
Moving, Resizing, vDrawFactor,
ZoomFactor,
_control,
_DeltaX,
_DeltaY, _highlighted,
_HighlightItems,
_HighlightQueue, _items, _MultiClickCount,
_nextId,
_StartMouseX, _StartMouseY.
- Added: Documented the new DrawHeader class
- Added: Drawheader backward compatibility, the template now allows either
the new or the old DrawHeader to use, and the setting can be set globally
and overrideen locally. Migrating to the new template should be transparent
in most cases, except those where custom code has been added to the imported
DrawHeading procedure. This code can now be moved to a custom DrawHeader
class that inherits from the DrawHeader class, or the template can be used
to modify the settings globally, with local overrides available. Both the
old approach and new class based approach can be used in the same
application by selecting the desired option for the particular control, and
setting which should be the default on the global extension.
- Fixed: History documentation links were not working for entries that
were created before the History was split into a seperate document
- Added: Documentation for the new DrawHeader class and templates,
migration information, descriptions of the template settings.
- New Methods:
- New Properties:
- displayText, textX,
textY, blurSize,
autoShadow, shadowOffsetX,
shadowOffsetY, shadowColor,
iconName, bgColor,
bgColorEnd, shadeType,
shadeDirection,
highlightPos,
highlightIntensity,
iconHandle, iconX,
iconY, iconSize,
barStartColor, barEndColor,
barHeight.
Version 2.63 (23 April 2008)
- Added: New DrawHeader class. This class completely replaces the old Draw
Header template/procedure:
- The local procedure is no longer required, and does not need to be
imported
- Does not create and destroy a Draw object each time the control needs to
be drawn
- Full control over the object setting using the DrawHeader object
- More properties exposed at the template level (global template settings
coming soon)
- Fast, intelligent built in resizing. Add the SV resizing extension and
the control will handle all resizing. No hand coded needed.
- Shade background support,
- No icon control is needed or created, loading icons from disk and
resource is handled internally and directly.
- DrawHeader is based on Draw and hence everything supported in Draw is
supported in DrawHeader - making it fully customisable.
- Automatic icon size selection based on the control size
- Full backward compatibility - existing controls continue to work and
provide upgraded functionality
- New shaded
- Automatic positioning if the height of the control changes (support for
vertical resizing)
- Automatically uses the correct icon if the height of the control
changes.
- Text is centred in the control based on the font sized used and the
height of the bottom bar (if any).
- Fixed: Multi-DLL compile error with new methods.
- Added: Lighten and Darken example code to the DrawImage example, as well
as a demonstration of the two supported modes for Greyscale conversion.
- Added: Built in icon loading from resource - WinEvent is no longer
needed for this functionality.
- Added: GetIconHandle
method to load an icon using the Windows API, which supports loading from
file or resource (this is done automatically, the correct source is
located), as well as loading any size icon and resizing icons to the
specified size if the specified size does not exist.
Version 2.62 (16 April 2008)
- Added some new fields to the ItemQueue in the DrawPaint class: Clipped, FitWidth and FitHeight.
Version 2.61 (13 February 2008)
- Added: Support for both FreeImage 3.10 and later and previous
releases. In FreeImage prior to 3.10 the topdown parameter in
FreeImage_ConvertFromRawBits and FreeImage_ConvertToRawBits was being
handled in reverse, and in 3.10 this was fixed - however this resulted
in all images loaded by the DrawImage functions being upside down when
the DLL from 3.10 or newer was used. This has now been handled
internally so that both old and new versions of the DLL are supported.
- Added: New DrawImage example that shows some of the basic DrawImage
functionality. This will be expanded, along with the DrawImage support
itself. Also a DrawPaint example will be available for future versions.
- Fixed: Unresolved Externals when compiling in Multi-DLL mode
- Major documentation cleanup and reorganisation. Documentation is now
split into logical sections, and the documents have been moved to XHTML
and all formatting is CSS based.
Version 2.60 (25 January 2008)
- Added: GreyScale() method to convert a section of the control, or any
layer, to Grayscale (256 shades of gray). Supports both linear conversion
and perceptual conversion (which used a good hueristic to preserve the
preceptual brightness that the human eye would see).
- Fixed: Image() method loading 256 colour (8bit) bitmaps incorrectly, the
wrong bytes were being assigned to the RGB components and the byte order was
shifted by one resulting in a "corrupted" image where the colours were
incorrect.
- New Documentation for the DrawPaint Class (work in
progress, will be completely shortly)
- New Document for DrawImage class (coming soon)
- Improved integration for FreeImage
- Included FreeImage in the installer
- Complete revamp the documentation, added missing methods, split the
documentation into multiple documents and improved navigation and usability.
There is now a seperate Class Reference, as well as a seperate Layers
reference, FAQ, History etc.
- Added: PointInPieSlice() method - returns whether a point (x,y
coordinate) is within the specific Pie Slice shape (a segment of an
Ellipse). Typically used after drawing a pie chart using the PieSlice()
method to check whether a user clicked within one of the drawn slices, and
if so which slice was clicked in.
- Added: Additional BestFit() method that takes Longs instead of Ulong.
This polymorphic method is just a wrapper for BestFit() and included for
convenience.
Version 2.59 (06 December 2007)
- Added: New features to the DrawPaint class for RightReports.
Version 2.58 (30 October 2007)
- Fixed: 256 color bitmaps had an error in the bitmap header that set the
size to 1 bytes smaller than the actual file size, which could cause a very
small number of applications to not open the produced BMP. The only applies
to 256 color BMPs being written to disk by writing the BLOB for the image
control directly to disk.
Version 2.57 (25 October 2007)
- Added: Option in the global template to disable
resizing for the DrawHeading control template.
- Added: The docs and example for the Barcode support (PDF 417) now
reflect the fact that the barcode function returns a value that should be
checked.
Version 2.56 (25 October 2007)
- Fixed: GPF when starting threads very rapidly with
Draw controls (applies primarily to DrawHeadings). All static variables are
now threaded.
Version 2.55 (18
September 2007)
- Added: Support for resizing when using the DrawHeader
template. Please note that this has changed the DrawMakeHeadings procedure
prototype and if you are using this template you need to import the new
procedure into your application using the template utility (or by importing
the TXA file).
Important: When upgrading to this version of
Draw please ensure you update your DrawMakeHeadings procedure by running the
template utility.
Version 2.53 (23
July 2007)
- Fixed: Template issue causing a compile error in
Multi-DLL projects and projects not using DrawPaint or DrawImage.
Version 2.52 (16
July 2007)
- Added support for Clarion FreeImage (free)
- Integrated Clarion FreeImage functions
- New DrawPaint class for creating persistent objects,
allowing the user to select and manipulate the objects (picking) etc. This is an
entirely new class that provides a whole new set of functionality (Capesoft
WriteReports is an example of the type of functionality that this can provide).
Full documentation will be included in future releases of Draw, along with
example applications.
- Fixed a bug when using FreeImage support in the root DLL
and not enabling it in the application. This only applies to Multi-DLL projects
that use the FreeImage support in some apps and not others that import from an
app that has a different setting. This should not affect any current Draw users
as it only applies to a pre-release version of Draw.
Version 2.41 (29 March 2007)
- Update the Multi-DLL support in the template
- New Multi-DLL example
- Add a section to the document of using Draw (and Progress) in multi-DLL
applications.
Version 2.41 (29 March 2007)
- Update the Multi-DLL support in the template
- New Multi-DLL example
- Add a section to the document of using Draw (and Progress) in multi-DLL
applications.
Version 2.40 (14 November 2006)
- New property Draw.mirrorText allows the text to be flipped back
to the right direction when using RTL text rendering and the window order
is set to Right-To-Left.
- Fixed new font rendering:
- Coordinate system was off by 1 pixel
- ErrorTrap was being
called even though the SetTextAlign function was succeeding.
- New font rendering using the .wholeString property now supports 90 degree text
(rotation by an arbitrary angle to be added in a future release).
- Fixed problems with the new StrHeight method when used with the WholeString font
rendering.
- Automatic directional rendering of Hebrew and Arabic characters when used in
conjunction with the Window or Control RTL ordering.
- Fixed a bug when using the Draw header template with the Legacy (Clarion) template
chain and the Window Resize extension that produced compile errors
- Correct documentation regarding the 3D datatypes Point2D, Point3D, Vector3D.
Data type names had not been updated in the documenation.
- New support for MultiDLL applications, simplified to work simply by ticking the
checkbox on the global extension to support using Draw in a DLL.
- New MultiDLL support in the template to assist Draw and Progress use in Multi
DLL application
- Changed MouseX and MouseY to handle controls with scrollbars where the Draw image
is larger than the control. Returns theDraw. MouseX() and Draw.MouseY() in
pixels relative to the origin (top, left hand corner) of the Draw image,
regardless of where it is scrolled or not.
Version 2.30 (29 September 2006)
- Fixed the unhandled case of an equals sign in BufferFont, equals signs where
drawing as minus signes (a single bar instead of two). This resolved an
equals
sign being incorrectly displayed by the .Show() method.
- Template tweaks to support AnyFont for the WindowHeading control template.
- New string support for Complex Script Languages such as Arabic and Japanese,
new font rendering properties and options, Right To Left reading order.
- Automatic whole string rendering of Complex Script languages.
- Automatic setting of Right-To-Left reading order for Hebrew and Arabic.
- Support for additional character sets, see the new document for the .fontCharset property and the new Show() docs.
- Updated Font related entries in the docs - see Show() method for more information.
- Add .useUnicode, .renderWholeStrings, .textAlignRTL and .ansiToUnicode properties
to the class (.useUnicode and .ansiToUnicode to be exposed in the next release).
- Added initial support for Unicode, ANSI to Unicode conversion (see above, to be
exposed in the next release).
- Additional documentation updated, more improved consistency, more links etc.
- New .Curve method supports smooth curve drawing between a set of points and uses the Draw
.curveSmoothness and Draw.curveTension properties to allow the drawing to
the modifed. Uses Hermite curve interpolation.
- New ._ShowFull method
- New ._StringWidth and ._StringHeight methods
- Fixed a bug in the .WritePNG method that could result in the current layer being
written to a PNG rather than the entire image.
- Fixed incorrect drawing of double shaded boxes when the intensity parameter was
passed as zero.
Version 2.26 (10 July 2006)
- Changed the WriteBmp, WritePng, WriteLayerBmp and WriteLayerPng methods
so that if the file exists it is deleted and a new file created for writing
the image to.
- Fixed the Barcode method
to handle barcodes where the number of columns in the barcode is a multiple
of 8 (this was producing barcodes where each line "wrapped" onto the following and the barcode looked skewed to the side).
- Fixed drawing of Pie Slices
where the chord of the arc that forms the outside of the slice had a width
or height of zero (these were drawing as triangles rather than with curved
arc edges).
- Uploaded missing images for the docs (HSV and RGB images).
Version 2.25 (24 November 2005)
- Fixes and improvements for all arc related methods (Arc, _ThickArc, Chord, Pieslice,
ShadeArcBand, HalfEllipse etc.)
- Template changes for using Draw in multi DLL projects (Added "Export Draw Class
from this DLL" option and "Use Draw that is exported in another DLL" option).
- Fixed StrLen method for vertical strings, fixed string first character positioning
- Fixed ShadeArcBand drawing one pixel out
- Fixed Pieslice drawing the "drop" section inverted for 3D pie slices.
- Documented PDF417 barcode functions and DLL.
- Grabscreen method now fully supports all options - it no longer grabs the entire
screen, instead it now gets the specified section of the screen and places
it at the passed coordinates.
Version 2.20 (17 November
2005)
- Added a Barcode
method which draws PDF417 compatible barcode when passed a string containing
the data for the barcode.
- Fixed drawing of
shaded boxes a single pixel wide or high, where the pen width is set to
greater than 1 (some types of boxes used the penwidth for drawing).
- Fixed StrLen
method (was returning the incorrect pixel length for strings).
- Fixed font underlining (also now
faster and uses no extra memory for underlined styles).
- Added support for loading
icons from resources as well as disk for the LoadIcon
method (Requires a handle to the icon resource, it is recommended that WinEvent be used to obtain the handle by calling the WinEvent function ds_GetHIcon()).
- Added support for all icon color
formats for loading icons from resource.
- LoadIcon
supports loading all icon formats from disk with the exception of 4 bit and
24 bit icons from disk (all icon formats for icon resource are supported.
NOTE: Loading icons from resource requires a handle to the icon resource.
Therefore WinEvent is recommended for loading icons from resources.).
- Fixed thick line clipping when the line ran along the
edge of the drawing area.
- Improved thick line clipping to work on a per pixel
basis.
- Fix problems on reports in Clarion 6.2, where setting prop:pixels and then
restoring the value changes the value of prop:thous.
- Fixed very small pie slices.
- Added automatic bit depth detection for loading icons
from resources.
- Corrected circles (Ellipse, _ThickEllipse, LinearEllipse, ShadeEllipse,
HalfEllipse and Sphere) drawing 1 pixels left and up (many thanks to Brian
Wigal for reporting this bug!).
- Corrected spelling and typographical errors in documentation.
- New HSV/RGB conversion methods - HsvToRgb, RgbToHsv,
LightenColor, DarkenColor,
Saturate and Desaturate.
- Add Min and Max methods -each take up to 10 parameters are return the minimum or
maximum values thereof.
Version 2.15 (08 September
2005)
- Changed the HalfEllipse
method to draw both half Ellipses and Circles (only circles were supported).
- Change the way the DrawStore.tmp
file is created. This is a dummy file used by Draw. Each instance of Draw
opens this file in Share mode, the file is never read or written to. The file
is now created in the system temp directory, and the full path is used for
the file name, this avoids problems when the system{prop:datapath} is set,
and the file cannot be located when the file name is relative.
- Added an optional parameter to
Polygon and ShadePolygon
to allow a number of vertices to be specified, as well as the default of using
all entries in the array for the vertices.
- Added support for shading to the
HalfEllipse method, currently it supports linear
shading, future versions will support other shading types.
- More updates to the docs, added
more detail for methods such as Polygon and ShadePolygon,
added new parameter lists and examples, as well as new style (parameters and
example in tables), generally improved consistency, detail and layout.
- Fixed bug in the GetImagePixel
method that returned the wrong color for the last row of pixels in the image.
- Added a PointInPolygon
method that returns whether a coordinate passed is inside a defined polygon
or not. This can be used to determine whether a user clicked in any area in
the image control that can be defined by a polygon, or whether a user clicked
on a particular polygon in the Draw control.
- Added SetFontMode
to allow the font rendering mode to be set (anti-aliased, cleartype, non anti-aliased
etc.).
- Added ImageFromBuffer
- writes from a buffer that contains RGB data to a layer, allows the position
of the image to be specified, along with the ability to clip the image and
tile it both horizontally and vertically. Tiling in either direction can be
specified independently.
- Added a BestFit
method that returns the best proportional scaling when passed an existing
width and height and the dimension that must be fit within.
- Added a ClarionToRGB
method that converts a standard Clarion BGR color to an RGB color.
- Added a GetLastError
function (not a member of the draw class, so it can be called anywhere in
an app without a Draw object). This returns the last Windows API error code.
This code can be passed to the Draw FormatMessage
method, which produces a Clarion string containing the error message.
- Added a ToClipboard function that copies the
Draw image to the clipboard. This function copies the visible contents of
the control to the clipboard (so hidden layers etc. are ignored). The image
is copied to the clipboard as a bitmap.
- When resizing and retaining the data, certain sizes could cause a GPF. This
GPF was in the ResizeLayer method when copying
the data from the old layer to the new layer, where the new layer was significantly
smaller than the old one and the zero padding changed.
- Added support 256 color icons to the LoadIcon()
method, fixed all issues with paletted icon transparency. The next release
will add support for all other icon formats (1,2 and 4 bit paletted icons,
as well as 16 and 24 bit icons). Currently both 8 bit (256 color) and 32 bit
icons are supported. Windows XP style 32 bit support the full 8 bit alpha
channel for transparency.
Version 2.14 (28 February 2005)
- Fixed
GPF in the Blank() method when blanking the canvas to a color (rather than
black or white) while the penWidth property of the class was greater than
1.
Version 2.13 (10 January 2005)
- Fixed
template error in 2.12
- Added template option to allow Draw to be easily included in a DLL in multi DLL
projects
- Added a DrawDLLMode define that the template automatically adds to the project
defines (Clarion 5 needs to have this done manually). This allows the Draw
to be compiled into a DLL and used from the DLL rather than compiling the
Draw.clw file into every app in a multi DLL project. This define supports
both Draw and Progress. See the What's New section for more information.
- Updated template to be consistent with new CapeSoft template style specification
- New AlphaCopy
method improves performance, fixes alpha errors and a possible GPF.
- Added code to automatically create alpha channels when drawing text to a layer
with an active alpha layer (still in testing)
- New DrawHeader
template which uses a single layer instead of multiple layers and supports
font anti aliasing
- Numerous updates to documentation
- Updated all example apps, totally
revamped the main example app with numerous useful features, such as drop
shadows and pie slices.
- Added HalfEllipse() method
- Fixed problems with Shaded object when a pen width and style had been specified.
Version 2.12 (05 January 2005)
- Internal release (not for public
consumption).
Version 2.11 (04 January 2005)
- Added
font anti-aliasing and rendering options (See SetFontMode).
- Added methods for enumerating all font on the system and populating a queue
(See EnumFonts)
- Added a number of new internal Draw properties and equates for fonts.
- Fixed rendering issues with some fonts that truncated some letters.
- New examples, with numerous feature additions and more useful code (such as demonstrating
drop shadows etc.).
- Added GetPixel method as an alternative name to GetImagePixel().
Version 2.10 (30 November 2004)
- Fixed
clipping issues with boxes.
- Fixed a small memory leak where a Draw could exit without releasing GDI handles.
- Documented the numerous new methods that have been added, such as shaded ellipses and spheres
- Updated Draw header template to allow all settings to be modified on the properties
page and to allow variables to be used as well as literal values
- New DrawHeader utility template for adding the DrawHeading procedure for both
ABC and legacy.
- New Demo and Example applications, example application have been cleaned up and
demonstrate the features
- DrawHeadings now allows icons in the current app to be specified, as well as icons
in the application directory. See the Dynamic Header Template section for more information.
- New functions:
Version
2.09 (21 April 2004)
- A number of internal fixes, an
improved template and a large number of new features, which will be fully
documented in the 2.10 update.
- New extension added to the template
that allows Draw to dynamically create header with drop shadowed text on windows,
simply drop the template on the window and enter text in the string (or even
leave it blank which will use the window title). See the Dynamic
Header Template section.
Version 2.08 (14 November 2003)
- Fixed GPF in Clarion 6 when writing to PNGs (threading bug).
Version 2.07 (04 November 2003)
- Interim release, fixes Duplicate label warnings with Clarion 6. Draw equates
now have the 'Draw:' namespace identifier prepended to them.
Version 2.06 (20 August 2003)
- New Cylinder() method, and an
additional cylinder method that allows new types of shading on cylinders.
- Fixed GPFs caused by accessing the 0th element of arrays.
Version 2.05 (31 July 2003)
- Only a single DrawStore.tmp file is created in the current
Windows temp directory regardless of the number of programs using Draw that
are run. (this file is always empty, and is never written to).
- Changed Windows Registry type equates to avoid duplicate
label warnings with C6 EA 5.1.
- This release is the basic version required for CapeSoft
Progress.
Version 2.04 (29 July 2003)
- Fonts: Fixed clipping, Font point sizes are now exact (previously
they were an estimate that occasionally was somewhat inaccurate), Fixed font
positioning, both vertical and horizontal. Note: You may notice that
your fonts now display smaller than they were previously, the display size
is now correct and uses the current screen resolution to calculate the exact
pixel height of fonts.
- ColorRange() Method - returns
a pair of colors on a range, given the start and end colors and the distance
between them
- Added new example app (simpler and cleaner)
- Fixed shaded boxes that were 1 pixel too small when draw
the same size as a layer.
- WriteBMP() and WritePNG()
now correctly write the display buffer to disk rather than the current layer
- Added WriteLayerPNG() and WriteLayerBMP()
to write just the current layer to disk.
- Fixed a bug in the WriteBMP() method
that produced unreadable BMP's with large images by truncating the last byte.
Version 2.03
- Another massive update of the documentation, added examples and screen shots
to all methods, added an info section with further useful information for
each method, and links to related methods. Examples are now actual useful
pieces of code that can simply be dropped in an app and compiled.
- Fixed penStyle applying to shaded objects.
- Fixed Highlight() method drawing off by a pixel
(vertical).
- Image() method documentation updated and expanded
- Image() method supports tiling an image across a layer
- Polygons draw correctly when the current pen color is color:none
- The Polygon() Method has been modified, all the workarounds
were removed and the original algorithm revised to work with all cases.
- Polygons are now faster as well as being consistent (no misdrawn pixels).
- Corrected misdrawn pixels at the end of very thin horizontal cylinders.
- ShadedLine() method shades a line between two colors
in any direction (not just vertical or horizontal).
- Added ShadeEllipse() method
- Added ColorRange() method which determines start
and end colors at two points within a color range
- Added versioning to the Draw template, templates which are dependant on
Draw (such as Progress) now check for a sufficiently new version of Draw.
- Fixed problem with True Type fonts not displaying when ClearType was enabled
under WindowsXP
- Changed layer display order, so that the first layer in the display order
list is the bottom layer, which means that each new layer created is created
on the top of the layer "stack".
- Fixed layers smaller than the the image control being draw from the bottom
left hand corner rather than the top left hand corner.
Version 2.02
- Fixed a bug with with layer copying, which incorrectly positioned layers
that were smaller than the baseLayer.
Version 2.01
- Added the call to UnLoadLib() for zlib in the Kill()
method.
- Corrected an error in CopyLayer() that resulted
in the last scanline being skipped.
- Corrected clipping for the HighLight() method (off
by 1 pixel)
- Corrected small bug in the BufferFont() internal method. The bug did not
affect any functionality.
Version 2.00 (Gold)
- Draw has gone gold!
- Added Layers, layer transparency, layer alpha channels,
Hidden layers and layer drawing methods. See the section on Layers
for more information.
- Added the GetWindowsColors() method to retrieve
the current colors for the Windows interface.
- Added a layer data type and a layer array to store
layers.
- Major revamp of the documentation, neatened and cleaned up existing sections,
added a large number of new sections and clarified some of the more obscure
sections.
- Added a layerOrder array to store the layer order independently of the layer
storage order.
- Added the following methods for manipulating layers:
| Draw.AddAlpha |
Add an alpha channel to a layer |
| Draw.AlphaCopy |
Copy a block of pixels from one layer to another using
alpha transparency. |
| Draw.CopyLayer |
Copy a block of pixels from one layer to another. |
| Draw.HideLayer |
Set a layer to hidden. |
| Draw.IndexTransparency |
Set the index transparency of the layer. |
| Draw.InitLayer |
Initialise a new layer |
| Draw.MoveLayer |
Change a layer's display order. |
| Draw.ResizeLayer |
Resize a specific layer. |
| Draw.SetMode |
Set the display mode. |
| Draw.Showlayer |
Set a layer to be shown when Display() is called. |
| Draw.SwapLayers |
Swap two slayer's display order. |
| Draw.ToAlpha |
Copy one RGB channel from one layer to another. |
| Draw.WithLayer |
Activate a layer for drawing to. |
- A number of bug fixes and large number of improvements have gone into this
release.
- Cleanup up and corrected the template and template documentation.
- Added new examples, cleaned up old examples.
- Modified Init() and Kill() to allow the object to be dynamically created
and Init() and Kill() called multiple times to re-initialise the object.
- Added a destructor to the class.
- Added a large number of tweaks and improvements, including insuring that
old Draw programs continue to work flawlessly even though they now use layers.
- All example apps have been redone and a number of new examples added - see
the examples section.
- Both libpng.dll and zlib.dll are correctly loaded at runtime, if the files
are missing Draw handles the error.
Version 1.0 Beta 11a
- Added LoadIcon method to allow Windows icons (.ICO
files) to be loaded (currently only supports WindowsXP 32 icons)
- Changed the Show method, if the font color was less
than zero, the text would simply not be drawn, now the font color is set to
black if it is less than zero.
- Added a HighLight method that allows a color to
be XOR'd to turn a highlight effect on and off over an area.
Version 1.0 Beta 11
- Added Methods for 3D calculations (All method can be used for 2D calculations):
- PNGs produced by Draw are now compatible with all compliant PNG decoders.
- Draw now loads any DLLs at runtime (relevant for writing PNGs).
- Major revamp of documentation.
- The Image() method now supports a transparency color
for BMP's.
- New data types for 3D calculations:
Version 1.0 Beta 10
- A huge number of fixes and improvements since the last public release (Beta
7) too many to list individually.
- Fixed all polygon drawing issues, the polygon method is now robust and a
little faster too.
- A whole pile of changes to the font handling, mostly bug fixes but some
optimisation issues too.
- Added Draw.fontZoom property to allow the fonts to be globally resized for
high resolution reports and such.
- The Arc() method has been tweaked and improved, and a few rounding issues
tidied up.
- 256 colour drawing has been implemented. This should be particularly useful
if the image needs to be sent across a network, or if the 24 bit version is
bloating a report excessively. See the Init256() method
for details on using 256 colour Draw images.
- Resizing supports 256 colour bitmaps, and zero padding is now correctly
calculated.
- Lots of code cleanup work has been done, so Draw should be cleaner and more
consistent internally.
- Added a SwapBuffers() method that allows any bitmap buffer to be written
to the image control.
Version 1.0 Beta 7
- Added global extension to allow PNG support to be disabled - with no PNG
support it is not necessary to ship the zlib.dll file.
- Documented all the features of the Blank() method.
- Added patterned fills and the Draw Pattern Maker - pattern.exe, which allows
you to create your own patterned fills with a graphical interface.
- Added the SetFill() method to allow patterned fills
to be used.
- Fixed rounding error with MouseY() method.
- The Image() method did not support all the documented
features. This has now been corrected.
- The Image() method now uses the top left hand corner
as the origin, the same as all the other Draw methods
- Fixed incorrect drawing of 45 degree lines that were more than 1 pixel thick
- Alphabetised class methods in documentation and added new table for easier
access.
- Fixed SetFontColor() method that was swapping
R and G color components (Clarion colors treated as RGB instead of BGR)
- Numerous fixes to the Arc() method, particularly with
thick arcs.
- Fixed vertical font clipping.
- Character font clipping implemented. Clips at the character level, so a
character drawing off the edge of the control will only draw the section within
the control and won't wrap. Previously the character was either clipped or
not.
- SetPenStyle() handles incorrect style options
by setting the style to the default.
- Blurry fonts when black font was drawn on white background fixed.
- Fixed vertical text not printing is the font color was < 0
- Added a fontStyle property to the class, see the Show()
method for more details.
- Text had a slight vertical alignment error, this has been corrected.
Version 1.0 Beta 6
- Beta 5 was an incremental release and the documentation was not changed.
- Fixed issues with 45 degree lines (pixel popping).
- Optimised 45 Degree lines.
- Fixed boundary and clipping issues.
- Fixed an error in the line algorithm that sometimes drew lines 1 pixel too
short.
- Fixed the Blank method, when clearing to colors other
than black or white it would not clear the bottom row of pixels.
- Fixed Polygon drawing and filling.
- Horizontal Doubled shaded cylinders erroneously treated Clarion colors as
RGB instead of BGR.
- Fixed the Show method, text now draws in the correct
position.
- Fixed the StrLen method, which returned the number
of bytes taken up by the individual color components rather than the pixel
length of the string.
- Changed the WriteBMP method so that it is not necessary
to have called Display at least once before writing
to a BMP file.
Version 1.0 beta 4
- Changed the coordinate system to be more consistent across all draw methods,
(1,1) is the top left corner (width,height) is the bottom right.
- Full thick line support for chords and arcs.
- Dramatically improved clipping.
- Full support for thick lines with pen styles (Clarion does not support this).
- Added Resize() method to allow the image buffer to
be resized dynamically.
- Added StrLen() method to return the number of pixels
any string will take up.
- Added GetDisplay() method to allow the data in
the control to be copied back to the Draw buffer.
- Added GetDevicePixel() method to get the color
of any pixel on the screen.
- Added GetImagePixel() method to get the color
of any pixel in the Draw control.
- Added ShadeLine() method which allows horizontal
and vertical lines to be shaded from one color to another.
- Added SetPenWidth() method to allow the penwidth
member data to be set.
- Changed Image() method to allow the Draw buffer to
be resized dynamically.
- Added ResizeControl() method to allow the control
to be resized dynamically.
Version 1.0 beta 3
Version 1.0 beta 2
- Full Support for thick lines
- Full support for pen styles (added SetPenstyle()
method)
- Supports thick lined circles and ellipses (Clarion doesn't)
- Does not support filled chords
- Fixed bug which drew vertical lines in the incorrect colour
- Fixed GPF (General Protection Fault) on close with ABC
- Blank() method now clears to any colour
- GrabScreen() Method added to get a screen capture
- Resolved numerous small bugs and increased some methods speed
- All shaded cylinders and boxes now draw correctly in all directions
- Corrected cylinder lengths (cylinders would draw slightly too long)
- Updated demo apps for ABC and legacy.