1. 30 Nov, 2013 1 commit
    • Jeffrey Lee's avatar
      Add support for *iconspriting of alpha-masked sprites. Fix icon... · 03e27cbe
      Jeffrey Lee authored
      Add support for *iconspriting of alpha-masked sprites. Fix icon shading/inverting to work with true colour sprites.
      
      Detail:
        Options/s/!Default, s/NewSWIs, s/Wimp01:
      
        Updated ROM sprite find code, *IconSprites and Wimp_Extend 13 to understand a new spritefile suffix.
        If the Wimp detects that RISC OS Select style alpha masked sprites are supported, and we're not using the mode 23 sprites, then the code will enable support for alpha masked sprites of the form !SpritesA1, !SpritesA2, !SpritesA, etc. Alpha-masked sprites are only looked for when looking for square pixel sprites or just before looking for the default sprites. This means the full search pattern for (e.g.) a !Sprites21 mode would be as follows:
      
        !Sprites21  (original mode)
        !SpritesA2  (next squarer mode, alpha sprites)
        !Sprites22  (next squarer mode)
        !SpritesA   (default alpha sprites)
        !Sprites    (default sprites)
      
        Like with !Sprites11 support, this feature can be toggled off via the SpritesA option if necessary.
      
        s/Wimp01, s/Wimp04:
      
        Updated icon plotting code (wimp_SpriteOp_putsprite and calculateinverse) to allow true colour sprites/icons to be rendered shaded/inverted.
        For this to work the Wimp needs a version of SpriteExtend which supports colour mapping (specifically it checks for the relevant ROOL version number).
        The colour mapping function which is used to build the translation tables used for shading/inverting palettised sprites is too slow to be sensibly used on a per-pixel basis, so the first time a shaded/inverted true colour sprite is requested the Wimp will generate a set of lookup tables which can be used by a much simpler colour mapping routine.
        To keep memory usage down these lookup tables only use 4K colours each; however the quality isn't always that great and so this may need revising in future.
      
      Admin:
        Tested on BB-xM
      
      
      Version 5.34. Tagged as 'Wimp-5_34'
      03e27cbe
  2. 01 Jun, 2013 2 commits
    • Robert Sprowson's avatar
      Add flexible scheme to allow non-grey/opaque toolsprites · 2137a784
      Robert Sprowson authored
      The Wimp can now accept toolsprite sets which have precalculated (non default) colour translation tables supplied by the designer.
      This allows the link between window template colour and displayed tool colour to be reestablished when the tools aren't grey (previously, the Ursula Wimp would only tint greys).
      For full design details see Doc/ToolTables.
      An example test set, TestO/TTTTest is provided. This is the 'Newlook' set but with a splotch in the corner of each sprite which is then replaced by the hex of the Wimp colour being requested.
      Detail:
       Wimp01.s: New workspace requirements
       Wimp04.s: Pull out the RGB to greyscale function so it can be used elsewhere
       Wimp10.s: New tool table support code
      
      Fixes ticket #323.
      Also introduces a disc variant (with the extra EX0 EY0 resolution) of the 'Steel' theme, thus making it generally available.
      
      Version 5.30. Tagged as 'Wimp-5_30'
      2137a784
    • Robert Sprowson's avatar
      Fix for corrupt register in pushfontstring with password-style substitution · 752b3a8b
      Robert Sprowson authored
      When CnP=TRUE but UTF8=FALSE the code path through pushfontstring for icons using the 'D' validation string would use R11 as a temporary without having preserved it (the UTF8 case preserves it because it uses R11 as a bitmask of substitutes).
      Changed to always preserve R11, the routine is so huge one extra pushed register isn't going to slow it down measurably.
      Adjusted options files now this combination is safe.
      
      Tagged as Wimp-5_30-pre1.
      752b3a8b
  3. 06 May, 2013 1 commit
    • Robert Sprowson's avatar
      Refinements to disc based targets especially · a30a2489
      Robert Sprowson authored
      Previous attempt to disable Sprites11 support for 3.10 and 3.50 hadn't spotted it was reenabled in the common options, also the Sprites11 switch was also tied up in Wimp$IconTheme support.
      Title bars would flicker when picked up when using a tool sprite set with no 'p' pushed equivalents on RISC OS 4.0x due to screen cache.
      Makefile now installs a default set of tools & sprites when target is ThemeDefs.
      CLI limit reduced to 256 pre Ursula to save RAM.
      
      Options/!Common:
        Promote Sprites11 switch into !Default
        Remove fixrmatools
      Options/!Default:
        Sprites11 true by default
        LongCommandLines true by default, false on targets pre Ursula
        Remove ServiceCallTable (harmless to have it in all cases)
      NewSWIs.s:
        Enable Wimp_Extend 13 all the time
      Wimp01.s:
        Reduce RMA use by vital 1.5k for non long command line case
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt ServiceCallTable switch permanently
      Wimp02.s:
        Comments ammended
      Wimp07.s:
        Range of ADR
      Wimp10.s:
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt :LNOT: fixrmatools switch permanently
        Supress title bar sprite plotting when none of the sprites exist
      
      Version 5.25. Tagged as 'Wimp-5_25'
      a30a2489
  4. 04 May, 2013 1 commit
  5. 03 May, 2013 1 commit
    • Robert Sprowson's avatar
      Slacken pointer checks · 42e284a3
      Robert Sprowson authored
      The pointer comparison checking required when running in a system with > 64M memory was tightened up from Wimp-4_75 to Wimp-4_76, but to allow the module to target pre RISC OS 5 systems an option to relax those checks is required.
      Each check has been revisited and where appropriate demarked with a "AcceptLoosePointer" macro, which just remaps the pointer into the stricter form and carries on. In the strict checking case, the macro reduces to nothing.
      
      Detail:
      Add AcceptLoosePointers switch.
      Retire singular use of StrongARM switch (calling XOS_SynchroniseCodeAreas is harmless pre StrongARM anyway).
      Rename Ursula_RPC options to RO400.
      Put duplicate documentation in the attic.
      Allow -2 or -1 as the iconbar handle in Wimp_ResizeIcon (ticket #203).
      Tighten up the list terminator check in the DebugMemory switch of Memory.s
      
      Tested on RISC OS 3.10 (emulated), 3.50, 3.60, 3.70, 4.02.
      
      Version 5.24. Tagged as 'Wimp-5_24'
      42e284a3
  6. 10 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Build fixes for variants pre RISC OS 5 · fc22d68f
      Robert Sprowson authored
      Minor fixups as part of univeral !Boot work.
      Options no longer ASSERT on International_Help (which is a definition exported by the kernel, rather than a build switch), and instead define a switch which is true for > 3.50.
      Non UTF8 supporting case has simple substitutes for Wimp_TextOp.
      Legacy_DomainId and LegacyIRQsema no longer cause NULL pointer dereference.
      MOVeQ => MOVEQ to placate ObjAsm.
      
      Ursula_RPC version built and used briefly on RISC OS 4.02 host. No other run time testing.
      
      Version 5.22. Tagged as 'Wimp-5_22'
      fc22d68f
  7. 26 Apr, 2005 1 commit
  8. 24 Jan, 2003 1 commit
  9. 20 Dec, 2002 1 commit
    • Ben Avison's avatar
      Bugfixing, Sprites11 support and stretchy command windows. · 67775716
      Ben Avison authored
      Detail:
        * Bugfix: the contents of the pollword returned in the poll block by
          a PollWordNonZero event, where the pollword was flagged as high
          priority, was rotated by 8 bits due to a internal top-bit-set
          workaround. This no longer happens. (This was causing OmniClient never
          to complete initialisation on my machine.)
        * Extended the alternate resolution icon scheme for RAM/ROM sprites and
          toolsprites to be multi-pass, enabling the use of extra sprite sets for
          weird modes (most notably EX0 EY0 ones). After '23' or '0' suffixes
          (the latter still only applies to toolsprites), the suffix for the
          equivalent polychromatic resolution is tried. After rectangular
          suffixes, the next larger squarer suffix is tried. After '11', '22' is
          tried. Failing all of these, a match is attempted with no suffix.
        * The command window is now scaled and centred to match the current screen
          mode - up to a maximum size of 1280 x 1024 OS units.
        * Fixed the *WimpVisualFlags help strings (again).
        * Fixed 'task2' debugging to know about the structure of the SVC stack on
          32-bit machines.
        * Added support for generation of GPA files.
      Admin:
        Tested on Tungsten.
      
      Version 4.84. Tagged as 'Wimp-4_84'
      67775716
  10. 30 Oct, 2002 1 commit
    • Ben Avison's avatar
      Merged in RISC OS 4.02 changes (including ROM patches). Also som bugfixes. · 3b1e336c
      Ben Avison authored
      Detail:
        RISC OS 4 changes:
        * Font blending for desktop font (based on NC code, but now configurable)
        * 3-D window/menu/iconbar borders
        * Textured menu backgrounds
        * Loss of rubout box in unfilled text+sprite icons
        * *WimpVisualFlags controls various aspects of cosmetic changes above
        * Iconise button "slot" glyph slightly shorter (but only adopted in the RO400
          Resource directory)
        * Command window has front-window flag set
        * Byte at +39 of the window block has gained two new flag bits:
            bit 2 set => this window must never be given a 3D border
            bit 3 set => this window must always be given a 3D border
            (note that ResEd erroneously created windows with both bits set,
            this case is treated as though both bits were clear)
        * Another two colour specifiers on the end of C validation string command
          for icons controls the foreground and background colours to be used when
          the icon is selected
        * Pointer shape is correctly reprogrammed by the creation of icon
          underneath it
        * Full stops in writable icons are treated the same as spaces from the
          point of view of cursor navigation
        * spritesize routine returns a size of 0 if the sprite didn't exist
          (probably fixes some rendering problems)
        * Adjust-click on back icon brings window to front
        My changes:
        * DeleteRight turned on
        * Icon bar title background is set to default in all resource sets (avoids
          translation table recalc)
        * Error box title now cream across all resource sets
        * RISC OS 4 changes made 32-bit compatible / high addresses safe
        * Undocumented FullIconClipping option disabled
        * Command help made consistent for internationalised and non-
          internationalised builds
        * WimpVisualFlags defaults made sensible
        * Menu side width affected by ThreeD option at *run* time not assemble time
        * Right-clicking on menus with writable items no longer data aborts
        * Auto-opened menus are now at RHS of current icon (matches RISC OS 3.1)
        * Colour menus were knackered unless menu tiling was enabled
        * Fixed a bug whereby adding messages to a task that wanted all messages
          actually caused it to lose all other messages. The RISC OS 4 fix for
          this didn't work
        * Fixed bug introduced in version 4.76: tasks that wanted no messages got
          all of them
        * Autoscrolling is updated every 8 cs rather than every 12 cs
        * Added menu texture to pre-RISC OS 4 sprites files
      Admin:
        Tested on Tungsten.
      
      Version 4.78. Tagged as 'Wimp-4_78'
      3b1e336c
  11. 23 Oct, 2002 1 commit
    • Ben Avison's avatar
      Given a good thrashing. · c8e139f1
      Ben Avison authored
      Detail:
        All pointers passed to the Wimp (mode selectors, menus, sprite areas,
        palettes, pollwords, validation strings, message lists, routines etc etc)
        in any of its APIs can now be anywhere within the 32-bit address range.
        In general, whenever "<= 0" was accepted as a null condition, the value
        must now be either 0 or -1. It should also be tolerant of system memory
        areas (supervisor stack and RMA) being in the top half of memory.
        Also:
        * Default next slot now a build option - Ursula builds (eg Tungsten) use
          1024K instead of 640K
        * Ursula builds no longer have a build variant in the help string
        * Autosenses ROM location
        * CR-LFs in *Configure messages replaced with LF-CRs
        * Added Iyonix resources (currently based on Morris4)
        * Morris4 sprites files have gained file_lxa, small_lxa, file_unf,
          small_unf and lo!help sprites
        * Ursula sprites files have gained lo!help sprites
        * *WimpSlot can take memory sizes in megabytes or gigabytes
      Admin:
        Tested on a "traditional" memory-mapped Tungsten.
      
      Version 4.76. Tagged as 'Wimp-4_76'
      c8e139f1
  12. 14 Sep, 2001 1 commit
    • Ben Avison's avatar
      Commit of my Wimp changes that have trickled in over the last four months. · 69d67881
      Ben Avison authored
      Detail:
        * The pointer passed to Wimp_CommandWindow can now be top-bit-set.
        * Bugfix to Wimp_CommandWindow: if the current task was uninitialised,
          or initialised as a non-multitasking task, then although entering the
          CommandWindow would restore escape condition generation to the way it
          was before entering the desktop, exiting the CommandWindow did not
          reset escape condition generation to the default desktop state (which is
          for escape condition generation to be disabled).
        * Escape condition generation is disabled for the duration of SWI
          Wimp_ReportError (instead of setting the default escape key for the
          duration). The previous state is restored on exit.
        * Added a minimal environment for the service call
          Service_ErrorButtonPressed, so that claimants can call OS_Exit without
          leaving the global Wimp error box in an undefined state.
        * In the Wimp_Poll loop, if there are no events to deliver to any tasks
          (not even null events), then rather than sitting in a SVC mode loop,
          the Wimp now triggers transient callbacks. This is particularly
          important in order not to halt all activity in the Internet stack.
          The option LeaveOS can be set to make the Wimp use the as-yet
          unimplemented SWI OS_LeaveOS for this purpose; this is currently unset
          for all builds.
        * By (persistent) request, reinstated the old iconbar popping code,
          though it is currently a build switch that is turned off for all builds.
      Admin:
        Tested on a Risc PC.
      
      Version 4.69. Tagged as 'Wimp-4_69'
      69d67881
  13. 16 Mar, 2001 1 commit
  14. 20 Oct, 2000 1 commit
    • Ben Avison's avatar
      Shock horror - a new feature for the Wimp! And some housekeeping too. · d7d18819
      Ben Avison authored
      Detail:
        * Added new functionality for menu trees: submenus can now be opened by
          clicking on their parent menu item. This is particularly aimed at
          touchscreen devices, and is configurable via the new *Configure keyword
          WimpClickSubmenu.
        * Change to the menu inactivity timeout behaviour after auto-opening of
          submenus (either by hovering over the parent menu item or by the new
          click-to-open functionality): although all hover operations are still
          ignored for this period, any click operations *will* now be obeyed.
        * Corrected numerous misleading comments in the menu handling code.
        * Added some suspiciously absent ALIGNs in the *Configure keyword handlers.
        * Uses new ASCII case-forcing macros so there are now fewer warnings
          printed during assembly (and it should run faster now too).
        * Added an AREA directive so that objasm's -ABS switch is no longer needed.
        * Standardised ErrMem token across all Messa...
      d7d18819
  15. 25 Apr, 2000 1 commit
    • Kevin Bracey's avatar
      Made 32-bit compatible. · 1bb3b9d0
      Kevin Bracey authored
      Detail:
        Lots of little changes throughout a lot of source.
      Admin:
        Appears to work - not stress tested with things like lots of tasks, big
        transfers, and all the other things that tend to go wrong.
      
      Version 4.47. Tagged as 'Wimp-4_47'
      1bb3b9d0
  16. 07 Oct, 1999 1 commit
  17. 03 Aug, 1999 1 commit
    • Ben Avison's avatar
      Now calls recalcmodevars on Service_ModeChanging instead of Service_ModeChange · 9a878980
      Ben Avison authored
      (this was clashing with the Interlace module at one point during STB
      development, and had the potential to trip us up again in the future).
      
      No longer produces build errors if some resources are absent.
      
      Corrected token in Japan messages file to use valid UTF-8 character.
      
      Service call table now included by default.
      
      Version 4.23. Tagged as 'Wimp-4_23'
      9a878980
  18. 29 Apr, 1999 1 commit
  19. 23 Nov, 1998 1 commit
    • Ben Avison's avatar
      Added options file for Ursula_RiscPC builds: similar to Ursula options file,... · 109210f0
      Ben Avison authored
      Added options file for Ursula_RiscPC builds: similar to Ursula options file, but without UTF8 support (it's unlikely the rest of the modules will be updated sufficiently for this to be useful) and without the development cut-n-paste support. Also removed module postfix (we don't want "Ursula" appearing during a *Help Modules).
      
      Retagged as bavison_Wimp-4_11.
      109210f0
  20. 09 Nov, 1998 1 commit
    • Ben Avison's avatar
      Optimisation to new WimpSymbol substitution code: in icons containing fonts... · af05965b
      Ben Avison authored
      Optimisation to new WimpSymbol substitution code: in icons containing fonts other than the desktop font, the substitution table is only calculated when a symbol character is encountered.
      
      Embryonic cut-n-paste support introduced (currently in desktop builds only):
        * workspace is allocated and initialised;
        * extended Wimp_GetCaretPosition implemented;
        * pushfontstring adapted to allow insertion of arbitrary control sequences in
          font strings (to allow selected text to be plotted in inverted colours).
      Inverted, unfilled text icons now work properly again in <256-colour modes.
      Reworked NC error box code: see Doc.IconHigh.
      
      Version 4.11. Tagged as 'Wimp-4_11'
      af05965b
  21. 23 Oct, 1998 1 commit
    • Ben Avison's avatar
      Adapted assembly process so that the choice of Options file (previously based... · 26369fa5
      Ben Avison authored
      Adapted assembly process so that the choice of Options file (previously based purely on the "System" variable) can be overridden by passing "OPTIONS=foo" as an argument to either MkRom, or to amu/amu_machine directly, or indirectly, by specifying it in the components file for a build. To accomplish this, it was necessary to switch from using aasm to objasm - hence the large number of source files affected in this commit.
      
      Version 4.09. Tagged as 'Wimp-4_09'
      26369fa5
  22. 20 Oct, 1998 2 commits
    • Ben Avison's avatar
      UTF-8 support from previous version switched in; additional alphabet-... · 2c759475
      Ben Avison authored
      UTF-8 support from previous version switched in; additional alphabet- conditional support added as follows:
      
      * Correctly converts character index returned from Font_FindCaret into byte
        index into raw string.
      * Left-arrow, right-arrow, delete-left and delete-right now act as far as
        the next character boundary, instead of to the next byte.
      * Menu item text justification works again (it relies on overwriting spaces
        with hard space characters, which are two-byte characters in UTF-8).
      * General key handling code has been rewritten. The Wimp now has three
        internal key input buffers - one each for taking keyboard-generated,
        task-generated, and function-key-generated strings. Each input buffer is
        processed in chunks of one character, rather than one byte; malformed
        UTF-8 characters are rejected, so tasks don't have to worry about them
        (simplifying their character-handling code). There is also a key output
        buffer, to ensure that (UTF-8) sequences of Key_Pressed events are not
        broken up.
      * As a result of the above, multiple calls to Wimp_ProcessKey are now
        possible between calls to Wimp_Poll. Previously, this resulted in bytes
        getting jumbled up - making it useless for input of UTF-8 characters.
      * Multi-byte characters are inserted into writeable icons in one go, so you
        don't see a brief flicker of the "malformed character" symbol while the
        initial bytes are being inserted.
      * Multi-byte characters that don't entirely fit in a writeable icon buffer
        are not inserted at all.
      * A new validation string command ("U") can limit the contents of a
        writeable by number of characters, instead of bytes. This will hide the
        character sizes from the user interface.
      * Allowable characters (validation string command "A") now works on Unicode
        characters and character ranges.
      * Various other minor bugs are fixed (Wimp_ProcessKey 13 can activate a
        writeable menu item, Shift-arrow keys are always consistent in firing off
        Key_Pressed events, etc.)
      * Password icons supported: one symbol is displayed for each character
        (instead of for each byte); the display character (validation string
        command "D") can be any UTF-8 character; correctly displays the caret
        after set-caret-by-index calls, even though characters in the processed
        string are different width to those in the raw string, in password icons.
      
      Other changes:
      * The border around NC-style error boxes is resized when the error window
        is grown or shrunk.
      * Messages, CmdHelp and Template files made consistent across resource
        directories, including support for all Ursula features.
      * ShrinkableAreas turned back on in System=RCA builds.
      * User interface features of desktop OS builds standardised.
      
      Version 4.06. Tagged as 'Wimp-4_06'
      2c759475
    • Ben Avison's avatar
      UTF-8 support from previous version switched in; additional alphabet-... · e6cf688e
      Ben Avison authored
      UTF-8 support from previous version switched in; additional alphabet- conditional support added as follows: 
      
      * Correctly converts character index returned from Font_FindCaret into byte
        index into raw string.
      * Left-arrow, right-arrow, delete-left and delete-right now act as far as
        the next character boundary, instead of to the next byte.
      * Menu item text justification works again (it relies on overwriting spaces
        with hard space characters, which are two-byte characters in UTF-8).
      * General key handling code has been rewritten. The Wimp now has three
        internal key input buffers - one each for taking keyboard-generated,
        task-generated, and function-key-generated strings. Each input buffer is
        processed in chunks of one character, rather than one byte; malformed
        UTF-8 characters are rejected, so tasks don't have to worry about them
        (simplifying their character-handling code). There is also a key output
        buffer, to ensure that (UTF-8) sequences of Key_Pressed events are not
        broken up.
      * As a result of the above, multiple calls to Wimp_ProcessKey are now
        possible between calls to Wimp_Poll. Previously, this resulted in bytes
        getting jumbled up - making it useless for input of UTF-8 characters.
      * Multi-byte characters are inserted into writeable icons in one go, so you
        don't see a brief flicker of the "malformed character" symbol while the
        initial bytes are being inserted.
      * Multi-byte characters that don't entirely fit in a writeable icon buffer
        are not inserted at all.
      * A new validation string command ("U") can limit the contents of a
        writeable by number of characters, instead of bytes. This will hide the
        character sizes from the user interface.
      * Allowable characters (validation string command "A") now works on Unicode
        characters and character ranges.
      * Various other minor bugs are fixed (Wimp_ProcessKey 13 can activate a
        writeable menu item, Shift-arrow keys are always consistent in firing off
        Key_Pressed events, etc.)
      * Password icons supported: one symbol is displayed for each character
        (instead of for each byte); the display character (validation string
        command "D") can be any UTF-8 character; correctly displays the caret
        after set-caret-by-index calls, even though characters in the processed
        string are different width to those in the raw string, in password icons.
       
      Other changes:
      * The border around NC-style error boxes is resized when the error window
        is grown or shrunk.
      * Messages, CmdHelp and Template files made consistent across resource
        directories, including support for all Ursula features.
      * ShrinkableAreas turned back on in System=RCA builds.
      * User interface features of desktop OS builds standardised.
      
      Version 4.06. Tagged as 'Wimp-4_06'
      e6cf688e
  23. 30 Sep, 1998 1 commit
    • Kevin Bracey's avatar
      Spinner branch merged. · 818104e1
      Kevin Bracey authored
      Changed to use srccommit.
      All conditionals on "Version" removed.
      
      Version 4.01. Tagged as 'Wimp-4_01'
      818104e1
  24. 18 Sep, 1998 1 commit
  25. 01 Sep, 1997 1 commit
  26. 12 May, 1997 1 commit
  27. 07 May, 1997 2 commits