   IFND  LIBRARIES_FEELIN_I
LIBRARIES_FEELIN_I SET 1

   INCLUDE 'exec/types.i'
   INCLUDE 'exec/libraries.i'
   INCLUDE 'exec/semaphores.i'

MTHD_BASE EQU $F0000000
ATTR_BASE EQU $8F000000

** Misc **

;; System Structures
   STRUCTURE FeelinNode,0
      ULONG  fn_Next
      ULONG  fn_Prev
   LABEL     FeelinNode_SIZE

   STRUCTURE FeelinList,0
      APTR   fl_Head
      APTR   fl_Tail
   LABEL     FeelinList_SIZE

   STRUCTURE FeelinBase,LIB_SIZE
      UBYTE  fb_Flags
      UBYTE  fb_Pad
      ULONG  fb_SegList

      APTR   fb_Server                 ; PTR TO feelinServer

      APTR   fb_Exec
      APTR   fb_DOS
      APTR   fb_Graphics
      APTR   fb_Intuition
      APTR   fb_Utility
      APTR   fb_Layers

      APTR   fb_ObjectsPool
      APTR   fb_DataPool

      ULONG  fb_ObjsSize
      ULONG  fb_DataSize
   LABEL     FeelinBase_SIZE

   STRUCTURE FeelinClass,FeelinNode_SIZE
      APTR   fc_ID
      UWORD  fc_OffSet
      UWORD  fc_Size
      ULONG  fc_OpenCount

      APTR   fc_Dispatcher
      APTR   fc_LibBase
      APTR   fc_Super

      ULONG  fc_Userdata
   LABEL     FeelinClass_SIZE
;*
;; Flags
   BITDEF F,Horizontal,          0
   BITDEF F,Area_Selected,       1
   BITDEF F,Area_Pressed,        2
   BITDEF F,Area_Hidden,         3
   BITDEF F,Area_Disabled,       4
   BITDEF F,Area_Draggable,      5
   BITDEF F,Area_Dropable,       6
   BITDEF F,Area_FixedWidth,     7
   BITDEF F,Area_FixedHeight,    8

FF_Area_Fixed EQU FF_Area_FixedWidth | FF_Area_FixedHeight

   BITDEF F,Area_Active,         9
   BITDEF F,Area_HiddenPage,    10

   BITDEF F,Custom_1,            24
   BITDEF F,Custom_2,            25
   BITDEF F,Custom_3,            26
   BITDEF F,Custom_4,            27
   BITDEF F,Custom_5,            28
   BITDEF F,Custom_6,            29
   BITDEF F,Custom_7,            30
   BITDEF F,Custom_8,            31

   BITDEF F,Draw_Object,         0
   BITDEF F,Draw_Update,         1
   BITDEF F,Draw_Selected,       2
;*

** Classes **

;;Object                               $000000
FC_Object      MACRO
   Dc.b 'Object.fcc',0
   ENDM
FR_Object      EQU $000000
FR_Object_Mthd EQU MTHD_BASE | FR_Object
FR_Object_Attr EQU ATTR_BASE | FR_Object

   ENUM  FR_Object_Mthd
   EITEM FM_New
   EITEM FM_Dispose
   EITEM FM_Set
   EITEM FM_Get

   ENUM  0
   EITEM FV_Notify_None
   EITEM FV_Notify_Self
   EITEM FV_Notify_Parent
   EITEM FV_Notify_Window
   EITEM FV_Notify_Client

FV_Notify_Always EQU $49893131
FV_Notify_Toggle EQU $49893132
FV_Notify_Value  EQU $49893131

fo_Class EQU -4

   STRUCTURE FeelinObject,FeelinNode_SIZE
      APTR   fo_Parent
      ULONG  fo_ID
      ULONG  fo_UserData
   LABEL     FeelinObject_SIZE
;*
;;Area                                 $000040
FC_Area  MACRO
   Dc.b 'Area.fcc',0
   ENDM
