home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / OutOfContextMenus / Source / COffscreenBehavior.h < prev    next >
Encoding:
Text File  |  1999-06-25  |  3.7 KB  |  177 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    COffscreenBehavior.h                 ©1999 Eric Traut
  3. // ===========================================================================
  4.  
  5. #pragma once
  6.  
  7. #include "CWindowBehavior.h"
  8. #include "UOffscreenUtils.h"
  9.  
  10.  
  11. class COffscreenBehavior : public CWindowBehavior 
  12. {
  13.     public:
  14.         COffscreenBehavior(    CShadowWindow &        inShadowWindow,
  15.                             Boolean                inAllocateBacking,
  16.                             Boolean                inDrawEveryTick = false);
  17.         
  18.         virtual
  19.         ~COffscreenBehavior(void);
  20.         
  21.         virtual Boolean
  22.         SyncWithShadowWindow(void);
  23.         
  24.         virtual void
  25.         DoIdleTask(Boolean inGNETime);
  26.  
  27.         void
  28.         AllocateNewGWorlds(void);
  29.  
  30.         Boolean
  31.         GWorldNeedsSynching(void);
  32.  
  33.         virtual Boolean
  34.         RenderToGWorld(    StGWorldLocker &        inBackingLocker,
  35.                         StGWorldLocker &        inRenderingLocker);
  36.  
  37.         virtual Boolean
  38.         RenderToGWorld(    StGWorldLocker &        inRenderingLocker);
  39.  
  40.         virtual void
  41.         CopyGWorldToScreen(    StGWorldLocker &        inRenderingLocker);
  42.  
  43.         virtual void
  44.         DetachBehavior(void);
  45.  
  46.         virtual Boolean
  47.         ShouldBlitAtIdleTime(void);
  48.  
  49.         void
  50.         MarkOffscreenChanged(void)
  51.         {
  52.             mBackingChanged = true;
  53.         }
  54.         
  55.         void
  56.         MarkOffscreenUpToDate(void)
  57.         {
  58.             mBackingChanged = false;
  59.         }
  60.         
  61.         Boolean
  62.         DidOffscreenChange(void)
  63.         {
  64.             return mBackingChanged;
  65.         }
  66.         
  67.     protected:
  68.         static void
  69.         InitOverrideQDProcs(void);
  70.  
  71.         static COffscreenBehavior *
  72.         SetUpForQDOverride(        CGrafPtr    inCurPort);
  73.  
  74.         void
  75.         CopyPixPatParam(        PixPatHandle *        inSrc,
  76.                                 PixPatHandle *        inDest);
  77.  
  78.         void
  79.         CopyPortParameters(        CGrafPtr    inCurPort);
  80.  
  81.         // Static QD bottleneck overrides
  82.         static pascal void
  83.         OverrideQDTextProc(        short         inByteCount, 
  84.                                 Ptr         inTextBuf, 
  85.                                 Point         inNumer, 
  86.                                 Point         inDenom);
  87.         
  88.         static pascal void
  89.         OverrideQDLineProc(        Point         inNewPt);
  90.         
  91.         static pascal void
  92.         OverrideQDRectProc(        GrafVerb         inVerb, 
  93.                                 Rect *            inRect);
  94.         
  95.         static pascal void
  96.         OverrideQDRgnProc(        GrafVerb         inVerb, 
  97.                                 RgnHandle        inRgn);
  98.         
  99.         static pascal void
  100.         OverrideQDBitsProc(        BitMap *        inSrcBits, 
  101.                                 Rect *            inSrcRect, 
  102.                                 Rect *            inDstRect, 
  103.                                 short             inMode, 
  104.                                 RgnHandle         inMaskRgn);
  105.  
  106.         static pascal SInt16
  107.         OverrideQDTxMeasProc(    SInt16             inByteCount, 
  108.                                 Ptr             inTextAddr, 
  109.                                 Point *            inNumer, 
  110.                                 Point *            inDenom, 
  111.                                 FontInfo *        inInfo);
  112.  
  113.         // Overridable QD bottleneck methods
  114.         virtual void
  115.         DoQDBits(                CGrafPtr        inOrigPort,
  116.                                 BitMap *        inSrcBits, 
  117.                                 Rect *            inSrcRect, 
  118.                                 Rect *            inDstRect, 
  119.                                 short             inMode, 
  120.                                 RgnHandle         inMaskRgn);
  121.         
  122.         virtual void
  123.         DoQDRect(                CGrafPtr        inOrigPort,
  124.                                 GrafVerb        inVerb,
  125.                                 Rect *            inRect);
  126.         
  127.         virtual void
  128.         DoQDRgn(                CGrafPtr        inOrigPort,
  129.                                 GrafVerb        inVerb,
  130.                                 RgnHandle        inRgn);
  131.         
  132.         virtual void
  133.         DoQDLine(                CGrafPtr        inOrigPort,
  134.                                 Point            inNewPt);
  135.  
  136.         virtual void
  137.         DoQDText(                CGrafPtr        inOrigPort,
  138.                                 short             inByteCount, 
  139.                                 Ptr             inTextBuf, 
  140.                                 Point             inNumer, 
  141.                                 Point             inDenom);
  142.  
  143.         virtual SInt16
  144.         DoQDTxMeas(                CGrafPtr        inOrigPort,
  145.                                 SInt16             inByteCount, 
  146.                                 Ptr             inTextAddr, 
  147.                                 Point *            inNumer, 
  148.                                 Point *            inDenom, 
  149.                                 FontInfo *        inInfo);
  150.  
  151.         void
  152.         DeleteGWorlds(void);
  153.  
  154.         void
  155.         EraseGWorldBackgrounds(void);
  156.  
  157.         Boolean                mAllocateBacking;
  158.         Boolean                mDrawEveryTick;
  159.         Boolean                mBackingChanged;
  160.         UInt32                mLastBlitTicks;
  161.         
  162.         Boolean                mGWorldsAllocated;
  163.         GWorldPtr            mBackingGWorld;
  164.         GWorldPtr            mRenderingGWorld;
  165.         Rect                mGWorldRect;
  166.  
  167.         Boolean                mQDProcsOverridden;
  168.         CQDProcsPtr            mOrigQDProcs;
  169.  
  170.         PixMapHandle        mFinderOffscreen;
  171.  
  172.         static Boolean        sOverrideQDProcsInited;
  173.         static CQDProcs        sOverrideQDProcs;
  174. };
  175.  
  176.  
  177.