Showing changes from revision #2 to #3:
Added | Removed | Changed
Traduction en cours
Le mode Sprite est une valeur 32 bits particulière du mode graphique utilisée pour définir le format du sprite. Il y a trois format formats principaux supportés selon la version deRISC OS.
Les mode modes graphique graphiques sont les seuls modes supportés par les versions antérieures à RISC OS 3.5
If the mode number is one of an extension mode (i.e. a mode defined by a third-party module) then some operations on the sprite will only perform correctly if that mode (or a very similar one) is present on the host system.
Note Notez that que it l’utilisation is de illegal modes to graphiques use compris a entre mode number between 128 and et 255 in pour a définir sprite un mode word Sprite (i.e. n’est a pas mode autorisé. number with the shadow bit set).
Le RISC OS 3.5 étend les possibilités du mode graphique de la façon suivante:
wttt tyyy yyyy yyyy yyxx xxxx xxxx xxx1
Contents | |
---|---|
w (bit 31) | Wide mask flag |
t (bits 27-30) | Type de Sprite |
y (bits 14-26) | |
x (bits 1-13) |
Le bit 0 doit valoir ‘1’ pour définir un mode Sprite.
Note Notez that que many de OS nombreuses APIs will only accept a sprite mode word if the horizontal and verticalAPI accepte uniquement des valeurs de mode Sprite dont la densité de pixels est exprimée en ratio: 180 DPI fields (valeur contain du radio 0), 90DPI values (valeur that du can radio be 1), expressed 45 as eigen values; i.e. 180DPI (eigen (valeur value du 0), radio 90 2) ou 22 ou 23DPI (eigen (valeur value de 1), ratio 45 3).DPI (eigen value 2) or 22 or 23 DPI (eigen value 3).
Starting A with partir duRISC OS 5.21 5.21, a un new nouveau sprite mode word format is supported, allowing for a much été larger ajouté number permettant of un plus grand nombre de type de sprite types, au at détriment the du cost nombre of de less combinaisons de densité de pixels.DPI combinations.
w111 1ttt tttt 0000 ffff ffff yyxx 0001
Contents | |
---|---|
w (bit 31) | Wide mask flag |
t (bits 20-26) | Sprite type |
f (bits 8-15) | Contains bits 8-15 of the Mode Flags |
y (bits 6-7) | Y eigen value (0=180 DPI, 1=90 DPI, etc.) |
x (bits 4-5) | X eigen value |
Bits Les bits 27-30, 16-19 and et 0-3 must doivent always contenir contain le the motif fixed pattern &78000001.
The above rules are essentially just an expanded form of the set of rules presented for decoding mode specifiers, as many APIs which accept mode words actually accept all types of mode specifier. However it’s important to remember that pointers to mode selector blocks are not valid sprite mode words, as there is no way the pointer or the block can be saved out to a sprite file. Therefore if you are writing a public API which only accepts sprite mode words, you may want to implement a check for mode selectors and throw an error if one is passed in by accident.
Some APIs may also accept pointers to sprite areas – these can be distinguished from pointers to mode selector blocks by the fact that bit 0 of the first word of a sprite area will always be zero, whereas bit 0 of the first word of a mode selector block will always be one.
Also note that even if it looks like a RISC OS 3.5 or RISC OS 5 sprite mode word, other factors may mean that it’s a completely invalid mode word (e.g. DPI values of zero in a RISC OS 3.5 mode word, or the fixed bits of a RISC OS 5 mode word containing an invalid pattern).
Type | Description | NColour value | ModeFlags value | Log2BPP value |
---|---|---|---|---|
0 | Invalid (used to identify mode numbers) | - | - | - |
1 | 1bpp palletised | 1 | 0 | 0 |
2 | 2bpp palletised | 3 | 0 | 1 |
3 | 4bpp palletised | 15 | 0 | 2 |
4 | 8bpp palletised | 63 | 0 | 3 |
5 | 16bpp 1:5:5:5 TBGR | 65535 | 0 | 4 |
6 | 32bpp 8:8:8:8 TBGR | -1 | 0 | 5 |
7 | 32bpp CMYK | -1 | &1000 | 5 |
8 | 24bpp | 16777215 | 0 | 6 |
9 | JPEG data | - | - | - |
10 | 16bpp 5:6:5 TBGR | 65535 | &80 | 4 |
11-14 | Reserved | - | - | - |
15 | Invalid (used to identify RISC OS 5 sprite mode words) | - | - | - |
Note that for sprite type 4, the values returned by the kernel are for a sprite with a 64 entry palette instead of a full 256 entry palette.
Types 0-15 are as above.
Type | Description | NColour value | Log2BPP value |
---|---|---|---|
16 | 16bpp 4:4:4:4 | 4095 | 4 |
17 | 4:2:0 YCbCr | 420 | 7 |
18 | 4:2:2 YCbCr | 422 | 7 |
19-127 | Reserved | - | - |
When reading the mode flags, bits 8-15 of the sprite mode word directly specify bits 8-15 of the mode flags. The other flags (e.g. bit 7) are as specified in the tables above.
On A partir deRISC OS 3.5 3.5, and essayer above, d’utiliser attempting la to fonction useOS_ReadModeVariable to pour read obtenir the les details détails of d’un an unknown or unsupported sprite type will de generally result in the kernel acting as if it was given a type 6 (i.e. 32bpp) sprite mode non word. supporté By va comparing indiquer the que values le returned by the kernel against the expected values for a given mode word, this can be used as a method of determining if the kernel/OS supports that sprite type. est de type 6 (c.à.d 32bpp). En comparant les valeurs retournées aux valeurs fournies il est possible de savoir quels type de sprites le système d’exploitation est capable de gérer.
See Format Of Sprite for details of how the sprite mode word affects the format of the sprite mask.