home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / PStream / Rexx / ARexxDemo.tsrx next >
Text File  |  1993-11-08  |  7KB  |  371 lines

  1. /* DEMONSTRATION OF TYPESMITH'S AREXX CAPABILITIES */
  2. /* Copyright 1993 Soft-Logik Publishing Corporation */
  3. /* May not be distributed without Soft-Logik Publishing Corporation's express written permission */
  4. /* $VER: 2.0 */
  5.  
  6. ADDRESS 'TYPESMITH'
  7. OPTIONS RESULTS
  8. TRACE OFF
  9.  
  10. /* Screen to front */
  11.  
  12. TO_FRONT
  13.  
  14. /* Get the version number of TypeSmith and store it in RESULT */
  15.  
  16. VERSION
  17.  
  18. /* The underscore character in front of a string is for hotkeys.
  19. ** It will be filtered out if you have `Use system requesters'
  20. ** turned on.
  21. */
  22.  
  23. DISPLAY_ALERT 'Welcome to a demonstration of TypeSmith 'TRUNC(RESULT/100,2) 'and ARexx!|Continue|Exit'
  24.  
  25. if RC = 5 then EXIT
  26.  
  27. /* open a requester with a text gadget */
  28.  
  29. GET_STRING 'What is your name?|Continue|Cancel'
  30.  
  31. if RC = 5 then RESULT = 'No Name'
  32.  
  33. name = RESULT
  34.  
  35. DISPLAY_ALERT 'Hi 'name'!|Continue|Exit'
  36.  
  37. if RC = 5 then EXIT
  38.  
  39. /* Ask for permission to start a new font */
  40.  
  41. DISPLAY_ALERT name', can I clear the existing font?|Continue|Exit'
  42.  
  43. if RC = 5 then EXIT
  44.  
  45. DISPLAY_ALERT 'First, we will start a new font...|Continue|Exit'
  46.  
  47. if RC = 5 then EXIT
  48.  
  49. /* Start a new font, open a character window, name it and size the window */
  50.  
  51. NEW_FONT
  52. NEW_METRIC
  53. SET_FONTNAME 'ARexx Demonstration'
  54. SET_FAMILY 'ARexxDemo'
  55. SET_WEIGHT 'Normal'
  56. SET_FULLNAME 'ARexxDemoNormal'
  57. SET_FONTID '999'
  58. SET_NOTICE 'This is only a test folks...'
  59. SIZE_WINDOW 550 600
  60. SHOW_FILLED 0
  61.  
  62. DISPLAY_ALERT 'I will now draw a letter 'A'.|Continue|Exit'
  63.  
  64. if RC = 5 then EXIT
  65.  
  66. /* draw a serif 'A' */
  67.  
  68. MOVETO 18 2
  69. LINETO 18 20
  70. CURVETO 54 20 81 39 105 97
  71. LINETO 336 651
  72. LINETO 358 651
  73. LINETO 606 73
  74. CURVETO 626 32 650 20 683 20
  75. LINETO 683 1
  76. LINETO 438 1
  77. LINETO 438 20
  78. CURVETO 495 20 512 37 503 73
  79. LINETO 447 208
  80. LINETO 197 208
  81. LINETO 153 97
  82. CURVETO 127 46 139 20 209 20
  83. LINETO 209 1
  84. CLOSEPATH
  85.  
  86. MOVETO 211 251
  87. LINETO 433 251
  88. LINETO 322 512
  89. CLOSEPATH
  90.  
  91. DISPLAY_ALERT 'Now I will zoom in and out a bit...|Continue|Exit'
  92.  
  93. if RC = 5 then EXIT
  94.  
  95. /* set the scaling factor a bit */
  96.  
  97. SET_SCALE 4
  98. SET_SCALE 5
  99. SET_SCALE 6
  100. SET_SCALE 7
  101. SET_SCALE 6
  102. SET_SCALE 5
  103. SET_SCALE 4
  104. SET_SCALE 3
  105. SET_SCALE 2
  106. SET_SCALE 3
  107.  
  108. DISPLAY_ALERT 'TypeSmith can show characters filled or unfilled...|Continue|Exit'
  109.  
  110. if RC = 5 then EXIT
  111.  
  112. /* show character as filled */
  113.  
  114. SHOW_FILLED 1
  115.  
  116. DISPLAY_ALERT 'But it is easier to work with just outlines...|Continue|Exit'
  117.  
  118. if RC = 5 then EXIT
  119.  
  120. /* show characters as unfilled */
  121.  
  122. SHOW_FILLED 0
  123.  
  124. DISPLAY_ALERT 'I will now select the first point in the first path.|Continue|Exit'
  125.  
  126. if RC = 5 then EXIT
  127.  
  128. /* select the first point of the first path */
  129.  
  130. FIRST_PATH
  131.  
  132. DISPLAY_ALERT 'I can find out its coordinates...|Continue|Exit'
  133.  
  134. if RC = 5 then EXIT
  135.  
  136. /* get coordinates of point */
  137.  
  138. GET_POINTX
  139. pointx = RESULT
  140. GET_POINTY
  141. pointy = RESULT
  142.  
  143. DISPLAY_ALERT 'Point x='pointx' y='pointy'|Continue|Exit'
  144.  
  145. if RC = 5 then EXIT
  146.  
  147. DISPLAY_ALERT 'I can change the coordinates of a point...|Continue|Exit'
  148.  
  149. if RC = 5 then EXIT
  150.  
  151. SET_POINT 100 100 0 0 0 0
  152.  
  153. DISPLAY_ALERT 'I will change it back now...|Continue|Exit'
  154.  
  155. if RC = 5 then EXIT
  156.  
  157. SET_POINT pointx pointy 0 0 0 0
  158.  
  159. DISPLAY_ALERT 'Watch me select various points in this path...|Continue|Exit'
  160.  
  161. if RC = 5 then EXIT
  162.  
  163. /* select the next point in this path, then continue... */
  164.  
  165. NEXT_POINT
  166. NEXT_POINT
  167. NEXT_POINT
  168. NEXT_POINT
  169. NEXT_POINT
  170. PREVIOUS_POINT
  171. PREVIOUS_POINT
  172. GOTO_START
  173.  
  174. DISPLAY_ALERT 'Now I will select all the points in the first path.|Continue|Exit'
  175.  
  176. if RC = 5 then EXIT
  177.  
  178. /* select all the points in the path */
  179.  
  180. SELECT_PATH
  181.  
  182. DISPLAY_ALERT 'Now I will select all the points in the second path.|Continue|Exit'
  183.  
  184. if RC = 5 then EXIT
  185.  
  186. /* select the first point of the next path next_path only works when 1
  187.    point is selected, thus we need to use first_path again */
  188.  
  189. FIRST_PATH
  190. NEXT_PATH
  191. SELECT_PATH
  192.  
  193. DISPLAY_ALERT 'I can even switch back and forth between paths...|Continue|Exit'
  194.  
  195. if RC = 5 then EXIT
  196.  
  197. /* select one path, then all its points, then the other path... */
  198.  
  199. FIRST_PATH
  200. NEXT_PATH
  201. PREVIOUS_PATH
  202. NEXT_PATH
  203. PREVIOUS_PATH
  204.  
  205. DISPLAY_ALERT 'And I can select all the points in a specified area...|Continue|Exit'
  206. if RC = 5 then EXIT
  207.  
  208. /* select an area */
  209.  
  210. SELECT_AREA 0 0 250 250
  211.  
  212. DISPLAY_ALERT 'Now I will select all the points in both paths.|Continue|Exit'
  213.  
  214. if RC = 5 then EXIT
  215.  
  216. /* select all the points in the character */
  217.  
  218. SELECT_ALL
  219.  
  220. DISPLAY_ALERT 'Watch me rotate the A.|Continue|Exit'
  221.  
  222. if RC = 5 then EXIT
  223.  
  224. /* rotate all the selected points */
  225.  
  226. ROTATE 5
  227. ROTATE 5
  228. ROTATE 5
  229. ROTATE 5
  230. ROTATE 5
  231.  
  232. DISPLAY_ALERT 'Watch me skew the A now.|Continue|Exit'
  233.  
  234. if RC = 5 then EXIT
  235.  
  236. /* skew all the selected points */
  237.  
  238. SKEW 5
  239. SKEW 5
  240. SKEW 5
  241. SKEW 5
  242. SKEW 5
  243.  
  244. DISPLAY_ALERT 'Watch me flip the A.|Continue|Exit'
  245.  
  246. if RC = 5 then EXIT
  247.  
  248. /* flip horizontally and vertically */
  249.  
  250. FLIP 0
  251. FLIP 1
  252. FLIP 0
  253. FLIP 1
  254.  
  255. DISPLAY_ALERT 'I can make it bigger...|Continue|Exit'
  256.  
  257. if RC = 5 then EXIT
  258.  
  259. /* scale it */
  260.  
  261. SCALE 110 100
  262. SCALE 110 100
  263. SCALE 110 100
  264. SCALE 100 110
  265. SCALE 100 110
  266. SCALE 100 110
  267.  
  268. DISPLAY_ALERT '...and make it smaller.|Continue|Exit'
  269.  
  270. if RC = 5 then EXIT
  271.  
  272. /* scale it down */
  273.  
  274. SCALE 90 90
  275. SCALE 90 90
  276. SCALE 90 90
  277.  
  278. DISPLAY_ALERT 'I can move paths, too.|Continue|Exit'
  279.  
  280. if RC = 5 then EXIT
  281.  
  282. /* move it */
  283.  
  284. MOVE 5 5
  285. MOVE 10 10
  286. MOVE 15 15
  287. MOVE 20 20
  288. MOVE 25 25
  289. MOVE '-25 0'
  290. MOVE '-20 0'
  291. MOVE '-15 0'
  292. MOVE '-10 0'
  293. MOVE '-5 0'
  294.  
  295. DISPLAY_ALERT 'Or I can make you see double.|Continue|Exit'
  296.  
  297. if RC = 5 then EXIT
  298.  
  299. /* duplicate the paths and then offset them */
  300.  
  301. COPY
  302. PASTE
  303. MOVE 100 100
  304.  
  305. DISPLAY_ALERT 'I will get rid of the copy.|Continue|Exit'
  306.  
  307. if RC = 5 then EXIT
  308.  
  309. DELETE
  310.  
  311. DISPLAY_ALERT 'I can even make it disappear...|Continue|Exit'
  312.  
  313. if RC = 5 then EXIT
  314.  
  315. /* cut the paths to the clipboard */
  316.  
  317. SELECT_ALL
  318. CUT
  319.  
  320. DISPLAY_ALERT '...and make it re-appear.|Continue|Exit'
  321.  
  322. if RC = 5 then EXIT
  323.  
  324. /* paste it back */
  325.  
  326. PASTE
  327.  
  328. DISPLAY_ALERT 'Watch me change the screen order.|Continue|Exit'
  329.  
  330. if RC = 5 then EXIT
  331.  
  332. /* Move the screen to the back and then back to the front.
  333.    Use the timer for a delay using standard ARexx commands */
  334.  
  335. loop=0
  336. do while loop<3
  337.     TO_BACK
  338.     call time('R')
  339.     kount=time('E')
  340.     do while kount<.15
  341.         kount=time('E')
  342.     end
  343.     TO_FRONT
  344.     call time('R')
  345.     kount=time('E')
  346.     do while kount<.15
  347.         kount=time('E')
  348.     end
  349.     loop=loop+1
  350. end
  351.  
  352. DISPLAY_ALERT 'I can open a file requester to let you choose files...|Continue|Exit'
  353.  
  354. if RC = 5 then EXIT
  355.  
  356. /* open a file requester and get a file path and name */
  357.  
  358. GET_FILE 'Choose any file...|Ok|ram:|'
  359.  
  360. /* if Cancel is selected, then change the result to no file selected */
  361.  
  362. if RC = 5 then RESULT = '<no file selected!>'
  363.  
  364. DISPLAY_ALERT 'The file you chose was: 'RESULT'|Continue|Exit'
  365.  
  366. if RC = 5 then EXIT
  367.  
  368. DISPLAY_ALERT 'This is the end of the demonstration.|Continue'
  369. DISPLAY_ALERT 'Refer to Chapter 7 for more information.|Continue'
  370. DISPLAY_ALERT 'I will return control to you now.|Bye!'
  371.