LAYERS Types Reference

Per-function autodoc pages link to these types via the type name (e.g., [List](types-layers.md#list)).

Clickable inner types: inside each struct definition, field types that are themselves structs/unions/enums are clickable hyperlinks to their own definitions.

Contents

layers.h


clip.h


Layer_Info

Source: graphics/layers.h


struct Layer_Info
{
struct Layer           *top_layer;             /* Frontmost layer */
        void            *resPtr1;               /* V45 spare */
        void            *resPtr2;               /* Another V45 spare */
struct ClipRect        *FreeClipRects;         /* Implements a backing store
                                                 * of cliprects to avoid
                                                 * frequent re-allocation
                                                 * of cliprects. Private.
                                                 */
struct Rectangle       bounds;                 /* clipping bounds of
                                                 * this layer info. All layers
                                                 * are clipped against this
                                                 */
struct SignalSemaphore Lock;                   /* Layer_Info lock */
struct MinList         gs_Head;                /* linked list of all semaphores of all
                                                 * layers within this layer info
                                                 */
        WORD            PrivateReserve3;        /* !! Private !! */
        void           *PrivateReserve4;        /* !! Private !! */
        UWORD           Flags;
        BYTE            res_count;              /* V45 spare, no longer used */
        BYTE            LockLayersCount;        /* Counts # times LockLayers
                                                 * has been called
                                                 */
        BYTE           PrivateReserve5;         /* !! Private !! */
        BYTE           UserClipRectsCount;      /* Also private */
        struct Hook    *BlankHook;              /* LayerInfo backfill hook */
        void           *resPtr5;                /* !! Private !! */
};


ClipRect

Source: graphics/clip.h


struct ClipRect
{
    struct ClipRect   *Next;           /* roms used to find next ClipRect */
    struct ClipRect   *reservedlink;   /* Currently unused */
    LONG                obscured;       /* If non-zero, this is a backing store
                                         * cliprect that is currently obscured.
                                         * NEW: In V45, this is no longer a
                                         * valid pointer since a cliprect
                                         * can be obscured by more than one
                                         * layer. Just test for zero or non-
                                         * zero, do *NOT* dereference.
                                         */
    struct BitMap     *BitMap;         /* backing store bitmap if obscured != NULL */
    struct Rectangle   bounds;         /* bounds of this cliprect */
    struct ClipRect   *vlink;          /* Layers private use!!! */
    struct Layer_Info *home;           /* where this cliprect belongs to.
                                         * If you *MUST* hack in your private
                                         * cliprects, ensure that you set this
                                         * field to NULL. If you don't, layers
                                         * will pool your cliprect and will
                                         * release it when it "feels like".
                                         * For NULL, V40 behaivour is
                                         * re-established.
                                         */
    APTR                reserved;
#ifdef NEWCLIPRECTS_1_1
    LONG                Flags;          /* Layers private field for cliprects */
#endif                  /* MUST be multiple of 8 bytes to buffer */
};


Layer

Source: graphics/clip.h


struct Layer
{
    struct Layer       *front,*back;
    struct ClipRect    *ClipRect;      /* singly linked list of active cliprects */
    struct RastPort    *rp;            /* rastport to draw into. Its layer is me */
    struct Rectangle   bounds;         /* screen bounds of this layer */
    struct Layer       *nlink;         /* new in V45:
                                         * next back layer for display
                                         * reorganization
                                         */
    UWORD   priority;                   /* internal use: on layer front/back move,
                                         * relative priority of the layers.
                                         * Topmost layer has lowest priority.
                                         */
    UWORD   Flags;                      /* see  */
    struct BitMap      *SuperBitMap;   /* if non-NULL, superbitmap layer */
    struct ClipRect    *SuperClipRect; /* super bitmap cliprects if VBitMap != 0*/
                                        /* else damage cliprect list for refresh */
    APTR    Window;                     /* Intuition keeps its window here */
    WORD    Scroll_X,Scroll_Y;          /* layer displacement */
    struct ClipRect *OnScreen;         /* temporary list of on-screen cliprects */
    struct ClipRect *OffScreen;        /* temporary list of off-screen cliprects */
    struct ClipRect *Backup;           /* temporary copy of un-damaged clips */
    struct ClipRect *SuperSaveClipRects; /* five preallocated super cr's */
    struct ClipRect *Undamaged;        /* undamaged, un-user clipped version
                                         * of the cliprect, restored on EndUpdate()
                                         */
    struct Layer_Info  *LayerInfo;     /* points to head of the list */
    struct SignalSemaphore Lock;       /* access to this layer */
    struct Hook *BackFill;             /* backfill hook */
    ULONG   reserved1;
    struct Region *ClipRegion;         /* user InstallClipRegion()'d region */
    struct ClipRect *clipped;          /* clipped away by damage list or
                                         * user clip rect
                                         */
    WORD    Width,Height;               /* system use */
    UBYTE   reserved2[18];              /* more reserved fields */
    struct Region  *DamageList;        /* list of rectangles to refresh */
};