home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / x / xibm.zip / mpel / mpelFifo.h < prev    next >
C/C++ Source or Header  |  1992-01-05  |  11KB  |  343 lines

  1. /*
  2.  * Copyright IBM Corporation 1987,1988,1989
  3.  *
  4.  * All Rights Reserved
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software and its
  7.  * documentation for any purpose and without fee is hereby granted,
  8.  * provided that the above copyright notice appear in all copies and that 
  9.  * both that copyright notice and this permission notice appear in
  10.  * supporting documentation, and that the name of IBM not be
  11.  * used in advertising or publicity pertaining to distribution of the
  12.  * software without specific, written prior permission.
  13.  *
  14.  * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  15.  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  16.  * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  17.  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  18.  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  19.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  20.  * SOFTWARE.
  21.  *
  22. */
  23. #ifndef MPEL_FIFO_SEEN
  24. #define    MPEL_FIFO_SEEN 1
  25.  
  26. /* $Header: /source/third/common/X11R4/server/ddx/ibm/mpel/RCS/mpelFifo.h,v 1.2 90/06/09 02:13:36 jfc Exp $ */
  27. /* $Source: /source/third/common/X11R4/server/ddx/ibm/mpel/RCS/mpelFifo.h,v $ */
  28.  
  29. #if defined(RCS_HDRS) && !defined(lint)
  30. static char *rcsidmpelfifo = "$Id: mpelFifo.h,v 1.2 90/06/09 02:13:36 jfc Exp $";
  31. #endif
  32.  
  33.    /*
  34.     * Definitions for megapel hardware fifo 
  35.     */
  36.  
  37. #define    MPEL_FIFO_LEN    2048
  38. #define    MPEL_MAXRETRY    500
  39.  
  40. #define MPELWaitFifo()   {while (MPEL_PSR&PSR_FIFO_NOT_EMPTY);}
  41.  
  42.    /*
  43.     * structure elements (instructions)
  44.     */
  45.  
  46. #ifdef PORTABLE
  47. #define    mfCmd0Args(cmd)        mpelWFifo(0,(cmd),0,0)
  48. #define    mfCmd1Arg(cmd,a)    mpelWFifo(1,(cmd),(short *)(a),0)
  49. #define    mfCmd2Args(cmd,a,a2)    mpelWFifo(2,(cmd),(short *)(a),(short *)(a2))
  50. #define    mfCmdNArgs(cmd,n,a)    mpelWFifo((n),(cmd),(short *)(a),0)
  51. #define    mfCmdVArgs(cmd,n,a,e)    mpelWFifo((n),(cmd),(short *)(a),(e))
  52. #define    mfData(pD,n)        mpelWFifo(n,0,pD,0)
  53. #else
  54. extern    void    mfCmd0Args();
  55. extern    void    mfCmd1Arg();
  56. extern    void    mfCmd2Args();
  57. extern    void    mfCmdNArgs();
  58. extern    void    mfCmdVArgs();
  59. extern    void    mfData();
  60. #endif /* PORTABLE */
  61.  
  62. extern int MPELNoOpData;
  63.  
  64. #define    MPELSetLineType(t)            mfCmd1Arg(0x5040,(t))
  65. #define    MPELSetPolylineColor(i)            mfCmd1Arg(0x5042,(i))
  66. #define    MPELSetMarkerType(t)            mfCmd1Arg(0x5043,(t))
  67. #define    MPELSetMarkerSizeScaleFactor(f)        mfCmd1Arg(0x5044,(f))
  68. #define    MPELSetPolymarkerColor(i)        mfCmd1Arg(0x5045,(i))
  69. #define    MPELSetTextFont(f)            mfCmd1Arg(0x5046,(f))
  70. #define    MPELSetTextPrecision(p)            mfCmd1Arg(0x5047,(p))
  71. #define    MPELSetCharExpansionFactor(x)        mfCmd1Arg(0x5048,(x))
  72. #define    MPELSetCharSpacing(s)            mfCmd1Arg(0x5049,(s))
  73. #define    MPELSetTextColor(i)            mfCmd1Arg(0x504a,(i))
  74. #define    MPELSetCharHeight(h)            mfCmd1Arg(0x504b,(h))
  75. #define    MPELSetCharUpVector(x,y)        mfCmd2Args(0x504c,(x),(y))
  76. #define    MPELSetTextPath(p)            mfCmd1Arg(0x504d,(p))
  77. #define    MPELSetTextAlignment(h,v)        mfCmd2Args(0x5050,(h),(v))
  78. #define    MPELSetPgonInteriorStyle(i)        mfCmd1Arg(0x5051,(i))
  79. #define    MPELSetPgonInteriorStyleIndex(i)    mfCmd1Arg(0x5052,(i))
  80. #define    MPELSetPgonInteriorColor(i)        mfCmd1Arg(0x5053,(i))
  81. #define    MPELSetPgonEdgeFlag(f)            mfCmd1Arg(0x5054,(f))
  82. #define    MPELSetPgonEdgeLinetype(t)        mfCmd1Arg(0x5055,(t))
  83. #define    MPELSetPgonEdgeColor(i)            mfCmd1Arg(0x5056,(i))
  84. #define    MPELSetLogicalOp(o)            mfCmd1Arg(0x5060,(o))
  85. #define    MPELSetPlaneMask(m)            mfCmd1Arg(0x5061,(m))
  86. #define    MPELSetTextCodePage(p)            mfCmd1Arg(0x5062,(p))
  87. #define    MPELSetHighlightingColor(i)        mfCmd1Arg(0x5063,(i))
  88. #define    MPELSetBlinkControlParameters(p)    mfCmdNArgs(0x5064,10,(p))
  89. #define    MPELSetLineOnLineBg(i)            mfCmd1Arg(0x5065,(i))
  90. #define    MPELSetUserLineStyle(s)            mfCmdNArgs(0x5066,8,(s))
  91. #define    MPELSetLineOnLineMask(m)        mfCmd1Arg(0x5067,(m))
  92. #define    MPELBeginPgon()                mfCmd0Args(0x500a)
  93. #define    MPELCircle(c)                mfCmdNArgs(0x5006,10,(c))
  94. #define    MPELCircularArc(a)            mfCmdNArgs(0x5007,14,(a))
  95. #define    MPELClose()                mfCmd0Args(0x500c)
  96. #define    MPELEllipse(e)                mfCmdNArgs(0x5008,14,(e))
  97. #define    MPELEllipticalArc(a)            mfCmdNArgs(0x5009,18,(a))
  98. #define    MPELEndPgon()                mfCmd0Args(0x500b)
  99. #define    MPELFillCircle(c)            mfCmdNArgs(0x5005,10,(c))
  100. #define    MPELFillRectangle(r)            mfCmdNArgs(0x5004,12,(r))
  101. #define    MPELCircularArcWConnectivity(a)        mfCmdNArgs(0x5026,20,(a))
  102. #define    MPELEllipticalArcWConnectivity(a)    mfCmdNArgs(0x5027,23,(a))
  103. #define    MPELBeginHighlight(h)            mfCmd1Arg(0x501e,(h))
  104. #define    MPELEndHighlight()            mfCmd0Args(0x501f)
  105. #define    MPELEnablePick()            mfCmd0Args(0x501a)
  106. #define    MPELDisablePick()            mfCmd0Args(0x501b)
  107. #define    MPELSynchronize(s)            mfCmdNArgs(0x5020,10,(s))
  108. #define    MPELSetScissor(b)            mfCmdNArgs(0x5017,12,(b))
  109. #define    MPELSetTransformAndClipModes(m)        mfCmdNArgs(0x5028,14,(m))
  110. #define    MPELSetClipping(b)            mfCmdNArgs(0x5014,16,(b))
  111. #define    MPELSetTransformationMatrix(m)        mfCmdNArgs(0x5015,26,(m))
  112. #define    MPELSetViewport(v)            mfCmdNArgs(0x5016,12,(v))
  113. #define    MPELVPMCopy(r)                mfCmdNArgs(0x500e,18,(r))
  114. #define    MPELVPMBLTDest(r)            mfCmdNArgs(0x5011,18,(r))
  115. #define    MPELSrcBLTVPM(r)            mfCmdNArgs(0x5012,20,(r))
  116. #define    MPELSrcBLTVPMWColorExpansion(b)        mfCmdNArgs(0x5013,18,(b))
  117. #define    MPELSrcBLTVPMWColorExpansionROP(b)    mfCmdNArgs(0x5013,20,(b))
  118. #define    MPELSrcBLTVPMNoMask(s)            mfCmdNArgs(0x5021,30,(s))
  119. #define    MPELSrcBLTVPMWMask(s)            mfCmdNArgs(0x5021,40,(s))
  120. #define    MPELVPMBLTDestNoMask(s)            mfCmdNArgs(0x5022,30,(s))
  121. #define    MPELVPMBLTDestWMask(s)            mfCmdNArgs(0x5022,40,(s))
  122. #define    MPELVPMtoVPMCopyNoMask(s)        mfCmdNArgs(0x5023,30,(s))
  123. #define    MPELVPMtoVPMCopyWMask(s)        mfCmdNArgs(0x5023,40,(s))
  124. #define    MPELTileBLTVPMNoMask(s)            mfCmdNArgs(0x5024,22,(s))
  125. #define    MPELTileBLTVPMWMask(s)            mfCmdNArgs(0x5024,32,(s))
  126.  
  127. #define    MPELDisjointPolyline(n,l) \
  128.                 mfCmdVArgs(0x501d,4+(n)*sizeof(mpelPoint),(l),0)
  129. #define    MPELMultiline(n,l)    mfCmdVArgs(0x5003,4+(n)*sizeof(mpelPoint),(l),0)
  130. #define    MPELPolyline(n,l)     mfCmdVArgs(0x5000,4+(n)*sizeof(mpelPoint),(l),0)
  131. #define    MPELPolymarker(n,m)    mfCmdVArgs(0x5001,4+(n)*sizeof(mpelPoint),(m),0)
  132. #define    MPELNoOp(n,d)        mfCmdVArgs(0x501c,4+(n),(d),0)
  133. #ifdef AIXrt
  134. #define    MPELConvexPoly(n,v)    mfCmdVArgs(0x502b,4+(n)*sizeof(mpelPoint),(v),0)
  135. #define    MPELOpenConvexPoly(n,v)    \
  136.     mfCmdVArgs(0x502b,4+(n)*sizeof(mpelPoint),(v),sizeof(mpelPoint))
  137. #define MPELCloseConvexPoly(p)    MPELSendData(sizeof(mpelPoint),(p))
  138. #endif AIXrt
  139.  
  140. #define    MPELAnnotationText(n,t) \
  141.       mfCmdVArgs(0x5002,12,(t),((unsigned long int)(n)))
  142. #define    MPELText(n,t) \
  143.       mfCmdVArgs(0x500d,10,(t),((unsigned long int)(n)))
  144. #define    MPELBLTImmed(n,s) \
  145.       mfCmdVArgs(0x5018,16,(s),((unsigned long int)(n)))
  146. #define    MPELBLTImmedWColorExpansion(n,s) \
  147.     mfCmdVArgs(0x5019,16,(s),((unsigned long int)(n)))
  148. #define    MPELBLTImmed4x4WColorExpansion(n,s) \
  149.     mfCmdVArgs(0x5025,14,(s),((unsigned long int)(n)))
  150.  
  151. #define    MPELSendData(n,d)            mfData(d,n)
  152.  
  153.     /*
  154.      * arguments to structure elements
  155.      */
  156.  
  157. typedef struct {
  158.     short int x; /* 16-bit object */
  159.     short int y; /* 16-bit object */
  160. } mpelPoint;
  161.  
  162. typedef mpelPoint    *mpelPointList;
  163.  
  164. typedef struct {
  165.     unsigned short int rate; /* 16-bit object */
  166.     unsigned long int color; /* 32-bit object */
  167. } mpelBlinkControlParameters;
  168.  
  169. typedef struct {
  170.     mpelPoint    center;
  171.     unsigned short int radius; /* 16-bit object */
  172. } mpelCircle;
  173.  
  174. typedef struct {
  175.     mpelCircle        circle;
  176.     unsigned short int    start;
  177.     unsigned short int    end;
  178. } mpelCircularArc;
  179.  
  180. typedef struct {
  181.     mpelPoint    center;
  182.     short int    majax;
  183.     short int    minax;
  184.     short int    angle;
  185. } mpelEllipse;
  186.  
  187. typedef struct {
  188.     mpelEllipse        ellipse;
  189.     unsigned short int    start;
  190.     unsigned short int    end;
  191. } mpelEllipticalArc;
  192.  
  193. typedef struct {
  194.     mpelPoint    lleft;
  195.     mpelPoint    uright;
  196. } mpelRectangle;
  197.  
  198. typedef struct {
  199.     mpelPoint        point;
  200.     unsigned short int    reserved;
  201.     unsigned short int    length;
  202.     char            *string;
  203. } mpelAnnotationText;
  204.  
  205. typedef struct {
  206.     mpelPoint        point;
  207.     unsigned short int    length;
  208.     char            *string;
  209. } mpelText;
  210.  
  211. typedef struct {
  212.     mpelCircle    circle;
  213.     mpelPoint    startpt;
  214.     mpelPoint    endpt;
  215.     short int    drawdir;
  216. } mpelCircularArcWConnectivity;
  217.  
  218. typedef struct {
  219.     mpelEllipse    ellipse;
  220.     mpelPoint    startpt;
  221.     mpelPoint    endpt;
  222.     short int    drawdir;
  223. } mpelEllipticalArcWConnectivity;
  224.  
  225. typedef struct {
  226.     short int        funct;
  227.     short int        inter;
  228.     unsigned short int    data;
  229. } mpelSynchronize;
  230.  
  231. typedef struct {
  232.     short int        tran;
  233.     short int        clip;
  234.     short int        map;
  235.     short int        reserved;
  236. } mpelTransformClipModes;
  237.  
  238. typedef struct {
  239.     short int        xleft;
  240.     short int        xright;
  241.     short int        yleft;
  242.     short int        yright;
  243. } mpelClippingRectangle;
  244.  
  245. typedef struct {
  246.     unsigned short int    ctype;
  247.     short int        scalef;
  248.     short int        matrix[3][3];
  249. } mpelTransformationMatrix;
  250.  
  251. typedef struct {
  252.     mpelRectangle        source;
  253.     mpelPoint        dlleft;
  254.     unsigned short int    alu;
  255. } mpelVPMCopy;
  256.  
  257. typedef struct {
  258.     unsigned long int    destaddr;
  259.     mpelRectangle        source;
  260.     short int        comp;
  261. } mpelVPMBLTDestination;
  262.  
  263. typedef struct {
  264.     unsigned long int    srcaddr;
  265.     mpelRectangle        dest;
  266.     unsigned short int    bpixel;
  267.     unsigned short int    alu;
  268. } mpelSrcBLTVPM;
  269.  
  270. typedef struct {
  271.     mpelRectangle        dest;
  272.     unsigned short int    bpixel;
  273.     unsigned short int    alu;
  274.     char            *data;
  275. } mpelBLTImmed;
  276.  
  277. typedef struct {
  278.     mpelRectangle        dest;
  279.     unsigned short int    color;
  280.     unsigned short int    alu;
  281.     char            *data;
  282. } mpelBLTImmedWColorExpansion;
  283.  
  284. typedef struct {
  285.     mpelRectangle        dest;
  286.     unsigned short int    color;
  287.     char            *data;
  288. } mpelBLTImmed4x4WColorExpansion;
  289.  
  290. typedef struct {
  291.     unsigned long int    srcaddr;
  292.     mpelRectangle        dest;
  293.     unsigned short int    color;
  294.     unsigned short int    alu;
  295. } mpelSrcBLTVPMWColorExpansion;
  296.  
  297. typedef struct {
  298.     unsigned long int    srcaddr;
  299.     unsigned short int    swidth;
  300.     mpelPoint        suleft;
  301.     unsigned short int    pwidth;
  302.     unsigned short int    pheight;
  303.     unsigned long int    dstaddr;
  304.     unsigned short int    dwidth;
  305.     mpelPoint        duleft;
  306.     unsigned short int    alu;
  307.     unsigned long int    mskaddr;
  308.     unsigned short int    mwidth;
  309.     mpelPoint        muleft;
  310. } mpelBLTVPMWMask;
  311.  
  312. typedef struct {
  313.     unsigned long int    tileaddr;
  314.     unsigned short int    twidth;
  315.     unsigned short int    theight;
  316.     mpelRectangle        dest;
  317.     unsigned short int    alu;
  318.     unsigned long int    mskaddr;
  319.     unsigned short int    mwidth;
  320.     unsigned short int    muleft;
  321. } mpelTileBLTVPMWMask;
  322.  
  323.     /*
  324.      * Default values for some registers
  325.      */
  326. extern    unsigned short int    mpelMaskXlate[];
  327. extern    mpelRectangle        mpelDfltScissor;
  328.  
  329.     /*
  330.      * Macros to set to corresponding X values or reset
  331.      * defaults
  332.      */
  333.  
  334. #define    mpelSetPlaneMask(m) \
  335.     MPELSetPlaneMask((unsigned long int) mpelMaskXlate[(m) & 0x3ff])
  336. #define    mpelSetALU(a)        MPELSetLogicalOp((a)+1)
  337.  
  338. #define    MPELResetScissor()    MPELSetScissor(&mpelDfltScissor)
  339. #define    MPELResetPlaneMask()    MPELSetPlaneMask(0)
  340. #define    MPELResetALU()        MPELSetLogicalOp(4)
  341.  
  342. #endif /* ndef MPEL_FIFO_SEEN */
  343.