home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / oslib / h / wimpsprite < prev   
Encoding:
Text File  |  1994-09-07  |  14.4 KB  |  472 lines

  1. #ifndef wimpspriteop_H
  2. #define wimpspriteop_H
  3.  
  4. /* C header file for WimpSpriteOp
  5.  * written by DefMod (Sep  7 1994) on Wed Sep  7 21:18:08 1994
  6.  * Copyright © Acorn Computers Ltd, 1994
  7.  */
  8.  
  9. /*************************************************************************
  10.  * This source file was written by Acorn Computers Limited. It is part   *
  11.  * of the OSLib library for writing applications for RISC OS. It may be  *
  12.  * used freely in the creation of programs for RISC OS.                  *
  13.  *************************************************************************/
  14.  
  15. #ifndef types_H
  16.    #include "types.h"
  17. #endif
  18.  
  19. #ifndef os_H
  20.    #include "os.h"
  21. #endif
  22.  
  23. #ifndef osspriteop_H
  24.    #include "osspriteop.h"
  25. #endif
  26.  
  27. #ifndef wimp_H
  28.    #include "wimp.h"
  29. #endif
  30.  
  31. /**********************************
  32.  * SWI names and SWI reason codes *
  33.  **********************************/
  34. #undef  Wimp_SpriteOp
  35. #define Wimp_SpriteOp                           0x400E9
  36. #undef  XWimp_SpriteOp
  37. #define XWimp_SpriteOp                          0x600E9
  38. #undef  WimpSpriteOp_MergeSpriteFile
  39. #define WimpSpriteOp_MergeSpriteFile            0xB
  40. #undef  WimpSpriteOp_GetSprite
  41. #define WimpSpriteOp_GetSprite                  0xE
  42. #undef  WimpSpriteOp_SelectSprite
  43. #define WimpSpriteOp_SelectSprite               0x18
  44. #undef  WimpSpriteOp_PutSprite
  45. #define WimpSpriteOp_PutSprite                  0x1C
  46. #undef  WimpSpriteOp_PutSpriteUserCoords
  47. #define WimpSpriteOp_PutSpriteUserCoords        0x22
  48. #undef  WimpSpriteOp_SetPointerShape
  49. #define WimpSpriteOp_SetPointerShape            0x24
  50. #undef  WimpSpriteOp_ReadPaletteSize
  51. #define WimpSpriteOp_ReadPaletteSize            0x25
  52. #undef  WimpSpriteOp_ReadSpriteSize
  53. #define WimpSpriteOp_ReadSpriteSize             0x28
  54. #undef  WimpSpriteOp_ReadPixelColour
  55. #define WimpSpriteOp_ReadPixelColour            0x29
  56. #undef  WimpSpriteOp_ReadPixelMask
  57. #define WimpSpriteOp_ReadPixelMask              0x2B
  58. #undef  WimpSpriteOp_PlotMask
  59. #define WimpSpriteOp_PlotMask                   0x30
  60. #undef  WimpSpriteOp_PlotMaskUserCoords
  61. #define WimpSpriteOp_PlotMaskUserCoords         0x31
  62. #undef  WimpSpriteOp_PlotMaskScaled
  63. #define WimpSpriteOp_PlotMaskScaled             0x32
  64. #undef  WimpSpriteOp_PutSpriteScaled
  65. #define WimpSpriteOp_PutSpriteScaled            0x34
  66. #undef  WimpSpriteOp_PutSpriteGreyScaled
  67. #define WimpSpriteOp_PutSpriteGreyScaled        0x35
  68. #undef  WimpSpriteOp_PlotMaskTrfm
  69. #define WimpSpriteOp_PlotMaskTrfm               0x37
  70. #undef  WimpSpriteOp_PutSpriteTrfm
  71. #define WimpSpriteOp_PutSpriteTrfm              0x38
  72.  
  73. /************************
  74.  * Constant definitions *
  75.  ************************/
  76. #define wimpspriteop_AREA                       ((osspriteop_area *) 1)
  77.  
  78. /*************************
  79.  * Function declarations *
  80.  *************************/
  81.  
  82. #ifdef __cplusplus
  83.    extern "C" {
  84. #endif
  85.  
  86. /*************************************************************
  87.  * NOTE: The following functions provide direct access to    *
  88.  *       the SWI's noted in the function description.        *
  89.  *       Please read the relevant PRM section for more       *
  90.  *       information on their input/output parameters.       *
  91.  *************************************************************/
  92.  
  93. /* ------------------------------------------------------------------------
  94.  * Function:      wimpspriteop_merge_sprite_file()
  95.  *
  96.  * Description:   Merges sprite file
  97.  *
  98.  * Input:         file_name - value of R2 on entry
  99.  *
  100.  * Other notes:   Calls SWI 0x400E9 with R0 = 0xB.
  101.  */
  102.  
  103. extern os_error *xwimpspriteop_merge_sprite_file (char *file_name);
  104. extern void wimpspriteop_merge_sprite_file (char *file_name);
  105.  
  106. /* ------------------------------------------------------------------------
  107.  * Function:      wimpspriteop_get_sprite()
  108.  *
  109.  * Description:   Gets sprite
  110.  *
  111.  * Input:         sprite_name - value of R2 on entry
  112.  *                get_palette - value of R3 on entry
  113.  *
  114.  * Output:        header - value of R2 on exit (X version only)
  115.  *
  116.  * Returns:       R2 (non-X version only)
  117.  *
  118.  * Other notes:   Calls SWI 0x400E9 with R0 = 0xE.
  119.  */
  120.  
  121. extern os_error *xwimpspriteop_get_sprite (char *sprite_name,
  122.       bool get_palette,
  123.       osspriteop_header **header);
  124. extern osspriteop_header *wimpspriteop_get_sprite (char *sprite_name,
  125.       bool get_palette);
  126.  
  127. /* ------------------------------------------------------------------------
  128.  * Function:      wimpspriteop_select_sprite()
  129.  *
  130.  * Description:   Selects sprite
  131.  *
  132.  * Input:         sprite_name - value of R2 on entry
  133.  *
  134.  * Output:        header - value of R2 on exit (X version only)
  135.  *
  136.  * Returns:       R2 (non-X version only)
  137.  *
  138.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x18.
  139.  */
  140.  
  141. extern os_error *xwimpspriteop_select_sprite (char *sprite_name,
  142.       osspriteop_header **header);
  143. extern osspriteop_header *wimpspriteop_select_sprite (char *sprite_name);
  144.  
  145. /* ------------------------------------------------------------------------
  146.  * Function:      wimpspriteop_put_sprite()
  147.  *
  148.  * Description:   Puts sprite
  149.  *
  150.  * Input:         sprite_name - value of R2 on entry
  151.  *                action - value of R5 on entry
  152.  *
  153.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x1C.
  154.  */
  155.  
  156. extern os_error *xwimpspriteop_put_sprite (char *sprite_name,
  157.       os_action action);
  158. extern void wimpspriteop_put_sprite (char *sprite_name,
  159.       os_action action);
  160.  
  161. /* ------------------------------------------------------------------------
  162.  * Function:      wimpspriteop_put_sprite_user_coords()
  163.  *
  164.  * Description:   Puts sprite at user coordinates
  165.  *
  166.  * Input:         sprite_name - value of R2 on entry
  167.  *                x - value of R3 on entry
  168.  *                y - value of R4 on entry
  169.  *                action - value of R5 on entry
  170.  *
  171.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x22.
  172.  */
  173.  
  174. extern os_error *xwimpspriteop_put_sprite_user_coords (char *sprite_name,
  175.       int x,
  176.       int y,
  177.       os_action action);
  178. extern void wimpspriteop_put_sprite_user_coords (char *sprite_name,
  179.       int x,
  180.       int y,
  181.       os_action action);
  182.  
  183. /* ------------------------------------------------------------------------
  184.  * Function:      wimpspriteop_set_pointer_shape()
  185.  *
  186.  * Description:   Sets pointer shape
  187.  *
  188.  * Input:         sprite_name - value of R2 on entry
  189.  *                flags - value of R3 on entry
  190.  *                xactive - value of R4 on entry
  191.  *                yactive - value of R5 on entry
  192.  *                factors - value of R6 on entry
  193.  *                trans_tab - value of R7 on entry
  194.  *
  195.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x24.
  196.  */
  197.  
  198. extern os_error *xwimpspriteop_set_pointer_shape (char *sprite_name,
  199.       bits flags,
  200.       int xactive,
  201.       int yactive,
  202.       os_factors *factors,
  203.       osspriteop_trans_tab *trans_tab);
  204. extern void wimpspriteop_set_pointer_shape (char *sprite_name,
  205.       bits flags,
  206.       int xactive,
  207.       int yactive,
  208.       os_factors *factors,
  209.       osspriteop_trans_tab *trans_tab);
  210.  
  211. /* ------------------------------------------------------------------------
  212.  * Function:      wimpspriteop_read_palette_size()
  213.  *
  214.  * Description:   Reads palette size
  215.  *
  216.  * Input:         sprite_name - value of R2 on entry
  217.  *
  218.  * Output:        size - value of R3 on exit
  219.  *                palette - value of R4 on exit
  220.  *                mode - value of R5 on exit
  221.  *
  222.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x25, R3 = 0xFFFFFFFF.
  223.  */
  224.  
  225. extern os_error *xwimpspriteop_read_palette_size (char *sprite_name,
  226.       int *size,
  227.       os_sprite_palette **palette,
  228.       os_mode *mode);
  229. extern void wimpspriteop_read_palette_size (char *sprite_name,
  230.       int *size,
  231.       os_sprite_palette **palette,
  232.       os_mode *mode);
  233.  
  234. /* ------------------------------------------------------------------------
  235.  * Function:      wimpspriteop_read_sprite_size()
  236.  *
  237.  * Description:   Reads sprite information
  238.  *
  239.  * Input:         sprite_name - value of R2 on entry
  240.  *
  241.  * Output:        width - value of R3 on exit
  242.  *                height - value of R4 on exit
  243.  *                mask - value of R5 on exit
  244.  *                mode - value of R6 on exit
  245.  *
  246.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x28.
  247.  */
  248.  
  249. extern os_error *xwimpspriteop_read_sprite_size (char *sprite_name,
  250.       int *width,
  251.       int *height,
  252.       bool *mask,
  253.       os_mode *mode);
  254. extern void wimpspriteop_read_sprite_size (char *sprite_name,
  255.       int *width,
  256.       int *height,
  257.       bool *mask,
  258.       os_mode *mode);
  259.  
  260. /* ------------------------------------------------------------------------
  261.  * Function:      wimpspriteop_read_pixel_colour()
  262.  *
  263.  * Description:   Reads pixel colour
  264.  *
  265.  * Input:         sprite_name - value of R2 on entry
  266.  *                x - value of R3 on entry
  267.  *                y - value of R4 on entry
  268.  *
  269.  * Output:        gcol - value of R5 on exit
  270.  *                tint - value of R6 on exit
  271.  *
  272.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x29.
  273.  */
  274.  
  275. extern os_error *xwimpspriteop_read_pixel_colour (char *sprite_name,
  276.       int x,
  277.       int y,
  278.       os_gcol *gcol,
  279.       os_tint *tint);
  280. extern void wimpspriteop_read_pixel_colour (char *sprite_name,
  281.       int x,
  282.       int y,
  283.       os_gcol *gcol,
  284.       os_tint *tint);
  285.  
  286. /* ------------------------------------------------------------------------
  287.  * Function:      wimpspriteop_read_pixel_mask()
  288.  *
  289.  * Description:   Reads pixel mask
  290.  *
  291.  * Input:         sprite_name - value of R2 on entry
  292.  *                x - value of R3 on entry
  293.  *                y - value of R4 on entry
  294.  *
  295.  * Output:        solid - value of R5 on exit (X version only)
  296.  *
  297.  * Returns:       R5 (non-X version only)
  298.  *
  299.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x2B.
  300.  */
  301.  
  302. extern os_error *xwimpspriteop_read_pixel_mask (char *sprite_name,
  303.       int x,
  304.       int y,
  305.       bool *solid);
  306. extern bool wimpspriteop_read_pixel_mask (char *sprite_name,
  307.       int x,
  308.       int y);
  309.  
  310. /* ------------------------------------------------------------------------
  311.  * Function:      wimpspriteop_plot_mask()
  312.  *
  313.  * Description:   Plots sprite mask
  314.  *
  315.  * Input:         sprite_name - value of R2 on entry
  316.  *
  317.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x30.
  318.  */
  319.  
  320. extern os_error *xwimpspriteop_plot_mask (char *sprite_name);
  321. extern void wimpspriteop_plot_mask (char *sprite_name);
  322.  
  323. /* ------------------------------------------------------------------------
  324.  * Function:      wimpspriteop_plot_mask_user_coords()
  325.  *
  326.  * Description:   Plots sprite mask at user coordinates
  327.  *
  328.  * Input:         sprite_name - value of R2 on entry
  329.  *                x - value of R3 on entry
  330.  *                y - value of R4 on entry
  331.  *
  332.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x31.
  333.  */
  334.  
  335. extern os_error *xwimpspriteop_plot_mask_user_coords (char *sprite_name,
  336.       int x,
  337.       int y);
  338. extern void wimpspriteop_plot_mask_user_coords (char *sprite_name,
  339.       int x,
  340.       int y);
  341.  
  342. /* ------------------------------------------------------------------------
  343.  * Function:      wimpspriteop_plot_mask_scaled()
  344.  *
  345.  * Description:   Plots mask scaled
  346.  *
  347.  * Input:         sprite_name - value of R2 on entry
  348.  *                x - value of R3 on entry
  349.  *                y - value of R4 on entry
  350.  *                factors - value of R5 on entry
  351.  *
  352.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x32.
  353.  */
  354.  
  355. extern os_error *xwimpspriteop_plot_mask_scaled (char *sprite_name,
  356.       int x,
  357.       int y,
  358.       os_factors *factors);
  359. extern void wimpspriteop_plot_mask_scaled (char *sprite_name,
  360.       int x,
  361.       int y,
  362.       os_factors *factors);
  363.  
  364. /* ------------------------------------------------------------------------
  365.  * Function:      wimpspriteop_put_sprite_scaled()
  366.  *
  367.  * Description:   Puts sprite scaled
  368.  *
  369.  * Input:         sprite_name - value of R2 on entry
  370.  *                x - value of R3 on entry
  371.  *                y - value of R4 on entry
  372.  *                action - value of R5 on entry
  373.  *                factors - value of R6 on entry
  374.  *                trans_tab - value of R7 on entry
  375.  *
  376.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x34.
  377.  */
  378.  
  379. extern os_error *xwimpspriteop_put_sprite_scaled (char *sprite_name,
  380.       int x,
  381.       int y,
  382.       os_action action,
  383.       os_factors *factors,
  384.       osspriteop_trans_tab *trans_tab);
  385. extern void wimpspriteop_put_sprite_scaled (char *sprite_name,
  386.       int x,
  387.       int y,
  388.       os_action action,
  389.       os_factors *factors,
  390.       osspriteop_trans_tab *trans_tab);
  391.  
  392. /* ------------------------------------------------------------------------
  393.  * Function:      wimpspriteop_put_sprite_grey_scaled()
  394.  *
  395.  * Description:   Puts sprite scaled and anti-aliased
  396.  *
  397.  * Input:         sprite_name - value of R2 on entry
  398.  *                x - value of R3 on entry
  399.  *                y - value of R4 on entry
  400.  *                factors - value of R6 on entry
  401.  *                trans_tab - value of R7 on entry
  402.  *
  403.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x35, R5 = 0x0.
  404.  */
  405.  
  406. extern os_error *xwimpspriteop_put_sprite_grey_scaled (char *sprite_name,
  407.       int x,
  408.       int y,
  409.       os_factors *factors,
  410.       osspriteop_trans_tab *trans_tab);
  411. extern void wimpspriteop_put_sprite_grey_scaled (char *sprite_name,
  412.       int x,
  413.       int y,
  414.       os_factors *factors,
  415.       osspriteop_trans_tab *trans_tab);
  416.  
  417. /* ------------------------------------------------------------------------
  418.  * Function:      wimpspriteop_plot_mask_trfm()
  419.  *
  420.  * Description:   Plots sprite mask transformed
  421.  *
  422.  * Input:         sprite_name - value of R2 on entry
  423.  *                flags - value of R3 on entry
  424.  *                source_rect - value of R4 on entry
  425.  *                trfm - value of R6 on entry
  426.  *
  427.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x37.
  428.  */
  429.  
  430. extern os_error *xwimpspriteop_plot_mask_trfm (char *sprite_name,
  431.       bits flags,
  432.       os_box *source_rect,
  433.       os_trfm *trfm);
  434. extern void wimpspriteop_plot_mask_trfm (char *sprite_name,
  435.       bits flags,
  436.       os_box *source_rect,
  437.       os_trfm *trfm);
  438.  
  439. /* ------------------------------------------------------------------------
  440.  * Function:      wimpspriteop_put_sprite_trfm()
  441.  *
  442.  * Description:   Puts sprite transformed
  443.  *
  444.  * Input:         sprite_name - value of R2 on entry
  445.  *                flags - value of R3 on entry
  446.  *                source_rect - value of R4 on entry
  447.  *                action - value of R5 on entry
  448.  *                trfm - value of R6 on entry
  449.  *                trans_tab - value of R7 on entry
  450.  *
  451.  * Other notes:   Calls SWI 0x400E9 with R0 = 0x38.
  452.  */
  453.  
  454. extern os_error *xwimpspriteop_put_sprite_trfm (char *sprite_name,
  455.       bits flags,
  456.       os_box *source_rect,
  457.       os_action action,
  458.       os_trfm *trfm,
  459.       osspriteop_trans_tab *trans_tab);
  460. extern void wimpspriteop_put_sprite_trfm (char *sprite_name,
  461.       bits flags,
  462.       os_box *source_rect,
  463.       os_action action,
  464.       os_trfm *trfm,
  465.       osspriteop_trans_tab *trans_tab);
  466.  
  467. #ifdef __cplusplus
  468.    }
  469. #endif
  470.  
  471. #endif
  472.