1. 17 Dec, 2022 1 commit
  2. 03 Dec, 2022 1 commit
    • Robert Sprowson's avatar
      [570] Fix for skipping unknown ILBM chunks · 9c951a02
      Robert Sprowson authored
      Chunks which are odd length have a byte of padding (to halfword align), but ChangeFSI
      wasn't taking this into account when skipping unknown chunks.
      In the example cited ('MAINBAR') it was &11F long.
      Version 1.68. Tagged as 'ChangeFSI-1_68'
  3. 21 Nov, 2022 1 commit
  4. 27 Sep, 2021 1 commit
    • Robert Sprowson's avatar
      Raise the image line/area limits to 8k · e20288dd
      Robert Sprowson authored
      Increase the max next slot to process lines to > 8k.
      Increase the max work area for internal images to allow 8k x 8k.
      Given a choice of creating a large dynamic area or using the app slot, prefer the latter.
      Fix bug reusing a stale area address when trying to process an image > max work area:
      1. ChangeFSI switches to buffer via file mode
      2. On completion of processing the buffer is freed, but the area address returned anyway
      3. Desktop front end tries to read the sprite name from the (now absent) area,
         leading to an abort in ReturnName in the kernel's sprite handler
      this would complete correctly if done via the command line.
      Tested with a 7200x5400 PNG. Now loads correctly on a large memory machine, and reports "Can't get enough memory to process image" on a 64MB Risc PC.
      Fixes https://www.riscosopen.org/forum/forums/1/topics/3977?page=5#posts-125179
      Version 1.66. Tagged as 'ChangeFSI-1_66'
  5. 13 Mar, 2021 1 commit
    • ROOL's avatar
      Fix for error with PNG write at 8bpp or lower · 16c77b96
      ROOL authored
        Outputting a PNG via the desktop frontend at 8bpp or lower would report
        an 'Undimensioned array' error because the colourindex arrays were missing.
        Temporarily create these during the save operation.
      Version 1.65. Tagged as 'ChangeFSI-1_65'
  6. 20 Feb, 2021 2 commits
    • ROOL's avatar
      Remove 2D templates, minor 16bpp improvements · 61dc9f3e
      ROOL authored
        * Remove support for pre 'NewLook' 2D templates
        * Correct interactive help messages for square/rectangular sprite output (broken in ChangeFSI-1_63)
        * Distinguish between 4k/32k/64k modes when the output mode is the current mode
      Version 1.64. Tagged as 'ChangeFSI-1_64'
    • ROOL's avatar
      Add PNG output option · a5eb5af3
      ROOL authored
        The front end adds a new 'PNG output' menu, taking its cues from the Sprite output menu, minus those options that don't make sense for Portable Network Graphics.
        Internally, the image is processed as though a sprite (this is needed because the output window is rendered by the OS and the OS has no built in PNG support) then converted to PNG on the fly during saving.
        The choices file is extended to save/recall the output window settings as appropriate.
        Submission for PNG bounty.
  7. 16 Nov, 2018 1 commit
    • Robert Sprowson's avatar
      Add 4k and 64k sprite output options · 8684555c
      Robert Sprowson authored
      Update ChangeFSI's 16bpp output code paths to convert to 4k and 64k sprites (as well as the pre existing 32k RISC OS 3.5 style).
      Also, simplify the sprite output dialogue a little by grouping the colours together and the DPI as an option, to halve the number of radio buttons.
      If ChangeFSI is run on a kernel without 4k/64k support, those two depths are greyed out in the GUI (since after processing the desktop frontend expects to SpriteOp plot them), however at the command line the 2 new depths are always available (as S12 and S16).
      ChangeFSI: Add the conversion code
      DesktopFE: Rework dialogue with fewer radio icons, add fading logic
      Version 1.63. Tagged as 'ChangeFSI-1_63'
  8. 30 Sep, 2018 2 commits
    • Robert Sprowson's avatar
      Further docs improvements · 8728ed25
      Robert Sprowson authored
      Output formats were only partially described, and supported
      * Mention IRLAM output format switch in the CmdBasUse docs, add an example to the tests
      * Explain what 'p15' is in CmdBasUse (was only explained in the input formats docs)
      * Prefer S15 to S16
      Delete support for C15 output. This appears to have been experimental as the resulting output had an embedded comment saying YUV but the data that followed was identical to a P15 RGB image. Also, ChangeFSI refused to load the C15 image it just wrote.
      Delete support for S24 output switch. This was an undocumented alias for S32.
      Add S15 as a possible output mode and prefer its use for 32k sprites - freeing up S16 for future 64k sprite support (and, logically S12 for 4k sprites).
      Retagged as 'ChangeFSI-1_62'
    • Robert Sprowson's avatar
      Docs improvement · 36ff2a02
      Robert Sprowson authored
      Mention how to release the sprite area when called as a library.
      Use TRUE/FALSE for things that are notionally documented as booleans.
      Version 1.62. Tagged as 'ChangeFSI-1_62'
  9. 24 Feb, 2018 1 commit
    • ROOL's avatar
      Docs update · 1294a015
      ROOL authored
        From User Guide feedback.
      Version 1.61. Tagged as 'ChangeFSI-1_61'
  10. 09 Nov, 2017 1 commit
  11. 04 Nov, 2016 2 commits
    • Robert Sprowson's avatar
      [236] Adjust scaling factors to avoid righthand/bottom edge conditions · 8b8e0392
      Robert Sprowson authored
      source/ChangeFSI: After rounding up the scaled output size, recalculate the div/mul factors so they produce a whole number of pixels instead of falling off the end of the input array and mixing in black.
      source/DesktopFE: Remove dead variable "safe%" and change tofitx/tofity to integers.
      Minor clarification in CmdBasUse documentation.
      Tested with a 100x100 green sprite, scaled by 5:3/5:3 and 3:7/3:7. Fixes ticket #236.
      Version 1.59. Tagged as 'ChangeFSI-1_59'
    • Robert Sprowson's avatar
      Split large source file into 2 · f17ade0a
      Robert Sprowson authored
      Move 1500 lines of the desktop front end into 'DesktopFE', to help see the distinction.
  12. 21 May, 2016 1 commit
    • ROOL's avatar
      Generate CFSI-JPEG locally · 26b528fc
      ROOL authored
        For fast JPEG decoding, simply call SpriteExtend's JPEG SWIs directly, rather than carry a cutdown version of the core of SpriteExtend.
        The !Run file RMEnsures check for UtilityModule 3.60, so there's always some version of JPEG SWIs available to call. If not, ChangeFSI falls back to decoding JPEGs via PBM files using its disc based copy of djpeg.
        Submission for the JPEG bounty.
      Version 1.58. Tagged as 'ChangeFSI-1_58'
  13. 06 Feb, 2016 4 commits
    • ROOL's avatar
      Remove test JPEGs · 6f37fc0e
      ROOL authored
        These 2 specimens are in no way unique.
        Not tagged.
    • ROOL's avatar
      Update cjpeg and djpeg to later versions · 9552fa88
      ROOL authored
        Using the IJG8d code for these disc based utilities gains all of the more recent JPEG extensions including arithmetic coding, when ChangeFSI falls back to using djpeg if the SpriteExtend based decoder can't cope.
        Makefile and jconfig.h updated to build on RISC OS.
        Submission for the JPEG bounty.
      Version 1.57. Tagged as 'ChangeFSI-1_57'
    • ROOL's avatar
      Import IJG8d sources · 7d856590
      ROOL authored
        This is a clean import of the reference code from JPEG 8d. One of the terms of use is to be able to show the changes made to the reference copy, so this commit serves as that point.
        Tagged as ChangeFSI-Import-IJG8d
        Doesn't build.
    • ROOL's avatar
      Move aside IJG5 and IJG6b sources · fbcec6a5
      ROOL authored
        Not tagged.
  14. 11 Jan, 2016 1 commit
  15. 06 Oct, 2015 2 commits
    • Robert Sprowson's avatar
      Add support for type 15 (extended type) and 16 (4k colour) sprites · 0d41cfbb
      Robert Sprowson authored
      Sprite type 16 is now accepted as an input format, by defining the appropriate 4:4:4 colour lookup tables.
      Type 15 class RGB is handled too with 1/2/4/8/12/15/16/32bpp sprites with and without RGB/BGR reversal.
      Other changes:
      Tighten up the check for BTPC files, it turns out BTPC 5 also exists but has an incompatible format, so rather than trying to decode them and fail, fail early.
      Mention the return code in Documents/CmdBasUse.
      Change real variable 'rgb' to integer since it's only holding a flag.
      Tested with a variety of special sprites, and a BTPC 5 file.
      Version 1.56. Tagged as 'ChangeFSI-1_56'
    • Robert Sprowson's avatar
      Add support for type 10 (64k colour) sprites and those with wide masks · 41d2f57d
      Robert Sprowson authored
      Sprite type 10 is now accepted as an input format, by defining the appropriate 5:6:5 colour lookup tables.
      Sprites with wide masks (8b alpha channels) are now also accepted, though like binary masks the mask is simply ignored. Previously these fell into a signed < 256 trap and were being mistaken for numbered modes which the OS then choked on.
      When showing the mode number in the "About this image" dialogue the number is now given in hex if it's not a numbered mode (0-255), this is fractionally more useful than decimal.
      Enlarged the "About this image" display fields per the Style Guide.
      Corrected the comments in the colour mapping code (lines 6551-6552, 7043-7044).
      Version 1.55. Tagged as 'ChangeFSI-1_55'
  16. 15 Jul, 2015 1 commit
    • Robert Sprowson's avatar
      Fix for CLI processing of very large sprites (>64MB) · 7f5bf70b
      Robert Sprowson authored
      When the output sprite is calculated to be too big to fit in the upper limit of dynamic area size, ChangeFSI would attempt to create the output to disc in smaller chunks. However, the size required by the sprite header was not accounted for, eg. a 5000x4000 32bpp image would come out as 80000000 exactly.
      Fix this by flushing the sprite header (and palette) before spooling out the image.
      Tested with a nobbled dynamic area size of 128k, used 8bpp 2000x1000 sprite as test and processed this to
      to exercise true colour, 256 palette, and bpp < 8.
      Note, the desktop front end isn't helped by this as it requires the image to all be in memory at once for the display step, but the CLI version can now output practically unlimited sprite files.
      Deleted call to PROCflushoutput in the JPEG/JPEGMONO code path, since addr% is never incremented it never gets called
      and the file that is being written to in o% is set type to FF9 at the end anyway. Tested with
      Made Wimp version check consistent with 2 other occurences elsewhere in the source for the same template-related feature.
      Version 1.54. Tagged as 'ChangeFSI-1_54'
  17. 13 Jun, 2015 2 commits
    • Robert Sprowson's avatar
      Add support for 24 (and 32) bpp PCX files · 43ad8e7b
      Robert Sprowson authored
      ChangeFSI's slightly lapse check of >= 8bpp header vetting for PCX meant it would try to load such files and fail with an EOF error.
      * Change header parsing to correctly deduce a 24 or 32bpp PCX is being handled, select the appropriate decoder
      * Add a sample 4 plane 8 bit PCX to the tests directory, created with ImageMagick
      * Docs updated
      Note that is seems highly unlikely from inspection of the code that 5/6/7bpp PCX files will come out the right colour since the PCX file format header only has space for 16 palette entries but ChangeFSI will continue reading off the end of the table into the start of the image data. However, no examples of 5/6/7bpp images could be found in the wild, so let sleeping dogs lie.
      Version 1.53. Tagged as 'ChangeFSI-1_53'
    • Robert Sprowson's avatar
      Adjust RMEnsure text · 0bf6bfbd
      Robert Sprowson authored
      Not tagged
  18. 12 Oct, 2014 1 commit
    • Robert Sprowson's avatar
      Flush the I cache after loading helper code in · 5cb1a6e1
      Robert Sprowson authored
      Code is loaded in two places using OS_GBPB to help ChangeFSI out, but is then called without flushing the instruction cache, nor has it since StrongARM days.
      This seemed to cause a problem where reprocessing a JPEG a second time caused random aborts on an ARMiniX (Cortex-A9).
      Thanks to Bob Latham for helping test this change remotely.
      Version 1.52. Tagged as 'ChangeFSI-1_52'
  19. 02 Sep, 2014 1 commit
    • Robert Sprowson's avatar
      Add support for Windows icon and cursor import · c6f0b231
      Robert Sprowson authored
      Windows 3 style ICO and CUR files are internally very similar to BMP files, so much of the hard work already existed.
      As with other multi-frame formats (GIF and Sprite for example) ChangeFSI simply picks the first one it finds in a file, even if there are several offered.
      In modifying the BMP importer, ChangeFSI no longer reads off the end of the palette for bitmaps which don't use all 2^bpp entries.
      Tested with a variety of icons and bitmaps up to the maximum size allowed 256x256 pixels.
      Documents updated.
      Version 1.51. Tagged as 'ChangeFSI-1_51'
  20. 08 Aug, 2014 1 commit
    • Robert Sprowson's avatar
      Add support for 2bpp BMP files and those with flipped scan order · a609304f
      Robert Sprowson authored
      Fix import of OS/2 BMP files
      WinCE is documented on MSDN as creating and displaying 2bpp bitmaps, so we might as well support them.
      Also, MSDN states that when the BITMAPINFOHEADER is in use the height is a signed number, with -ve values meaning the scan order is reversed (top down).
      Relatedly, the width and height in an OS/2 bitmap are only 16 (unsigned) bits, whereas ChangeFSI was reading in 32 bit values leading to grossly wrong dimensions, plus it uses packed 24 bit palette values not 32 bit like Windows.
      Docs updated and info fields made more verbose to report whether it's a Windows or OS/2 BMP.
      Now successfully opens all the 'good' bitmaps in BMP Suite http://entropymine.com/jason/bmpsuite/
      Version 1.50. Tagged as 'ChangeFSI-1_50'
  21. 04 Aug, 2014 2 commits
    • Robert Sprowson's avatar
      Add support for version 1.0 RLE compressed targa images · 47af4441
      Robert Sprowson authored
      Fix RLE decompression of 15bpp targa images
      In spec 1.0 RLE compressed data was allowed to span multiple scan lines, whereas spec 2.0 said the exact opposite (so that fast lookup tables into scan lines became possible). However, ChangeFSI could only handle RLE decompression where the data exactly decompressed to one line long, otherwise getting stuck in a REPEAT UNTIL loop until overrunning the end of the line buffer.
      A new PROCtarga (since it's common to all 5 possible pixel depths) loads lines, and optionally suspends decompression once one line has been fetched to allow continuation on the next line.
      A truncating divide when calculating 'step24' meant that 15bpp TGA's only got allocated half the memory they needed, leading to a data abort. Now, 8/15/16/24/32bpp get the right allocation.
      Docs updated.
      Version 1.49. Not tagged
    • Robert Sprowson's avatar
      Add missing targa palette entry size handling · ecd55cb3
      Robert Sprowson authored
      The targa (TGA) reader had an oddly empty "ELSE" clause in the code that reads palette entries, so while 24b entries worked the 16b and 32b variants didn't. This would typically show an all black image (all palette entries uninitialised).
      Tested with some sample 16b images, 32b ones should be right by inspection.
      Version 1.49. Tagged as 'ChangeFSI-1_49'
  22. 02 Aug, 2014 1 commit
    • Robert Sprowson's avatar
      Add support for 32bpp Sun raster files · d1156009
      Robert Sprowson authored
      Fix support for 24bpp RLE compressed Sun raster files
      The former is merely 24b data on 32b boundaries (the format doesn't support transparency), so this need not be rejected by ChangeFSI.
      The latter caused a data abort because the decoder assumed all RLE data could be handled by FN1100 but in the 24bpp case there's 3 times more data than expected so you fall off the end of memory.
      Test image for type 3 Sun rasters produced as these seem hard to find.
      Now correctly decodes all the sample images at
      Docs updated.
      Version 1.48. Tagged as 'ChangeFSI-1_48'
  23. 04 Apr, 2014 1 commit
    • Robert Sprowson's avatar
      Enlarged a couple of writable icons · 1a4fa8ca
      Robert Sprowson authored
      Some of the dialogues used a mixture of 48 & 52 OS unit boxes, changed to 52 OS units to match !ResEd defaults. Nudged some text around where display in the system font meant it overlapped.
      Version 1.47. Tagged as 'ChangeFSI-1_47'
  24. 15 Jan, 2014 1 commit
    • Robert Sprowson's avatar
      Flag unrecognised critical tags, but allow ancilliary tags between IDAT and IEND · fd01e328
      Robert Sprowson authored
      PNG spec 1.2, section 4.3, turns out tIME iTXt tEXt zTXt have no ordering constraints. Images with these after the IDATs but before IEND were being rejected, plus it's possible to encounter private ancilliary chunks - so it's safest just to let them all through.
      Unexpected critical chunks are now explicitly faulted.
      Version 1.46. Tagged as 'ChangeFSI-1_46'
  25. 11 Jan, 2014 1 commit
    • Robert Sprowson's avatar
      Minor fixes · bd8086c1
      Robert Sprowson authored
      Having selected JPEG output format, you'd get an error clicking on one of the radio icons on the sprite output format window.
      Look for BZERO and BSCALE in FITS astronomical image files, rather than subtracting a hardwired 0x8000 - this tended to result in any 16bpp images coming out solid green.
      Mirror the FITS image output in the X axis so they're the right way up.
      Version 1.45. Tagged as 'ChangeFSI-1_45'
  26. 08 Jan, 2014 3 commits
    • Robert Sprowson's avatar
      Add WBMP reading ability · ab4eef8c
      Robert Sprowson authored
      From reading WAP WAE 1.1 spec, tested with some sample images from the internet.
      Test image added to 'tests' directory for reference.
      Version 1.44. Tagged as 'ChangeFSI-1_44'
    • Robert Sprowson's avatar
      Add PNG reading ability · 30964e0b
      Robert Sprowson authored
      Also increased the minimum work area of the uutput window so the up/down adjusters don't get squashed with very small images.
      Tested with 174 test PNGs from the PNG test suite.
      Version 1.43. Tagged as 'ChangeFSI-1_43'
    • Robert Sprowson's avatar
      Fix for prevalent 'Outside file' errors · 59019698
      Robert Sprowson authored
      With small image files ChangeFSI would often report 'Outside file' as its detection code tried to read from around offset 512 within the file - often longer than the image itself. The extent is now checked before attempting to look for signatures that far in.
      Other minor changes:
      * Removed the need to pass a block of scratch memory to PROCcachesize
      * Command line use is in 'CmdBasUse' not 'FSIinfo' within the docs
      * Moved flag 666 image parser up into numerical order
      * Don't pass an argument to SWI Hourglass_On
      * Inline FNfits
      * Make the uniform palette function more general rather than hardwired for 256 entries
      Tested briefly, still works.
      Version 1.42. Tagged as 'ChangeFSI-1_42'
  27. 12 Dec, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for unaligned load processing 48 bit image data · 37d93803
      Robert Sprowson authored
      In mappix (2 occurrences) for 48 bit data when step24=6 ChangeFSI relied on the unaligned load rotate, this is now split out for machines that can't do that.
      Don't bother looking for jcompmod in ChangeFSI$Dir - it's never been supplied there.
      Line 6934: fix stack imbalance.
      Rehomed a few comments with the lines to which they refer, added a few comments.
      Built, but not tested.
      Version 1.41. Tagged as 'ChangeFSI-1_41'
  28. 08 Dec, 2013 1 commit
  29. 11 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix low colour output · a212eba0
      Jeffrey Lee authored
        source/ChangeFSI - Fixed a couple of issues that could prevent low colour (i.e. <=256) output from working in some situations:
        - Fixed bug in default palette reading code that would cause it to try and allocate silly amounts of memory depending on the current mode (e.g. FNdim of 0 bytes if loading 16 colour palette while in 32bpp mode)
        - Reworked colour conversion code so that the pixel index and image base pointer are in two seperate registers instead of being in one. The old code had a habit of failing with an "image too complex" error when producing <256 colour output, because (base%<<(3-dest_log2bpp)) could easily overflow a 32bit int, especially when you consider that a dynamic area is used to store the target image.
        Tested on RISC OS 5.21 Iyonix, converting a test image to all the different output colour depths & "special" modes.
      Version 1.40. Tagged as 'ChangeFSI-1_40'