home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / oslib / oslib_1 / OSLib / User / h / colourpick < prev    next >
Encoding:
Text File  |  1995-07-24  |  18.2 KB  |  530 lines

  1. #ifndef colourpicker_H
  2. #define colourpicker_H
  3.  
  4. /* C header file for ColourPicker
  5.  * written by DefMod (Jul 24 1995) on Mon Jul 24 11:29:31 1995
  6.  * Jonathan Coxhead, Acorn Computers Ltd
  7.  */
  8.  
  9. #ifndef types_H
  10. #include "types.h"
  11. #endif
  12.  
  13. #ifndef os_H
  14. #include "os.h"
  15. #endif
  16.  
  17. #ifndef wimp_H
  18. #include "wimp.h"
  19. #endif
  20.  
  21. /**********************************
  22.  * SWI names and SWI reason codes *
  23.  **********************************/
  24. #undef  ColourPicker_RegisterModel
  25. #define ColourPicker_RegisterModel              0x47700
  26. #undef  XColourPicker_RegisterModel
  27. #define XColourPicker_RegisterModel             0x67700
  28. #undef  ColourPicker_DeregisterModel
  29. #define ColourPicker_DeregisterModel            0x47701
  30. #undef  XColourPicker_DeregisterModel
  31. #define XColourPicker_DeregisterModel           0x67701
  32. #undef  ColourPicker_OpenDialogue
  33. #define ColourPicker_OpenDialogue               0x47702
  34. #undef  XColourPicker_OpenDialogue
  35. #define XColourPicker_OpenDialogue              0x67702
  36. #undef  ColourPicker_CloseDialogue
  37. #define ColourPicker_CloseDialogue              0x47703
  38. #undef  XColourPicker_CloseDialogue
  39. #define XColourPicker_CloseDialogue             0x67703
  40. #undef  ColourPicker_UpdateDialogue
  41. #define ColourPicker_UpdateDialogue             0x47704
  42. #undef  XColourPicker_UpdateDialogue
  43. #define XColourPicker_UpdateDialogue            0x67704
  44. #undef  ColourPicker_ReadDialogue
  45. #define ColourPicker_ReadDialogue               0x47705
  46. #undef  XColourPicker_ReadDialogue
  47. #define XColourPicker_ReadDialogue              0x67705
  48. #undef  ColourPicker_SetColour
  49. #define ColourPicker_SetColour                  0x47706
  50. #undef  XColourPicker_SetColour
  51. #define XColourPicker_SetColour                 0x67706
  52. #undef  ColourPicker_HelpReply
  53. #define ColourPicker_HelpReply                  0x47707
  54. #undef  XColourPicker_HelpReply
  55. #define XColourPicker_HelpReply                 0x67707
  56. #undef  ColourPicker_ModelSWI
  57. #define ColourPicker_ModelSWI                   0x47708
  58. #undef  XColourPicker_ModelSWI
  59. #define XColourPicker_ModelSWI                  0x67708
  60. #undef  ColourPickerModelSWI_ColourChanged
  61. #define ColourPickerModelSWI_ColourChanged      0x0
  62. #undef  ColourPickerModelSWI_ColourChangedByDragging
  63. #define ColourPickerModelSWI_ColourChangedByDragging 0x1
  64. #undef  ColourPickerModelSWI_ClaimEvent
  65. #define ColourPickerModelSWI_ClaimEvent         0x2
  66. #undef  ColourPickerModelSWI_ReleaseEvent
  67. #define ColourPickerModelSWI_ReleaseEvent       0x3
  68. #undef  ColourPickerModelSWI_ProcessKey
  69. #define ColourPickerModelSWI_ProcessKey         0x4
  70. #undef  Service_ColourPickerLoaded
  71. #define Service_ColourPickerLoaded              0x93
  72.  
  73. /************************************
  74.  * Structure and union declarations *
  75.  ************************************/
  76. typedef struct colourpicker_d_                  *colourpicker_d;
  77. typedef struct colourpicker_colour              colourpicker_colour;
  78. typedef struct colourpicker_dialogue            colourpicker_dialogue;
  79. typedef struct colourpicker_model               colourpicker_model;
  80. typedef struct colourpicker_message_colour_choice colourpicker_message_colour_choice;
  81. typedef struct colourpicker_message_colour_changed colourpicker_message_colour_changed;
  82. typedef struct colourpicker_message_open_parent_request colourpicker_message_open_parent_request;
  83. typedef struct colourpicker_message_close_dialogue_request colourpicker_message_close_dialogue_request;
  84. typedef struct colourpicker_message_reset_colour_request colourpicker_message_reset_colour_request;
  85.  
  86. /********************
  87.  * Type definitions *
  88.  ********************/
  89. struct colourpicker_colour
  90.    {  os_colour colour;
  91.       int size;
  92.       int info [UNKNOWN];
  93.    };
  94.  
  95. #define colourpicker_COLOUR(N) \
  96.    struct \
  97.       {  os_colour colour; \
  98.          int size; \
  99.          int info [N]; \
  100.       }
  101.  
  102. #define colourpicker_SIZEOF_COLOUR(N) \
  103.    (offsetof (colourpicker_colour, info) + \
  104.          (N)*sizeof ((colourpicker_colour *) NULL)->info)
  105.  
  106. typedef bits colourpicker_dialogue_flags;
  107.  
  108. struct colourpicker_dialogue
  109.    {  colourpicker_dialogue_flags flags;
  110.       char *title;
  111.       os_box visible;
  112.       int xscroll;
  113.       int yscroll;
  114.       os_colour colour;
  115.       int size;
  116.       int info [UNKNOWN];
  117.    };
  118.  
  119. #define colourpicker_DIALOGUE(N) \
  120.    struct \
  121.       {  colourpicker_dialogue_flags flags; \
  122.          char *title; \
  123.          os_box visible; \
  124.          int xscroll; \
  125.          int yscroll; \
  126.          os_colour colour; \
  127.          int size; \
  128.          int info [N]; \
  129.       }
  130.  
  131. #define colourpicker_SIZEOF_DIALOGUE(N) \
  132.    (offsetof (colourpicker_dialogue, info) + \
  133.          (N)*sizeof ((colourpicker_dialogue *) NULL)->info)
  134.  
  135. typedef bits colourpicker_model_flags;
  136.  
  137. struct colourpicker_model
  138.    {  colourpicker_model_flags flags;
  139.       char *name;
  140.       char *description;
  141.       int info_size;
  142.       os_coord pane_size;
  143.       void *entries [8];
  144.    };
  145.  
  146. typedef bits colourpicker_colour_flags;
  147.  
  148. struct colourpicker_message_colour_choice
  149.    {  colourpicker_d d;
  150.       colourpicker_colour_flags flags;
  151.       os_colour colour;
  152.       int size;
  153.       int info [UNKNOWN];
  154.    };
  155.  
  156. #define colourpicker_MESSAGE_COLOUR_CHOICE(N) \
  157.    struct \
  158.       {  colourpicker_d d; \
  159.          colourpicker_colour_flags flags; \
  160.          os_colour colour; \
  161.          int size; \
  162.          int info [N]; \
  163.       }
  164.  
  165. #define colourpicker_SIZEOF_MESSAGE_COLOUR_CHOICE(N) \
  166.    (offsetof (colourpicker_message_colour_choice, info) + \
  167.          (N)*sizeof ((colourpicker_message_colour_choice *) NULL)->info)
  168.  
  169. struct colourpicker_message_colour_changed
  170.    {  colourpicker_d d;
  171.       colourpicker_colour_flags flags;
  172.       os_colour colour;
  173.       int size;
  174.       int info [UNKNOWN];
  175.    };
  176.  
  177. #define colourpicker_MESSAGE_COLOUR_CHANGED(N) \
  178.    struct \
  179.       {  colourpicker_d d; \
  180.          colourpicker_colour_flags flags; \
  181.          os_colour colour; \
  182.          int size; \
  183.          int info [N]; \
  184.       }
  185.  
  186. #define colourpicker_SIZEOF_MESSAGE_COLOUR_CHANGED(N) \
  187.    (offsetof (colourpicker_message_colour_changed, info) + \
  188.          (N)*sizeof ((colourpicker_message_colour_changed *) NULL)->info)
  189.  
  190. struct colourpicker_message_open_parent_request
  191.    {  colourpicker_d d;
  192.    };
  193.  
  194. struct colourpicker_message_close_dialogue_request
  195.    {  colourpicker_d d;
  196.    };
  197.  
  198. struct colourpicker_message_reset_colour_request
  199.    {  colourpicker_d d;
  200.    };
  201.  
  202. typedef bits colourpicker_open_flags;
  203.  
  204. typedef bits colourpicker_close_flags;
  205.  
  206. typedef bits colourpicker_update_flags;
  207.  
  208. typedef bits colourpicker_read_flags;
  209.  
  210. typedef bits colourpicker_set_flags;
  211.  
  212. typedef bits colourpicker_help_flags;
  213.  
  214. /************************
  215.  * Constant definitions *
  216.  ************************/
  217. #define error_COLOUR_PICKER_UNINIT              0x20D00u
  218. #define error_COLOUR_PICKER_BAD_MODEL           0x20D01u
  219. #define error_COLOUR_PICKER_BAD_HANDLE          0x20D02u
  220. #define error_COLOUR_PICKER_BAD_FLAGS           0x20D03u
  221. #define error_COLOUR_PICKER_IN_USE              0x20D04u
  222. #define error_COLOUR_PICKER_MODEL_IN_USE        0x20D05u
  223. #define error_COLOUR_PICKER_BAD_REASON          0x20D06u
  224. #define colourpicker_ENTRY_DIALOGUE_STARTING    0
  225. #define colourpicker_ENTRY_DIALOGUE_FINISHING   1
  226. #define colourpicker_ENTRY_REDRAW_AREA          2
  227. #define colourpicker_ENTRY_UPDATE_AREA          3
  228. #define colourpicker_ENTRY_READ_VALUES          4
  229. #define colourpicker_ENTRY_SET_VALUES           5
  230. #define colourpicker_ENTRY_PROCESS_EVENT        6
  231. #define colourpicker_ENTRY_SET_COLOUR           7
  232. #define colourpicker_ENTRY_LIMIT                8
  233. #define colourpicker_DIALOGUE_OFFERS_TRANSPARENT ((colourpicker_dialogue_flags) 0x1u)
  234. #define colourpicker_DIALOGUE_TRANSPARENT       ((colourpicker_dialogue_flags) 0x2u)
  235. #define colourpicker_DIALOGUE_TYPE              ((colourpicker_dialogue_flags) 0xCu)
  236. #define colourpicker_DIALOGUE_TYPE_SHIFT        2
  237. #define colourpicker_DIALOGUE_TYPE_NEVER        0x0u
  238. #define colourpicker_DIALOGUE_TYPE_CLICK        0x1u
  239. #define colourpicker_DIALOGUE_TYPE_CLICK_DRAG   0x2u
  240. #define colourpicker_DIALOGUE_IGNORE_HELP       ((colourpicker_dialogue_flags) 0x10u)
  241. #define colourpicker_DIALOGUE_IGNORE_KEY_PRESSED ((colourpicker_dialogue_flags) 0x20u)
  242. #define colourpicker_MODEL_SIZE_RGB             16
  243. #define colourpicker_MODEL_SIZE_CMYK            20
  244. #define colourpicker_MODEL_SIZE_HSV             16
  245. #define colourpicker_MODEL_RGB                  0
  246. #define colourpicker_MODEL_CMYK                 1
  247. #define colourpicker_MODEL_HSV                  2
  248. #define message_COLOUR_PICKER_COLOUR_CHOICE     0x47700u
  249. #define message_COLOUR_PICKER_COLOUR_CHANGED    0x47701u
  250. #define message_COLOUR_PICKER_CLOSE_DIALOGUE_REQUEST 0x47702u
  251. #define message_COLOUR_PICKER_OPEN_PARENT_REQUEST 0x47703u
  252. #define message_COLOUR_PICKER_RESET_COLOUR_REQUEST 0x47704u
  253. #define colourpicker_COLOUR_TRANSPARENT         ((colourpicker_colour_flags) 0x1u)
  254. #define colourpicker_COLOUR_DRAGGING            ((colourpicker_colour_flags) 0x2u)
  255. #define colourpicker_OPEN_TRANSIENT             ((colourpicker_open_flags) 0x1u)
  256. #define colourpicker_OPEN_SUB_MENU              ((colourpicker_open_flags) 0x2u)
  257.       /*If transient*/
  258. #define colourpicker_OPEN_TOOLBOX               ((colourpicker_open_flags) 0x2u)
  259.       /*If permanent*/
  260. #define colourpicker_UPDATE_OFFERS_TRANSPARENT  ((colourpicker_update_flags) 0x1u)
  261. #define colourpicker_UPDATE_TRANSPARENT         ((colourpicker_update_flags) 0x2u)
  262. #define colourpicker_UPDATE_TYPE                ((colourpicker_update_flags) 0x4u)
  263. #define colourpicker_UPDATE_VISIBLE             ((colourpicker_update_flags) 0x8u)
  264. #define colourpicker_UPDATE_SCROLL              ((colourpicker_update_flags) 0x10u)
  265. #define colourpicker_UPDATE_TITLE               ((colourpicker_update_flags) 0x20u)
  266. #define colourpicker_UPDATE_COLOUR              ((colourpicker_update_flags) 0x40u)
  267. #define colourpicker_UPDATE_MODEL               ((colourpicker_update_flags) 0x80u)
  268. #define colourpicker_UPDATE_IGNORE_HELP         ((colourpicker_update_flags) 0x100u)
  269. #define colourpicker_UPDATE_IGNORE_KEY_PRESSED  ((colourpicker_update_flags) 0x200u)
  270.  
  271. /*************************
  272.  * Function declarations *
  273.  *************************/
  274.  
  275. #ifdef __cplusplus
  276.    extern "C" {
  277. #endif
  278.  
  279. /* ------------------------------------------------------------------------
  280.  * Function:      colourpicker_register_model()
  281.  *
  282.  * Description:   For internal use only
  283.  *
  284.  * Input:         model_no - value of R0 on entry
  285.  *                model - value of R1 on entry
  286.  *                workspace - value of R2 on entry
  287.  *
  288.  * Other notes:   Calls SWI 0x47700.
  289.  */
  290.  
  291. extern os_error *xcolourpicker_register_model (int model_no,
  292.       colourpicker_model const *model,
  293.       void *workspace);
  294. __swi (0x47700) void colourpicker_register_model (int model_no,
  295.       colourpicker_model const *model,
  296.       void *workspace);
  297.  
  298. /* ------------------------------------------------------------------------
  299.  * Function:      colourpicker_deregister_model()
  300.  *
  301.  * Description:   For internal use only
  302.  *
  303.  * Input:         model_no - value of R0 on entry
  304.  *
  305.  * Other notes:   Calls SWI 0x47701.
  306.  */
  307.  
  308. extern os_error *xcolourpicker_deregister_model (int model_no);
  309. __swi (0x47701) void colourpicker_deregister_model (int model_no);
  310.  
  311. /* ------------------------------------------------------------------------
  312.  * Function:      colourpicker_open_dialogue()
  313.  *
  314.  * Description:   Creates and opens a colour picker dialogue
  315.  *
  316.  * Input:         flags - value of R0 on entry
  317.  *                dialogue - value of R1 on entry
  318.  *
  319.  * Output:        d - value of R0 on exit (X version only)
  320.  *                w - value of R1 on exit
  321.  *
  322.  * Returns:       R0 (non-X version only)
  323.  *
  324.  * Other notes:   Calls SWI 0x47702.
  325.  */
  326.  
  327. extern os_error *xcolourpicker_open_dialogue (colourpicker_open_flags flags,
  328.       colourpicker_dialogue const *dialogue,
  329.       colourpicker_d *d,
  330.       wimp_w *w);
  331. extern colourpicker_d colourpicker_open_dialogue (colourpicker_open_flags flags,
  332.       colourpicker_dialogue const *dialogue,
  333.       wimp_w *w);
  334.  
  335. /* ------------------------------------------------------------------------
  336.  * Function:      colourpicker_close_dialogue()
  337.  *
  338.  * Description:   Closes a colour picker dialogue which is in progress
  339.  *
  340.  * Input:         flags - value of R0 on entry
  341.  *                d - value of R1 on entry
  342.  *
  343.  * Other notes:   Calls SWI 0x47703.
  344.  */
  345.  
  346. extern os_error *xcolourpicker_close_dialogue (colourpicker_close_flags flags,
  347.       colourpicker_d d);
  348. __swi (0x47703) void colourpicker_close_dialogue (colourpicker_close_flags flags,
  349.       colourpicker_d d);
  350.  
  351. /* ------------------------------------------------------------------------
  352.  * Function:      colourpicker_update_dialogue()
  353.  *
  354.  * Description:   Updates some or all of the contents of a colour picker
  355.  *                dialogue
  356.  *
  357.  * Input:         flags - value of R0 on entry
  358.  *                d - value of R1 on entry
  359.  *                dialogue - value of R2 on entry
  360.  *
  361.  * Other notes:   Calls SWI 0x47704.
  362.  */
  363.  
  364. extern os_error *xcolourpicker_update_dialogue (colourpicker_update_flags flags,
  365.       colourpicker_d d,
  366.       colourpicker_dialogue const *dialogue);
  367. __swi (0x47704) void colourpicker_update_dialogue (colourpicker_update_flags flags,
  368.       colourpicker_d d,
  369.       colourpicker_dialogue const *dialogue);
  370.  
  371. /* ------------------------------------------------------------------------
  372.  * Function:      colourpicker_read_dialogue()
  373.  *
  374.  * Description:   Reads the current state of a colour picker dialogue
  375.  *                without changing it
  376.  *
  377.  * Input:         flags - value of R0 on entry
  378.  *                d - value of R1 on entry
  379.  *                dialogue - value of R2 on entry
  380.  *
  381.  * Output:        w - value of R1 on exit
  382.  *                size - value of R2 on exit
  383.  *
  384.  * Other notes:   Calls SWI 0x47705.
  385.  */
  386.  
  387. extern os_error *xcolourpicker_read_dialogue (colourpicker_read_flags flags,
  388.       colourpicker_d d,
  389.       colourpicker_dialogue *dialogue,
  390.       wimp_w *w,
  391.       int *size);
  392. extern void colourpicker_read_dialogue (colourpicker_read_flags flags,
  393.       colourpicker_d d,
  394.       colourpicker_dialogue *dialogue,
  395.       wimp_w *w,
  396.       int *size);
  397.  
  398. /* ------------------------------------------------------------------------
  399.  * Function:      colourpicker_set_colour()
  400.  *
  401.  * Description:   Reserved for future expansion
  402.  *
  403.  * Input:         flags - value of R0 on entry
  404.  *                colour - value of R1 on entry
  405.  *
  406.  * Other notes:   Calls SWI 0x47706.
  407.  */
  408.  
  409. extern os_error *xcolourpicker_set_colour (colourpicker_set_flags flags,
  410.       colourpicker_colour const *colour);
  411. __swi (0x47706) void colourpicker_set_colour (colourpicker_set_flags flags,
  412.       colourpicker_colour const *colour);
  413.  
  414. /* ------------------------------------------------------------------------
  415.  * Function:      colourpicker_help_reply()
  416.  *
  417.  * Description:   Makes a colour picker respond to a Message_HelpRequest
  418.  *                with its own help text
  419.  *
  420.  * Input:         flags - value of R0 on entry
  421.  *                help_request - value of R1 on entry
  422.  *
  423.  * Other notes:   Calls SWI 0x47707.
  424.  */
  425.  
  426. extern os_error *xcolourpicker_help_reply (colourpicker_help_flags flags,
  427.       wimp_message const *help_request);
  428. __swi (0x47707) void colourpicker_help_reply (colourpicker_help_flags flags,
  429.       wimp_message const *help_request);
  430.  
  431. /* ------------------------------------------------------------------------
  432.  * Function:      colourpickermodelswi_colour_changed()
  433.  *
  434.  * Description:   Informs the front end to send a message to the client, if
  435.  *                required
  436.  *
  437.  * Input:         colour - value of R1 on entry
  438.  *
  439.  * Other notes:   Calls SWI 0x47708 with R0 = 0x0.
  440.  */
  441.  
  442. extern os_error *xcolourpickermodelswi_colour_changed (colourpicker_colour const *colour);
  443. extern void colourpickermodelswi_colour_changed (colourpicker_colour const *colour);
  444.  
  445. /* ------------------------------------------------------------------------
  446.  * Function:      colourpickermodelswi_colour_changed_by_dragging()
  447.  *
  448.  * Description:   Informs the front end to send a dragging message to the
  449.  *                client, if required
  450.  *
  451.  * Input:         colour - value of R1 on entry
  452.  *
  453.  * Other notes:   Calls SWI 0x47708 with R0 = 0x1.
  454.  */
  455.  
  456. extern os_error *xcolourpickermodelswi_colour_changed_by_dragging (colourpicker_colour const *colour);
  457. extern void colourpickermodelswi_colour_changed_by_dragging (colourpicker_colour const *colour);
  458.  
  459. /* ------------------------------------------------------------------------
  460.  * Function:      colourpickermodelswi_claim_event()
  461.  *
  462.  * Description:   Informs the front end that the back end wants an event
  463.  *                type
  464.  *
  465.  * Input:         event - value of R1 on entry
  466.  *                colour - value of R2 on entry
  467.  *
  468.  * Other notes:   Calls SWI 0x47708 with R0 = 0x2.
  469.  */
  470.  
  471. extern os_error *xcolourpickermodelswi_claim_event (int event,
  472.       colourpicker_colour const *colour);
  473. extern void colourpickermodelswi_claim_event (int event,
  474.       colourpicker_colour const *colour);
  475.  
  476. /* ------------------------------------------------------------------------
  477.  * Function:      colourpickermodelswi_release_event()
  478.  *
  479.  * Description:   Informs the front end that the back end no longer wants
  480.  *                an event type
  481.  *
  482.  * Input:         event - value of R1 on entry
  483.  *                colour - value of R2 on entry
  484.  *
  485.  * Other notes:   Calls SWI 0x47708 with R0 = 0x3.
  486.  */
  487.  
  488. extern os_error *xcolourpickermodelswi_release_event (int event,
  489.       colourpicker_colour const *colour);
  490. extern void colourpickermodelswi_release_event (int event,
  491.       colourpicker_colour const *colour);
  492.  
  493. /* ------------------------------------------------------------------------
  494.  * Function:      colourpickermodelswi_process_key()
  495.  *
  496.  * Description:   Passes an unhandled key press on to the front end
  497.  *
  498.  * Input:         c - value of R1 on entry
  499.  *                colour - value of R2 on entry
  500.  *
  501.  * Other notes:   Calls SWI 0x47708 with R0 = 0x4.
  502.  */
  503.  
  504. extern os_error *xcolourpickermodelswi_process_key (int c,
  505.       colourpicker_colour const *colour);
  506. extern void colourpickermodelswi_process_key (int c,
  507.       colourpicker_colour const *colour);
  508.  
  509. /* ------------------------------------------------------------------------
  510.  * Function:      service_colour_picker_loaded()
  511.  *
  512.  * Description:   For internal use only
  513.  *
  514.  * Input:         loaded_service - value of R2 on entry
  515.  *                workspace - value of R3 on entry
  516.  *
  517.  * Other notes:   Calls SWI 0x30 with R1 = 0x93.
  518.  */
  519.  
  520. extern os_error *xservice_colour_picker_loaded (void const *loaded_service,
  521.       void *workspace);
  522. extern void service_colour_picker_loaded (void const *loaded_service,
  523.       void *workspace);
  524.  
  525. #ifdef __cplusplus
  526.    }
  527. #endif
  528.  
  529. #endif
  530.