home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / VOGLE.ZIP / SRC / ASPECT.C < prev    next >
C/C++ Source or Header  |  2000-02-11  |  1KB  |  76 lines

  1. #include "vogle.h"
  2.  
  3. #define    MIN(x, y)    ((x) < (y) ? (x) : (y))
  4.  
  5. /*
  6.  * getaspect
  7.  *
  8.  *    Gets the aspect ratio of the display/window.
  9.  *    IE. y / x
  10.  */
  11. float
  12. getaspect()
  13. {
  14.     return((float)vdevice.sizeSy / (float)vdevice.sizeSx);
  15. }
  16.  
  17. /*
  18.  * getdisplaysize
  19.  *
  20.  *    Returns the raw size of the display window in pixel units
  21.  *    as floating point values.
  22.  */
  23. void
  24. getdisplaysize(x, y)
  25.     float    *x, *y;
  26. {
  27.     *x = (float)vdevice.sizeSx;
  28.     *y = (float)vdevice.sizeSy;
  29. }
  30.  
  31. /*
  32.  * getfactors
  33.  *
  34.  *    returns two x and y scaling factors for use with the
  35.  *    viewport call so as the viewport can be set to the
  36.  *    whole display/window.
  37.  */
  38. void
  39. getfactors(x, y)
  40.     float    *x, *y;
  41. {
  42.     *x = (float)vdevice.sizeSx / (float)vdevice.sizeX;
  43.     *y = (float)vdevice.sizeSy / (float)vdevice.sizeY;
  44. }
  45.  
  46. /*
  47.  * expandviewport
  48.  *
  49.  *    Vogle will normally use the largest square it can fit onto the 
  50.  * actual display device. This call says to use the whole device... however
  51.  * you must then take into account any distortion that will occur due to 
  52.  * the non square mapping.
  53.  */
  54. void
  55. expandviewport()
  56. {
  57.     vdevice.attr->a.exvp = 1;
  58.     vdevice.sizeX = vdevice.sizeSx;
  59.     vdevice.sizeY = vdevice.sizeSy;
  60.  
  61.     CalcW2Vcoeffs();
  62. }
  63.  
  64. /*
  65.  * unexpandviewport
  66.  *     - opposite of the above...
  67.  */
  68. void
  69. unexpandviewport()
  70. {
  71.     vdevice.attr->a.exvp = 0;
  72.     vdevice.sizeY = vdevice.sizeX = MIN(vdevice.sizeSx, vdevice.sizeSy);
  73.  
  74.     CalcW2Vcoeffs();
  75. }
  76.