// =========================================================================== // 3DDrawingUtils.inline.cp // ©1995 J. Rodden, DD/MF & Associates. All rights reserved // =========================================================================== // C++ wrapper class inlined procedures for 3D drawing utilities. // Dependent on PPlant UDrawingUtils // // These routines were optimized for speed without sacrificing code bloat. // The key to this is the multiple DoDeviceLoop routines. #pragma once // =========================================================================== // € St3DDeviceLoop St3DDeviceLoop € // =========================================================================== inline St3DDeviceLoop::St3DDeviceLoop(const Rect &inLocalRect) : StDeviceLoop(inLocalRect) {} inline Boolean St3DDeviceLoop::Next() { Int16 depth; return NextDepth(depth); } inline Boolean St3DDeviceLoop::CurrentDeviceIsGrayscale() // This test came from Zig Zichterman's LDeviceLoop: // The flag for this bit test is really wierd, instead of it actually being // a real flag (0x0001, the desired bit), it is the bit _number_ (0). // gdDevType is 0 which is the desired bit, not the flag itself, the flag is 0x0001 { return (((**mCurrentDevice).gdFlags & 0x0001) == 0); } inline Boolean St3DDeviceLoop::CurrentDeviceIs3DCapable() { Int16 depth = (**((**mCurrentDevice).gdPMap)).pixelSize; return ( (8 <= depth) || ((4 <= depth) && (CurrentDeviceIsGrayscale())) ); } inline Boolean St3DDeviceLoop::CurrentDeviceIsGrayCapable() { Int16 depth = (**((**mCurrentDevice).gdPMap)).pixelSize; return ( (4 <= depth) || ((2 <= depth) && (CurrentDeviceIsGrayscale())) ); } // =========================================================================== // € St3DPenState St3DPenState € // =========================================================================== inline St3DPenState::~St3DPenState() { ::SetPenState(&mPenState); } // =========================================================================== // € U3DDrawingUtils U3DDrawingUtils € // =========================================================================== // =========================================================================== // --------------------------------------------------------------------------- // € Accessing Routines Accessing Routines € // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Get3DBackColor( RGBColor* outBkgndColor) { ::Get3DBackColor(outBkgndColor); } inline void U3DDrawingUtils::Get3DLightColor( RGBColor* outLightColor) { ::Get3DLightColor(outLightColor); } inline void U3DDrawingUtils::Get3DShadowColor( RGBColor* outShadowColor) { ::Get3DShadowColor(outShadowColor); } inline void U3DDrawingUtils::Get3DPenState( PenState* outPnState) { ::Get3DPenState(outPnState); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Get3DBackColor( RGBColor& outBkgndColor) { ::Get3DBackColor(&outBkgndColor); } inline void U3DDrawingUtils::Get3DLightColor( RGBColor& outLightColor) { ::Get3DLightColor(&outLightColor); } inline void U3DDrawingUtils::Get3DShadowColor( RGBColor& outShadowColor) { ::Get3DShadowColor(&outShadowColor); } inline void U3DDrawingUtils::Get3DPenState( PenState& outPnState) { ::Get3DPenState(&outPnState); } // =========================================================================== // --------------------------------------------------------------------------- // € Accessor Routines Accessor Routines € // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Set3DBackColor(const RGBColor* inBkgndColor) { ::Set3DBackColor(inBkgndColor); } inline void U3DDrawingUtils::Set3DLightColor(const RGBColor* inLightColor) { ::Set3DLightColor(inLightColor); } inline void U3DDrawingUtils::Set3DShadowColor(const RGBColor* inShadowColor) { ::Set3DShadowColor(inShadowColor); } inline void U3DDrawingUtils::Set3DPenState(const PenState* inPnState) { ::Set3DPenState(inPnState); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Set3DBackColor(const RGBColor& inBkgndColor) { ::Set3DBackColor(&inBkgndColor); } inline void U3DDrawingUtils::Set3DLightColor(const RGBColor& inLightColor) { ::Set3DLightColor(&inLightColor); } inline void U3DDrawingUtils::Set3DShadowColor(const RGBColor& inShadowColor) { ::Set3DShadowColor(&inShadowColor); } inline void U3DDrawingUtils::Set3DPenState(const PenState& inPnState) { ::Set3DPenState(&inPnState); } // =========================================================================== // --------------------------------------------------------------------------- // € Ovals Ovals € // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalPanel(const Rect* inRect, const RGBColor* inBKColor, const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DOvalPanel, U3DDrawingUtils::DoFrameOval, inRect, inBKColor, inULColor, inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetOvalPanel(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetOvalPanel, U3DDrawingUtils::DoFrameOval, inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalPanel(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedOvalPanel, U3DDrawingUtils::DoFrameOval, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalPanel(const Rect& inRect, const RGBColor& inBKColor, const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect, &inBKColor, &inULColor, &inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetOvalPanel(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalPanel(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedOvalPanel, U3DDrawingUtils::DoFrameOval, &inRect); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalBorder(const Rect* inRect, const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DOvalBorder, U3DDrawingUtils::DoFrameOval, inRect, inULColor, inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetOvalBorder(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetOvalBorder, U3DDrawingUtils::DoFrameOval, inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalBorder(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedOvalBorder, U3DDrawingUtils::DoFrameOval, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalBorder(const Rect& inRect, const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect, &inULColor, &inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetOvalBorder(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalBorder(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedOvalBorder, U3DDrawingUtils::DoFrameOval, &inRect); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalFrame(const Rect* inRect, const RGBColor* inULColor, const RGBColor* inLRColor) { DoDeviceLoop( ::Draw3DOvalFrame, U3DDrawingUtils::DoFrameOval, inRect, inULColor, inLRColor); } inline void U3DDrawingUtils::Draw3DInsetOvalFrame(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetOvalFrame, U3DDrawingUtils::DoFrameOval, inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalFrame(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedOvalFrame, U3DDrawingUtils::DoFrameOval, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DOvalFrame(const Rect& inRect, const RGBColor& inULColor, const RGBColor& inLRColor) { DoDeviceLoop( ::Draw3DOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect, &inULColor, &inLRColor); } inline void U3DDrawingUtils::Draw3DInsetOvalFrame(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedOvalFrame(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedOvalFrame, U3DDrawingUtils::DoFrameOval, &inRect); } // =========================================================================== // --------------------------------------------------------------------------- // € Frames Frames € // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DPanel (const Rect* inRect, const RGBColor* inBKColor, const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DPanel, U3DDrawingUtils::DoFrameRect, inRect, inBKColor, inULColor, inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetPanel(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetPanel, U3DDrawingUtils::DoFrameRect, inRect); } inline void U3DDrawingUtils::Draw3DRaisedPanel(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedPanel, U3DDrawingUtils::DoFrameRect, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DPanel (const Rect& inRect, const RGBColor& inBKColor, const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DPanel, U3DDrawingUtils::DoFrameRect, &inRect, &inBKColor, &inULColor, &inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetPanel(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetPanel, U3DDrawingUtils::DoFrameRect, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedPanel(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedPanel, U3DDrawingUtils::DoFrameRect, &inRect); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DBorder(const Rect* inRect, const RGBColor* inULColor, const RGBColor* inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DBorder, U3DDrawingUtils::DoFrameRect, inRect, inULColor, inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetBorder(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetBorder, U3DDrawingUtils::DoFrameRect, inRect); } inline void U3DDrawingUtils::Draw3DRaisedBorder(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedBorder, U3DDrawingUtils::DoFrameRect, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DBorder(const Rect& inRect, const RGBColor& inULColor, const RGBColor& inLRColor, const Boolean inFrameIt) { DoDeviceLoop( ::Draw3DBorder, U3DDrawingUtils::DoFrameRect, &inRect, &inULColor, &inLRColor, inFrameIt); } inline void U3DDrawingUtils::Draw3DInsetBorder(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetBorder, U3DDrawingUtils::DoFrameRect, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedBorder(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedBorder, U3DDrawingUtils::DoFrameRect, &inRect); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DFrame (const Rect* inRect, const RGBColor* inULColor, const RGBColor* inLRColor) { DoDeviceLoop( ::Draw3DFrame, U3DDrawingUtils::DoFrameRect, inRect, inULColor, inLRColor); } inline void U3DDrawingUtils::Draw3DInsetFrame(const Rect* inRect) { DoDeviceLoop( ::Draw3DInsetFrame, U3DDrawingUtils::DoFrameRect, inRect); } inline void U3DDrawingUtils::Draw3DRaisedFrame(const Rect* inRect) { DoDeviceLoop( ::Draw3DRaisedFrame, U3DDrawingUtils::DoFrameRect, inRect); } // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DFrame (const Rect& inRect, const RGBColor& inULColor, const RGBColor& inLRColor) { DoDeviceLoop( ::Draw3DFrame, U3DDrawingUtils::DoFrameRect, &inRect, &inULColor, &inLRColor); } inline void U3DDrawingUtils::Draw3DInsetFrame(const Rect& inRect) { DoDeviceLoop( ::Draw3DInsetFrame, U3DDrawingUtils::DoFrameRect, &inRect); } inline void U3DDrawingUtils::Draw3DRaisedFrame(const Rect& inRect) { DoDeviceLoop( ::Draw3DRaisedFrame, U3DDrawingUtils::DoFrameRect, &inRect); } // =========================================================================== // --------------------------------------------------------------------------- // € Lines Lines € // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DInsetHLine(const short vpos, const short h1, const short h2) { U3DDrawingUtils::DoDeviceLoopHLine( ::Draw3DInsetHLine, vpos, h1, h2); } inline void U3DDrawingUtils::Draw3DRaisedHLine(const short vpos, const short h1, const short h2) { U3DDrawingUtils::DoDeviceLoopHLine( ::Draw3DRaisedHLine, vpos, h1, h2); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- inline void U3DDrawingUtils::Draw3DInsetVLine(const short hpos, const short v1, const short v2) { U3DDrawingUtils::DoDeviceLoopVLine( ::Draw3DInsetVLine, hpos, v1, v2); } inline void U3DDrawingUtils::Draw3DRaisedVLine(const short hpos, const short v1, const short v2) { U3DDrawingUtils::DoDeviceLoopVLine( ::Draw3DRaisedVLine, hpos, v1, v2); } // =========================================================================== // ===========================================================================