Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!sdd.hp.com!think.com!mintaka!bloom-beacon!eru!hagbard!sunic!lth.se!newsuser From: sundinKC@dna.lth.se (Anders Sundin) Newsgroups: comp.sys.mac.programmer Subject: How do I code for 8.24 GC QuickDraw? Message-ID: <1991Apr13.192211.27446@lth.se> Date: 13 Apr 91 19:22:11 GMT Sender: newsuser@lth.se (LTH network news server) Organization: Lund University Computing Center, Sweden Lines: 111 How do I write for the 8.24 GC Display Card, or rather, where can I find an example of code that really gets accelerated by this card? I have read #TN 289 "Deaccelerated CopyBits & 8.24 GC QuickDraw". I have also read #TN 277 about CopyBits, and Develop nr 1 and 3 about GWorlds and the 8.24 GC. But I still don't have a clue why my CopyBits is *much* slower when "accelerated" by a 8.24 GC Display Card. program SlowWhenAccelerated; uses Types, QuickDraw, Events, Fonts, Menus, QDOffscreen, SegLoad, Traps, Windows, Dialogs; var gDrawingPort : GWorldPtr; gWindow : WindowPtr; gRect : Rect; gRGBBlack : RGBColor; gRGBWhite : RGBColor; gVert : Boolean; gFlags : GWorldFlags; procedure DrawSomeStuff; begin RGBForeColor(gRGBBlack); RGBBackColor(gRGBWhite); ClipRect(gRect); PaintRect(gRect); RGBForeColor(gRGBWhite); if gVert then begin MoveTo(200, 50); LineTo(200, 350); end else begin MoveTo(50, 200); LineTo(350, 200); end; gVert := not gVert; end; procedure DrawInAltScreen; var oldPort : CGrafPtr; oldDevice : GDHandle; begin gFlags := UpdateGWorld(gDrawingPort, 0, screenbits.bounds, nil, GetMainDevice, []); GetGWorld(oldPort, oldDevice); SetGWorld(gDrawingPort, nil); if not LockPixels(gDrawingPort^.portPixMap) then ExitToShell; DrawSomeStuff; UnlockPixels(gDrawingPort^.portPixMap); SetGWorld(oldPort, oldDevice); end; procedure BlitIt; begin RGBForeColor(gRGBBlack); RGBBackColor(gRGBWhite); if not LockPixels(gDrawingPort^.portPixMap) then ExitToShell; CopyBits( GrafPtr(gDrawingPort)^.portBits, gWindow^.portBits, gRect, gRect, srcCopy, nil); UnlockPixels(gDrawingPort^.portPixMap); end; begin InitGraf(@thePort); InitFonts; InitWindows; InitMenus; TEInit; InitDialogs(nil); InitCursor; gVert := true; gRGBBlack.red := $0000; gRGBBlack.green := $0000; gRGBBlack.blue := $0000; gRGBWhite.red := $FFFF; gRGBWhite.green := $FFFF; gRGBWhite.blue := $FFFF; SetRect(gRect, 50, 50, 450, 450); gWindow := NewCWindow(nil, gRect, '', true, noGrowDocProc, WindowPtr(-1), false, 0); if gWindow = nil then ExitToShell; if NewGWorld(gDrawingPort, 0, screenBits.bounds, nil, GetMainDevice, []) <> noErr then ExitToShell; SetRect(gRect, 0, 0, 400, 400); repeat DrawInAltScreen; BlitIt; until Button; DisposeGWorld(gDrawingPort); end. -- ------------------------------------------------------------- | Anders Sundin | e-mail: sundinKC@dna.lth.se | | University of Lund | ok2aps@gemini.ldc.lu.se | | Organic Chemistry 2, | ok2aps@seldc52.bitnet | | P.O. Box 124 | phone: +46 46 108214 | | S-22100 Lund, Sweden | fax: +46 46 108209 | -------------------------------------------------------------