1. 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'
      8b8e0392
    • 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.
      f17ade0a
  2. 21 May, 2016 1 commit
    • ROOL's avatar
      Generate CFSI-JPEG locally · 26b528fc
      ROOL authored
      Detail:
        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.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.58. Tagged as 'ChangeFSI-1_58'
      26b528fc
  3. 06 Feb, 2016 4 commits
    • ROOL's avatar
      Remove test JPEGs · 6f37fc0e
      ROOL authored
      Detail:
        These 2 specimens are in no way unique.
      Admin:
        Not tagged.
      6f37fc0e
    • ROOL's avatar
      Update cjpeg and djpeg to later versions · 9552fa88
      ROOL authored
      Detail:
        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.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.57. Tagged as 'ChangeFSI-1_57'
      9552fa88
    • ROOL's avatar
      Import IJG8d sources · 7d856590
      ROOL authored
      Detail:
        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.
      Admin:
        Tagged as ChangeFSI-Import-IJG8d
        Doesn't build.
      7d856590
    • ROOL's avatar
      Move aside IJG5 and IJG6b sources · fbcec6a5
      ROOL authored
      Admin:
        Not tagged.
      fbcec6a5
  4. 11 Jan, 2016 1 commit
  5. 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'
      0d41cfbb
    • 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'
      41d2f57d
  6. 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
        S32,90,90
        S16,90,90
        28d
        28
        27
      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
        JPEG75
        JPEGMONO75
      
      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'
      7f5bf70b
  7. 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'
      43ad8e7b
    • Robert Sprowson's avatar
      Adjust RMEnsure text · 0bf6bfbd
      Robert Sprowson authored
      Not tagged
      0bf6bfbd
  8. 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'
      5cb1a6e1
  9. 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'
      c6f0b231
  10. 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'
      a609304f
  11. 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
      47af4441
    • 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'
      ecd55cb3
  12. 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
        http://samples.libav.org/image-samples/sunrast/
      Docs updated.
      
      Version 1.48. Tagged as 'ChangeFSI-1_48'
      d1156009
  13. 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'
      1a4fa8ca
  14. 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'
      fd01e328
  15. 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'
      bd8086c1
  16. 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'
      ab4eef8c
    • 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'
      30964e0b
    • 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'
      59019698
  17. 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'
      37d93803
  18. 08 Dec, 2013 1 commit
  19. 11 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix low colour output · a212eba0
      Jeffrey Lee authored
      Detail:
        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.
      Admin:
        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'
      a212eba0
  20. 15 Jul, 2013 1 commit
    • Robert Sprowson's avatar
      Add support for local colour tables in GIFs · 9146f67e
      Robert Sprowson authored
      ChangeFSI previously only supported global colour tables, but will now look at the local colour table bit too.
      Additionally, the info report was looking at the wrong bitfield when describing the log2bpp - always showing 8 (because it was showing the colour table size).
      
      Version 1.39. Tagged as 'ChangeFSI-1_39'
      9146f67e
  21. 12 May, 2013 1 commit
  22. 28 Oct, 2012 1 commit
    • Robert Sprowson's avatar
      Add interactive help to ChangeFSI · 45d13432
      Robert Sprowson authored
      Also
       * Trim out some redundant statements in FNdeducemode which look to have been used when JPEG was in the sprite output dialogue
       * Likewise, fix keyboard navigation in sprite output dialogue to not try to go via the (non existant) JPEG quality writeable
       * Add 'smoothing' to keyboard navigable writeables in processing dialogue
       * Bump up version number reported in Wimp_Initialise to allow interactive help messages on menus to be passed
       * Uncapitalise iconbar menu second words
      
      Version 1.37. Tagged as 'ChangeFSI-1_37'
      45d13432
  23. 27 Oct, 2012 3 commits
  24. 25 Sep, 2012 1 commit
    • Robert Sprowson's avatar
      Update Shell code from Library-1_58 · e0f3c425
      Robert Sprowson authored
      * Now does an OS_SynchroniseCodeAreas before jumping to Shell_Job (and back again)
      * Removed the attempted Arthur 1.20 support - it was attempting to support this using the 'X' form of XOS_ChangeEnvironment, except that that SWI name wouldn't lookup on Arthur. Doh!
      
      Version 1.34. Tagged as 'ChangeFSI-1_34'
      e0f3c425
  25. 15 Sep, 2012 1 commit
    • Robert Sprowson's avatar
      Documentation enhanced · a0ac06f2
      Robert Sprowson authored
      * Working example of using ChangeFSI as a library added
      * Note about not freeing memory when worklimit%=0 added to docs
      Retagged as ChangeFSI-1_33.
      a0ac06f2
  26. 03 Sep, 2012 1 commit
  27. 27 Aug, 2012 1 commit
    • Robert Sprowson's avatar
      Fix processing of new format sprites with palettes · 338016d7
      Robert Sprowson authored
      * Function 'newropal' was treating palette entries as &00BBGGRR when they are stored as &BBGGRR00, leading to generally wrong colours all round.
      * Also, 256 entry palettes were not distinguished from 64 entry palettes, so files from Paint (which seems to prefer 64 entry ones) were generally black due to reading of the end of the palette.
      * Added text to the info string stating if the input sprite contained a palette.
      * Fixed template buffer overrun when filename is truncated to 12 letters (to formulate a sprite name), the template only reserved 12 letters and hence use of '$' operater in BASIC overran and messed up the border validation.
      Tested with a number of 180dpi 'new' format sprites in 8bpp and 4bpp with and without palettes.
      
      Version 1.33. Tagged as 'ChangeFSI-1_33'
      338016d7
  28. 11 Aug, 2012 1 commit
    • Robert Sprowson's avatar
      Minor rework to run on RISC OS 3.6 as advertised · 92a964c2
      Robert Sprowson authored
      During 32 bitting some MRS/MSRs were added, but these don't assemble with the BASIC that is implied by the RMEnsure in !Run.
      Changed 25 occurrences to use a macro instead.
      Removed attribution from !Run/!Boot copied to the user.
      Some dead definitions removed from the makefile.
      
      Version 1.32. Tagged as 'ChangeFSI-1_32'
      92a964c2
  29. 14 Jan, 2012 1 commit