home *** CD-ROM | disk | FTP | other *** search
/ Boston 2 / boston-2.iso / DOS / PROGRAM / CLIPPER / NFTROFF / 14.TR < prev    next >
Text File  |  1993-12-01  |  28KB  |  1,663 lines

  1. .de }n
  2. .bp
  3. .sp .5i
  4. ..
  5. .wh -.8i }n
  6. .sp .5i
  7. .po -.4i
  8. .ll 7.5i
  9. .ps 9
  10. .vs 9
  11. .in 0i
  12. .ta 1.63265i
  13. .sp 2
  14. .ne 20
  15. .ps +3
  16. .vs +3
  17. FT_ADAPTER()    Report the type of video adapter installed
  18. .br
  19. .ta
  20. .in 0.08i
  21. .ps -3
  22. .vs -3
  23. .sp 2
  24. \fBFT_ADAPTER()
  25. Report the type of video adapter installed
  26. .in 0i
  27. .br
  28. \l'6.24i'
  29. .br
  30. .sp
  31. .in 0.08i
  32. \fBSyntax
  33. .sp
  34. .in 0.4i
  35. \fBFT_ADAPTER() -> nResult
  36. .sp
  37. .in 0.08i
  38. \fBArguments
  39. .sp
  40. .in 0.4i
  41. None
  42. .sp
  43. .in 0.08i
  44. \fBReturns
  45. .sp
  46. .in 0.4i
  47. Integer representing type of video adapter
  48. .sp
  49. .in 0.64i
  50. .br
  51. 0 - monochrome
  52. .br
  53. 1 - CGA
  54. .br
  55. 2 - EGA
  56. .br
  57. 3 - VGA
  58. .sp
  59. .in 0.08i
  60. \fBDescription
  61. .sp
  62. .in 0.4i
  63. This function is valuable if you use a graphics library and need to
  64. know what type of graphics adapter is installed\.
  65. .sp
  66. The source code is written to adhere to Turbo Assembler\'s IDEAL mode\.
  67. To use another assembler, you will need to rearrange the PROC and
  68. SEGMENT directives, and also the ENDP and ENDS directives (a very
  69. minor task)\.
  70. .sp
  71. .in 0.08i
  72. \fBExamples
  73. .sp
  74. .in 0.4i
  75. .br
  76. iVideo := FT_ADAPTER()
  77. .sp
  78. .br
  79. DO CASE
  80. .in 0.64i
  81. .br
  82. CASE iVideo == 0
  83. .in 0.88i
  84. .br
  85. QOUT( "You have a monochrome adapter\." )
  86. .in 0.64i
  87. .br
  88. CASE iVideo == 1
  89. .in 0.88i
  90. .br
  91. QOUT( "You have a CGA adapter\." )
  92. .in 0.64i
  93. .br
  94. CASE iVideo == 2
  95. .in 0.88i
  96. .br
  97. QOUT( "You have an EGA adapter\." )
  98. .in 0.64i
  99. .br
  100. CASE iVideo == 3
  101. .in 0.88i
  102. .br
  103. QOUT( "You have a VGA adapter\." )
  104. .in 0.4i
  105. .br
  106. ENDCASE
  107. .sp
  108. .in 0.08i
  109. \fBSource:\fR ADAPTER\.ASM
  110. .sp
  111. \fBAuthor:\fR Ted Means
  112. .in 0i
  113. .sp
  114. .in 1.5i
  115. .ti -1.5i
  116. .ta 1.5i
  117. .ft B
  118. See Also:    
  119. .ft R
  120. FT_SETMODE()
  121. .ta 1.63265i
  122. .in 0i
  123. .sp 2
  124. .ne 20
  125. .ps +3
  126. .vs +3
  127. FT_CLS()    Clear screen
  128. .br
  129. .ta
  130. .in 0.08i
  131. .ps -3
  132. .vs -3
  133. .sp 2
  134. \fBFT_CLS()
  135. Clear screen
  136. .in 0i
  137. .br
  138. \l'6.24i'
  139. .br
  140. .sp
  141. .in 0.08i
  142. \fBSyntax
  143. .sp
  144. .in 0.4i
  145. \fBFT_CLS( <nTRow>, <nLCol>, <nBRow>, <nRCol>, <nColor> ) -> NIL
  146. .sp
  147. .in 0.08i
  148. \fBArguments
  149. .sp
  150. .in 0.4i
  151. .ta 2.48i
  152. \fB<nTRow>\fR, \fB<nLCol>\fR, \fB<nBRow>\fR and    \fB<nRCol>\fR are the screen coordinates
  153. .br
  154. .ta
  155. to clear\.
  156. .sp
  157. \fB<nColor>\fR is an integer representing the color attribute\.
  158. The formula is:
  159. .sp
  160. .in 0.56i
  161. nFore + ( nBack * 16 )
  162. .sp
  163. .in 0.4i
  164. The default is black\.
  165. .sp
  166. .in 0.08i
  167. \fBReturns
  168. .sp
  169. .in 0.4i
  170. NIL
  171. .sp
  172. .in 0.08i
  173. \fBDescription
  174. .sp
  175. .in 0.4i
  176. This is a high speed function to clear the screen at the given
  177. coordinates with the given color attribute\.  This does not change
  178. Clipper\'s color settings\.  It uses direct video writes for speed\.
  179. .sp
  180. .sp
  181. .in 0.08i
  182. \fBExamples
  183. .sp
  184. .in 0.4i
  185. FT_CLS( 0, 0, MaxRow(), MaxCol(), 165 )
  186. .sp
  187. This example will clear the entire screen with the colors
  188. bright white on magenta\.
  189. .sp
  190. .in 0.08i
  191. \fBSource:\fR VIDEO1\.C
  192. .sp
  193. \fBAuthor:\fR Robert A\. DiFalco
  194. .in 0i
  195. .ta 1.63265i
  196. .sp 2
  197. .ne 20
  198. .ps +3
  199. .vs +3
  200. FT_GETMODE()    Get the video mode
  201. .br
  202. .ta
  203. .in 0.08i
  204. .ps -3
  205. .vs -3
  206. .sp 2
  207. \fBFT_GETMODE()
  208. Get the video mode
  209. .in 0i
  210. .br
  211. \l'6.24i'
  212. .br
  213. .sp
  214. .in 0.08i
  215. \fBSyntax
  216. .sp
  217. .in 0.4i
  218. \fBFT_GETMODE() -> nVMode
  219. .sp
  220. .in 0.08i
  221. \fBArguments
  222. .sp
  223. .in 0.4i
  224. None\.
  225. .sp
  226. .in 0.08i
  227. \fBReturns
  228. .sp
  229. .in 0.4i
  230. The video mode, as a numeric\.
  231. .sp
  232. .in 0.08i
  233. \fBDescription
  234. .sp
  235. .in 0.4i
  236. Use this function to find out what mode your display adapter is in\.
  237. Uses DOS interrupt 10h to get the mode\.  For a table of modes
  238. available on various graphics adapters, refer to a book such
  239. as Wilton\'s "Programmer\'s Guide to PC & PS/2 Video Systems"
  240. (Microsoft Press)
  241. .sp
  242. .in 0.08i
  243. \fBExamples
  244. .sp
  245. .in 0.64i
  246. function main( cMode )
  247. .sp
  248. .in 0.8i
  249. .br
  250. FT_SETMODE( val( cMode ) )
  251. .br
  252. QOut( "Video mode is: " + str( FT_GETMODE() ) )
  253. .br
  254. return ( nil )
  255. .sp
  256. .sp
  257. .in 0.08i
  258. \fBSource:\fR VIDMODE\.PRG
  259. .sp
  260. \fBAuthor:\fR Glenn Scott
  261. .in 0i
  262. .ta 1.63265i
  263. .sp 2
  264. .ne 20
  265. .ps +3
  266. .vs +3
  267. FT_GETVCUR()    Return info about the cursor on a specified video page
  268. .br
  269. .ta
  270. .in 0.08i
  271. .ps -3
  272. .vs -3
  273. .sp 2
  274. \fBFT_GETVCUR()
  275. Return info about the cursor on a specified video page
  276. .in 0i
  277. .br
  278. \l'6.24i'
  279. .br
  280. .sp
  281. .in 0.08i
  282. \fBSyntax
  283. .sp
  284. .in 0.4i
  285. \fBFT_GETVCUR( [ <nPage> ] ) -> <aCurInfo>
  286. .sp
  287. .in 0.08i
  288. \fBArguments
  289. .sp
  290. .in 0.32i
  291. \fB<nPage>\fR is the video page to get the cursor information for\.
  292. Defaults to the current page, as returned by FT_GETVPG()\.
  293. .sp
  294. .in 0.08i
  295. \fBReturns
  296. .sp
  297. .in 0.4i
  298. A four-element array (<aCurInfo>), set up as follows:
  299. .sp
  300. .br
  301. aCurInfo[1] = Top line of cursor
  302. .br
  303. aCurInfo[2] = Bottom line of cursor
  304. .br
  305. aCurInfo[3] = Character row
  306. .br
  307. aCurInfo[4] = Character column
  308. .sp
  309. .sp
  310. .in 0.08i
  311. \fBDescription
  312. .sp
  313. .sp
  314. .in 0.32i
  315. FT_GETVCUR() uses FT_INT86() to invoke interrupt 10h, function
  316. 3, to return the character cursor location for the specified
  317. video page\.
  318. .sp
  319. The top line and bottom line of cursor are set depending on
  320. the current cursor mode, and are only meaningful in alphanumeric
  321. video modes\.
  322. .sp
  323. For more information on graphics programming, cursors, and
  324. cursor modes, refer to Richard Wilton\'s _Programmer\'s Guide to
  325. PC and PS/2 Video Systems_ (Microsoft Press)\.
  326. .sp
  327. .sp
  328. .in 0.08i
  329. \fBExamples
  330. .sp
  331. .sp
  332. .in 0.4i
  333. .ta 2.24i
  334. .br
  335. aCurInfo := getVCur( 1 )    // Get info on cursor pos in page 1
  336. .br
  337. .ta
  338. .ta 3.12i
  339. .br
  340. QOut("Row: " + str( aCurInfo[3] ) + "    Col: " + str( aCurInfo[4] ) )
  341. .br
  342. .ta
  343. .sp
  344. .sp
  345. .sp
  346. .in 0.08i
  347. \fBSource:\fR VIDCUR\.PRG
  348. .sp
  349. \fBAuthor:\fR Glenn Scott
  350. .in 0i
  351. .ta 1.63265i
  352. .sp 2
  353. .ne 20
  354. .ps +3
  355. .vs +3
  356. FT_GETVPG()    Get the currently selected video page
  357. .br
  358. .ta
  359. .in 0.08i
  360. .ps -3
  361. .vs -3
  362. .sp 2
  363. \fBFT_GETVPG()
  364. Get the currently selected video page
  365. .in 0i
  366. .br
  367. \l'6.24i'
  368. .br
  369. .sp
  370. .in 0.08i
  371. \fBSyntax
  372. .sp
  373. .in 0.4i
  374. \fBFT_GETVPG() -> <nPage>
  375. .sp
  376. .in 0.08i
  377. \fBArguments
  378. .sp
  379. .in 0.4i
  380. None\.
  381. .sp
  382. .in 0.08i
  383. \fBReturns
  384. .sp
  385. .in 0.4i
  386. The video page, as a numeric\.
  387. .sp
  388. .in 0.08i
  389. \fBDescription
  390. .sp
  391. .in 0.4i
  392. Get the currently selected video page
  393. .sp
  394. For more information on graphics programming and video pages,
  395. consult a reference such as _Programmer\'s Guide to PC and PS/2
  396. Video Systems_ (Microsoft Press)\.
  397. .sp
  398. .sp
  399. .in 0.08i
  400. \fBExamples
  401. .sp
  402. .in 0.4i
  403. nPage := FT_GETVPG()
  404. .sp
  405. .in 0.08i
  406. \fBSource:\fR PAGE\.PRG
  407. .sp
  408. \fBAuthor:\fR Glenn Scott
  409. .in 0i
  410. .sp
  411. .in 1.5i
  412. .ti -1.5i
  413. .ta 1.5i
  414. .ft B
  415. See Also:    
  416. .ft R
  417. FT_SETVPG()
  418. .ta 1.63265i
  419. .in 0i
  420. .sp 2
  421. .ne 20
  422. .ps +3
  423. .vs +3
  424. FT_RESTATT()    Restore the attribute bytes of a specified screen region\.
  425. .br
  426. .ta
  427. .in 0.08i
  428. .ps -3
  429. .vs -3
  430. .sp 2
  431. \fBFT_RESTATT()
  432. Restore the attribute bytes of a specified screen region\.
  433. .in 0i
  434. .br
  435. \l'6.24i'
  436. .br
  437. .sp
  438. .in 0.08i
  439. \fBSyntax
  440. .sp
  441. .in 0.4i
  442. \fBFT_RESTATT( <nTop>, <nLeft>, <nBottom>, <nRight>, <cAttributes> ) -> NIL
  443. .sp
  444. .in 0.08i
  445. \fBArguments
  446. .sp
  447. .in 0.4i
  448. \fB<nTop>\fR, \fB<nLeft>\fR, \fB<nBottom>\fR, and \fB<nRight>\fR define the screen region\.
  449. \fB<cAttributes>\fR is a character string containing the attribute bytes
  450. .in 1.52i
  451. for the screen region\.  This will most often be a string
  452. previously returned by FT_SAVEATT(), but any character
  453. string may be used (provided it is of the proper size)\.
  454. .sp
  455. .in 0.08i
  456. \fBReturns
  457. .sp
  458. .in 0.4i
  459. NIL
  460. .sp
  461. .in 0.08i
  462. \fBDescription
  463. .sp
  464. .in 0.4i
  465. This function is similar to Clipper\'s RestScreen(), except that it only
  466. restores the attribute bytes\.  This is useful if you want to change the
  467. screen color without affecting the text\.
  468. .sp
  469. *** INTERNALS ALERT ***
  470. .sp
  471. This function calls the Clipper internal __gtMaxCol to obtain the
  472. maximum column value for the current video mode\.  If you\'re too gutless
  473. to use internals, then this function isn\'t for you\.
  474. .sp
  475. .in 0.08i
  476. \fBExamples
  477. .sp
  478. .in 0.4i
  479. .br
  480. // Restore attributes of row 4
  481. .br
  482. FT_RESTATT( 4, 0, 4, maxcol(), cBuffer)
  483. .sp
  484. .br
  485. // Restore attributes to middle of screen
  486. .br
  487. FT_RESTATT(10,20,14,59,cBuffer)
  488. .sp
  489. .in 0.08i
  490. \fBSource:\fR RESTATT\.ASM
  491. .sp
  492. \fBAuthor:\fR Ted Means
  493. .in 0i
  494. .sp
  495. .in 1.5i
  496. .ti -1.5i
  497. .ta 1.5i
  498. .ft B
  499. See Also:    
  500. .ft R
  501. FT_SAVEATT()
  502. .ta 1.63265i
  503. .in 0i
  504. .sp 2
  505. .ne 20
  506. .ps +3
  507. .vs +3
  508. FT_REVATTR()    Reverse colors of specified screen coordinates
  509. .br
  510. .ta
  511. .in 0.08i
  512. .ps -3
  513. .vs -3
  514. .sp 2
  515. \fBFT_REVATTR()
  516. Reverse colors of specified screen coordinates
  517. .in 0i
  518. .br
  519. \l'6.24i'
  520. .br
  521. .sp
  522. .in 0.08i
  523. \fBSyntax
  524. .sp
  525. .in 0.4i
  526. \fBFT_REVATTR( <nTRow>, <nLCol>, <nBRow>, <nRCol> ) -> NIL
  527. .sp
  528. .in 0.08i
  529. \fBArguments
  530. .sp
  531. .in 0.4i
  532. \fB<nTRow>\fR, \fB<nLCol>\fR, \fB<nBRow>\fR, and \fB<nRCol>\fR are the coordinates of the
  533. screen region\.
  534. .sp
  535. .in 0.08i
  536. \fBReturns
  537. .sp
  538. .in 0.4i
  539. NIL
  540. .sp
  541. .in 0.08i
  542. \fBDescription
  543. .sp
  544. .in 0.4i
  545. This is a high speed function to reverse the color of a specified
  546. screen region without disturbing any text on the screen\.  This
  547. function will correctly reverse the color attributes in a region
  548. containing multiple color combinations\.
  549. .sp
  550. .in 0.08i
  551. \fBExamples
  552. .sp
  553. .in 0.4i
  554. FT_REVATTR( 0, 0, MaxRow(), MaxCol() )
  555. .sp
  556. This example will change the entire screen\'s colors to their reverse
  557. .ta 2.32i
  558. attributes without changing    or overwriting any text\.
  559. .br
  560. .ta
  561. .sp
  562. .in 0.08i
  563. \fBSource:\fR VIDEO1\.C
  564. .sp
  565. \fBAuthor:\fR Robert A\. DiFalco
  566. .in 0i
  567. .ta 1.63265i
  568. .sp 2
  569. .ne 20
  570. .ps +3
  571. .vs +3
  572. FT_REVCHR()    Reverse the color of a single character on the screen
  573. .br
  574. .ta
  575. .in 0.08i
  576. .ps -3
  577. .vs -3
  578. .sp 2
  579. \fBFT_REVCHR()
  580. Reverse the color of a single character on the screen
  581. .in 0i
  582. .br
  583. \l'6.24i'
  584. .br
  585. .sp
  586. .in 0.08i
  587. \fBSyntax
  588. .sp
  589. .in 0.4i
  590. \fBFT_REVCHR( <nTRow>, <nLCol> ) -> NIL
  591. .sp
  592. .in 0.08i
  593. \fBArguments
  594. .sp
  595. .in 0.4i
  596. \fB<nTRow>\fR, \fB<nLCol>\fR are the screen coordinates of the character\.
  597. .sp
  598. .in 0.08i
  599. \fBReturns
  600. .sp
  601. .in 0.4i
  602. NIL
  603. .sp
  604. .in 0.08i
  605. \fBDescription
  606. .sp
  607. .in 0.4i
  608. This is a high speed function to reverse the color of a single
  609. character on the screen without changing the character itself\.
  610. This function is the same as FT_REVATTR() except that it changes
  611. only one character on screen and hence is faster and uses less memory\.
  612. .sp
  613. .in 0.08i
  614. \fBExamples
  615. .sp
  616. .in 0.4i
  617. FT_REVCHR( 10, 20 )
  618. .sp
  619. This example will change the text and background at 10, 20 to it\'s
  620. reverse color attributes without changing or overwriting the
  621. character itself\.
  622. .sp
  623. .in 0.08i
  624. \fBSource:\fR VIDEO1\.C
  625. .sp
  626. \fBAuthor:\fR Robert A\. DiFalco
  627. .in 0i
  628. .ta 1.63265i
  629. .sp 2
  630. .ne 20
  631. .ps +3
  632. .vs +3
  633. FT_RGNSTACK()    Push or pop a saved screen region on or off the stack
  634. .br
  635. .ta
  636. .in 0.08i
  637. .ps -3
  638. .vs -3
  639. .sp 2
  640. \fBFT_RGNSTACK()
  641. Push or pop a saved screen region on or off the stack
  642. .in 0i
  643. .br
  644. \l'6.24i'
  645. .br
  646. .sp
  647. .in 0.08i
  648. \fBSyntax
  649. .sp
  650. .in 0.4i
  651. \fBFT_RGNSTACK( <cAction>, [ <nTop> ], [ <nLeft> ], [ <nBottom> ],
  652. .in 0.64i
  653. \fB[ <nRight> ] ) -> NIL
  654. .sp
  655. .in 0.08i
  656. \fBArguments
  657. .sp
  658. .in 0.4i
  659. \fB<cAction>\fR determines what action FT_RGNSTACK() will take\.  The
  660. allowable values for this parameter are "push", "pop", and "pop all"\.
  661. If the function is called with any other string as the first parameter
  662. no action is performed\.
  663. .sp
  664. \fB<cAction>\fR with a value of "push" will push a saved screen region onto
  665. the stack\.  A value of "pop" will restore the most recently pushed
  666. screen region\.  "pop all" tells the function to restore all screen
  667. images which are currently on the stack\.
  668. .sp
  669. The use of \fB<nTop>\fR, \fB<nLeft>\fR, \fB<nBottom>\fR, and \fB<nRight>\fR depends on the
  670. \fB<cAction>\fR parameter\.  If \fB<cAction>\fR is "push", the next four parameters
  671. define the screen region to save\.  If \fB<cAction>\fR is "pop" or "pop all"
  672. the following four parameters are ignored\.
  673. .sp
  674. .in 0.08i
  675. \fBReturns
  676. .sp
  677. .in 0.4i
  678. FT_RGNSTACK() returns NIL\.
  679. .sp
  680. .in 0.08i
  681. \fBDescription
  682. .sp
  683. .in 0.4i
  684. FT_RGNSTACK() allows multiple screens to be saved and restored from
  685. a stack\.  The stack is implemented with Clipper static array that is
  686. visible only to FT_RGNSTACK()\.
  687. .sp
  688. The purpose of FT_RGNSTACK() is to allow multiple screen regions to be
  689. managed without the need to remember the original coordinates or to
  690. create variables for each one\.
  691. .sp
  692. When called with "push", FT_RGNSTACK() places the saved screen area
  693. at the end of the static array\.  The array size is incremented by one
  694. to accommodate the new screen area\.
  695. .sp
  696. When called with "pop", the function restores the screen image stored
  697. in the last element of the array, and the array size is decremented by
  698. one\.  If "pop all" is specified, all the saved screens are restored
  699. until the array is empty\.
  700. .sp
  701. FT_RGNSTACK() calls FT_SAVRGN() and FT_RSTRGN()\.  Refer to the
  702. documentation for these two functions for more information\.
  703. .sp
  704. .in 0.08i
  705. \fBExamples
  706. .sp
  707. .in 0.4i
  708. The following example uses FT_RGNSTACK() to save and restore various
  709. sections of the screen\.
  710. .sp
  711. .ta 3.28i
  712. .br
  713. @ 00, 00, 24, 79 BOX "111111111"    // fill the screen with 1\'s
  714. .br
  715. .ta
  716. .ta 3.28i
  717. .br
  718. FT_RGNSTACK("push", 10, 05, 15, 15)    // push a region
  719. .br
  720. .ta
  721. .ta 3.28i
  722. .br
  723. @ 00, 00, 24, 79 BOX "222222222"    // fill the screen with 2\'s
  724. .br
  725. .ta
  726. .ta 3.28i
  727. .br
  728. FT_RGNSTACK("push", 10, 20, 15, 30)    // push a region
  729. .br
  730. .ta
  731. .ta 3.28i
  732. .br
  733. @ 00, 00, 24, 79 BOX "333333333"    // fill the screen with 3\'s
  734. .br
  735. .ta
  736. .ta 3.28i
  737. .br
  738. FT_RGNSTACK("push", 10, 35, 15, 45)    // push a region
  739. .br
  740. .ta
  741. .ta 3.28i
  742. .br
  743. @ 00, 00, 24, 79 BOX "444444444"    // fill the screen with 4\'s
  744. .br
  745. .ta
  746. .ta 3.28i
  747. .br
  748. FT_RGNSTACK("push", 10, 50, 15, 60)    // push a region
  749. .br
  750. .ta
  751. .ta 3.28i
  752. .br
  753. @ 00, 00, 24, 79 BOX "555555555"    // fill the screen with 5\'s
  754. .br
  755. .ta
  756. .ta 3.28i
  757. .br
  758. FT_RGNSTACK("push", 10, 65, 15, 75)    // push a region
  759. .br
  760. .ta
  761. .br
  762. CLEAR
  763. .ta 2.08i
  764. .br
  765. FT_RGNSTACK("pop")    // restore the 5\'s region
  766. .br
  767. .ta
  768. .ta 2.08i
  769. .br
  770. FT_RGNSTACK("pop")    // restore the 4\'s region
  771. .br
  772. .ta
  773. .ta 2.08i
  774. .br
  775. FT_RGNSTACK("pop all")    // restore the 3\'s, 2\'s and 1\'s regions
  776. .br
  777. .ta
  778. .sp
  779. .in 0.08i
  780. \fBSource:\fR SCREGION\.PRG
  781. .sp
  782. \fBAuthor:\fR David A\. Richardson
  783. .in 0i
  784. .sp
  785. .in 1.5i
  786. .ti -1.5i
  787. .ta 1.5i
  788. .ft B
  789. See Also:    
  790. .ft R
  791. FT_SAVRGN()
  792. , FT_RSTRGN()
  793. .ta 1.63265i
  794. .in 0i
  795. .sp 2
  796. .ne 20
  797. .ps +3
  798. .vs +3
  799. FT_RSTRGN()    Restore region of the screen saved with FT_SAVRGN()
  800. .br
  801. .ta
  802. .in 0.08i
  803. .ps -3
  804. .vs -3
  805. .sp 2
  806. \fBFT_RSTRGN()
  807. Restore region of the screen saved with FT_SAVRGN()
  808. .in 0i
  809. .br
  810. \l'6.24i'
  811. .br
  812. .sp
  813. .in 0.08i
  814. \fBSyntax
  815. .sp
  816. .in 0.4i
  817. \fBFT_RSTRGN( <cScreen>, [ <nTop> ], [ <nLeft> ] ) -> NIL
  818. .sp
  819. .in 0.08i
  820. \fBArguments
  821. .sp
  822. .in 0.4i
  823. \fB<cScreen>\fR is a screen region previously returned from FT_SAVRGN()\.
  824. .sp
  825. \fB<nTop>\fR and \fB<nLeft>\fR are optional parameters that define a new location
  826. for the upper left corner of the screen area contained in \fB<cScreen>\.
  827. Allowable values are 0 through 255\.
  828. .sp
  829. .in 0.08i
  830. \fBReturns
  831. .sp
  832. .in 0.4i
  833. FT_RSTRGN() returns NIL\.
  834. .sp
  835. .in 0.08i
  836. \fBDescription
  837. .sp
  838. .in 0.4i
  839. FT_RSTRGN() restores a screen region previously saved with
  840. FT_SAVRGN()\.  Calling FT_RSTRGN() with <cScreen> as the only
  841. parameter will restore the saved region to its original location\.
  842. <nTop> and <nLeft> may be used to define a new location for the
  843. upper left corner of the saved region\.
  844. .sp
  845. <nTop> and <nLeft> are dependent upon each other\. You may not
  846. specify one without the other\.
  847. .sp
  848. FT_RSTRGN() calls Clipper\'s RESTSCREEN()\.  Refer to the Clipper
  849. documentation for more information regarding this function\.
  850. .sp
  851. .in 0.08i
  852. \fBExamples
  853. .sp
  854. .in 0.4i
  855. The following example uses FT_RSTRGN() to restore a saved portion
  856. of the screen to different locations\.
  857. .sp
  858. .ta 3.04i
  859. .br
  860. @ 00, 00, 24, 79 BOX "111111111"    // fill the screen with 1\'s
  861. .br
  862. .ta
  863. .ta 3.04i
  864. .br
  865. cScreen = FT_SAVRGN(10, 10, 20, 30)    // save a region
  866. .br
  867. .ta
  868. .ta 3.04i
  869. .br
  870. @ 00, 00, 24, 79 BOX "222222222"    // fill the screen with 2\'s
  871. .br
  872. .ta
  873. .ta 3.04i
  874. .br
  875. FT_RSTRGN(cScreen)    // restore the 1\'s region
  876. .br
  877. .ta
  878. .ta 3.04i
  879. .br
  880. @ 00, 00, 24, 79 BOX "222222222"    // fill the screen with 2\'s
  881. .br
  882. .ta
  883. .ta 3.04i
  884. .br
  885. FT_RSTRGN(cScreen, 15, 15)    // restore to a different location
  886. .br
  887. .ta
  888. .ta 3.04i
  889. .br
  890. @ 00, 00, 24, 79 BOX "222222222"    // fill the screen with 2\'s
  891. .br
  892. .ta
  893. .ta 3.04i
  894. .br
  895. FT_RSTRGN(cScreen, 20, 60)    // restore to a different location
  896. .br
  897. .ta
  898. .sp
  899. .in 0.08i
  900. \fBSource:\fR SCREGION\.PRG
  901. .sp
  902. \fBAuthor:\fR David A\. Richardson
  903. .in 0i
  904. .sp
  905. .in 1.5i
  906. .ti -1.5i
  907. .ta 1.5i
  908. .ft B
  909. See Also:    
  910. .ft R
  911. FT_SAVRGN()
  912. , FT_RGNSTACK()
  913. .ta 1.63265i
  914. .in 0i
  915. .sp 2
  916. .ne 20
  917. .ps +3
  918. .vs +3
  919. FT_SAVEATT()    Save the attribute bytes of a specified screen region\.
  920. .br
  921. .ta
  922. .in 0.08i
  923. .ps -3
  924. .vs -3
  925. .sp 2
  926. \fBFT_SAVEATT()
  927. Save the attribute bytes of a specified screen region\.
  928. .in 0i
  929. .br
  930. \l'6.24i'
  931. .br
  932. .sp
  933. .in 0.08i
  934. \fBSyntax
  935. .sp
  936. .in 0.4i
  937. .ta 4i
  938. \fBFT_SAVEATT( <nTop>, <nLeft>, <nBottom>, <nRight>    ) -> cAttributes
  939. .br
  940. .ta
  941. .sp
  942. .in 0.08i
  943. \fBArguments
  944. .sp
  945. .in 0.4i
  946. \fB<nTop>\fR, \fB<nLeft>\fR, \fB<nBottom>\fR, and \fB<nRight>\fR define the screen region\.
  947. .sp
  948. .in 0.08i
  949. \fBReturns
  950. .sp
  951. .in 0.4i
  952. A character string containing the screen attribute bytes for the
  953. specified region\.  If the memory to store the return value could
  954. not be allocated, the function returns NIL\.
  955. .sp
  956. .in 0.08i
  957. \fBDescription
  958. .sp
  959. .in 0.4i
  960. This function is similar to Clipper\'s SaveScreen(), except that it only
  961. saves the attribute bytes\.  This is useful if you want to change the
  962. screen color without affecting the text\.
  963. .sp
  964. *** INTERNALS ALERT ***
  965. .sp
  966. This function calls the Clipper internal __gtMaxCol to obtain the
  967. maximum column value for the current video mode\.  If you\'re too gutless
  968. to use internals, then this function isn\'t for you\.
  969. .sp
  970. .in 0.08i
  971. \fBExamples
  972. .sp
  973. .in 0.4i
  974. .br
  975. // Save attributes of row 4
  976. .br
  977. cBuffer := FT_SAVEATT( 4, 0, 4, maxcol())
  978. .sp
  979. .br
  980. // Save attributes from middle of screen
  981. .br
  982. cBuffer := FT_SAVEATT(10,20,14,59)
  983. .sp
  984. .in 0.08i
  985. \fBSource:\fR SAVEATT\.ASM
  986. .sp
  987. \fBAuthor:\fR Ted Means
  988. .in 0i
  989. .sp
  990. .in 1.5i
  991. .ti -1.5i
  992. .ta 1.5i
  993. .ft B
  994. See Also:    
  995. .ft R
  996. FT_RESTATT()
  997. .ta 1.63265i
  998. .in 0i
  999. .sp 2
  1000. .ne 20
  1001. .ps +3
  1002. .vs +3
  1003. FT_SAVRGN()    Save a screen region for later display
  1004. .br
  1005. .ta
  1006. .in 0.08i
  1007. .ps -3
  1008. .vs -3
  1009. .sp 2
  1010. \fBFT_SAVRGN()
  1011. Save a screen region for later display
  1012. .in 0i
  1013. .br
  1014. \l'6.24i'
  1015. .br
  1016. .sp
  1017. .in 0.08i
  1018. \fBSyntax
  1019. .sp
  1020. .in 0.4i
  1021. \fBFT_SAVRGN( <nTop>, <nLeft>, <nBottom>, <nRight> ) -> cScreen
  1022. .sp
  1023. .in 0.08i
  1024. \fBArguments
  1025. .sp
  1026. .in 0.4i
  1027. \fB<nTop>\fR, \fB<nLeft>\fR, \fB<nBottom>\fR, and \fB<nRight>\fR define the portion of the
  1028. screen to save\.  Allowable values are 0 through 255\.
  1029. .sp
  1030. .in 0.08i
  1031. \fBReturns
  1032. .sp
  1033. .in 0.4i
  1034. FT_SAVRGN() returns the saved screen region and its coordinates
  1035. as a character string\.
  1036. .sp
  1037. .in 0.08i
  1038. \fBDescription
  1039. .sp
  1040. .in 0.4i
  1041. FT_SAVRGN() is similar to Clipper\'s SAVESCREEN(), but it saves the
  1042. screen coordinates as well as the display information\.  The saved
  1043. area can be restored by passing the returned string to FT_RSTRGN()\.
  1044. .sp
  1045. Note that the strings returned from FT_SAVRGN() and Clipper\'s
  1046. SAVESCREEN() are not interchangeable\.  A screen region saved with
  1047. with FT_SAVRGN() must be restored using FT_RSTRGN()\.
  1048. .sp
  1049. FT_SAVRGN() calls Clipper\'s SAVESCREEN()\.  Refer to the Clipper
  1050. documentation for more information regarding this function\.
  1051. .sp
  1052. .in 0.08i
  1053. \fBExamples
  1054. .sp
  1055. .in 0.4i
  1056. The following example uses FT_SAVRGN() and FT_RSTRGN() to save
  1057. and restore a portion of the screen\.
  1058. .sp
  1059. .ta 3.12i
  1060. .br
  1061. @ 00, 00, 24, 79 BOX "111111111"    // fill the screen with 1\'s
  1062. .br
  1063. .ta
  1064. .ta 3.12i
  1065. .br
  1066. cScreen = FT_SAVRGN(10, 10, 20, 30)    // save a region
  1067. .br
  1068. .ta
  1069. .ta 3.12i
  1070. .br
  1071. @ 00, 00, 24, 79 BOX "222222222"    // fill the screen with 2\'s
  1072. .br
  1073. .ta
  1074. .ta 3.12i
  1075. .br
  1076. FT_RSTRGN(cScreen)    // restore the 1\'s region
  1077. .br
  1078. .ta
  1079. .sp
  1080. .in 0.08i
  1081. \fBSource:\fR SCREGION\.PRG
  1082. .sp
  1083. \fBAuthor:\fR David A\. Richardson
  1084. .in 0i
  1085. .sp
  1086. .in 1.5i
  1087. .ti -1.5i
  1088. .ta 1.5i
  1089. .ft B
  1090. See Also:    
  1091. .ft R
  1092. FT_RSTRGN()
  1093. , FT_RGNSTACK()
  1094. .ta 1.63265i
  1095. .in 0i
  1096. .sp 2
  1097. .ne 20
  1098. .ps +3
  1099. .vs +3
  1100. FT_SETATTR()    Change color attributes of screen region
  1101. .br
  1102. .ta
  1103. .in 0.08i
  1104. .ps -3
  1105. .vs -3
  1106. .sp 2
  1107. \fBFT_SETATTR()
  1108. Change color attributes of screen region
  1109. .in 0i
  1110. .br
  1111. \l'6.24i'
  1112. .br
  1113. .sp
  1114. .in 0.08i
  1115. \fBSyntax
  1116. .sp
  1117. .in 0.4i
  1118. \fBFT_SETATTR( <nTRow>, <nLCol>, <nBRow>, <nRCol>, <nColor> ) -> NIL
  1119. .sp
  1120. .in 0.08i
  1121. \fBArguments
  1122. .sp
  1123. .in 0.4i
  1124. \fB<nTRow>\fR, \fB<nLCol>\fR, \fB<nBRow>\fR, and \fB<nRCol>\fR are the coordinates of the
  1125. screen region\.
  1126. .sp
  1127. \fB<nColor>\fR is an integer representing the new color attribute\.
  1128. The formula is:
  1129. .sp
  1130. .in 0.72i
  1131. nFore + ( nBack * 16 )
  1132. .sp
  1133. .in 0.08i
  1134. \fBReturns
  1135. .sp
  1136. .in 0.4i
  1137. NIL
  1138. .sp
  1139. .in 0.08i
  1140. \fBDescription
  1141. .sp
  1142. .in 0.4i
  1143. This is a high speed function to change the colors of a specified
  1144. region of the screen without disturbing any text\.  Uses direct
  1145. video writes\.
  1146. .sp
  1147. .in 0.08i
  1148. \fBExamples
  1149. .sp
  1150. .in 0.4i
  1151. FT_SETATTR( 0, 0, MaxRow(), MaxCol(), 165 )
  1152. .sp
  1153. This example will change the entire screen\'s colors to bright white on
  1154. magenta without changing or overwriting any text on the screen\.
  1155. .sp
  1156. .in 0.08i
  1157. \fBSource:\fR VIDEO1\.C
  1158. .sp
  1159. \fBAuthor:\fR Robert A\. DiFalco
  1160. .in 0i
  1161. .ta 1.63265i
  1162. .sp 2
  1163. .ne 20
  1164. .ps +3
  1165. .vs +3
  1166. FT_SETMODE()    Set the video mode
  1167. .br
  1168. .ta
  1169. .in 0.08i
  1170. .ps -3
  1171. .vs -3
  1172. .sp 2
  1173. \fBFT_SETMODE()
  1174. Set the video mode
  1175. .in 0i
  1176. .br
  1177. \l'6.24i'
  1178. .br
  1179. .sp
  1180. .in 0.08i
  1181. \fBSyntax
  1182. .sp
  1183. .in 0.4i
  1184. \fBFT_SETMODE( <nMode> ) -> NIL
  1185. .sp
  1186. .in 0.08i
  1187. \fBArguments
  1188. .sp
  1189. .in 0.4i
  1190. \fB<nMode>\fR is one of the DOS video modes\.
  1191. .sp
  1192. .in 0.08i
  1193. \fBReturns
  1194. .sp
  1195. .in 0.4i
  1196. NIL
  1197. .sp
  1198. .in 0.08i
  1199. \fBDescription
  1200. .sp
  1201. .in 0.4i
  1202. Use this function to put your display adapter into a video mode\.
  1203. Uses DOS interrupt 10h to set the mode\.  For a table of modes
  1204. available on various graphics adapters, refer to a book such
  1205. as Wilton\'s "Programmer\'s Guide to PC & PS/2 Video Systems"
  1206. (Microsoft Press)
  1207. .sp
  1208. .in 0.08i
  1209. \fBExamples
  1210. .sp
  1211. .in 0.64i
  1212. FUNCTION Main( cMode )
  1213. .sp
  1214. .in 0.8i
  1215. .br
  1216. FT_SETMODE( VAL( cMode ) )
  1217. .br
  1218. QOUT( "Video mode is: " + STR( FT_GETMODE() ) )
  1219. .br
  1220. RETURN ( NIL )
  1221. .sp
  1222. .in 0.08i
  1223. \fBSource:\fR VIDMODE\.PRG
  1224. .sp
  1225. \fBAuthor:\fR Glenn Scott
  1226. .in 0i
  1227. .sp
  1228. .in 1.5i
  1229. .ti -1.5i
  1230. .ta 1.5i
  1231. .ft B
  1232. See Also:    
  1233. .ft R
  1234. FT_ADAPTER()
  1235. .ta 1.63265i
  1236. .in 0i
  1237. .sp 2
  1238. .ne 20
  1239. .ps +3
  1240. .vs +3
  1241. FT_SETVCUR()    Set the cursor position on a specified video page
  1242. .br
  1243. .ta
  1244. .in 0.08i
  1245. .ps -3
  1246. .vs -3
  1247. .sp 2
  1248. \fBFT_SETVCUR()
  1249. Set the cursor position on a specified video page
  1250. .in 0i
  1251. .br
  1252. \l'6.24i'
  1253. .br
  1254. .sp
  1255. .in 0.08i
  1256. \fBSyntax
  1257. .sp
  1258. .in 0.4i
  1259. \fBFT_SETVCUR( [ <nPage> ], [ <nRow> ], [ <nCol> ] ) -> NIL
  1260. .sp
  1261. .in 0.08i
  1262. \fBArguments
  1263. .sp
  1264. .in 0.4i
  1265. \fB<nPage>\fR is the video page (defaults to current page, determined
  1266. .in 1.04i
  1267. by FT_GETVPG()
  1268. .sp
  1269. .in 0.4i
  1270. .ta 0.64i
  1271. \fB<nRow>\fR    is the row coordinate (defaults to 0 )
  1272. .br
  1273. .ta
  1274. .sp
  1275. .ta 0.64i
  1276. \fB<nCol>\fR    is the column coordinate (defaults to 0 )
  1277. .br
  1278. .ta
  1279. .sp
  1280. .in 0.08i
  1281. \fBReturns
  1282. .sp
  1283. .in 0.4i
  1284. NIL
  1285. .sp
  1286. .in 0.08i
  1287. \fBDescription
  1288. .sp
  1289. .in 0.4i
  1290. FT_SETVCUR() sets the cursor position on a specific video page\.
  1291. It uses FT_INT86() to invoke interrupt 10h, function 2\.
  1292. .sp
  1293. For more information on graphics programming, cursors, and video
  1294. pages, refer to Richard Wilton\'s _Programmer\'s Guide to PC and
  1295. PS/2 Video Systems_ (Microsoft Press)\.
  1296. .sp
  1297. .sp
  1298. .in 0.08i
  1299. \fBExamples
  1300. .sp
  1301. .sp
  1302. .in 0.4i
  1303. // Set the position to row 5, column 10 on video page 1:
  1304. .sp
  1305. .in 0.96i
  1306. FT_SETVCUR( 1, 5, 10 )
  1307. .sp
  1308. .in 0.08i
  1309. \fBSource:\fR VIDCUR\.PRG
  1310. .sp
  1311. \fBAuthor:\fR Glenn Scott
  1312. .in 0i
  1313. .ta 1.63265i
  1314. .sp 2
  1315. .ne 20
  1316. .ps +3
  1317. .vs +3
  1318. FT_SETVPG()    Set the current video page
  1319. .br
  1320. .ta
  1321. .in 0.08i
  1322. .ps -3
  1323. .vs -3
  1324. .sp 2
  1325. \fBFT_SETVPG()
  1326. Set the current video page
  1327. .in 0i
  1328. .br
  1329. \l'6.24i'
  1330. .br
  1331. .sp
  1332. .in 0.08i
  1333. \fBSyntax
  1334. .sp
  1335. .in 0.4i
  1336. \fBFT_SETVPG( <nPage> ) -> NIL
  1337. .sp
  1338. .in 0.08i
  1339. \fBArguments
  1340. .sp
  1341. .in 0.4i
  1342. \fB<nMode>\fR is a valid video page\.
  1343. .sp
  1344. .in 0.08i
  1345. \fBReturns
  1346. .sp
  1347. .in 0.4i
  1348. NIL
  1349. .sp
  1350. .in 0.08i
  1351. \fBDescription
  1352. .sp
  1353. .in 0.4i
  1354. Selects the video page\.
  1355. .sp
  1356. For more information on graphics programming and video pages,
  1357. consult a reference such as "Programmer\'s Guide to PC and PS/2
  1358. Video Systems" (Microsoft Press)\.
  1359. .sp
  1360. .in 0.08i
  1361. \fBExamples
  1362. .sp
  1363. .in 0.4i
  1364. // The following sets the current video page to 1
  1365. .sp
  1366. FT_SETVPG( 1 )
  1367. .sp
  1368. .in 0.08i
  1369. \fBSource:\fR PAGE\.PRG
  1370. .sp
  1371. \fBAuthor:\fR Glenn Scott
  1372. .in 0i
  1373. .sp
  1374. .in 1.5i
  1375. .ti -1.5i
  1376. .ta 1.5i
  1377. .ft B
  1378. See Also:    
  1379. .ft R
  1380. FT_GETVPG()
  1381. .ta 1.63265i
  1382. .in 0i
  1383. .sp 2
  1384. .ne 20
  1385. .ps +3
  1386. .vs +3
  1387. FT_SHADOW()    Draw a non-destructive shadow on the screen
  1388. .br
  1389. .ta
  1390. .in 0.08i
  1391. .ps -3
  1392. .vs -3
  1393. .sp 2
  1394. \fBFT_SHADOW()
  1395. Draw a non-destructive shadow on the screen
  1396. .in 0i
  1397. .br
  1398. \l'6.24i'
  1399. .br
  1400. .sp
  1401. .in 0.08i
  1402. \fBSyntax
  1403. .sp
  1404. .in 0.4i
  1405. \fBFT_SHADOW( <nTop>, <nLeft>, <nBottom>, <nRight> ) -> NIL
  1406. .sp
  1407. .in 0.08i
  1408. \fBArguments
  1409. .sp
  1410. .in 0.4i
  1411. .ta 0.8i
  1412. \fB<nTop>\fR    is the top row of the shadow area\.
  1413. .br
  1414. .ta
  1415. .sp
  1416. .ta 0.8i
  1417. \fB<nLeft>\fR    is the upper left column of the shadow area\.
  1418. .br
  1419. .ta
  1420. .sp
  1421. \fB<nBottom>\fR is the bottom row of the shadow area\.
  1422. .sp
  1423. .ta 0.8i
  1424. \fB<nRight>\fR    is the lower right column of the shadow area\.
  1425. .br
  1426. .ta
  1427. .sp
  1428. .in 0.08i
  1429. \fBReturns
  1430. .sp
  1431. .in 0.4i
  1432. NIL
  1433. .sp
  1434. .in 0.08i
  1435. \fBDescription
  1436. .sp
  1437. .in 0.4i
  1438. This function was designed to have my application emulate the
  1439. non-destructive shadowing of the PC-TOOLS application\. This function
  1440. was written in Assembly language for speed since, the same function
  1441. written in Clipper was too slow\. The size of this function could be
  1442. reduced by re-writing the SET_CUR_POSITION, READ_CHARACTER, and
  1443. WRITE_CHARACTER macros as procedures\. Note: this will slow it down
  1444. a tad, since stack manipulation will be involved\.
  1445. .sp
  1446. 1\.  If you are using the SAVESCREEN() function to save your screen,
  1447. .in 0.72i
  1448. remember to save enough screen for the shadow\. The shadow will
  1449. require 1 row and 2 columns\.
  1450. .sp
  1451. .in 1.04i
  1452. save_win = SAVESCREEN(Trow,Tcol,Brow+1,Bcol+2)
  1453. .sp
  1454. .in 0.4i
  1455. .ta 2.32i
  1456. 2\.  *** INTERNALS ALERT ***    This function uses several Clipper internal
  1457. .br
  1458. .ta
  1459. .in 0.72i
  1460. routines\.  If using internals scares you, then stay away from this
  1461. function, you gutless weasel\.
  1462. .sp
  1463. .in 0.4i
  1464. The source code is written to MASM specifications\.  To use another
  1465. assembler, either invoke that assembler\'s MASM compatibility switch,
  1466. or make the required modifications to the source code\.
  1467. .sp
  1468. .in 0.08i
  1469. \fBExamples
  1470. .sp
  1471. .in 0.4i
  1472. .ta 3.44i
  1473. .br
  1474. LOCAL Save_Win := SaveScreen(10,10,21,52)    // save enough for the shadow
  1475. .br
  1476. .ta
  1477. .ta 3.44i
  1478. .br
  1479. FT_SHADOW(10,10,20,50)    // draw shadow
  1480. .br
  1481. .ta
  1482. .sp
  1483. .in 0.64i
  1484. .br
  1485. \.\.\.
  1486. .in 0.8i
  1487. .br
  1488. do what ya\' like
  1489. .in 0.64i
  1490. .br
  1491. \.\.\.
  1492. .sp
  1493. .in 0.4i
  1494. .ta 3.2i
  1495. .br
  1496. RestScreen(10,10,21,52,Save_Win)    // restore screen
  1497. .br
  1498. .ta
  1499. .br
  1500. RETURN
  1501. .sp
  1502. .in 0.08i
  1503. \fBSource:\fR SHADOW\.ASM
  1504. .sp
  1505. \fBAuthor:\fR Reginald B\. Walton; Modified by Ted Means
  1506. .in 0i
  1507. .ta 1.63265i
  1508. .sp 2
  1509. .ne 20
  1510. .ps +3
  1511. .vs +3
  1512. FT_VIDSTR()    Display string on screen in specified attribute
  1513. .br
  1514. .ta
  1515. .in 0.08i
  1516. .ps -3
  1517. .vs -3
  1518. .sp 2
  1519. \fBFT_VIDSTR()
  1520. Display string on screen in specified attribute
  1521. .in 0i
  1522. .br
  1523. \l'6.24i'
  1524. .br
  1525. .sp
  1526. .in 0.08i
  1527. \fBSyntax
  1528. .sp
  1529. .in 0.4i
  1530. \fBFT_VIDSTR( <nRow>, <nCol>, <cString> [, <nColor> ] ) -> NIL
  1531. .sp
  1532. .in 0.08i
  1533. \fBArguments
  1534. .sp
  1535. .in 0.4i
  1536. \fB<nRow>\fR and \fB<nCol>\fR are the screen coordinates\.
  1537. .sp
  1538. \fB<cString>\fR is the string to be printed on the screen\.
  1539. .sp
  1540. \fB<nColor>\fR is an integer representing the color attribute\.
  1541. The formula is:
  1542. .sp
  1543. .in 0.56i
  1544. nFore + ( nBack * 16 )
  1545. .sp
  1546. .in 0.4i
  1547. FT_VIDSTR() will display the string in the current color if
  1548. \fB<nColor>\fR is not passed\.
  1549. .sp
  1550. .in 0.08i
  1551. \fBReturns
  1552. .sp
  1553. .in 0.4i
  1554. NIL
  1555. .sp
  1556. .in 0.08i
  1557. \fBDescription
  1558. .sp
  1559. .in 0.4i
  1560. This is a high speed function to display a string of any ASCII
  1561. characters on screen in a specified color attribute\.  This function
  1562. is useful for constructing screens with a lot of text or repetitive
  1563. screen prints where speed is important\.
  1564. .sp
  1565. .in 0.08i
  1566. \fBExamples
  1567. .sp
  1568. .in 0.4i
  1569. FT_VIDSTR( 10, 20, "Enter Name :", 165 )
  1570. .sp
  1571. This example will print the specified text at coordinates 10, 20
  1572. in bright white on top of Magenta\.
  1573. .sp
  1574. .sp
  1575. .in 0.08i
  1576. \fBSource:\fR VIDEO1\.C
  1577. .sp
  1578. \fBAuthor:\fR Robert A\. DiFalco
  1579. .in 0i
  1580. .ta 1.63265i
  1581. .sp 2
  1582. .ne 20
  1583. .ps +3
  1584. .vs +3
  1585. FT_WRTCHR()    Display character on screen
  1586. .br
  1587. .ta
  1588. .in 0.08i
  1589. .ps -3
  1590. .vs -3
  1591. .sp 2
  1592. \fBFT_WRTCHR()
  1593. Display character on screen
  1594. .in 0i
  1595. .br
  1596. \l'6.24i'
  1597. .br
  1598. .sp
  1599. .in 0.08i
  1600. \fBSyntax
  1601. .sp
  1602. .in 0.4i
  1603. \fBFT_WRTCHR( <nRow>, <nCol>, <cChar>, <nColor> ) -> NIL
  1604. .sp
  1605. .in 0.08i
  1606. \fBArguments
  1607. .sp
  1608. .in 0.4i
  1609. \fB<nRow>\fR and \fB<nCol>\fR are the screen coordinates\.
  1610. .sp
  1611. \fB<cChar>\fR is the single character to print on the screen\.
  1612. .sp
  1613. \fB<nColor>\fR is an integer representing the color attribute\.
  1614. The formula is:
  1615. .sp
  1616. .in 0.64i
  1617. nFore + ( nBack * 16 )
  1618. .sp
  1619. .in 0.08i
  1620. \fBReturns
  1621. .sp
  1622. .in 0.4i
  1623. NIL
  1624. .sp
  1625. .in 0.08i
  1626. \fBDescription
  1627. .sp
  1628. .in 0.4i
  1629. This is a high speed function to display a single ASCII character
  1630. on screen in a specified color attribute\.  This function is useful
  1631. for constructing screens with a lot of text or repetitive screen prints
  1632. where speed is important\.  It is faster and requires less memory than
  1633. FT_VIDSTR()\.  A working example is contained in ClrTable\.Prg\.
  1634. .sp
  1635. .in 0.08i
  1636. \fBExamples
  1637. .sp
  1638. .in 0.48i
  1639. .br
  1640. FOR nX = 1 to MaxRow()
  1641. .in 0.72i
  1642. .br
  1643. FOR nY = 1 to MaxCol()
  1644. .in 0.96i
  1645. .br
  1646. FT_PRNTCHR( nX, nY, "\(sq", (nX - 1)+(nY * 16) )
  1647. .in 0.72i
  1648. .br
  1649. NEXT
  1650. .in 0.48i
  1651. .br
  1652. NEXT
  1653. .sp
  1654. This example will write the ASCII character 249 to every location
  1655. on screen in every possible color combination\.  It will recognize
  1656. the status of SetBlink()\.  It uses direct video writes for speed\.
  1657. .sp
  1658. .sp
  1659. .in 0.08i
  1660. \fBSource:\fR VIDEO1\.C
  1661. .sp
  1662. \fBAuthor:\fR Robert A\. DiFalco
  1663.