Jump to content

SmoothText 1.1.8


Recommended Posts

I'm sort of taking a break from TClock3 until I figure out how best to proceed, but in the meantime here's a new version of SmoothText. this program performs subpixel antialiasing on Windows 2000 and NT4. It's not quite ClearType™, but it isn't bad. This version has some bugfixes that make it pretty usable.


Savefile deletes inactive files after 30 days, so get it while it's hot.

Changes (0.1.7)

- Drawing improvements: no more garbage in Firefox when you open and close bookmarks

- Stopped it from trying to work on printer display contexts

- Fixed some problems with centered text

- Added an admitted hack that might help with Firefox

- Stability improvements

- Added exported methods so TClock3 can cooperate with it

Changes (0.1.8)

- Made lots of little code changes to make it thread-safe and it seems to FINALLY have fixed the Word 2000 bug!

Changes (0.1.9)

- Made lots of optimizations to try to wring every bit of performance out of it.

Changes (0.2.0)

- Fixed several crash bugs that let it work with Firefox 3. Also fixed some rendering problems and made some speed improvements.

Changes (0.2.1)

- Fixed a regression bug introduced in the last version that caused repainting glitches.

Changes (0.2.2)

- Made a change to how this works with TClock3 0.3.5. You'll need this version to use SmoothText with TClock3 0.3.5.

Changes (0.2.3)

- The program will treat Courier New differently that hopefully will solve the problem of blank characters, but will also unfortunately introduce some blur into the font (it scales it evenly and then scales it down vertically).

- Limited the program further to only operating on TrueType fonts.

Changes (0.2.4)

- Fixed a caching bug that caused Courier New to not show up correctly in some circumstances.

Changes (0.2.5)

- Massive optimizations to rendering. Sped up existing code, added MMX support, and added SSE2 support.

Changes (0.2.6)

- Yet more speed improvements to MMX and SSE2 code.

Changes (0.2.7)

- Separated MMX and SSE implementations to try to cover more CPU's

- Bugfixes in MMX and SSE code

- Speed improvements for SSE2, SSE, MMX code

Changes (0.2.8)

- Fixed a major bug in font creation. This seems to fix problems where some fonts are WAY too big vertically.

Changes (0.2.9)

- Fixed rendering problem with Office XP and Office 2003 (probably affected a lot of other apps too).

- Increased the maximum point size that the program will process from 24 to 36 points (if I let it process with no limit, some programs -- like MS Word 2000 -- crash if the font is REALLY large).

Changes (0.3.0)

- Fixed a problem with Courier New fonts on Office XP and Office 2003. The font wasn't being positioned properly.

- Check boxes, radio buttons, etc. won't appear with weird rainbow effects (I do this by excluding the Marlett font).

- Added a drop-down to the Configure popup window. This lets you select between RGB and BGR LCD types. The vast majority of LCD screens are of the RGB type (the default), but the setting is there now for anyone who has the other type. You'll have to close and restart SmoothText for the change to take effect, and it now says this on the popup window.

- If SmoothText is running, it won't let you run it again (it will pop up a message telling you that it is already running).

Changes (0.3.1)

- Made a minor change to the code that reads the registry settings to try to prevent any crashes.

Changes (0.3.2)

- Fixed a bug that caused the text to appear incorrectly when scrolling in Windows Explorer in Thumbnail view.

Changes (0.3.3)

- Added a section to the Configuration popup that lets you add or remove problem fonts to be treated the way SmoothText has treated Courier New. It will initially contain Courier New in the list when you first use it.

- Made some changes so the program will not try to antialias fonts that aren't drawn horizontally. It checks both for fonts that are created with a nonzero escapement (this wasn't easy) and checks for device contexts that are using transformations that result in non-horizontal fonts. This fixes problems with CorelDraw.

- Extended the fix in version 0.3.2 to some code sections that were also affected.

Changes (0.3.4)

- Version 0.3.3 introduced a real speed lag in the code that tried to detect fonts with nonzero escapement. Made a small design change that fixed the problem.

Changes (0.3.5)

- Ported some code from Bochs that lets me construct proper trampoline code for overriding DLL routines. The code runs significantly faster as a result.

Changes (0.3.6)

- Fixed a bug in the new trampoline code that was keeping it from working. (sigh) This is what I get for refactoring.

Changes (0.3.7)

- Squashed yet another bug that might have been causing some weird slowdowns.

Changes (0.3.8)

- Major code cleanup.

- Fixed several inefficiencies in the code.

