home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / assembler-tools / proasm / routines / gtfguido.r < prev    next >
Encoding:
Text File  |  1995-10-16  |  8.8 KB  |  466 lines

  1.  
  2. ;---;  gtfguido.r  ;-----------------------------------------------------------
  3. *
  4. *    ****    GUI MACROS FOR GTFACE    ****
  5. *
  6. *    Author        Stefan Walter
  7. *    Version        1.09
  8. *    Last Revision    16.10.95
  9. *    Identifier    gui_defined
  10. *    Prefix        gui_    (GUI)
  11. *                 ¯¯¯
  12. ;------------------------------------------------------------------------------
  13.  
  14. ;------------------
  15.     IFND    gui_defined
  16. gui_defined    =1
  17.  
  18. ;------------------
  19.     include    gtfdefs.r
  20.  
  21. ;------------------
  22. gui_xspace    equ    6
  23. gui_yspace    equ    3
  24. gui_xbspace    equ    4+2    ;+2 \
  25. gui_ybspace    equ    2+1    ;+1 |  Because BevelBoxes are like that
  26. gui_xbox    equ    10-2    ;-2 |
  27. gui_ybox    equ    5-1    ;-1 /
  28.  
  29. ;------------------
  30.  
  31. ;------------------------------------------------------------------------------
  32. *
  33. * GUINew_    Begin new definitions for a window.
  34. *
  35. * USAGE:    GUINew_
  36. *
  37. ;------------------------------------------------------------------------------
  38.  
  39. ;------------------
  40. GUINew_        MACRO
  41. gui_XS        SET    gui_xspace
  42. gui_YS        SET    gui_yspace
  43. gui_XE        SET    gui_xspace
  44. gui_YE        SET    gui_yspace
  45. gui_WX        SET    gui_xspace*2
  46. gui_WY        SET    gui_yspace*2
  47. gui_BOXXE    SET    gui_xbspace
  48. gui_BOXYE    SET    gui_ybspace
  49.         ENDM
  50.  
  51.  
  52. ;------------------
  53.  
  54. ;------------------------------------------------------------------------------
  55. *
  56. * GUIBoxStart_    Start a new BB for the next gadgets.
  57. * GUIBoxEnd_    End a BB.
  58. *
  59. * GUIBesideBox_        Next BB beside an existing named BB.
  60. * GUIBelowBox_        Next BB below an existing named BB.
  61. *
  62. * GUIRightBox_        Adjust this BB right to another named BB
  63. * GUIBottomBox_        Adjust this BB to bottom of another named BB
  64. *
  65. * GUILeftBox_        Adjust this BB left border to another named BB
  66. * GUIGotoBox_        Goto position of another box
  67. *
  68. * GUIIgnoreBox_        Don't paint box graphics
  69. *
  70. * USAGE:    GUIBoxStart_    name
  71. *        GUIBoxEnd_    name
  72. *
  73. *        GUIBesideBox_    name
  74. *        GUIBelowBox_    name
  75. *
  76. *        GUIRightBox_    name
  77. *        GUIBottomBox_    name
  78. *
  79. *        GUILeftBox_    name
  80. *        GUIGotoBox_    name
  81. *
  82. *        GUIIgnoreBox_
  83. *
  84. ;------------------------------------------------------------------------------
  85.  
  86. ;------------------
  87. GUIBoxStart_    MACRO
  88. gui_obj_\1_XS    EQU    gui_XS
  89. gui_obj_\1_YS    EQU    gui_YS
  90. gui_BOXXS    SET    gui_XS    
  91. gui_XS    set    gui_XS+gui_xbspace    
  92. gui_BOXXE    SET    gui_XS    
  93. gui_BOXYS    SET    gui_YS
  94. gui_YS    set    gui_YS+gui_ybspace    
  95. gui_BOXYE    SET    gui_YS
  96.  
  97. gui_MAKEBOX    set    1
  98.         ENDM
  99.  
  100.  
  101. GUIBoxEnd_    MACRO
  102. gui_obj_\1_XE    EQU    gui_BOXXE
  103. gui_obj_\1_YE    EQU    gui_BOXYE
  104.  
  105. gui_XE        SET    gui_BOXXE+gui_xbspace
  106. gui_YE        SET    gui_BOXYE+gui_ybspace
  107.  
  108.         IFLT    gui_XE,gui_WX
  109. gui_WX        SET    gui_XE
  110.         ENDC
  111.         IFLT    gui_YE,gui_WY
  112. gui_WY        SET    gui_YE
  113.         ENDC
  114.  
  115.     IFNE    gui_MAKEBOX
  116.     BevelBox_    gui_BOXXS,gui_BOXYS,gui_XE-gui_BOXXS,gui_YE-gui_BOXYS
  117.         Recessed_
  118.         Filled_    0
  119.     ENDC
  120.     
  121.     ENDM
  122.  
  123.  
  124. GUIBesideBox_    MACRO
  125. gui_XS        SET    gui_obj_\1_XE+gui_xspace+gui_xbox
  126. gui_YS        SET    gui_obj_\1_YS
  127. gui_YE        SET    gui_YS
  128.     ENDM
  129.  
  130.  
  131. GUIBelowBox_    MACRO
  132. gui_YS        SET    gui_obj_\1_YE+gui_yspace+gui_ybox
  133. gui_XS        SET    gui_obj_\1_XS
  134. gui_XE        SET    gui_XS
  135.     ENDM
  136.  
  137.  
  138. GUIRightBox_    MACRO
  139.         IFLT    gui_obj_\1_XE,gui_BOXXE
  140. gui_BOXXE    SET    gui_obj_\1_XE
  141.         ENDC
  142.         ENDM
  143.  
  144.  
  145. GUIBottomBox_    MACRO
  146.         IFLT    gui_obj_\1_YE,gui_BOXYE
  147. gui_BOXYE    SET    gui_obj_\1_YE
  148.         ENDC
  149.         ENDM
  150.  
  151.  
  152. GUILeftBox_    MACRO
  153. gui_BOXXS    SET    gui_obj_\1_XS
  154.         ENDM
  155.  
  156.  
  157. GUIGotoBox_    MACRO
  158. gui_XS        SET    gui_obj_\1_XS
  159. gui_YS        SET    gui_obj_\1_YS
  160.         ENDM
  161.  
  162.  
  163. GUIIgnoreBox_    MACRO
  164. gui_MAKEBOX    set    0
  165.         ENDM
  166.  
  167.  
  168.  
  169. ;------------------
  170.  
  171. ;------------------------------------------------------------------------------
  172. *
  173. * GUIGadget_    Create a GUI gadget.
  174. * GUIText_    Add autorefreshing GUI text.
  175. *
  176. * USAGE:    GUIGadget_    kind,name
  177. *        GUIText_    FGPen,BGPen,text|textptr
  178. *
  179. ;------------------------------------------------------------------------------
  180.  
  181. ;------------------
  182. GUIGadget_    MACRO
  183.     Gadget_    \1,\2,gui_XS,gui_YS,gui_XE-gui_XS,gui_YE-gui_YS
  184. gui_obj_\2_XS    EQU    gui_XS
  185. gui_obj_\2_YS    EQU    gui_YS
  186. gui_obj_\2_XE    EQU    gui_XE
  187. gui_obj_\2_YE    EQU    gui_YE
  188.     GUICoords_
  189.         ENDM
  190.  
  191.  
  192. GUIText_    MACRO
  193.     WindowText_    gui_XS,gui_YS,\1,\2,\3
  194. gui_YS    set    gui_YS+8
  195.     ENDM
  196.  
  197.  
  198. GUICoords_    MACRO
  199.     IFLT    gui_XE,gui_BOXXE
  200. gui_BOXXE    set    gui_XE
  201.     ENDC
  202.     IFLT    gui_YE,gui_BOXYE
  203. gui_BOXYE    set    gui_YE
  204.     ENDC
  205.     ENDM
  206.  
  207.  
  208. ;------------------
  209.  
  210. ;------------------------------------------------------------------------------
  211. *
  212. * GUISize_    Declare size of next gadget.
  213. * GUISizeFR_    Declare size of next gadget which has already set right side.
  214. * GUIBelow_    Position next gadget below last or named gadget.
  215. * GUIBeside_    Position next gadget beside last or named gadget.
  216. * GUILeft_    Align left border of next gadget with named gadget.
  217. * GUIRight_    Align right border of next gadget with named gadget.
  218. * GUITop_    Align top border of next gadget with named gadget.
  219. * GUIBottom_    Align bottom border of next gadget with named gadget.
  220. *
  221. * USAGE:    GUISize_    (width),(heigth)
  222. *        GUISizeFR_    (width),(heigth)
  223. *        GUIBelow_    (name)
  224. *        GUIBeside_    (name)
  225. *        GUILeft_    name
  226. *        GUIRight_    name
  227. *        GUITop_        name
  228. *        GUIBottom_    name
  229. *
  230. ;------------------------------------------------------------------------------
  231.  
  232. ;------------------
  233. GUISize_    MACRO            ;width,heigth
  234.     IFNC    '\1',''
  235. gui_XE        SET    gui_XS+\1
  236.     ENDC
  237.     IFNC    '\2',''
  238. gui_YE        SET    gui_YS+\2
  239.     ENDC
  240.     GUICoords_
  241.         ENDM
  242.  
  243.  
  244. GUISizeFR_    MACRO            ;width,heigth
  245.     IFNC    '\1',''
  246. gui_XS        SET    gui_XE-\1
  247.     ENDC
  248.     IFNC    '\2',''
  249. gui_YE        SET    gui_YS+\2
  250.     ENDC
  251.     GUICoords_
  252.         ENDM
  253.  
  254.  
  255. GUIBeside_    MACRO            ;name|<nothing>
  256.     IFC    '\1',''
  257. gui_XS        SET    gui_XE+gui_xspace
  258.     ELSE
  259. gui_XS        SET    gui_obj_\1_XE+gui_xspace
  260. gui_YS        SET    gui_obj_\1_YS
  261.     GUICoords_
  262.     ENDC
  263.     ENDM
  264.  
  265. GUIBelow_    MACRO            ;name|<nothing>
  266.     IFC    '\1',''
  267. gui_YS        SET    gui_YE+gui_yspace
  268.     ELSE
  269. gui_YS        SET    gui_obj_\1_YE+gui_yspace
  270. gui_XS        SET    gui_obj_\1_XS
  271.     GUICoords_
  272.     ENDC
  273.     ENDM
  274.  
  275. GUILeft_    MACRO            ;name
  276. gui_XS        SET    gui_obj_\1_XS
  277.     GUICoords_
  278.         ENDM
  279.  
  280. GUIRight_    MACRO            ;name
  281. gui_XE        SET    gui_obj_\1_XE
  282.     GUICoords_
  283.         ENDM
  284.  
  285. GUITop_        MACRO            ;name
  286. gui_YS        SET    gui_obj_\1_YS
  287.     GUICoords_
  288.         ENDM
  289.  
  290. GUIBottom_    MACRO            ;name
  291. gui_YE        SET    gui_obj_\1_YE
  292.     GUICoords_
  293.         ENDM
  294.  
  295.  
  296. ;------------------
  297.  
  298. ;------------------------------------------------------------------------------
  299. *
  300. * GUIAdjust_        Adjust start coordinates of next gadget.
  301. * GUIAdjustEnd_        Adjust end coordinates after size defined.
  302. * GUIRemember_        Assign current start position to symbols.
  303. * GUISpace_        Declare empty space.
  304. * GUIWindowSize_    Assign required window size to symbols.
  305. * GUIAbsPos_        Go to absolute position.
  306. * GUIGoto_        Go to start coords of an object.
  307. * GUIPosInfo_        Evaluate and reserve (fontsensitive) space (coordinates).
  308. *
  309. * USAGE:    GUIAdjust    (x),(y)
  310. *        GUIAdjustEnd_    (x),(y)
  311. *        GUIRemember_    (xlab),(ylab)
  312. *        GUISpace_    name
  313. *        GUIWindowSize_    xlab,ylab
  314. *        GUIAbsPos_    (x),(y)
  315. *        GUIGoto_    name
  316. *
  317. ;------------------------------------------------------------------------------
  318.  
  319. ;------------------
  320. GUIAdjust_    MACRO            ;x,y adjust
  321.     IFNC    '\1',''
  322. gui_XS        SET    gui_XS+\1
  323.     ENDC
  324.     IFNC    '\2',''
  325. gui_YS        SET    gui_YS+\2
  326.     ENDC
  327.         ENDM
  328.  
  329.  
  330. GUIAdjustEnd_    MACRO            ;x,y adjust
  331.     IFNC    '\1',''
  332. gui_XE        SET    gui_XE+\1
  333.     ENDC
  334.     IFNC    '\2',''
  335. gui_YE        SET    gui_YE+\2
  336.     ENDC
  337.     GUICoords_
  338.         ENDM
  339.  
  340.  
  341. GUIRemember_    MACRO
  342.     IFNC    '\1',''
  343. \1        EQU    gui_XS
  344.     ENDC
  345.     IFNC    '\2',''
  346. \2        EQU    gui_YS
  347.     ENDC
  348.         ENDM
  349.  
  350.  
  351. GUISpace_    MACRO            ;name
  352. gui_obj_\1_XS    EQU    gui_XS
  353. gui_obj_\1_YS    EQU    gui_YS
  354. gui_obj_\1_XE    EQU    gui_XE
  355. gui_obj_\1_YE    EQU    gui_YE
  356.     GUICoords_
  357.         ENDM
  358.  
  359.  
  360. GUIWindowSize_    MACRO
  361. \1        EQU    gui_WX+gui_xspace
  362. \2        EQU    gui_WY+gui_yspace
  363. gui_obj_\1_XS    EQU    0
  364. gui_obj_\1_YS    EQU    0
  365. gui_obj_\1_XE    EQU    gui_WX
  366. gui_obj_\1_YE    EQU    gui_WY
  367.         ENDM
  368.  
  369.  
  370. GUIAbsPos_    MACRO
  371.         IFNC    '\1',''
  372. gui_XS        SET    \1
  373.         ENDC
  374.         IFNC    '\2',''
  375. gui_YS        SET    \2
  376.         ENDC
  377.         ENDM
  378.  
  379.  
  380. GUIGoto_    MACRO
  381. gui_XS        SET    gui_obj_\1_XS
  382. gui_YS        SET    gui_obj_\1_YS
  383.         ENDM
  384.  
  385.  
  386. ;------------------
  387.  
  388. ;------------------------------------------------------------------------------
  389. *
  390. * GUISpreadNew_        Start spreading of gadgets.
  391. * GUISpreadAdd_        Add a gadget to spread.
  392. * GUISpread_        Adjust gadget lefzt to last.
  393. * GUICenterX_        Center a gadget horiz. in a box. Call after GUISize_!
  394. * GUICenterY_        Center a gadget vert. in a box. Call after GUISize_!
  395. *
  396. * USAGE:    GUISpreadNew_    boxname
  397. *        GUISpreadAdd_    name
  398. *        GUISpread_
  399. *        GUICenterX_    boxname
  400. *        GUICenterY_    boxname
  401. *
  402. ;------------------------------------------------------------------------------
  403.  
  404. ;------------------
  405. GUISpreadNew_    MACRO
  406. gui_spreadval    SET    gui_obj_\1_XE-gui_obj_\1_XS-gui_xbspace
  407. gui_XS        SET    gui_obj_\1_XS+gui_xspace
  408. gui_spreadnum    SET    -1
  409.         ENDM
  410.  
  411.  
  412. GUISpreadAdd_    MACRO
  413. gui_spreadval    SET    gui_spreadval-gui_obj_\1_XE+gui_obj_\1_XS
  414. gui_spreadnum    SET    gui_spreadnum+1
  415.         ENDM
  416.  
  417.  
  418. GUISpread_    MACRO
  419.         GUIBeside_
  420.         IF2
  421. gui_XS        SET    gui_XS-gui_xspace+(gui_spreadval/gui_spreadnum)
  422. gui_spreadval    SET    gui_spreadval-(gui_spreadval/gui_spreadnum)
  423. gui_spreadnum    SET    gui_spreadnum-1
  424.         ENDC
  425.         ENDM
  426.  
  427.  
  428. GUICenterX_    MACRO
  429.         IF2
  430. gui_TEMP1    SET    gui_XE-gui_XS
  431. gui_TEMP3    SET    gui_obj_\1_XE-gui_obj_\1_XS-gui_xbspace
  432.  
  433. gui_XS        SET    gui_obj_\1_XS+gui_xbspace+(gui_TEMP3-gui_TEMP1)/2
  434. gui_XE        SET    gui_XS+gui_TEMP1
  435.         ELSE
  436. gui_TEMP1    SET    0
  437. gui_TEMP3    SET    0
  438.         ENDC
  439.         ENDM
  440.  
  441.  
  442. GUICenterY_    MACRO
  443.         IF2
  444. gui_TEMP2    SET    gui_YE-gui_YS
  445. gui_TEMP4    SET    gui_obj_\1_YE-gui_obj_\1_YS-gui_ybspace
  446.  
  447. gui_YS        SET    gui_obj_\1_YS+gui_ybspace+(gui_TEMP4-gui_TEMP2)/2
  448. gui_YE        SET    gui_YS+gui_TEMP2
  449.         ELSE
  450. gui_TEMP2    SET    0
  451. gui_TEMP4    SET    0
  452.         ENDC
  453.         ENDM
  454.  
  455.  
  456. ;------------------
  457.  
  458. ;------------------------------------------------------------------------------
  459.  
  460. ;------------------
  461.     ENDIF
  462.     END
  463.  
  464.  
  465.  
  466.