home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / graphics / 12901 < prev    next >
Encoding:
Internet Message Format  |  1992-12-15  |  2.3 KB

  1. Xref: sparky comp.graphics:12901 comp.os.msdos.programmer:11404
  2. Newsgroups: comp.graphics,comp.os.msdos.programmer
  3. Path: sparky!uunet!mnemosyne.cs.du.edu!nyx!slindsay
  4. From: slindsay@nyx.cs.du.edu (Steve Lindsay)
  5. Subject: Gprintf and setprecision
  6. Message-ID: <1992Dec15.071041.22208@mnemosyne.cs.du.edu>
  7. Sender: usenet@mnemosyne.cs.du.edu (netnews admin account)
  8. Organization: Nyx, Public Access Unix @ U. of Denver Math/CS dept.
  9. Distribution: na
  10. Date: Tue, 15 Dec 92 07:10:41 GMT
  11. Lines: 47
  12.  
  13.  
  14. I have been trying to output floating point numbers to a DOS 
  15. VGA screen graphics screen.  I am using Borland 3.1 C++and 
  16. EGAVGA.BGI.  I found the below function in one of the example
  17.  files.  It works great but there is a problem.  I want to only 
  18. output 3 places right of the decimal point.  I have tried 
  19. setprecision(2) right in front of my floating point variable 
  20. on the gprintf line.  But it will not work.  I know why and
  21.  that is because it is no longer a floating point but a string. 
  22. Does anyone have an idea of how to out smart this little 
  23. function and only let it output 3 places right of the decimal
  24. point.
  25.              .........Thanks!!...........
  26.  
  27. GPRINTF: Used like PRINTF except the output is sent to the*/
  28. screen in graphics mode at the specified co-ordinate.  */
  29.  
  30.          
  31. int gprintf( int *xloc, int *yloc, char *fmt, ... )
  32. {
  33.   va_list  argptr;              /* Argument list pointer */
  34.   char str[140];              /* Buffer to build sting into  */
  35.   int cnt;                     /* Result of SPRINTF for return /
  36.  
  37.   va_start( argptr, fmt );            /* Initialize va_ functions*/
  38.  
  39.   cnt = vsprintf( str, fmt, argptr );          /* prints string to buffer*/
  40.   outtextxy( *xloc, *yloc, str);  /* Send string in graphics mode */
  41.   *yloc += textheight( "H" ) + 2;       /* Advance to next line        */
  42.  
  43.   va_end( argptr );            /* Close va_functions         */
  44.  
  45.   return( cnt );                /* Return the conversion count*/
  46.  
  47. / ************* BELOW is part of the include file *************
  48.  
  49. typedef void _FAR *va_list;
  50.  
  51. #define __size(x) ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int)-1))
  52.  
  53. #if defined(__cplusplus) && !defined(__STDC__)
  54. #define va_start(ap, parmN) (ap = ...)
  55. #else
  56. #define va_start(ap, parmN) ((void)((ap) = (va_list)((char _FAR 
  57. *)(&parmN)+__size(parmN))))
  58. #endif
  59.  
  60.