Changes ======== HOWTO: ...read this Change History: As you may know, the program SView5 is both - a standalone tool and a demo of the capabilities of the SView5 SDK. The SDK is basically a library that could be used as part of any other kind of tool. It is written in C++ and available for licensing by 3rd parties. Improvements of the SDK (often) automatically result in improvements of the tools which are using it. More important, SDK changes are open for 3rd parties. This is why this Change History lists them separately. The Common section refers to changes which either do affect both parts or the joint distribution. NOTE: It seems, once a new version is out, it takes only few days until someone publishes updated "keygens" or "serialz" for SView5. However: they keyfile / registration code does not enable any special extra functionality, it just legitimates usage of the tool. Plus, so far registrations do not even remotely cover my basic costs. So, cracking is really pointless. If you're not willing to pay for an uncrippled software - which you consider worth using, obviously - you should at least be wise enough not to prevent other people to do so. HELP NEEDED: In order to improve RAW file format support, further sample files are needed e.g. of type NEF, ARW, ORF, SRF, RAF, etc. - the same applies to other rare formats (e.g. IFF-DEEP or .DIP) v3.84 (20.01.13) ---------------- SView5: - now uses separate URL alias (from standard PAD file) for update check SDK: - JPEG SVObject: - added support for writing new lossless JFIF variant as introduced with libjpeg v9 - updated libpng to v1.5.14 (affects PNG) - updated libjpeg to v8c (affects JPEG, TIFF) v3.83 (24.12.12) ---------------- SView5: - minor UI changes - minor textual fixes in program and documentation - added swedish translation (-> Åke Engelbrektson) SDK: - updated libpng to v1.5.13 (affects PNG) v3.82 (18.11.12) ---------------- Common: - minor fixes to v3.81, v3.80 history - did some clarification/changes to reflect that SView5 supports LJPG, but not JPEG-LS SView5: - new "scan" feature in "Import Raw" dialog previously was not really able to continue a scan (would have always found the same position) and furthermore the start position was not reset after a file change; also did some minor usability tweaking and some fixes to scan code SDK: - CRW SVObject: - supports one more embedded JPEG variant v3.81 (16.11.12) ---------------- SView5: - "Import Raw" dialog now provides "scan for data" feature, which runs over a file and scans (currently) for JPEG and LJPG signatures and then adjusts the raw import mode and offset accordingly; when ran multiple times, different embedded JPEG/LJPG will be found; allows to discover and extract contained JPEG data from within not yet directly supported RAW formats (or from different position therein); may also come in handy when attempting to do "broken disk repair" (i.e. lost file retrieval) - area selection information now also textually shown at two places in main window v3.80 (12.11.12) ---------------- Common: - installer now creates various additional file type associations - added/updated some .cpinfo config definition files - minor fixes to v3.79 history SView5: - now remembers load path and file (for later defaults in open file dialog) also in case it was initially started by double-click or drag & drop (before, one was redirected to the default drawer) - if loading of a file with extension ".raw" fails via algorithmic file type recognition, the manual "Import Raw" dialog now is opened automatically - "Import Raw" dialog now supports also fetching JPEG and LJPG "raw" data from given start offset of RAW file; this includes meta data, if any present - "Import Raw" dialog now pnly shows filename instead of full pathname - SDK interface code now uses new global meta data handling functions SDK: - added general metadata handling functions (alloc, free, copy) for being re-used by different modules - TIFF SVObject: - now treats .SR2 synonymously to .ARW - now treats .RAW synonymously to .RW2/RWL (still not fully or not all of them supported) - now treats .DCR synonymously to .KDC (still not fully or not all of them supported) - NRW autoconvert check was broken in previous release - added some extra protection to prevent invalid TIFF configs to end up in the internal decoder (non-libtiff) - optimized file sub type checks - RAW_Import SVObject: - now supports also importing JPEG and LJPG data (via corresponding SVObjects) from given start offset within a raw data file - LJPG SVObject: - now supports reading "embedded LJPG", i.e. start reading source file from a given offset (by CP configuration entry) - X3F SVObject: - now uses new global meta data handling functions v3.79 (10.11.12) ---------------- Common: - installer now creates various additional file type associations - added/updated some .cpinfo config definition files - minor fixes to v3.78 history SDK: - SVObject Class: - extended to support upto 32 sub-types - X3F SVObject: - added a new SVObject which implements a simple parser that supports reading of .X3F digi cam files; i.e. if a high resolution JPEG is contained, it will be read out incl. its metadata - CRW SVObject: - added a new SVObject which implements a simple parser that supports reading of .CRW digi cam files; i.e. if a high resolution JPEG is contained, it will be read out - TIFF SVObject: - no longer dumps (invalid) file detail information into logfile on read error (i.e. unitialized field contents, prior ending) - now explicitely supports reading of .PEF digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail - now explicitely supports reading of .NRW digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail - RWL files are now also recognized and handled (same as RW2) - now explicitely supports reading of .ERF digi cam files; i.e. if a thumbnail JPEG is contained, it will be read out instead of any contained (unsupported) native TIFF data - added support for recognizing Hasselblad 3FR/FFF files as such (preview reading already supported before) and for extracting any contained high-res JPEG-LS; however please note, that the JPEG-LS itself currently cannot be decoded by most image viewers incl. SView5 - fixed SRF-contained JPEG (JFIF) being actually misreported as JPEG-LS by file extension - fixed CR2-contained JPEG-LS being actually misreported as JPEG (JFIF) by file extension - added protection against crashing on unsupported compression type 32769 (on 2nd try, in libtiff handler-code) - fixed issue with 16 bit alpha saving - KDC autoconvert check was broken in previous release - DEEP SVObject: - added support for RLE decompression (-> thanks to TVPaint support team) - added support for pre-multiplied alpha handling (the result yet does not look 100% right, but could also be due to available test images) - with 48 bit RGBA import the imported alpha channel now also is 16 bit - with 48 bit RGBA export, true 16 bit now also can be exported for alpha - LJPG SVObject: - added support for 16 bit grayscale and 48 bit truecolor - properly handling component pixel depth value now - now rejecting unknown bit depths a bit better and more verbose - improved log output in general - now sets grayscale flag for 8/16 bit grayscale images - added progressbar support also in the deeper nested encoder/decoder routines (now more finegrained); especially useful on larger files - increased buffers for larger files v3.78 (04.11.12) ---------------- Common: - installer now creates various additional file type associations - added/updated some .cpinfo config definition files SDK: - LJPG SVObject: - now supports additional file type - now rejects unsupported bit depths after decoding - TIFF SVObject: - the new file sub types for raw formats now really are applied on load, i.e. before they could have been overridden by other classification code - fixed issue with possible endless recursion on some raw files when having manually selected an unsuitable/unsupported IFD (page) - now explicitely supports reading of .CR2 digi cam files; i.e. if a high resolution JPEG-LS is contained, it can be auto-extracted by a CP option (same as the one for .NEF etc. as introduced in the previous releases); however please note, that the JPEG-LS itself currently cannot be decoded by most image viewers incl. SView5 (the resulting 16 bit bayer encoding will be rejected) - now explicitely supports reading of .KDC digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail - now explicitely supports reading of .SRF digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail - now explicitely supports reading of .RAF digi cam files; i.e. if a thumbnail JPEG is contained, it will be read out instead of any contained (unsupported) native TIFF data - now explicitely supports reading of .DNG digi cam files; i.e. if a something else (i.e. supported RAW TIFF) is contained instead of just a thumbnail JPEG, it will be read out instead - now explicitely supports reading of .RW2 digi cam files; i.e. if a high resolution JPEG is contained, it will be read out - added basic support to non-libtiff handler to parse TIFF files starting from a given offset (like e.g. Fuji .RAF files) v3.77 (01.11.12) ---------------- Common: - minor fixes to v3.76 history - installer now creates file type association for .nef files - installer now creates file type association for .arw files - installer now creates file type association for .orf files - added/updated some .cpinfo config definition files SView: - the new, enlarged "View" button (replacing "#") is now also localized, with same text as the "View" toolbar; fixed menu also SDK: - TIFF SVObject: - now explicitely supports reading of .ARW digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail - added configurable .ARW autoextract CP option (same as the one for .NEF as introduced in the previous release) - now explicitely supports reading of .ORF digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of any contained native TIFF data/thumbnail (thumbnail fallback) - added configurable .ARW autoextract CP option (same as the one for .NEF as introduced in the previous release) - added some supportive code for .NEF/.ARW files which lack JPEG content but contain some other data representation for the full image (libtiff-handler) - fixed bug in internal 16 bit gray decoder (uncompressed, non-libtiff) - prepared for future support of further raw formats v3.76 (31.10.12) ---------------- Common: - added/updated some .cpinfo config definition files - updated locale .catalog files - lean installer did not create desktop icon by default SView5: - automatic depth conversion of images "on save" is now also supported: if corresponding autoconv option is checked, errors on save operation will be catched and user will be asked if he wants to convert the image upon save and try again; e.g. when trying to save 96 bit as PNG (which is limited to 48 bit) or when trying to save > 24 bit as PCX (which is limited to 24 bit) or when trying to save truecolor data in an 8 bit format (here 256 color best-pen dithering is offered); if multiple conversions are possible (e.g. PNG supports 24 bit and 48 bit and the incoming image is originally 96 bit) the option which results in the smallest loss is taken (in this example: conversion to 48 bit); this saves manual conversion steps and thus simplifies tool usage in case the user is not familar with particular limitations of the currently chosen save format and/or meaning of error messages (e.g. "cannot handle 24 bit") - below the active file type selection for save there is now some short information printed regarding which kind of output the selected format generally supports (true color bit depth, alpha, meta) SDK: - TIFF SVObject: - direct EXIF support got disabled by accident in previous release - EXIF reading was not previously well supported in non-libtiff handler - added basic sub directory support (SubIFD parser in non-libtiff handler) - now explicitely supports reading of .NEF digi cam files; i.e. if a high resolution JPEG is contained, it will be read out instead of the actual TIFF thumbnail - as optional feature (by default disabled, can be enabled in by TIFF CP entry) a contained .NET JPEG file is extracted and saved at same location under same name as the original source file (only difference is the changed file extension from .nef to .jpg; the original .nef file is not modified) - JFIF SVObject: - now supports reading "embedded JPEG", i.e. start reading source file from a given offset (by CP configuration entry) v3.75 (01.10.12) ---------------- Common: - installer did not properly handle the ".NET 4.0 client auto-install" case, i.e. installation routine never being called at all SView5: - swapped Edit and Image menus SDK: - removed two redundant files from lcms2 build which where leftovers from older lcms releases - Paste SVOperator: - now supports 16/32 bit alpha - RedEyeFix SVOperator: - now supports 96 bit HDR - now preserves 8/16/32 bit alpha v3.74 (30.09.12) ---------------- Common: - v3.73 release date & versioning was bogus SView5: - explicite AnyTo24/48/96 bit conversion now disables area selection - undo operation now disables area selection - Copy/PasteAlpha(Image) now recognizes 16/32 bit alpha (before not at all) - PasteAlpha(Image) now disables area selection and pastes directly; which enables support for handling 16/32 bit alpha - fixed minor memory leak in expl. AnyTo24/48/96 bit conversion wrapper routine - fixed bug in 48 bit auto conversion (for areas) - added support for 96 bit auto conversion (for areas) SDK: - Paste SVOperator: - now supports 96 bit HDR - now supports 32 bit alpha sources - fixed issue with possible endian mismatch - now supports pasting into image of different depth (24/48/96 bit conversion) - PasteAlpha SVOperator: - now supports 96 bit HDR - now supports 32 bit alpha sources - now supports 16/32 bit alpha - fixed issue with possible endian mismatch - now supports pasting into image of different depth (24/48/96 bit conversion) v3.73 (20.09.12) ---------------- Common: - minor fixes to v3.72 history - minor fixes to v3.71 history - added/updated some .cpinfo config definition files SView: - improved some of the labels and their translation in main UI window - replaced the "#" place holder for "View" button - RAW Data Import Wizard now supports 96/128 bit HDR formats SDK: - improved speed / more optimization on libjpeg (affects JFIF) - improved speed / more optimization on libpng (affects PNG) - improved speed / more optimization on libz (affects PNG, TIFF, RGFX) - internal AnyTo24/48/96Bit routines now turned into stubs for AnyToXXBit SVOperators, to prevent different behaviour (called with "alpha conversion" enabled); fixes also some bugs - PFM SVObject: - gray flag was only set for 1-7 bit export, not for 8 bit export - now supports true 96 bit HDR import (default) - now uses relative HDR value up/downscaling (changed CPInfo) during post-processing - scaling now can be switched off in general - PFM scale value now ignored (usually 1.0 and different meaning) - now normalizes all HDR values after import - on save all input is now converted to 96 bit first; when writing Pf style files (grayscale) a grayscale-conversion is only done when needed (i.e. if not originating from grayscale image anyway) - RAW Import SVObject: - now supports 96 bit HDR and RGB/RGBA/ARGB flavours - now always assumes that alpha channel is of same bit depth as RGB channels - RAW SVObject: - now supports writing 96 bit HDR /w and w/o alpha - now always writes alpha channel in same bit depth as RGB channels - fixed wrong endianess being reported in .txt file - XOR SVOperator: - now supports 16/32 bit alpha - alpha flag(s) now correctly set - fixed problem with gfxbuffer flag handling - ExtractAlpha SVOperator: - now supports 16/32 bit alpha - if 8 bit alpha is encountered, the resulting image is 8 bit grayscale, with 16 bit alpha it is 48 bit (flagged as grayscale) and with 32 bit alpha it is 96 bit (flagged as grayscale) - Brightness SVOperator: - fixed problem with gfxbuffer flag handling - AlphaTo8Bit SVOperator: - fixed problem with gfxbuffer flag handling - AlphaTo16Bit SVOperator: - fixed problem with gfxbuffer flag handling - AlphaTo32Bit SVOperator: - fixed problem with gfxbuffer flag handling - fixed broken condition in same context - AddAlpha SVOperator: - now preserves certain gfxbuffer flags - AnyTo24Bit SVOperator: - fixed problem with gfxbuffer flag handling - now supports 32 bit alpha - fixed endianess bug in handling 16/32 bit alpha channel conversion - AnyTo48Bit SVOperator: - fixed problem with gfxbuffer flag handling - now supports 32 bit alpha - fixed endianess bug in handling 16/32 bit alpha channel conversion or keeping - AnyTo96Bit SVOperator: - fixed problem with gfxbuffer flag handling - fixed endianess bug in handling 16/32 bit alpha channel conversion or keeping - AutoBorder SVOperator: - fixed problem with gfxbuffer flag handling - ColorCycle SVOperator: - fixed problem with gfxbuffer flag handling - Complement SVOperator: - fixed problem with gfxbuffer flag handling - Contrast SVOperator: - fixed problem with gfxbuffer flag handling - Crop SVOperator: - now supports 16/32 bit alpha - now supports 96 bit HDR - fixed problem with gfxbuffer flag handling - Cut SVOperator: - fixed problem with gfxbuffer flag handling - CutInverse SVOperator: - 48 bit support was bogus - now supports 16/32 bit alpha - now supports 96 bit HDR - fixed problem with gfxbuffer flag handling - FlipNibbles SVOperator: - fixed problem with gfxbuffer flag handling - Gamma SVOperator: - fixed broken condition in gfxbuffer flag handling - InvertAlpha SVOperator: - fixed problem with gfxbuffer flag handling - InvertColors256 SVOperator: - fixed problem with gfxbuffer flag handling - LeftToRight SVOperator: - fixed problem with gfxbuffer flag handling - Mirror SVOperator: - fixed problem with gfxbuffer flag handling - MirrorCopy SVOperator: - fixed problem with gfxbuffer flag handling - Mosaic SVOperator: - fixed problem with gfxbuffer flag handling - Negate SVOperator: - fixed problem with gfxbuffer flag handling - OptimizeAlpha SVOperator: - fixed problem with gfxbuffer flag handling - OptimizePalette SVOperator: - fixed problem with gfxbuffer flag handling - Paste SVOperator: - fixed problem with gfxbuffer flag handling - PasteAlpha SVOperator: - fixed problem with gfxbuffer flag handling - Resize SVOperator: - fixed problem with gfxbuffer flag handling - in case of an error some memory is now released prior returning, so that (in low memory situations) resulting further errors in the calling code can be avoided - ResizeDDA SVOperator: - fixed problem with gfxbuffer flag handling - Rotate SVOperator: - fixed problem with gfxbuffer flag handling - fixed broken condition in same context - RotateFree SVOperator: - fixed problem with gfxbuffer flag handling - fixed broken condition in same context - Scale50 SVOperator: - fixed problem with gfxbuffer flag handling - Scatter SVOperator: - fixed problem with gfxbuffer flag handling - Slicing SVOperator: - fixed problem with gfxbuffer flag handling - StripAlpha SVOperator: - fixed problem with gfxbuffer flag handling - Tiling SVOperator: - fixed problem with gfxbuffer flag handling - TopToBottom SVOperator: - fixed problem with gfxbuffer flag handling v3.72 (18.09.12) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - minimum supported resolution for UI now is 800x600; - re-arranged and re-sized main UI window elements accordingly - re-arranged and re-sized area selection dialog accordingly - Colorimetry / Gamma dialog now supports 96 bit HDR - ICC profile applying now works properly with 96 bit HDR - "M" (metadata info and related) button(s) sometimes could have been visible even though no graphics file in memory SDK: - added 96 bit support to CMS support routines - updated libtiff to v3.9.7 (affects TIFF) - updated libpng to v1.5.12 (affects PNG) - updated lcms2 to v2.4 - Contrast SVOperator: - now supports 96 bit HDR - now supports 16/32 bit alpha - fixed 48 bit CP handling - Brightness SVOperator: - now supports 96 bit HDR - now supports 16/32 bit alpha - fixed 48 bit CP handling - Antique SVOperator: - now handles 96 bit HDR input - XOR SVOperator: - fixed endian issue - now handles 96 bit HDR input (like 48 bit) v3.71 (31.08.12) ---------------- SView5: - there's now a new "HDR Tools..." menu with a first entry "HDR Tablet..."; it can be used to compose a HDR image from two "normal" (or also HDR) images of same content but different shades of RGB data range(s); both may be merged either unadjusted or after applying a generic gamma factor or a linear factor (image weight) to either image; the whole process also works for entirely distinct images, but of course won't return any meaningful result in terms of HDR, then - but the HDR Tablet output is always 96 bit HDR; any alpha channel is preserved as it was for source graphics; note: if you want to apply anything else than a gamma factor, you can always do that kind of operation upfront to either image - AddAlpha dialog only worked properly in preview, not real mode, for 16/32 bit - RotateFree dialog now recognizes 16/32 bit alpha and updates preview if corresponding checkbox gets (un)checked SDK: - Gamma SVOperator: - now supports 96 bit HDR - now supports 16/32 bit alpha - Resize SVOperator: - improved alpha handling - RotateFree SVOperator: - now supports 16/32 bit alpha - now supports 96 bit HDR v3.70 (20.08.12) ---------------- Common: - minor fixes to v3.69 history - added/updated some .cpinfo config definition files SView5: - undo did result in wrong endianess for 96 bit (but not 128 bit) images - undo did not properly work for 128 bit images in general - forward/backward navigation did not work anymore, once a zip file was in the middle (in case it contained a picture that was successfully loaded before) - EndianSwap repair feature now also supports 96 bit and 32 bit alpha - AddAlpha Dialog: - AddAlpha was defaulting to "all" even though the GUI reflected the opposite - now supports opacity values in either 8/16/32 bit, depending on source gfxbuffer depth - AlphaTablet Dialog: - AlphaTablet now supports 96 bit (however applied alpha is always 8 bit) - before, AlphaTablet would not have reported AddAlpha errors - "SVOperator Full List" Image Processing Dialog: - still did not know 16/32 Bit alpha - still not could do 96 bit autoconv - extended autoconv-need recognition logic - "SVObject Full List" Settings Dialog: - still did not know 16/32 Bit alpha - GfxBuffer info dialog now able to handle 32 bit alpha info (HDR) and 16 bit alpha origin (just informative printing) SDK: - fixed bug in GetAlpha16() routine (for 32 bit) - internal AnyTo96Bit routine was still bogus (wrong source buffer handling) - fixed bug in internal AnyTo48Bit routine /w 96 bit images and with alpha channels in general - All SVOperators: - fixed/reviewed depth-specific error handling, i.e. ensure that proper error codes are returned in order to facilitate client's 8/24/48/96 auto conversion where applicable; esp. for 96 bit, but also for some other bit-depths will show effect - InvertAlpha SVOperator: - fixed error handling (unsupported bit depths rejected properly) - AddAlpha SVOperator: - now supports 96 bit - now generates always 8/16/32 alpha channel for 24/48/96 bit respectively - now supports alpha values in 8/16/32 bit as input for either add-alpha operation (highest precision value supersedes any lower and is used as basis for converting into required value depth) - fixed typo in .cpinfo - some long entries labeled "alpha" instead of "addalpha" - StripAlpha SVOperator: - now supports 96 bit - AlphaBlend SVOperator: - now supports 96 bit - AlphaTo32Bit SVOperator: - newly added - AlphaTo16Bit SVOperator: - fixed buffer over-allocation (size) - fixed flags - now supports more bit depths (i.e. alpha plus gfx bit depth combinations) - now supports 32 bit alpha input - AlphaTo8Bit SVOperator: - fixed flags - now supports more bit depths (i.e. alpha plus gfx bit depth combinations) - now supports 32 bit alpha input - ExtractGrayScales SVOperator: - did not correctly handle "gray source" 48 bit graphics and caused a crash in another case - added 96 bit support - RGBE SVObject: - now has 96 bit flag set - fixed bogus description in new .cpinfo file - Rotate SVOperator: - now has alpha flag set - added support for 16/32 bit alpha - added support for 96 bit images - ConvolveNxN SVOperator: - added support for 96 bit images - fixed wrong (too huge) memory allocation /w 48 bit images - Convolve SVOperator: - added support for 96 bit images - fixed wrong (too huge) memory allocation /w 24/48 bit images - ConvolveFloat SVOperator: - fixed "add" parameter handling for 96 bit images - RGFX SVObject: - endian was not correctly handled for 96 bit (but 128 bit) images - previously could not handle inverted alpha on import for 48/96 bit - fixed bug in writing 128 bit files (not enough data written) - added some sanity checks /w importing truncated uncompressed files - fixed error which could have occured on importing files /w alpha channel in low memory situations - TIFF SVObject: - files with floating point samples now by default are imported as 96/128 bit (HDR) instead of downscaled 48 bit; but can be configured via ControlPad v3.69 (10.08.12) ---------------- Common: - added/updated some .cpinfo config definition files - updated locale .catalog files SView5: - View class now able to render 96/128 bit (HDR) images - GfxBuffer info dialog now able to handle 96/128 bit (HDR) color count (just informative printing) - added 96 bit auto conversion for area operations - "auto 24/48 bit conversion" now "auto 24/48/96 bit conversion" - alpha conversion now is default setting for all explicite (by menu) or implicite (auto) conversions, i.e. for example when converting from 8/24->48/96 bit, alpha channel will become 16/32 bit as well (via the corresponding SVOperators) SDK: - added a few new flags, error messages, etc. for 96 Bit - ambiguosity fix in generic endian flag handling functions - added new endian conversion functions for float and double - fixed QLONG endian conversion routines - added 32 bit HDR RGB support to SDK (96/128 bit float GfxBuffer) - widened char array space in SVObject type specifiers - removed some old legacy definitions from header files - updated and clarified in-header documentation at places - fixed stupid endian-related bug in internal AnyTo48Bit routine; flag settings/checking - same in internal AnyTo24Bit routines; flag checking - some fixes and optimizations in internal 24/48 bit conversion routines - AnyTo48Bit SVOperator: - fixed stupid endian-related bug(s); flag settings/checking - fixed SVOperator flags - fixed bug in 8 bit plus alpha workaround from previous release - fixed default transparency in the 8 bit case (workaround) - fixed error handling /w and w/o alpha - fixed alpha channel conversion to 16 bit - AnyTo24Bit SVOperator: - fixed default transparency in the 8 bit case (workaround) - fixed stupid endian-related bug(s); flag settings/checking - fixed error handling /w and w/o alpha - AnyTo96Bit SVOperator: - newly added - RGFX SVObject: - fixed written "bytesperline" value in RGHD for 48 bit /w alpha (was 6 instead of 8 bytes per pixel) - fixed "buffersize" value generated on reading 48 bit /w alpha (was 3 instead of 6 bytes per pixel) - now preserves GeoTIFF data in GEOT/GEOF IFF-META chunks - on reading now converts to END_DEF instead of END_II /w alpha - added support for loading/saving 96/128 bit HDR (float) images - TIFF SVObject: - added 96/128 bit write support (float HDR /w and w/o alpha) - Resize SVOperator - added 96 bit and 32 bit alpha support (i.e. 128 bit float HDR) - added 16 bit alpha support - fixed long-standing memtrash issue caused by certain scaling algorithm parameters under certain circumstances - fixed memory leak in regards to alpha handling - ConvolveFloat SVOperator: - fixed weird memory trashing bug with 48 bit graphics - added 96 bit support - RGBE SVObject: (was: HDR SVObject) - image data now by default imported as true 96 bit (instead of downscaled 48 bit); but can be configured via ControlPad - renamed in order to avoid ambiguousity - files with extra data in front of the file marker are now also properly detected (but extra detection code only executed if at least the file extension matches some known one for RGBE) - JPEG2000 SVObject: - fixed a minor issue (unlikely 1-byte string overflow with enabled log level 9) in error printout routine v3.68 (05.08.12) ---------------- SView5: - within unzip routine, ensure that path (even if non-MS-style) gets always stripped from filename as well (previously not always) - diashow's media player (for videos) was endless looping on close, i.e. never really closed but would have locked up (not sure if/when this was introduced by changing any code in that class, or whether VC++10 just behaves differently than VC++9) - GfxBuffer info dialog crashed on buffer with single transparent color, when attempting to print info on that SDK: - added some new endian conversion function API flavours for specific use - PXR SVObject: - added support for 8 bit grayscale images (imported as 24 bit) - PSD SVObject: - fixed 16/32 bit RLE decompression (48/64 and 96/128 bit files); before it would just have resulted in garbage - fixed reading of 32 bit per channel in general (HDR data handling) - optimized 32 bit per channel reading (skip endian conversion) - added support for "large" PSB files in addition to PSD files; everything supported with/in PSD also supported with/in PSB - TIFF SVObject: - fixed problem with 16 bit half FP plus alpha (4*16 bit) being misrecognized as 16 bit integer image - added alpha support for the yet supported floating point RGB image types (contiguous and separated variants) - integer maxval error check now is floating point aware (eleminate false-positive error condition explictely) - "out of range" float values now being recognized and handled when converting FP content - 24 bit FP conversion routines now endian-aware - fixed 16/24 bit FP handling not to use double precision as target v3.67 (31.07.12) ---------------- Common: - minor fixes to v3.66 history - added/updated some .cpinfo config definition files - updated Credits SView5: - when encountering a .zip arcive it's now being unzipped and the first encountered file from the archive is extracted and tried to be handled (useful e.g. with zip-compressed .psd files, i.e. uncompressed PSD files being zipped instead) - some performance optimizations in View class - Flip operations did not show any possible error text messages after unsuccessful apply attempts - after rotating, flipping or mirroring an image, its orientation metadata is now reset (otherwise during "view" operation it would possibly be autorotated once more...) - removed some forgotten debug message dialog in the SVOperator handling code (which probably was never shown in normal operation) - RotateFree dialog now supports new features of RotateFree SVOperator; however some of them are enabled depending on the nature of the source graphics only (e.g. adding alpha for frame color works only for 24/48 bit and only if alpha channel already present) - the dialog for setting image filter dialogs (i.e. *not* the one for applying general image filter functionality) now has the unused image preview unshown and instead a bigger CP list browser - added unzip.exe from Info-ZIP to distribution arcive (and corresponding license to Licenses folder) - fixed error-handling / clean-up code in some of the SDK: - added a directory deletion function - ControlPad functions: - added new debug function for controlpad content dumping (global log) - controlpad handling functions now live in C++ space (typecasting...) - fixed a possible stability/security issue with CP entries longer than 255 characters (actually was already fixed, but...) - removed some leftover debug code in some add/modify controlpad functions which unnecessarily increased required string memory under MSC (VC++) - RotateFree SVOperator: - quite some speedup by removing superfluous buffer clearing - now supports specifying a different background fill color-index/pixel-RGB value than just #0 or 0x000000 - for the same pixels as before, an alpha value can be specified now (default is transparent, i.e. 0) - PaletteDither SVOperator: - propagated some error messages from Dither24Bit code to here - DitherFix24 SVOperator: - propagated some error messages from Dither24Bit code to here - palette caching previously was disabled for no obvious reason - minor changes in code flow - PSD SVObject: - removed superfluous buffer clearing; reading speed-up - CDR SVObject: - now also supports reading preview thumbnails from newstyle CDRs, which actually are zip-style archives containing some other files v3.66 (20.07.12) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - split "Import / Alpha" menu entry into two sub-items, one for importing a given image as (grayscale) alpha channel shape; and the other one for using a given alpha channel of some image for the same purpose (see also the corresponding Copy/Paste from/to clipboard menu items for an alternative way how to achieve this) - added GeoTIFF metadata support; yet import only works with JPEG2000 and the only working option (once imported) is to export or delete it from within the metadata details dialog ('M' button) SDK: - applied the same 8 bit + alpha fix to the internal anyTo24/48 conversion routines as to the two corresponding SVOperators (see description further down) - AddAlpha SVOperator: - now explicitely configures ExtractGrayScales SVOperator for ascending sorted grayscale palette - minor fixes in error handling - fixed bug in the automatic scaling parameter handling - now also allows to use alpha of given image (after scaling) for image to be supplied with alpha information (in addition to the image itself, after grayscale conversion and scaling) - AnyTo48Bit SVOperator: - if a 8 bit graphics has an 8/16 bit alpha channel attached (which is not officially supported) this alpha information is now kept until after 48 bit conversion (resulting in 48 bit + alpha) instead of doing nothing and returning garbage (fix) - AnyTo24Bit SVOperator: - if a 8 bit graphics has an 8/16 bit alpha channel attached (which is not officially supported) this alpha information is now kept until after 24 bit conversion (resulting in 24 bit + alpha) instead of doing nothing and returning garbage (fix) - Dither24Bit SVOperator: - when dithering in "best pen" mode (i.e. exactly mapping one pen to another, without any real dithering) it is now tried to preserve incoming 8 bit alpha information in form of an alpha map; this works best in case the original image does not map two alpha values to the same pen (with one being transparent and the other not) i.e. in case pixels with same color always have the same transparency; however if there's enough room in the generated color palette, this case is also tried to be handled (once exceeded, it will fail); if there is only a single, fully transparent color then a alpha map pen is used instead of an alpha map - if a graphics has de-facto <= 256 colors the original palette now will be reconstructed prior dithering by default; this can be switched off by a new CP config entry - fixed bug in dithering routines when sorting the color indices and preparing the final mapping (could have lead to wrong mapping in some cases) - DitherFix24 SVOperator: - when dithering in "best pen" mode (i.e. exactly mapping one pen to another, without any real dithering) it is now tried to preserve incoming 8 bit alpha information in form of an alpha map; this works in case the original image does not map two source colors to the same pen (with one being transparent and the other not) and/or in case pixels with same color always have the same transparency (e.g. color black or color white is fully or partially transparent); if there is only a single, fully transparent color then a alpha map pen is used instead of an alpha map - PaletteDither SVOperator: - when dithering in "best pen" mode (i.e. exactly mapping one pen to another, without any real dithering) it is now tried to preserve incoming 8 bit alpha information in form of an alpha map; this works in case the original image does not map two source colors to the same pen (with one being transparent and the other not) and/or in case pixels with same color always have the same transparency (e.g. color black or color white is fully or partially transparent); if there is only a single, fully transparent color then a alpha map pen is used instead of an alpha map - fixed bug in dithering routines when sorting the color indices and preparing the final mapping (could have lead to wrong mapping in some cases) - JPEG2000 SVObject: - GeoTIFF data is now also imported - PSD SVObject: - added support for properly handling alpha channel of 8 bit images (indexed), either colored or gray: if possible alpha channel is converted to alpha map (if there is only a single, fully transparent color then a alpha map pen); alternatively whole image is converted to 24 bit - fixed stupid crash bug in handling 16 bit alpha channel - added support for 32 bit files (HSD), being imported as 16 bit - now exports compression type information as metadata - changed file subtype name again in order not to conflict with separately exported compression type (now just "3.0" instead of misleading "(uncompressed)") - added support for writing files with 16 bit per channel (e.g. 48 bit with or without alpha channel, i.e. 48/64 bit) - transparent color index support (import from resource blocks) got broken at some point in a previous release; fixed - fixed issue with LUT of indexed images not being read if there was a second channel - fixed some issues in handling indexed (8 bit) images - fixed some minor code glitches in general - PSP SVObject: - now exports compression type information as metadata - ACBM SVObject: - now exports compression type information as metadata - PCX SVObject: - now exports compression type information as metadata - DEEP SVObject: - now exports compression type information as metadata v3.65 (05.07.12) ---------------- SView5: - fixed "remaining WaitCursor" issue on unknown file format opening attempts - when inspecting Color Space information, the ICC Profile Class (if a ICC profile is available) now is also shown and translated into readable text - due to new CMS handling, code will not throw an error anymore when attempting to apply gray scale ICC profile (8/16 bit) to 8, 24, 48 bit RGB pictures in case the original source was grayscale as well - both, "apply cms" (icc profile) and "remove cms" (icc profile) buttons did not work, if the ICC profile was added by import and not original part of the graphics; or, if the metadata had been modified before in other ways SDK: - CMS routines extended to support gray scale (8/16 bit) ICC profile handling for nominal 24 bit image sources (i.e. after 8 bit gray import and conversion to 24 bit RGB) - improved error handling in CMS routines - added basic support for GeoTIFF metadata (comparable to EXIF); assumption being that the actual image data is contained in the host file format at its tags/chunks (and stripped from here) - JFIF SVObject: - now has "read metadata" flag set - JPEG2000 SVObject: - now has "read metadata" flag set - when EXIF or IPTC information is present, it's now being parsed (like with JFIF) for relevant single tags like e.g. orientation, author, copyright, comment or GPS info; esp. orientation will take effect during displaying; as a side effect, during this step (at the end of analyzing and parsing the graphics file) a missing single IPTC or XMP chunk will be extracted from EXIF data, if yet missing and present there - PSD SVObject: - renamed the first file sub type - now has "read metadata" flag set - some improvements in error handling - added support for reading files with 16 bit per channel (e.g. 16 bit gray or 48 bit plus alpha channel) - added support for 1 or 2 channel grayscale pictures (gray /w opt. alpha) - when EXIF or IPTC information is present, it's now being parsed (like with JFIF) for relevant single tags like e.g. orientation, author, copyright, comment or GPS info; esp. orientation will take effect during displaying; as a side effect, during this step (at the end of analyzing and parsing the graphics file) a missing single IPTC or XMP chunk will be extracted from EXIF data, if yet missing and present there - skipping of duplicate tags did not work in the Image Resource Block decoder (instead parsing would have stopped at that point most likely) - TIFF SVObject: - added PS Image Resource Block decoder (for analyzing and dumping) - added parser for the following PS resource data blocks: ICC, XMP, IPTC, EXIF, color count, transparent color (this is basically the same code as in PSD SVObject) - if a paletted image /w PS resource block has a transparent color index or uses less than the full palette index count, this is now recognized and properly exported into the GfxBuffer (this is basically the same code as in PSD SVObject) - made sure that PS image resources have lower priority than TIFF native tags with same content type (no merging is done) - gray files decoded with the internal TIFF decoder previously did not have the grayscale flag set in GfxBuffer (impact e.g. on ICC profile handling) v3.64 (24.06.12) ---------------- Common: - minor fixes to v3.63 history SView5: - uses updated SDK SDK: - PSD SVObject: - added more verbose logging - added Image Resource Block decoder (for analyzing and dumping) - added parser for the following PSD resource data blocks: ICC, XMP, IPTC, EXIF, color count, transparent color - if a paletted image has a transparent color index or uses less than the full palette index count, this is now recognized and properly exported into the GfxBuffer - JPEG2000 SVObject: - fixed 1-byte under-allocation in the context of ICC profile reading (100% crash guarantee if logging disabled, still 5-30% crash likelihood with log level 9 enabled) - fixed error handling at related position - JFIF SVObject: - fixed error handling in context of previous allocation fix (v3.62) v3.63 (17.06.12) ---------------- Common: - changed the distribution conditions: it is now explictely forbidden for pay-websites to distribute SView5, i.e. it is not permitted to charge users anything just for the service of being able to download SView5; furthermore modifications to the distribution archive (e.g. portable versions creation) are now expressively declared illegal within SView5.txt (updated copy on website in advance, i.e. right after v3.62 release) NOTE: this also forbids any re-packaging attempts from Zip to Rar, etc. - updated the PAD file accordingly; added a list of "unwanted" distribution websites to PAD file (updated copy on website in advance, i.e. right after v3.62 release) v3.62 (15.06.12) ---------------- Common: - some fixes to v3.61 history, incl. a missing change to JPEG2000 SVObject - recompiled also remaining parts of source tree / DLLs - fixed the "full installer" not to *always* download and install the VC++ 2010 redistributable package; there were actually two things not working: 1. the check for x64/ia64 systems (hidden in Wow6432 node) and 2. the actual check of the version entry in the corresponding registry path - fixed SView5.txt to reflect the current (new) requirements in regards to VC++ 2010 and .NET 4.0 (updated copy on website in advance, i.e. right after v3.61 release) SDK: - added division by zero protection within EXIF GPS tag handling; in this case affecting some EXIF content from JFIF files created by some mobile phone (would have shown garbage in GPS comment field, for altitude); the result wasn't a crash, just some garbage text - added two convenience functions to Log class for either logging in-memory representation of a 32 bit memory area (i.e. longword) as hex or ascii (intentionally w/o endian conversion) - added two similar convenience functions also for 16 byte area (e.g. for UUID or MD5 printout) - TIFF SVObject: - fixed bug in handling DeflateOld compression, resulting from typo - fixed previously undetected bug in log call (too many parameters...) on write (with debug level 1) - JFIF SVObject: - fixed 1-byte under-allocation in the context of ICC profile reading (100% crash guarantee if logging disabled, still 5-30% crash likelihood with log level 9 enabled) v3.61 (10.06.12) ---------------- Common: - minor fixes to v3.60 history - recompiled whole tree with VC++ 2010 (VC10) SP1; except the DLLs - updated/renamed Jasper license file(s) SView5: - fixed (recoverable) crash which could/would have occured when exporting metadata (i.e. if checkbox selected on GUI) into a file that otherwise would not have had an ICC profile attached; when adding the default ICC profile something went wrong - during rendering (View class) ICC profiles of type "scnr" or "prtr" are no longer automatically applied; they are still attached to the image and can be explicitely applied if wanted; reason is, that these profiles are anyway not suitable for monitor ("mntr") rendering (possible sources of such profiles may be JPEG2000 or TIFF files; for the latter in addition it has to be kept in mind, that CMYK images anyway always will imported as RGB, i.e. pre-converted) SDK: - fixed some general function declaration issue (gfxbuf) - updated libtiff to v3.9.6 (affects TIFF) - aligned libjasper with v1.900.1 (affects JPEG2000) - JFIF: - fixed potential issue with tempfile name creation code - fixed a potential issue with corrupt exif markers - fixed a potential issue with corrupt xmp markers - now fixes broken Exif magic ID (ending with 0xFF instead 0x00) in-place during reading, when/if it occurs (but rejects anything else other than these two) - added support for APP3 Meta/Exif markers - added support for 8BPS/PHUT style APP13 markers; fixed in-place to 8BIM when/if they do occur - added protection against duplicate reading of Exif/IPTC/XMP markers - fixed ICC Profile labeling (and log entry) - PNG: - added a bit of metadata debugging (more verbose log entries) - ensured that all textual/metadata and color profile related chunks are always recognized during file parsing, regardless of their position within the file (informally clarified libpng API usage conventions in that regards) - fixed IPTC Raw profile import/export (part of the PS header is required to be included) - added support for APP1 (Exif) Raw profile import (will be exported as Exif Raw profile) - now fixes broken Exif magic ID (ending with 0xFF instead 0x00) in-place during reading, when/if it occurs (but rejects anything else other than these two) - added protection against duplicate reading of Exif/IPTC/XMP markers; same for the supported purely textual meta fields - if no other (standardized) PNG colorspace or color profile information is found, a possibly present "Raw profile" of type icc/icm is taken instead - RawMeta SVObject: - improved robustness on export of (secondary) rawdata comment file - TIFF SVObject: - upgraded to libtiff 3.9.6; only remaining custom patch is mine for tif_read.c's cc/size check - JPEG2000 SVObject: - enabled (full) compiler (speed) optimizations - with log level 9 libjasper debug output now again is visible within the log file - improved decoder debug logging in general - fixed erroneous usage of wrong function (fprintf to stderr) at places - overriding jas_getdbglevel() where in the way for internal logging - fixed some function declaration issues within the library - enabled 64 bit support in libjasper; had to fix it first at places, e.g. enwidening 32 bit to 64 bit length values; esp. added 64 bit box size support (before simply failed parsing) - added missing jp2_getuint64() to libjasper - fixed broken tempfile name creation code - more (and larger) JPx/JP2 variants are now supported; the largest image checked for test purposes was a ca. 18000x10000 24 bit file (loading slow, displaying fast) - added support for ICC profile export - encountering invalid (truncated) ICC profile information no longer causes the decoder to abort - added basic UUID identification and handling code (JP2) - added basic recognition code to libjasper for following global UUIDs: GeoTiff, MSIG, IPTC, XMP and Exif (TIFF/JPEG) - added support to libjasper for reading XMP meta data UUID; explicitely tested against late-added XMP data by ExifTool - added support to libjasper for reading EXIF meta data UUID; explicitely tested against late-added EXIF data by ExifTool - added support to libjasper for reading IPTC meta data UUID; explicitely tested against late-added IPTC data by ExifTool - fixed libjasper to be able to handle meta data also when being attached to end of file; like e.g. by ExifTool - applied numerous other fixes to libjasper v3.60 (22.05.12) ---------------- Common: - migrated the whole build to VC++ 2010 (VC10) - increased requirements to VC10 runtime and NET 4.0 SView5: - fixed regression of illegal memory access fix from v3.36; actually it seems the previous fix was not sufficient and actually it could have occured at a 2nd place in similar context as well (-> Konrad Klar) - fixed a problem with semaphore locking during file recognition (basically did not work as it should, but in addition could cause a crash if a file type was not recognized at all, at the end) - made the special PS file type check semaphore-protected as well SDK: - updated libvpx to v1.1.0 (affects Weppy) - Weppy SVObject: - disabled all ASM code for now, as libvpx support currently ends at VC++ 2008 (VC9); had to change to separate build and inclusion of ready .lib - upgraded to libvpx v1.1.0 v3.57 (10.05.12) ---------------- SView5: - if the update check routine finished in background before the loading of the localization texts finished, it could have happened that an message asking the user to download a new version would have contained nothing than just the version number and date, and no text; this is now synchronized - uses updated SDK SDK: - updated libz to v1.2.7 (affects PNG, TIFF, RGFX, ...) - updated libpng to v1.5.10 (affects PNG) v3.56 (18.03.12) ---------------- SView5: - improved VC++ 2008 (v9.0) runtime presence detection in FULL installer - updated libtiff to v3.9.5 - TIFF SVObject: - upgraded to libtiff 3.9.5 v3.55 (18.02.12) ---------------- SView5: - uses updated SDK - added experimental FULL installer, which is able to download VC++ 2008 and .NET 3.5 runtimes during installation, if missing on the target system; the other installation now is available as LEAN installer (have to download+install pre-requisites your own) SDK: - PNG SVObject finally migrated to libpng 1.5.x API - updated libpng to v1.5.9 - updated libjpeg to v8c - updated lcms2 to v2.3 v3.54 (01.02.12) ---------------- SView5: - uses updated SDK - updated copyright info SDK: - updated libz to v1.2.6 (affects PNG, TIFF, RGFX, ...) v3.53 (23.09.11) ---------------- SView5: - added new "Alpha..." (AlphaMerge) dialog which allows to blend several LAYERS in a row to a new image, either using their own alpha channel or a fixed value; this can be defined on per-layer basis - AlphaTablet was suffering from wrongly working AlphaBlend SVOperator SDK: - AlphaBlend SVOperator actually was blending the wrong way around v3.52 (29.08.11) ---------------- Common: - made up link to MoneyBookers, for donations, as well v3.51 (15.08.11) ---------------- Common: - minor fixes to v3.50 history SView5: - introduced LAYERS; SView5 now supports upto 8 virtual instances of itself, being provided from within the same SView5 main window; it is possible to switch between these layer instances during runtime, and delete them again; undo must be activated once more than one layer is currently active; in future versions, further inter-layer operations may be added; for now, data-exchange is possible via clipboard; NOTE: layer instance 0 is default instance (as it used to be before) - so if you continue to use only instance 0, nothing changes - after running "Options->Recovery..." successfully, the provided information on recovery count was too small by 1 - "Options->Recovery..." now recovers as many instances as possible (i.e. max. 8 when starting on instance 0 with 7 free instances); the active layer instance is always been overwritten, then any other layer instance is overridden (if still free); this function cannot distinct real SView5 instances from virtual instances (i.e. layers) v3.50 (05.08.11) ---------------- SView5: - implemented a recovery function ("Options->Recovery..."); if SView5 crashes, this function can recover all undo steps of the previous instance for use within the current instance; i.e. your previous work won't be lost; in addition, as a side effect, it is also possible to copy a undo history between a currently still running and a new instance (*); the recovery procedure can be re-run several times; it will find all undo steps being created by any previous instance (the first set of files will be taken) (*) as the new instance cannot judge if the previous is still doing well or not v3.49 (01.08.11) ---------------- Common: - minor fixes to v3.46 history - added/updated some .cpinfo config definition files SView5: - fixed Preferences dialog to allow disabling of single entries (i.e. avoid without memory loss) and without crash when disabling the single remaining entry - GrayTable does not die from unintended input-parser recursion on RGB value changes anymore SDK: - Tiling SVOperator: - optimized Tiling to do much less multiplications et al - Slicing SVOperator: - optimized Slicing to do much less multiplications et al - fixed bug in Slicing for 48 bit mode - HilbertDither256 SVOperator: - now has SizeChange flag set (as it does 16 pixel boundary alignment while dithering) - no longer does unnecessary buffer clearing - prevented exceeding source-buffer boundaries on reading, which could have resulted in crashes on larger images - now also provides a "fast mode" - ResizeDDA SVOperator: - optimized to do less multiplications - no longer does unnecessary buffer clearing - Resize: - no longer does unnecessary buffer clearing v3.48 (20.07.11) ---------------- Common: - minor fixes to v3.47 history SView5: - AddText/AddFigure was unstable on large images as GC didn't work fast enough (out of memory side-effects); now enforcing buffer release (talking about 6-9 megapixel) - applied similar fix to: AreaSelect, Colorimetric Dialog, View class (!), Paint, AddAlpha, AlphaBlend, Antique, Brightness, Contrast, Convolve, Convolve5x5, Convolve7x7, Convolve9x9, Dither, ExtractGray, Gamma, GrayTablet, PaletteDither, RawImport, RotateFree, Tiling, XOr, Main SVOperator handling (!) SDK: - ConvolveNxN now uses 64 bit arithmetics (instead of double) for N=5 and N=7 on 24 bit images - fixed a minor defect (black pixel in first row(s)) for Convolve, ConvolveFloat, ConvolveNxN, Sharpen and Blur - fixed another minor defect for Blur - optimized OilPaint again to do much less multiplications and less memory accesses on cleaning up v3.47 (16.07.11) ---------------- SView5: - operations on a full image (no area) never updated progress info prior 100% completion of the actual operation algorithm when in "threaded_progress" mode (checked for the wrong thread); could have led to irritations on bigger images, e.g. as if SView5 did crash (but it did not...) - global progressbar callback now enforces yield(), i.e. sleep(0) - just to be sure the UI progressbar has a change to update itself in any case - optimized global progressbar callback code a little in detail SDK: - added Sleep() to the AOS emulation layer - OilPaint progress now updates a bit more often - optimized OilPaint to do a little less multiplications - Tiling progress now updates a bit more often - optimized Tiling to do a little less multiplications v3.46 (15.07.11) ---------------- Common: - minor fixes to v3.45 history SView5: - minor changes in Convolution dialog layout(s) - fixed broken semaphore release call after image processing operation: nullptr exception (introduced in v3.44) v3.45 (08.07.11) ---------------- Common: - full recompile of whole tree SView5: - using latest SDK SDK: - updated previous lcms version to lcms2 v2.2 - upgraded PNG SVObject to libpng 1.4.8 v3.44 (19.03.11) ---------------- SView5: - SVObject/SVOperator interface code now deals properly with classes that are not re-entrant (i.e. thread-safe); this is just a preparation for future changes SDK: - added mutex (semaphore) support to SVClass class (in-use) - added mutex (semaphore) support to SVLog class (in-use) - added mutex (semaphore) support to SVObject and SVOperator base classes; added "threadsafe" indicator flag (default: true) - mutex support: made all semaphore calls nullptr-proof, i.e. obtaining/releasing in this case always succeeds - minor other improvements in these areas v3.43 (14.03.11) ---------------- SView5: - now uses wait cursor during explicite update checks - removed additional update check delay for 2 of 3 cases SDK: - defined AOS-style Semaphore wrapper functions - implemented Semaphore support (using AOS-style wrappers) for Win32 and Posix pthreads; in addition added a fallback variant using an atomic (hopefully always) type-based critical section handling (again Win- and Posix-style) - modifed SVLog class to use semaphores; configurable; especially protects the global (shared) logging mechanism v3.42 (11.03.11) ---------------- Common: - minor fixes to v3.39 and v3.41 history SView5: - if SView5 is started with more than one filename as parameter (e.g. by dragging several marked image files onto SView5.exe) now a diashow of all images is started instead of just showing the first image - DiaShow now allows navigation to end and back from there also within Media View (video player) dialog - closing a diashow window by close button now will end the diashow as well (for Media View dialog, too) v3.41 (10.03.11) ---------------- SView5: - improved multitasking-friendlyness of new DiaShow code of v3.38 - fixed possible race condition on DiaShow key handling code in conjunction with timer thread (if active) - DiaShow now allows navigation to end and back from there within image view dialog v3.40 (09.03.11) ---------------- SView5: - DiaShow timer was broken on v3.39 v3.39 (08.03.11) ---------------- SView5: - image DiaShow now runs as background thread and re-uses the view class & window, i.e. no more re-opening and flickering (only in case of movie files a different window is opened) - closing a diashow window by close button now will end the diashow as well (for image view dialog) v3.38 (04.03.11) ---------------- SView5: - when indirectly started via double-click of an image file (with auto-display of that image) clicking the red "X" Window close button now also always will close SView5; added a lefthand green "X" button which will prevent this (establish previous behaviour) in addition to using the "Q" or "X" button; this new green "X" is not present when SView5 is started normally - for the same reason, full-screen view is now default in the same mode - fixed some issues with the background update check (now really background thread); fixes inappropriate delays on fast/multi-core CPUs - fixed some issues with the explicite update check (now really blocking non-background thread); fixes inappropriate delays on fast/multi-core CPUs - fixed stupid bug in progressbar code doing inappropriate waiting - background update check now is also taking place if SView5 is only used as plain file viewer (double-click started indirectly via image file) v3.37 (20.02.11) ---------------- SDK: - fixed memory leak in libtiff; applied Peter Hoepfer's patch to libtiff v3.9.4 (22.02.11) for tif_getimage.c until v3.9.5 is out - updated further link libraries v3.36 (04.02.11) ---------------- Common: - full recompile of whole tree SView5: - fixed illegal memory access which would have occured during CP editing when cancelling edit without having done any previous modification (e.g. JPEG2000 CP prefs) (-> Konrad Klar) SDK: - updated libjpeg to v8c v3.35 (17.01.11) ---------------- Common: - minor fixes to v3.34 history - full recompile of whole tree SView5: - during installation now registers itself as SVG (W3C) viewer SDK: - updated previous lcms version to lcms2 v2.1 v3.34 (05.01.11) ---------------- SView5: - 24 bit autoconv now also is applied to 8 bit area selections in case the full graphics is 8 bit; both then are auto-converted; this is the correct action in most cases (now done in case autoconv is enabled) v3.33 (31.12.10) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - 24/48 bit autoconv now also works on 8 bit area selections (before, it worked only on 8 bit results for 24/48 bit area selections) - similar to Alpha-aware "Copy" (PNG 32 Bit) feature from v3.32, it now possible to copy just the alpha channel as 32 Bit PNG => split "Alpha Copy" menu entry into two sub-menus - added "Alpha Cut" functionality in both, legacy bitmap and PNG 32 Bit variant and enabled the corresponding menu entry; basically it does the same as "Alpha Copy" but in addition either removes the alpha channel (if no area selected) or resets it to fully opaque (if area selected) => split "Alpha Cut" menu entry into two sub-menus - added "Alpha Paste" functionality in both, legacy bitmap and PNG 32 Bit variant and enabled the corresponding menu entry; basically it does the same normal "Paste" but it only modifies the alpha channel; when working on a selected area, the outer part becomes fully opaque => split "Alpha Paste" menu entry into two sub-menus => the "Alpha Paste from Image" variant effectively allows to use any kind of incoming ..48 bit image as 8 bit alpha shape for any other kind of image - "Copy" /w alpha (PNG) now also works properly if "Alpha" checkbox is not checked - when doing a 24/48 bit "Paste" into an 8 bit graphics, undergoing a conversion to 24/48 bit as a whole, a previous area selection now is preserved - Set/ResetChannel now supports re-/setting all channels at once - fixed a memory leak which would occur since v3.32 when pasting alpha-containing data into a area selection on top of 8 bit data - minor improvements in error handling SDK: - ResetChannel SVOperator now supports re-/setting all channels at once - Paste SVOperator now also pastes an alpha channel if the source graphics already has one as well (bugfix) - added PasteAlpha SVOperator; it works just like Paste SVOperator but only modifes the alpha data, not the bitmap data, during the operation - AddAlpha SVOperator now is capable of handling 24 bit input alpha source graphics (in addition to 8 bit grayscale); it does a grayscale conversion in that case now v3.32 (30.12.10) ---------------- Common: - updated Copyright year everywhere SView5: - it is now optionally possible to copy alpha-enabled PNG data to Clipboard via "Copy" (instead of only legacy bitmaps without any alpha data) => split menu entry into two sub-menus - when doing "Paste", incoming Alpha data now can either be ignored or copied (if there is no Alpha data, the behaviour is the same); in addition, when copying into a selected area, it also can be blended over the existing graphics (if that has no alpha channel, which is required, it will be created temporarily) => split menu entry into three sub-menus - previously, "Paste" was not undo-able in case of no area selection - previously, "Paste" was not able to handle PNG clipboard data (e.g. from MS Office 2007 or other 32 bit enabled/alpha-aware sources) - if 24/48 Bit autoconv is enabled, it is now possible to paste 24 bit data into 8 bit data (after implicit auto conversion) - fixed memory leak which did occur when doing a "Paste" into an selected area - did some GC-related optimizations in context of Copy/Paste v3.31 (29.12.10) ---------------- SView5: - Paint was broken in v3.30 due to a last minute change v3.30 (28.12.10) ---------------- SView5: - AddText & AddFigure no longer stumble over negative mouse positions; also did minor other code cleanups and GC-related optimizations - added a simple "Paint" application under "Image / Image Effects..." which allows to draw using a round/square brush of given size; all other features are similar to "AddFigure" v3.29 (27.12.10) ---------------- SView5: - AddText & AddFigure dialogs now have an "Apply" button in addition to "OK", so that it is not necessary to close and re-open the dialog in case more than one text or figure is to be added - AddFigure: - added support for drawing Bezier curves - line drawing worked correctly internally, but a required position selection box was missing and the other one was wrongly labelled (could select only "width" value instead of "x2/y2" position value) - clicking into the preview window when in "line" mode now just moves the line as-is instead of doing rather surprising changes to the line start/end coordinates... - fixed some other minor issues v3.28 (26.12.10) ---------------- SView5: - added very cool, new feature: under "Image / Image Effects..." there is now a new "AddFigure..." dialog which allows to add some kind of figures like Lines, Rectangles, Circles and Ellipses; the figures (except lines) may be either solid (filled) or non-solid, i.e. only the contour is drawn with a configurable width (thickness); all other features are similar to "AddText"; maybe later I'll add support for Polygons and Bezier curves v3.27 (25.12.10) ---------------- SView5: - AddText dialog: - reverted last minute change from v3.26 where the default font size was 4 pixel, thus usually invisible unless increased at first - now also supports non-solid text, i.e. only the contour is drawn with a configurable width (thickness) - removed some unneeded - but active - code (faster, less resources) v3.26 (24.12.10) ---------------- Common: - minor fixes to v3.25 history - updated Credits SView5: - added very cool, new feature: under "Image / Image Effects..." there is now a new "AddText..." dialog which allows to add any kind of multi-line text as additional layer on top of the image; this does include an instant preview; unlike other tools, SView5 allows to change size, style, color, font and position (using the mouse, even...) of the text any time during that process, until you finally do press "OK" (and as usual, "undo" still is available after that point); alpha channel and transparency information is preserved; please note, that a 24 (32) bit conversion is required for any 8 / 48 (64) bit input data, though (however lossless back-conversion is easy for 8 bit); also note, that the maximum font size depends on the input image height; especially remarkable is, that any kind of opacity from 0..255 is supported, thus allowing for textual watermark creation or any similar effects - SVG Support: - removed some unneeded - but active - code v3.25 (23.12.10) ---------------- Common: - full recompile of whole tree SView5: - SVG Support: - made file recognition faster, error-proof and less resource consuming - fixed/hardened GDI text rendering code; as part of this now assuming a font size of 16 if none is given (i.e. 0pt) - text now always is rendered "filled" (not as unfilled shape) - fixed unsafe loop conditions in renderer SDK: - libtinysvg: - fixed significant number of stability and security issues in parser (mainly missing pointer zero checks after allocations and sometimes reading buffers beyond their allocated size); could have caused crashes with certain SVG files (not sure if well-formatted or not) - fixed unsafe loop conditions in parser - removed some remaining accesses to stderr v3.24 (22.12.10) ---------------- Common: - minor fixes to v3.21 history - updated Credits - added/updated some .cpinfo config definition files - compatibility tests with MS EMET Security Toolkit http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6f0a6ee-05ac-4eb6-acd0-362559fd2f04 SView5: - added Tiny SVG (W3C) reading support by means of adding a libtinysvg/libxml based parser and a custom Visual C++ renderer; extended the parser by slightly improved font tag handling support for text rendering; the import size defaults to 1024x768 and can be modified using new SVG_IMPORT_* CP settings within SView5.controlpad - when editing Exif tags of any type (not just ASCII or UNDEFINED, but especially useful for these) new content can be imported from a file (in addition to be typed manually into the input text box; which is not possible for UNDEFINED) - fixed Exif editor logic which deals with "tag editing permissions" SDK: - TIFF SVObject still did unprecise 8 bit conversion of 16 bit colormaps at various places - added libtinysvg and libxml to the tree; to be optionally used by applications which utilize the SDK v3.23 (18.12.10) ---------------- Common: - full recompile of whole tree SView5: - Scan and Print now also present in toolbar in addition to "file" sub-menu entry SDK: - upgraded PNG SVObject to libpng 1.4.5 v3.22 (03.12.10) ---------------- SDK: - WebP (Weppy) SVObject: - fixed memory leak in reader - added write support (24 bit input only); compression quality can be set from 1..63 (default: 50) - some code cleanup v3.21 (15.11.10) ---------------- Common: - minor fixes to v3.20 history - updated Credits SDK: - TIFF SVObject now allows to disable libtiff read error handling (via new CP setting) as last resort in order to read bad files, e.g. Fax Group 3 files with loose EOLs all over the place; this is comparable to what a "tiffcp -i" would do - added Weppy SVObject for WebP read support (in 24 bit w/o alpha) v3.20 (08.11.10) ---------------- Common: - updated Credits SView5: - area selection no longer enforces 8->24 bit conversion; however display internally uses 24 bit mode (transparently) - palette editor now ignores and possibly strips transparency color indices which are out of range (i.e. larger than number of colors - 1 per current palette color depth range from 1..8) - palette editor now prevents entering color indices larger than number of colors - 1 per current palette SDK: - experimented with WebP (Weppy) - not yet included v3.19 (30.09.10) ---------------- Common: - full recompile of whole tree - added/updated some .cpinfo config definition files - upgraded installer to InnoSetup 5.3.11 (unicode) - updated Credits SView5: - Antique dialog now allows depth changing (1..8) and selecting a different operating mode for Antique SVOperator; a preview window has been added in order to check the outcome SDK: - Antique SVOperator: - added a few more algorithm modes in order to vary its output v3.18 (21.09.10) ---------------- Common: - minor fixes to v3.17 history SDK: - upgraded PNG SVObject to libpng 1.4.4 v3.17 (12.08.10) ---------------- SView5: - extended existing back/forward button mechanism by two more buttons for full forward/backward (i.e. jump to first/last file) v3.16 (10.08.10) ---------------- Common: - minor fixes to v3.15 history SView5: - fixed another GC-triggered issue in back/forward button handling SDK: - TIFF SVObject: - fixed pending issue with separated float images from v3.15; one more issue left in case images are also tiled - fixed newly introduced issue with loading of CMYK files w/o ICC profile - made sure tiled 16 bit float (1 or 3 spp) is not handled by RGBA code wrongly, but by other means correctly - fixed handling of 2 bit uncompressed files in internal decoder - made sure that 16 bit grayscale conversion does is not performed in case of previous errors - fixed bug in 16 to 8 / 48 bit grayscale conversion - fixed handling of colored files with unusual bps (properly rejected) - added support for separated 12 bit RGB files (3x4 bit) - added support for separated 48/64 bit CMYK files (3x16/4x16 bit) with or without ICC profile v3.15 (08.08.10) ---------------- SView5: - fixed obviously GC-triggered, strange nullptr issue in back/forward button handling SDK: - TIFF SVObject: - added support for separated float images (other than contiguous) ; this is work in progress; while stable it does not provide intended results so far; will be fixed in a later release v3.14 (05.08.10) ---------------- Common: - updated Credits.txt SView5: - back/forward button handles unsupported files more gracefully now SDK: - TIFF SVObject: - tiled images now are much better supported; i.e. all types of supported strip images should also be supported in tiled form now - non-contig images now are much better supported - compressed images with strange bps now are much better supported - re-enabled code for 12 bit (3x4 bit) RGB image handling - added code for 12 bit (1x12 bit) grayscale image handling - fixed handling of integer images with 32 or 64 bps - added workaround for something which looks like a compiler bug when reading 16 bit grayfiles in 48 bit mode (default) - palette images with strange depths no longer misinterpreted as grayscales images - fixed a number of minor issues - fixed temp file cleanup code v3.13 (03.08.10) ---------------- Common: - updated Credits.txt - minor fixes to v3.11 history SDK: - TIFF SVObject: - RGB or grayscale floating point images with 1 or 3 bps in 16/24 bit half precision IEEE format now also can be imported (for now as 8 bit grayscale for 1 bps or as 48 bit truecolor for 3 bps); note, that 24 bit images are possibly imported a little bit darker than intended; fix pending; -- this works for strip images - gray float import no longer fails due to unsupp. maxval - fixed floating point min/max scaling of original values v3.12 (01.08.10) ---------------- SView5: - minor main GUI layout change (largened a little) - moved all the existing shortcut buttons below the preview image (including "M" for metadata) - added two more shortcut buttons: "G" (for gfxbuffer info9 and "C" (for color profile info) - moved the navigation enabling checkbox "#" also below the preview image and made it more obvious what it does; now only visible when an image already has been loaded - changed some of the button colors to allow grasping more intuitively the relation to their function v3.11 (30.07.10) ---------------- Common: - minor fixes to v3.10 history SView5: - the preview window on the main screen now also has backward (<), forward (>) and view (#) buttons; backward/forward do work just like in diashow mode, while "#" is a shortcut for the "View" button in the menu toolbar; now allows for faster navigation through image folders (errors are handled gracefully; on error the next working image is tried) - added .controlpad setting VIEW_BACK_FWD= for disabling/enabling the new backward/forward feature; if you do operate on large folders for example - minor fixes in main screen GUI layout SDK: - TIFF SVObject: - grayscale floating point images with 1 bps in 32/64 bit now also can be imported (as 8 bit grayscale for now); this works for strip images v3.10 (27.07.10) ---------------- SView5: - uses updated SDK SDK: - CMS support - added additional function for to RGB profile application - fixed usage on non-II endianess - TIFF SVObject: - made logging more verbose and fixed at places - when loading CMK/CMYK files with ICC profile (if been parsed already) the ICC profile now is applied during loading (prior being stripped) instead of using the simple internal CMK/CMYK to RGB conversion (major quality improvement); there are not many image tools which do this properly for TIFFs... - once direct YCbCr handling is added, this might be supported for those images as well - added some more code for guessing missing photometric tag (palette and RGB) - added support for reading floating point RGB images in 32 (float) and 64 (double) bit per sample; with 3 bps; import is done in HDR (48 bit) for best quality v3.09 (23.07.10) ---------------- Common: - minor fixes to v3.05/v3.06 and v3.08 history SView5: - uses updated SDK SDK: - TIFF SVObject: - fixed known stability issues mentioned for v3.05 with regards to EXIF import (actually it was ICC profile import because of 1 byte less being allocated for the name buffer than needed; now everything works fine) - upgraded to libtiff 3.9.4 v3.08 (16.07.10) ---------------- Common: - full recompile of whole tree SView5: - added Gray Table color manipulation feature, which uses SelectGrayScales SVOperator to selectively turn (major) parts of an image into grayscales except specific color ranges; e.g. everything is gray except some blue area (or green, red, other colors) - minor GUI resizing in order to ease translations - added french SV5_Main.catalog by Christian Lefevre SDK: - added SelectGrayScales SVOperator, which selectively turns (major) parts of an image into grayscales except specific color ranges - updated libjpeg to v8b (affects JFIF, TIFF, ...) v3.07 (12.07.10) ---------------- Common: - added a list of Distribution Exclusions to SView5.txt SView5: - Exif Details: garbage SubSec* tag fields now are displayed as "0" (some cameras seem to write binary timestamps instead of ASCII, violating the specification) - if filename was too long and got shortened ("..."), after modification, the "*" at the end of the filename was also removed (fixed now) - added XMP import (from menu); works also if no metadata present yet - upgraded PNG SVObject to libpng 1.2.44 v3.06 (10.06.10) ---------------- Common: - full recompile of whole tree SView5: - a number of TIFF images are better imported now; some stability issues could remain from metadata import (if you suffer from that, please disable metadata import) SDK: - SDK source tree cleanups - TIFF: - ICC profiles of RGB-converted CMYK or YCbCr files are no longer imported (would just cause errors later); might be actually applied during RGB-conversion in future, but not right now - IPTC data now is loaded by the internal TIFF decoder when libtiff fails to do it (i.e. when rejecting richtiff iptc tag due to "wrong" datatype; now supporting types 1,4,7) - made sure, ICC profiles are not (sometimes) generated when metadata import in fact is disabled - made sure, IPTC parsing is also done when the internal decoder loaded the data - made sure, EXIF import is also done when the internal decoder loaded the data - removed some obsolete test code (cleanup, only) - removed some outdated debug defines v3.05 (09.06.10) ---------------- SView5: - a number of TIFF images are better imported now; some stability issues seem to remain from metadata import (if you suffer from that, please disable metadata import) - Diashow now loads meta data as well, and respects alpha and ICC data as long as not explicitely disabled on GUI SDK: - TIFF: - fixed handling of YCbCr TIFFs (JPEG/OJPEG) - fully rewrote internal Exif data import code; now all Exif core tags are converted to an Exif buffer and imported (except GPS and Interoperability tags yet) - orientation wasn't correctly dumped into log - bogus extra sample type values now are filtered (saw "999" once... greetings to Cobol) - added RGBA fallback for unusual SPP (e.g. CMYK+alpha) - fixed stupid bug in error handling (crash likely on unknown images with too many channels) - removed some outdated debug defines - unified/simplified debug output at places - security fix to tiff error/warn/... handlers - in some cases it was tried to create ICC profiles from non-existing whitepoints/primaries - libtiff ICC profile creation code could have caused load-error in case of profile creation failure (unwanted) - libtiff ICC profile creation code was not able to distinct 8 bit from 24 bit - fixed bug in internal ICC profile creation code, attempting to access non-existing primary tables sometimes (8 bit) - EXIF: - workaround for problem with exif logging - fixed bogus error check which sometimes caused valid EXIF data to be rejected upon loading - upgraded libexif.DLL to 0.6.19 - IPTC: - added logging v3.04 (07.06.10) ---------------- Common: - minor fixes to v3.03 history SView5: - CMS wasn't active on View action for some reason, also not for Auto Rotate - Alpha checkbox setting now taken into account for View action as well SDK: - CMS: - fixed tone curve building (would have affected PNG or TIFF with computed ICC) - improved error handling at several places - TIFF SVObject: - after fixes in CMS, failed creation of computed ICC profile no longer will result in flagging "sRGB" - implemented primaries/whitepoint/transferfunc tag parsing also for internal tiff decoder, incl. computation of ICC profile - source cleanups, tree size reduction v3.03 (04.06.10) ---------------- Common: - updated some .catalog files SView5: - various UI changes for convenience - improved CMS/ICC handling in general - if CMS is disabled, the attached ICC profile now survives image processing operations unless manually removed - fixed problem with "strip & apply" ICC profile for 8 bit graphics (in fact usually only stripping) - "strip & apply" an ICC profile on 8 bit graphics no longer results in parallel 24 bit conversion - improved error handling on strip/strip+apply ICC profile - stripping metadata now is clearly separated (functionally and by labeling) in the corresponding menu entries; added/removed/relabeled menu entries where applicable SDK: - updated previous lcms version to lcms2 v2.0a; adapted SDK code to new API v3.02 (03.06.10) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - adjusted RAW-Import GUI for start/end offset setting SDK: - IMG SVObject: - fixed memory leak in IMG SVObject - SVObject flags now also updated to latest codebase - PICT SVObject: - updated to latest codebase - added missing code to read embedded JFIF files - temporary files now are deleted when releasing instance - RAW-Import SVObject: - now supports start and end offset in order to calculate the net filesize and to determine the start position for import; this allows to cut out and import pieces from the middle of a RAW file... - BMP SVObject: - now handles broken files without crashing, where BitMapOffset points to earlier positions within the file (colormap); trying to fix on read - now reads v5 header - now handles v4 header part also if header actually is v5 - now fixed to be future proof to handle v4/v5 information also for (if ever) v6 and beyond - fixed endianess bug in reading 15/16 bit files - added support for handling top-down DIBs - added support for writing v5 header (2nd filetype) - fixing bug in reader, seeking colormap at wrong location with v3 files - added support to write ICC color profiles into v5 files in case metadata saving is enabled v3.01 (28.05.10) ---------------- Common: - minor fixes to v2.99 history SView5: - picture info previously was now shown when SView5 was started with picture name as argument (autoload after program start) SDK: - FBM SVObject now supports reading and writing 48 bit files; similar to PPM/PPM or other *nix formats big-endian encoding (BE) is used; changed credits/comment field to reflect BE as well - MAC SVObject: - updated to latest codebase - added write support (part of new codebase) - does no more try to set gfxbuffer flags after allocation failed - IMG SVObject: - updated to latest codebase - added write support (part of new codebase) - introduced third filetype and added proper distinction on read and write - does no more try to set gfxbuffer flags after allocation failed - files with BitImageFlag > 1 no longer cause crashes - fixed grayscale palette generation - added support for reading yet unknown type of 24 bit files (HeaderSize is 9, BitImageFlag equals 3) - numerous other general improvements - ExtractGrayScales SVOperator: - grayscale conversion did not work for 8 bit when destination depth was unequal to source depth - when converting from 8 bit, the brightest color was not white unless the destination depth was 8 bit (regardless of source) - fixed some warnings in Histogram SVOperator v2.99 (26.05.10) ---------------- SView5: - using new SDK - minor optimizations SDK: - RGB8 SVObject: - alpha channel info (genlock bit) was not written correctly - improved error handling in encoding; avoids crashes - ILBM SVObject: - now loads ALPH chunk (optional alpha channel of 24 bit files), if present; as written by ArtEffect from 2.0 on - now writes ALPH chunk (optional for 24 bit files /w alpha) in case a newly added CP called "WRITE_ALPH" is set in the ControlPad; this prevents 32 bit files being written v2.98 (16.05.10) ---------------- SView5: - increased number of supported (sub) file formats SDK: - updated SCR (Sp*ctr*m) SVObject to latest codebase - PCP SVObject: - file recognition did not work in previous versions - updated to latest codebase - added write support (part of new codebase) - updated C64 SVObject to latest codebase - updated DEG (Degas) SVObject to latest codebase - updated FBM SVObject to latest codebase v2.97 (03.05.10) ---------------- SView5: - uses updated SDK SDK: - TIFF SVObject: - added support for writing deflate-compressed (type 8) files (requires activation by ControlPad setting) - added 3 new ControlPad settings for activation and parametrization of deflate (zlib) compression - internal decoder was crashing on truncated (broken) TIFF files under certain circumstances - PCD SVObject: - updated to latest codebase - added support for external tool "pcdtojpeg" for higher resolutions (incl. BASE64) - added .cpinfo file - removed some unused code in fig, gs, exiftool, dcraw, exr SVObjects v2.96 (28.04.10) ---------------- SView5: - uses updated SDK SDK: - RGFX SVObject: - now supports setting zlib compression strategy on write, e.g. default vs. rle - on z-compressed saving, RGFX now uses the max. speed vs. memory setting - now reads and writes 8 bit alpha source flag in RFLG chunk as well (updated RGFX spec to v3.8) - PNG SVObject: - now supports setting zlib compression strategy on write, e.g. default vs. rle - now uses the max. speed vs. memory setting - fixed some glitches in PNG cpinfo definition file - updated libz to v1.2.5 (affects PNG, TIFF, RGFX, ...) - updated libjpeg to v8a (affects JFIF, TIFF, ...) - updated lcms to v1.19 v2.95 (18.04.10) ---------------- Common: - minor fix in v2.94 history SView5: - associated a few more filetype extensions with SView5 SDK: - TIFF SVObject: - no longer tries to handle FILLORDER_LSB2MSB in internal decoder - no longer tries to handle separated images as CMYK in case the inkset is defined as something different - fixed bug which got introduced after v2.92; resulting in e.g. 1 bit images not correctly handled in libtiff decoder - when reading 16 bit gray uncompressed, gfxbuffer size was two times too large in the end (internal decoder) - 16 bit gray uncompressed now can be imported as either 8 bit or 48 bit; added new controlpad called GRAYDEPTH16 which is 48 bit by default (internal decoder) - 16 bit gray uncompressed import now done with better precision in case of 8 bit conversion (internal decoder) - 16 bit gray uncompressed now can be imported as either 8 bit or 48 bit; added new controlpad called GRAYDEPTH16 which is 48 bit by default (libtiff decoder) - reading 16 bit gray now has "graysource" flag set (internal decoder) - fixed bug in 16 bit to 48 bit conversion (libtiff decoder) - fixed possible (but unlikely) overflow in depth calculation - ILBM SVObject now reads/write 16 bit alpha when present v2.94 (17.04.10) ---------------- SView5: - increased stability with TIFF reading SDK: - added AOS-style 64 bit types (QLONG, ...) - added endian conversion functions for 64 bit - TIFF SVObject: - enabled Deflate (Zip) support again - made sure the internal decoder is not per se overriding libtiff on tiled images - made sure the internal decoder is not per se overriding libtiff on images with exotic photometric interpretation - fixed bug in handling SUBIFD tag - added further protection against bogus reading of ExtraSamples tag in libtiff; this time clearly libtiff bug (occurs when tag is missing, only) - added experimental code for 32x3 and 64x3 HDR RAW data handling - improved handling of unknown sample formats - removed duplicate debug output in multipage detection code - now avoids attempting to read palette from >8 bit images - fixed bps/spp/bypp calculation in std libtiff reader code - endian flag check/set code was actually never executed; should have defaulted to little endian anyway, though - fixed another occurence of the previous changed libtiff opening flag bug - added support for 16 bit grayscale images (as 48 bit with "grayscale sourc" flag being set) - fixed bug in stripoffset handling of internal decoder - no longer tries to use internal decoder with planar-separated images which do consist of multiple strips v2.93 (16.04.10) ---------------- SView5: - 8 bit alpha map undo now works properly SDK: - RGFX SVObject now loads and saves RTRN chunk; when RTRN is present, this supersedes single-color transparency from RCOL chunk - SGX SVObject: - now writes true 16 bit alpha for 48 bit - now properly reads 16 bit alpha for 48 bit - RAW SVObject now writes true 16 bit alpha for 48 bit - PAM SVObject: - now writes true 16 bit alpha for 48 bit - now properly reads 16 bit alpha for 48 bit - 16->8bit conversion on read/write not with better precision - writing GRAYSCALE_ALPHA was obviously broken, in two ways (no alpha written, wrong endianess assumed during gray conversion) - saving uncompressed files with alpha channel was broken (resulting in bad files) - while importing GRAYSCALE results always in 8 bit, importing GRAYSCALE_ALPHA now either results in 24/48 bit (with "grayscale source" flag being set), in order to preserve the alpha channel - saving GRAY (P7): no longer accepts alpha for 8 bit on write, as not allowed with svlib (silently ignored) - saving GRAY (P7): if there is a single-color transparency or an alpha map, GRAYSCALE_ALPHA is written (conversion) - saving RGB (P7): no longer accepts alpha for 8 bit on write, as not allowed with svlib (silently ignored) - saving RGB (P7): if there is a single-color transparency or an alpha map, RGB_ALPHA is written (conversion) v2.92 (15.04.10) ---------------- Common: - reformatting of v2.91 history - added spanish, french, germand and english remark to "pre-requisites" description; it seems a lot of people are downloading and installing the program without downloading and installing the MS C++ runtime (VC9); this will not work at all... SView5: - more image formats supported (TIFF sub-types) - increased stability with TIFF reading SDK: - TIFF SVObject: - upgraded to libtiff 3.9.2 - changedscanline size calculation to use libtiff guess instead of own - fixed broken recognition of Log/Log24, which was still reported as "unknown" - enabled support for old-style JPEGs in addition to regular JPEGs - enabled support for PixarLog files - fixed minor bug in internal decoder error handling - fixed possible issue with TIFFOpen() and later in-memory changes of TIFF - added some extra security for XMP reading - defined a warnext handler, finally, too - fixed reading of ExtraSamples tag in libtiff code, which was all bogus and could cause hard crashing (was ok in internal decoder) - ExtraSamples handling now is more finegrained; fixed related error handled (RGBA fallback trigger) - now checking if RGBA handling "is possible", after trying it (showing more verbose error message); as doing that upfront resulted in false negatives... - now dropping pseudo alpha channel in RGBA handler, if - according to ExtraSamples - the image has none v2.91 (14.04.10) ---------------- SView5: - fixes to german catalog (update dialog) - 64 bit undo now works properly SDK: - alpha 16 bit writing in PNG SVObject still was writing 8 bit and (worse) vice versa - RGFX SVObject: - now just ignores alpha for 8 bit on write (no error thrown) - now writes true 16 bit alpha for 48 bit - now properly reads 16 bit alpha for 48 bit - now properly reads 64 bit (fixed endian issue) - TIFF SVObject: - now properly writes 64 bit (fixed size issue) - now writes true 16 bit alpha for 48 bit - now properly reads 16 bit alpha for 48 bit - now uses internal decoder also for 48/64 bit uncompressed files (fixed 16 bit alpha reading there as well) in order to avoid libtiff crash v2.90 (09.04.10) ---------------- SView5: - gfxbuffer info fields/dialogs now report on 16 bit alpha channel if present (same as 8 bit) - gfxbuffer info dialog now reports on alpha source format, if known (i.e. 8 bit for 16 bit) - View class now is able to deal with 16 bit alpha - endian swap operation now also supports 16 bit alpha channel conversion - lossless HDR (64 bit) re-saving of RGBA PNGs now possible (i.e. 16 bit alpha no longer truncated to 8 bit precision; see changes listed below) - added crash protection against progress > 100% in progress handler (.NET UI value check does not like values out of range, besides that information being useless) SDK: - prepared GfxBuffer struct for 16 bit alpha channel handling - fixed alpha flag checks in FreeGfxBuffer(); should not have caused any issues yet - prepared Free/CloneGfxBuffer() for 16 bit alpha channel handling - fixed bug in CloneGfxBuffer() which caused too much memory being allocated for 8 bit alpha channel when cloning a 48 bit graphics - fixed bug in InvertAlpha SVOperator which caused too much memory being allocated for 8 bit alpha channel when working on 48 bit graphics - added AlphaTo8Bit and AlphaTo16Bit SVOperators; both are intended for truecolor graphics only; the latter works only for 48 bit graphics - AnyTo24Bit SVOperator now also converts 16 bit alpha down to 8 bit - AnyTo48Bit SVOperator now also converts 8 bit alpha up to 16 bit (if requested by newly added CP setting CONVERTALPHA, which is OFF by default) - GfxBuffer endian conversion routines now also support 16 bit alpha channel conversion - new precise conversion in AnyTo24Bit was not endian-proof - Paste SVOperator now converts GfxBuffer to be pasted to endianess of destination buffer first - optimized AnyTo24Bit SVOperator - optimized AnyTo48Bit SVOperator - optimized endian conversion routines (indirectly) - FlipNibbles SVOperator now properly restores endian flag after working on 48 bit graphics - AddAlpha SVOperator now properly restores endian flag after working on 48 bit graphics - BitPlaneToOnePlane() and OnePlaneToBitPlane() now properly create a copy of alphamaps (which could occur) and 8/16 bit alpha channels (which should not occur for 8 bit graphics) - modified the following SVOperators to handle 16 bit alpha (currently by doing local 8 bit conversion) on their own: AddBorder, AlphaBlend, AutoBorder, Brightness, ColorCycle, Complement, Contrast, Crop, Cut, CutInverse, ExtractAlpha, FlipNibbles, Gamma, InvertAlpha, LeftToRight, Mirror, MirrorCopy, Mosaic, Negate, Paste, ReplaceBorder, ResetChannel, Resize, ResizeDDA, Rotate, RotateFree, Scale50, Scatter, Slizing, XOR (even though some support only 24 bit where 16 bit alpha is not allowed) - modified all SVOperators which do in-place endian conversion to fail hard on any related error (e.g. locked buffer, ...) - modified the following SVObjects to handle 16 bit alpha (currently by doing local 8 bit conversion) on their own: BMP, C-Source, DDS, DEEP, ILBM, MIFF, PAM, PNG, PSD, RAW, RGB8, RGFX, SGX, Targa, TIFF, YUVN (even though some support only 24 bit where 16 bit alpha is not allowed) - modified the following SVOperators which do in-place endian conversion to fail hard on any related error (e.g. locked buffer, ...): ILBM, HDR, MIFF, PAM, PFM, PNM, RGFX, SGX, TIFF - updated SGI SVObject to latest codebase - updated RAS SVObject to latest codebase - reworked CPU/OS/endian definition code; added auto-detection logic for Win/Lin; added a few more CPU types - modified PNG SVObject to import true 16 bit alpha when available (64 bit RGBA or 16 bit gray /w alpha) - modified PNG SVObject to export true/interpolated 16 bit alpha when required (for 64 bit RGBA); also fixes previous code which was bogus for that case - finally enabled JPEG reading in TIFF SVObject and fixed a libjpeg compatibility issue with regards to that - changed default orientation in TIFF SVObject from botleft to topleft for RGBA fallback loader code - fixed TIFF SVObject not to assume ABGR instead of RGBA for RGBA fallback loader code - TIFF SVObject previously failed in recognizing the end of an image directory (while seeking to a non-existing, but selected image directory entry) - TIFF SVObject was sometimes reporting progress > 100% in RGBA fallback loader code - TIFF SVObject sometimes did read non-planar images (single-planed) as if they had 3 planes v2.85 (05.04.10) ---------------- SView5: - loading a file via Win (fallback) routines, instead of SVObject loaders, resulted in a missing source file name on the GUI - fixed default Win (fallback) load routines to check for actual presence of alpha channel - added "OptimizeAlpha" to Alpha Channel image processing menu SDK: - updated PCX SVObject to latest codebase - updated BMP SVObject to latest codebase; improves reading, writing and stability - BMP SVObject now exports compression type as meta information (RLE4, RLE8, bitfield, none) - ILBM SVObject now exports compression type as meta information (CmpByteRun1, none) - added OptimizeAlpha SVOperator, which removes a redundant alpha channel (or map), i.e. if entirely 100% opaque v2.84 (20.03.10) ---------------- SView5: - improved HDR -> 24 Bit conversion quality, except for View class (precision=off) SDK: - AnyTo24Bit SVOperator now has a "precise" option for conversion from 48 bit (which is default) v2.83 (11.03.10) ---------------- SView5: - full rebuild SDK: - full rebuild - upgraded PNG SVObject to libpng 1.2.43 - added SVObject with read support for IFF-FAXX (first page) as proof of concept v2.82 (23.02.10) ---------------- SView5: - minor translation fixes in .catalog files - fixed a minor memory leak and some related issues in options and preferences handling - added a few more debug logs for options dialog - changing the language via Options did not work permanently (only for current session) in case a controlpad file had not previously been created via Preferences v2.81 (18.02.10) ---------------- Common: - housekeeping SView5: - configuration changes v2.80 (17.02.10) ---------------- Common: - housekeeping SView5: - minor fixes v2.79 (16.02.10) ---------------- SView5: - CMS check box now is accompanied by a "CMS" button which leads again to the Colorimetry dialog, as long as the checkbox is checked SDK: - upgraded PNG SVObject to libpng 1.2.42 - fixed bug with TIFF SVObject reporting 32 bit gfxbuffer depth in specific cases with internal loader (for 24 bit) - improved handling of unusual ExtraSamples combinations and SampleFormat variants in TIFF SVObject - added code for handling 32/64 bit images with multiple strips in internal loader - code for unpacking 32/64 bit images was doing unappropriate byte-swapping in internal loader v2.78 (23.01.10) ---------------- SView5: - Colorimetry dialog now supports 5 types of profiles: custom (as before), sRGB v2 (2 predefined flavours), sRGB v4 and ECI RGB for definition/selection - Colorspace info dialog now clearly says (if missing) "no profile attached" - "Edit" button in ColorSpace info dialog now enabled; leading to Colorimetry dialog (direct "apply" disabled and no undo step kept at this place) SDK: - ExtractGrayScales SVOperator now respects the new "gray" flag, resulting in more accuracy or even lossless conversions if the source image is also gray (depending on destination depth) v2.77 (21.01.10) ---------------- SView5: - extended GfxBuffer info dialog to report on new flags - "really exit" requester text now also translated SDK: - added code to compute ICC profiles for TIFF files that come with colorimetry tags (note, that this results in an ICC tag being added when saving these files again with metadata saving enabled); done unless a real ICC profile is included - TIFF SVObject now recognizes BigTIFF as TIFF, however yet rejects it at a later stage - introduced new GfxBuffer flags for identification of buffers created from gray, 4 or 8 bit source originally - added set of functions for GfxBuffer flag handling - new gray flag now is supported in SVObjects for: PNG, JFIF, PNM, MSP, LJPG, JPEG2000, PBM, PAM, PFM, XWD, XBM, TIM, TIFF, TGA, SGI, RGFX, RAS, PSP, PSD, PCX, MAC, IMG, ILBM, FITS, FBM, CUTPAL, CT, ACBM - new gray flag now is supported in SVOperators for: ExtractGrayScales, HilbertDither256 - modified all SVOperators to preserve new GfxBuffer flags if, when and where applicable for results after filter operations - fixed potential issue in TIFF SVObject with unitialized variable (flag) - minor improvements to SCR - RGFX now reads and writes RFLG and RDIP chunks v2.76 (08.01.10) ---------------- SView5: - "Strip ... & Apply CMS" now also resets ICCP flags - added brandnew dialog for Colorimetry changes, which allows to add/change/synthesize colorimetry settings based on file gamma and chromacity information; default settings are based on sRGB; allows to apply or discard any previous ICC profile; changing gamma from e.g. 1.8 to 2.2 now is just a few clicks... and removing/replacing bogus gamma information is as easy... - optimized the v2.75 sRGB change in View class so that a profile only is (temporarily) attached prior rendering when CMS-aware rendering really is active SDK: - PNG now saves sRGB chunk in case the source graphics really is known to be of that type and in case there is no ICC profile attached to it (i.e. what is loaded can also be saved now) - PNG did correctly store IPTC data but could not correctly read it due to some un-updated pointer - some general improvements/additions in "misc" section of SDK; being utilized by e.g. PNG *** This is a preview release for the dynamic GUI translation feature - so far only the main application screen has been translated. Consider making a donation to speed up things. Will easily allow for spanish et al languages... *** Feel free to send me translations for inclusion with the program distribution. E.g. spanish, portuguese, russian, chinese, french, ... v2.75 (06.01.10) ---------------- Common: - minor fixes/additions to v2.74 history - included ECI RGB v1 profile for internal usage (g=1.8) SView5: - GUI translation now done in background - added ICC profile related remark in meta details dialog - View class now attaches standard sRGB ICC profile to images with sRGB rendering intent prior rendering (if they do not have an other profile attached already) SDK: - added some ICC profile related flags in GfxBuffer - added code to compute ICC profiles for PNG files that come with gAMA and/or cHRM (note, that this results in an ICCP chunk being added when saving these files again with metadata saving enabled); just for files which additionally include an sRGB rendering intent this step is skipped - fixed issue with LCMS linking - fixed sRGB intent handling in SVObject class and PNG v2.74 (01.01.10) ---------------- Common: - bumped year from 2009 to 2010 in program and files SView5: - updated german .catalog with few more suitable terms - dynamified and translated many more strings, replacing redundant terms and phrases by unified ones while at it - replacement of \n, \r, \t in catalog entries did not work due to bogus ::String class method call; fixed at first, but using different approach now anyway, which also should be much faster - added new toolbar entry (last one) which is equal to the ISO 639-2 code (in uppercase) of the currently selected language (e.g. "ENG" or "DEU") and opens the general settings dialog when being clicked; allows to easily change a mistakenly chosen language back to something else without having to navigate through unreadable menu entries - in case a selected language is not present or not present anymore (in general or only for the just to be translated window/dialog) a more graceful fallback (to english defaults) is triggered now; if english is gone as well, the last chosen language just remains as it was - improved guidance and error handling in the language selection code of the settings dialog - cleaned up initial ICC directory retrieval code v2.73 (29.12.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - introduced concept of .catalog files (pure textual); allowing for easy translation by using a text editor - currently included are german (deutsch) and english; further languages easily can be added by translation of the english version, renaming and putting into a new sub-folder (auto-recognition) - thus prepared for multilangual GUI versions - so far most parts of the main GUI window are translated - language either can be switched by LANGUAGE controlpad; this change will take effect with the next program restart - alternatively change can be applied using the Program Settings dialog (using "locale" resources folder browser); this change will take effect immediately after confirmation - catalog pages currently are not utf-8 but local codepage SDK: - PNG now imports 16 bit grayscale as 48 bit by default; can be switched to 8 bit using controlpad setting - PNG now imports 8 bit grayscale optionally as 24 bit; 8 bit remains default; can be switched to 24 bit using controlpad setting - if PNG grayscales are imported as truecolor (24/48 bit) instead of 8 bit colormapped, their alpha channel now also is imported - applied a number of minor fixes and workarounds to PNG - specification of the .catalog file format is provided along with SView5 in "\Resources\Locale\ReadMe.txt"; if you want to support the file format in your own applications, feel free to go ahead (details in there) v2.72 (07.12.09) ---------------- SView5: - certain save buttons in Meta Details dialog now disabled after deletion of related meta data - deletion of last remaining multi meta data (e.g. EXIF) could have caused all other meta data not to show up anymore - fixed status line refresh issue during load/save v2.71 (06.12.09) ---------------- Common: - added/updated some .cpinfo config definition files Common: - updated some of the terms in .txt files - bumped version to v2.71, thus higher than the last official release done for AOS SView5: - increased size of Area Selection dialog for more finegrained manual selection - optimized area selection dialog in general and for large images - fixed XOr transformation dialog to react immediately again on changed input values SDK: - XOR SVOperator now works in 48 bit as well v1.64 (05.12.09) ---------------- SView5: - added code infrastructure for registration code handling and related buttons, dialogs, etc. - details are described in "Registration.txt" which is also accessible from the menu now; it includes also registration details for commercial users - note, that non-commercial usage still is free, however your name and logo/picture is only shown in the "About" dialog along with "Registered Copy" after doing a PayPal donation; this way the supporters of this software may distinct themselves from the non-supporters; Merry X-Mas, by the way SDK: - fixed buffer size issue with metadata writing in PNG - upgraded PNG SVObject to libpng 1.2.41 v1.63 (25.11.09) ---------------- Common: - updated Usage.txt SView5: - View class now allows to toggle view mode during display using "V" key: as Zoom now is default, this indirectly simplifies resize via +/- even when in default mode - ProgressBar now accompanied by traffic light indicator - made sure focus is not normally set to some drop down box; i.e. not overwriting its content when pressing a key v1.62 (22.11.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - Zoom is now default for viewing - added workaround for refresh bug in file info section of main dialog - Load, Save, Operators now have own, dedicated (improved) progressbar code; smoother (can be disabled by new config option) - "Save" toolbar button renamed to "SaveAs" - "ICCP" flag renamed to "ICC" - "ICCP" buttons in meta details dialog renamed to "ICC" - when closing the main window by close button ("X") now it is also asked "do you really want to exit..." in case the image has been modified (just like when exiting via menu entry) - area selection dialog now protected against fast clicks - area selection dialog now has enlarged fields for left/top/right/bottom values SDK: - JFIF SVObject now /w improved file buffering - PNG SVObject now /w improved file buffering v1.61 (15.11.09) ---------------- Common: - updated PAD file with Win7 compliance information - moved CMS code from SView5 down to SDK SDK: - updated TGA SVObject to latest codebase - updated TIM SVObject to latest codebase - updated QRT SVObject to latest codebase - restructured and simplified CMS code and internal API - added CMS code within SDK v1.60 (11.11.09) ---------------- Common: - assigned some more file extensions /w SView5.exe SView5: - fixed a number of minor string-related mem leaks (heap) SDK: - hardened Add/FindControlPad() routines (and class) - hardened SVClass init routines - hardened a few ami-emu functions v1.59 (28.10.09) ---------------- Common: - updated Features.txt (forgotten in v1.58) SView5: - added new dialog for viewing Exif MakerNote where present and supported (for different types of cameras, i.e. manufacturers) v1.58 (27.10.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - extended list of allowed extensions for the video replay in diashow mode, as WMP12 (Win7) does support more - fixed build SDK: - added EXR SVObject for importing EXR files via exrtoppm (using Op'nEXR DLLs); an update of exrtoppm that works with recent VC++ DLLs will be released separately soon v1.57 (15.10.09) ---------------- SView5: - IPTC tags now can be browsed with more details and can be removed (iptc details dialog) - IPTC tags now can be edited (iptc details dialog) - fixed remaining design flaw in EXIF edit code which could result in race condition (exif details dialog) - added code for EXIF MakerNote detection (exif details dialog) SDK: - fixed bug in JFIF/EXIF handling of embedded IPTC chunks (endian conversion) v1.56 (10.10.09) ---------------- SView5: - area selection dialog now is rock-solid against out-of-range and negative-size mouse ranges - the three most important toolbar buttons are rendered in bold now - editing multi-component EXIF values is prevented now, until this has been implemented for particular ones (exif details dialog) - EXIF ShutterSpeed value now also shown as raw value, in order to immediately reflect SRational value changes (exif details dialog) v1.55 (08.10.09) ---------------- Common: - distribution archive name changed to "SView5-Install.zip" (link only) SView5: - CM and Alpha checkboxes now are displayed bold to show that toggling them has immediate effect on the preview windows - fixed minor GUI glitches - EXIF editor was mixing up tags starting from a certain. but variable tag in the list (broken mapping), resulting in various side effects - improved GPS tag detection in metadata and EXIF details dialog - update dialog now shows real version information and date instead of just the distribution archive name SDK: - more finegrained access to EXIF tags in general - improved GPS tag reading in JFIF (JPEG) v1.54 (07.10.09) ---------------- SView5: - EXIF details dialog now properly shows content of EXIF ComponentsConfiguration tag - metadata info dialog now asks again for re- confirmation prior removing any metadata - metadata info dialog now fully refreshes after EXIF editing (updates also e.g. GPS info) - EXIF details dialog now also allows editing tags of type float and double (untested), as well as rational and srational (tested) v1.53 (05.10.09) ---------------- SView5: - EXIF details dialog now provides additional information on tags (tag num, data type, etc.) - EXIF details dialog now allows editing tags of certain type (ASCII, byte, short, long) - EXIF details dialog now allows removal of tags v1.52 (03.10.09) ---------------- Common: - minor fixes/additions to v1.51 history SView5: - area selection dialog now also shows pos/size of area while still under selection (on mouse move) - most of the entries in the metadata info dialog now can be added/edited (like orientation or info on author, annotation, name, copyright, etc.) SDK: - upgraded JFIF SVObject to libjpeg v7 (with arith stuff disabled) - upgraded PNG SVObject to libpng 1.2.40 v1.51 (02.10.09) ---------------- Common: - minor fixes/additions to v1.50 history SView5: - improved/extended selective metadata deletion options (in metadata info dialog; via checkboxes) - XMP data now can be imported in metadata info dialog - fixed minor glitches in metadata info dialog; also added a few more import/export buttons (stubs) - fixed minor glitches in colorspace info dialog - Help menu now contains integrated log viewer; hopefully for convenience in general and not just during debugging SDK: - added 16 bit handling code to internal TIFF decoder (adds support for 16 bit gray images and others) - added support for contig 16 bit CMY(K) TIFFs and properly rejecting non-contig ones (for now) - a few more exotic TIFF images are now properly handled as RGBA and a few others are properly rejected v1.50 (01.10.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - usage of updated SDK except FITS support SDK: - fixed endian issue with images containing 16 or more bits per component, i.e. 48/64 bit TIFFs; being read correctly but kept with wrong endian flag internal in most of the cases ("repair" function of SView5 could be used to fix this) (-> Eike Biel) - TIFF file type check is a little more tolerant - fixed handling of non-contig TIFF files in internal decoder in general and for non-contig 48 bit files in libtiff decoder - added workaround for strange .NET bug in TIFF - fixed strip handling in TIFF internal decoder for uncompressed files (removed previous fix) - fixed subtype assignment in ILBM, read & write - added PBM SVObject with read & write support for IFF-PBM - added ACBM SVObject with read & write support for IFF-ACBM - added CT SVObject with read support for Sc't'x - added CVP SVObject with read support - added NEOchrome SVObject with read support - added QL SVObject with read support - added CUT/PAL (Dr. H'l') SVObject with read support - added MIFF SVObject with write support - added MSP (MSP''nt) SVObject with read support - added MTV SVObject with read & write support - added FITS SVObject with read support (uncompr.) but *disabled* for now as it makes a size difference of 200K - fixed MAC SVObject flags and type/subtype IDs v1.49 (28.09.09) ---------------- Common: - released new IFF-META spec incl. ICCP/ICCN chunks - minor fixes/additions to v1.46/1.47 history SView5: - metadata (incl. ICC profiles) now is saved and restored for "undo" steps as well; i.e. when undoing an image processing step, everything is restored again - when encountering a broken ICC profile, View class now falls back to default rendering (i.e. no CMS) instead of rendering nothing; a dedicated error requester shows up in that case (previously "low memory" was reported erroneously); preview image was affected here - ColorSpace info dialog now correctly reports LittleCMS as either active or inactive (was always reported as inactive) SDK: - added ICCP reading & writing support in ILBM; using ICCP/ICCN chunks - added ICCP reading & writing support in DEEP; using ICCP/ICCN chunks - added ICCP reading & writing support in RGB8/RGBN; using ICCP/ICCN chunks - added ICCP reading & writing support in YUVN; using ICCP/ICCN chunks - added ICCP reading & writing support in RGFX; using ICCP/ICCN chunks - PNG now shortens ICC profile name prior passing to libpng by one additional byte compared to the library itself (workaround of bug in 1.2.29) v1.48 (26.09.09) ---------------- Common: - added new CP entry "STD_CMFILE" to SView5.cpinfo SView5: - minor modifications to import/export menu - added raw import menu for ICC profiles (under metadata) - added possibility to add ICC profile to files previously loaded without any metadata; or to replace existing ICC metadata in the other case - this way graphics files can manually be equipped with (new) ICC profiles prior saving - if "save meta" and "CMS" are active, all images are saved with a standard sRGB profile (if no other profile present) from the Resources/ICCP folder - the standard sRGB profile can be overridden by some other default profile using the "STD_CMFILE" prefs setting in SView5.cpinfo (accessible via SView5 preferences) - made some additions to Usage.txt with regards to metadata handling on load/save and CMS/ICCP handling on load/save and during normal operation (e.g. viewing and image processing) v1.47 (25.09.09) ---------------- SView5: - added 3 standard .icc sRGB profiles to Resources folder, for later usage SDK: - JPEG no longer loads ICCP data if in "no meta" mode - added ICCP reading & writing support in TIFF - TIFF no longer loads EXIF/IPTC data if in "no meta" mode v1.46 (24.09.09) ---------------- Common: - minor fixes/additions to v1.45 history SView5: - the CM (AutoCM) checkbox now also toggles View class behaviour; if not checked, View class does show the image without CMS applied - View class now in general does not apply CMS except when explicitely being told so - clarified meta data save info/error dialog text - clarified WIA printer/scanner info/erro dialog text SDK: - JPEG saving was slightly broken, as always SPIFF instead of JFIF was saved, unless SPIFF was selected (then JFIF) - saving of JPEG SPIFF was broken, as the header was not endian-converted at all - added ICCP reading & writing support in JFIF v1.45 (23.09.09) ---------------- SView5: - image information row now has additional tags "ICCP" and "sRGB" - ColorSpace info dialog now reports name of iCCP profile and intent of sRGB tagging (if present); it also does distinct the default sRGB setting from any sRGB info derived from an image - added ICCP profile support to View class (for display) - added ICCP profile support for strip meta menu; optionally apply colorspace conversion prior stripping - ColorSpace conversion is now applied prior image processing operations in case "CM" mode is active - if "CM" mode is not active and if you see the "ICCP" flag, please manually strip meta information & apply ICCP - added some functions for cloning metadata, etc. yet to be moved down to the SDK (partially) - Metadata now indicated by "M" only, no "Meta" flag - Meta details dialog now cross-links to ColorSpace info dialog (if ICCP et al information is present) - fixed exception on save failure (substring) - re-arranged File->Export menu (meta raw export entries) SDK: - fixed PNG error logging on read (was just empty line) - added iCCP reading & writing support in PNG - added iCCP and sRGB flag support in SVObject class - RawMeta now also can save ICCP profile data; enabled Text output format (was missing in list previously); subtype handling was all broken (fixed) v1.44 (13.09.09) ---------------- Common: - minor fixes to v1.38/1.39/1.43 history - added/updated some .cpinfo config definition files SView5: - added color management button to GUI (inactive) - added .cpinfo setting AUTOCM (inactive) - Credits and History .txt files now accessible as part of Local Documentation sub-menu SDK: - fixed lcms build (console mode) - added basic lcms conversion code (inactive) v1.43 (24.08.09) ---------------- Common: - updated Credits.txt - added/updated some .cpinfo config definition files SView5: - CMS dialog now reports "LittleCMS (inactive)" SDK: - added LittleCMS (lcms) to project tree v1.42 (15.08.09) ---------------- SDK: - added YUVN SVObject with read support for IFF-YUVN (400, 411, 422, 444, 200, 211, 222) and write support (for 411; 400 written as 411) v1.41 (09.08.09) ---------------- SDK: - added DEEP SVObject with read support for IFF-DEEP (uncompressed, RLE, DELTA) and write support (for uncompressed) v1.40 (26.07.09) ---------------- Common: - minor fixes to v1.39 history SDK: - added RGB8 SVObject with read support for IFF-RGB8/RGBN and write support for RGB8 v1.39 (10.07.09) ---------------- Common: - updated Credits.txt - fixed .controlpad file for v1.38 - added/updated some .cpinfo config definition files SView5: - added Tiling to Image Effects menu; incl. preview - added Slicing to Image Effects menu SDK: - added Tiling SVOperator - added Slicing SVOperator v1.38 (04.07.09) ---------------- Common: - minor fixes to v1.37 history SView5: - if a file has been modified, this is now indicated by italics font style and a "*" (if filename too long no "*") - previously, filename was shortened too early; after last GUI redesign there is more space on the right side - fixed most of the cases where an operation consists of multiple steps; in order to create only one single undo step for the whole joint operation (few exceptions left) - removed some dead code - fixed Sharpen error handling and cleanup - fixed RotateFree error handling and cleanup - fixed Brightness error handling and cleanup - fixed Contrast error handling and cleanup - fixed ChannelReset error handling and cleanup - fixed Mosaic error handling and cleanup - fixed ColorCycle error handling and cleanup - fixed Ghost error handling and cleanup - fixed Gamma error handling and cleanup - fixed Mosaic error handling and cleanup (not handled) - fixed Hilbert error handling and cleanup - fixed Scatter error handling and cleanup - fixed Complement, Negate error handling and cleanup - fixed All Options dithering error handling and cleanup - fixed Histogram error handling and cleanup - fixed AddAlpha error handling and cleanup - fixed PaletteDither error handling and cleanup - fixed FlipNibbles error handling and cleanup - fixed InvertColors error handling and cleanup - fixed Xor error handling and cleanup (two places) v1.37 (03.07.09) ---------------- Common: - fixed v1.36 release date - added/updated some .cpinfo config definition files - added 8 discrete variantes of Kirsch Edge Detection filter for use with Convolution 3x3 - added 3 plain Gaussian filters for use with Convolution 3x3 - added vertical version of Sobel filter for use with Convolution 3x3 - fixed Prewitt filter naming - added vertical and negated versions of Prewitt filter for use with Convolution 3x3 - added 3 Mosaic-style filters for use with Convolution 3x3 SView5: - added DDA Scale option to Resize dialog; works only in conjunction with "Keep Aspect" and utilizes ResizeDDA SVOperator for scaling in that case (interpolation) - split Sobel filter menu into entries for horiz and vert version - split Prewitt filter menu into entries horiz and vert version - added Median filter (lower, median, upper) - added WaxPaint and WaterPaint filters in menu; as combination of other filters - reworked EdgeDetect and Emboss menus - added "RGB <-> BGR" to Repair menu - minor update to Usage.txt - Blur, OilPaint, DigiPaint, AutoBorder, Antique, AnyTo24Bit, AnyTo48Bit, OptimizePalette, Rotate (partially), Extract*, InvertAlpha, StripAlpha previously did not show errors (just silent exit) in some special case SDK: - added ResizeDDA SVOperator - added Median SVOperator - optimized parameter check in Rotate SVOperator - fixed border calculation in Blur SVOperator v1.36 (02.07.09) ---------------- SView5: - added another checkbox (and ControlPad) option "Auto 8" (shortcut for "Auto Conv 8"); meaning, that source data should be automatically converted from 24/48 bit to 8 bit (best pen) in case the related SVOperator cannot handle truecolor; this for example is the case when doing 1 bit b&w conversion via Image -> ColorDepth -> Convert; as this option may cause quality loss, it is semi-automatic: it will bring up a dialog asking you whether it's ok or not - fixed Dithering error handling and cleanup - fixed Scale 50% error handling and cleanup - fixed EdgeDetect error handling and cleanup - fixed Emboss error handling and cleanup - fixed Plewitt error handling and cleanup - fixed EdgeDetect Inverse error handling and cleanup - fixed Sobel error handling and cleanup - fixed Convolve 3x & NxN error handling and cleanup (+ GC) - fixed Greyscale error handling and cleanup (GC eff. only) - fixed Resize error handling and cleanup (GC eff. only) - fixed AddBorder error handling and cleanup (formal fix only) - fixed Rotate error handling and cleanup (formal fix only) v1.35 (30.06.09) ---------------- SView5: - opening image by extension default tool or via "Open with..." will only open the picture window; only if pressing Q or X the main GUI will be shown, if pressing Z or ESC the program will exit (key meaning as before) [-> Mikko Virtanen] - for the same, but general, purpose added HIDDENVIEW config option in prefs ControlPad (not available on main GUI panel); works only in conjunction with AUTOVIEW v1.34 (29.06.09) ---------------- Common: - fixed v1.33 history SView5: - AlphaBlend dialog now also handles 8 bit input images (autoconv) - AlphaBlend now has Source/Blend checkboxes disabled when in user alpha blending mode; additionally either checkbox is disabled when either alpha source is not present - Watermark did not correctly behave when an area was selected prior calling the function (you would have had to de-select the area first and subsequently strip alpha manually in order to get the desired result) - View class now has (+)/(-) hint in window title as well - minor textual changes in error messages SDK: - AlphaBlend now also handles 8 bit images w/ or w/o transparency; converted to 24 bit prior usage; also fixed error return for that particular case in order to avoid misbehaviour on client side v1.33 (28.06.09) ---------------- SView5: - added Edit/Mark for completeness - renamed "Alpha Blend..." to "Alpha Tablet..." - if neither image has an Alpha Channel, "Alpha Tablet" now allows to blend them using a fixed alpha channel value for the whole image - added "Watermark..." effect to image processing; best results are achieved with 24 bit grayscale images currently - fixed Alpha Tablet cleanup behaviour - fixed alpha flag handling in View class SDK: - Paste now preserves source alpha if paste buffer has none; fixed related crash - StripAlpha now clears all alpha information (pointer, too) v1.32 (24.06.09) ---------------- SView5: - added "Alpha Blend..." dialog in Image / Alpha Channel menu; one can blend two graphics using alpha channel of either; both need to be 24/48 bit (source can be auto-converted); this also works with Area Select (i.e. blend over part of an image); the secondary image always is scaled to fit - attempting Palette Dither (reference image palette) for 8 bit images now gives error unless 24/48 Bit auto conversion is enabled (then convert to 24 bit prior palette dithering) - made Palette Dither dialog a little more user friendly; for example always shows at least the unmodified source image (if no reference palette file selected or in case of any subsequent error) - fixed bug which would cause crash after successful Palette Dither - added ColorSpace info dialog; shows sRGB characteristics only, yet - added own XOr Transform dialog in Image / Color Manipulation menu incl. preview; allows full 0..255 range v1.31 (22.06.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - AlphaBlend SVOperator visible in "SVOperator Full List..."; you may easily blend one image over another; one is required to already have an alpha channel; a dedicated GUI will follow - XOR and InvertColors256 available on GUI (the latter in Palette menu as "Invert Palette") SDK: - added AlphaBlend SVOperator - added InvertColors256 SVOperator - minor fix in XBM error handling (on write) - minor fix in PaletteDither error handling - changed "illegal access" error text - changed RAS, TGA types/subtypes (again) v1.30 (16.06.09) ---------------- Common: - minor spell-fixes in v1.28/1.29 history SView5: - Keys +, -, L, R now also work in main window - pressing key once in main window (like CTRL-Z) no longer causes two key events - added Image/Repair menu; hosting "FlipNibbles" and basic endian conversion - put reasonable scale-up/down limits in View class, i.e. not larger than 6 * screen size, not smaller than 4 sq. pixels - no longer possible to crash View class by keeping '+' or '-' pressed for indefinite time - keypress detection no longer reported as such - applied some fixes to resource management in View class SDK: - added CDR SVObject, for C'relDr'aw preview images - fixed certain out of memory behaviour in FIG, DCRAW - increased PSP default loglevel - FIG debug no longer labeled "gs" v1.29 (14.06.09) ---------------- SView5: - minor layout changes to Area Select dialog - prepared settings dialog for add. language options - fixed quite a number of form border styles - previously RAW could not be selected as output format, as it became SunRaster always - formally provided two more Export menu items SDK: - added PSP SVObject (P'intSh*p read support); not all of them, but a decent subset of images is supported - added PXR SVObject (P*xar read support) - SunRaster shortcut is "RAS", not "RAW" - fixed a few subtype strings, e.g. PCP - fixed minor memory leak in PCP v1.28 (12.06.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - Area Select dialog now provides a miniatuarized view on the full image incl. selected area and toggle switch in addition to the zoom view - fixed OpenFromClipboard error handling - new SVObjects in this release allow to save 4 types of raw metadata, for example pure XMP or EXIF chunks SDK: - clarified that PDF (first page) is supported; improved PDF file recognition code - dcraw debug no longer labeled "gs" - added ExifTool Device SVObject (to be integrated); uses RawMeta_Import SVObject - added RawMeta_Import Device SVObject (to be integrated) - added RawMeta SVObject (save-only) - fixed a few Device SVObject flags - RawImport SVObject was lacking a sub-type ID - fixed resource freeing bracketizing in DCRAW, EPS, FIG - DCRAW was lacking medium check - fixed a few default extensions - fixed APTR bracketizing in a few AOS emu macros - minor APTR fixes in gfxbuffer layer v1.27 (11.06.09) ---------------- SView5: - added LL Crop in addition to LL Transform; this allows to crop parts of a JPEG image in a lossless way (otherwise the JPEG would be decoded, cropped, re-encoded, which increases artefacts once again) - grayscale conversion did not work on areas anymore; since v1.15 always the whole image was affected - improved runtime resource management (Area Select dialog) - LL Transform still popped up a message box with debug output SDK: - EPS Header extraction (TIFF) accidentally was disabled; related fix to v1.21 history below v1.26 (10.06.09) ---------------- Common: - "Quantization" moved upwards within JFIF.cpinfo; since this is the quality setting (0..100) SView5: - extended "LL Transform" with Flip and Transpose operations (select either Rotate or one of these) and optional Optimize, Progressive, Trim flags - Reset buttons in Area selection dialog were swapped for Left and Top values (no one noticed so far) - added Cancel button to Resize dialog, finally - all Convolution dialogs now show the name of the currently loaded (saved) matrix, so it's easier to browse them by name (i.e. remember current settings) v1.25 (09.06.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - Crop now also available in Edit menu as shortcut; uses previous Area selection, if any - DiaShow for completeness now also available in File menu - added jpegtran integration; "LL Transform" button becomes enabled only if a loaded image is of type JPEG and not yet modified in any way; jpegtran allows to rotate JPEGs by 90, 180, 270 degrees without any quality loss (otherwise the JPEG would be decoded, rotated, re-encoded, which increases artefacts once again) - minor fix in PaletteDither error propagation/handling SDK: - minor fix in Histogram progress updates v1.24 (05.06.09) ---------------- SView5: - updated About dialog - fixed Resize dialog not to allow 0% scale factor; thus not to throw an exception after setting it v1.23 (04.06.09) ---------------- SView5: - minor GUI changes; incl. some borderstyle fixes - calling external tools now really seamlessly done - Device SVObjects now also listed in Loader/Saver list; in order to allow program path configuration (e.g. DCRAW) - DCRAW import option now available in File -> Import menu - added busy pointer to Device import(s) SDK: - own system() clone called _system() avoiding "short DOS window popup" on external tool calls - fixed GS, FIG to use new _system() call instead spawn() - fixed RAW Import, PNG, GS, EPS, FIG SVObject flags - added DCRAW Device SVObject for DNG/RAW import via dcraw; requires external tool to be present and path to be properly configured in ControlPad v1.22 (03.06.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - below the Save Format selection dropdowns there's now a (C)onfig button which brings you directly into the ControlPad settings for the currently selected format; if none available this button is disabled - website now has a sub-page listing supported add-ons like Ghostscript and WinFIG; added menu entry "Check for Add-Ons" which brings you there - minor update to Usage.txt SDK: - fixed issue with deletion of temp files of EPS, GS SVObject - added FIG SVObject; similar to GS this uses an external tool called "fig2dev" (part of WinFIG) that is utilized to import FIG drawing files; requires path onfiguration v1.21 (01.06.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - basic EPS and PS (Ghostscript) integration available via corresponding SVObjects - for the standard case of directly importing .ps files also added direct Ghostscript integration into main program; takes path configuration etc. from Ghostscript SVObject SDK: - added PS SVObject; requires some configuration; you have to provide the Ghostscript installation path first - added EPS SVObject; can either extract TIFF thumbnails or plain .ps data (ps is default, fallback to thumbnail; can be swapped via config) - added more debug output to TIFF (logfile); ext error handler now also connected; all error handlers starting from level 5 now (previously disabled) - fixed issue in TIFF with default values for striprows & tiles - fixed tmpfile name generation in TIFF, JPEG, Histogram - global pathsep from SVClass now globally visible; newly added drvpsep (':') and made it visible as well - added FilePart() and PathPart() to AOS emu v1.20 (28.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - Instance Info dialog did show load-dir and prog-dir swapped - FlipNibbles SVOperator visible in "Full SVOperator List..." - XOR SVOperator visible in "Full SVOperator List..." SDK: - added FlipNibbles SVOperator; allows to correct endian issues and wrong nibble weights after image loading; helps to fix images files written by broken software or non-standard conformeous - added XOR SVOperator v1.19 (27.05.09) ---------------- SView5: - file type check (on load) produced stale file handles; cleanup took place on program exit, only - minor changes in "all options..." dithering error handling - added Palette Dither SVOperator to GUI; available under Color Depth 8 bit handling; as Reference Image (Palette) Dither; allows to synchronize a single (or bunch) of 8 bit files to share the same palette, being determined by 8 bit reference file v1.18 (21.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - added import wizard for RAW data, using RAW-Import SVObject; this is located in the "File" menu hierarchy; if a file comment is present it is shown as well (giving hint on image layout) - added Device SVObject support to SVClass handling code and a dedicated loader wrapper - minor menu adjustments under image processing SDK: - added Device SVObject support to SVClass - added RAW-Import SVObject (first Device SVObject) - added GetComment() function to AOS emu layer v1.17 (20.05.09) ---------------- SView5: - added "Add Alpha..." dialog which allows to add basic alpha information to an image; works also for areas; this way you can add transparency to regions of an image, one after another - Sharpen did not work on areas SDK: - fixed endian issue in AddAlpha - Paste did not paste alpha (channel) information correctly - Paste could not paste alpha into non-existing alpha v1.16 (19.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - "Import / AddAlpha" menu now enabled; asks for a grayscale (or 8bit) graphics which is used as alpha channel subsequently; scaled to correct size if necessary (note that AddAlpha SVOperator has more options) - "Export / AddAlpha" menu now enabled; exports alpha channel (if present) as 8 bit grayscale file (into file format as currently selected) - made CP ListView prefs a little bigger (but no longer resizable) SDK: - added AddAlpha SVOperator; allows to import given grayscale graphics as alpha layer for other graphics v1.15 (16.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - Grayscale extraction now opens up a dialog which allows to select the destination color depth (i.e. 1..8 bit for 2..256 grayscales), the sort order of the grayscales (asc/descending) and the operation mode (i.e. "quick" for fast calculation); incl. preview window - changing the "Render Transparency" checkbox in the Palette Editor did not cause the image to be re-rendered (/w or w/o transparency) - in Palette Editor, the first 16 colors were already rendered as black, only the textual/numeric RGB information was correctly shown SDK: - improved progress reporting code for Histogram - fixed div by zero issue for Histogram on black images (mode 2) - added PaletteDither SVOperator; allows to dither graphics to a given, fixed palette (taken from an other graphics) v1.14 (14.05.09) ---------------- SView5: - added both Histogram options in the "Image Information" menu; note, that writing the results to a file will only work from within "Operator Full List..." SDK: - Histogram mode 2 ("color to screen" and "color list to file") now works v1.13 (08.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - v1.12 history fix - Convolution(s) now allow(s) to adjust the (unprocessed) border in a way that it gets processed and looks smoother; this is only possible if no area selection is active (as size changes do apply temporarily); uses the new AddBorder SVOperator SDK: - added "ReplaceBorder" SVOperator, allowing to changed single-colored borders (auto-detection) to a different color (freely chosen) - added "Histogram" SVOperator allowing to create color statistics for 24/48 bit files - fixed memory hits/trashes in NxN Convolution with 48 bit - AddBorder was crashing in 48 bit mode; would cause "Operator Full List..." to crash as well (since first SVOperator in list and preview crashing) - improved error robustness in TIFF and JFIF tempfile handling v1.12 (07.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - added AddBorder SVOperator to Size Shaping menu; if you call it from there the added border will be always black; however you can achieve something different if you call it via "Operator Full List..." - while "Operator Full List..." did allow to modify local user settings, it was only providing a preview based on "no" settings; "apply" did work correctly on local settings, but global settings would not have worked (see SDK; fixed also a number of follow-up errors) - fixed rather exotic/rare config setup issue - improved runtime resource management SDK: - added "AddBorder" SVOperator, allowing to add single-color borders of any width to the egdes of a graphics (left, right, top, bottom may be of different size) - after the previous changes for local/global settings, SVObjects and SVOperators were ignoring global settings completely; fixed also a number of related or follow-up errors - improved robustness of error handling for 48 bit conversion at places - added 48 bit endian handling code also to Ghost SVOperator - Cut SVOperator did not properly read the (optional) backcolor setting - added more log output here and there v1.11 (06.05.09) ---------------- SView5: - fixed borderstyle to non-resizable for a few more dialogs - added "SView5 Program & Instance Info" dialog in Help menu - new key handling logic in diashow mode still not ok - mediaview (i.e. video replay support) in diashow mode now can be disabled by configuration option (DIASHOW_MEDIAVIEW=NO) - after a diashow has finished a follow-up "view" will fail (cleanup) - outcommented some Console debug output v1.10 (05.05.09) ---------------- SView5: - redefined meaning of quit/abort/exit keys for DiaShow/MediaView modes and added a little table in Usage.txt that describes it for all 3 modes; basically an "exit program" key is not required except for plain View mode - when starting with argument (i.e. by double-clicking an image) SView5 is by default started in autoview mode now; this can be overriden by config settings - added class bootstrap fix to allow immediate crash-free quit of SView5 after initial image view; this is again for the double-click scenario - basically you now can open an image by double-click (if extension associated with SView5) and quit again using X, Z or ESC. In this case you are not bothered with the main GUI, which remains in background - fixed bug with deleting temp files (created during image acquisition) v1.09 (04.05.09) ---------------- SView5: - GUI layout cleanup - fixed issue with scanning (image acquisition) and temp files v1.08 (03.05.09) ---------------- Common: - added/updated some .cpinfo config definition files - added SView5.cpinfo SView5: - added AutoView option; when enabled directly opens the View window after loading an image; useful as default if you mainly open files by double-click in Explorer - also with "z" (or "Z") SView5 can be directly quit from the View window; as long as the source graphics has not been modified (once) the "really quit?" dialog won't show up, either anymore - activated global config saving button as well (finally) - revised options/settings dialog; added "All Settings..." button which leads to editor for SView5.controlpad - added plenty new options there, which allow to control the default settings on GUI after startup, as well as certain background modes (like automatic online update) - configuration file now parsed on startup; either global or user/local version - changed default loglevel from 9 to 1 - after all, GUI & default settings now fully configurable; either globally (e.g. server or default) or on per-user basis - removed some dead code (GUI elements and listeners) v1.07 (02.05.09) ---------------- Common: - added/updated some .cpinfo config definition files - added a few more _FILE subtypes in .cpinfo metadata SView5: - installer: associated a few more file types with SView5 - configuration changes can be saved globally (program directory) or user-specific (appdata roaming directory under Vista) - finally separated default (ENVARC) and user-specific (ENV) configuration; not exactly as under AOS, but similar - split Image Processing into Processing and Effects - added Sober, Plewitt, EdgeDetect Inverse and Emboss_Low to Effects - fixed a few issues with regards to Prefs/Config handling - added a so-called easter-egg (hint: superfluous color change) SDK: - finally separated default (ENVARC) and user-specific (ENV) configuration; not exactly as under AOS, but similar - re-enabled encoder options for JPEG2000 - fixed Convolve, ConvolveFloat, ConvolveNxN default matrix to really match Blur (finally) v1.06 (01.05.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - added menu entry for dialog "All Options..." under Color Depth Conversion / 8 Bit, which offers all available 8 bit dithering choices incl. preview, as there are: - fixed palette or best palette - Floyd-Steinberg (F-S) or BestPen for fixed-palette - F-S, Ordered, Burkes or BestPen for best palette - color depth ranging from 1 to 8 (2..256 colors) [not included is Hilbert, which is for 1 bit only] - housekeeping: Convolve/Float/NxN, Gamma preview window adjustments - if a graphics was modified or undo was applied after modification, file type is reported as "Buffer" now - added menu entries for viewing "local documentation" SDK: - added PAM SVObject, for reading/writing 8/24/48 bit NetPBM PAM (P7) files with optional alpha channel - added PFM SVObject, for reading/writing 8/24/48 bit NetPBM PFM (PF/Pf) files (floating point LE/BE) - swapped PNM file sub-types (PPM/P6 now default) - endian-fix for PNM on 48 bit reading (P6) - minor fixes in PNM file recognition - fixed bug in new getendian() call, that did not take effect anywhere yet v1.05 (29.04.09) ---------------- SView5: - limited automatic update checks to "once per day"; this does not limit the number of updates per day, though, as you can see ;-) v1.04 (29.04.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - added another bunch of menu placeholders - EXIF handler now fixes overlapping Interop/GPS tags if applicable - EXIF handler now fixes ShutterSpeedValue tag if applicable - GfxBuffer information dialog now also shows filename, type and subtype (as shown on the GUI) for convenience - added OilPaint to Image Processing menu - added DigiPaint to Image Processing menu - added ResetChannel to Image Processing menu (Components Manipulation); incl. preview window where you can select component and value - merged ExtractRed/Green/Blue into common submenu - added 48 bit endian handling code to (Pre)View class (finally) SDK: - updated PNM SVObject to latest version; supporting 48 bit read/write and certain additional variants of this fileformat (P1-P6) - added RAW SVObject, allowing to write 4 different RAW formats; the "meta" information is written into a separate .txt file as comment - fixed FBM file subtype string to be non-empty - fixed SGI file subtype string to be non-empty - added OilPaint SVOperator (works in 24 and 48 bit) - added DigiPaint SVOperator (works in 24 and 48 bit) - added ResetChannel SVOperator (works in 8, 24 and 48 bit) - set 48 bit flag for Negate SVOperator - fixed endian issue for Negate SVOperator - cleaned up endian handling in PNG - cleaned up endian handling in RGFX - cleaned up endian handling in SGX - cleaned up endian handling in TIFF - cleaned up endian handling in HDR - fixed endian-triggered flag handling issue in HDR reading - fixed endian issue in HDR (writing 48 bit) - added function for easy endian flag retrieval; clarified some other endian issues - updated zlib 1.2.2 -> 1.2.3 (finally) - added workaround in AOS-emu SetVBuf() for special (nasty) behaviour of setvbuf() - under .NET or elsewhere - updated Credits v1.03 (28.04.09) ---------------- SView5: - resizing an image in View mode now always resizes the original image, not the already resized one; now uses Resize SVOperator instead of Scale50 SVOperator; rotation position is remembered and restored - cleanup of View/(pre)View class - added GfxBuffer information dialog which shows (partially internal) information on graphics dimensions, size, layout and configuration - minor changes to menu layout; also added some placeholders for future functionality - removed some dead code (unused listeners) - c2p conversion now longer done immediately after loading, but when required - auto conversion now also works for HAM6/8, however a dialog is presented to the user in addition (as when, for example, resizing a HAM6/8 graphics, it cannot easily be converted back) - similar to OpenStreetMap and Google(TM) Maps, a straightforward link MS LiveSearch(TM) Maps now is also possible; their API is not used (you can do the same using their "Forward" button, then copy-pasting the result somewhere) SDK: - added read and write support for HDR (RGBE) files - added a few more DOS calls to AOS emulation layer; some of which never existed under AOS but allow to abstract POSIX better v1.02 (27.04.09) ---------------- SView5: - load/save file dialogs now correctly do remember path and filename; before, this was not always the case - fixed minor GUI layout/text issues - similar to OpenStreetMap, a straightforward link into Google(TM) Maps now is also possible; their API is not used (you can do the same using their "Link" button, then copy-pasting the result somewhere) v1.01 (26.04.09) ---------------- SView5: - skipped v1.00 intentionally - minor fixes to this history file (typos, minor fixes) - it was nowhere documented that Alt+ESC (hotkey) does the same as "Grab" - GPS info buttons harmonized with the rest in metadata info window - added option to save XMP data into XML file - minor fix in EXIF details handling - IPTC details now presented and handled 1:1 the same as EXIF details; also added logic to copy either a single line or the whole IPTC data as text into the Clipboard (from there you can copy it into e.g. a text editor) v0.99 (25.04.09) ---------------- SView5: - if no known EXIF tags are found, the EXIF detail browser won't open anymore; this is true for EXIF files which just contain a thumbnail, for example - selectively deleting parts of metadata did work, but suffered from a second release attempt later on (prior loading a new image) - selectively deleting parts of metadata was not permanent - metadata: "More 2" no longer indicates presence of GPS data ("GPS") when there actually is none - for all Convolution filters, fixed the min/max allowed div/add values, in relation to the theoretical maximum for the particular matrix size; before, some matrix settings could not be processed (e.g. Blur_GaussianII_5x5) - "Orientation" (exif-style) now part of metadata - the "M" button is not shown anymore, if metadata actually is empty (defaults) - added optional Auto-rotate feature (depending on Orientation information); it is located in the settings for Image Processing, but only takes effect when _viewing_ an image - added option to Rotate/Flip/Mirror menu which permanently "fixes" an image according to orientation information from metadata (which is reset thereafter) - extended Usage.txt with a little more (hopefully helpful) information - centralized image information handling again a little more - status of virtual images (no file attached) now strictly controlled - if a graphics is saved, the filename is updated to reflect the new one; if it was virtually prior to that, its status changes to file-based - fixed minor layout glitch in RotateFree dialog - installer: associated a few more file types with SView5 SDK: - TIFF reader now rejects any kind of image orientation not within allowed range; now provides new-style orientation information - JFIF no longer fills "More 1" with orientation information; now provides new-style orientation information v0.98 (24.04.09) ---------------- SView5: - added "M" button in image info area for a quick view on "meta data" it becomes visible when applicable by means of data availability - fixed reason for XMP detail display sometimes still not working - long filenames now shortened with "..." on GUI - filename handling centralized - implemented EXIF viewer (MetaData Details->EXIF) and logic to copy either a single line or the whole EXIF data as text into the Clipboard (from there you can copy it into e.g. a text editor) - replaced onscreen GUI icon with funky version as well - metadata loading now enabled by default (not saving, though) - presence of XMP may not always have been correctly indicated on GUI - certain parts of metadata (EXIF, IPTC, XMP) now can be selectively deleted (as a whole) v0.97 (21.04.09) ---------------- Common: - renamed PICT.cpinfo to PICT2.cpinfo SView5: - cleaned up internal ENV path retrieval - minor improvements to error handling - fixed the reset config issue from v0.96 again at a different place - added/fixed/extended color (value/index) selection dialog for .cpinfo/.controlpad preferences and other purposes; depending on whether a graphics is currently loaded (and whether truecolor or LUT) it behaves differently (when necessary) - added checkbox within .cpinfo/.controlpad preferences; allowing to determine whether an already loaded graphic should be used as reference (i.e. in area/color selection dialogs) or not; if not, corresponding CP fields can be edited directly (manually) - added generic CP dialog for SV Module selection (SVObjects, SVOperators) - generic and specific SV Module selection dialogs now alphabetically sorted; also duplicates now are prevented (did occur for SVObjects) - fixed dialog dimensions here and there - color transparency level label in palette dialog now correctly reads "opacity" - added CP color dialog also for plain color browsing (under Image Processing) - GPX save button now (also) disabled if no GPS data present SDK: - fixed .controlpad/.cpinfo names for Degas, MacPaint, Pictor, PICT2, QRT, SunRaster, Spectrum, Targa; adjusted also a few sub-type names as and where applicable; the displayed SVObject name now always matches the .controlpad/.cpinfo name, however still may differ from the C++ class name (which usually matches -parts of- either type or sub-type); note, that not all these modules actually have .cpinfo files (yet) - added two new, endian-related error codes and messages - added option to prohibit buffer modifications with regards to concurrent access (including, but not limited to endian conversion) - meta data now also holds optional information on compression details of the source graphics (e.g. for TIFF); this is filetype-bound (class-style) - fixed internal TIFF JPEG filetype definition - TIFF now returns compression details as part of metadata information - TIFF reader (libtiff section) failed badly on parsing orientation tag - made TIFF log information a little more verbose v0.96 (20.04.09) ---------------- Common: - renamed JPEG.cpinfo to JFIF.cpinfo SView5: - made sure a previous SVOperator config is reset prior to next call; so that not setting any config will result in the default config - Palette Editor now allows to set/change multiple color's transparency values; when in this mode the desired color easily can be selected as the Palette Editor's automatic "color dialog popup" can be disabled - Palette Editor now allows to browse RGB/Hex values of palette entries - added SVOperator (default) config menu to Options menu - added SVOperator (default) config option to "Full SVOperator List" menu under Image Processing; this basically allows to pre-configure each and every option of an SVOperator and run it directly ("apply"); the standard menu entries (using any such SVOperator as well) would (will) override these default settings with their own - added SVObject (default) config menu to Options menu; this basically allows to pre-configure each and every option of an SVObject; usually this is not overridden by the main program - all hidden configuration options made available this way; e.g. for setting default save behaviour of PNG, JPEG, etc. - this way direct access to all SV modules is provided, if needed/wanted - preferences GUI is dynamically generated, depending on .cpinfo content; some improvements are still pending (easy textual input possible in these cases at least) v0.95 (18.04.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - added 4 scattering options to Image Processing menu - added complement & negate operations to Color Manipulation menu - generation of "save format" list now fully dynamic; names 1:1 similar to SVObject TypeIDs - removed some now obsolete static string arrays - compression level for undo buffer either was "none" or 6, setting to specific value did not work - added "Full SVOperator List..." entry to Image Processing, allowing to directly access all SVOperators and get instance preview; also all (internal) settings could be viewed and modified directly (tbd) SDK: - added Scatter SVOperator - added Complement SVOperator - added Negate SVOperator - InvertAlpha SVOperator no longer delivers "random alpha" (when in default mode) if there is no alpha channel present - fixed ConvolveNxN SVOperator default settings (not fully yet) v0.94 (17.04.09) ---------------- SView5: - replaced program icon with funky version SDK: - added XWD (V11) SVObject (only reading) - added XBM (v11) SVObject (read and write); demo of cross-call to other module (here: HilbertDither256) - enabled TIFF EXIF preview code (via JFIF SVObject) in TIFF SVObject - fixed tempfile generation for non-NULL SVClass (no need for 2nd inst.) - fixed logfile bootstrapping in SVClass - added fallback in case SVClass passed to SVObject/SVOperator is NULL - (re-)enabled code for handling specific Mac-written JPEG files (JFIF) - made debugging log a little more verbose, esp. for dec. exceptions (JFIF) - fixed tempfile creation for JFIF SVObject - fixed tempdir setup for non-Win platforms v0.93 (15.04.09) ---------------- SView5: - if there is GPS information in metadata, it can be exported as GPX now - added code to retrieve root directory of Windows CMS profiles... SDK: - SGX SVObject class did not have alpha flag set - added DDS/DXT SVObject (writing not fully enabled) - added LJPG/JPEG-LS SVObject (reading and writing) v0.92 (13.04.09) ---------------- Common: - minor fixes to PAD XML file SView5: - added preview window to palette editor (incl. transparency visualization) - minor changes to Gamma preview window - added dialog and preview window for Brightness (removed fixed-value menus) - added dialog and preview window for Contrast (removed fixed-value menus) - added preview window to Rotate Free dialog - added "keep size" option to Rotate Free dialog - Rotate Free now also can be applied to selected areas of image; "keep size" remains enabled in such a case v0.91 (08.04.09) ---------------- SView5: - changes to program status (1x text field) and image info (3x text fields) also are logged 1:1 now (if logging is active) in the logfile - fixed minor issue with status display fields when file loading failed - Black & White conversion option added to Color Depth conversion menu under Image Processing (background either black or white) - little updates to documentation text files SDK: - added FGets/FPuts to AOS emulation layer - added XPM SVObject, loads/saves XPM v1-v3 files - added CSRC SVObject; saves C source code and assembler (68k,PPC,x86) - added PSD SVObject; loads/saves P'Shop (TM) files - added HilbertDither256 SVOperator for black & white dithering v0.90 (07.04.09) ---------------- SView5: - RedEyeFix now always combined with (temporary) Area Selection - after de-selecting area, always refresh preview window now v0.89 (06.04.09) ---------------- SView5: - added Palette Editor which allows to change single colors of palette based images (all [upto] 256 colors separately) and set/modify a single color transparency (multi-color transparency cannot be edited yet but is indicated) - added menu option for increasing palette depth (if less than 8) easily - moved "OptimizePalette" to new palette sub-menu - renamed "Online Update" menu to "Check for Update" and implemented the required logic; allows to force an update check and provides feedback accordingly - the displayed sub-type was wrong; always the first sub-type was shown SDK: - fixed bug in SGX SVObject (read) - fixed alignment issue; written SGX files were not compatible with AOS v0.88 (04.04.09) ---------------- Common: - added/updated some .cpinfo config definition files SView5: - when saving files, the default file extension now is preset in the save file dialog - dia, load and save file dialog now properly remember previous folder (again) SDK: - added SGX SVObject (renamed SVG to SGX to avoid mix-up with W3C's SVG); which is the deprecated - yet easy to handle - SView Graphics Format and predecessor of RGFX v0.87 (03.04.09) ---------------- SView5: - added a little software update agent, which checks for software updates in the background (if network connection exists) and asks if you want to download it (via your internet browser); in future versions this may be disabled by preferences settings; however only a request from your PC is sent to the server anyway, and no data regarding your configuration (or anything else) v0.86 (02.04.09) ---------------- SView5: - file sub-type now also displayed in info frame (add. line) - initial path settings and atom information now dumped to logfile, even if log (re-)enabled after global appl. constructor - own convolution matrix filters now can be saved (and reloaded later); implemented for 3x3, 5x5, 7x7 and 9x9 - default path for load & save file dialogs now is [Documents and Settings\USER\My Documents\My Pictures] (or whatever this is equivalent to, on your system) in the beginning and from then on can be modified separately; filename is set to empty string; filter is "*.*" - Area Selection dialog now also has a Cancel button that works like the window close button - it's no longer possible to select an area of same size as the whole graphics, i.e. full image size - preview window now uses a scale version of images if suitable - preview window now indicates area selection status and selected area; can be toggled on off with "T" button (only shown if area selected) - if an area is selected an additional button is added to lower bottom area of the preview window which allows to change the selection; thus shown as "S" button SDK: - Convolve3x3 and ConvolveNxN both were buggy for 48 bit images; ConvolveFloat did work - logfile class now uses line buffering; ensure that debug data is written out even in case of unhandled exceptions - fixed bug in TIFF SVObject /w decoding uncomp. 24 bit data; only for the internal decoder - internal TIFF SVObject decoder now enabled by default for specific data that libtiff cannot handle as far as known - SVConfig class now able to save config data (acc. to SVClass path settings) - fixed wrong load path settings in initial SVConfig creation for SVObject and SVOperator; thus previously such files could not be located (and subsequently loaded) properly - made path separator ('\' vs '/') a property of SVClass v0.85 (30.03.09) ---------------- Common: - updated some .cpinfo config definition files SView5: - improved the program directory fix from v0.84 once again (finally) - added Options/Settings dialog, which allows the following for now: - change from unlimited undo to limited undo, set limit; limit subsequently also displayed in main window, if set (unlimited by default) - enable/disable compression of undo buffers, set compression level (disabled by default) - enable/disable logging and set loglevel (disabled by default) - undo buffers were not (always) properly deleted on program exit due to an object-lifecycle issue SDK: - added support for LZ77 (libzip) compression (type=2) in RGFX SVObject; this is more portable than the older XPK compression support; updated IFF-RGFX spec to v3.4 (available on website) - updated TIFF SVObject to latest version; now supporting 32, 48 and 64 bit /w alpha channel and partially metadata (beta) - fixed logging issue in JFIF SVObject (dropped msgs except prefix) v0.84 (28.03.09) ---------------- SView5: - when started from Desktop, program directory and predefined convolution matrix files could not be found v0.83 (28.03.09) ---------------- Common: - added more .cpinfo config definition files SView5: - setting a sub-format (e.g. GIF89a) other than the standard format for this file type (e.g. GIF87a for GIF) did not work - fixed GPS coordinate display in MetaInformation dialog - XMP display sometimes failed due to an object-lifecycle issue - fixed endian issue with IPTC reading in ILBM, RGFX, JFIF, PNG - added Ghost SVOperator in 3 flavours and /w fixed settings (yet) - updated GIF SVObject to latest version; supports 24 bit read/write - added Gamma correction /w settings dialog and preview SDK: - fixed GPS coordinate provisioning in JFIF SVObject - added Ghost SVOperator - updated GIF SVObject to latest version; 24 bit-enabled and with improved anim handling - added Gamma SVOperator v0.82 (23.03.09) ---------------- Common: - added more .cpinfo config definition files SView5: - if GPS information is present (i.e. metadata loading is activated, EXIF data is found in file and contains GPS information) the corresponding location now can be retrieved via OpenStreetMap.org via a corresponding button in the meta information dialog (otherwise disabled); you could provide sample files with GPS information in case it does not work for you - for multiline meta-information in single-line fields only the first line is shown now - added dialog & code to display XMP meta information (colored XML, in browser component) - added dialog & code to display IPTC meta information - added dialog to display EXIF meta information (yet to be implemented) - added Image Information menu under Image Processing; allows to reset ViewMode flags - added menu item that allows to strip meta information from image after loading (in memory) - added RGFX read and write support (uncompressed only) - UnDo now internally uses different format - after UnDo, displayed file type changes to "UnDone" SDK: - made use of static const in IFF code a little more often - improved IFF handling code (little additions to generic API emu layer) - added IFF metadata definitions - added missing INVALID_ID and ModeNotAvailable() macro - added missing EHB_KEY - added RGFX SVObject - added missing save format defines (SVOW_) - updated ILBM SVObject to latest version; now supporting 32, 48 and 64 bit /w alpha channel and full IFF metadata - fixed bug in HAM6/8 to 48 Bit conversion (AnyTo48Bit SVOperator) v0.81 (17.03.09) ---------------- Common: - added more .cpinfo config definition files SView5: - 64 bit display and 48 bit HDR image processing now really functional - fixed View class to correctly handle alpha rendering for 48 bit images; i.e. 64 bit ARGB display works correctly now - added Mosaic effect to Image Processing menu; yet with granularity choices 2/4/8/16/32 - added CutInverse operation to Shaping sub-menu - added ColorCycle operation to Color Components sub-menu; allows to re-arrange the order of channels (color components) SDK: - added Mosaic SVOperator - added CutInverse SVOperator - added ColorCycle SVOperator - added endian conversion function for 48 bit images - made all 48bit-aware SVOperators also endian-aware - fixed 16/48 bit read/write support in PNG (endian-awareness) - fixed 16 bit alpha handling in PNG (read) - fixed 16 bit grayscale handling in PNG (read; workaround) v0.80 (15.03.09) ---------------- Common: - forgot to mention for v0.79 that optimizer was enabled the first time - added more .cpinfo config definition files SView5: - added RedEyeFix to Image Processing menu, which is good for local red-eye reduction; do not apply to full image but specific areas only - added Mirror (Zero Point, X-Axis, Y-Axis) to Image Processing menu; most useful probably is Y-Axis mirroring, which allows to revert a typical mirror effect - added MirrorCopy (VertUpper, VertLower, HorizLeft, HorizRight) to Image Processing menu; nice effect if combined with other filters - added Brightness/Contrast functions, yet just with +/- 10% (abs/rel) options; and without preview; please just call it a few times and do a CTRL-Z if unsatisfied SDK: - added RedEyeFix SVOperator - added Mirror SVOperator - added MirrorCopy SVOperator - addede Brightness SVOperator - added Contrast SVOperator v0.79 (09.03.09) ---------------- Common: - now distributed as RELEASE instead of DEBUG; should run for everyone now - added 64bit VC++ 2008 runtime download link to website and Requirements.txt - there's now kind of a dummy online manual on the website SView5: - fixed online-manual link v0.78 (08.03.09) ---------------- SView5: - added "unlimited undo" functionality, with regards to image processing options; so you can try everything out and revert any changes easily if unsatisfied; this costs some performance, so it can be disabled by a dedicated checkbox (active by default) - prior printing, images are scaled to page size (orientation) now; if doing this manually via printer settings only, this may have failed - Resize dialog now supports aspect-aware scaling as well (default); offering 1..1000% scale factor for width and height´ - DiaShow now includes a simple Windows Media Player integration; if the filetype is .mpg/.mpeg/.mv1/.mv2/.avi/.wmv that file isn't attempted to be loaded as image internally but via an embedded Windows Media Player component - reset filename info in main window after DiaShow finished - display only filename in DiaShow, without path - View/DiaShow now do support a few more keys for back/forward; see "Usage.txt" for a full list - main window no longer resizable at runtime - added missing Sharpen.controlpad SDK: - RotateFree now has "sizechange" flag set v0.77 (07.03.09) ---------------- SView5: - added Scanner and Digital Camera support (via WIA); put under "File / Image Acquisition" menu - added FlipX - added FlipY - added RotateFree; not yet with full configurability SDK: - added LeftToRight (FlipX) SVOperator - added TopToBottom (FlipY) SVOperator - added RotateFree SVOperator v0.76 (01.03.09) ---------------- SView5: - View (and Preview) class now supports alpha-aware rendering also for 8 bit images with single- or multi-color transparency; this means you can easily visualize the difference in displaying a GIF/PNG/... with or without its transparent color(s) - doing a "Cut" to clipboard did not work (did only Cut as such) - added Cut/Copy/Paste Alpha menu items; implemented "Copy" yet; if an area is selected, only that part is copied - added "Sharpen" to Image menu, with little GUI; yet no preview - improved the yet a little misleading button design around the "Full Screen" vs. "Fixed Size" view options; added brief explanation of the different choices to Usage.txt - delete old filename when loading from clipboard or grabbing; display information that no real file is currently loaded SDK: - fixed InvertAlpha, which did not really work - added Sharpen SVOperator; allows range of 7..15 v0.75 (01.03.09) ---------------- NOTE: The first release of v0.75 had logging enabled (disabled again) Common: - added yet missing .cpinfo config definition files SView5: - added fallback to .NET image loader classes in case of internal loaders fail; this adds for example WMF and EMF support; for now the resulting image type is always reported as "BMP 24 Bit" (+ 8 Bit alpha) - View (and Preview) class now supports alpha-aware rendering - alpha-aware rendering can be enabled/disabled by checkbox on GUI - changed to use fully qualified config path names now - made sure that area selection prohibits negative width/height; i.e. selection rectangle always grows to the lower bottom corner - fixed issue with Convolve*/ConvolveNxN and Area selection - minor improvements at various places SDK: - SVClass holds rootpath (i.e. program dir) and config path (root/env) now - major rework of framework structure; all SVO/SVP classes now constructed with SVClass - SVObject/SVOperator hold fully qualified config paths now; replaced path class member - fixed issue with potentially outdated code in StripAlpha SVOperator (buildfix) - improved error handling insize Paste - changed to use fully qualified config path names now - fixed another conceptional issue in config handling, causing troubles - each SVO/SVP class may now have its own logfile - minor improvements at various places v0.74 (25.02.09) ---------------- SView5: - resize operations now cause area selection to be discarded - fixed bug with ConvolveNxN (div max range value was bogus) SDK: - Paste SVOperator now throws an error in case of size mismatches v0.73 (24.02.09) ---------------- Common: - enabled Area support SView5: - added Area Selection mechanism; once active, any kind of image processing operations will take place only on the selected area (in 24/48 Bit); selection works by mouse or keyboard or both - added interactive preview to Convolve, ConvolveFloat and ConvolveNxN, i.e. 3x3, 5x5, 7x7, 9x9 - added new sub-menu Image/Shaping; moved AutoBorder to there - added Crop filter to Image/Shaping menu - added Cut filter to Image/Shaping menu - Edit/Copy now either copies the graphics or the selected area - Edit/Cut now enabled; cuts either the selected area or asks which area to cut - file/gfxbuffer status handling now centralized - added additional picture info line for indication of picture flags, like Alpha, AlphaMap, TransColor, HAM6/HAM8, etc. - added support to display HAM6/8 images (before, this only worked after explicit conversion to 24/48 bit) - added Alpha Channel Manipulation menu under "Image Processing" - added ExtractAlpha filter to new alpha channel menu - added InvertAlpha filter to new alpha channel menu - added StripAlpha filter to new alpha channel menu - fixed minor bug in Convolve 7x7 and 9x9 blur init code ("load" was ok) - fixed WaitCursor related issue in preview code - fixed bug with setting maximum value for Div/Add in ConvolveNxN SDK: - GPS EXIF information for JPEG now includes ref (e.g. W/E) - fixed memtrash issue with reading of 24 Bit ILBM files - added ExtractAlpha SVOperator (8 bit alpha channel extraction) - added InvertAlpha SVOperator (invert 8 bit alpha channel) - added StripAlpha SVOperator (remove 8 bit alpha channel or transparency/maps) - added Crop SVOperator - added Cut SVOperator - added Paste SVOperator - added two more SVLog functions and some more verbose output to the class v0.72 (21.02.09) ---------------- Common: - minor fixes to previous history entries SView5: - fixed another issue with progressbar logic (thread-awareness) - reduced update frequency of progressbar - added load/save support for JPEG2000 - added selection option for sub save format (e.g. ILBM uncompressed) - GUI no longer displays full file path, but only file name - re-arranged GUI layout again slightly - added basic meta data support (Image menu -> Show EXIF/IPTC/XMP); currently it just shows boolean information (present Y/N) for the forementioned and plaintext for other metadata (e.g. author); for the latter some selected EXIF/IPTC data is transformed into other metadata (if not present), like e.g. author, GPS, comment, ... - added metadata load/save option to GUI (use with care, may have bugs) - after grabbing the screen content, WaitCursor remained active - clip temp file now put to proper temp directory (windows' docs+settings) - fixed marshalling of string conversion functions SDK: - introduced a number of new SDK flags - compiler compatibility fixes to PICT - added JPEG2000 SVObject, supporting JP2, JPC, PGX (read, write) - fixed memtrash issue in "ConvolveNxN" SVOperator (mainly 9x9) - fixed endian issue in JPEG file recognition code (req. for some images) - updated PNG SVObject to latest code; now supports alpha channel loading and saving, upto 48 (64) bit HDR and meta data load/save - updated JPEG SVObject to latest code; now supports meta data load/save - changed .cpd back to .controlpad everywhere - upgraded to latest libz 1.2.2 (for PNG, TIFF) - upgraded to libpng 1.2.29 (PNG) - added basic metadata handling capability to SVObject class (EXIF, IPTC, XMP, etc.) - made memory allocation functions more robust (NULL-proof) - added EXIF and IPTC support libraries (see Credits.txt) and abstract internal access functions - added tempdir and instance handling code to SVClass - fixed fundamental bug in SVObject class init/reset code - fixed fundamental bug in SVOperator class init/reset code - GfxBuffer memory management now uses central code everywhere - C libraries no longer compiled as C++ - added sophisticated log mechanism for debugging etc. - numerous fixes v0.71 (14.02.09) ---------------- SView5: - redesigned GUI, following need for additional image processing panel; while at it made other minor improvements (e.g. to size of preview window) - added autoconv option (made default) for image processing functions which require 24/48 bit input; so that manual conversion is not required - fixed progressbar logic, which did not really work as it should - clicking "X" (window close) button now really means "Cancel" for operations like Resize, Convolve, etc. - re-arranged and re-grouped all the menu entries under "Image" - now setting WaitCursor for longer lasting operations - now clears preview window in case of load error - made "Resize" dialog & logic more convenient - reorganized image processing menu a little - added "Convolve" (3x3) and "ConvolveFloat" (3x3) SVOperators; default is "Blur"; different matrix can be entered manually or loaded from disk - added "ConvolveNxN" SVOperator (5x5, 7x7, 9x9); default is "Blur"; different matrix can be entered manually or loaded from disk - the "Save Format" drop-down now only accepts pre-defined values (read-only) - the "View Mode" drop-down now only accepts pre-defined values (read-only) - included ENV dir with controlpad files (.cpinfo/.controlpad) for existing SVOperators SDK: - added "Convolve" SVOperator - added "ConvolveFloat" SVOperator - added "ConvolveNxN" SVOperator (5x5, 7x7, 9x9) - included 49 pre-defined 3x3 convolution matrix filters and 21 pre-defined NxN convolution matrix filters and 10 pre-defined 3x3 float convolution matrices v0.70 (07.02.09) ---------------- Common: - changed version numbering to be zero.dot.twodigit SView5: - About window no longer shown on startup when in "open with..." mode; forgot to ensure that for v0.6 - plus/minus key now works in View/DiaShow mode (scale up/down by 50%) - during DiaShow, pressing any keys will reset the timer - made "Resize" SVOperator available im "Image Processing..." menu as "Resize freely" with own handy dialog for entering new image size - made "ExtractRed" SVOperator available im "Image Processing..." menu - made "ExtractGreen" SVOperator available im "Image Processing..." menu - made "ExtractBlue" SVOperator available im "Image Processing..." menu - made palette optimization in "Image Processing..." menu use "OptimizePalette" SVOperator now instead of internal code - Rotate 180/270 now done directly using Rotate SVOperator config settings - swapped meaning of Rotate 90 and 270 to align it with View/DiaShow L/R key - now clears error text field again after next successful operation - now resets operator also after an unsuccessful operation - removed some now unused code - all pre-SVOperator non-OOP hacks gone now SDK: - added "OptimizePalette" SVOperator - added "ExtractRed" SVOperator - added "ExtractGreen" SVOperator - added "ExtractBlue" SVOperator - added "Resize" SVOperator - fixed misc/GetDepth8() to handle intervals as well - fixed bug in SVObject/SVOperator config reset routine; could lead to exception if object was re-used thereafter - SVConfig class now much more versatile - config file handling now using buffered IO, conf. depending on file size v0.6 (29.01.09) --------------- SView5: - included a standard installer/setup file (using Inno Setup, see Credits.txt) - "open with..." now works for SView5; it can be made default tool for files - already allows to be associated with .svg and .rgx by installer [future] - added Rotate buttons (L=left, R=right) to DiaShow mode toolbar - renamed "Abort" in DiaShow mode to just "X" - added "Quit" option via "Q" key - keys L, R and Q, X do work in DiaShow and also in plain view mode - added brief "Usage.txt" readme; yet just for the key shortcuts - no longer resets image to original image in case of an error from SVOperator - made scaling in "Image Processing..." menu use "Scale50" SVOperator - made dithering in "Image Processing..." menu use SVOperator; changed to use "Dither24Bit" instead of "DitherFix24" since the latter gives good results only for 8 bit (256 colors) currently - implemented generic config options handling (e.g. for Scale50: half/double size and for DitherFix: bestpen/floyd+depth) SDK: - added "Scale50" SVOperator - added workaround in config file handling which seems to be unicode-related v0.5 (24.01.09) --------------- Common: - split history into Common, SView5 and SDK part (also for v0.1-0.4) SView5: - About window now shown on startup, for 2s - View/Preview now supports 48 bit images - added 90/180/270 rotate operation in Image menu, using Rotate SVOperator - made "AutoBorder" SVOperator available im "Image Processing..." menu - made 24 bit conversion use "AnyTo24Bit" SVOperator - made grayscales conversion use "ExtractGrayScales" SVOperator - made antique conversion use "Antique" SVOperator - made malloc/free calls on gfxbuffer use appr. functions - added 48 bit conversion for test purposes (load/save not yet supported) - calling an SVOperator now is just a 2-liner - added ProgressBar support for SVOperator call-wrapper SDK: - added "AutoBorder" SVOperator - added "Rotate" SVOperator - added "AnyTo24Bit" SVOperator - added "AnyTo48Bit" SVOperator - added "ExtractGrayScales" SVOperator - added "Antique" SVOperator - added "DitherFix24" SVOperator - added "Dither24Bit" SVOperator - added Alloc/Clone/FreeGfxBuffer functions - added a number of additional AOS API implementations to SDK - added config file handling code to SVObject/SVOperator master class - added config list handling code to SVObjects/SVOperator master class - est. automatic config handling via master classes v0.4 (18.01.09) --------------- Common: - "Features.txt" now describes supported image formats (load+save) SView5: - program .exe now comes with SView5 icon instead of standard icon - formats which cannot be saved are not listed on GUI anymore - when saving, always the original graphics was saved, not the modified one (fixed) - save format was always JPEG (fixed) - progress bar was not updated for saving (fixed) - made "Blur" SVOperator available im "Image Processing..." menu - removed unused code and debug output SDK: - updated SDK with latest error codes and strings - updated SDK with 48 bit and alpha-aware includes - anyto24bit function now alpha and 48 bit aware - added function anyto48bit - added SVOperator framework and first SVOperator (Blur) v0.3 (05.01.09) --------------- SView5: - added Antique conversion in Image menu - added 1..8 bit BestPen and Floyd-Steinberg conversion in Image menu - added 1..8 bit OptimizePalette operation in Image menu - added Screenshot toolbar button ("Grab" - hotkey ALT+ESC) - added "Fullscreen" option to "View" settings (overriding fixed width/height) - added "Borderless" option to "View" settings (close window with Alt+F4 or "Abort" only) - now displays verbose error text instead of just the numeric code - temporary file(s) now distinct for multiple program instances - now deletes temporary file(s) on program exit v0.2 (02.01.09) --------------- SView5: - added some more links in Help menu - added Greyscale conversion in Image menu - added To-24-bit conversion in Image menu - added Half size operation in Image menu - added Double size operation in Image menu v0.1 (31.12.08) --------------- Common: - initial release