home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / AddOns / yypacket.h < prev   
Encoding:
C/C++ Source or Header  |  1993-05-13  |  12.2 KB  |  394 lines

  1. /* Header File foe YY-Packet
  2.  * This file is part of YY-server of YYonX (1.3 Distribution)
  3.  * $Id: yypacket.h,v 1.1 1993/01/18 12:57:24 pab Exp $
  4.  */
  5.  
  6. /****************************************************************************
  7. ;;;
  8. ;;;  Copyright (C) 1989,1990,1991 Aoyama Gakuin University
  9. ;;;
  10. ;;;        All Rights Reserved
  11. ;;;
  12. ;;; This software is developed for the YY project of Aoyama Gakuin University.
  13. ;;; Permission to use, copy, modify, and distribute this software
  14. ;;; and its documentation for any purpose and without fee is hereby granted,
  15. ;;; provided that the above copyright notices appear in all copies and that
  16. ;;; both that copyright notice and this permission notice appear in 
  17. ;;; supporting documentation, and that the name of Aoyama Gakuin
  18. ;;; not be used in advertising or publicity pertaining to distribution of
  19. ;;; the software without specific, written prior permission.
  20. ;;;
  21. ;;; This software is made available AS IS, and Aoyama Gakuin makes no
  22. ;;; warranty about the software, its performance or its conformity to
  23. ;;; any specification. 
  24. ;;;
  25. ;;; To make a contact: Send E-mail to ida@csrl.aoyama.ac.jp for overall
  26. ;;; issues. To ask specific questions, send to the individual authors at
  27. ;;; csrl.aoyama.ac.jp. To request a mailing list, send E-mail to 
  28. ;;; yyonx-request@csrl.aoyama.ac.jp.
  29. ;;;
  30. ;;; Authors:
  31. ;;;   Version 1.0 90/02/26 by Keisuke 'Keiko' Tanaka
  32. ;;;                (keisuke@csrl.aoyama.ac.jp)
  33. ;;;   Version 2.0 90/08/27 by Keisuke 'Keiko' Tanaka
  34. ;;;            Page Mode Territory is supported
  35. ;;;   Version 2.3 90/11/05 by Keisuke 'Keiko' Tanaka
  36. ;;;            Copyright Notice is rewritten
  37. ;;;   Version 2.10 91/01/30 by Keisuke 'Keiko' Tanaka
  38. ;;;            Add definitions for frame-animation and image handling
  39. ;;;
  40. ****************************************************************************/
  41.  
  42. /****************************************************************************
  43.   $Revision: 1.1 $ Written by Keisuke 'Keiko' Tanaka
  44.   $Date: 1993/01/18 12:57:24 $
  45. ****************************************************************************/
  46.  
  47. /***************************************************************************
  48.  * Packet Header:
  49.  *  +----------------+----------------+----------------+----------------+
  50.  *  | COMMAND        |  P  A  C  K  E  T  L  E  N  G  T  H              |
  51.  *  +----------------+----------------+----------------+----------------+
  52.  *  |                |                |                | TYPE           |
  53.  *  +----------------+----------------+----------------+----------------+
  54.  *
  55.  ***************************************************************************/
  56.  
  57. typedef u_long                x_color;
  58. typedef struct _yy_comm_channel        yy_comm_channel;
  59. typedef struct _yy_packet_header    yy_packet_header;
  60. typedef struct _yy_packet_block        yy_packet_block;
  61. typedef struct _yy_packet        yy_packet;
  62. typedef struct _yy_packet_queue_ent_    YYPKTQUEENT;
  63. typedef struct _yy_packet_system_queue    yy_packet_system_queue;
  64.  
  65. struct _yy_packet_header {
  66.     byte hdCommand;
  67.     byte hdPacketLength[3];
  68.     byte hdDummy[3];
  69.     byte hdPacketType:6, hdBlockType:2;
  70. } ;
  71. #define YYPACKET_BLOCKTYPE        3
  72. #define YYPACKET_BLOCKTYPE_ONLYONE    0
  73. #define YYPACKET_BLOCKTYPE_FIRSTBLOCK    1
  74. #define YYPACKET_BLOCKTYPE_CONTINUE    2
  75. #define YYPACKET_BLOCKTYPE_LASTBLOCK    3
  76.  
  77. struct _yy_packet_block {
  78.     /* Data Area */
  79.     byte *pbBuf;    /* data in this block */
  80.     int pbBlockSize;    /* buffer size */
  81.     int pbLength;    /* length of meaningful data */
  82.     /* Read/Write Control */
  83.     int pbUnreadLength;    /* not read.. */
  84.     int pbFreeSize;    /* size of free area this block */
  85.     /* List */
  86.     struct _yy_packet_block *pbNextBlock;
  87.     struct _yy_packet_block *pbPrevBlock;
  88. } ;
  89.  
  90. struct _yy_packet {
  91.     /* These Entries are brought from Packet */
  92.     int pktPriority;
  93.     int pktLength;
  94.     int pktType;
  95.     int pktCommand;
  96.     struct _yy_packet_block pktFirstBlock;
  97.     /* Read/Write Control */
  98.     bool pktReadFlag;    /* TRUE: read, FLASE: write */
  99.     int pktUnreadLength;    /* Unread data */
  100.     struct _yy_packet_block *pktRWBlock;
  101.     byte *pktRWPtr;        /* */
  102. } ;
  103.  
  104. struct _yy_packet_queue_ent_ {
  105.     struct _yy_packet         *pqPacketBody;
  106.     struct _yy_packet_queue_ent_ *pqNextPacket;
  107.     struct _yy_packet_queue_ent_ *pqPrevPacket;
  108. } ;
  109.  
  110. struct _yy_packet_system_queue {
  111.     struct _yy_packet_queue_ent_ *sysqSend;
  112.     struct _yy_packet_queue_ent_ *sysqRecv;
  113.     struct _yy_packet_queue_ent_ *sysqRead;
  114.     struct _yy_packet_queue_ent_ *sysqWrite;
  115.     struct _yy_packet_queue_ent_ *sysqEvent;
  116. } ;
  117.  
  118. struct _yy_channel_status {
  119.     int csDomain;        /* UNIX Domain or INET Domain */
  120.     bool csTimeDump;    /* Time dumped per Packet */
  121.     struct _yy_time_table *csTblTop;
  122.     struct _yy_time_table *csTblEnd;
  123.     int csRecvPkt;
  124.     int csSendPkt;
  125.     int csEventPkt;
  126. } ;
  127. struct _yy_connection {
  128.     int FD;        /* Socket */
  129.     int SPackets;
  130.     int SBlocks;
  131.     int SBytes;
  132.     int RPackets;
  133.     int RBlocks;
  134.     int RBytes;
  135. } ;
  136. typedef struct _yy_connection    yy_connection;
  137.  
  138. typedef struct _yy_font_table    yy_font_table;
  139.  
  140. struct _yy_comm_channel {
  141.     struct _yy_channel_for_x_server {
  142.     int xFd;            /* X Connection */
  143.     bool xNeedFlush;        /* Should we send XFlush Request? */
  144.     char *xPrivate;            /* X Window Control */
  145.     } ccXChannel;
  146.     struct _yy_channel_for_yy_client {
  147.     int yyDebugMode;
  148.     int yyServNo;            /* Channel # */
  149.     int yyUnixReqFd;        /* for Multi Connection */
  150.     int yyInetReqFd;        /* for Multi Connection */
  151.     int yyEvtReqFd;            /* for Multi Connection */
  152.     struct _yy_connection yyCmdCH;    /* Command Stream */
  153.     struct _yy_connection yyEvtCH;    /* Event Stream */
  154.     int yySyncCount;
  155.     int yySyncPacketNum;
  156.     int yyMaxPacketSize;
  157.     bool yyHaveKeyIN;
  158.     struct _yy_channel_status yyStatBuf;
  159.     } ccYYChannel;
  160.     yy_font_table *ccFontTable;
  161.     yy_packet_system_queue ccSystemQueue;
  162.     struct _yy_timeout_table {
  163.     int toWaitTime;
  164.     int toXFlushCount;
  165.     int toKeyinCount;
  166.     int toDClickCount;
  167.     } ccYYTimeOutTable;
  168. #ifdef DEBUG
  169.     struct {
  170.     int dbWriteBlocked;
  171.     struct timeval dbTimer;
  172.     } ccDeBugTable;
  173. #endif
  174. } ;
  175. typedef    struct _yy_timeout_table yy_timeout_table;
  176.  
  177. #define YYDB_NONE        0
  178. #define YYDB_SYNC        01
  179. #define DebugMode(ch)        ((ch)->ccYYChannel.yyDebugMode)
  180. #define ccYYDebugMode        ccYYChannel.yyDebugMode
  181. #define DebugSyncMode(ch)    (DebugMode(ch) & YYDB_SYNC)
  182.  
  183. #define ccXFd            ccXChannel.xFd
  184. #define ccXNeedFlush        ccXChannel.xNeedFlush
  185. #define ccXPrivate        ccXChannel.xPrivate
  186.  
  187. #define ccYYServNo        ccYYChannel.yyServNo
  188.  
  189. #define ccYYFd            ccYYChannel.yyCmdCH.FD
  190. #define ccYYCmdCH        ccYYChannel.yyCmdCH
  191. #define ccYYFd2            ccYYChannel.yyEvtCH.FD
  192. #define ccYYEvtCH        ccYYChannel.yyEvtCH
  193.  
  194. #define ccYYUnixReqFd        ccYYChannel.yyUnixReqFd
  195. #define ccYYInetReqFd        ccYYChannel.yyInetReqFd
  196. #define ccYYSyncCount        ccYYChannel.yySyncCount
  197. #define ccYYSyncPacketNum    ccYYChannel.yySyncPacketNum
  198. #define ccYYHaveKeyIN        ccYYChannel.yyHaveKeyIN
  199. #define ccYYStat        ccYYChannel.yyStatBuf
  200.  
  201. #define ccYYWaitTime        ccYYTimeOutTable.toWaitTime
  202. #define ccYYXFlushCount        ccYYTimeOutTable.toXFlushCount
  203. #define ccYYKeyinCount        ccYYTimeOutTable.toKeyinCount
  204. #define ccYYDClickCount        ccYYTimeOutTable.toDClickCount
  205.  
  206. #define ccDBTimer        ccDeBugTable.dbTimer
  207.  
  208. #define QUE(c)            (&(c)->ccSystemQueue)
  209.  
  210. extern void reset_packet_read_ptr();
  211. extern yy_packet *alloc_new_yy_packet();
  212. extern yy_packet *create_error_packet();
  213. extern void append_packet_entry_integer();
  214. extern void append_packet_entry_bytes();
  215. extern void append_packet_entry_onebyte();
  216. extern void append_packet_entry_string_with_length();
  217. extern void append_packet_entry_color();
  218. #define append_packet_entry_string(p, s)    \
  219.     append_packet_entry_string_with_length((p), strlen((s)), (s))
  220. extern int read_packet_entry_integer();
  221. extern int read_packet_entry_bytes();
  222. extern int read_packet_entry_onebyte();
  223. extern int read_packet_entry_string();
  224. #ifdef COLORNAME
  225. extern char *read_packet_entry_color();
  226. #else
  227. extern x_color read_packet_entry_color();
  228. #endif
  229. extern void dump_yy_packet();
  230.  
  231. #define YYPACKETTYPE_NONE    00
  232. #define YYPACKETTYPE_COMMAND    01
  233. #define YYPACKETTYPE_SYNC    02
  234. #define YYPACKETTYPE_ACK    04
  235. #define YYPACKETTYPE_NACK    05
  236. #define YYPACKETTYPE_EVENT    010
  237. #define YYPACKETTYPE_ERROR    040
  238.  
  239. #define YYCOMMAND_INIT                0
  240.  
  241. #define YYCOMMAND_CREATE_TERRITORY        1
  242. #define YYCOMMAND_DISPLAY_TERRITORY        2
  243. #define YYCOMMAND_MOVE_TERRITORY        3
  244. #define YYCOMMAND_RESIZE_TERRITORY        4
  245. #define YYCOMMAND_DESTROY_TERRITORY        5
  246. #define YYCOMMAND_REPARENT_TERRITORY        6
  247. #define YYCOMMAND_RAISE_TERRITORY        7
  248. #define YYCOMMAND_LOWER_TERRITORY        8
  249.  
  250. #define YYCOMMAND_LOAD_FONT            10
  251.  
  252. #define YYCOMMAND_DRAW_POINT            20
  253. #define YYCOMMAND_DRAW_LINE            21
  254. #define YYCOMMAND_DRAW_CIRCLE            22
  255. #define YYCOMMAND_DRAW_LINES            23
  256. #define YYCOMMAND_DRAW_POLYGON            24
  257. #define YYCOMMAND_DRAW_ARC            25
  258. #define YYCOMMAND_DRAW_RECTANGLE        26
  259.  
  260. #define YYCOMMAND_FILL_POLYGON            27
  261. #define YYCOMMAND_FILL_RECTANGLE        28
  262. #define YYCOMMAND_FILL_CIRCLE            29
  263. #define YYCOMMAND_FILL_ARC            30
  264.  
  265. #define YYCOMMAND_DRAW_TEXT            31
  266.  
  267. #define YYCOMMAND_CLEAR_TERRITORY        32
  268. #define YYCOMMAND_DRAW_BACKGROUND        33
  269. #define YYCOMMAND_CREATE_BITMAP            34
  270. #define YYCOMMAND_OPERATE_BITBLT        35
  271. #define YYCOMMAND_SAVE_PICTURE            36
  272. #define YYCOMMAND_LOAD_PICTURE            37
  273. #define YYCOMMAND_TRANSLATE_PICTURE        38
  274. #define YYCOMMAND_ROTATE_PICTURE        39
  275.  
  276. #define YYCOMMAND_LOAD_FILE            40
  277.  
  278. #define YYCOMMAND_DRAW_OVAL            41
  279. #define YYCOMMAND_FILL_OVAL            42
  280. #define YYCOMMAND_DRAW_VTEXT            43
  281. #define YYCOMMAND_DRAW_RTEXT            44
  282.  
  283. #define YYCOMMAND_QUERY_COLOR            45
  284.  
  285. #define YYCOMMAND_GET_COLOR_NUMRGB        46
  286. #define YYCOMMAND_GET_COLOR_RGB            49
  287. #define YYCOMMAND_GET_COLOR_NUMBER        50
  288. #define YYCOMMAND_CHANGE_COLOR_RGB        51
  289. #define YYCOMMAND_FREE_COLOR            52
  290.  
  291. #define YYCOMMAND_DEFINE_ANIMATION_FRAME    54
  292. #define YYCOMMAND_START_ANIMATION        55
  293. #define YYCOMMAND_STOP_ANIMATION        56
  294. #define YYCOMMAND_DESTROY_ANIMATION_FRAME    57
  295. #define YYCOMMAND_PUT_ANIMATION_FRAME        58
  296.  
  297. #define YYCOMMAND_GET_IMAGE            60
  298. #define YYCOMMAND_PUT_IMAGE            61
  299.  
  300. #define YYCOMMAND_KEY_EVENT            70
  301. #define YYCOMMAND_SELECT_TERRITORY        71
  302. #define YYCOMMAND_SET_EVENT_MASK        72
  303. #define YYCOMMAND_MOUSE_EVENT            73
  304. #define YYCOMMAND_MASK_EVENT            74
  305.  
  306. #define YYCOMMAND_SET_PAGE_ATTRIBUTE        80
  307. #define YYCOMMAND_MOVE_PAGE_TERRITORY        81
  308. #define YYCOMMAND_START_INPUT            82
  309. #define YYCOMMAND_ABORT_INPUT            83
  310. #define YYCOMMAND_DRAW_TEXT_ON_PAGE        84
  311. #define YYCOMMAND_GET_POSITION_ON_PAGE        85
  312. #define YYCOMMAND_CHANGE_PAGE_SIZE        86
  313.  
  314. #define YYCOMMAND_CREATE_CURSOR_TERRITORY    90
  315. #define YYCOMMAND_MOVE_CURSOR_HOTSPOT        91
  316. #define YYCOMMAND_CHANGE_CURSOR_BITMAP        92
  317. #define YYCOMMAND_MOVE_CURSOR            93
  318. #define YYCOMMAND_DESTROY_CURSOR        94
  319. #define YYCOMMAND_GET_CURSUR_POSITION        95
  320. #define YYCOMMAND_DISPLAY_CURSOR        52
  321.  
  322. #define YYCOMMAND_DEBUG_DO_INPUT        250
  323. #define YYCOMMAND_DEBUG_RESET_TIMER        251
  324. #define YYCOMMAND_DEBUG_SET_TIMER        252
  325. #define YYCOMMAND_DEBUG_SHOW_TABLE        253
  326. #define YYCOMMAND_DEBUG_LIST_COLOR        254
  327. #define YYCOMMAND_DEBUG_LIST_TERRITORY        255
  328.  
  329.  
  330. #define YYNOERROR            0
  331. #define YYERROR_NOTYYPACKET        1
  332. #define YYERROR_NODISP            2
  333. #define YYERROR_NOTERRITORY        3
  334. #define YYERROR_NOCOLOR            4
  335. #define YYERROR_DUPROOT            5
  336. #define YYERROR_NOROOT            6
  337. #define YYERROR_TYPEMISMATCH        7
  338. #define YYERROR_SYSERR            8
  339. #define YYERROR_NOFONT            9
  340.  
  341. #define ALLOC_ACKPACKET(p)    \
  342.     (alloc_new_yy_packet((p)->pktCommand, YYPACKETTYPE_ACK, 0, NULL))
  343. #define ALLOC_NACKPACKET(p)    \
  344.     (alloc_new_yy_packet((p)->pktCommand, YYPACKETTYPE_NACK, 0, NULL))
  345. #define ALLOC_ERRPACKET(p)    \
  346.     (alloc_new_yy_packet((p)->pktCommand, YYPACKETTYPE_ERROR, 0, NULL))
  347. #define ALLOC_EVENTPACKET(cmd)    \
  348.     (alloc_new_yy_packet(cmd, YYPACKETTYPE_EVENT, 0, NULL))
  349. #define SETYYERRORCODE(p, code)    (append_packet_entry_integer((p), (code)))
  350.  
  351.  
  352. #define YYMASK_ALL        0777777777
  353.  
  354. #define YYMASK_BUTTON_PRESS    07
  355. #define YYMASK_RIGHT_PRESS    01
  356. #define YYMASK_MIDDLE_PRESS    02
  357. #define YYMASK_LEFT_PRESS    04
  358.  
  359. #define YYMASK_BUTTON_RELEASE    070
  360. #define YYMASK_RIGHT_RELEASE    010
  361. #define YYMASK_MIDDLE_RELEASE    020
  362. #define YYMASK_LEFT_RELEASE    040
  363.  
  364. #define YYMASK_MOVE        0100
  365. #define YYMASK_ENTER        0200
  366. #define YYMASK_IN        YYMASK_ENTER
  367. #define YYMASK_LEAVE        0400
  368. #define YYMASK_OUT        YYMASK_LEAVE
  369.  
  370. #define YYMASK_STAY        01000
  371.  
  372. #define YYMASK_DOUBLE_CLICK    016000
  373. #define YYMASK_RIGHT_DOUBLE    02000
  374. #define YYMASK_MIDDLE_DOUBLE    04000
  375. #define YYMASK_LEFT_DOUBLE    010000
  376.  
  377. #define YYMASK_INTR        0200000
  378. #define YYMASK_META        0100000000
  379. #define YYMASK_CTRL        0200000000
  380. #define YYMASK_SHIFT        0400000000
  381.  
  382.  
  383. #define YYIMAGEFORM_COLOR    0x8000
  384. #define YYIMAGEFORM_GRAY    0x4000
  385. #define YYIMAGEFORM_BW        0x2000
  386. #define YYIMAGEFORM_NCW        1
  387. #define YYIMAGEFORM_YY        2
  388.  
  389. /*
  390.  * Local variables:
  391.  * eval: (set-kanji-fileio-code 'EUC)
  392.  * end:
  393.  */
  394.