|
Upgrading
Upgrading FX Visuals is free to anyone who has purchased a copy of any previous version. Merely download the new version and install the package as before, using the key you were issued when you purchased FX Visuals.
Changes In Version 1.5
- DSound.pas and DDraw.pas were renamed to DirectSound.pas and DirectDraw.pas respectively.
- The global DirectDraw variable was renamed to fxDirectDraw to avoid naming conflicts.
- TfxActiveForm and TfxOleContainer were added.
- Changes to BufferClass:
- Added a ParentTransColor pointer to Bufferclass (so that SurfaceBuffers would always have the bitdepth-corrected TransparentColor of the parent component). This was needed to allow multiple forms having different TransparentColors (ParentForm.TransparentColor is no longer assumed).
- Fade function now passes a form (again for reasons of TransparentColor).
- Added a copy 8 to 8 TrueColor without dither: needed because previously if you loaded an 8bit image into an 8bit buffer, there was no warning when you copied it (the palettes would not match if the image didn't contain gpalette). Basically remaps an 8bit image to closest color match in gPal.
- Fixed a bug in 8 bit bitmap loading.
- Changed Pal to a property (so that it could be allocated as needed).
- Fixed PCX load in 24 bit to allow for pixel runs that extended past the current row.
- New Get1stPixel function (for transparency like Sprite button).
- CheckForTransparentColor function (to see if an image contains transparent color. If it does, then you need to worry about background information even if Alpha is 255).
- Fixed dithering with transparent color in CopyConvertBitDepth.
- Fixed error in copyscale bilinear (numbers weren't quite adding up, off by 1 so that a color value of 255 sometimes got copyscaled into 253... bad for transparency!).
- Screen wipes now time based (pass in milliseconds).
- CopyTransitionTransparent added (all bit depths: for alpha blend that ignores TransparentColor). Also done for particle fade copy (CopyParticleTransition).
- ConvertTo15 added (for 24 bit to 15 bit conversions, which can then be used in ColorTable to look up nearest 8 bit color).
- Corrected some errors in FrameRect clipping.
- GenerateRegion (with and without tolerance) added. Uses a buffer and TransparentColor to create a windows HRegion of the same shape (for shaped forms).
- Added an error check in LoadFromResFile (would cause access violation before if you put in an incomplete filename, since it would think it's a match and then assume data starts immediately after, where the immediate data is actually the remainder of the filename).
- RemoveStrayPixels procedure added. Will take stray pixels of TransparentColor and fill them with surrounding color, and also take odd pixels surrounded by TransparentColor and fill with TransparentColor (to speed up region generation, and get rid of "one off" pixels).
- ReplaceColorWithTolerance: Any color within 'tolerance' of 'oldColor' gets replaced with 'newcolor.' For region generation.
- ReplaceColorWithToleranceElse: If within 'tolerance' of 'oldColor' replace with newColor else replace with 'elseColor'. (reduces image to 2 colors for colorkey purposes).
- BRG from blitcolor: Finds (guesses in 16 bit) original 24 bit BGR clColor from blitcolored pixel value (e.g. pixel on a Surface).
- RotateBuffer: Rotates the image within a buffer (still clipped to original buffer rectangle though).
- SetFormAndTransparent: Specifies whether buffer is for a form or component (different optimizations for each regarding transparencies).
- SetNonBin: Sets the buffer's texturing functions to the slower, non-binary-value ones (faster if buffer is a power of 2, but use this if it isn't).
- Check added in SetToSurfaceRect for nil rect.
- Polygon Clip 2D no normals (for 2D clips that don't require normal calculations).
- PolyFillTextureAffineNonBin: Non-binary (i.e. not a power of 2 width) texturemap.
- RaycastFloorNonBin: For perspective-correct texturing (but only along y; x is still affine). For use with vertical 3D scrolling TfxTextBox.
- Transparency variants added for HlineAlphaGradient functions (for transparent color with source, or both source and dest, or none at all).
- Changes to TfxAnimatedGIF:
- Added Caption and Font properties (to display text on top of image).
- Property DefaultSize changed to AutoSize.
- Changes to TfxAnimation:
- Moved CurrFrame to public.
- Moved check in ChangeFrame to start of call (so that if you changed number of frames (to a smaller number of frames) in the animation since the last call, it won't try to draw a frame
outside the range).
- Fixed possibility of zero delay frame (which would freeze the animation).
- Changes to TfxButton:
- Added gray-out when Enabled is false.
- WordWrap is now handled.
- Changes to TfxCheckBox:
- CheckWidth/Height now clipped to width/height of control.
- Changes to TfxComboBox:
- Now only one combo box may be dropped down at a time.
- Fixed memory leak in CreateSurface (was creating children controls without checking for nil).
- Changes to TfxCustomControl:
- Seperated messages for TfxCustomControl and TfxGraphicControl. For TfxCustomControl they are now:
- DD_REBLITCOMPONENT_CC
- DD_COMPONENTCHANGED_CC
- DD_CLEARCOMPONENT_CC
Non-specific versions are now obsolete.
- PaintCaption added (to handle text drawing from CustomControl level, rather than each component individually).
- Added FontImageList property (for bitmap fonts).
- ParentTransColor pointer added (to keep track of parent's BitDepth specific TransparentColor (not 24 bit, but the BlitColor version).
- Added Transparent variable (boolean true if image contains transparentColor).
- Word wrap and text alignment functionality implemented (in PaintCaption).
- Ellipses drawing option added.
- Global CurrCC (last focused CustomControl; seperate last focused Edit, etc. no longer needed). CurrCC allows disabled/visible CustomControl to have SetFocus called, and then when visibility changes actually set focus then.
- Added a check to see if the DirectDraw object has been created to prevent a crash in CreateRuntimes.
- Added gray-out function.
- Removed SourceRect (was unnecessary due to BufferClass handling nil rects).
- Invalid blits removed.
- Cache position now reset to zero on load.
- TransparentColor properly set depending on loaded image's own transparent color (no point dithering the image's transparent color if it doesn't match form's TransparentColor).
- Changes to TfxDBCtrlGrid.
- Added MouseWheel for scrolling.
- ScrollBar now follows Home and End key changes.
- If DataSet was in Edit mode, previously it wouldn't update. Fixed.
- Added a check in Paint (to prevent access violations).
- Changes to TfxDBCyclicLabel:
- Click now returns from Edit mode.
- Changes in TfxDBToggleImage:
- Caption now hidden (holds URL).
- Changes to TfxDirectory:
- FileDialog mode added. (Doesn't change root directory when selecting files; simply returns to original directory once file is added.)
- RootDir, RelativePath: If used as FileDialog, when you select a file or cancel then you would reset back to the root directory. Relative path is always '' (nil) if it's not in FileDialog mode, so to load the specified filename you can always use:
- FxDirectory1.Relativepath + FxDirectory1.Items[FxDirectory1.Selected];
- Changes to TfxEdit:
- ReadOnly property added.
- Removed CurrEdit: made redundant by CurrCC.
- TagSize not in Delphi6; replaced with TSize.
- Gray-out added.
- Changes to TfxForm:
- Added Activated (boolean variable).
- Added RemoveStrayTransparentPixels property (for shaped/transparent form option).
- Added TransparentColorTolerance property (also for shaped/transparent form)
- OnDirectSoundError event added.
- DDInitialized global variable added (moved from local to fxForm).
- NoReload global variable added (similar to NoUpdate, but prevents images from reloading multiple times).
- Global ScrollTimer added.
- Global CurrScrollControl added (which control the ScrollTimer is applied to).
- Some transitions fixed (some of the transitions started incorrectly the first time)
- Different TransparentColors for each form now implemented.
- Fixed Surface mask ommisions (some instances of shaped form had components that spilled past edges).
- FullRepaint: changed DirectDraw check (ComSurface can be nil if fxDirectdraw isn't nil).
- Can now run with DirectDraw disabled.
- GenerateRegionAndMask: If Alpha is zero, form will now be a "shaped" form (region generated to cut out TransparentColor altogether).
- Region is now regenerated when Alpha changes.
- When TransparentColor is set, MaskSurface now reset. Image is reloaded.
- Changes to TfxGraphicControl:
- Split component messages for Custom and GraphicControl (DD_COMPONENTCHANGED_COLORKEY unchanged since no CustomControl used it):
- DD_REBLITCOMPONENT_GC
- DD_COMPONENTCHANGED_GC
- DD_CLEARCOMPONENT_GC
- Added PaintCaption (to handle text drawing from GraphicControl level, rather than each component individually).
- Ellipses drawing option added.
- FontImgList added (for bitmap fonts).
- Text alignment and word wrapping now handled.
- Removed SourceRect and ClosestColor.
- Added DisabledOpacity property (amount of gray-out).
- CreateSurface now passes Stream parameter.
- LeftOffset, TopOffset, BlitLeft, BlitTop no longer public.
- Removed illegal blits.
- After reading from stream, position is now reset to 0.
- Corrected transparent color dithering (no longer assumes ParentTransColor is always the color to be non-dithered, which it isn't for images containing their own transparency data).
- Changes to TfxImage:
- Changes to TfxImageButton:
- Fixed access violation in DrawButton (Surface might not be nil, but index of surface may be out of bounds).
- Changes to TfxImageListBox:
- Potential out-of-bounds access violation fixed in Update.
- Changes to TfxImgList:
- Added MultiFrame: specifies whether to use first frame on animated GIFs on list, or all of them.
- Changes to TfxListBox:
- MouseWheel support added.
- ScrollBarDisabled property: in case you wish to use an external scroll bar rather than the built-in one.
- Now only one list box can be dropped down at a time.
- Fixed error with duplicate opacity on imageless scroll buttons.
- Application.ProcessMessages within closed loop no longer used for scrolling (timer events now used for greater compatibility).
- Added "next item" key press: when you hit 'L' on the keyboard it will scroll down to the first instance of an item beginning with L. Then hitting L again will bring you to the next one, and so on.
- Changes to TfxPanel:
- Added ImageRotation: rotate the background image.
- Added gray-out on disabled.
- Added DisableOption property: disable (gray out) the entire panel or just the controls on it.
- Changes to TfxScrollBar:
- Timer-based now (like ListBox).
- Added OnChanging event.
- Changes to TfxSpriteButton:
- Fixed problem of accidentally dithering the first color in an image (and it didn't match ParentTransColor).
- Used SBList (SpriteButtonList) to fix problem of infinite loop of messages (when you clicked on overlapping transparent areas of two sprite buttons).
- Changes to TfxTextBox:
- Internally the text is now stored in an array of strings rather than one large string. This should speed up access for extremely lengthy content.
- PixelScroll and Scroll3D added.
- Added WordBreakChars which allows the user to customize how the text is word-wrapped.
- DoChoiceModal has been removed due to conflicts. However DoChoice still functions properly.
| |