diff options
Diffstat (limited to 'riscos/distribution/3rdParty/Tinct/!Help')
-rw-r--r-- | riscos/distribution/3rdParty/Tinct/!Help | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/riscos/distribution/3rdParty/Tinct/!Help b/riscos/distribution/3rdParty/Tinct/!Help deleted file mode 100644 index 2e27e354f..000000000 --- a/riscos/distribution/3rdParty/Tinct/!Help +++ /dev/null @@ -1,304 +0,0 @@ -Tinct -===== -This module provides the necessary functionality to display alpha-blended -sprites both scaled and otherwise. It also provides functions for dithering, -error diffusion and performing bi-linear filtering to improve their appearance. - - -Technical information -ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -To ensure future compatibility, this module does not patch the OS in any way -and works in a totally legal way. It also does not write to itself in any -way, so is suitable for running from ROM. - Redirection to sprites is supported, although due to the overheads involved -with caching the colour translation tables it is not recommended that this is -done frequently. There are some exceptions to this, however, as redirecting to -a 16bpp or 32bpp mode sprite does not require any translation tables, and -redirecting to a sprite that has the same mode and palette as the previous -destination that Tinct was used for causes a minimum overhead as the -translation tables are checked and cached values are used if possible. - -Format of a sprite with 8-bit alpha channel -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -The sprite format used by Tinct differs from those used by RISC OS Select, -and whilst facilities are supplied to convert sprites into the required format, -no facilities are provided to manipulate them. - All sprites used by Tinct must be 32bpp, and cannot have a standard RISC OS -mask specified. The basic format of the sprite is shown below, with the -restrictions to the standard sprite format marked with an asterisk (*): - - [+0] Offset to next sprite - [+4] Sprite name, up to 12 characters with trailing zeroes - [+16] Width in words - 1 - [+20] Height in scan lines - 1 - [+24] First bit used - [+28] Last bit used - [+32] Offset to sprite image - [+36] * Offset to sprite image (no mask allowed) - [+40] * Sprite type (must be 0x301680B5) - -Whereas for normal sprites the sprite image would be a series of colour words -of the format RrGgBb00, alpha-blended sprites use the empty byte to specify -the alpha value, ie RrGgBbAa. - The alpha values represent the blending level on a linear scale where 0x00 -represents that the source pixel is totally transparent and 0xff that it is -totally opaque. It should be noted that as a standard 32bpp sprite (eg as -created with !Paint) will have the alpha channel set to 0x00 by default no -output will be visible when plotting as an alpha-blended sprite. - -Error handling -¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -If an incorrect sprite is attempted to be used, Tinct currently always returns -error number 0x700 (SBadSpriteFile) rather than the specific cause of the -problem (eg. BadDPI, BadMSFlags or BadPixelDepth) as OS_SpriteOp would do. -There are several technical reasons for this behaviour, and future versions of -Tinct may return more descriptive errors depending on the cause. - - -SWIs provided -ŻŻŻŻŻŻŻŻŻŻŻŻŻ -Tinct provides four SWIs to plot sprites and one to convert sprites to their -32bpp equivalent. All values supplied to Tinct must be in OS units, and the -current OS clipping rectangle is used. - The sprite pointers provided are equivalent to calling OS_SpriteOp with -bit 9 of the reason code set. To plot a sprite by name, the sprite should -first be found by using OS_SpriteOp with reason code 0x18 and using the -returned sprite address. - -Tinct_PlotAlpha (0x57240) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Plots an alpha-blended sprite at the specified coordinates. - --> R2 Sprite pointer - R3 X coordinate - R4 Y coordinate - R7 Flag word - - -Tinct_PlotScaledAlpha (0x57241) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Plots a scaled alpha-blended sprite at the specified coordinates. - --> R2 Sprite pointer - R3 X coordinate - R4 Y coordinate - R5 Scaled sprite width - R6 Scaled sprite height - R7 Flag word - - -Tinct_Plot (0x57242) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Plots a sprite at the specified coordinates with a constant 0xff value for -the alpha channel, ie without a mask. - --> R2 Sprite pointer - R3 X coordinate - R4 Y coordinate - R7 Flag word - - -Tinct_PlotScaled (0x57243) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Plots a scaled sprite at the specified coordinates with a constant 0xff value -for the alpha channel, ie without a mask. - --> R2 Sprite pointer - R3 X coordinate - R4 Y coordinate - R5 Scaled sprite width - R6 Scaled sprite height - R7 Flag word - - -Tinct_ConvertSprite (0x57244) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Converts a paletted sprite into its 32bpp equivalent. Sufficient memory must -have previously been allocated for the sprite (44 + width * height * 4). - As sprites with 16bpp or 32bpp do not have palettes, conversion cannot be -performed on these variants. All sprites must be supplied with a full palette, -eg 8bpp must have 256 palette entries. - --> R2 Source sprite pointer - R3 Destination sprite pointer - - -Tinct_AvailableFeatures (0x57245) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Returns the features available to the caller by specifying bits in the flag -word. The features available are unique for each mode, although the current -version of Tinct supports the same subset of features for all modes. - --> R0 Feature to test for, or 0 for all features -<- R0 Features available - - -Tinct_Compress (0x57246) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Compresses an image using a fast algorithm. Sufficient memory must have been -previously allocated for the maximum possible compressed size. This value is -equal to 28 + (width * height * 4) * 33 / 32. - --> R0 Source sprite pointer - R2 Output data buffer - R3 Output bytes available - R7 Flag word -<- R0 Size of compressed data - - -Tinct_Decompress (0x57247) -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Decompresses an image previously compressed. Sufficient memory must have been -previously allocated for the decompressed data (44 + width * height * 4) where -width and height are available at +0 and +4 of the compressed data respectively. - --> R0 Input data buffer - R2 Output data buffer - R7 Flag word (currently 0) -<- R0 Size of decompressed data - - -Flag word (plotting) -ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -All the SWIs provided by Tinct for plotting use a common flag word to -describe the manner in which the plot is performed. Each bit controls a -particular characteristic of the plotting: - - 0 Forcibly read the screen base (only use if hardware scrolling) - 1 Use bi-linear filtering when scaling sprites - 2 Dither colours in 16bpp and below - 3 Perform error diffusion if bit 2 clear, invert dither pattern if set - 4 Horizontally fill the current graphics window with the sprite - 5 Vertically fill the current graphics window with the sprite - 6 Forcibly read the palette (only use if changing palette outside of - the WIMP) - 7 Use OS_SpriteOp to perform final plotting (see note) - 8+ Reserved (must be 0) if bit 7 is clear, background colour to - blend the alpha channel to otherwise - -If a bit is set in the flag word that cannot be honoured by the current -version of Tinct then it is ignored. Tinct_AvailableFeatures can be used -to test in advance what flags will be honoured. - -Bi-linear filtering -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Although bi-linear filtering is only relevant during scaled plotting, this -situation occurs when the EigFactors of the mode are not equal. As such, an -application should always set their preferred flags to ensure consistency. The -case of XEig * 2 = YEig (rectangular pixel modes) for even height sprites is a -special case and has optimised code implemented. - There is an upper limit to the size of sprite that can be bi-linear filtered. -The checks that are currently made are: - - scaled_width / sprite_width < 256 - scaled_height / sprite_height < 256 - scaled_width * max(sprite_height, scaled_height) < 32,768 - - It should be noted that as bi-linear filtering is performed as a pre-filter, -it carries a sizable overhead. However, as all scaling calculations are -performed during this filter, tiled plotting (bits 4 and 5) are affected by -a smaller margin (in certain cases a speed gain can be achieved). - As bi-linear filtering is performed using a pre-filter, it can be used in -association with OS_SpriteOp rendering. - -Error diffusion and dithering -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -If both error diffusion and dithering are enabled then the image is plotted -using only dithering, but with the dither pattern inverted. This enables an -application to provide the user with what appears to be a higher quality image -by redrawing every frame with the flag toggled. - There is a significant speed difference between dithering and error diffusion, -and Tinct does not support error diffusion in all colour depths. If error -diffusion is requested, but cannot be performed by Tinct then dithering with -an inverted pattern is used (as if bits 2 and 3 were set). - There is an upper limit to the size of sprite that Tinct can perform error -diffusion on. This is currently set to a display width of 2047 pixels wide with -an unlimited height. Any attempt to use a higher resolution will result in -dithered rendering with an inverted pattern (ie bits 2 and 3 set). - As error diffusion and dithering are implemented during the plot cycle, it is -not possible to use them in association with OS_SpriteOp rendering. However, -the bits should be set as future versions of Tinct may respect them for users -of RISC OS 3.1 where true colour sprites are not supported. - -Sprite filling -¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -If filling is specified, then the supplied co-ordinate is the offset of the -pattern relative to (0, 0) used for the fill. For example, a 64x64 sprite that -is plotted with bits 4 and 5 set and a position of (32, 16) would fill the -current graphics window with multiple copies of the image stating with the -first image plotted at (-32, -48). - The caller should not concern itself with the size of the image being tiled -as small images are internally optimised where possible to maximise the -plotting speed. - -Rendering using OS_SpriteOp -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -It can be useful to use Tinct to perform the rendering to using OS_SpriteOp. -There are two general situations where this may be useful: - - 1) To output to a printer driver - 2) To allow hardware acceleraton (such as a ViewFinder card) - -By using Tinct rather than a direct OS_SpriteOp call, it allows the caller to -retain certain features Tinct provides (such as sprite filling and a limited -version of the standard alpha blending) and allows the caller to have a common -plotting interface. - When using this feature for alpha-blended sprites, the background colour -specified in the top 24-bits of the flag word is used for blending with any -pixels that are not transparent. This requires that Tinct requires a second -copy of the sprite in memory to modify which may present a significant overhead -in some situations. Plotting opaquely does not have any such overheads. - Using OS_SpriteOp rendering does not currently work on RISC OS 3.1 or earlier -due to the lack of support for true colour sprites. Future versions of Tinct -may remove this restriction. - - -Flag word (compression) -ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -The flag word used by Tinct_Compress can be used to improve the compression -ratio by performing pre-filtering on the data. The flags below relate only to -compression and should not be passed to Tinct_Decompress. - - 0 Image is opaque, remove the alpha channel prior to compression - -All unspecified bits are reserved for future expansion and as such should be -set to 0. - -Compressed data format -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Certain aspects of the compressed data format are guaranteed to remain constant, -so may be used by applications. - - +0 Sprite width - +4 Sprite height - +8 Sprite name (12 chars) - +20 Compression flags - +24 Number of bytes of data following - -The method of compression is not guaranteed to remain constant over future -revisions of Tinct, but subsequent versions will decompress data compressed -with previous versions. - - -Contact details -ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -If you would like to report a problem relating to Tinct, provide feedback, or -request a licence for a commercial product, please use the details below: - -Address: 5 Queens Close, East Markham, Newark, Nottinghamshire, NG22 0QY. UK -E-mail: info@tinct.net -Website: www.tinct.net - - -Copyright and licence details -ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -Tinct is İ copyright Richard Wilson, 2004. - -Distribution and usage -¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -Unrestricted use of Tinct is hereby granted for any non-commercial product. Any -use as part of a commercial product requires written consent from the author. -No charge may be made relating to the distribution of this software, and this -copyright information should be included in all copies of the software. - Modified versions of this program may not be distributed without the authors -consent, nor may modified versions of the source code or relating files.
\ No newline at end of file |