home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / PowerPlant / 3D Additions 1.7 / 3D Additions / 3DDrawingUtils.inline.cp < prev    next >
Encoding:
Text File  |  1995-10-09  |  14.0 KB  |  309 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    3DDrawingUtils.inline.cp
  3. //    ©1995 J. Rodden, DD/MF & Associates. All rights reserved
  4. // ===========================================================================
  5. // C++ wrapper class inlined procedures for 3D drawing utilities.
  6. // Dependent on PPlant UDrawingUtils
  7. //
  8. // These routines were optimized for speed without sacrificing code bloat.
  9. // The key to this is the multiple DoDeviceLoop routines.
  10.  
  11. #pragma once
  12.  
  13. // ===========================================================================
  14. // • St3DDeviceLoop                                              St3DDeviceLoop •
  15. // ===========================================================================
  16.  
  17. inline St3DDeviceLoop::St3DDeviceLoop(const Rect &inLocalRect)
  18.     : StDeviceLoop(inLocalRect) {}
  19.  
  20. inline Boolean St3DDeviceLoop::Next()
  21.     { Int16 depth; return NextDepth(depth); }
  22.  
  23. inline Boolean St3DDeviceLoop::CurrentDeviceIsGrayscale()
  24.     // This test came from Zig Zichterman's LDeviceLoop:
  25.     // !!! I haven't seen this flag documented, so this might
  26.     // !!! be a dangerous test. It's worked so far though...
  27.     { return (((**mCurrentDevice).gdFlags & 0x0001) == 0); }
  28.     
  29. inline Boolean St3DDeviceLoop::CurrentDeviceIs3DCapable()
  30.     { Int16 depth = (**((**mCurrentDevice).gdPMap)).pixelSize;
  31.       return ( (8 <= depth) || ((4 <= depth) && (CurrentDeviceIsGrayscale())) );
  32.     }
  33.     
  34. inline Boolean St3DDeviceLoop::CurrentDeviceIsGrayCapable()
  35.     { Int16 depth = (**((**mCurrentDevice).gdPMap)).pixelSize;
  36.       return ( (4 <= depth) || ((2 <= depth) && (CurrentDeviceIsGrayscale())) );
  37.     }
  38.  
  39.  
  40. // ===========================================================================
  41. // • St3DPenState                                                St3DPenState •
  42. // ===========================================================================
  43.  
  44. inline St3DPenState::~St3DPenState()
  45.     { ::SetPenState(&mPenState); }
  46.  
  47.  
  48. // ===========================================================================
  49. // • U3DDrawingUtils                                         U3DDrawingUtils •
  50. // ===========================================================================
  51.  
  52. // ===========================================================================
  53. // ---------------------------------------------------------------------------
  54. // • Accessing Routines                                      Accessing Routines •
  55. // ---------------------------------------------------------------------------
  56.  
  57. inline void U3DDrawingUtils::Get3DBackColor( RGBColor* outBkgndColor)
  58.     { ::Get3DBackColor(outBkgndColor); }
  59.     
  60. inline void U3DDrawingUtils::Get3DLightColor( RGBColor* outLightColor)
  61.     { ::Get3DLightColor(outLightColor); }
  62.     
  63. inline void U3DDrawingUtils::Get3DShadowColor( RGBColor* outShadowColor)
  64.     { ::Get3DShadowColor(outShadowColor); }
  65.     
  66. inline void U3DDrawingUtils::Get3DPenState( PenState* outPnState)
  67.     { ::Get3DPenState(outPnState); }
  68.     
  69. // ---------------------------------------------------------------------------
  70.     
  71. inline void U3DDrawingUtils::Get3DBackColor( RGBColor& outBkgndColor)
  72.     { ::Get3DBackColor(&outBkgndColor); }
  73.     
  74. inline void U3DDrawingUtils::Get3DLightColor( RGBColor& outLightColor)
  75.     { ::Get3DLightColor(&outLightColor); }
  76.     
  77. inline void U3DDrawingUtils::Get3DShadowColor( RGBColor& outShadowColor)
  78.     { ::Get3DShadowColor(&outShadowColor); }
  79.     
  80. inline void U3DDrawingUtils::Get3DPenState( PenState& outPnState)
  81.     { ::Get3DPenState(&outPnState); }
  82.     
  83. // ===========================================================================
  84. // ---------------------------------------------------------------------------
  85. // • Accessor Routines                                       Accessor Routines •
  86. // ---------------------------------------------------------------------------
  87.  
  88. inline void U3DDrawingUtils::Set3DBackColor(const RGBColor* inBkgndColor)
  89.     { ::Set3DBackColor(inBkgndColor); }
  90.     
  91. inline void U3DDrawingUtils::Set3DLightColor(const RGBColor* inLightColor)
  92.     { ::Set3DLightColor(inLightColor); }
  93.     
  94. inline void U3DDrawingUtils::Set3DShadowColor(const RGBColor* inShadowColor)
  95.     { ::Set3DShadowColor(inShadowColor); }
  96.     
  97. inline void U3DDrawingUtils::Set3DPenState(const PenState* inPnState)
  98.     { ::Set3DPenState(inPnState); }
  99.     
  100. // ---------------------------------------------------------------------------
  101.     
  102. inline void U3DDrawingUtils::Set3DBackColor(const RGBColor& inBkgndColor)
  103.     { ::Set3DBackColor(&inBkgndColor); }
  104.     
  105. inline void U3DDrawingUtils::Set3DLightColor(const RGBColor& inLightColor)
  106.     { ::Set3DLightColor(&inLightColor); }
  107.     
  108. inline void U3DDrawingUtils::Set3DShadowColor(const RGBColor& inShadowColor)
  109.     { ::Set3DShadowColor(&inShadowColor); }
  110.     
  111. inline void U3DDrawingUtils::Set3DPenState(const PenState& inPnState)
  112.     { ::Set3DPenState(&inPnState); }
  113.     
  114. // ===========================================================================
  115. // ---------------------------------------------------------------------------
  116. // • Ovals                                                               Ovals •
  117. // ---------------------------------------------------------------------------
  118.  
  119. inline void    U3DDrawingUtils::Draw3DOvalPanel(const Rect* inRect,
  120.             const RGBColor* inBKColor, const RGBColor* inULColor,
  121.             const RGBColor* inLRColor, const Boolean inFrameIt)
  122.     { DoDeviceLoop( ::Draw3DOvalPanel, U3DDrawingUtils::DoFrameOval, inRect,
  123.                       inBKColor, inULColor, inLRColor, inFrameIt); }
  124.  
  125. inline void U3DDrawingUtils::Draw3DInsetOvalPanel(const Rect* inRect)
  126.     { DoDeviceLoop( ::Draw3DInsetOvalPanel, U3DDrawingUtils::DoFrameOval, inRect); }
  127.     
  128. inline void U3DDrawingUtils::Draw3DRaisedOvalPanel(const Rect* inRect)
  129.     { DoDeviceLoop( ::Draw3DRaisedOvalPanel, U3DDrawingUtils::DoFrameOval, inRect); }
  130.  
  131. // ---------------------------------------------------------------------------
  132.  
  133. inline void    U3DDrawingUtils::Draw3DOvalPanel(const Rect& inRect,
  134.             const RGBColor& inBKColor, const RGBColor& inULColor,
  135.             const RGBColor& inLRColor, const Boolean inFrameIt)
  136.     { DoDeviceLoop( ::Draw3DOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect,
  137.                       &inBKColor, &inULColor, &inLRColor, inFrameIt); }
  138.  
  139. inline void U3DDrawingUtils::Draw3DInsetOvalPanel(const Rect& inRect)
  140.     { DoDeviceLoop( ::Draw3DInsetOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect); }
  141.     
  142. inline void U3DDrawingUtils::Draw3DRaisedOvalPanel(const Rect& inRect)
  143.     { DoDeviceLoop( ::Draw3DRaisedOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect); }
  144.  
  145. // ---------------------------------------------------------------------------
  146. // ---------------------------------------------------------------------------
  147.  
  148. inline void    U3DDrawingUtils::Draw3DOvalBorder(const Rect* inRect,
  149.             const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt)
  150.     { DoDeviceLoop( ::Draw3DOvalBorder, U3DDrawingUtils::DoFrameOval, inRect,
  151.                       inULColor, inLRColor, inFrameIt); }
  152.  
  153. inline void U3DDrawingUtils::Draw3DInsetOvalBorder(const Rect* inRect)
  154.     { DoDeviceLoop( ::Draw3DInsetOvalBorder, U3DDrawingUtils::DoFrameOval, inRect); }
  155.  
  156. inline void U3DDrawingUtils::Draw3DRaisedOvalBorder(const Rect* inRect)
  157.     { DoDeviceLoop( ::Draw3DRaisedOvalBorder, U3DDrawingUtils::DoFrameOval, inRect); }
  158.  
  159. // ---------------------------------------------------------------------------
  160.  
  161. inline void    U3DDrawingUtils::Draw3DOvalBorder(const Rect& inRect,
  162.             const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt)
  163.     { DoDeviceLoop( ::Draw3DOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect,
  164.                       &inULColor, &inLRColor, inFrameIt); }
  165.  
  166. inline void U3DDrawingUtils::Draw3DInsetOvalBorder(const Rect& inRect)
  167.     { DoDeviceLoop( ::Draw3DInsetOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect); }
  168.  
  169. inline void U3DDrawingUtils::Draw3DRaisedOvalBorder(const Rect& inRect)
  170.     { DoDeviceLoop( ::Draw3DRaisedOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect); }
  171.  
  172. // ---------------------------------------------------------------------------
  173. // ---------------------------------------------------------------------------
  174.  
  175. inline void    U3DDrawingUtils::Draw3DOvalFrame(const Rect* inRect,
  176.             const RGBColor* inULColor, const RGBColor* inLRColor)
  177.     { DoDeviceLoop( ::Draw3DOvalFrame, U3DDrawingUtils::DoFrameOval, inRect,
  178.                       inULColor, inLRColor); }
  179.  
  180. inline void U3DDrawingUtils::Draw3DInsetOvalFrame(const Rect* inRect)
  181.     { DoDeviceLoop( ::Draw3DInsetOvalFrame, U3DDrawingUtils::DoFrameOval, inRect); }
  182.  
  183. inline void U3DDrawingUtils::Draw3DRaisedOvalFrame(const Rect* inRect)
  184.     { DoDeviceLoop( ::Draw3DRaisedOvalFrame, U3DDrawingUtils::DoFrameOval, inRect); }
  185.  
  186. // ---------------------------------------------------------------------------
  187.  
  188. inline void    U3DDrawingUtils::Draw3DOvalFrame(const Rect& inRect,
  189.             const RGBColor& inULColor, const RGBColor& inLRColor)
  190.     { DoDeviceLoop( ::Draw3DOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect,
  191.                       &inULColor, &inLRColor); }
  192.  
  193. inline void U3DDrawingUtils::Draw3DInsetOvalFrame(const Rect& inRect)
  194.     { DoDeviceLoop( ::Draw3DInsetOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect); }
  195.  
  196. inline void U3DDrawingUtils::Draw3DRaisedOvalFrame(const Rect& inRect)
  197.     { DoDeviceLoop( ::Draw3DRaisedOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect); }
  198.  
  199.  
  200. // ===========================================================================
  201. // ---------------------------------------------------------------------------
  202. // • Frames                                                              Frames •
  203. // ---------------------------------------------------------------------------
  204.  
  205. inline void    U3DDrawingUtils::Draw3DPanel (const Rect* inRect,
  206.             const RGBColor* inBKColor, const RGBColor* inULColor,
  207.             const RGBColor* inLRColor, const Boolean inFrameIt)
  208.     { DoDeviceLoop( ::Draw3DPanel, U3DDrawingUtils::DoFrameRect, inRect,
  209.                       inBKColor, inULColor, inLRColor, inFrameIt); }
  210.  
  211. inline void U3DDrawingUtils::Draw3DInsetPanel(const Rect* inRect)
  212.     { DoDeviceLoop( ::Draw3DInsetPanel, U3DDrawingUtils::DoFrameRect, inRect); }
  213.     
  214. inline void U3DDrawingUtils::Draw3DRaisedPanel(const Rect* inRect)
  215.     { DoDeviceLoop( ::Draw3DRaisedPanel, U3DDrawingUtils::DoFrameRect, inRect); }
  216.     
  217. // ---------------------------------------------------------------------------
  218.  
  219. inline void    U3DDrawingUtils::Draw3DPanel (const Rect& inRect,
  220.             const RGBColor& inBKColor, const RGBColor& inULColor,
  221.             const RGBColor& inLRColor, const Boolean inFrameIt)
  222.     { DoDeviceLoop( ::Draw3DPanel, U3DDrawingUtils::DoFrameRect, &inRect,
  223.                       &inBKColor, &inULColor, &inLRColor, inFrameIt); }
  224.  
  225. inline void U3DDrawingUtils::Draw3DInsetPanel(const Rect& inRect)
  226.     { DoDeviceLoop( ::Draw3DInsetPanel, U3DDrawingUtils::DoFrameRect, &inRect); }
  227.     
  228. inline void U3DDrawingUtils::Draw3DRaisedPanel(const Rect& inRect)
  229.     { DoDeviceLoop( ::Draw3DRaisedPanel, U3DDrawingUtils::DoFrameRect, &inRect); }
  230.     
  231. // ---------------------------------------------------------------------------
  232. // ---------------------------------------------------------------------------
  233.  
  234. inline void    U3DDrawingUtils::Draw3DBorder(const Rect* inRect,
  235.             const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt)
  236.     { DoDeviceLoop( ::Draw3DBorder, U3DDrawingUtils::DoFrameRect, inRect,
  237.                       inULColor, inLRColor, inFrameIt); }
  238.     
  239. inline void U3DDrawingUtils::Draw3DInsetBorder(const Rect* inRect)
  240.     { DoDeviceLoop( ::Draw3DInsetBorder, U3DDrawingUtils::DoFrameRect, inRect); }
  241.     
  242. inline void U3DDrawingUtils::Draw3DRaisedBorder(const Rect* inRect)
  243.     { DoDeviceLoop( ::Draw3DRaisedBorder, U3DDrawingUtils::DoFrameRect, inRect); }
  244.     
  245. // ---------------------------------------------------------------------------
  246.  
  247. inline void    U3DDrawingUtils::Draw3DBorder(const Rect& inRect,
  248.             const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt)
  249.     { DoDeviceLoop( ::Draw3DBorder, U3DDrawingUtils::DoFrameRect, &inRect,
  250.                       &inULColor, &inLRColor, inFrameIt); }
  251.     
  252. inline void U3DDrawingUtils::Draw3DInsetBorder(const Rect& inRect)
  253.     { DoDeviceLoop( ::Draw3DInsetBorder, U3DDrawingUtils::DoFrameRect, &inRect); }
  254.     
  255. inline void U3DDrawingUtils::Draw3DRaisedBorder(const Rect& inRect)
  256.     { DoDeviceLoop( ::Draw3DRaisedBorder, U3DDrawingUtils::DoFrameRect, &inRect); }
  257.     
  258. // ---------------------------------------------------------------------------
  259. // ---------------------------------------------------------------------------
  260.  
  261. inline void    U3DDrawingUtils::Draw3DFrame (const Rect* inRect,
  262.             const RGBColor* inULColor, const RGBColor* inLRColor)
  263.     { DoDeviceLoop( ::Draw3DFrame, U3DDrawingUtils::DoFrameRect, inRect,
  264.                       inULColor, inLRColor); }
  265.     
  266. inline void U3DDrawingUtils::Draw3DInsetFrame(const Rect* inRect)
  267.     { DoDeviceLoop( ::Draw3DInsetFrame, U3DDrawingUtils::DoFrameRect, inRect); }
  268.     
  269. inline void U3DDrawingUtils::Draw3DRaisedFrame(const Rect* inRect)
  270.     { DoDeviceLoop( ::Draw3DRaisedFrame, U3DDrawingUtils::DoFrameRect, inRect); }
  271.  
  272. // ---------------------------------------------------------------------------
  273.  
  274. inline void    U3DDrawingUtils::Draw3DFrame (const Rect& inRect,
  275.             const RGBColor& inULColor, const RGBColor& inLRColor)
  276.     { DoDeviceLoop( ::Draw3DFrame, U3DDrawingUtils::DoFrameRect, &inRect,
  277.                       &inULColor, &inLRColor); }
  278.     
  279. inline void U3DDrawingUtils::Draw3DInsetFrame(const Rect& inRect)
  280.     { DoDeviceLoop( ::Draw3DInsetFrame, U3DDrawingUtils::DoFrameRect, &inRect); }
  281.     
  282. inline void U3DDrawingUtils::Draw3DRaisedFrame(const Rect& inRect)
  283.     { DoDeviceLoop( ::Draw3DRaisedFrame, U3DDrawingUtils::DoFrameRect, &inRect); }
  284.  
  285.  
  286. // ===========================================================================
  287. // ---------------------------------------------------------------------------
  288. // • Lines                                                               Lines •
  289. // ---------------------------------------------------------------------------
  290.  
  291. inline void U3DDrawingUtils::Draw3DInsetHLine(const short vpos, const short h1, const short h2)
  292.     { U3DDrawingUtils::DoDeviceLoopHLine( ::Draw3DInsetHLine, vpos, h1, h2); }
  293.     
  294. inline void U3DDrawingUtils::Draw3DRaisedHLine(const short vpos, const short h1, const short h2)
  295.     { U3DDrawingUtils::DoDeviceLoopHLine( ::Draw3DRaisedHLine, vpos, h1, h2); }
  296.     
  297. // ---------------------------------------------------------------------------
  298. // ---------------------------------------------------------------------------
  299.  
  300. inline void U3DDrawingUtils::Draw3DInsetVLine(const short hpos, const short v1, const short v2)
  301.     { U3DDrawingUtils::DoDeviceLoopVLine( ::Draw3DInsetVLine, hpos, v1, v2); }
  302.     
  303. inline void U3DDrawingUtils::Draw3DRaisedVLine(const short hpos, const short v1, const short v2)
  304.     { U3DDrawingUtils::DoDeviceLoopVLine( ::Draw3DRaisedVLine, hpos, v1, v2); }
  305.  
  306. // ===========================================================================
  307. // ===========================================================================
  308.  
  309.