November 23 - FOX STABLE 1.6.59
|
- GIF loader bug fix for local colormaps.
- C++ register reserved word warnings fixed..
August 15 - FOX DEVELOPMENT 1.7.85
|
- New PNG image support. First, its faster! Also, it no longer requires libpng; the PNG format support is
now built-in, although the libz compression library is still required [for now...].
- fxsavePNG() supports some fine-control via new save-flags. You can analyze the image, and shrink output
by taking advantage of image features; for example, saving opaque image means alpha-channel may be dropped.
If the image is gray-levels only, the RGB may be dropped to plain gray only. Also, shrinking further by emitting
colormapped [indexed-color] image is possible if only a few colors are used. Finally, pre-compression filtering,
as well as desired compression level can be selected.
- PNG I/O is optimized with when target ISA x86-64-v2 or higher are selected.
- FXStat::isSame() checks if two files are the same (same inode).
- FOX Desktop Calculator augmented with Unicode button labels (please select a font that has
the math symbols!), also now supports additional functions, common physics constants, and other features.
- The fxCPUFeatures now can detect AVX512 presence.
- New FXPerformanceCounter and associated macros may be used to count clockcyles of critical code segments.
- FXAtomic.h APIs now mostly inlined for lower overhead.
- Read processor ticks on AARCH64.
- Adie text editor undo buffer size and undo buffer items can now be configured.
- New QOIF (Quite OK Image Format) now supported for either images (FXQOIFImage) or icons (FXQOIFIcon).
- FXColor to/from FXVec3d, FXVec3f, FXVec4d, FXVec4f now using SSE if compiled for x86-64-v2 or higher.
- Updated byte swap APIs in fxendian.h.
- New APIs in FXMat3f, FXMat3d, etc. classes to set up mirror-matrix.
- Moved new hash32() etc. functions into fxendian.h.
- Bug fix in FXIODevice reading > 1GB files in one readBlock(), writeBlock() call.
- Markdown syntax coloring in Adie.
- Per-syntax mode setting for removing trailing spaces in Adie saving a text file.
- Subtle change in operation of FXPath::relative().
- Support for CRC32 calculations added.
- Additional conversion options in FXString::fromFloat() and FXString::fromDouble(): thousands
groupings, force decimal point, and hexadecimal float output.
- FXJSON JSON loader now may report duplicate key warning reading json file.
- FXMappedFile improvements.
- FXString uncode escapes bug fix.
May 13 - FOX STABLE 1.6.58
|
- FXSemaphore patch applied for MacOS build.
September 10 - FOX DEVELOPMENT 1.7.84
|
- (Redrop of this version due to file missing from manifest).
- New FXUndoList implementation. The new FXUndoList now supports an alternate history mode, i.e. it remembers redo-command
after taking a different path. The internals of FXCommand have changed a bit, it now sports a reference count; for the most part
that does not affect any user-code.
- Also in FXUndoList: on 64-bit machines, space-accounting is now performed in long to manage potentially
large amounts of undo data.
- Adie editor undo sytem now supports merging undo commands, if the text is changed letter-by-letter it will
consolidate contiguous commands, assuming they are considered mergeable. Currently we're keying on character classes
to decide whether to merge or not. Idea is to not back up over programming-language special characters.
- Inlined some math functions for greater speed.
- Inlined some character-class APIs in fxascii for greater spead.
- FXSystem::system() to kick off command line via operating system shell (Windows).
- Minor annoyance in sideways scrolling fixed in PathFinder.
- Added "Seibenmeilenstiefel" scroll mode holding shift key.
- FXRex now has option to excape regular expression special characters. Major convenience mode.
- FXRex bug fix: could not always properly add control charactor using \cX syntax.
- FXRex bug fix: signed vs unsigned charactar issues surfaced due to internal representation change.
- Adie status-line indicator for current language mode.
- When loading a new file, Adie checks "emacs" modeline presence first, if modelines are on.
- New APIs added to Math namespace for hashing values (32- and 64-bit), as well as unhashing values.
Hashing float and double added so as to use these in hash tables as a key.
- FXText now uses new UTF8 navigation techniques, where it makes sense. This is a performance upgrade.
- Minor bug fixes in FXText widget.
- Experimental -O3 when compiling for release mode; its a major performance bump.
- Inlined branch-free toUpper() and toLower() major boost in case-insensitive comparisons.
- PathFinder and Adie now has command line parameter to force window size and placement.
June 13 - FOX DEVELOPMENT 1.7.83
|
- FXThread::current() yields thread-id.
- Updated icons in FXFileDialog, PathFinder, and Adie editor.
- FXPath::enquote() should also engage escaping when embedded braces found in string.
- FXPath::enquote() places quotes around empty file, because it is the only way to pass empty string parameter sometimes when passing arguments to sub process.
- Updated help information in Adie editor.
- Adie now gives warnings if (1) file being edited is changed by another program, (2) file being editor was removed by another program
If warnings are turned off, you will still get prompted when you're about to save or close the window.
This minimized unexpected loss of information.
- X11 line width fix (needed for some broken GPU drivers).
- Updated VC++ project files.
- Ascii character classifications now inlined, potentially much faster. Important for Adie regex-based
syntax coloring engine, where improvement is noticable.
- Adie editor search/replace now supports whole-word search option.
- Adie editor now has "New File" in addition to "New". The new option prompts user for filename
immediately, and thus kicks syntax colorizer into the correct mode, if the mode is determined by
file extension. This is normally the case.
- Adie word-wrap toggle on menu bar is helpful to quickly reveal long lines running past
right edge of the screen.
- When you're in the middle of editing a large file, and scroll around to look at something (e.g. a declaration),
you can now quickly jump back to the last location being edited. This is done by implicitly defined
bookmark called the "Insert Point". Promise you will find this feature quite convenient.
- FXPath::title() has been renamed to FXPath::stem(). This seems to be the apropriate name
for what it does, which is to return the name less the extension and the directory-part.
- Adie offers quick switching editing windows from right-mouse popup menu. Also added is "Open Selected"
which opens the selected text as a filename.
- Some internal streamlining in FXRex, the regular expression engine. Also, word-mode automatically
generates begin-word, end-word around top-level match. This also works for verbatim mode.
- FindInFiles dialog also supports whole-word search option.
- Incremental search looks updated, and whole-word mode added.
- Adie shell-command line and shell-command filter dialogs now have scroll-back through previously
launched commands.
- FXFileDialog can side-scroll using mouse wheel when in the horizontal mode.
- FXScrollArea logic w.r.t. non-scrolling directions: mouse wheel is blocked from controlling
scroll bar if scrolling is off in the horizontal (vertical) direction.
- Relaxed interpretation of reserved word in JSON parser: only reserved when they appear as
a "value", not when they appear as a "key". Important when e.g. loading as plain JSON but then
saving as JSON5 may be something that could break a file from being loaded otherwise.
- Checking for early end-of-file in JSON parser may yield more sensible warning messages.
- Added FXPath::isRelative() API. This returns true if the path leading up to a filename
can be determined to be relative. Operates similar to FXPath::isAbsolute(). Note that it is
possible both FXPath::isRelative() and FXPath::isAbsolute() to return false. Sometimes, there
just isn't enough information to decide.
- Improved innards for FXPath::expand() to expand environment variables etc.
- In FXRex regular expression matcher, when performing backward matching, back references must
refer forwards as the later-occuring parts of a string are matched first.
- API added to FXFontDialog to set sample text to font-display.
March 27 - FOX DEVELOPMENT 1.7.82
|
- New FXINI, FXINIFile classes added to parse (and unparse) configuration (registry) file format into FXVariant datastructure.
- Updated variant test program to load/save configuration (registry) file format.
- Some minor issues parsing infinity and nan fixed in JSON parser.
- Keyword recognition in JSON only when keyword expected. Now reserved words/keywords allowed in places where identifiers are expected (JSON5).
- Some minor issues parsing infinity and nan fixed in JSON parser.
- Shell-command dialog for Adie text editor now has command scrollback for previously executed commands.
- New feature to executed highlighted line as command in Adie.
- Fast conversion of FXColor (RGBA) pixel value to/from FXVec4f or FXVec4d using AVX2.
- Fixed default parameter in FXString find_last_of(), find_last_not_of().
- Quaternion normalize() will be replacing adjust(). A new fast incremental quaternion
fastnormalize() API added to re-normalize almost-normalized quaternion.
This technique is MUCH faster than normalize(), since only multiply-add used, no sqrt() or division.
- FXJSON parser speedups.
- FXFile, FXIODevice, FXIO updates.
- FXMappedFile class for memory mapped files added.
- New API FXThread::ticks() returns CPU tick counter; this replaces old fxgetticks().
- Some internal improvements w.r.t. FILETIME on Windows in different places.
- FXStat::stat() API added for getting permissions from open file by handle.
November 13 - FOX DEVELOPMENT 1.7.81
|
- Using _InterlockedExchangeAdd64 and other FXAtomic issues (Windows).
- FXApp should never write FOX-wide settings; only per-app settings. This rule was violated for a few types of settings.
- Horizontal and vertical scrollbar multi-line scrolling can now be individually controlled.
- Added a couple nice color themes in ControlPanal to choose from.
- Adie Syntax class API class leads to somewhat simpler code. Possibly faster.
- Tentative alias_cast() template may be used for shutting up GCC alias warnings. This means type-punning
related warnings are now properly suppressed.
- Additional math-functions added to FXExpression mathematical expression evaluator.
- Some internal branch-avoiding optimizations in FXRex, the regular expression matcher.
- Subtle off-by-one bug fix in fxprintf, when very small, denormalized floating point numbers were printed.
- Added orthogonal() API for 3D vector classes: it returns vector orthogonal to given vector.
- More forgiving and simpler implementation of quaternion arc() implementation.
October 10 - FOX DEVELOPMENT 1.7.80
|
- New Visual C++ 2015 build project files for FOX distribution; you should be able to import them to any post-2015 version
of Visual Studio.
- Conversions to smaller integer sizes in FXVariant now saturate to maximum (unsigned) values; success-flag will
be set false if saturation happens.
- ControlPanel has new section for configuring "sub-pixel rendering" feature for Linux font system.
- New feature in JSON parser/unparser is to allow saving in JSON5 mode; default is still regular JSON mode.
- JSON unparser allow setting preferred quote type.
- JSON unparser allows unicode identifiers for keys.
- Minor bug in JSON parser when parsing and unescaping string: ensure we're using the correct quote type (JSON5 allows two
quote types).
- Improved matrix to quaternion code.
- In FXVariantMap, space reserved for 32-bit machines was updated.
- FXVariant now has some API's to remove item from map (if map type), or array (if array type).
- Allow for a few more items in Adie's window list and recent file list.
- Minor updates to Adie man page for new commands format.
- Adie FindInFiles now remembers previous search directory when scrolling back to prior search commands.
- Can start Adie with given window size now.
- Slightly simpler syntax is possible to open file onto given line number (and column).
- Allow ascii mode when reading registry on Windows; is command line parameter in FXApp.
- Silenced numerous warnings introduced enabling new compiler flags.
- Small layout problem fixed in PathFinder.
- Updated VC++ Studio project files: 64-bit build now default..
- Some bug fixes in fxendian bit manipulation APIs.
- API added to find system directory.
- Also __snprintf() and __vsnprintf() now handle denormal floats even when library was compiled for release (with FTZ/DAZ).
- Bug fixes in FXText.
- Minor warning fixes.
- More user-friendly type-names in FXVariant.
- Fixes in FXReadWriteLock for MacOS.
- Calling adopt() on FXSettings sets both instances to modified, as it should have.
- FXColorDialog remembers its size from last time it was used.
- FXFileSelector/FXFileDialog change: in SELECTFILE_MULTIPLE and SELECTFILE_MULTIPLE_ALL more user-friendly
encoding of multiple filenames in text box using commas ','.
- Adie editor Find In Files remembers search-folder as well as previous search-parameters in search-history scrollback.
- Launching Adie with not just file, but optionally line and column number as well. Handy for compiler warnings.
- Also, can pass geometry specification on command-line to bring up Adie with given window size and location.
- FOX applications can now load registry settings from text file on windows, thanks to new command-option parsed by FXApp.
- Use some intrinsic x86-64 (or x86) instructions for bit-manipulations where possible.
- Backward scanning UTF8 API, plus many other UTF8 APIs now inlined; some macroes replaced by inlines.
March 11 - FOX DEVELOPMENT 1.7.79
|
- FXJSON parser fix identifier recognition issue.
- Added Adie syntax colorizer for data tables.
- New rule type in Adie syntax colorizer: span rule.
- Changed keywords in Adie syntax colorizer: more succint.
- Syntax colorizer now UTF8 aware.
- Some speed-ups in FXRex.
- Adie syntax patterns for C++ have been sped up with use of possessive match where possible.
- More checks in Syntax Parser.
- Math implementation updates: faster pow10i(), fpMantissa().
- The function fpExponent() in Math has been fixed to return correct exponent for denormal floats.
- Internal number formatting routine __snprintf() and __vsnprintf() bug fixes for hexadecimal float conversion.
- Also __snprintf() and __vsnprintf() now handle denormal floats even when library was compiled for release (with FTZ/DAZ).
- In addition __snprintf() and __vsnprintf() more spiffy formatting options for "engineering mode" with exponent mode enabled, and nice columnar formatting also supported.
- The __snprintf() and __vsnprintf() now use substantially less stack space for conversion.
- The __snprintf() and __vsnprintf() properly handle zero-precision case for integer conversions.
February 15 - FOX DEVELOPMENT 1.7.78
|
- Major rewrite of FXJSON parser. Faster, stricter, better UTF8 support.
- Bug fixes in FXString.
- New functions added to math APIs.
- Minor fixes to FXPtrList.
- Better HotKey processing in FXAccelTable.
- Now use nullptr in lieu of NULL (C++ compiler feature).
- Julia syntax highlighting added to Adie text editor.
- Drop conversion check in FXJSON parser.
- FXPath::expand() recursive environment expension [up to some limit].
- FXCondition can use FXScopedMutex and FXReverseMutex.
- Use of static_assert() conditional upon compiler support.
- URL encode should also encode @ and :.
- Off-by-one bug fix in FXText.
- Warning fixes.
April 20 - FOX DEVELOPMENT 1.7.77
|
- Subtle FXString::format() numeric rounding bugs fixed.
- Adie text editor rare crash bug fixed.
- FXString unicode conversion bug fixes.
- Additional checking ensuring FXString::substitute() called properly.
- Subtle FXString manipulation bug fixes.
April 1 - FOX DEVELOPMENT 1.7.76
|
- Add handy icon button to Adie file list widget to hide/show hidden files.
- FXText widget parameter verification improved for content-modification APIs.
- FXText widget block mode replace, block insert, and other block operation regressions fixed.
- FXText widget block selection issues fixed.
- FXRex grammar depiction fix.
- In FXJSON parser, a single bad-utf8 prefix case label was missing.
- Not all systems have pthread_rwlock_setkind_np(), causing compile to fail on those systems.
- New FXASSERT_STATIC macro added; it is defined for C++ language > 2011.
- Scoped FXReverseSpinLock class added, similar to FXReverseMutex scoped lock.
- The unixToDos() API would potentially add a second CR if input was already DOS format; now fixed.
- Adie text buffer loading and saving updated.
- Adie extract range selection to file, and extract block selection to file option added.
- Adie replace text range from file, or replace text block from file option added.
- FXString::length() now returns boolean instead of throwing exception when out of space; internals
of FXString somewhat fortified against low-memory situations (you're unlikely to run into memory
issues on FXString on modern machines, unless you're dealing with truly gigantic strings).
- A number of places are now defining specific trace topics using the new topic-tracing implementation.
March 2 - FOX DEVELOPMENT 1.7.75
|
- FXSystem::getUserDirectory() had bug on Windows with non-unicode build.
- Configure scripts allows specification of freetype2 install locations.
- Adie rules for C# language updated with current set of keywords.
- Added TypeScript coloring rules to Adie syntax file.
- FXDir::createDirectories() now insists on absolute path as input.
- FXPath::upLevel() now works for relative paths as well.
- FXPath::enquote() bug fix: enquoting string containing '#' was flawed.
- Building using VC++ now keys on DEBUG not _DEBUG.
- Adie syntax rule fix for CMake.
- Some small fixes to FXPath::simplify() for path separators.
- Set DPI Awareness upon launch on Windows.
- Dropped unnecessary asserts in FXCursor (Windows).
- Updated FXTRACE() implementation. Trace topics in addition to levels.
You can change the set of topics to trace using new -tracetopics command line
parameter. The old -tracelevel is still there, it sets a range of topics.
New APIs are added to set topics programmatically: setTraceTopic(), setTraceLevel(),
setTraceTopics(). The trace topics allow dumping reduced amounts of information
when debugging a particular aspect of your program.
- Removed fxstrhash() in favor of FXString::hash().
- Support convert to/from Modified Rodrigues Parameter in quaternion classes.
- Orthogonalize 2x2, 3x3, 4x4 matrices using Gram-Schmidt orthogonalization added.
- Some further work in FXReactor, FXDispatcher.
- Fix address sanitizer issues in FXDictionary, FXHash, FXReverseDictionary, FXSettings, FXStringDictionary, FXVariantMap.
- Leaked icon resource fix in Adie, ControlPanel, PathFinder Preference panel.
- Fix to SUNRAS image loader loading 1-bit per pixel images.
- Potential NULL cursor pointer issue during create() fixed.
- Miscellaneous compiler warnings fixed here and there.
December 3 - FOX DEVELOPMENT 1.7.74: Sinterklaas Release!
|
- API additions in FXAccelTable for convenient single call parse- and add to table.
- Support for Borland C++, Digital Mars C++, and Watcom C++ removed.
- FXXMLString class added; deserialize XML from an FXString.
- Work-around for VC++ lack of support for hexadecimal floating point literals.
- FXCursor.cpp non-compile bug fix.
- Lots of warnings fixed.
- All "register" declarations now expunged.
- Miscompile and performance bug in FXRandom implementation fixed.
- Engineering mode display option in Calculator.
- Engineering mode option formatting doubles in FXString.
- Expression now allows underscore in variable names; internal optimizations in parser.
- Relaxed parsing of fractional seconds in systemTimeParse().
- Obtain leap seconds given TAI, in addition to leapseconds from UTC.
- Highlight text block via keyboard arrow keys in FXText.
August 24 - FOX DEVELOPMENT 1.7.73
|
- Added math function Math::pow10i(). Performs integer power of 10. NOTE: function Math::pow10() will go away
as this has been deprecated; use Math::exp10() instead!
- FXString::hash() now switched over to FNV1a algorithm; is slightly better than old one on dictionary tests; the classname hashing in FXMetaClass was switched too. Note this means libraries using FOX
that need hashing would need to be recompiled!
- Serious bug in FXText fixed: caused assertions from book-keeping discrepancies in cursor movement.
- More stringent checking floating point input containing thousands-grouping.
- Hexadecimal floating point input (fxscanf) now supported.
- Hexadecimal floating point output (fxprintf) now supported.
- Possible speedup in FXDictionary, FXSettings, FXStringDictionary, and FXVariantMap.
- Non-compile issue discovered in *BSD.
- Finite wait-API added in FXSemaQueue.
- Adie text editor bookmark menu labels slightly more intelligent caption.
- Bug printing out denormalized numbers, in optimized mode [FTZ/DAZ floating point flags in effect].
- When printing out floating point numbers, correct exponent in case it was denormalized. Important
note: we have reason to believe (a) glibc version of fprintf() has a bug with small denormalized numbers
printed with "%a", and (b) we believe both GCC and clang++ compilers have bugs parsing hexadecimal
denormalized floating point numbers.
- Some math functions renamed for consistency: ipow() to powi().
- Change in behaviour: Math::fpExponent() now returns exponent without bias.
- Change in behaviour: Math::fpMantissa() now returns mantissa including the hidden bit [unless number is denormalized].
July 14 - FOX DEVELOPMENT 1.7.72
|
- Added math function Math::pow10i(). Performs integer power of 10. NOTE: function Math::pow10() will go away
as this has been deprecated; use Math::exp10() instead!
- String to double conversion routines accuracy improvement fix implemented; approximately
16th digit accuracy now.
- Added %a and %A handling in fxscanf.cpp. Hex float support parsing to be switched in soon;
not yet 100% working at this time.
- When parsing exponent-part of floating point number fails, properly rewind input to the
part before it; this will leave the rest of the string for another conversion specifier if
there is one.
- When parsing number-separator, don't allow consecutive number separators. Future implementations
may be more strict still.
- FXThread thread naming update for MacOSX and other operating systems.
- The math.cpp test program now implements testing functions when they are missing from the
operating system.
July 6 - FOX DEVELOPMENT 1.7.71
|
- FXSystem::Time not initialized inside FXSystem::systemTimeParse(); must initialize
to zero prior to call. Reason: need to be able to determine what fields were actually
set during the parse.
- Added FXSystem::daylightSavingsActive() API. Determines if daylight savings time in effect
at the given time.
- On Windows, FXSystem::daylightSavingsActive() uses TIME_ZONE_INFORMATION to determine when
daylight savings is to be switched. But Linux and Windows versions may need additional work.
- FXSystem::localTimeZoneName() returns time zone name as known by O.S. Note its returned as
UTF8 string.
June 28 - FOX DEVELOPMENT 1.7.70
|
- Changed order of paramter in FXSystem::systemTimeParse(); new order allows default
parameter for time parsing format, "%m/%d/%Y %H:%M:%S", which is very convenient .
- Added localTimeZoneName() API.
- Changed parameter order and implementation of universalTime() and localTime(); the
new order now allows default parameter ("%m/%d/%Y %H:%M:%S") for time formatting and
parsing. New implementation using recently added routines also allows adjustment for
time zone offset if time zone offset is parsed from time string (%Z or %z option).
- FXSystem::systemTimeParse() does not initialize FXSystem::Time struct anymore; thus,
should be zeroed out prior to being called. However, FXSystem::systemTimeParse() will
assign as much as it can based on the time- and date-components being parsed.
Also note, FXSystem::systemTimeParse() can properly parse ISO week number and day, and
compute proper date from that. Its a bit tricky.
June 24 - FOX DEVELOPMENT 1.7.69
|
- More FXSystem time related API changes.
- FXString 16-bit character conversion fix.
- Military time zone parse.
- FXFileSelector onCmdDirectoryUp() selects directory we were in before, for quick downward
navigation.
- FXFileList sets both current and anchor item when entering directory.
- The fxprintf.cpp used in string formatting now supports %a and %A for floating point
printout.
April 29 - FOX DEVELOPMENT 1.7.68
|
- Added FXSystem::Time struct, system-independent time in parts. This comes with (at the moment)
two routines, FXSystem::systemTimeFromTime() which converts FXTime to FXSystem::Time, and
FXSystem::timeFromSystemTime() which converts time in parts to FXTime (in nanoseconds).
- New routine FXSystem::systemTimeFormat() formats FXSystem::Time to a string, similar to strftime(),
with a few extensions.
- New routine FXSystem::systemTimeParse() parses FXSystem::Time from a string, similar to strptime(),
with a few (more) extensions.
- New routine FXSystem::daysFromCivil() converts year, month, day to days since Unix Epoch in days.
- New routine FXSystem::civilFromDays() converts Unix Epoch in days to year, month, day.
- New routine FXSystem::timeFromNTPTime() Converts NTP time (64-bit ssss:ffff) to FXTime, nanoseconds
since Unix Epoch).
- New routine FXSystem::ntpTimeFromTime() Converts FXTime time to NTP time (64-bit ssss:ffff).
- New routine FXSystem::leapSeconds() returns number of leap seconds since FXTime. It can be used
to compute UT1 time (plus or minus fraction of a second).
- The sysctl.h is now obsolete on Linux [still checked as not obsolete on *BSD].
- Blending on in FXGLShape.
- WM_ERASEBKGND message handler (on Windows) should return 1.
- Small default width/height size calculation bug in FXTable fixed.
- Some fixes in FXMat3d, FXMat3f with some SSE/AVX code.
- Additional routines in fxendian.h: pop64(), pop32().
- New routines in FXElement.
- Some more missing math functions added in fxmath.h.
- Fix in FXDate for pre-1970 time values (rounding wrong way).
- FXTRACE in FXMetaClass constructors/destructors.
- Some progress on new FXEventLoop/FXDispatcher/FXReactor classes.
- FXThread naming.
- Initialize FXQuatf/FXQuatd with Rodrigues angles, other APIs for Rodrigues angles added.
- FXJSON parser exponent parsing bug fix.
- FXCallback bug fixes.
- FXText bug fixes/improvements.
September 11 - FOX DEVELOPMENT 1.7.67
|
- Two subtle bug fixes in new double to string conversion fxprintf.cpp; first, compiler optimization
caused code to be generated that overflowed, making results incorrect when optimization was on.
Second, another (unrelated) overflow situation happened converting double to unsigned long.
Now that both are fixed I believe we have a very fast numerical conversion that appears to be
reliably generating about 15 to 16 digits out output [last digit may be off by 1 or 2 in typical
case].
- Allow more bookmarks in FXFileSelector, for frequently visited directories.
- Work-around for operating systems missing lrint() and lrintf() in fxmath.h. Testing reveals replacement
implementation to be very close to original, with exception of tie-breaking rule rounding numbers that are
exactly midway between two integers; we are, however, mostly happy with the way our implementation works
if lrint() is needed on an operating system where theses functions are missing.
August 23 - FOX DEVELOPMENT 1.7.66
|
- FXString::escape(): encode illegal UTF8 as hex-sequence regardless of flags.
- FXJSON bug fixes for support of JSON5.
- FXJSON parser strictly reject bad (ill-formatted) UTF8 characters.
- FXPath UNICODE user home directory fix.
- Fleshed out thousands-grouping in fxprintf (used by FXString and other places for number-conversion).
Print comma-separated thousands in the integer fraction. New: when in exponential mode, adjust the exponent and
decimal point location such that the exponent is a multiple of 3.
- New, faster, and often more accurate floating point to string conversion. No, this is not
based on Ryu paper. New method reliably generates 16 digits, and does much better rounding.
May 3 - FOX DEVELOPMENT 1.7.65
|
- FXJSON now has JSON5 JSON5 support; line-comments, multi-line comments,
unquoted key names, etc.
- Experimental block-selection in FXText widget.
- Fixed fxscanf.cpp to be able to read NaN and Infinity/Inf.
- Fixed strtod() to recognize Infinity.
- The escape() of empty string returns "", not empty string.
- The unescape() supports line-continuations.
- Additions to Math namespace.
- Additions to FXQuatd and FXQuatf.
- Some missing functions added to FXExpression.
- FXPath::convert() transforms foreign operating system-style paths to local conventions (path separator, path list separator,
environment variable syntax).
- Improved FXPath::expand().
- FXThread::wakeat() now using absolute time on Windows (using undocumented API).
- FXReverseDictionary class added.
- FXDirWatch class added.
April 3 - FOX STABLE 1.6.57
|
- Libtool flags added on behalf of FXRuby builds and missing UNICODE flag added for CYGWIN32 build.
February 20 - FOX DEVELOPMENT 1.7.64
|
- Switched FXDir to use readdir() instead of now-deprecated readdir_r(). Supposedly now
thread-safe.
- Some internal streamlining in FXRex.
- In FXText, duplicate line leaves cursor in place, but highlights the new line (if you duplicate one too
many, you can therefore immediately delete it again).
- Add some help messages for PathFinder's Preferences dialog.
- Add columnFromPos() and posFromColumn() functions in FXText.
- Fixed bug in FXText not recalculating width if only single line present (was introduced recently).
- FXRex reverse algorithm was not working for verbatim mode; it does now.
- Some limitations on FXRex regex-reversal algorithm removed.
- Adie open-selected rework had introduced some bugs; is fixed now.
- Added new convenient API's to Math namespace.
- Added new API's to vector classes.
- FXText block select, block copy to clipboard, and block delete now work.
- FXText shiftText() had minor issue shifting text containing tabs; this has been dealt with
in a very sophisticated way, an internal routine which is also needed for block operations.
January 16 - FOX STABLE 1.6.56
|
- Problem fixed in FXString vformat().
December 18 - FOX DEVELOPMENT 1.7.63
|
- PathFinder now stores execpath, which is used to locate executables listed in icon-associations;
it can be changed via Preferences Dialog. This is for people who are not able to set system environment
variables directly.
December 13 - FOX DEVELOPMENT 1.7.62
|
- Newly added arbitrary-length look-behind assertions in FXRex are a bit more bullet-proofed.
- Some bugs with partially filled buffers in FXText fixed.
- Large number of updates to syntax patterns in Adie.stx.
- Fixed some minor issues in reversing of regular expressions, needed for arbitrary-lookbehind assertions in regular expression engine.
- Bug fixes in FXDispatcher.
- Added disconnect API to FXCallback, the new fast delegation class.
- Word boundary in back-scanning regex engine fixed.
- FXRex empty branch issue fixed; empty branches no longer allowed.
- Removed limitations on message lenghts in fxerror(), fxwarning(), etc.
- In FXRex, when patterns are reversed, some escape sequences are dangerous; partially, this could be fixed
by requiring that the hex escape sequence require two hex characters. For octal character sequences,
however, this can not be done, so those are flagged as unsupported in look-behind patterns.
- Some bugs fixed for Windows build.
- Added API to FXPath to check if a filename is a reserved filename, such as "COM1", "PRN" etc.
- Fixed FXDirBox flicker, particularly under Windows, due to bad implementation.
- The call to ::system() does not work as desired under Windows. Calls to ::system() are used to spawn
child processes, for instance, clicking on an icon in PathFinder. These calls have now all been replaced by
newly developed APIs in FXPath, like parseArgs().
- A Windows-specific version of parseArgs() has been added, it follows Windows commandline escaping rules.
- More options in file-associations for launching applications from PathFinder.
Applications may be launched with the current file (%f), the list of all selected files (%F), the url of the current file (%u),
the url's of all selected files (%U), or the current directory (%d).
These options can be used at the same time, for instance, an association "tar cvfz %d.tar.gz %F" would tar up all the selected files
into an archive that's named after the current directory.
- Updated Makefile colorizing.
- PathFinder now as its own notion of executable paths; this allows users to add additonal paths to the
shell-provided PATH environment variable. Handy as not everyone knows how, or is allowed to change system PATH
variables.
- Show exact bytes in tooltip on bottom of PathFinder window.
- Fixed FXAtomic problems on Windows.
- FXText widget has tooltip timer, and will be able to pop a tooltip with location-dependent content.
- Duplicate accelerator issue fixed in FXReplaceDialog.
- Try and prevent Adie from loading insanely large files [for example, accidentally clicking on an .iso].
- Strange Dell mice issue issuing dual mouse-wheel reports. This caused some minor issues with scrolling.
The FXScrollBar has been fixed for this problem.
- At the same time, changed anomation parameters of FXScrollBar slightly; animation time-step is now raised to 16ms,
which is about one frame-time on 60Hz screen. This means scrolling is a bit less CPU-hoggy as the amount of work
is dropped to 1/3.
- Find In Files has some utility improvements.
September 22 - FOX DEVELOPMENT 1.7.61
|
- Regular expression now supports non-simple possessive matching.
- Possible signed character issues fixed in fxscanf.
- Some better feedback in Adie while searching patterns in multiple files.
- Find in files in Adie remembers last-used patterns and folders.
- APIs added to FXText to manage virtual columns (columns past end of line). This will be needed
for block select operations.
- FXIconList lasso speedup, especially when YUGE numbers of files in a folder.
- Minor PathFinder spruce-ups.
- New APIs in FXPath: parseArgs() builds argv vector from command line, suitable to passing to execve() (etc.)
system calls (or FXProcess).
- Improved enquote() and dequote() for UNIX in FXPath.
- In Adie, ShellCommand now kicks off sub-command w/o needing a shell; uses new API parseArgs() to
assemble command and start sub-process with it.
- Minor fixes in FXCallback template.
- Added rotate() to FXVec3d and FXVec3f.
- Added additional APIs to FXAtomic.
July 19 - FOX STABLE 1.6.55
|
- Fix FXMemoryStream position() API: error code was set moving stream position to end of buffer.
May 17 - FOX DEVELOPMENT 1.7.60
|
- Context back-up changed in incremental syntax recolorizer (Adie).
- Some typos fixed here and there.
- Configure script and makefile updates.
- Many updates being worked on inside FXText.
- Compiler warnings fixes for GCC 6.3.1, which seems to flag a few new things.
- Some FXText widget speedups.
- Bug fixes in FXString.
- Added visiting() API to FXDirVisitor.
- Disable and enable buttons in FindInFiles dialog in Adie editor when starting/stopping searches.
- Brace-matching change: matching brace can now stay visible as long as cursor on a brace (if enabled).
Enabling permanent highlighting also makes the match search outside of the visible part of the text buffer,
in case the matching brace is scrolled into view later. Thus, people with slow machines may notice brace-match could
take slightly more time, when working with really large files.
April 20 - FOX STABLE 1.6.54
|
- Fix core dump using old GNU C Library or CYGWIN inside FXString::vformat.cpp.
April 14 - FOX DEVELOPMENT 1.7.59
|
- Changed the way bookmarks are done in Adie; you can delete them one by one.
- A fair number of changes and bug-fixes in FXText widget.
- Cursor doesn't blink during movement in FXText and FXTextField.
- Limit accumulation of repaint-areas yields less visible flicker in some case.
- Redraw of line numbers in FXText now with less flicker during resizing.
- Adie text editor now supports adie, emacs, and vim modeline parsing; you can set language (syntax) mode, tab width, wrapping, and a few other things.
- Dropped jump-scroll mode support in Adie: never used by anyone.
- Some extra options added to Adie Preferences Dialog.
- Syntax file for Adie can now force hard-tabs, autoindent, and other attributes. This means editing 'Makefile' will automatically switch hard-tabs on!!.
- Adie on-line help updated with description of syntax for 'Adie.stx' syntax description file.
- Documentation in FXAccelTable.h expanded to include syntax for accelerator keys.
- Option for brace-matching added to FXText. Also, added option to keep brace highlighted forever, or until cursor moves or a selection is made.
- Show 'indeterminate' state for checkbuttons in Preferences panel, if default settings for tab-mode, wrap-mode, auto-indent have been superceeded by
attributes from the syntax-file or a parsed modeline.
- Added 'SaveTo' option in File Menu of Adie text editor.
March 13 - FOX DEVELOPMENT 1.7.58
|
- Adie improvement: don't clear bookmark selecting it 2nd time; now, remove bookmark by invoking "Delete Bookmark"
with the cursor on the bookmark to be deleted.
- Bookmarks now at start of line; thus, only one per line.
- Use __buildin_bswapXX() only for GCC 4.8 and newer; older versions buggy, apparently.
- Added SaveTo option in Adie text editor.
- FXText and FXTextField cursor blink fix; don't blink while moving (so user doesn't lose track of where it is!).
- When multi-file mode in FXFileSelector, enquote files only when needed; and escape quotes and backslashes if they appear.
- FXFileSelector now returns filenames as typed into the box in all modes, including multi-file mode.
- Now allow relative search paths in Adie file search paths. This means you can list places to look for files in your project
directory subtree, regardless of where the project subtree is referenced from; for example, "../include:../lib" will let you
open a file from "../include" when you're in "lib", and vice-versa.
- FXFileList properly hops back to original directory when dragging over directories.
- Major speedup in FXIconList lasso-selection mode. Much, much faster when lassoing items in very large folders.
- FXFileSelector's getFilename() returns first of many, if box contains multiple names.
- FXFileSelector scans for first non-wildcard extension when substituting extensions when filter is changed.
- FXTreeList and FXFoldingList should issue SEL_EXPANDED message as side effect of makeItemVisible expanding a subtree.
- Missing setPattern(), getPattern() API's added for FXDirDialog and FXDirSelector.
- Added syntax pattern for hexadecimal floating point numbers.
December 3 - FOX DEVELOPMENT 1.7.57
|
- Use _InterlockedExchange() in FXSpinLock instead of non-inlined version.
- Emulation code added for atomicBoolDCas(() if no built-in version available.
- Some bug fixes in FXXML parser.
- Check for decode error in XML parser.
- Encode non-ascii string in FXURL.
- Return original user-data pointer in addTimeout() and addDeadline(), addChore(), and removeChore(). This allows one to
delete user-objects that may be referenced by those callbacks.
- Added non-wrap mode as output format in reswrap.
- Split off OpenGL objects from FOX library placed into separate glviewer subdirectory.
- Use nanosecond-accurate stat() output, if available, in FXStat.
- In FXText and FXTextField, can now use wide-character delimiters.
- Only escape left and right quotes in FXString escape() if non-zero.
- Fixed a problem in FXSpinner and FXRealSpinner.
- Factory function on abstract classes (FXIMPLEMENT_ABSTRACT) now yields NULL object instead of cratering program.
- FXApp runWhileEvents(() blocks for just a little bit, allowing for roundtrip in case last commands caused events.
- Removed FXFile::rename() and FXDir::rename() in favor of FXFile::move().
- Some improvements to PathFinder file manager.
- Disallow assignment to FXObjectListOf and FXPtrListOf from rvalues not type-compatible with lvalue.
- Added peek() API to FXPtrQueue.
- Namespace prefix needed in FXIMPLEMENT_ABSTRACT macro.
- In FXDirVisitor, check both file index (inode number) and volume id, as file indexes may be same on different volumes.
- In FXDirVisitor, drastically reduce number of system-calls by passing FXStat results when recursing.
- Fixes to selection-tracking variables in PathFinder.
- Improvements in fxscanf.cpp scanning digit groupings; not perfect yet however.
- Added API in FXDirVisitor to allow access to FXStat result while in callback; this can further reduce system calls.
- Some corner cases in FXPath::absolute() fixed.
- Bug fixes in FXFile::copy().
- Updates to Adie.stx default language syntax file.
- Compiler warning fixes.
December 3 - FOX STABLE 1.6.53
|
- Fixed typo in FXString::vformat.cpp.
May 23 - FOX DEVELOPMENT 1.7.56
|
- Removed quoted string length limitation in XML parser.
- Removed comment length limitation in XML parser.
- Pass all text of processing instruction in one single callback from XML parser.
- XML declaration now only recognized if followed by whitespace.
- Updated Visual Studio 2008 project files to add enable intrinsics flags. This was causing problems compiling FXAtomic file.
- In FXAtomic, favor inlined x86 or x86-64 assembly over GCC builtins, due to spotty implementation of these primitives.
- Quoted string in XML could have newlines or blanks; adjusted parsing routine to not lose track of line and column numbers while parsing
over strings.
May 20 - FOX DEVELOPMENT 1.7.55
|
- Added XML Parser capability. This is a SAX parser, which generates callbacks for each XML element encountered.
There are two new classes, FXXML which is the core parser class, and FXXMLFile which parses files or inputs from devices.
The FXXML class may also be used to parse from memory buffers.
- FXWSQueue implements a work-stealing queue. A Work-Stealing queue supports a single thread adding or removing jobs from
the front end, and multiple threads removing jobs from the backend.
- PathFinder now has new ways to select files quickly: by means of wild-card patterns.
The new selection method is based on the list of file-patterns available from the normal filter drop-down
box (which may be configured from the Settings Panel). It can be invoked from Edit/Select Files menu.
- New fxmath function fclamp() added; usually, this is implemented in terms of fmax() and fmin() which are
branch-free on many machines.
- Using new Math functions in most places inside library itself.
- Added line to box (2D) functions to FXExtent.
- FXText shows block-cursor when in overstrike mode.
- Fix in case clearElms() is used with volatile pointers.
- More work done on FXDispatcher.
- Dont add accelerators for strings on Bookmarks menu in Adie editor.
- Escape & in FXRecentFiles to avoid accidentally installing accelerator.
- Fix index type in FXGLObject.
- Added new classes for generic callback infrastructure, FXCallback. To support older compilers,
the current implementation does not yet use varyadic templates (maybe at some future time, it will).
The new FXCallback mechanisms are already in use in FXXML and will soon be used in FXDispacher
as well.
- Some bug fixes in FXJSON.
- Missing va_end() fixed in fxprintf() and fxcanf(). Not serious on most compilers, however.
- Updated syntax patterns for Adie editor.
- In fxscanf(), a %n does NOT increase return count.
- Thousands grouping in fxprintf().
- FXVariant (and other collection classes) indexed with FXival instead of FXint. Allowing for
64-bit very large data structures.
- More convenience APIs added to FXVariant.
- FXVec4d and FXVec4f: lerp in two fma's when compiled with AVX2 and FMA (nice trick!).
- Rare out-of-bounds memory read fixed in FXText.
- Renamed clashing math functions in fxmath.h; isnan(), etc. renamed to fpNan(), etc. Problem
was these functions were sometimes macros on some operating systems; new ones are good C++ inside
Math namespace. No other clashes have been reported so far.
- When going up one directory-level in PathFinder, select recent directory. Thus, keyboard
directory navigation is greatly improved.
- File Dialog widgets also improved as above. This is a major keyboard navigation improvement.
- Added memory fence APIs to FXAtomic. Needed for lock-free programming paradigms.
- Byte swap stuff in fxendian.h.
March 15 - FOX STABLE 1.6.51
|
- Small fixes for 64-bit casts in dctest.cpp (compiler warning issues).
- JPEG image I/O color spaces handled better.
- FXApp input callback message ID for SEL_IO_EXCEPT was wrong.
- Change in how FXStat determines if a file is an executable (Windows).
January 6 - FOX DEVELOPMENT 1.7.54
|
- New namespace Math collects most math library calls in C++ namespace; also on Windows, implements missing math functions
where needed. This includes single-precision math functions, and thus old macros for these have been removed.
- Help-file in Adie now regenerated during build from plain-text source.
- Block-cursor in FXText when in overstrike mode.
- Join-lines operation added to Adie.
- Removed deprecated API's from FXComplexd and FXComplexf.
- Updated VC++ project files.
- Handle NaN and Inf on floating point string input (fxstrtod).
- FXPath::isHidden() should work on Windows.
- Warnings in fxstrtoll() and fxstrtoull() fixed.
- Added at() API's to FXVariant, like FXDictionary and FXArray have (syntactical convenience).
- Use FXival for FXVariant which allows large sizes on 64-bit machines.
November 24 - FOX DEVELOPMENT 1.7.53
|
- FXFontDialog initialized to sensible size when first-ran.
- FXPath::match() algorithm major correctness improvements for nested patterns, and better error
detection for broken patterns.
- Fixed some layout issues in PathFinder when choosing large fonts, menubar icons were not centered vertically.
- Dialog to search files for regular expression in Adie now fully functional.
- Invalidated bookmark locations could cause trouble when bookmark menu popped up; now fixed.
- Some functions refactored in Adie.
- Minor problem in groupbox example application fixed.
- Added facility to change scroll bar width in ControlPanel.
- Added checkbutton to search only for first occurrence of pattern in file in FindInFiles dialog.
- Pass base directory of search to FindInFiles visitor so we can relativize paths to it when recording search matches.
- Zero array in FXIcon to shut up valgrind.
- FXComplexf and FXComplexd APIs more compatible to standard C++ library: added norm(), abs(), arg(), exp(), log(), and conj().
The old names conjugate(), logarithm() and exponent() will probably be deprecated.
- Some improvements to Adie's incremental search capability.
- FXDirVisitor recursion limit added.
- FXDirVisitor now has skip as well as early-out return mode.
- Included paper reference motivating FXRandom shift-xor counts changes.
- Change file mode improvement in PathFinder.
- FXPath::isValidPath() API added.
- Some fixes to PathFinder directory handling.
- Expand environment variables when switching directories in PathFinder.
- Some compiler warnings fixed.
- FXThread priority issue fixed.
- FXSettings parser issues fixed.
- Incremental search history now being saved in Adie.
- Backward search issue fixed in Adie.
- Search and Replace Dialog fixes.
July 1 - FOX DEVELOPMENT 1.7.52
|
- Squeeze out useless instruction from fxgetticks().
- Add adopt() of FXVariantArray API to FXVariant.
- Fixes in Adie syntax parser.
- Problem in FXIODevice fixed.
- CMYK color conversion in JPEG image support fixed.
- Improved FXRandom implementation.
- Escape key to close dialogs now handled via FXAccelTable instead of hard-wired.
- FXReplaceDialog search history implementation improvement.
- Improvements to FXDirVisitor, and added early-out option.
- Fix Adie text editor core-dumping issue with backward searches.
- FXPath::match implementation improvements; more to come.
- Added return codes to FXIO, FXIODevice.
- Added setMode() API to FXIO, FXIODevice.
- Early-out in dictionary classes.
- Improved speed of failed search in dictionary classes.
- Better docs on FXExpression.
- Execute shell commands feature added to Adie.
- Scrolling Syntax menu in Adie; list of supported languages getting too big.
- Added some protection to FXMessageChannel.
March 15 - FOX DEVELOPMENT 1.7.51
|
- Syntax-colors in Adie can now be language-specific. Language families like C/C++/C#/Java share common
syntax-colors.
- Syntax-colors in Adie now have initial (default) foreground color value in Adie.stx file. End-user can change, however.
- Fixed syntax-file parser in Adie: token hash incorrectly calculated.
- Fixed uninitialized value issue in FXFileSelector, flagged by Valgrind.
- Use thread-safe time functions on Windows, when available.
- Fixed potential endless loop in FXText::findText().
- Some fixes for VS2008.
- Removed deprecated FXMutexLock in favor of FXScopedMutex.
- Many standard clipboard types pre-registered now.
- Charset conversions moved into FXWindow getDNDData(), setDNDData(). UTF8, UTF16, and ASCII support, for FXString.
- Off-by-one error fixed in fxscanf() when scanning character-sets.
- Template FXHashOf added.
- New class FXDispatcher being implemented (experimental).
- Insertion of command output into Adie text buffer is now undo-able.
- Log-window added to Adie; pops up when executing command outputs to stderr.
- Implement Larsson, Moeller, Lengyel sphere-box overlap algorithm; use branch-free fmax, fmin, fmaxf, fminf where possible.
- Fix warning in fxendian.h.
- Added encode/decode URL feature to Adie.
- Equality operator in FXVariant has been removed.
- Inherit handle option works on Windows.
- Added return codes to FXIO, FXIODevice.
- Added setMode() API to FXIO, FXIODevice.
- Early-out in dictionary classes.
- Improved speed of failed search in dictionary classes.
- Better docs on FXExpression.
- Execute shell commands feature added to Adie.
- Scrolling Syntax menu in Adie; list of supported languages getting too big.
- Added some protection to FXMessageChannel.
November 10 - FOX DEVELOPMENT 1.7.50
|
- Major changes in the regular expression engine. New API amatch() for anchored match, and new API search which replaces match().
More sensible parameter order and moved some flags from run-time to compile time.
- Internals of FXRex are now ready for UTF8 matching; however parsing part will need to follow before these
new capabilities can be put to use.
- FXRex::substitute() now interprets the usual escape sequences when creating replacement pattern
from regular expression match captures.
- Speedup in FXText getByte(), getChar(), etc. by introduction of branch-free handling of gapped-buffer
accesses.
- Moved hard-wired search and replace dialogs out of FXText and into Adie text editor; this is part of
the FXText widget slim-down program.
- Adie text editor search and replace improvements. Basically, stream-lines mouse-free usability.
- Adie incremental search bar now pops up at bottom of window. This is much less disruptive as text does
not get "pushed down" when this toolbar pops up.
- The FXHash find() routine now returns the slot index, or -1 if not found. If you use FXHash you should
be aware that simply replacing find() by at() will fix your code to the new system. This was done based on
request from a user who noted the find() API in FXHash behaved differently from the find() in FXDictionary.
- Strip leading and trailing space from display in Adie's bookmark menu.
- Added ParallelMax constant declaration for FXParallelFor.
- Change to FXText findText() API. The new version can perform not only forward and backward search, but also
anchored match. The anchored match is performed if neither SEARCH_FORWARD or SEARCH_BACKWARD flags are passed.
- Goto Line dialog moved from FXText to Adie text editor proper (also part of FXText widget slimdown program).
- Adie Replace Dialog now has Search button.
- Adie Replace Dialog Replace function now first checks if current highlighted text is the one being searched for,
and only searches further if it isn't. This logic will therefore replace already highlighted selection, and make it
less likely you accidentally "skip" the first item in a search-and-replace session.
- Also, Search and Replace dialogs stay up until explicitly closed. It was often the case that the first search
is not always the desired one, and one had to bring up the dialog a second time. Note that Escape hides the dialog,
so no mouse interaction is required for "Power Users".
- Search and Replace dialog can now replace within selected text only.
- Some language pattern updates in Adie syntax coloring file.
- CMake coloring patterns added to syntax file.
- New match modes added to FXRex: Exact, and NotEmpty. The Exact mode succeeds only if a successful match
eats the entire string. The NotEmpty mode succeeds only if the match eats at least one character.
Note these are compile time flags, and implemented through special asserts in the matching engine.
Thus, the engine will potentially backtrack earlier matches to try other possibilities!
- Regular expression match engine speeded up by streamlining matcher-setup internally; this particularly
affects search().
- Fixed bug in FXHash::at().
- Eliminated recursion in simple possessive match in FXRex.
- Added handy isNull(), isBool(), etc. APIs to FXVariant.
- Made selection-changing APIs virtual in FXText, for subclassing.
July 29 - FOX DEVELOPMENT 1.7.49
|
- Major API changes to FXThreadPool: mostly, much more sane implementation, and optional
FXCompletion parameter passed to perform wait on subset of tasks; see FXCompletion notes below.
- Added FXCompletion synchronization object. FXCompletion is now used in FXTaskGroup, FXThreadPool,
but can also be used in your own programs whenever one thread needs to await the completion of multiple
worker threads.
- Fixed bug in FXJSON parser: properly stop parsing at offending character.
- Byte order mark handling fix in FXJSON parser.
- Added toChars() API to FXVariant; it returns empty string unless variant is of type string. This
is very similar to asChars(), except that toChars() is safe (always returns a non-NULL pointer).
- Renamed toPointer() to toPtr() in FXVariant for consistency.
- FXParallel implementation changes: don't kick off tasks via FXThreadPool in ParallelFor if there's
only one task. Also, split ParallelFor into a number of pieces corresponding to the number of threads
available in the FXThreadPool, unless this number is passed explicitly.
- Ensured FXParallelForFunctor's are aligned in ParallelFor.
- Updated VC++ 2008 Visual Studio project files.
July 6 - FOX DEVELOPMENT 1.7.48
|
- Added verbose option to reswrap.
- Updated BMP loader routines, some bullet-proofing against malicious bitmap files.
- Changes in FXVariant: operator bool returns true for non-zero numerical values, non-empty arrays or non-empty dictionaries.
It only returns false if the variant is FXVariant::null. This new interpretation strokes much better with common usage
patterns.
- Added asChars() API to FXVariant.
- FXPtrList now index with FXival.
- Print routines fxprintf() are now supporting NaN and Inf printouts. Also fixed -0 printout.
- Change in FXThreadPool::wait() routine: now waits till all jobs are finished.
- Added executeAndWait() routine to FXThreadPool and FXTaskGroup.
- Small change in FXParallel: ensure tasks are aligned in memory.
- Added FXEXEIcon and FXEXEImage. These should icons or bitmaps embedded in Windows Executable files.
- Added FXCOLORREF2RGB and FXRGB2COLORREF macros for Windows based FOX applications.
- Some complex math transcendentals added.
- Population-count inline functions added to fxendian.h. These use x86 builtins when possible.
- API fixes (bad parameter signatures) fixed in the list-widgets.
- CDECL attributes in some FXApp member functions (Windows Only).
May 19 - FOX DEVELOPMENT 1.7.47
|
- Project files updated to Visual Studio 2008.
- Much faster file dialog due to using file extension and PATHEXT for executable status.
- PathFinder lists files about to be deleted.
- New API's to list widgets for much more convenient way to populate with fixed lists of items.
- New selectAll() API added to list widgets.
- Updated syntax coloring file Adie.stx with FORTRAN syntax coloring.
- IMAGE_ALPHAGUESS used when loading BMP icons in FXIconSource.
- Added APIs filesToURIList() and filesFromURIList() in FXURL namespace.
- Bug fix in FXStringDictionary.
- Bug fixes in FXThreadPool.
- Replaced preprocessor MAYBE with enum maybe.
- Message map search improvement using branch probability macro and test-order.
- TIFF image loader improvements.
- FXString::format() now knows about thousands separator option for printing floating point.
- Bugs fixed in IRIS RGB image support.
- FXObjectListOf::adopt() argument should not have been declared const.
- Suggested file extension changes automatically ONLY when picking existing file.
- New hasExecExtension() API added to FXPath (Windows specific).
- Integer overflow fixed in FXApp having to do with click speed interval.
- New API getExecExtensions() added in FXSystem (Windows specific).
- If pipe2() system call not available, try set file descriptor flags with fcntl() instead.
January 29 - FOX DEVELOPMENT 1.7.46
|
- FXIconSource now can use icon/image contents to detect file format type [the stream must be seekable].
- A default FXIconSource implementation in FOX will be used to load icons if not overloaded by a user-extended one
explicitly.
- Replaced FXIconDict with FXIconCache.
- Replaced FXFileDict with FXFileAssociations. The new implementation uses FXDictionary,
and the new FXIconCache.
- Fixed problem in FXDictionary: object pointed to by data is itself not const. This affects const-accessors.
- Fixed bug in Adie: dumping core when started with unknown commandline parameter.
- Expunged FXDict and its subclasses. Now replaced with new implementations, see above.
- FXFileList now has explicit pointer to FXIconSource, for image preview purposes.
- Changed things around for FXFileAssociations to be more easily subclassable.
- In FXIconCache, don't add to the hash table until loading was successful.
- PathFinder icon previewing improved, more options for sizing.
- PathFinder custom iconpath wasn't being saved.
- In FXFileAssociations, don't add extension-association unless associated extension data from
registry is fully and properly parsed.
- Fixed compile problem in FXPipe.
December 17 - FOX DEVELOPMENT 1.7.45
|
- FXJSONFile class added. Base class FXJSON improved and generalized.
- FXIO now tracks file position; new implementation of FXIO counts bytes read/written.
- FXPipe API's added, should now be functional.
- Renamed FXStringMap to FXStringDictionary for consistency.
- Fixed a few problems in FXVariantMap, FXDictionary.
- Fixed possible race in FXThreadPool::startWorker.
- New FXThreadException class added; FXThreadException will cause graceful early termination of
a thread when thrown inside of FXThread.
- FXThread now interceps only FXException (and subclasses), rethrows other exceptions. This was necessary due
to the way GNU C++ library performs thread exits.
- Non FOX exceptions thrown inside FXThread are now rethrown; but attempts are made to maintain proper
bookkeeping when unrolling the stack.
- FXThreadPool tasks may throw exceptions. FXThreadPool now intercepts all FOX exceptions and updates
bookkeeping when other exceptions are thrown. Note: tasks in FXThreadPool are executed by threads, but since
sometimes the main thread is executing tasks in FXThreadPool also we can not allow tasks to throw FXThreadException.
- Exceptions thrown inside FXWorker now terminate the worker, and reclaim worker's thread and memory. Before exceptions
were all caught, making it impossible to pass return codes from worker execution.
- Exceptions thrown in FXTaskGroup::Task correctly reclaim the FXTaskGroup::Task now, and will update
completion count and notifications appropriately.
- The exception philosophy in FOX is that the library only manages FXExceptions and their subclasses; other exceptions
will be either uncaught or caught and rethrown after bookkeeping updates; thus programs should be careful throwing
exceptions other than FXExceptions.
December 5 - FOX DEVELOPMENT 1.7.44
|
- Updated FXJSON JavaScript Object Notation I/O class:- removed limits to token size in both input and
output operations (formerly limited to buffer size).
- Minor changes to FXVariant:- added some missing API's, removed toChar() as its useless. Added has() to determine if key is present in
case FXVariant is a map.
- Simplified FXFile and other FXIO subclasses a bit to remove redundant implementations.
- Added FXIOBuffer, an FXIO device that serializes to/from a memory buffer.
- FXRanged, FXRangef: now check intersect() results a bit differently.
- Ray to FXSpheref, FXSphered intersection test changed to allow origin inside sphere possibility.
- Fixed small bug in wc2nc().
- Possible buffer overrun in FXDir fixed.
- Added class FXStringMap.
- Changed some API's in FXDictionary. Added erase() API to allow removal of slot already located. This is faster, and
needed for successful subclassing.
- FXStat problem fixed on Windows.
October 24 - FOX DEVELOPMENT 1.7.43
|
- Added FXJSON JavaScript Object Notation I/O class. FXJSON loads and saves JSON, and has a
great number of options, extensive error reporting, and great degree of control over output.
- Problems in Windows version of fxcpuid.cpp fixed.
- Line segment to box and line segment to sphere intersection routines added; also computes intersection point..
- FXString escape() and unescape() now do \uXXXX unicode escaping. Old functions for these, fromAscii()
and toAscii() have been removed. The new implementation properly handles surrogate pairs.
- Added some API's to FXGLGroup.
- FXListBox current item fix.
- Added new functions to FXElement.h. Particularly, bulk-comparison function.
- Use new fxstrlcpy() and fxstrlcat() where appropriate; these will always produce null-terminated strings.
- Passed wrong handle for error FD in FXProcess under Windows.
- Fix introduced bugs in FXHash and FXDict.
- Some extra checks added in GIF loader header detection.
- Typo fix in lock-free queue class FXLFQueue.
- Fast accessors added to FXVariant; they can be used if type already known.
- Fixed minor issues with FXVariant implementation.
- Missing FXAPI declaration in FXArrayBase added.
- Added area() and volume() calculation to FXRange and FXSphere classes; added area() to FXExtent classes.
- Added new FXDictionary class; this will replace FXDict at some point in the future.
September 15 - FOX DEVELOPMENT 1.7.42
|
- Added class FXVariant, and supporting classes FXVariantMap and FXVariantArray.
The FXVariant class can store basic types like bool, int, or float, but also arrays of variants,
or maps of variants. Thus, FXVariant can be used to store an arbitrarily complex tree-like
data structure.
- Problems in Windows version of fxcpuid.cpp fixed.
- Fix cased from (__m128) to _mm_castsi128_ps() intrinsic for portability.
- Fix compare operation in FXSize.h.
- Added fxstrlcpy() and fxstrlcat() for safe string copy and string concatenation.
- Added __noreturn macro for flagging non-returning functions like fxerror(). This may
help compilers generate better code for places where these functions are called.
- Removed fxsleep(), obsoleted by FXThread::sleep() and FXThread::wkaeat().
- Allow out-of-source builds of FOX on configure-based systems.
- Force end-of-string in value returned by gethostname().
- Fix introduced bugs in FXHash and FXDict.
- Added swapElms() to FXElement.h. Also added templated swap().
- Added internal function memswap().
- Don't include intrinsics header files unless target architecture is x86 or x86-64.
- Updated build on Fedora 18 for Raspberry Pi.
August 27 - FOX DEVELOPMENT 1.7.41
|
- Many changes to Matrix classes for AVX and SSE.
- FXHash hash-table improvements.
- FXHash, FXPtrList needlessly had virtual destructors.
- API's equalElms() added to FXElement.h.
- Problems with initial list fixed in FXFileList and FXDirList.
- Dropped default parameter value for FXString::mid() API.
- Signed/unsigned warning issues fixed in FXArray.h.
- FXArray and FXHash now use FXival to allow truly large arrays and dictionaries.
- Fixed some warnings compiling synchronization classes.
- Use FXuval for fxmalloc() and ilk.
- Minor additional tweaks to CPU identification.
- FXRefPtr moved into the Atomic Age:- use atomic swap when changing pointer value.
- Add overloads for long, unsigned long in FXElement.h.
- FXArray now consists of single (never NULL) pointer, same as FXString. This means
FXArray takes up only a pointer's worth of space when empty.
- Sign-extend macro added to fxdefs.h.
July 18 - FOX DEVELOPMENT 1.7.40
|
- Updated fxcpuid() with AVX, AVX2, FMA, XOP, etc. detection.
- Updated tables for fxascii.cpp.
- Added various macros for memory alignment in fxdefs.h.
- Added API's to FXTreeList and FXFoldingList to replace one item with custom item.
- Added API to return processor index of calling thread in FXThread.
- Bounds check in FXTabBook's setCurrent().
- Added isAccessible API to FXStat.
- Added API to rotate vector by quaternion to FXQuatd, FXQuatf.
- Check valid path in FXPath.
- FXFileList Drag and Drop now enabled.
- Improvements to File Open Dialog right-click menu.
- Add ability to remove as well as add directory bookmarks in File Open Dialogs.
- AVX capabilities added to matrix and vector classes (if compiled with avx intrinsics).
- FXThread sleep() function reverts to sleep if interrupted by signal.
- 4x4 Double matrix transpose using AVX permute intrinsic.
- Check UTIME_OMIT before using utimensat().
- Updates to PathFinder file manager.
- Check for NULL name in FXMetaClass hash table additions.
- Added isBinDigit() and isOctDigit() to Ascii character class functions.
May 12 - FOX DEVELOPMENT 1.7.39
|
- Small changes to return types in FXIO (and subclasses) for flush(), eof().
- FXSemaphore implemented in terms of mutex and condition on MacOSX and Minix.
- FXMat4d and FXMat2d AVX accelerated when compiled for AVX.
- ADA programming language patterns added to Adie's syntax file.
- Fix in PathFinder escapement of filenames prior to spawning process to open document.
- Compile-time check improved before implementing call to utimensat() in FXStat.
April 7 - FOX STABLE 1.6.49
|
- Check index out of bounds in FXTabBook::setCurrent().
April 7 - FOX STABLE 1.6.48
|
- Patches 64-bit Windows MING-W64.
March 23 - FOX DEVELOPMENT 1.7.38
|
- Totally revamped implementation of FXThreadPool. The new FXThreadPool is organized about a
lock-free queue, with semaphores managing synchronization between producer- and worker-threads.
Thus, threads never block unless two edge conditions are reached: either the task-queue is empty,
in which case worker threads will block (nothing to do), or task queue is filled up, and producer
thread will block (no room in queue).
An important new capability is for an additional thread to enter into the task-processing loop
temporarily.
Finally, the thread starting FXThreadPool, as well as the worker threads belonging to the FXThreadPool
now have a thread-local variable referencing the FXThreadPool. This allows the threads involved to
locate the address of the FXThreadPool, for instance to create an FXTaskGroup.
- New FXTaskGroup class manages groups of task to be executed in parallel on a FXThreadPool.
Tasks started through the FXTaskGroup interface are guaranteed to be completed within the lifetime
of the FXTaskGroup instance.
- New FXParallelInvoke and FXParallelFor template functions to implement parallel function call, and
parallel for loop. This uses the new FXTaskGroup, and indirectly, FXThreadPool.
- Pass optional stacksize when constructing FXWorker. Added stacksize option to FXThreadPool with which new
workers will be started.
- FXBarrier wait primitive now sports API's to change break-through threshold, and forced-release option.
- FXSemaphore now has API's for timed wait, and try-wait for non-blocking semaphore decrement.
- Added additional atomic variable types in FXAtomic.h.
- Added check for maximum dash-pattern length in FXDC and FXDCWindow.
- Fixed some issues with FXStat of files.
- Off-by-one error fixed in FXRex counted repeat of complex subpatterns.
- Clear internal text pointers in FXRex prior to a match.
- Added a few missing print-patterns to Adie.stx syntax file.
- Added FXSemaphore-protected queue class FXSemaQueue; this is itself a wrapper around FXPtrQueue.
- Added lock-free queue class FXLFQueue.
- Numeric conversion issues fixed in fxstrtod.cpp; in particular, some corner cases now give more
accurate results.
- The function fxscanf.cpp does no longer eat the "e" when scanning for a number, unless actually followed by digits.
- Switch to statvfs() from statfs() in FXStat.
- Indexing operator added to FXAutoPtr.
- Added new class FXScopedThread. FXScopedThread automatically performs a join() upon destruction.
November 14 - FOX DEVELOPMENT 1.7.37
|
- Added auto-numbering in FXHeader.
- Added alpha-numbering in FXHeader.
- Fixes to FXProcess implementation on Windows.
- Fixed aligned to unaligned store in FXMat2f SSE implementation.
- Slightly stricter TGA header recognition.
- Removed FXSemaphore value() API. Never used, and not really useful.
- FXRecentFiles allows for up to 32 entries; still defaults to 10, however.
- Fix in Windows non-UNICODE implementation of FXStat created(), accessed(), and modified() API's.
- Added API's to FXWorker class.
- Added API to FXPtrQueue class.
- FXPath::contract() should only replace whole path-components.
- Prototype of wndproc() was not correct for 64-bit Windows.
November 14 - FOX STABLE 1.6.47
|
- Prototype of wndproc() was not correct for 64-bit Windows.
August 23 - FOX DEVELOPMENT 1.7.36
|
- FXPath::match is now UTF-8 aware in matching filenames.
- Keep directories up front in FXFileList.
- FXTable API additions for spanning cells.
- FXTable fixes to issue only single callback for spanning cells if multiple columns/rows fall in selection rectangle.
- Added GO Language support for Adie Text Editor.
- Added TENA .tdl Language support for Adie Text Editor.
- Switch to C++ casts in certain places kills of const cast warnings.
- The fox-config file for FOX project development has been re-instated.
July 24 - FOX DEVELOPMENT 1.7.35
|
- New feature in FXHeader control: auto-renumbering captions based on renumbering function; if a renumbering
function (which computes the caption from the caption index) is set, then captions are automatically recomputed
when the number of items in the FXHeader is changed.
- Updated FXTable to use this new feature in FXHeader. The old options for renumbering have been removed.
- Porting problem in FXMat4d, FXMat4f fixed, for CYGWIN32.
- Added API's to FXTable to return first and last row (or column) of a spanning cell.
- Added API to check if a cell is horizontally spanning or vertically spanning.
- Cutoff angles in FXQuatd are smaller than in FXQuatf, due to much greater precision of doubles versus floats.
- FOX on Raspberry Pi coming soon (I got one on order!).
July 12 - FOX DEVELOPMENT 1.7.34
|
- Added FXRandom fast, long-period, thread-safe psuedo-random number generator.
- Gamma-corrected image scaling option added.
- FXPath::relative() corner-cases fixed.
- FXPath::isHidden() now faster by scanning backward.
- Adie syntax highlight algorithm had some possible issues. Now expand context when incrementally recoloring.
- Include glext.h on Windows; missing symbol otherwise.
- Updated list of C++ keywords in Adie.stx style coloring file.
- Added enable/disable item API's to FXComboBox, FXListBox, FXTreeListBox.
- Added expression evaluate feature to Adie text editor.
- Internal anynymous name spaces introduced in FXExpression and FXRex due to symbol clashes on some compilers.
- Added ?: alternative expression to FXExpression.
- Array indexing problem fixed in FXFont.
- Typo fixed in FXAtomic.cpp.
July 11 - FOX STABLE 1.6.46
|
- Small tweak to FXIcon's guessthresh(), thanks to Fanglin.
April 27 - FOX DEVELOPMENT 1.7.33
|
- Issue with Windows7 OpenGL pixel format supporting composition is weighted heavier, thus picking
composition mode preferentially. This makes it less likely that the visual will match non-Aero capable pixel
formats.
- Fixed TIFF image save/load.
- Fixed quaternion arc() for vectors that are 180 degrees apart.
- Some tweaks in FXAtomic: more optimal code for non-PIC compiles; also, check for PIE (position independent executable).
- Fixed problem in FXRex regarding non-ASCII characters.
- Repaired some broken syntax patterns in Adie.stx syntax file.
- SSE-ified lerp() API added to vector classes.
- Fixed SSE unaligned store problem in FXMat4d; exhibited itself on 32-bit systems.
- Setjmp()/longjmp() issue fixed in fxpngio.cpp.
- Operator FXbool in FXAutoPtr and FXRefPtr interfered with comparison operators; removed it.
- Added API's to FXMat4 classes.
- Added serialization capability to FXExpression class.
April 27 - FOX STABLE 1.6.45
|
- Fixed quaternion arc() routine. In case of vectors that are (almost) 180 degrees apart, the wrong
quaternion was returned.
- Issue with Windows7 OpenGL pixel format supporting composition is weighted heavier, thus picking
composition mode preferentially. This makes it less likely that the visual will match non-Aero capable pixel
formats.
- Invalid handle issue fixed in FXWindow.
- Backported FXPath shell escaping routine.
January 3 - FOX DEVELOPMENT 1.7.32
|
- New FXWEBPIcon and FXWEBPImage image support classes; this requires libwebp from google.
- Some changes and speedups in FXHash implementation.
- Define cpu_set_t for FreeBSD.
- Undefine VOID if defined (Windows thing).
- Removed copy constructor and assignment operator for FXDict; was never correct anyway, and its not used.
- Issue with FXMenuCheck and FXMenuRadio reimplementing ID_SETVALUE with a boolean argument, whereas baseclass
implements ID_SETVALUE with string (since there is no check) This caused some breakage in apps.
- Scrolling widgets like FXIconList no longer do makeItemVisible if user clicks on item:- this was disconcerting
and unnecessary; if you can click on it, then you must have been able to see it!
- Fixed few issues with incremental search bar visibility.
December 12 - FOX DEVELOPMENT 1.7.31
|
- Adie text editor Incremental Search Capability implemented.
- Started on WebP image I/O support.
- Problem in FXTable clipboard copy/cut operation fixed.
- Fixes in FXAtomic for VC++.
- Default value in FXURL url parser.
- Fixed bounded repeat bug in FXRex.
- Patch for FreeBSD processor affinity mask.
- Fixed case-insensitive FXString comparecase() routine for UTF8.
- Fixed potential issue using FXRex on non-x86 machines.
- Major FXRex regular expression engine overhaul and bug fixes.
- Startup of Adie editor now more sensible (thanks to Sander's manu suggestions); start with
initial directory set properly and properly located untitled file.
- FXDirList's setCurrentFile() improved.
- Improvements in FXFileList and FXFileSelector; all and all removed many unnecessary
directory parses, with concomitant speedups of the FXFileDialog panel.
- Bookmarks popup menu in Adie text editor.
- New Ctl-K keybinding clears current text line in FXTextField and FXText.
- FXDirSelector cleaned up a little.
- FXArrowButton made ever so slightly smaller/more distinguished.
- Ability to set style flags in Adie syntax color setup subpanel.
- Updated Adit text editor syntax style setup subpanel.
- FXColorWell no longer grabs primary selection (was awkward to use!).
- FXColorWell looks improvement: focus rectangle now inside well, well observes frame style
now, so you may need to update your code unless default parameters were used.
- API's added to FXColors: blendOver(), blendOverBlac(), blendOverWhite() added.
- Fixes and improvements to SyntaxParser in Adie.
October 18 - FOX DEVELOPMENT 1.7.30
|
- Vastly expanded code docs for FXText widget.
- Improved Syntax parser for Adie text editor.
- FXFileList now issues proper callbacks when files or directories are
changed on the disk while FXFileList is displaying them.
- FXFileSelector puts FXFileList into ICONLIST_SINGLESELECT mode when
SELECTFILE_ANY mode is in effect. This is as it should be since the user
may type a filename that doesn't yet exist.
- Several unnecessary directory scans have been eliminated when FXFileDialog
first appears. This makes the FXFileDialog much faster than it was before.
- Python syntax rules updated in Adie.stx.
- Added coloring rules for merge-conflicts for C, C++, and a few other languages to Adie.stx.
- Fixed bugs in Adie.stx now flagged by stricter syntax parser.
- Non-recursive forceRefresh() in FXWindow.
- FXIconList generates SEL_DELETED, SEL_INSERTED instead of SEL_REPLACED. These callbacks
are more useful.
- PathFinder shows useful information in its status line.
- Can now change permissions of multiple files from PathFinder properties panel.
- PathFinder can now change file-associations and icon-assignments, just like ControlPanel.
For now, these have effect only in PathFinder itself, but this should change in the future.
- Typo in FXComplexd fixed.
- Workarounds for disk stat for MacOSX and other non-Linux Unices.
- Fixed bug in FXMat3d SSE2 code. Was using aligned access.
- FXFileList and FXDirList items keep track of mode-bits. This actually simplifies
stuff quite a bit.
- Useless directory rescan eliminated when sort-function changed in FXFilelist and FXDirList.
- Issue SEL_CHANGED if current item is replaced in FXIconList, FXList, etc.
- Adie remembers if extension-less file syntax was changed by hand; next time same file
is loaded, syntax will be restored properly.
- First-time bug in ControlPanel fixed; rare, issue only occurs ControlPanel is ran first
time and no registry exists yet on disk.
- Option added to PathFinder to scale image to available space when using internal image viewer.
- Vendor-key in FXApp's constructor now defaults to FXString::null. This is the more common usage
pattern.
- Option added to PathFinder to control file-item space and whether or not to auto-size columns
display.
- Bold, strikethrough, underline style flags now saved in Adie.
- New syntax rule option in Adie.stx: all-matching "background" rule. When used, you can
colorize all text not matched with the regular rules, as override to the default colors used
by the Adie editor.
September 9 - FOX DEVELOPMENT 1.7.29
|
- Updated to Unicode 6.0 tables! This is a massive change! Added Arabic Joing groups table.
- We now have a FOX Forum!
Register and log in to post articles and converse with other FOX Users!
- Added flag to FXString's shouldEscape() and escape(). If set, escape utf8 strings, otherwise only escape control characters.
- FXStatusLine bug fix: order is (1) text from help source (widget under the cursor), (2) text from GUI update
callback to its target, (3) fallback text value supplied by setNormalText().
- Fleshed out some missing API's in FXDirList, FXFileList.
- Small problem in SSE2 in FXMat4f fixed.
- File bindings setup panel in PathFinder added.
- FXWindow::forceRefresh() now non-recursive (faster, stack-friendly).
- Meaningful stuff displayed on status line in PathFinder.
- FXString typo fixed.
- Don't assume filename order is stable when listing directory contents (FXFileList, FXDirList).
- Suspect float to double promotions fixed (thanks to CLang++/LLVM compiler!).
- Fixed problem in FXFileList and FXDirList with dead symlinks.
- Signed byte type added (FXschar).
- Updated Python syntax coloring for Adie. Also added JavaScript syntax coloring.
- First-time use of FOX ControlPanel didn't work properly; fixed this problem.
- Updated and clarified doc-comments in FXThread.
- Removed operator FXbool from FXComplexd and FXComplexf.
- Fixed typo in FXComplexf and FXComplexd.
- Added byte-swap built-ins for Microsoft C++ compiler.
- Updated Doxygen scripts for reference documentation generation from header files.
- Fix small bug in FXThreadPool.
August 3 - FOX DEVELOPMENT 1.7.28
|
- FXConcurrent can be subclassed to create subclassed FXWorker threads.
- Portability issue in FXFileList fixed.
- Cleanups in FXGLVisual.
- Added processor-affinity API's for FXThread.
- Added __prefetch() macro to invoke underlying (GNU C++ only) cache-prefetch instruction.
- Added FXScopedReadLock and FXScopedWriteLock.
- Fix to FXAutoPtr assignment operator.
July 22 - FOX DEVELOPMENT 1.7.27
|
- New class FXProcess to manage child process creation in a platform-independent way.
- Split out FXThread into constituent files, one for each class (FXMutex, FXSemaphore, etc).
- Overstrike mode behaviour improved in FXText.
- New collection of functions to deal with utf8/utf16/utf32 conversions to replace the old
ones. The new implementations are more strict in stream errors and overrun-safe.
Due to dropping non-unicode code points they are also perhaps a bit faster.
- New macros for testing utf8, utf16 lead/follow properties.
- New fxendian.h header file for fast byte swapping primitives, on processors where this
is supported.
- New macro FXLONG() to embed 64-bit integer constants in your code, in a way that survives various compilers.
- Added FXIO::Inheritable flag for i/o devices. By default file handles are not inheritable by child processes.
- Added new FXConcurrent class. This provides multi-threaded SIMD style concurrency. It is extremely efficient
for recurrent tasks due to predictable task-to-thread assignments.
- Better method to force thread signal masks when starting new threads using FXThread.
- Some improvements in the enquoting algorithm for shell-safe commandline parameters on Windows.
- Issues in fxscanf() for parsing doubles fixed.
- API's added to determine free disk space.
- Some members of FXEvent were not initialized in the constructor.
- New intermediate class FXIODevice. This makes FXIO an purely abstract base class.
- New class FXWorker is a thread that runs a FXRunnable. This makes sense for FXConcurrent and FXThreadPool.
- Renamed FXMutexLock to FXScopedMutex; added FXScopedSpinLock as well. Old FXMutexLock still works, but
is now deprecated.
- Fix to FXAutoPtr when using implicitly called constructors or conversion operators.
May 17 - FOX DEVELOPMENT 1.7.26
|
- Switched image format over to BGRA instead of RGBA. This is now preferred format
on most common platforms (Linux, Windows, etc.). Plus, directly supported by current
OpenGL hardware.
- Fixed ray-box intersection test in FXRangef / FXRanged.
- Updated Makefile's for Borland C++.
- Implemented additional cases in .DDS image loader.
- Fixed implementation of findWindowAt() on Win32.
- Added lerpdot() (angular rate quaternion) API to FXQuatd and FXQuatf.
- New functions added to FXSystem.
- Additions and changes to FXQuatd and FXQuatf.
- Warning fixes in FXThread.
- Changes to FXAtomic.
- ControlPanel application fixes.
- Collection of changes for MINIX port.
January 29 - FOX STABLE 1.6.43
|
- Added missing AC_FUNC_MMAP to configure.ac. Presence of mmap() and munmap() API's we not
being discovered properly.
January 29 - FOX STABLE 1.6.42
|
- Fix for Vista/Windows 7 which favors PFD_SUPPORT_COMPOSITION for OpenGL
pixel formats.
- Fix libpng version 1.5. Members of png_struct are now hidden, so fxpngio.cpp must
use newly introduced API to use embedded jmp_buf.
- Fix configure.ac type which caused linkage to libGL and libGLU even if compiled
without GL support.
November 23 - FOX DEVELOPMENT 1.7.25
|
- Change in configure.ac to check intrinsics header files with modified compiler flags; header
files are not compilable with default options.
- Updated Borland C++ makefiles.
- Update Visual Studio 6 project files with missing headers.
- Small fixes in FXAutoPtr.h.
- Change some inlined API's of FXProgressDialog to non-inline.
November 18 - FOX DEVELOPMENT 1.7.24
|
- Added FXMat2f, FXMat2d.
- Vectorized many functions in FXMat2d, FXMat2f, FXMat3d, FXMat3f, FXMat4d, FXMat4f (using SSE/SSE2/SSE3).
- Some fixes to FXPath::isInside().
- Fix to drawImage() in FXDCPrint.
- Added FXPtrList.
- Add FXbool return value to some API's in FXArray.
October 5 - FOX DEVELOPMENT 1.7.23
|
- New API FXPath::relativize() returns shortest (unique) relative filename of file given a list
of search directories and absolute filename.
- Added intrinsics includes to xincs.h (enabled on Linux/GCC only for now).
- Small layout changes to FXFontDialog.
- Added API's to FXFontDialog to allow user to work with font spec string instead of just FXFontDesc.
- Added API's to FXFont for picking apart font spec string components.
- Added some API's to FXFontDesc.
- Added FXPtrQueue class.
- SSE intrinsics now used (with appropriate compiler options) in FXMat4f (on x86-64 by default
and optional on x86). Windows compilers may follow.
- Updated ControlPanel for new registry location; cleaned it up a bit as well.
- Due to crash bug in openjpeg library, JPEG2000 support temporarily turned off.
- Default value for mark in FXSettings parse() and parseFile() was changed to true. This
is more user-friendly because this causes entries to be written back in unparse() and
unparseFile() even if not changed.
September 25 - FOX DEVELOPMENT 1.7.22
|
- FXRegistry now uses the
FreeDesktop.Org specification.
Registry files are located in locations determined according to the specification, $XDG_CONFIG_DIRS and $XDG_CONFIG_DIR.
Also, registry files have a file extension ".rc" or in ascii mode on Windows, ".ini".
The common FOX applications settings file is now called "fox.rc" ("fox.ini" on Windows if ascii mode) to avoid
possible clashes with other systems.
- FXApp::runWhileEvents() and FXApp::runModalWhileEvents() only use blocking time when waiting for
first event; after first event, don't block if no further events but just fall out.
- Better FXString::upper() and FXString::lower() implementation.
- Major cleanup of xincs.h.
- Major performance improvements in FXThreadPool.
- Dispatch WM_COPYDATA from FXApp (Windows).
- Dump FOX version number in very first trace command.
- FXThreadPool::start() should not return until all started worker threads are ready.
- FXString throws FXMemoryException if out of RAM.
- Improved FXString::escape() and FXString::unescape().
- Updates to Adie syntax file.
- Atomic primitives for integer and pointer variables added; not inlined due to possible differences
in compiler settings between user's own code and FOX library.
- Adie "Open Selected" parses out filename,line number, and also (new) column (accomodate change of GCC
error/warning outputs).
- Compiled regexes in FXRex now use HALF the amount of memory.
- New subdivision modes for FX4Splitter: preferred FOURSPLITTER_VERTICAL or FOURSPLITTER_HORIZONTAL flags
control which way sub-panes expand if not all four sub-panes are visible.
- Fixed issue with FXThread priorities.
- Atomic (possessive) sub-group matching implemented in FXRex.
- New fxcpuid.h header added to allow checking processor types (currently supported on x86 and x86-64 on
GCC, LLVM, and Intel-C++ only).
- New FXISUTF8(), FXISUTF16() macros added; FXISUTF() removed.
- API wcvalid() checks for valid utf8, utf16 (wide character) character sequence.
- Updated and corrected FXURL implementation; code to handle legacy URLs for Windows.
- New API's for quaternion implementation FXQuatf and FXQuatd.
- Added IMAGE_THRESGUESS flag for FXIcon. When passed, it auto-detects the etched-in looking
icon threshold value using new protected member function guessthresh(). This works very similarly
to IMAGE_ALPHAGUESS and guesstransp(). New API's setThresholdValue() and getThresholdValue() allow
direct setting of this value.
- API to get temporary directory improved in FXSystem::getTempDirectory().
- Use thread-safe versions for time and dates in FXDate and FXSystem, whenever possible.
- FXBarrier class added to FXThread.h.
- Added very fast affineInvert() and even faster rigidInvert() to FXMat4f and FXMat4d.
- NEW FOX compile option "--enable-native" will generate native code support for machine you're on.
This is faster if FOX is compiled use on your own machine only.
- Added __threadlocal attribute macro to declare thread-local variables.
- Compiling FXThread on newer Windows versions allows usage of newer kernel facilities such as RWLOCK,
CONDITION_VARIABLE.
- Fixed small bug in FXDict.
- Fixed FXToolBarShell issue with FXToolBarShell not hiding when its child does.
- Fixed bunch of warnings found under LLVM clang++ compiler.
- FOX time settings variables no longer with "ns" suffix; no longer needed since registry now in
new location there's no conflict with old FOX registry files.
September 2 - Half Floats
|
- A reader kindly pointed out a porting issue in the generation of the half-float
table generation. I have revised the function to generate the tables, and an updated
version of my fast half float to float conversion paper may be found here:
fasthalffloatconversion.pdf.
Note that the tables in FOX 1.7 are still correct:- they were generated on a machine where the
problem didn't manifest itself.
August 31 - FOX STABLE 1.6.40
|
- Fix FOX package-config file.
- FXSystem::getTempDirectory() now uses TMPDIR environment variable if set.
August 24 - FOX STABLE 1.6.38
|
- Auto-guess icon etch mask threshold added.
- Updated compilation scripts to new autoconfig.
- Removed XGetDefault from code in ControlPanel.cpp.
- Compile Adie with static lib on Windows.
December 12 - FOX DEVELOPMENT 1.7.21
|
- Added fastnormalize() API's in FXVec{2,3,4}f, which use SSE rsqrtss and one Newton-Raphson
step for fast and quite accurate vector normalization.
- Added JPEG 2000 support (FXJP2Icon, FXJP2Image).
- Added soft-tab insert, force auto-indent and no-auto-indent character entry.
- Fixed cursor-overhang issue (off-by-one redraw).
- Fixed FXCondition::wait().
- Added a few convenience-API's in FXMat{3,4}{d,f}.
- Obtain number of processors improved.
- Some small fixes in FXRex.
- Faster fxrandom() implementation using Marsaglia's algorithm; its better as well!
- Fix issue in FXThreadPool waking threads.
- Variable amount of wait adding job to FXThreadPool.
- Fixed a few warnings.
- Fixes in FXFont rolled in.
- Outer product added in FXMat3{d,f} and FXMat4{d,f}.
November 11 - FOX STABLE 1.6.37
|
- Fixed remainingTimeout() returning ns, not ms remaining time.
- Fixed bug in parsing of accelerators.
- Fixed wrong enum value in FXComboBox.
- Backported FXTable fix from 1.7 (delete of selected lines).
August 18 - FOX DEVELOPMENT 1.7.20
|
- Use relative value for FXCondition::wait() instead.
- Totally rewritten FXTheadPool class.
- Default argument for FXHash::insert() and FXHash::replace() is NULL.
- Added get()/set() to FXAutoThreadStorageKey class.
- Small reorganization of source files; allows in-situ usage of library.
- Removed getCursorItem() API from list widgets. Was not working reliably anyway.
- Changed the way tooltips are obtained in list widgets. New onQueryTip() implementation
calls getCursorPosition(() and uses getItemAt() to determine which item to get tip from.
- Added getToolTip() API to list items. Default implementation returns label, but its
a virtual intended to be overloaded in subclassed list items.
- Fixed the FXColorDialog's custom color wells. They were not saved to registry before.
Code was moved from FXColorSelector to FXColorDialog, which simplifies FXColorSelector for
more easy customization.
- Sort colors in FXColorSelector. First cut of algorithm is reasonable, but needs improving.
- Converted to new automake tools.
- Converted FOX from CVS to GIT repository.
- Fixed ID_DELETE being used for different things. This meant ID_DELETE_CHAR is now used in
FXText and FXTextField to delete a character.
- Moved ID_AUTOSCROLL from FXWindow to FXScrollArea, FXScrollBar, and FXTextField; these are
the only places this is used.
- Added missing FXAPI declaration to FXRulerView.
- Added icon-owned option to FXHeader control.
- Fixed enum value in FXComboBox.
- FXFile need not be friend of FXStat.
- Dramatic speedups in FXHash and FXDict.
- Fixed FXTable delete of selected lines. Selection wasn't properly adjusted.
- Added some API's to FXObjectList.
- Added non-const accessor API's to FXArray and FXString.
- Documentation comments added to FXTabBar and FXTabBook.
- Fix in FXSettings; don't create section just because we want to delete a key.
- Safer behavior in FXDict.
- New look for FXProgressBar.
- Cleaner tear-down logic in FXApp.
- FXRootWindow wasn't being deleted from XID -> FXWindow hash table.
- Added FXRefPtr class for reference counted objects.
- Speeded up FXStat::statFile() on Windows.
- Fixed bug in FXAccelTable.
- Added __likely() and __unlikely() macros; these help with branch-probabilities.
- Added FX_FORMAT macro. Useful for argument checking.
- Added FXColors, a handy list of pre-defined colors. Also some handy color API's.
- Added getWindowClass() API to FXWindow. This returns the window-type, which is role
a window plays on a desktop. This hint is intended for Window Managers.
- Change FXPath::match() API parameters and enums; old fxfilematch() API now eliminated.
- Added FXALIGNED macro variable alignment attribute hint.
- Fix fxgetticks() implementation.
- New fxgetmxcsr() and fxsetmxcsr() API's (x86-64/Linux only).
- Added fxhsl_to_rgb() and fxrgb_to_hsl() API's.
- Allow setting fxTraceLevel from environment variable FOX_TRACE_LEVEL.
- Old getCursorItem() API's removed from List Widgets. Didn't work that well anyway.
- Better default colors in FXColorDialog.
- Transitioned from configure.in to configure.ac for new automake system.
- Directory layout change to allow in-situ usage.
March 17 - FOX STABLE 1.6.36
|
- Fixed FXTable startInput() issue.
February 05 - FOX DEVELOPMENT 1.7.19
|
- Reversed arguments in fxfilematch() and FXPath::match(); this allows default parameter to be passed for
pattern (which is also self-documenting).
- FXString::format() and FXString::vformat() now return size of the string; this is more useful than
self-reference.
- FXSettings APIs now sport versions which take FXString reference. This eliminates many ".text()" calls
to pass char* pointers.
- FXRecentFiles now works on FXSettings, not FXApp. Now specifically disallows empty filenames.
- Added volume to FXStat. Volume and index uniquely identify a file in the system, even when
symlinks are used. Interpretation of these values other than simple comparisons depends on the
operating system, however!
- FXDirVisitor split off into its own file.
- Major speed improvement in FXMat4d, FXMat4f matrix inversion: speeded up by over factor two;
this is based on a specific Laplace Expansion of the 4x4 Matrix which is based on 2x2 subblocks
instead of the usual development by a row and 3x3 minors.
- Based on the above techique, we also have a faster 4x4 determinant calculation [about 25%
fewer floating point operations].
- Block editing of FXTable cells which are disabled.
- Wrote a little piece on the new half-float support and the theory behind its implementation
in FOX: see fasthalffloatconversion.pdf.
This paper explains the new half-float representation [similar to IEEE754 float and double], and how extremely
fast conversions can be obtained.
- Eliminated automatic conversion of FXColor to- and from FXVec4 and FXVec3. These API's have
caused much hidden bugs and indeed after removing them even more bugs surfaces which were
masked by these API's.
The New API's are colorToVec4f(), colorFromVec4f(), colorToVec3f(), colorFromVec3f(), and their
equivalent double-precison flavors.
Also fixed at the same time is more correct rounding when convering from floating point to
integral representations.
- Added FXAtomicPtr template class for lock-free programming support on SMP type systems.
The new lock-free primitives require processor bus-locking support. Due to at least
some GCC versions having problems, the new FXAtomicInt and FXAtomicPtr implementation in
FOX prefers to use the inline assembly version over the GCC __sync_xyz() style built-ins.
Some of the API's have been renamed to more commonly (and succinct) names, such as cas() (compare-and-swap),
set() (exchange).
- New code in FXThread for determining #processors.
- New API's added to FXImage. The colorize() API colorizes an image by multiplying its luminance
by a given color argument. The fade() API fades the image to a uniform given color, based on a
fading-factor.
- Some more stringent checking and tracing in FXGLVisual matching added.
- Workaround added for non-conforming handling or GLX 1.3 or newer by allowing
0 for glXCreateWindow() in older glX implementations.
February 05 - FOX STABLE 1.6.35
|
- Backported FXFont Freetype pitch size.
- Fixed compose context create issue.
- Bug fix in fxloadPPM() when ascii black and white bitmap is loaded.
- Call tr() when populating color names.
- Small bug in FXTextField when I-beam cursor surrounded by non-ascii UTF8 characters
and it near the beginning or end of the string.
November 24 - FOX DEVELOPMENT 1.7.18
|
- Added FXhalf half-precision floating point format support. This is a 16-bit float as needed for
signal processing and high-dynamic range imaging. FXhalf is designed to behave in all respects
like a float number, except with a more limited range [up to 65504.0].
We have developed some extremely fast, table-based conversion methods.
- Small problem in preprocessor conditions fixed in FXAtomic.h
- Get/set font added to FXCalendarView.
- FXCalendar header and body font can be changed independently.
- Now have ticket spinlock implementation inside FXThread [GCC/x86/x86-64 only].
- Added RGBA save for FXDDSImage and FXDDSIcon.
- Small API changes in FXStream and its subclasses. Made things more easy to remember and more consistent.
- Improved documentation in FXThread.h
- Added getSelectedFiles() API to FXFileList.
- API's added to FXStat to yield link count and file inode(index) on filesystems where such
info is available.
- Simpler enumeration of entries in FXDir. Also, its faster.
- Added resetGradients() API to FXGradientBar.
- Initialize FXGradientBar to more sensible default gradient.
- Message handlers ID_UPPER_COLOR and ID_LOWER_COLOR could be interfaced directly
to FXColorWell. Now, they can also be directly interfaced to FXColorDialog and
FXColorSelector since these now ID_SETINTVALUE and ID_GETINTVALUE which permits
bi-directional dataflow similar to other widgets which can be connected to FXDataTarget.
- FXMDIClient now as optional background tile image.
- Generate SEL_MINIMIZE, SEL_MAXIMIZE, SEL_RESTORE messages on Windows as well as X11 when windows
are iconified/minimized, maximized, or restored through Window Manager.
- Added setOwned(), isOwned() API's to FXImage, FXBitmap. This affects the way the client-side
pixel buffer is managed.
- Added getActualFontDesc() API to FXFont so we can get the info about which font was actually
matched in a more convenient form than using the individual API's.
- DDS support now includes half float and float (R16F, G16R16F, A16B16G16R16F, R32F, G32R32F, A32B32G32R32F
formats.
- Fixed problem in FXMessageChannel: using Semaphore instead of Event on Windows fixes
sporadic lock-ups.
- Added extra option to FXMessageBox.
- FXProgressDialog and FXProgressBar now support ID_SETINTRANGE and ID_GETINTRANGE,
permitting connection through messages.
- Updated XDND system with DRAG_ASK. DRAG_ASK causes menu popup; this eliminates
accidental drag-and-drops when you really wanted to click.
- Some small fixes for compile w/o OpenGL.
- Fixed possible memory leak [small one] when things end with timer or chore.
- Fixed bug reading monochrome .pbm bitmap.
July 28 - FOX STABLE 1.6.34
|
- Fixed bug in FXSettings; symptoms: every once in a while, a key-value pair was skipped.
- Small update to MAC-OSX implementation of FXThread.
- Fixed some minor things in fxutils for particular Windows header files.
- On Windows, block widget size update if it is minimized; minimized is a state, and
does not cause a new size.
- Minor tweak to order in which size constraints are being passed to Window Managers
on X11. Some Window Managers had a problem with the old order.
- Added FXSGN() and FXSGNZ() macros.
- Updated FXFileList drag and drop. Popup menu appears when normal drop occurs.
July 1 - FOX DEVELOPMENT 1.7.17
|
- New Image Type supported: FXDDSImage and FXDDSIcon support ".dds" file type images; images are decoded
when loaded (saving is not yet supported at this time). The following formats are implemented:
DXT1 (BC1), DXT2, DXT3 (BC2), DXT4, DXT5 (BC3), ATI1 (BC4), 3DC (or ATI2/BC5), and RXGB. Also supported are
non-compressed formats RGB and LUMINANCE.
At this time, only the first image is loaded; future versions will probably load 3D images and possibly
Cube Maps as well. Note: the image loader is not suitable for directly passing images through to OpenGL;
this code will however be made available at some time as well.
- Added transform() API to FXSphere; it may be used to transform bounding sphere by affine transformation
matrix.
- Also added transform to FXRange. Again, matrix must be an affine transformation matrix.
- Many Input Method Editor improvements.
- Added head() and tail() API's to FXArray and FXObjectList. Mostly for convenience sake.<\li>
- Updated documentation for FXRangeSlider.
- Extended drag and drop protocol with DND_ASK.
- FXAutoPtr class added. This represents owned, non-reference counted pointer variable. This is
especially convenient for keeping tabs on all your icons and such.
- FXURL family of API's extended: encoding/decoding, but also picking apart URLS into parts according
to the rfc3986 syntax.
- Added FXPath::share() API for Windows.
- Updating FXFileList for new DND_ASK type.
- FXIconSource now supports FXDDSImage and FXDDSIcon.
- Reimplemented utf2wcs(), utf2ncs(), wc2utfs() and nc2utfs() to be buffer overrun-safe.
- Updated FXThread for Mac OS-X.
- New API's in FXDCWindow: fillVerticalGradient() and fillHorizontalGradient() for gradient-fills.
- New API stackingOrder() added to FXTopWindow to control window stacking order explicitly. There
are three types: STACK_NORMAL (the default) where the order is determined by owner windows; STACK_BOTTOM
which will cause the window to be below other windows, and STACK_TOP which will constrain it to be above
other windows.
April 29 - FOX STABLE 1.6.33
|
- Backported FXTopWindow resize() and position() fixes from FOX 1.7.
- Fixed GCC 4.3 warning in FXArray header file.
- Made internal data arrays static to prevent global name clashes on some compilers.
- Fixed uninitialized variable in FXFileDict.
April 22 - FOX DEVELOPMENT 1.7.16
|
- Fixed issue with unplugged XDevice (when xorg.conf contains device but device
was unplugged).
- FXMenuButton pops and collapses with any mouse button, not just left one. This fixes a minor
problem if one tries to right-click after having left-clicked FXMenuButton.
- FXIconSource now handles "jpeg" and "tiff" extensions instead of only "jpg" and "tif".
- Forgotten tr() added to FXMessageBox.
- Added NoAccessTime option for FXFile open() call.
- Added Rename option to FXFileSelector widget.<\li>
- FXString::vformat() and FXString::format() and other printf-like printing routines now support
positional arguments.
- FXString::vscan() and FXString::scan() and other scanf-like reading routines now also support
positional arguments.
- FXTopWindow not only UTF8 title but also sets 8859-1 title string for legacy window managers.
- Fixed numerous warnings due to GCC 4.3 new integer overflow rules (-fstrict-overflow and -Wstrict-overflow).
Whenever the optimizer makes the assumption is made that expressions doesn't overflow, a warning is issued.
Rewriting code in a way that makes the assumption go away will kill the warning; sometime, unsigned
may be used as well. So I rewrote a lot of code in FOX to be more overflow-resistent.
- Fixed many warnings reported by Borland C++ compiler.
- Moved REGEX_ enums into FXRex class namespace.
- Applied FXComposeContext and FXApp patches for input methods on Windows; new message types
have been introduced because of this, SEL_IME_START and SEL_IME_END.
- Corrected problem causing NVIDIA driver video-memory leak in FXGLContext when new GLX1.3
code is used on new Xorg X Server. The problem caused video memory to remain allocated past
the termination of the program. Of course this should never happen, not even in incorrect
programs. NVIDIA is looking at the problem from their end.
March 10 - FOX STABLE 1.6.32
|
- Fixed FXPath::simplify(). Backport from FOX 1.7.
- Fixed Adie CPU load issue caused by clock updating.
- Fixed FXURL::fileFromURL().
January 11 - FOX DEVELOPMENT 1.7.15
|
- Updated MS-Windows OpenGL implementation. Now uses wglGetPixelFormatAttribivARB()
from ICD driver (where available) to determine extended PIXELFORMAT attributes.
Of particular interest is the ability to match multi-sampling PIXELFORMATs which
support hardware anti-aliasing.
- Fixed bug in FXSettings not dealing properly with CRLF on MS-Windows (when in
ASCII mode; the regular mode uses the registry and that worked fine).
- Implemented PropertyNotify message from X11 to intercept _NET_WM_STATE
changes. This allows us to send SEL_RESTORE, SEL_MAXIMIZE and SEL_MINIMIZE when
the user manipulates an application's top-level window.
January 2 - FOX DEVELOPMENT 1.7.14
|
Happy New Year to all the FOX Users! Despite the holidays, its been a pretty busy over
here with new FOX developments; since its the new year it was decided not to sit on this
any longer but to release it and get some early feedback. So without further ado, here
it is:
- Added 3DConnexion SpaceNavigator support (currently
under Unix only).
The SpaceNavigator device is a 6DOF motion controller; if your working with 3D software,
you'll probably want to get one of these things. However, even if you're just fond of using
Google Earth, you'll probably going to find this thing
very useful.
To get this device working on Linux, a recent Xorg X Server (7.3 or later) with USB HID
XDevice support is needed. Of course, HID support in the linux kernel also needs to be enabled.
Other than that, no special device drivers are required. However, some minor configuration
files need to be changed to allow X11 to recognize the device.
Simply include the following line in the "ServerLayout" section of your Xorg.conf file
(typically located in the /etc/X11 directory on your system).
InputDevice "SpaceBall" "SpaceBall"
Also, add a new "InputDevice" section in your Xorg.conf file:
Section "InputDevice"
Identifier "SpaceBall"
Driver "evdev"
Option "Name" "3Dconnexion*"
Option "Pass" "3"
Option "Mode" "Relative"
Option "XRelativeAxisMap" "0"
Option "YRelativeAxisMap" "1"
Option "ZRelativeAxisMap" "2"
Option "RXRelativeAxisMap" "3"
Option "RYRelativeAxisMap" "4"
Option "RZRelativeAxisMap" "5"
Option "ZRelativeAxisButtons" "off"
EndSection
After these changes, you should of course restart the X Server. There is no need for
any additional driver modules; the new evdev device capability in the X Server does
all the hard work.
Your Space Navigator or Space Traveler (the Space Traveler is a portable version of the Space
Navigator. It has a few more buttons.) should be plugged in prior to starting your FOX
application.
- Added new message types SEL_SPACEBALLMOTION, SEL_SPACEBALLBUTTONPRESS, and
SEL_SPACEBALLBUTTONRELEASE for 3DConnexion SpaceNavigator
devices.
- Revamped OpenGL support with GLX 1.3 or higher (frame buffer config supprt). There are new
options for FXGLVisual, and some older options have been renamed, to force updating of existing
software.
The new implementation allows multi-sampling frame buffer configurations, as well as
explicit control of rendering surface types (Window, Image, or Buffer).
- Updated FXGLCanvas. FXGLCanvas now has the capability of using externally
created FXGLContext or to use a private FXGLContext. Thus, FXGLContexts may
be shared between instances of FXGLCanvas.
There are a few news APIs to control
the context being used, and a new option GLCANVAS_OWN_CONTEXT to specify if the
FXGLCanvas should manage the FXGLContext or not.
- FXGLContext has been rewritten to use the updated FXGLVisual. The FXGLContext object's lifetime
can be managed independently from the FXGLCanvas windows. This allows for better control of the
OpenGL resources (textures, display lists, shaders, etc). FXGLCanvas windows may be created and
destroyed without losing OpenGL objects.
- Fixed bug in fxprintf.cpp with "%n" format.
- Fixed core dump in fxtifio.cpp which was due to crappy TIFF library not handling
errorhandling function-pointers nicely. We now get no messages, but at least some types of
off-spec TIFF images no longer seem to cause core dumps.
- Fixed GCC type-punning warnings in FXThread.cpp.
- Fixed some warnings in FXApp.cpp.
- Simplified some code in FXDCWindow.cpp, and FXVisual.
- Added flag to force visual ID in FXVisual; this allows you to create a 2D drawable
with a compatible visual to a 3D drawable.
- Added default handler for SEL_SPACEBALLMOTION, SEL_SPACEBALLBUTTONPRESS, and
SEL_SPACEBALLBUTTONRELEASE in FXWindow.
- Added Space ball support for rotation, panning, and zooming in FXGLViewer.
- Spinlock support on MS-Windows added.
November 16 - FOX DEVELOPMENT 1.7.13
|
- Added FXRangeSlider widget.
- Updated FXAtomic with new API's, and made it use new GCC 4.1 compiler built-ins where available; it uses
inline assembler code if not available.
- Added API to change threshold level in FXIcon; the threshold level is used to determine etched-in looking
icon when button with icon on it is disabled.
- Added FXSpinLock spin locking primitive for multi-processing; Note: currently not available on MS-Windows yet;
coming soon, however!
- Missing FXAPI declaration added to FXMessageChannel.
- Updated documentation for FXDLL.
- Fixed esoteric problem with GUI update refresh cycle; always skipped last widget. Not a very
serious problem since refresh cycle always never starts from the same widget.
- Problem with FXDockBar stickyness fixed. Needed to block docking at unallowed dock sides
even when done via menu.
- Every once in a while, got X-Window error from inside FXDockHandler. This was due to temporary
dummy window which only exists during dragging. Made sure this is now blocked off.
November 16 - FOX STABLE 1.6.31
|
- Bug fix to strtoull() for systems which have no native strtoull().
- Missing tr() added in FXMDIClient.
- Fix for FXRuby in FXMDIClient (don't test for message==0 in notify message).
October 6 - FOX DEVELOPMENT 1.7.12
|
- Added additional API's to FXMat3d, FXMat3f, FXMat4d, FXMat4f.
- FXSlider, FXRealSlider didn't update tickmarks (if shown) when slider range was changed.
- Small typo found in fxfilematch() was found which affected character-range matching.
- Change in the order FXSphered, FXSpheref is expanded when bounding box is added, resulting,
in most cases, in a smaller bounding sphere.
- API added to FXTreeListBox, FXListBox, to set shrink-wrap mode for popup pane; this allows
minimum size depending on actual number of items in list.
- Logic of sizing items in FXIconList changed slightly.
October 6 - FOX STABLE 1.6.30
|
- Fixed some issues with flush() in FXBZFileStream and FXGZFileStream.
- FXDial didn't issue SEL_COMMAND when driven from keyboard.
- Small typo found in fxfilematch() was found which affected character-range matching.
- Problem in FX7Segment fixed.
August 9 - FOX STABLE 1.6.29
|
- Added ".jpeg" as additional extension for JPEG images in FXIconSource.
- Fix in FXSplashWindow not killing timer if it gets destroyed before timer goes off.
- FX7Segment had bug in onCmdGetStringValue() implementation (it was not returning the
string).
- Cruft removed from FXMat3f.
- Bold style fixed in FXText.
- Read outside buffer problem (flagged in valgrind occasionally) fixed in FXText.
- Bugs in FXListBox and FXTreeListBox fixed.
July 31 - FOX DEVELOPMENT 1.7.11
|
- The FOX Library License has been changed to the new Lesser GPL Version 3!
In addition, the FOX Library License Addendum has also been changed; a
new clause has been added to the License Addendum.
The new clause in the License Addendum stipulates that the License Addendum does not propagate to derivate
works:- when you make a derivate work based on the FOX Library, this work may no longer carry over the FOX
License Addendum. In practice, this means that derivate works will no longer support the relinking exception,
but must fall back to the standard Lesser GPL license.
Note that this does not fundamentally change use of the FOX Library in commercial applications; rather, it
expands a little bit on the intent of the original License Addendum, which was to ensure that modified
source code is released under the Lesser GPL.
As you all are probably aware, several not-so-ethical companies [which, for now, shall remain nameless!] have been
trying to perform an end-run around the old GNU GPL License. This necessitated an extensive revision of GNU GPL
License. After a long period of extensive review, this revision was recently completed.
I felt that the FOX Library also deserved the additional protections that this new license offers and therefore decided to
exercise the "..or later version" provision of the GPL license to move all the source code over to
this.
- Major improvements to FXChart widget, and introduced FX2DChart and FX2DPlot widgets.
- Extra constructors and set() API's added to FXRangef, FXRanged. Made radius have
default parameter value in FXSphere to match the idea in FXRange.
- Fixed FXDockSite moveToolBar() problem when FXDockSite is docked at bottom side.
- Fixed FXComboBox, FXListBox, FXTreeListBox potentially reading freed memory. This
happens at least with FXComboBox when used inside FXComboTableItem.
- FXIconSource now recognizes ".jpeg" extension.
- Added "special stacking orders" capability for FXTopWindow. STACK_TOP makes the window always
stay on top of all other windows. STACK_BOTTOM makes it stay below others. STACK_NORMAL is the
default behaviour. The STACK_TOP is the most interesting mode; it can be used for attention-dialogs
like error boxes, or splash-windows.
- FXSettings has had a major overhaul. Arbitrary size limits for the strings have been removed.
- FXMat3d, FXMat3f, FXMat4d, FXMat4f have equality operators now.
- Added setOrtho(), setFrustum() to FXMat4d and FXMat4f. The new API's replace ortho() and frustum().
The new way is much faster because no matrix multiply is done anymore. Also new API's setInverseOrtho()
and setInverseFrustum() have bee added. In addition, getOrtho(), getFrustum() extract the view-volume
dimensions from the projection matrix, which may come in handy.
- FXMat3f, FXMat3d, FXMat4d, FXMat4f function eye() has been replaced with identity(). New API isIdentity()
has been added also.
- New API getItem() added to FXOptionMenu.
June 4 - FOX DEVELOPMENT 1.7.10
|
- fxIsFinite(), fxIsInf(), fxIsNan() API's added.
- FXGradientBar visual aspects have more control now.
- FXShutter didn't issue message when shutter-item was pressed.
- The fxgetticks() API is now official. It returns the CPU's clocktick-
counter, where supported. Otherwise it returns time in nanoseconds.
- Fixed rare corner-case with active-line coloring in FXText.
- When FXRegistry is in ascii mode on Windows, system registry should be
searched in \WINDOWS\foxrc, and not in \WINDOWS\foxrc\foxrc.
- Fixed regression in glUseFXFont() when using Xft instead of XLFD.
- Small subtlety fixed with list widgets and drag-n-drop initiation.
- Fixed bug in FXMemMap.
- Fixed bug in FXVisual which caused drawing to FXBitmap to fail.
- Fixed bug FXWindow setDNDData() which affected MS-Windows clipboard
operations.
- FXbool can not be relied upon to be 1-byte size. Removed the FXASSERT inside
FXApp to that effect. Serialization should be OK since its cast to FXuchar.
- Added ability to set file-associations table in FXFileDialog, FXDirDialog
so the associations may be shared between multiple widgets.
- Fixed issue with bold-face text not drawing correctly in FXText if
gap happens to be in the text-fragment being drawn.
- Implemented __vsscanf() and __sscanf(). Since this native FOX implementation,
and its now used on all platforms, there will be no more issues with 32-bit v.s.
64-bit architectures, or Windows v.s. Solaris v.s. GLIBC based systems.
The new routine will always behave the same and support the same conversions.
- Decoration options interpreted under Windows-XP and UNIX as follows: DECOR_SHRINKABLE
means window may be smaller, but not larger, than default size; DECOR_STRETCHABLE means
window may be larger, but not smaller, than default size; and finally, DECOR_RESIZE
means window may be both smaller or larger than default size.
- Implemented __snprintf() and __vsnprintf(). This takes care of all variability
in these API's across platforms, and also 64- v.s. 32-bit issues.
- Fixed issue in multi-head API access under older Windows operating systems
than Windows-XP.
- FXMDIChild resize animation speed changed a little bit.
- Added some exciting new applications to the list of projects.
June 4 - FOX STABLE 1.6.27
|
- Decoration options interpreted under Windows-XP and UNIX as follows: DECOR_SHRINKABLE
means window may be smaller, but not larger, than default size; DECOR_STRETCHABLE means
window may be larger, but not smaller, than default size; and finally, DECOR_RESIZE
means window may be both smaller or larger than default size.
- Fixed regression in glUseFXFont() when using Xft instead of XLFD.
- Fixed bug in FXVisual which caused drawing to FXBitmap to fail.
- Fixed bug FXWindow setDNDData() which affected MS-Windows clipboard
operations.
- Fixed issue with bold-face text not drawing correctly in FXText if
gap happens to be in the text-fragment being drawn.
- Fixed issue in multi-head API access under older Windows operating systems
than Windows-XP.
- FXMDIChild resize animation speed changed a little bit.
- Some MacOS-X porting issues fixed.
March 28 - FOX DEVELOPMENT 1.7.9
|
- Renamed FXString::HEX array to FXString::value2Digit; added FXString::digit2Value
array. Removed FXString::hex (never used anywhere).
- Minor fix in Adie.stx file for sprintf-style format patterns.
- Fixed interpretation of DECOR_SHRINKABLE and DECOR_STRETCHABLE; when neither is
specified, programmatically specified size is kept. If DECOR_STRETCHABLE is specified, size is
constrained to be at least the default size. If DECOR_SHRINKABLE is specified, size
is constrained to be at most the default size; finally, if DECOR_RESIZE (i.e. both
DECOR_SHRINKABLE and DECOR_STRETCHABLE are set), then size is not constrained and
window can be manipulated arbitrarily.
- Renamed FXURL::hostname() to FXSystem::getHostName(), which is more appropriate.
- More major updates in FXText.
- Lots of new API's in FXTextField:
- API's added to incrementally modify text, rather than just replace all of it.
- Cursor and anchor properly updated when text is changed.
- API added to obtain only selected text.
- Overstrike mode now works much better for UTF-8.
- Cursor changes shape when in overstrike mode.
- All manipulations done using a single message now.
- API's added to manipulate clipboard and primary selection.
- When setting new text, no longer immediately scrolls to make end of text
visible (this caused ugliness inside FXComboBox when FXComboBox is too small
to show all text).
- Changed behaviour of FXText: pasting from clipboard or primary selection now
observe properly the overstrike mode-flag. When multi-line text is pasted,
only text from cursor position till end of line is overstruck; the rest is
just inserted.
- Added API to FXText to obtain selected text.
- Added some API's to FXGLShape, and other FXGLObject's.
- Hidden Windows-only GetClass() API now returns wide characters if FOX
is compiled with -DUNICODE. Thus, window-titles now show properly in unicode.
- Secret convenience API's added: fxopen(), fxreopen(). These do what you
expect, except they encode the filename to wide-characters on Windows.
Note that these API's are not official and will be removed at some point in
the future.
- Fixed _NET_WM_PING protocol issue (change in protocol).
March 28 - FOX STABLE 1.6.25
|
- Fixed compile problem with FXThread for build on MacOS-X.
- Fixed _NET_WM_PING protocol issue (change in protocol).
March 13 - FOX DEVELOPMENT 1.7.8
|
- Updates to Adie editor; starting it with a non-existing file will
now set the text window's filename to the new file. Also, changed
a few accelerators to more useful bindings. Tab-stops may be changed
more quickly from a pulldown menu. Rearranged Preferences Dialog
since most-often changed settings should be on the first page.
- Major improvements in FXText widget; many new API's added:
- copySelection() copies the selection to the clipboard.
- cutSelection() cuts the selection to the clipboard.
- copySelection() copies the selection to the clipboard.
- deleteSelection() deletes the selection.
- pasteSelection() pastes the primary selection.
- pasteClipboard() inserts the clipboard into the text.
- replaceSelection() replaces the selection.
- Cursor movement has been improved:- no longer hides while moving.
All actions are now mapped to an individual message handler.
- Cursor shape now changes when in overstrike mode.
- New FXAutoThreadStorageKey automatically generates and disposes of
thread-local storage key. It behaves as a "pseudo-constant" in the sense
that is generated at load-time simply by defining a global variable of
this type.
- Updates to FXThread to use FXAutoThreadStorageKey for its own handle.
- Code to determine monitor (screen) on Windows no longer requires header
files to be present; we provide our own prototypes. Now it works even with
older compilers. Detection of API's is done purely at runtime.
- FXReplaceDialog and FXSearchDialog support wheel to scroll back through
search history.
- FXScrollArea now initiates auto-scroll behaviour when cursor is near
visible area [not the whole window!]. Now FXText to starts scrolling when
cursor is near the numbers bar, instead of near the edge of the window.
- Fixed leaked resource handles in FXDCWindow, FXIcon; was flagged by GDI handle
leak-checkers.
- Fixed bug in FXAccelTable::parseAccel(); was not handling "#XXX" properly.
- Added run-time test for multi-head display configuration; it no longer
depends on having up-to-date header files.
- Fixed FXPath simplify() routine for lots of corner-cases.
- FXComboBox's setText() now has notify argument. When an item
in the drop-down list, the text is selected only if the combobox is a
non-static combobox.
- Fixed minor details in NET_WM_PING generated in FXApp; apparently,
some minor details in the NET_WM_PING had changed.
- Now use unicode CreateWindowEx if -DUNICODE was passed. Window titles
show up in unicode properly.
March 8 - FOX STABLE 1.6.24
|
- Fixed leaked resource handles in FXDCWindow, FXIcon; was flagged by GDI handle
leak-checkers.
- Fixed bug in FXAccelTable::parseAccel(); was not handling "#XXX" properly.
- Added run-time test for multi-head display configuration; it no longer
depends on having up-to-date header files.
February 22 - FOX STABLE 1.6.23
|
- Added test in WIN32 version of FXGLVisual to validate PIXELFORMAT prior to
obtaining its attributes. Apparently some PIXELFORMAT's listed by DescribePixelFormat()
do not actually describe a valid configuration on some graphics cards.
- Fixed problem with X11 XLFD fonts. If XLFD font name specified directly,
no font was matched.
- Fixed FXSemaphore compilation issues on MacOSX. Also pass initial semphore value
to MacOSX API.
- Fixed spurious call to removeItem() in extractItem() inside FXTreeListBox.
January 30 - FOX STABLE 1.6.21
|
- Always define vfscanf(), vscanf(), and vsscanf() when on Windows.
- Remove FXAPI in FXObjectListOf template.
December 7 - FOX DEVELOPMENT 1.7.7
|
- Forgot to mention: there has been an important change in the way MDI windows work.
When closing an MDI Child, the MDI Child is now made inactive first; the target of the
MDI Client gets a notification to that effect. Then a SEL_CLOSE message is delivered
to the MDI Child's target. If the close is approved, the MDI Child will then be deleted.
But if the close is not approved (SEL_CLOSE handler returns 1), then the MDI Child will
be made the active MDI Child again (and the MDI Client's target will get a message
to that effect). The rationale behind this change is that the MDI Child will be
not the active window at the time of its demise, and thus updating the GUI now only
needs to happen when an MDI Child is activated or deactivated (i.e. when the
target of the MDI Child receives SEL_SELECTED and SEL_DESELECTED).
- FXDataTarget's support for FXlong and FXulong has been extended; when associated
with FXlong, it now sends/receives ID_SETLONGVALUE and ID_GETLONGVALUE to the associated
control. Most valuator controls have now been updated to respond to these messages.
- FXText and FXTextField now have auto-hiding cursor. As soon as the user begins
typing, the mouse cursor will disappear to prevent obscuring the text. The mouse-cursor
reappears when the mouse is moved.
- Added new API's, showCursor() and cursorShown() to FXWindow. These control mouse cursor
visibility.
- Changes and additions to FXDLL. Added API to obtain DLL containing a function
pointer. Also added API to obtain name of loaded DLL. And added API to get symbol
name given function pointer (UNIX only). Renamed a few API's for consistency.
- Implemented Extended Window Manager methods to raise() or lower() toplevel
windows. Now these work properly under EWMH-enabled Window Managers.
- New time-configuration varable added in FXApp (autoHideDelay). This controls
I-beam cursor hiding of text controls.
- Fixed bug in FXLabel, FXMenuCaption, FXToggleButton's setText() API. Problem was
changing accelerator or accelerator-location in a string, without changing the
string itself. Bug was reported by Lothar.
December 5 - FOX DEVELOPMENT 1.7.6 (Sinterklaas-Editie!)
|
- FXThreadPool::execute() now returns FXWorker instead of a flag; this is convenient
as you now have a handle to the thread responsible for executing your FXRunnable.
- Fixed a few buglets in FXThreadPool, particularly having to do with wierd
cases like stopping the FXThreadPool while trying to schedule new jobs, etc.
- FXCondition::wait() now returns a flag also; return value is true if the function returns
due to the condition being signalled, and false if interrupted or if there were
errors. The overloaded version also returns false if the wait-time expired.
- Added some missing includes in fx.h.
- Fixed missing FXReactor FXIMPLEMENT issue.
November 30 - FOX DEVELOPMENT 1.7.5
|
- Added new FXThreadPool class. FXThreadPool allows parallel execution of jobs (FXRunnable) without
the overhead of creating a thread for each job; instead, a pool of worker-threads are used to execute
jobs, and thus the overhead is minimal. To ensure that the workers do not fall behind with the
incoming job-stream, new jobs are only accepted when worker-threads are available.
The FXThreadPool can adapt to changing workloads by spawning new workers during peak-loads (up to
a set maximum), and removing workers from the pool when there are no jobs (down to a certain minimum).
Worker threads may be started right away (ensuring that all worker-threads are ready for action),
or on an as-needed basis.
- Added new FXReactor class. An FXReactor implements reactor pattern. FXReactor is
thread-safe and will allow multi-threaded operation like the leader-follower pattern
FXReactor is a key component for multi-thread platform-independent network-server development,
and will also serve as the base class for the new event-dispatch structure being put into place.
- Changed FXApp to use the new pselect() system call. It provides nano-second timeouts
and will also make non-immediate signal processing in FOX safe from race-conditions (or at least
it will when your c-library and linux-kernel support the new pselect() system call ;-)).
- Added API's to FXThread for thread-local storage. This comes in addition to the thread-local
storage already implicitly present for the self() API.
- Added API to FXThread to determine number of processors in the system; this may be used when
creating the FXThreadPool to start the proper number of worker threads based on actual hardware
in the system.
- FXThread now derives from FXRunnable, which encompasses an overloadable run function and
some data. FXRunnable is also used in FXThreadPool.
- Made FXThread safe for suicide of FXThread:- in case of self-destruction, FXThread properly detaches
the thread and cleans up TLS to FXThread binding. When FXThread is destroyed by another thread cancels
the thread. Normal termination properly resets the running flag but leaves tid to allow a join() operation.
- Added new FXMessageChannel class. This replaces the old FXGUISignal. FXMessageChannel delivers a
way to perform asynchronous message calls from a worker thread to the main GUI thread. It is implemented
using an internally created pipe, which is connected to the GUI thread. A message written by a worker
thread can thus be delivered to the GUI thread, and dispatched in the GUI thread's context.
To obtain the behaviour of the old FXGUISignal, note that this is now simply a special case of
an asynchronous call via FXMessageChannel with no data.
- Fixed bug in vsscanf; New versions of Visual Studio now have one of the two missing functions.
- Added special blank cursor stock cursor. This can be used when you desire to see no cursor
at all.
- Speeded up signal handling stuff: only check non-immediate signals if one was actually raised.
- Fixed FXSpinner and FXRealSpinner; they were updating while being changed by the user through the text field.
- Fixed ugly look of FXHeader when no items are present (as reported for its use in FXTable).
- Improvements in FXText word-selection mode.
November 17 - FOX STABLE 1.6.20
|
- Rolled back explicit template instantiation stuff: not supported everywhere.
November 9 - FOX STABLE 1.6.19
|
- Fix bug in FXMutex::locked() implementation.
- Suppress 4244 warning (possible loss of data) on VC++ compiler.
November 7 - FOX STABLE 1.6.18
|
- Bug fix in FXApp drag and drop.
- Wrong error message in argument check in FXTable API.
- Fixed minor issues in FXPicker: now issues message on mouse button release.
- Fixed problems in FXFile, FXSocket, FXPipe occurring on 64-bit Windows.
September 30 - FOX STABLE 1.6.16
|
- Fixed issue with FXMDIChild and FXTopWindow close() routine; this mostly affects FXRuby.
- Fixed drag and drop issue with dropFinished() on Windows.
- Fixed FXTextField drawCursor() array overrun and text measurement bugs.
August 29 - FOX DEVELOPMENT 1.7.3
|
- Major upgrade to reswrap. New in reswrap is long option names. Also added are a number
of new options, designed for more easy incorporation of reswrap into custom software build rules.
First, options and filenames can now be mixed, allowing both icons.h and icons.cpp to be generated
with one single reswrap command. Also, static and external linkage decorations can be generated
for each symbol. Symbol names may be changed using prefixes, postfixes, or incorporated in
namespaces. Size declarations may be added to header files to provide compiler with sizes
of the embedded resources. For more, see updated reswrap documentation.
One important warning: some options have been renamed for consistency!
- Redesign of inner workings of FXScrollArea; getViewportWidth() and getViewportHeight() have been
removed. New API's getVisibleX(), getVisibleY(), getVisibleWidth() and getVisibleHeight() are added.
Also added internal (protected) member function placeScrollBars() which is intended to be called
by subclasses of FXScrollArea.
- Minor tweaks inside FXScrollBar.
- Added new FXConsole widget (under construction).
- Added some API's to FXArray.
- Fixed some FXFileList drag and drop issues.
- Cut down code size by means of explicit template instantiation.
- FXQuat{d,f} API's setAxisAngle(), and getAxisAngle() have been made safer.
- FXString inc() etc. made safer; won't increment too far.
- Fixed FXTextField drawCursor() array overrun and text measurement bugs.
August 14 - FOX STABLE 1.6.14
|
- Rolled back Niall's BOM-marker patch to FXDCWindow [not working].
- FXSlider, FXRealSlider arrow-movement was not generating callback to target.
- Include <asm/socket.h> for CYGWIN for X11 Windows build.
- Regenerate fxunicode.cpp with surrounding namespace for Digital Mars C++ compile.
- Surround fxascii with namespace for Digital Mars C++. Plus other issues brought to
light on Digital Mars C++.
August 8 - FOX STABLE 1.6.13
|
- Fixed Digital Mars C++ makefile.
- Namespace qualification missing from macros in FXObject.h.
- End of stream bugs in FXGZFileStream and FXBZFileStream.
- BOM marker at end of text appears to fix WIN32 drawText() and drawImageText() in FXDCWindow.
- Removed some more FXTRACE statements; fixed trace-levels on some other FXTRACE statements; this only
affects debug-mode builds.
August 1 - FOX STABLE 1.6.12
|
- Fix DLL issue [again].
- Some FXTRACE statements were at too low a level.
- Updated Visual C++ studio projects.
- FXToolTip place() fixed.
August 1 - FOX DEVELOPMENT 1.7.2
|
- Fix assorted typo's.
- Change PI, DTOR, RTOD, EULER to const declarations inside FX namespace, preventing conflicts.
- Fix FXChart Makefile.
July 30 - FOX DEVELOPMENT 1.7.1
|
- FXCalendar and FXCalendarView widgets added. The are written by Sander Jansen.
- Added positive (?<= expr) and negative (?<! expr) look-behind patterns to FXRex; look-behind
patterns are finite-length patterns that need to be matched (or not matched), without
eating any text.
- Fixed minor bug with case-insensitive back refecences in FXRex.
- Different method implemented for back references; back references now also work even if
npar is 1 in FXRex::match().
- Added granularity option to FXRealSlider; if set greater than zero, values are
rounded to multiples of granularity as slider is moved; this will cause slider to report nice
round numbers.
- getNextEvent() can now be told to wait only a finite amount of time for incoming events.
- The addTimeout() and remainingTimeout() API's in FXApp now work in terms of nanoseconds.
- New addDeadline() API added to FXApp which sets absolute clock value when a timer will expire;
thus this new API is not subject to cumulative errors. The timeout is set in nanoseconds
since Jan 1st, 1970.
- Datatarget now supports FXbool type.
- Added ID_SETLONGVALUE and ID_GETLONGVALUE support to FXTextField.
- FXStream now supports FXbool type.
- FXbool type now defines as bool.
- FXToolBarShell now interprets its child's LAYOUT_FIX_WIDTH and LAYOUT_FIX_HEIGHT hints.
- Change addInput() API; it now takes a void* pointer which is then passed along into
the SEL_IO_READ (etc.) message handlers. You can get the old behaviour by passing in the file-descriptor
for the void* pointer.
- New FXGLConfig class decribes OpenGL framebuffer configuration.
- New FXGLContext uses FXGLConfig to match OpenGL hardware capabilities.
- Lasso selection in FXIconList no longer drawn as line, but solid rectangle. Looks MUCH nicer!.
- New DND type added for files; this is now used internally between FOX applications
in preference to "text/uri-list", since its much easier to decode and encode.
- FXSettings and FXRegistry now support 64-bit integer values; this necessitated some
small API changes: readUnsignedEntry() is now called readUIntEntry(), writeUnsignedEntry()
is now writeUIntEntry(), and the new API's are called readLongEntry(), readULongEntry() and
writeLongEntry(), writeULongEntry() respectively.
- Also new in FXSettings is support for the type FXbool, which is read/written as a more
humanly readable "true" and "false" instead of 1 and 0.
- New class FXDLL and FXAUTODLL added to manage dynamic library (plugin) loading. This
replaces the old function-based method. Also new, FXDLL has API to obtain FXDLL given
a pointer; basically this allows you to determine the FXDLL containing a specific piece of
code.
- FXToolBar's setDockingSide() now preserves flags. If both LAYOUT_FILL_Y and LAYOUT_FILL_X are
set the will remain set when orientation flips.
- Added FXReadWriteLock class. This provides shared-lock support in a platform-independent
way.
- Added FXAtomic class. It provides multi-processor safe incrementation/decrementation
of a lock-variable.
- FXToolBarShell can resize its child if the LAYOUT_FIX_WIDTH and LAYOUT_FIX_HEIGHT are
specified on the child [in other words, if its set to keep its given size, this size
may be given through interaction with the user].
- Added missing set() API's to FXExtentf and FXExtentd.
- Cell being edited in FXTable now commits its value if clicking outside of table.
- Fixed subltety in FXPath::relative().
- Added new API FXPath::isInside().
- Speeded up FXString's enquote(), dequote() API's.
- Fixed drawing bug in FXTextField containing UTF8, when not all text is visible.
- Fixed problem of parameters shadowing member functions in FXDate.
- Changes in FXThread to eliminate race conditions.
- New classes FXComplexf and FXComplexd added.
- Fixed reset of scheduling policy in FXThread's priority() API.
- Added API to FXThread to get/set scheduling policy, on systems where scheduling
policies are implemented.
- FXThread priority and policy now defined in terms of a range of enums for increased
portability across platforms.
- Fixed bug in FXToolTip's place() routine on Windows.
- Fixed bug in FXDir on Windows where non-unicode version didn't compile.
July 25 - FOX STABLE 1.6.10
|
- Updated VC++ project files.
- Updated Adie.stx; new pattern for #ifdef 0 ... #endif method of commenting out code.
- FXExpression memory leak fix.
- Updated Visual C++ studio project: FXRulerView source file was omitted.
- Missing FXAPI declaration added to FXExtentd and FXExtentf.
July 17 - FOX STABLE 1.6.8
|
- Fixed drawing bug in FXTextField containing UTF8, when not all text is visible.
- Fixed problem of parameters shadowing member functions in FXDate.
- Missing FXAPI declaration added in FXSemaphore.
- Add fflush() to fxassert(), fxmessage(), etc.
- FXToolBar preserves flags if LAYOUT_FILL_X AND LAYOUT_FILL_Y both set on a bar.
- Bug in strtoll() fixed [on machines where no native strtoll() is available].
- A number of subtleties have been fixed in FXPath pathname manipulations.
- Click outside occupied table area now commits input in cell being edited.
- Small addition in Adie.stx for numerical size suffixes (c/c++ coloring).
June 15 - FOX STABLE 1.6.6
|
- Added fox.pc for pkgconfig support benefiting FOX package builders and developers.
- Added date-tooltip to Adie clock.
- Removed CXXFLAGS clear in configure.in so it can be passed.
- Removed test on zero-message for callback due to its use in FXRuby.
- Removed cruft from FXDragCorner.
- Fixed little bug in FXTable setItemText().
- Fixed csv clipboard issue in FXTable.
- Fixed clipboard issue in FXText.
- Added workaround for byte order in FXCursor render for Apple MacOSX X Server bug.
- Fixed buglet in own strtoll which is only used on machines which don't have native
one.
- Fixed Python syntax pattern for Adie.stx.
June 15 - FOX STABLE 1.4.34
|
- Fixed buglet in own strtoll which is only used on machines which don't have native
one.
April 17 - FOX STABLE 1.6.4
|
- Fixed two bugs in FXTable setItemText() and setItemIcon().
- Double-free in Xft mode fixed:- freetype now frees its memory!
- Patch for fxkeyboard.cpp for other compilers.
- Callbacks from FXListBox SEL_CHANGED message weren't passing item-index.
- Bounding box in fxpsio.cpp was wrong.
- VirtualAlloc() instead of FXMALLOC() in FXImage circumvents apparent driver
bugs on Windows-Xp.
April 5 - FOX STABLE 1.6.3
|
- Fixed issue with multi-head on Windows-XP.
- Fixed issue with FXSphered/FXSpheref.
April 3 - FOX STABLE 1.6.2
|
- Fixed fxkeyboard.cpp build problem on Windows.
- Fixed sporadic core-dump due to SetDIBits() reacting poorly to malloc()-allocated
memory; now using VirtualAlloc() instead of malloc() which gives whole pages.
April 1 - FOX STABLE 1.6.1
|
- Fixed fxgetticks() issue for AIX/PowerPC.
- Fixed round() API in FXExpression for other platforms.
- Incorporated Daniel Gehriger's keyboard path for Windows 9x/ME.
- Fixed FXThread::time() issue for non-POSIX199309 UNIX platforms.
March 21 - FOX STABLE 1.6.0
|
- New FXExpression class to evaluate numerical expressions. Its fast as it compiles to
easy to interpret byte-code. It also allows expressions with variable arguments, which
can be named arbitrarily.
- Fixed but in fxtoDos and fxfromDOS; the end-of-string is no longer accounted for in
the length [but it is still added, for convenience].
- Changed sleep() API of FXThread; it now has a single argument, the number of nanoseconds
to sleep.
- Added wakeat() API to FXThread. The wakeat() API sleeps till the given absolute time is
reached. The time is expressed as a 64-bit long counting nanoseconds since Jan. 1, 1970.
- Added time() API to FXThread. It returns nanoseconds since Jan. 1, 1970.
- Internal timer calculations in FXApp now use FXThread::time() and so on.
- FXCondition's wait() API now also waits a number of nanoseconds.
- Fixed tooltip on FX7Segment widget.
- Fixed document-comment in FXString.
- Added update handlers for FXTable row/column selection.
- Bug in fxrgbio fixed.
- Warning in FXWindow fixed.
- Added sample program for expression class.
- fxsleep() is now deprecated. Please stop using it!
March 21 - FOX STABLE 1.4.32
|
- Back-ported fixes for GCC 4.1 C++ Language Changes [Friend Injection].
February 10 - FOX STABLE 1.6.0 (Release Candidate 4)
|
- Updated FXRealSpinner. New API setGranularity() allows the values to stay at "nice round numbers".
- Logarithmic mode of FXRealSpinner also updated.
- Updated FX4Splitter. In case only one panel is collapsed, panel besides it will stretch to fit.
- Also fixed layout issue with FX4Splitter which inadvertently placed barsize worth of pixels on the
side even if all but one panel was collapsed.
- Update FX4Spliiter's default size computation based on which panels are collapsed; this has gotten
a bit complex now.
February 6 - FOX STABLE 1.6.0 (Release Candidate 3)
|
- Reconciled API inconsistencies between FXObjectList and FXArray.
- Added mimeType constant to FX***Image and FX***Icon classes for drag and drop
and clipboard support.
- Added auto-repeat snapshot capability to shutterbug.
- Added auto-renumbering option for row and column headers in FXTable.
- Implemented no-navigation mode in FXFileDialog.
- Extra option for compression quality added to FXJPGImage and FXJPGIcon.
- Added missing FXAPI to codec declarations.
- Block generation of some callback messages if message is 0.
- Improved fxbmpio implementation by directly using FXStream's primitive types.
- Fixed issue with FXStat::touched().
- Added bunch of missing API's to FXTable to control row and column header appearance.
- Added ComboBox table item to enter a choice among a number of strings.
- Added FXExpression which contains a function to evaluate expression.
- Added Control-click mode to FXSpinner and FXRealSpinner.
- Adie shows number of rows in status bar instead of byte count.
- Wheel support in FXOptionMenu.
- The setValue() API in FXRuler now has value relative to document position.
- The setArrowPosY() and setArrowPosY() APIs in FXRulerView also relative to document position.
December 19 - FOX STABLE 1.6.0 (Release Candidate 2)
|
- Added FXRulerView widget. The ruler view coordinates the scroll bars and rulers to
automatically adjust to the stated document dimensions and margin settings for a document-
oriented workview. It is intended as a base class for an applications document drawing
framework.
- Added FILELIST_NO_PARENT option to FXFileList to suppress '.' and '..' display in
directory lists.
- Added extra field in FILETYPES binding for "change directory" and "run in terminal" flags.
- Optimized FXText continuous wrap mode layout update when using fixed-pitch fonts; this
frequent scenario is quite a bit faster now; also greatly simplified layout handling
in FXText.
- Fixed layout issues with LAYOUT_FIX_X and LAYOUT_FIX_Y in FXPacker, FXTopWindow,
FXGroupBox, FXHorizontalFrame, and FXVerticalFrame widgets.
- Updated FXArray implementation; many API's added, a few dropped to so as to require no
insert- or extract operators, or equality operators, on the contained items.
- Updated FXVec{2,3,4}{d,f} classes; changed many friend functions to members, added explicit
declarations for remaining friend functions in preparation for GCC 4.1 C++-language-change.
- Small changes to FXQuat{d,f}. Some friend functions have become member functions.
- Updated xinc.h to accomodate broken prototypes on older unix machines with respect to
input method support.
- Also simplified FXText layout logic.
- Fixed tons of warnings on SGI, HPUX, Solaris, OSF1, and Windows builds.
- Split FXComposeContext creation from construction. This is necessary as input
method editor server may come and go.
- Updated FXHash class with a few additional API's to make it easier to look over
all contents in the table.
- Added clearElms() API to FXElement.h.
- Fixed FXVisual getNumGreen() and getNumBlue() access functions.
- Expunged a number of FXbool in favor of bool.
- Speeded up fxloadBMP(), fxsaveBMP(), fxloadICO() and fxsaveICO() functions through use
of byte-swapping capability of FXStream.
- Fixed typo in FXDebugTarget.
- Fixed problem in FXFile::removeFiles().
- Removed tons of warnings on Solaris builds.
- Turned off XIM by default until it works across the board.
November 29 - FOX STABLE 1.4.26
|
- Fixed SUN Solaris compile issue with threads.
- Missing fxcheckTIF(), fxcheckPNG(), fxcheckJPG() declarations if TIF, PNG, and JPEG support
is stubbed out.
November 14 - FOX STABLE 1.4.24
|
- Fixed small issue in FXVec4{d,f} distance() routine.
November 9 - FOX STABLE 1.4.23
|
- Fixed compile issue with new GetOwnModuleHandle() function.
- Delete thread local storage key upon global destructor in FXThread.
Older News
|
Older news...
Copyright © 1997-2022 Jeroen van der Zijp
|