- Added support in the configuration window for building a list of fonts to completely ignore rather than having it hardcoded. The list will initially contain Marlett.

- Fixed some bugs, hopefully the slowdown bug is finally fixed.

Changes (0.3.9)

- Complete reorganization of all code: it now has a much better, more modular design

- Per-character width control

- Placement of characters on pixel boundaries (this plus the above should make for perfect character tracking when typing)

- Slight speedup of SSE2 code

- Removed DirectX use (I left the code that uses it there just in case, but it doesn't call it)

- Better character width calculations (should make text a bit clearer)

- Added option for painting over static controls, buttons, check boxes, radio buttons, and list boxes (I tried menus but couldn't make it intercept all messages)

Changes (0.4.0)

- Borrowed some hashing code and implemented a faster mechanism for caching character widths. Overall operation should be much faster now.

Changes (0.4.1)

- Emergency update to fix a bug in the caching code that was causing crashes.

Changes (0.4.2)

- Slight optimization to the character caching mechanism

- If Explorer crashes and is restarted, the SmoothText icon will reappear in the system tray.

Changes (0.4.3)

- Fixed a bug in character width caching that was causing the last character to be chopped in Firefox 3

- Added string width caching to improve performance.

Changes (0.4.4)

- Made some changes to the internal caching to try to fix some crashing issues.

Changes (0.4.5)

- Made a very slight tweak to the text rendering since my filter wasn't optimal.

- Changes made in the Configure popup can now take effect immediately. Added Ok, Cancel, and Apply buttons to control this.

- Fixed a bug in a rendering routine (that would only be used if you had a non-MMX CPU -- does anyone even have those anymore?)

Changes (0.4.6)

- Fixed a bug where ExtTextOut would act as if you were clipping to a rectangle if you specified ETO_OPAQUE but not ETO_CLIPPED.

- Fixed a bug where closing an application could result in an exception being thrown.

- Stopped it from caching zero-length strings or strings where the length turned out to be zero for some reason.

Changes (0.4.7)

- Fixed a problem where ExtTextOut wouldn't grow to the given Rect (if there is one) if ETO_OPAQUE was specified but not ETO_CLIPPED.

- Improved trapping of buttons, static controls, and list boxes. Even if they are subclasses and don't have the original WndProc or classname anymore, SmoothText can superclass them (though if they use a non-TrueType font like MS Sans Serif SmoothText still can't do anything to them).

Changes (0.4.8)

- Bugfixes in the code that traps existing controls to avoid potential crashes.

- Better detection of controls that have been subclassed (and are being painted differently) so SmoothText won't interfere with skinned controls.

- The SmoothText program itself will now respond to settings changes.

- Internal architecture improvements.

Changes (0.4.9)

- Fixed a potential crash problem that I missed in the 0.4.8 update.

- Added capability to override non-skinned tab controls when the tabs are being painted as toolbar buttons. This affects the Windows taskbar text. One compromise I had to make is how selected buttons are painted: Windows normally uses a crosshatched pattern, but the subpixel antialiasing process would corrupt it in the rectangle where the text is painted. If the screen is using 16-bit color or higher, SmoothText will instead paint a solid color that is the equivalent of the crosshatched pattern (the average between the button face and button highlight system colors).

Changes (0.5.0)

- Fixed a bug where Explorer could hang if you have "override standard controls" enabled and you open the Control Panel from the Start menu (ugh...don't ask)

- Fixed several painting issues with the Windows Taskbar when standard controls are being overridden.

- Changed the font scaling algorithm. Font widths should be much closer to the original font widths such that dialog boxes should look better. Previous versions were drawing many fonts too wide.

- Fixed several painting bugs where some dialog box controls wouldn't appear or would be painted over.

Changes (0.5.1)

- Fixed a bug that was causing some dialog boxes to change their width.

- Fixed a bug that was causing controls in group boxes to not appear.

Changes (0.5.2)

- Fixed a crash bug that could happen when using Unicode.

- When standard controls are overridden, some controls will now send WM_CTLCOLORBTN messages to their parent windows (as they should), and use the results.

- Radio buttons and check boxes will paint to a different DC if one is passed in WM_PAINT's WParam.

- Added font substitution. If it's enabled and SmoothText encounters a font that you list, it will use another font instead. The default setting is MS Sans Serif --> Microsoft Sans Serif.

- Redesigned the configuration popup. It now provides explanations of all functions and has them broken up more logically.

Changes (0.5.3)

- Fixed some rendering weirdness in the taskbar when standard controls are being overridden.

Changes (0.5.4)

- Code changes to prevent several potential crash bugs.

- Lots of code cleanup.

- General code improvements that arose from making some code common with TClock3.

- Fixed painting the focus rectangle when radio buttons and check boxes are being overridden.

Changes (0.5.5)

- Fixed a text-height metrics bug introduced in version 0.5.4.

Changes (0.5.6)

- Added a checkbox that lets you disable subpixel antialiasing without having to close SmoothText.

- Redesigned several internal code portions which resolves some thread contention issues.

Changes (0.5.7)

- Sped up the text-size caching mechanism by limiting cache size.

Changes (0.5.8)

- Fixed the problem with text on the taskbar when a window is minimized by clicking on the taskbar.

- Fixed several bugs around caching font metrics.

- Increased the text-width cache to 4096.

- Redesigned several caching mechanisms for optimization. Speed has dramatically improved as a result.

Changes (0.5.9)

- Fixed a bug that could cause the text cache to become corrupted.

Changes (0.6.0)

- Made a lot of optimizations to the caching mechanism.

- When SmoothText is started and whenever settings are changed, the desktop should repaint.

- Made an improvement to button painting when they are being overridden.

Changes (0.6.1)

- More speed improvements to the caching mechanism.

- Made an optimization to the way I erase the internal double buffer. It now only erases what it absolutely needs to rather than erasing the entire buffer. Also implemented an MMX-optimized version that will be used when the CPU supports it (which should be just about everyone).

Changes (0.6.2)

- Improvements to the way buttons are painted when standard controls are being overridden.

- Improvements to the way list boxes are painted when standard controls are being overridden.

- Made a change to try to fix the taskbar font bug.

Changes (0.6.3)

- Added support for smoothing text on pop-up and drop-down menus, but top-level menu bars are not altered (it looks like that will be rather difficult).

Changes (0.6.4)

- Slight speed improvement to text functions.

- Fixed some problems with owner-drawn menus.

Changes (0.6.5)

- Fixed a bug introduced in 0.6.4 where resources would not be freed.

Changes (0.6.6)

- More changes to try to fix a painting bug that was apparently introduced back in version 0.6.2.

Changes (0.6.7)

- Made a lot of improvements to menu painting.

- Some more minor speed improvements to text functions.

Changes (0.6.8)

- Attempted to speed up drawing text when the text is set to transparent (tried to speed up the process that reads from the destination and stretches it to the internal drawing buffer). Implemented 486 and SSE2 versions which will be used as applicable (MMX and SSE didn't help over basic 486 assembler).

- Attempted to speed up drawing text when the text is set to opaque (sped up the code that fills the internal buffer with the background color). SSE2, MMX, and 486 assembler versions will be used where applicable.

- Fixed some problems when rendering disabled radio buttons and checkboxes.

- Fixed some problems when rendering icons on menu entries.

Changes (0.6.9)

- Revised handling disabled radio buttons, checkboxes, and static controls. The fix made in 0.6.8 "works", but wasn't really the right way to do it.

- Modest speed improvement to all text functions.

- Fixed problem with Firefox 3 setup hanging (it was a general problem with supporting multithreaded applications).

Changes (0.7.0)

- Fixed a resource leak in the code that paints tab buttons.

- Made a small change that hopefully will fix the tab font bug.

Changes (0.7.1)

- Fixed another resource leak in the tab painting code.

- Fixed a regression bug where subclassed components were being clobbered (SmoothText should let them paint themselves).

- Moved the "override standard controls" setting to an Extras tab in the configuration popup.

- Put in a slider and a "Default" button on the configuration popup where the "override standard controls" setting used to be. The slider will let you change the energy distribution in SmoothText's algorithm, with no speed loss. A small window with some text will show you the effect of the setting.

- Added a "Configure" button alongside the "override standard controls" setting (reminder: it's now on the Extras tab). This will let you configure any additional settings or enhancements that are specific to overriding standard controls. Currently there is one setting: if checked, SmoothText will "highlight" buttons, check boxes, radio buttons, and tab buttons when the mouse moves over them.

- Attempted to make a version of SmoothText that will run on Windows NT 4.0. If SmoothText detects NT4, it will load a different smoothing DLL that tries to avoid linking to any Win2k-specific API calls.

Changes (0.7.2)

- Fixed a bug where messages weren't being broadcast properly. Now all applications will be notified of changes to settings.

- Fixed some bugs around highlighting standard controls.

- Implemented gamma correction. On the configuration popup, there are now TWO sliders: the first one from version 0.7.1 that sets the energy distribution width and one below it that sets the gamma correction value. The default gamma value is 1.0, and it can be adjusted in the range 1.0...3.0 with 0.1 increments. Any value other than 1.0 will incur a very modest performance loss since it means the program must apply gamma correction (I haven't made any measurements but I'm not noticing any real slowdown).

- Made some more changes to try to get the program working with Windows NT 4 (hard to know if it will work yet until my copy arrives in the mail).

- Made a change to the sample text next to the adjustment sliders. It should be more informative now of the effects they will have.

- Doubled the number of steps for the energy distribution adjustment slider. Users of version 0.7.1 should re-check their setting as they will have to change it.

- Added text to show the current value of the two adjustment sliders as well as what they adjust.

Changes (0.7.3)

- Made some improvements to icon positioning when drawing menus.

- Fixed a problem with drawing owner-drawn menu elements when the element opens a sub-menu.

- Made some more changes to try to get SmoothText working on Windows NT 4 (untested).

- Added a Windows 98 version. SmoothText "runs", but text isn't affected yet. This is still experimental and obviously not complete.

- Internal code improvements: moved control-painting code to its own unit and placed it in a class.

Changes (0.7.4)

- Fixed a problem with font caching where the program wouldn't differentiate between fonts with the same height but different widths.

- Fixed several potential divide-by-zero crash bugs.

- Fixed a problem with non-Roman fonts not being rendered correctly (Wingdings, etc.)

- Added a Tuning tab to the configuration popup and moved the energy distribution and gamma settings there.

- Added an option to the Tuning tab to force characters to fit into the original, un-smoothed character cells. This might make letter spacing look uneven but produces expected results for applications.

- Added an option to the Tuning tab to alter overall font width scaling. The default value is 100%, variable between 80% and 120%. It affects all fonts system-wide. If the force-cell-width option is checked, letter widths will change but they will still be forced to fit into original cells.

- Added a font-selection drop-down to the area that displays test strings on white, gray, and black backgrounds. The test area will reflect the selected font and will grow or shrink to accommodate the text.

Changes (0.7.5)

- Added a Width Bias setting to the Tuning tab. When SmoothText creates fonts, the setting causes it to bias the width accuracy toward either the narrowest or widest characters in the font.

Changes (0.7.6)

- Fixed a bug in the hash code that could cause display corruption.

Changes (0.7.7)

- Made another change and SmoothText now works under NT4. However, overriding standard controls doesn't work correctly (yet).

Changes (0.7.8)

- Changed the font substitutions tab so that selecting a font in the list will display it in an edit field above, and it is the text in the edit field that determines what gets added to the substitution list. This is so you can type in font names that don't show up in the list (e.g. MS Shell Dlg).

- Added "System" and "MS Shell Dlg" as default fonts to substitute to Microsoft Sans Serif. These must be substituted for SmoothText to work on Windows NT4. NT4 users might still have to change the destination font since NT4 might not have Microsoft Sans Serif. When these two fonts are substituted correctly, overriding standard controls works well on NT4.

- Added code to handle the case where ExtTextOut is called on NT4, ETO_OPAQUE is specified, but a bounding rectangle is not. NT4 does not handle this case, so SmoothText will create its own bounding rectangle so text will be rendered properly.

- Improved menu rendering on NT4 (still not perfect, but much better).

Changes (0.7.9)

- Overhauled internal architecture to support new features.

- Fixed a bug in handling static controls that was causing WinRAR to not respond unless the mouse was moved over it.

- Added support for translucent taskbars in Windows 2000 (untested on XP). Translucent taskbars can only be enabled if overriding standard controls is also enabled.

Changes (0.8.0)

- Fixed some thread contention issues that can arise when using the translucent taskbar.

Changes (0.8.1)

- Lots of internal changes to try to improve stability of translucent taskbars.

Changes (0.8.2)

- Lots more internal changes to try to improve stability.

- If SmoothText detects an exception under certain circumstances, it will log it to a text file in the C:\ folder, broken down by process ID.

- If standard controls are being overridden, SmoothText will also smooth the text on window title bars.

Changes (0.8.3)

- Made some improvements to handling of window titles -- it will not catch more cases.

- If SmoothText catches an exception when a window message is being processed, it will log the message details.

Changes (0.8.4)

- Improvements to tab control rendering.

- Put in a small tweak to try to prevent exceptions in rare cases.

- Improved logging in the case that an exception is caught.

Changes (0.8.5)

- SmoothText will now handle captions longer than 255 characters.

Changes (0.8.6)

- Made some internal changes to button painting (not a functional change, it only separates painting from setting up painting). It is the first step toward making a skinning engine possible.

- When the program catches and logs an exception, it will try to log some basic information as to where the exception occurred.

Changes (0.8.7)

- Fixed a problem in the tab painting code that was causing exceptions.

Changes (0.8.8)

- Fixed a problem where clicking on menus wasn't working properly.

- Improved logging when an exception is caught.

- Made a LOT of internal changes to try to improve stability.

Changes (0.8.9)

- Fixed menu accelerator bug.

Changes (0.9.0)

- Improved handling of different owner-drawn menu item states

- If the menu owner window contains a SHELLDLL_DEFView window, send WM_DRAWITEM messages there instead (fixes Firefox 3 crash when trying to create a new folder in an open/save dialog).

Changes (0.9.1)

- Switched to the FastMM memory manager which seems to make the program a lot more stable.

- Added a (so far very incomplete) skinning engine, which can be enabled from the popup for configuring how SmoothText overrides standard controls. Until the engine is complete, visual glitches should be expected.

- Included a "Skins" folder and a sample skin .ini file. The skin itself is not included, as it is copyrighted, but the .ini file should serve as a roadmap for users until a skin editor and importer can be written. It demonstrates nearly all aspects of the .ini format.

Notes for the skin .ini files:

(1) When using images with color-key transparency, set Transparency to ColorKey in the image entry.

(2) Animation isn't yet enabled, so only the images' starting frame will be used.

(3) [colorx], [iMAGEx], and [COMPONENTx] section names aren't important as long as they're unique and begin with COLOR, IMAGE, and COMPONENT, respectively. The engine doesn't parse the section names; anything after what's required is only for making them easy to understand for people who would read the file.

(4) Since there is no documentation for the .ini format yet, users should consult SkinPainter.pas for more help. The code that parses the .ini files is toward the beginning of the file.

Changes (0.9.2)

- Redesigned the hash code which fixed a lot of stability problems.

- Fixed a minor problem with start menu arrows.

Changes (0.9.3)

- Added support for skinning status bars.

- Fixed several GDI leaks that were causing problems when overriding standard controls.

- Redesigned part of the caching mechanism to fix bugs and improve simplicity and reliability.

- Redesigned access to the behavior message dispatcher to improve reliability.

Changes (0.9.4)

- Fixed a bunch of thread-safety issues that could cause crashes.

- Made some minor code improvements to GDI caching.

Changes (0.9.5)

- Made some more thread-safety improvements.

- Fixed a hash bug that would have caused instability problems.

- Redesigned the code that paints standard controls to try to eliminate the possibility of GDI leaks.

- Fixed a couple of GDI bugs where the wrong parameter was being used.

Changes (0.9.6)

- Added a little code that hopefully will prevent crashes on multiprocessor systems (taking a wild guess as I don't have one).

Changes (0.9.7)

- SmoothText won't bother changing the process affinity for single-processor systems.

- Added calls to FlushInstructionCache when changing process affinity for multi-processor systems (thanks, Tihiy!)

Changes (0.9.8)

- Improved thread-safety in several places.

- Improved text-drawing performance.

- Cleaned up a lot of code to eliminate the possibility of future bugs.

Changes (0.9.9)

- Fixed problems with crashing on multi-core CPU's

- Fixed a bug where saving a skin setting wouldn't work (using skinning should work now).

- Fixed a bug where enabling/disabling font substitution wouldn't enable the "Apply" button.

Changes (1.0.0)

- Fixed a GDI leak in the toolbar drawing code.

- Fixed a GDI leak in the taskbar buttons drawing code.

- Made the Targa loading code thread-safe.

- Fixed a Firefox 3.5 bug where text wouldn't be rendered.

- Added support for skinning up-down controls.

- Got rid of some duplicate text-drawing code.

- Fixed the rebar position when skinning is on and the Start button changes size.

- Fixed a bug where SmoothText wouldn't notice a change in screen resolution.

- Added a standalone program called SmoothTextConfig.exe that can configure SmoothText without actually starting it.

- Added settings for controlling which controls to override when using Override Standard Controls.

- Fixed several bugs in tracking mouse movement.

- Added code to make sure to use the thread-safe memory manager.

- When SmoothText logs anything, the name of the log file will include the process name.

- Added support to the skinning engine to support changing Windows system colors.

- Added a new skin .INI file for Alysseum Plus - Charger skin.

- Updated sample skin .INI files to show how the new skin engine enhancements are used.

Changes (1.0.1)

- Added Uber skin that tries to look like WIndows 7. Thanks to Tripo for donating it!

- Added support for skinning track bars.

- Completed support for skinning tabs.

- Made some changes to skin image selection that should fix problems for mouse over images.

- Drawing disabled toolbar buttons will now paint grayed-out icons.

- Added support for painting toolbars using supplied device contexts. This fixes toolbar problems in some programs.

- Made a change to how the clock is drawn to try to fix a painting bug.

- If highlight standard controls is enabled, moving the mouse over window decorations (help, minimize, maximize, close buttons) will highlight them.

- Made a lot of small code changes to try to make the code more robust.

- Fixed a potential stability bug in the text rendering code.

- Improved detection of rotated fonts.

- Fixed a bug in the font-caching code where the program wouldn't properly detect that a font had been cached.

- Fixed a bug in determining whether to call BeginPaint() or just get the window DC when asked to paint a control.

Changes (1.0.2)

- Fixed start button painting glitches.

- Fixed taskbar painting glitches.

- Fixed drop-down menu painting glitches.

- Fixed toolbar painting glitches.

- Fixed rebar painting glitches.

- Fixed status bar drag corner skinning.

- Added support for drop-down menu background and selected item skinning.

- Improved initial taskbar skinning when SmoothText is started.

- Added support for skinning combo boxes.

- Added support for skinning group boxes.

- When dialogs are set to be skinned, scrollbars will also be skinned (except for when they are being dragged).

- Added support for start button overlay images that can extend beyond the taskbar borders.

- Fixed bugs where turning off certain skinning features wasn't being completely followed.

- Fixed a bug in loading Targa images.

- Updated Tripo's "Uber" skin to reflect the new features well as improved the skin overall.

- updated other skin .INI files.

- Fixed several memory leaks.

- Lots of stability improvements.

Changes (1.0.3)

- Improvements to try to eliminate some minor memory leaks.

- Fixed a bug in skinning drop-down menus.

- Improved Gridlok.ini skin file.

Changes (1.0.4)

- Added support for image animation, that is, the EndingFrame setting now works. Added a "TimeInterval" setting that allows the frame time in milliseconds to be set. The default value is 100 if it isn't specified.

- Updated the "Uber" skin to have an animated Start button when the mouse is over it.

- Updated Grilok.ini to use the animated Start button.

Changes (1.0.5)

- Added support for skinning tooltips, including alpha-blended tooltips.

- Added support for alpha-blended drop-down menus.

- Added support for drop-down menu overlay images.

- Added support for start button overlay images, with new fields:

- OffsetX...............horizontal offset of the overlay with respect to the Start button

- OffsetY...............vertical offset of the overlay with respect to the Start button

- Added [CONFIG] skin group with the following settings:

- FolderName............specifies the folder that contains all skin resources...crude way of creating a substyle

- Added [METRICS] skin group with the following settings:

- Taskbarheight.........specifies how wide the taskbar should be.

- ClockTextOfsX.........shifts the clock text position left or right

- ClockTextOfsY.........shifts the clock text position up or down

- TaskbarIconWidth......specifies the width of icons on the taskbar

- TaskbarIconHeight.....specifies the height of icons on the taskbar

- ClockWidth............specifies the minimum clock width

- ClockHeight...........specifies the minimum clock height

- ClockSizeUnits........specifies whether ClockWidth/ClockHeight specify pixels or points

- StartButtonXOfs.......shifts the start button left or right

- StartButtonYOfs.......shifts the start button up or down

- MultilineTaskText.....when set to 1, causes taskbar buttons to show multiple lines of text

- CaptionMinLeftInset...specifies the minimum number of pixels between a window's left edge and the caption text

- CaptionMinRightInset..specifies the minimum number of pixels between a window's right edge and the caption text

- CaptionIconInset......specifies the number of pixels between the window caption and the icon or any buttons

- CaptionIconLinked.....when set to 1, causes the window caption to shift to accommodate a window icon if there is one

- Added support for skin fonts. Each font must be specified in a [fontx] group:

- ID....................unique ID, similar to ID in and [iMAGE] blocks

- Face..................font name

- PixHeight.............height in pixels

- PointSize.............height in points

- Bold..................0=normal, 1=bold

- Italic................0=normal, 1=italic

- Added new settings usable by each [COMPONENT] section:

- Font..................the font ID to use for that component

- ImageMaximized........Image to use for window buttons, captions, etc. when the window is maximized

- ImageNoMaximize.......Image to use for window buttons, captions, etc. when there is no maximize button present

- ImageNoMinimize.......Image to use for window buttons, captions, etc. when there is no minimize button present

- ImageNoMaxMin.........Image to use for window buttons, captions, etc. when there are no maximize or minimize buttons present, but there is a help button present

- ImageCloseOnly........Image to use for window buttons, captions, etc. when there only a close button present

- ImageNT4..............Image to use when running on Windows NT 4 (e.g. non-alpha-blended tooltips, menus, etc.)

- OffsetX...............Used by window buttons, captions, etc.

- OffsetY...............Used by window buttons, captions, etc.

- OffsetXMaximized......Used by window buttons, captions, etc. when the window is maximized

- OffsetYMaximized......Used by window buttons, captions, etc. when the window is maximized

- OffsetXNoMaximize.....Used by window buttons, captions, etc. when there is no maximize button present

- OffsetYNoMaximize.....Used by window buttons, captions, etc. when there is no maximize button present

- OffsetXNoMinimize.....Used by window buttons, captions, etc. when there is no minimize button present

- OffsetYNoMinimize.....Used by window buttons, captions, etc. when there is no minimize button present

- OffsetXNoMaxMin.......Used by window buttons, captions, etc. when there are no maximize or minimize buttons present, but there is a help button present

- OffsetYNoMaxMin.......Used by window buttons, captions, etc. when there are no maximize or minimize buttons present, but there is a help button present

- OffsetXCloseOnly......Used by window buttons, captions, etc. when there only a close button present

- OffsetYCloseOnly......Used by window buttons, captions, etc. when there only a close button present

- AnchorPoint...........Determines how the OffsetXYZ values above are used. Valid values are NW, N, NE, E, SE, S, SW, W, corresponding to window edges/corners.

- Added new settings to the [iMAGEx] group (used mainly for shadows):

- NonClientExtraRectLeft.......specifies extra pixels that should lie outside the component content area

- NonClientExtraRectTop........specifies extra pixels that should lie outside the component content area

- NonClientExtraRectRight......specifies extra pixels that should lie outside the component content area

- NonClientExtraRectBottom.....specifies extra pixels that should lie outside the component content area

- Added new settings to the [sYSTEMCOLORS] group:

- GrayText

- AppWorkspace

- InfoText

- InfoBk

- HotLight

- Added new skinnable components:

- DropDownMenuOverlay

- StartButtonOverlay

- ToolTip

- WindowsExplorerIconsSmall

- WindowsExplorerIconsLarge

- InternetExplorerIconsSmall

- InternetExplorerIconsLarge

- ExplorerIconGo

- ProgressBarHorzBackgroundGlyph

- ProgressBarVertBackgroundGlyph

- BorderTop (alpha-blended borders not yet supported, use "disabled" state for inactive windows)

- BorderBottom (alpha-blended borders not yet supported, use "disabled" state for inactive windows)

- BorderLeft (alpha-blended borders not yet supported, use "disabled" state for inactive windows)

- BorderRight (alpha-blended borders not yet supported, use "disabled" state for inactive windows)

- Close

- Maximize

- Minimize

- Help

- Restore (positioning is based on maximize and minimize buttons)

- SystemIcon

- WindowCaption (text/font support only for now)

- Added support for transparent desktop icon text, with optional shadows. The shadow color will be either black or white, based on the text color.

- Added the ability to force the desktop icon text color to a specific color.

- Added support for custom Windows Explorer and Internet Explorer icons (small, small hot, large, large hot, "Go", "Go" hot)

- NOTE: use Daedalus2 to get 32-bit icons to show up properly -- included with SmoothText

- The ContentLeft and ContentRight image settings can be used to cause QuickLaunch buttons to be widened.

- The ContentLeft image setting can be used to create a system tray portion to the left of the tray icons.

- Updated skin .INI files to use the new features.

- Expanded the Uber skin to use the new features.

- Added two new skins, Dark Star and Neptunium. Dark Star has light and dark variants. Neptunium is incomplete, but is usable (perhaps someone would care to expand it?).

- Updated Windows NT4 support -- nearly everything works in Windows NT 4. The main difference is that NT4 doesn't support alpha-blended windows, so it can't handle alpha-blended tooltips or menus.

- If you have SmoothText set to repaint the window caption, it will calculate a gradient color for titlebars and draw them with a gradient fill. If you set your active caption color to red=10, green=36, blue=106 in your Windows Display Properties applet, it will look very close to Windows 2000.

- Created an alpha-blended tooltip image for the Gridlok skin.

- Dozens of bugfixes...just about every part of the program has seen fixes.

Changes (1.0.6)

- Improved tool window support.

- Fixed some freeze bugs that cropped up in Visual Studio 2005.

- Fixed a bug in 1.0.5 that broke symbol fonts.

Changes (1.0.7)

- Added some missing source files.

- Fixed another potential freeze bug.

- Added a new skinnable component: CloseToolWindow

- Upgraded the Uber skin to handle tool window close buttons.

Changes (1.0.8)

- Regenerated the localizer files and added the localizer project sources.

- Added a new skinnable component: DropDownMenuSeperator.

- Added a menu separator image to the Dark Star skins.

Changes (1.0.9)

- Tweaks to program translation support.

- Fixed a problem with windows not repainting properly.

- Fixed a problem with tab button icons not being positioned properly.

Changes (1.1.0)

- Fixed a memory leak in my hash code.

- Improved support for window border skins.

- Started adding support for alpha-blended window borders (not ready for general use, but ok to play with for now).

- Added an Uber_alpha skin that demonstrates alpha-blended border progress to date.

Changes (1.1.1)

- Fixed some problems with settings not showing up properly in the configuration dialogs.

- Added a secondary correction to "problem" fonts that greatly improves how they look (like Courier New). This should fix a problem with problem fonts being too light.

- Improved taskbar handling. If the taskbar skin is thick enough that more than one row of system tray icons will fit, SmoothText will use as many rows as it can instead of only one row.

Changes (1.1.2)

- Made some speed optimizations to the skinning engine.

- Fixed a bug with taskbar toolbars being erased if override standard controls is on but skinning is off.

- Fixed the clock painting glitch in NT4.

Changes (1.1.3)

- Improved support for alpha-blended window borders.

- Fixed a bug in loading 256-color .BMP images where the first color in the color palette would be corrupted.

- Improved support for thinner-than-normal taskbars.

Changes (1.1.4)

- Fixed a deadlock that could cause applications to hang if alpha-blended menus, tooltips, or window borders are used.

- Minor improvements to alpha-blended window support.

Changes (1.1.5)

- Made some improvements to alpha-blended window border support.

- Made lots of general speed improvements.

Changes (1.1.6)

- Optimized some drawing code for MMX and SSE2.

Changes (1.1.7)

- Fixed some bugs in the new speed optimizations from version 1.1.6.

- Added further optimizations for CPU's that support SSE4.1.

Changes (1.1.8)

- Fixed Firefox 4 compatibility.

Edited by WildBill
Link to comment
Share on other sites

Looks very well and stable to me! :thumbup

When i'm trying to compile DLL under Delphi 7, there is LongBool/BOOL type mismatch in MyGetCharacterPlacementA and MyGetCharacterPlacementW. If i change them to Integer (as it should be i think), it compiles ok (137KB instead of 191KB), but crashes at startup. Is it your fault or my fault? What could cause those crashes with D7?

Link to comment
Share on other sites

Integer may work, but LongInt or LongWord are safer as they explicitly specify that it's four bytes in size. I'm using Delphi 6 Pro rather than D7. I would guess that it's probably your project (compiler) settings. This is what I have:


You could try changing all "Integer" references in my file to "LongInt" to be safe...

Edited by WildBill
Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...
  • 3 weeks later...
Looks very well and stable to me! :thumbup

When i'm trying to compile DLL under Delphi 7, there is LongBool/BOOL type mismatch in MyGetCharacterPlacementA and MyGetCharacterPlacementW. If i change them to Integer (as it should be i think), it compiles ok (137KB instead of 191KB), but crashes at startup. Is it your fault or my fault? What could cause those crashes with D7?

Tihiy, have you had any progress compiling it in Delphi 7? SmoothText is a very simple program and should compile without much trouble...

Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...

Very cool program. When composing a new message (such as right now), the characters seem a bit skewed with respect to the cursor. To top it off, even after the program is closed out, some editing functionality seems to go away. Also, when composing email using yahoo, I cannot see the lowercase k character. When selecting text using notepad2, I cannot select entire lines of text.

Link to comment
Share on other sites

  • 2 months later...

New version 0.1.9 posted. Please see the top post in the thread for details. I've been testing this one for a while to make sure it's stable, and I'm comfortable with it.

Link to comment
Share on other sites

  • 2 weeks later...

SmoothText 2.0 will be coming soon. I have a version working with FireFox 3 that I'm currently testing. It has extensive improvements in place and will be released as soon as I'm satisfied that it's ready. Just an FYI since I know that earlier versions don't play well with FF3.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...