home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 2 / AUCD2.iso / internet / acornet.spk / !Acornet / Apps / !ArcWeb / h / requester
Text File  |  1996-01-19  |  12KB  |  302 lines

  1. /*
  2.  * ArcWeb
  3.  *
  4.  * Copyright (C) Stewart Brodie, 1994, 1995, 1996
  5.  *
  6.  * This product is supplied under the terms laid down in the `Terms' file.
  7.  *
  8.  * This file may be distributed freely with any ArcWeb related software,
  9.  * provided it meets with the definition of 'free' in the 'Terms' file.
  10.  *
  11.  * This file: requester.h
  12.  *
  13.  *   A WIMP-library-independent interface definition.  All structures are
  14.  *   defined in terms of basic types.
  15.  *
  16.  */
  17. #ifndef _requester_h_included
  18. #define _requester_h_included
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. #define arcweb_MAXURL           (200)
  24.  
  25.  
  26. #define msg_Arcweb__base        (0x4A240)
  27. #define msg_Arcweb__last    (msg_Arcweb__base + 0x3f)
  28. #define swi_Arcweb__base        (msg_Arcweb__base)
  29. #define err_Arcweb__base        (0x80D200)
  30.  
  31. typedef enum {
  32.  
  33.         Message_ArcwebFetchRequest    = (msg_Arcweb__base +  0),
  34.         Message_ArcwebFetchDone       = (msg_Arcweb__base +  1),
  35.         Message_ArcwebRenderRequest   = (msg_Arcweb__base +  2),
  36.         Message_ArcwebRenderDone      = (msg_Arcweb__base +  3),
  37.         Message_ArcwebPostRequest     = (msg_Arcweb__base +  4),
  38.         Message_ArcwebPostDone        = (msg_Arcweb__base +  5),
  39.         Message_ArcwebEMailRequest    = (msg_Arcweb__base +  6),
  40.         Message_ArcwebEMailDone       = (msg_Arcweb__base +  7),
  41.  
  42.         Message_ArcwebImageSize       = (msg_Arcweb__base + 16),
  43.         Message_ArcwebImageComplete   = (msg_Arcweb__base + 17),
  44.         Message_ArcwebXferControl     = (msg_Arcweb__base + 18),
  45.         Message_ArcwebXferControlAck  = (msg_Arcweb__base + 19),
  46.  
  47.         Message_ArcwebQuit            = (msg_Arcweb__base + 32),
  48.         Message_ArcwebExpire          = (msg_Arcweb__base + 33),
  49.         Message_ArcwebAbortRequest    = (msg_Arcweb__base + 34),
  50.         Message_ArcwebTransferStatus  = (msg_Arcweb__base + 35),
  51.         Message_ArcwebConfigure       = (msg_Arcweb__base + 36),
  52.         Message_ArcwebExternalLaunch  = (msg_Arcweb__base + 37),
  53.         Message_ArcwebLaunchDone      = (msg_Arcweb__base + 38),
  54.         Message_ArcwebWebBrowser      = (msg_Arcweb__base + 39),
  55.         Message_ArcwebColourSelected  = (msg_Arcweb__base + 40),
  56.         
  57.  
  58.         Message_IntertalkRequest      = (0x4AF80)
  59.  
  60. } arcweb_msgid;
  61.  
  62.  
  63. /* Use these constants in the flag words in the messages below */
  64.  
  65. #define arcweb_FLAGS_error              0x80000000
  66. #define arcweb_FLAGS_typeknown          0x40000000
  67. #define arcweb_FLAGS_inhibit_render     0x20000000
  68. #define arcweb_FLAGS_want_symlink       0x10000000
  69. #define arcweb_FLAGS_url_changed        0x08000000
  70. #define arcweb_FLAGS_close_previous     0x04000000
  71. #define arcweb_FLAGS_image_fetch        0x02000000
  72. #define arcweb_FLAGS_error_handled      0x01000000
  73. #define arcweb_FLAGS_inhibit_display    0x00800000
  74. #define arcweb_FLAGS_extended_url       0x00400000
  75. #define arcweb_FLAGS_email_complete     0x00200000
  76. #define arcweb_FLAGS_reload        0x00100000
  77. #define arcweb_FLAGS_load_to_disc    0x00080000
  78. #define arcweb_FLAGS_reserved_mask      0x00060000
  79. #define arcweb_FLAGS_extended_type      0x00010000
  80. #define arcweb_FLAGS_typemask           0x0001ffff
  81. #define arcweb_FLAGS_forcing_images    0x00000100
  82. #define arcweb_FLAGS_referer_available    0x00000080
  83. #define arcweb_FLAGS_xfer_control       0x00000020
  84. #define arcweb_FLAGS_images_disabled    0x00000010
  85. #define arcweb_FLAGS_post_was_put       0x00000008
  86. #define arcweb_FLAGS_fast_images    0x00000004
  87. #define arcweb_FLAGS_local_launch    0x00000002
  88. #define arcweb_FLAGS_document_fetch    0x00000000
  89.  
  90. #define arcweb_TYPES_plaintext          0x00010000
  91. #define arcweb_TYPES_html               0x00010001
  92. #define arcweb_TYPES_image              0x00010002
  93. #define arcweb_TYPES_audio              0x00010003
  94. #define arcweb_TYPES_video              0x00010004
  95. #define arcweb_TYPES_binary             0x00010005
  96. #define arcweb_TYPES_image_jpeg         0x00010100
  97. #define arcweb_TYPES_image_gif          0x00010101
  98. #define arcweb_TYPES_image_jfif         0x00010102
  99. #define arcweb_TYPES_image_mswinbitmap  0x00010103
  100. #define arcweb_TYPES_image_xbm          0x00010104
  101. #define arcweb_TYPES_image_clear        0x00010105
  102. #define arcweb_TYPES_image_tiff         0x00010106
  103. #define arcweb_TYPES_image_png          0x00010107
  104. #define arcweb_TYPES_video_mpeg         0x00010200
  105. #define arcweb_TYPES_video_armovie      0x00010201
  106. #define arcweb_TYPES_audio_misc         0x00010300
  107. #define arcweb_TYPES_audio_simple       0x00010301
  108. #define arcweb_TYPES_audio_aiff         0x00010302
  109. #define arcweb_TYPES_unknown            0x0001ffff
  110.  
  111. #define arcweb_XFER_xmit_running        0x00000001
  112. #define arcweb_XFER_recv_running        0x00000002
  113. #define arcweb_XFER_xmit_complete       0x00000004
  114. #define arcweb_XFER_recv_complete       0x00000008
  115. #define arcweb_XFER_misc_running        0x00000010
  116. #define arcweb_XFER_reserved            0xffffffe0
  117.  
  118.  
  119. /* Flag bit meanings:
  120.  *
  121.  *  Responses only:
  122.  *      bits 0 to 15    : RISC OS/ArcWeb filetype indicator
  123.  *      bit 16          : if set, type is arcweb_TYPES_*, else RISC OS type
  124.  *
  125.  *  Requests only:
  126.  *      bit  1          : the previous page was a local: URL
  127.  *      bit  2          : if set, 'fast images' are being used - not implemented yet
  128.  *      bit  3          : if set, the POST request should be sent as a PUT instead
  129.  *      bit  4          : if set, user has disabled image fetching
  130.  *      bit  5          : if set, control transfer protocol is available
  131.  *
  132.  *  Both:
  133.  *
  134.  *      bits 17 and 18  : reserved (must be preserved in replies)
  135.  *      bit 19          : if set, user has requested a 'load to disc'
  136.  *      bit 20          : if set, this is a reload, so flush any cache
  137.  *      bit 21          : if set, the e-mail message is complete
  138.  *      bit 22          : if set, this is an extended URL
  139.  *      bit 23          : if set, ArcWeb will not display the results of the render
  140.  *      bit 24          : if set, ArcWeb wont raise any error to user
  141.  *      bit 25          : if set, this is an inline image fetch, not a page fetch
  142.  *      bit 26          : if set, the previous ArcWeb window should be closed
  143.  *      bit 27          : if set, URL has been changed (+ is in URL file)
  144.  *      bit 28          : if set, request use of symbolic link in host filesystem
  145.  *      bit 29          : if set, (in FetchDone), ArcWeb will not render it
  146.  *      bit 30          : if set, bits 0-16 are valid, else they are invalid
  147.  *      bit 31          : if set, the buffer contains an error message
  148.  *
  149.  */
  150.  
  151. typedef struct {
  152.         struct arcweb_msghdr {    /* message block header. */
  153.           int size;               /* 20<=size<=256, multiple of 4 */
  154.           int task;               /* task handle of sender (filled in by wimp) */
  155.           int my_ref;             /* unique ref number (filled in by wimp) */
  156.           int your_ref;           /* (0==>none) if non-zero, acknowledge */
  157.           arcweb_msgid action;    /* message action code */
  158.         } hdr;
  159.         void           *handle;         /* MUST be preserved */
  160.         int             flags;          /* See above */
  161.         union {
  162.                 int  _arcweb_words[57]; /* Ensure the right size */
  163.                 char _arcweb_data[228]; /* a char version        */
  164.  
  165.                 struct {
  166.                         int     localfile;  /* *RISC OS* file handle */
  167.                         union {
  168.                                 int     url_file;            /* if bit 22 set */
  169.                                 char    URL[arcweb_MAXURL];  /* if bit 22 clr */
  170.                         } url;
  171.                 } fetch_request;
  172.  
  173.                 union {
  174.                         struct {
  175.                                 int     use_given_expiry;
  176.                                 int     use_default_expiry;
  177.                                 char    date[8]; /* to stop Cv5 warnings */
  178.                         } expiry;
  179.                         char    error[228];
  180.                 } fetch_done;
  181.  
  182.                struct {
  183.                         int     localfile;
  184.                         int     formfile;
  185.                         union {
  186.                                 int     url_file;            /* if bit 22 set */
  187.                                 char    URL[arcweb_MAXURL];  /* if bit 22 clr */
  188.                         } url;
  189.                 } post_request;
  190.  
  191.                 struct {
  192.                         int     localsrc;
  193.                         int     localtmp;
  194.                         int     localdiag;
  195.                         int     locallink;
  196.                         int     size_in_msg;
  197.                         char    fileheader[228-5*sizeof(int)];
  198.                 } render_request;
  199.  
  200.                 union {
  201.                         struct {
  202.                                 int x_pix;
  203.                                 int y_pix;
  204.                         } size;
  205.                         char    error[228];
  206.                 } render_done;
  207.  
  208.                 struct {
  209.                         int     formfile;
  210.                 } email_request;
  211.  
  212.                 struct {
  213.                         char    error[228]; /* Do I want this? */
  214.                 } email_done;
  215.  
  216.                 struct {
  217.                         union {
  218.                                 int  url_file;           /* if bit 22 set   */
  219.                                 char URL[arcweb_MAXURL]; /* if bit 22 clear */
  220.                         } url;
  221.                 } expire;
  222.  
  223.                  union {
  224.                         struct {
  225.                                 int     use_given_expiry;
  226.                                 int     use_default_expiry;
  227.                                 char    date[5];
  228.                         } expiry;
  229.                         char    error[228];
  230.                 } post_done;
  231.  
  232.                 struct {
  233.                         int     flags;
  234.                         int     transmit_total;
  235.                         int     transmit_sofar;
  236.                         int     receive_total;
  237.                         int     receive_sofar;
  238.                         char    message[208];
  239.                 } status_report;
  240.  
  241.                 struct {
  242.                         char    reason[228];
  243.                 } abort_request;
  244.  
  245.                 struct {
  246.                         int     renderer_handle;
  247.                         int     x_os_units;
  248.                         int     y_os_units;
  249.                 } image_size;
  250.  
  251.                 struct {
  252.                         int     renderer_handle;
  253.                 } image_complete;
  254.  
  255.                 struct {
  256.                     char    application[228];
  257.                 } configure;
  258.  
  259.                 struct {
  260.                         union {
  261.                                 int  url_file;           /* if bit 22 set   */
  262.                                 char URL[arcweb_MAXURL]; /* if bit 22 clear */
  263.                         } url;
  264.                 } launch_request;
  265.  
  266.                 struct {
  267.                         char    error[228];
  268.                 } launch_done;
  269.  
  270.                 struct {
  271.                         int     localfile;  /* *RISC OS* file handle */
  272.                         union {
  273.                                 int     url_file;            /* if bit 22 set */
  274.                                 char    URL[arcweb_MAXURL];  /* if bit 22 clr */
  275.                         } url;
  276.                 } xfer_request;
  277.  
  278.                 struct {
  279.                         char    error[228];
  280.                 } xfer_request_ack;
  281.                 
  282.                 struct {
  283.                         char     browser[228];
  284.                 } web_browser;
  285.  
  286.         struct {
  287.                 int    background;
  288.                 int    normal;
  289.                 int    link;
  290.                 int    vlink;
  291.                 int    alink;
  292.                 int    no_images;
  293.         } colour_selection;
  294.  
  295.         } data;
  296. } arcweb_msg; /* use as a wimp_msgstr */
  297.  
  298. #ifdef __cplusplus
  299. }
  300. #endif
  301. #endif
  302.