FR_Area        EQU $000040
FR_Area_Mthd   EQU MTHD_BASE | FR_Area
FR_Area_Attr   EQU ATTR_BASE | FR_Area

   ENUM  FR_Area_Mthd
   EITEM FM_Setup
   EITEM FM_Cleanup
   EITEM FM_Show
   EITEM FM_Hide
   EITEM FM_AskMinMax
   EITEM FM_Layout
   EITEM FM_Draw
   EITEM FM_DrawBackground
   EITEM FM_HandleEvent
   EITEM FM_Active
   EITEM FM_Inactive

FV_MAXMAX EQU 10000

   STRUCTURE FeelinMinMax,0
      UWORD  fmm_MinW
      UWORD  fmm_MinH
      UWORD  fmm_MaxW
      UWORD  fmm_MaxH
   LABEL     FeelinMinMax_SIZE

   STRUCTURE FeelinRect,0
      UWORD  fr_x1
      UWORD  fr_y1
      UWORD  fr_x2
      UWORD  fr_y2
   LABEL     FeelinRect_SIZE

   STRUCTURE FeelinInner,0
      UBYTE  fi_bl
      UBYTE  fi_bt
      UBYTE  fi_br
      UBYTE  fi_bb
   LABEL     FeelinInner_SIZE

   STRUCTURE FeelinArea,FeelinObject_SIZE
      ULONG  fa_Flags
      APTR   fa_Render     ; PTR TO FeelinRender
      
      STRUCT fa_Area,FeelinRect_SIZE
      STRUCT fa_Inner,FeelinInner_SIZE
      STRUCT fa_MinMax,FeelinMinMax_SIZE

      APTR   fa_Pens       ; PTR TO LONG
      APTR   fa_Font       ; PTR TO textfont
      APTR   fa_Handler    ; PTR TO FeelinEventHandler
   LABEL     FeelinArea_SIZE
;*

;;Server
FC_Server      MACRO
   Dc.b 'Server.fcc',0
   ENDM
FR_Server      EQU $800000
FR_Server_Mthd EQU MTHD_BASE | FR_Server
FR_Server_Attr EQU ATTR_BASE | FR_Server

   ENUM  FR_Server_Mthd
   EITEM FM_Server_OpenClass
   EITEM FM_Server_FreeClass
   EITEM FM_Server_CreateClass
   EITEM FM_Server_RemoveClass
   EITEM FM_Server_NewObject
   EITEM FM_Server_MakeObject
   EITEM FM_Server_DisposeObject
   EITEM FM_Server_Alert

   STRUCTURE ServerSemaphore,SS_SIZE
      APTR   fss_Server
   LABEL     ServerSemaphore_SIZE

   STRUCTURE FeelinServer,FeelinNode_SIZE
      APTR   fs_Class
      APTR   fs_FeelinBase                ; PTR TO FeelinBase

      APTR   fs_Port

      STRUCT fs_Classes,FeelinList_SIZE
** Private Data follows **
   LABEL     FeelinServer_SIZE
;*
;;Window                               $800080
FC_Window  MACRO
   Dc.b 'Window.fcc',0
   ENDM
FR_Window      EQU $800080
FR_Window_Mthd EQU MTHD_BASE | FR_Window
FR_Window_Attr EQU ATTR_BASE | FR_Window

   ENUM  FR_Window_Mthd
   EITEM FM_Window_Event
   EITEM FM_Window_ChainAdd
   EITEM FM_Window_ChainRem
   EITEM FM_Window_AddEventHandler
   EITEM FM_Window_RemEventHandler

   STRUCTURE FeelinRender,0
      APTR   frnd_ClientObject
      APTR   frnd_WindowObject
      APTR   frnd_DisplayContext
      APTR   frnd_Window
      APTR   frnd_RPort
      APTR   frnd_Pens
      APTR   frnd_Flags
   LABEL     FeelinRender_SIZE

   BITDEF   F,Render_Refreshing,   0
   BITDEF   F,Render_Waiting,      1

   STRUCTURE FeelinEventHandler,FeelinNode_SIZE
      UWORD  feh_Flags
      BYTE   feh_Priority
      UBYTE  feh_Reserved
      ULONG  feh_Events
      APTR   feh_Object    ;PTR TO feelinObject
      APTR   feh_Class     ;PTR TO feelinClass
   LABEL     FeelinEventHandler_SIZE
;*

   ENDC
