home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Programming / lsEstuff / rkfilter.e < prev    next >
Encoding:
Text File  |  1999-05-27  |  1.4 KB  |  61 lines

  1. OPT MODULE
  2.  
  3. EXPORT CONST RKF_ERR=-80
  4. EXPORT SET RKF_NOKEYCODEREP, RKF_NOKEYUP, RKF_NOKEYDOWN
  5.  
  6.  
  7. OBJECT rkfilter
  8. PRIVATE
  9.    rkeyrep:INT
  10.    filter:LONG
  11.    temp:LONG
  12. ENDOBJECT
  13.  
  14. EXPORT PROC rkfilter_new()
  15.    DEF rkf:PTR TO rkfilter
  16.    rkf:=FastNew(SIZEOF rkfilter)
  17.    rkf.rkeyrep:=-1
  18. ENDPROC rkf
  19.  
  20. EXPORT PROC rkfilter_end(rkf:PTR TO rkfilter)
  21.    FastDispose(rkf, SIZEOF rkfilter)
  22. ENDPROC
  23.  
  24. EXPORT PROC rkfilter_add(rkf:PTR TO rkfilter, newfilter)
  25.    rkf.filter:=rkf.filter OR newfilter
  26. ENDPROC rkf.filter
  27.  
  28. EXPORT PROC rkfilter_chk(rkf:PTR TO rkfilter, filter)
  29.    rkf.temp:=rkf.filter AND filter
  30.    IF rkf.temp=filter THEN RETURN TRUE ELSE RETURN FALSE
  31. ENDPROC
  32.  
  33. EXPORT PROC rkfilter_del(rkf:PTR TO rkfilter, filter)
  34.    rkf.filter:=rkf.filter AND Not(filter)
  35. ENDPROC
  36.  
  37. EXPORT PROC rkfilter_toggle(rkf, filter)
  38.    IF rkfilter_chk(rkf, filter)=FALSE
  39.       rkfilter_add(rkf, filter)
  40.       RETURN 1
  41.    ELSE
  42.       rkfilter_del(rkf, filter)
  43.       RETURN NIL
  44.    ENDIF
  45. ENDPROC
  46.  
  47. EXPORT PROC rkfilter(rkf:PTR TO rkfilter, rkcode)
  48.    rkf.temp:=rkf.filter AND RKF_NOKEYCODEREP
  49.    IF (rkcode=rkf.rkeyrep) AND (rkf.temp=RKF_NOKEYCODEREP)
  50.       rkf.rkeyrep:=rkcode
  51.       RETURN RKF_ERR
  52.    ENDIF
  53.    rkf.rkeyrep:=rkcode
  54.  
  55.    rkf.temp:=rkf.filter AND RKF_NOKEYUP
  56.    IF (rkf.temp=RKF_NOKEYUP) AND (rkcode>127) THEN RETURN RKF_ERR
  57.  
  58.    rkf.temp:=rkf.filter AND RKF_NOKEYDOWN
  59.    IF (rkf.temp=RKF_NOKEYDOWN) AND (rkcode<128) THEN RETURN RKF_ERR
  60. ENDPROC rkcode
  61.