home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pLayer / Clip.h next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  5.0 KB  |  169 lines

  1. #ifndef __INC_POS_PLAYER_CLIP_H
  2. #define __INC_POS_PLAYER_CLIP_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>Clip.h<<   24 Jan 1997    09:38:26 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_LIST_H
  12. #include <pExec/List.h>
  13. #endif
  14. #ifndef __INC_POS_PLAYER_RECT_H
  15. #include <pLayer/Rect.h>
  16. #endif
  17. #ifndef __INC_POS_PLAYER_REGION_H
  18. #include <pLayer/Region.h>
  19. #endif
  20. #ifndef __INC_POS_PEXEC_SEMA_H
  21. #include <pExec/Sema.h>
  22. #endif
  23.  
  24.  
  25.  
  26. /*----------------------------------
  27. -----------------------------------*/
  28. struct pOS_ClipRect
  29. {
  30.   struct pOS_Node      cr_Node;       /* kompatiebel zu (struct pOS_RegionRectangle) */
  31.   struct pOS_Rectangle cr_Bounds;     /* bounds of cliprect */
  32.   struct pOS_GfxMap   *cr_GfxMap;     /* */
  33. };
  34.  
  35.  
  36.  
  37. /*----------------------------------
  38. pOS_LockHideLayer(), pOS_UnlockHideLayer()
  39. -----------------------------------*/
  40. struct pOS_LayerHide
  41. {
  42.   struct pOS_List          lyh_ClipList;
  43.   const struct pOS_Region *lyh_Region;
  44.   UBYTE                    lyh_Mode;  /* 0x01 = LAYERF_InRefMode, 0x02 = Quick */
  45.   UBYTE                    lyh_Cnt;
  46. };
  47.  
  48.  
  49.  
  50. /*----------------------------------
  51. -----------------------------------*/
  52. struct pOS_LayerClip
  53. {
  54.   struct pOS_LayerHide lyc_Hide;
  55.   UBYTE                lyc_Reserved[32];
  56. };
  57.  
  58.  
  59.  
  60.  
  61. /*----------------------------------
  62. -----------------------------------*/
  63. struct pOS_Layer
  64. {
  65.   struct pOS_ExNode     ly_Node;
  66.   struct pOS_Layer     *ly_Parent;
  67.   struct pOS_Layer     *ly_Next;        /* nur im Child-Verbund */
  68.   struct pOS_Layer     *ly_Child;       /* First Child */
  69.   struct pOS_Semaphore  ly_Lock;
  70.   struct pOS_Rectangle  ly_Bounds;
  71.   struct pOS_Rectangle  ly_ChildBounds; /* echte Maße, ohne das Clipping von Parent */
  72.   struct pOS_Region     ly_DamageList;  /* list of rectangles to refresh through */
  73.   struct pOS_LayerInfo *ly_LayerInfo;   /* (home) points to head of the list */
  74.   ULONG                 ly_Flags;       /* (enum pOS_LayerFlags) */
  75.   struct pOS_RastPort  *ly_RP;
  76.   struct pOS_List       ly_VisClipList; /* List of visible clips */
  77.   struct pOS_List       ly_SupClipList; /* List of super clips */
  78.   SWORD                 ly_ScrollX;     /* wird zu jeder Zeichenoperation addiert */
  79.   SWORD                 ly_ScrollY;
  80.   struct pOS_GfxMap    *ly_SupGfxMap;
  81.   struct pOS_Window    *ly_Win;         /* home link for intui (private) */
  82.  
  83. /** SYSTEM-PRIVATE-DATAS **/
  84. };
  85.  
  86.  
  87. /*\
  88. *** Nach BeginRefresh() ist in ly_Flags das LAYERF_InRefMode-Bit gesetzt.
  89. *** Gleichzeitig zeigt das LAYERF_DamageLst-Bit, daß die ly_DamageList-List
  90. *** mit ly_DamUseList getauscht wurde. Progs, die auf diese Daten zurückgreifen,
  91. *** müssen ly_DamUseList verwenden, da zur gleichen Zeit ly_DamageList genullt wird.
  92. \*/
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. /*----------------------------------
  100. -----------------------------------*/
  101. struct pOS_LayerInfo
  102. {
  103.   struct pOS_ExNode    li_Node;
  104.   struct pOS_ExList    li_List;   /* (pOS_Layer*) List */
  105.   struct pOS_Semaphore li_Lock;
  106.   struct pOS_GfxMap   *li_GfxMap;
  107.   UWORD                li_Flags;
  108.  
  109. /** SYSTEM-PRIVATE-DATAS **/
  110.  
  111. };
  112.  
  113.  
  114.  
  115.  
  116. /*----------------------------------
  117.   BOOL (*cb_Code)(_R_A0 const pOS_Callback*,_R_A1 const pOS_LayerHookData*);
  118. -----------------------------------*/
  119. struct pOS_LayerHookData
  120. {
  121.   struct pOS_RastPort  *lyhd_RastPort;
  122.   struct pOS_LayerInfo *lyhd_LayerInfo;
  123.   struct pOS_Layer     *lyhd_Layer;
  124.   SLONG                 lyhd_OriginX, lyhd_OriginY;
  125.   struct pOS_Rectangle  lyhd_Bounds;
  126.   UWORD                 lyhd_Flags;      /* (enum pOS_LayerHookFlags) */
  127.   struct pOS_GfxMap    *lyhd_GfxMap;
  128. };
  129.  
  130.  
  131. enum pOS_LayerHookFlags /* lyhd_Flags */
  132. {
  133.   LAYERHOOKF_FirstDraw  =0x0001, /* *** erster Durchlauf */
  134.   LAYERHOOKF_Border     =0x0002, /* *** Border zeichnen */
  135. };
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143. enum pOS_LayerFlags /* ly_Flags */
  144. {
  145.   LAYERF_Simple=        0x0001,
  146.   LAYERF_Smart=         0x0002,
  147.   LAYERF_Super=         0x0004,
  148.   LAYERF_NoCLTS=        0x0010,   /* no pOS_CopyLayerToSup() */
  149.   LAYERF_DrawInLy=      0x000020, /* es wurde gezeichnet => wichtig für SuperBM */
  150.   LAYERF_Refresh=       0x000080,
  151.   LAYERF_InRefMode=     0x000100, /* Begin-Refresh */
  152.   LAYERF_DamageLst=     0x000200, /* pflegt die Damage-List */
  153.   LAYERF_2thDamLst=     0x000400, /* ly_DamUseList wurde gebildet */
  154.   LAYERF_RembDamLst=    0x000800, /* ly_DamRememberList wird verwendet */
  155.   LAYERF_FixChWidth=    0x001000, /* Kind-Width ist an Parent gebunden */
  156.   LAYERF_FixChHeight=   0x002000, /* Kind-Height ist an Parent gebunden */
  157.   LAYERF_SaveVCList=    0x004000, /* SaveVisClipList ist belegt */
  158.   LAYERF_FixChLeft=     0x008000, /* Kind-Left wird an Parent-Right gebunden */
  159.   LAYERF_FixChTop=      0x010000, /* Kind-Top wird an Parent-Bottom gebunden */
  160.   LAYERF_SzDamgHoriz=   0x020000, /* eine horizontale Größenänderung macht den
  161.                                   ** gesamten Layer ungültig
  162.                                   */
  163.   LAYERF_SzDamgVert=    0x040000, /* =>LAYERF_SzDamgHoriz (vert) */
  164. };
  165.  
  166.  
  167.  
  168. #endif
  169.