Detailed list of changes: -------------------------------- "+" means new class/property/method/procedure/.. "-" means deleted class/property/method/procedure/.. '*' means changed class/property/method/procedure/.. ******************************************************************************************* Version 3.11 **************************************** + ZGems.pas. New functions: --------- + BilinearWarping - quadrangle-to-quadrangle bilinear warping of an image + PerspectiveWarping - quadrangle-to-quadrangle perspective warping of an image + AffineWarping - affine transform of an image + BlockCompare - block-by-block comparison of two images + Tile - image tiling with symmetry + ImageAlgebra - parser-based operations on images + ChannelAlgebra - parser-based operations on image channels + CreateTestImage - parser-based image creation + TZMarkerObject.ShadowColor - property for enhancing vector objects ------------------------- * TZCustomMarkerLayer ------------------- * SaveToFile, LoadFromFile, SaveToStream, LoadFromStream - new parameter for working with streams in binary format ******************************************************************************************* Version 3.10 **************************************** + TZImageMenu component: popup menu containing images ----------- + TZTiledRaster component: raster layer with special features and effects ------------- + ZList.pas: TZThumbList class for 2D thumbnail grids creation --------- ----------- + TZBitmap.NewTBitmap method for TBitmap image object support ------------------- + ZBitmap.Pas: SafeRelease procedure for releasing TBitmap object from its container ----------- ----------- + TZTransparency.InvAlpha property for inversion of alpha-channel ----------------------- + TZCanvas.StretchDraw() method added to draw stretched TZBitmap image in a canvas ---------------------- * TZBitmapControl: --------------- * Invalidate(): 2 new parameters for updating image cache and setting a region for update + GridScale: draw a grid above the image + OnDrawPixewl event for image pixels changing on the screen * TZOverview ---------- + new "Options" panel + new "More options" item in the context menu * TOverviewOptions: + new ooMoreOptions flag + ooInvertYPos flag + ZGems.pas --------- * Morphing() procedure supports many image data formats now + new ResampleAlpha() procedure to resample alpha-channel only + PixelOutline procedure for binary raster-to-vector conversion + TCustomMarkerLayer ------------------ + OnBeforeMarker, OnBeforeObject events + Free-hand drawing mode: * MLState: new mlsFreeHandDraw flag which sets free-hand drawing mode * StandardCommands: new scFreeHandDraw flag to show/hide free-hand drawing button + OnCommand event occurs when a standard command is performed + PerformCommand method performs any standard command + CanPerform method checks if a standard command can be performed + TZImageRectLayer.Clip property defines if the rectangle is clipped by the image borders --------------------- + TZRegionLayer: ------------- + Now supports multiple vector objects + Now returns the regions as binary mask + Mask property represents a binary mask of the region + MaskPos returns a position of the mask inside the image + FreeMask() destroys the mask + Vector objects can be created by setting a binary mask + PixelOutline property for region visualization + TZRasterLayer ------------- + DrawAt method for drawing the image at any position ******************************************************************************************* Version 3.9 **************************************** Highlights: - New TZOverview component for easy image zoom/navigation. It is similar to PhotoShop's 'Navigator' window. - New image visualization features: - transition effects (more 150- effects are available) - two new modes of sequence and AVI playing (play back, play ping-pong) - internal cashe for resampled images (in order to speed up visualization) - New vector editor features: - multiple object selection and manipulation - grouping/ungrouping of objects - user interface is improved -Many components and classes are significantly updated or re-designed + TZOverview component ---------- + New ZList.pas unit with basic classes for image lists, queues, virtual lists: --------- + TZList - base class + TZFileList - virtual list of images + TZImageList (moved from ZDataBitmap.pas) - ROI-based image list + TZUndo - image queue suitable for undo/redo operations + TZQueue - queue of images, equal in size and type; suitable for video capture *TCustomBitmapLink: ----------------- + BitmapList - contains a list of images + LockNotification - prevents components connected to the TCustomBitmapLink from updating + FrameCount - now TCustomBitmapLink and its descendants can hold several images at a time - Caption - Sequence (use BitmapList.BitmapCount>1 instead) - SubSequence - CurrentFileName *TZBitmapLink: ------------ + New play modes: Play back, Play ping-pong + AutoShowFirst - defines if the first image from a sequence is shown automatically when the component is activated + Kind - define a type of image list (virtual list, ROI-based list or undo/redo list) + FileList - returns current virtual list of images + ImageList - returns current ROI-based image list + UndoList - returns current undo/redo list + TimeInterval - defines time interval between frames when an image sequence is played - AVIFrame (use FileList.AVIFrame instead) - AVILength (use FileList.AVIFrameCount instead) - AVIOn (use FileList.AVIOn instead) - SeqLength (use BitmapList.BitmapCount instead) *TSeqAction type: ---------- + new play modes: saPlayback, saPlayPingPong - TZBLCollectionItem (collections of TCustomBitmapLinks are not used) ------------------ *TZVideoLink: ----------- - Bitmaps (use BitmapList.Bitmaps instead) - Caption - CurFrame (use BitmapList.CurIndex instead) + TZCanvas -------- + Draw() method added to draw TZBitmap image in a canvas *TZBitmap --------- + PalArray - returns or sets a palette in its internal representation * Palette - returns or sets palette in its external representation (length is restricted by the Colors property) + OpenDIBHandle() - open an image using a handle of a memory block * Clone() - new parameter is added to change the palette of the resulting image *TZDataBitmap ------------ + ROI - new property to set ROI or get current ROI + ROIStatus - replaces previous ROI() function - ROI() - renamed to ROIStatus() - SetROI() + TZRAWDataBitmap - new class for working with 2D-data in raw format -------------------------- *TZTransparency -------------- + TranspIndex - determines transparent color via its palette index (valid only for 1,4,8-bit images) *ZGems.pas ---------- + Resamle32() - new extension of the Resample() function. It resamples an image (any pixel format and data type) to 32-bit color image. Supports transparency, blendig, antialiasing. *TCustomZGraphLayer ------------------ * LayerState - new lsHideFromTooolbar flag. Now layer's button can be hidden from the toolbar. *TZMarkerObject -------------- + CaptureRect - defines number of selection rectangle in an internal array + Group - unique number of group *TZCustomMarkerLayer ------------------- + New features: multimple object selection and manipulation, group/ungroup, new drag mode, new toolbar commands + MarkerActions - defines a set of actions that should be handled by the OnMarker event + ObjectActions - defines a set of actions that should be handled by the OnObject event + SelRectOffset - defines an offset of a selection rectangle from an object boundaries * MLState - new flags * StandardCommands - new flag scGroup for grouping/ungrouping operations - Captured *TMLState - new flags mlsDragInsertNode,mlsDragNode,mlsFixObjectButtons, mlsMultiSelect -------- *TZControl --------- + LensOptions - new options for lens handling * Rectangle - overloaded version + TZTransition - new class to manage transition effects between images in a window ------------ *TZBitmapControl --------------- + Transition - sets a transition between previous and a new image + BorderColor - defines color of an image boreder + DrawBorder - defines if image border is visible + LensColor - color of the lens rectangle + FitWidth - defines additional border around the image in alStretch and alStretchAR alignment modes + IncZoomLevel() - increases or decreases current zoom level + RenderImage() - renders an image using current properties of the control(scale,alignment, scroller positions, transparency options) + OnEffectProgress - event for handling of user-defined transition effects *TZStereoControl --------------- + DisparityX, DisparityY *TZStereoBox ----------- * StereoType - new gray anaglyph mode is supported now *TZImageViewer ------------- Now the component works only with one TCustomBitmapLink component * Toolbar is changed (small icons) and updated (new playing modes) + BitmapLink - Images - ImageIndex *TZThumbNavigator ---------------- Now the component works only with one TCustomBitmapLink component + BitmapLink + FileNames - contains names of all images + SelColor - specifies a background color of the selected image * Options - many new flags - Images ******************************************************************************************* Version 3.8 **************************************** + New TZVideoLink component for video frame capture + New TCustomBitmapLink class. TZBitmapLink and TZVideoLink inherit from this class. All other components work with TCustomBitmapLink, so both TZBitmapLink and TZVideoLink can be connected to TZImageBox, TZStereoBox, TZImageViewer or TZThumbNavigator + New TZImageList class for ROI-based access to an image; suitable for storing sets of icons, button images, textures, sprites, simple animations. + TZBitmapControl: new properties - ScaleRatio and AlwaysResample; new OnChangingScale event (useful in scale change restriction) + TZScrollBox: new Scroll() method + TZScrollBox, TZGraphLayer, TCustomBitmapLink: new ShowMenu property + ZGems.pas: new CreateThumbnail procedure + TZBitmap and TZDataBitmap: + ROI support in TZDataBitmap; new methods ROI() and SetROI() + new procedures for grayscale bitmaps; + new PaletteHandle property + Clone(): new parameter for cloning to existing image object + Open(): new parameter for read-only mode + new ReadOnly property + ZBitmap.pas + SaveToBitmap, LoadFromBitmap procedures for conversion TZBitmap <--> TBitmap + SaveToClipboard, LoadFromClipboard + Vector editor: + TZMarkerLayer: + new ArrowStyle, Captured properties + new OnPaintObject event + new flags oaMoved, oaResized, oaCopy, oaPaste in TObjectAction type + TZMarkerObject: ArrowStyle, Layer, Operation, Tag properties + ZGraph.pas: CreateRegion, EqualMarkerObjects, ObjectBounds functions. Bugs fixed: - many image palette issues - "Control has no parent window" in TZImageViewer - zoom cursor remains after zooming - vector editor: MarchingAnts style does not work after loading objects from stream - wrong visualization of 15,16-bit color images with ZoomFilter applied ******************************************************************************************* Version 3.7 **************************************** + TZBitmapControl: new options of image visualization: non-integer scales, image tiling and stretching. Different zoom filters. New properties: Align, ScaleX, ScaleY, UseZoom, ZoomFilter New method: SetScale + TZBitmap: new Canvas property. GDI can be used now with TZBitmap. + TZBitmap and TZDataBitmap: new simplified versions of the NewImage methods (for memory- based images) + ZBitmap.pas unit: new procedures LoadFromStream, SaveToStream, LoadFromFile, SaveToFile for loading/saving images + Changes in TZRasterLayer component: - PixelFormat, DataType properties are deleted - The layer does not own an image; it should be provided by the application - New BitmapLink property - New ZoomFilter property - New parameter in OnNewRect property determining if the rectangle was resized + New tmAlpha32 flag in TTransparencyMode property + IZCanvasSupport: - new format of the DrawBitmap method (non-integer scale and resampling filter parameters) - new GetZClipRect method returning current clipping rectangle + TCustomMarkerLayer: new methods for object saving/loading to/from file and stream. + New image analysis tool (Connectivity analysis) in Advanced Image Viewer Bugs fixed: + TZDataBitmap.Depth1 returns wrong value + Palette did not assigned correctly via the NewImage method + Some problems with transparent colors (RGB colors changed to BGR colors) + ZGems: errors in Rotate and Arbitrarywarping procedures are fixed + TZStereoBox: problems with background drawing ******************************************************************************************* Version 3.6 **************************************** + New ZGems.pas unit with a set of image processing and graphics procedures - TZScrollBox: EndColor and GradientStyle properties have been removed (use the Background property instead) + TZBackground: new Scale property + TZCustoGraphlayer: new format of the Caption property + TZCustoGraphlayer: new flags in LayerState property (to handle Shift keys and right clicks) + TZMarkerlayer: the user can finish polygon/polyline by right button click + TZBitmap: the Reverse property can be written now + TZBitmap: Pixels[] property improved for better performance + TZBitmap, TZDataBitmap: new optional parameter (palette) in the NewImage method + TZDataBitmap: new helper properties- DimX1, DimY1, Depth1 + ZDataBitmap.PAS: new helper functions ImRect, RectInImage Bugs fixed: + problem with switching drag modes in vector object layer + toolbar glyphs disappear in localized (translated) version of the library + TZScrollBox does not resizes itself at startup ******************************************************************************************* Version 3.5 **************************************** + All string constants are placed to the ZLib_str_const.pas unit + Compression option in the AVIWrite function + TZBitmap, TZDataBitmap: new property Pixels[x,y] allows the programmer to set or get any pixel of the image (independently on image data type) + TZBitmap,TZDataBitmap: new property PixelSize returns size of an image pixel in bytes. + ZDataBitmap.pas was fully re-factored; duplicated code was removed; a few internal methods were added + TZControl, IZCanvasSupport: many graphics methods are added (Arc,Chord,Draw,Ellipse,FillRect FloodFill,Pie,PolyBezier,Polygon, RoundRect, StretchDraw). All of them are similar to standard TCanvas methods but allow the graphics to be scaled/scrolled. Bug fixed in the TZMarkerLayer: all object types are shown in the toolbar + Wallpaper support: * New class TZBackground (ZImage.pas unit) * TZScrollWindow and all its descendants: new Background property. +++++++++ATTENTION++++++++++: EndColor and GradientStyle properties will be removed in next version of the library. Use Background.EndColor and Background.Style instead * TGradientStyle type: new flags - gsFileBitmap and gsRersourceBitmap ******************************************************************************************* Version 3.4 **************************************** + Two new values in TDataType: dt1BitImage and dt4BitImage + New property TZBitmap.Colors returns a number of colors in 1-,4-,8-bit image + Format of the TZBitmapLink.FileName property is updated. It now allows the mixing different mapping modes. + New function AVIWrite (unit ZBitmapLink) can create AVI files. + New OnImagePaste events were added to TZImageBox, TZStereoBox, TZImageViewer components to handle image pasting via the clipboard and drag-and-drop. + TCustomZGraphLayer: two new properties - Other and Stereo. Graphics layers can now be synchronized. They can also work in the TZStereoBox component. + New mlsDragFull flag in the TZCustomMarkerLayer.MLState property. It displays a new 'arrow' button in the toolbar and allows the user to select, drag and resize an object + The PopupMenu property was removed from the TZControl's published list, because its parent component TZScrollBox already has PopupMenu with the same functionality. The OnAppendPopup event was transferred from the TZControl to the TZScrollBox. ******************************************************************************************* Version 3.3 **************************************** + Mouse wheel support is added to TZScrollWindow. Use SHIFT, CTRL together with mouse wheel to scroll and zoom windows. + Three new parameters have been added to the method TCustomZGraphLayer.UpdateCommand, 1) to provide reaction to keyboard 2) to set some options of a command + TZControl and TCustomZGraphLayer: new methods and events working with keyboard events: KeyDown, KeyUp, KeyPress, OnKeyDown, OnKeyUp, OnKeyPress + New TZTransparency class in ZDataBitmap unit. + TZBitmapControl and TZRasterLayer classes: new property - Transparency + New parameter in IZCanvasSupport.DrawBitmap method - Transparency + Vector editor (TCustomMarkerLayer): 1) new command for polygons and polylines - Finish object 2) new flag mlsDragCustom in MLState property (see Samples directory, NewVectorCommand project) + All graphic layers: new context menu commands - Active, Visible + TZImageViewer: new property - Modal - to show the viewer as a modal window + New global variable 'UsePlugins' (not presented in Help file). See AdvImageViewer sample for more details ******************************************************************************************* Version 3.2 **************************************** + Changes in graphic layers components 1) TZObjectLayer class and IZGraphObject interface have been removed from the library. Now their functionality is fully supported in TZCustomMarkerLayer class. 2) mlsDragWhole flag has been removed from the TMLState type, because dragging of whole object now is a capability of new built-in vector editor. There is no need for special flag for this action. 3) New properties of TZCustomMarkerLayer class: ApplyToAll, StandardCommand 4) New methods of TZCustomMarkerLayer class: AddObjects, Assign, Rects, UpdateSelRect 5) OnAfterDeleteNode, OnAfterDeleteObject, OnDeleteNode, OnDeleteObject, OnMoveMarker, OnSetMarker, OnSetObject events have been replaced by more powerful OnMarker and OnObject events. Now developer has total control over user actions in runtime. 6) TZMarkerObject - new properties: PenWidth, PenStyle, BrushColor, BrushStyle, MarkerStyle, MarkerSize, ShowNodes, ShowNumber ******************************************************************************************* Version 3.1.2 **************************************** + Hough Transform is added to the Advanced Image Viewer + Improved high-color (16 bit) images support + TZBitmap class: Handle property and HandleAllocated method are added. Now GDI functions can be used to work with TZBitmap images + IZCanvasSupport interface: DrawBitmap method is added. ******************************************************************************************* Version 3.1.1 **************************************** + TZBitmapLink component: new format of the FileName values