/* flag de création */
var EDL_TRANSP          = 0b000010000000;;  /* background is transparent */
var EDL_NOTEDITABLE     = 0b000100000000;;  /* la ligne n'est pas éditable */
var EDL_PASSWORD        = 0b001000000000;;  /* saisie de mot de passe */
var EDL_ASCII7          = 0b010000000000;;  /* n'accepte que les caractères inférieurs à 127 */

/*
  Edit line:
  EDLObj2D : l'objet 2D associe
  EDLbitmap: bitmap représentant la ligne
  EDLfont  : police utilisée pour le texte
  EDLbackcolor : couleur de fond du texte
  EDLtextcolor : couleur des caractères du texte
  EDLflags : flags de l'edit line
  EDLipoint : position du point d'insertion de l'edit line
  EDLstring : texte de l'edit line
  EDLstate : etat de l'edit line
  EDLtimer : timer de l'edit line
  EDLOkReflex : reflexe utilisateur lors de l'appui de la touche entrée
  EDLEmptyReflex : reflexe utilisateur lorsque la ligne est vide
  EDLKeyReflex : reflexe utilisateur lors de l'appui d'une touche
*/

struct EDLtext=[
  EDLObj2D : Obj2D,
  EDLbitmap: ObjBitmap,
  EDLfont  : ObjFont,
  EDLbackcolor : I,
  EDLtextcolor : I,
  EDLmaxchar :   I,
  EDLflags  : I,
  EDLipoint : I,      /* point d'insertion */
  EDLbpoint : I,      /* point de base */
  EDLepoint : I,      /* point de fin */
  EDLstring : [I r1], /* liste des caractères composant le texte */
  EDLstate  : I,
  EDLtimer : Timer,
  EDLnotAllowed : [I r1],
  EDLOkReflex : fun [EDLtext S] EDLtext,
  EDLEmptyReflex : fun [EDLtext] EDLtext,
  EDLKeyReflex : fun [EDLtext I I] EDLtext,
  EDLfocusReflex : fun [EDLtext S I] EDLtext
] mkEDLtext;;


/************************************************************************************/
/*               Fonctions externes du EditLine                                     */
/************************************************************************************/
/* Constructeur du EditLine
     channel  : canal de construction
     cont     : container auquel appartient le rollover
     parent   : l'objet pere
     coord    : coordonnees de l'objet par rapport au pere
     w        : largeur
     h        : hauteur
     name     : nom de l'objet
     flag     : flag de construction (O2D_ENABLE, O2D_DISABLE, O2D_HIDE, EDL_TRANSP)
     text     : text initial
*/
proto EDL_New = fun [Chn ContainerType Obj2D [I I] I I S I I S I I S] EDLtext;;
proto EDL_Del = fun [EDLtext] EDLtext;;
proto EDL_GetObject = fun [EDLtext] Obj2D;;
proto EDL_ChangeDisplayFlags = fun [EDLtext I I I] EDLtext;;
proto EDL_ChangeCoordinates = fun [EDLtext [I I] I I] EDLtext;;
proto EDL_GetCoordinates = fun [EDLtext] [I I];;
proto EDL_GetGraphicalState = fun [EDLtext] [ObjBitmap I I I I I];;
proto EDL_GetText = fun [EDLtext] S;;
proto EDL_SetText = fun [EDLtext S I] EDLtext;;
proto EDL_SetTextColor = fun [EDLtext I I] EDLtext;;
proto EDL_SetBackColor = fun [EDLtext I I] EDLtext;;
proto EDL_SetFont = fun [EDLtext ObjFont I] EDLtext;;
proto EDL_SetEditable = fun [EDLtext I] EDLtext;;
proto EDL_SetReflexOk = fun [EDLtext fun [EDLtext S u0] EDLtext u0] EDLtext;;
proto EDL_SetOkReflex = fun [EDLtext fun [EDLtext S u0] EDLtext u0] EDLtext;;
proto EDL_SetReflexEmpty = fun [EDLtext fun [EDLtext u0] EDLtext u0] EDLtext;;
proto EDL_SetEmptyReflex = fun [EDLtext fun [EDLtext u0] EDLtext u0] EDLtext;;
proto EDL_SetKeyReflex = fun [EDLtext fun [EDLtext I I u0] EDLtext u0] EDLtext;;
proto EDL_SetFocusReflex = fun [EDLtext fun [EDLtext S I u0] EDLtext u0] EDLtext;;
proto EDL_DisableChars = fun [EDLtext [I r1]] EDLtext;;
proto EDL_Ascii7 = fun [EDLtext] EDLtext;;
proto EDL_SetMaxChar = fun [EDLtext I] EDLtext;;