[comp.sources.mac] ShowPict.c

steele@cs.unc.edu (Oliver Steele) (05/20/88)

[ShowPict.c]

---
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	ShowPict.c
# This archive created: Thu May 19 07:49:57 1988
# By:	Roger L. Long (bytebug@dhw68k.cts.com)
export PATH; PATH=/bin:$PATH
echo shar: extracting "'ShowPict.c'" '(2664 characters)'
if test -f 'ShowPict.c'
then
	echo shar: will not over-write existing file "'ShowPict.c'"
else
sed 's/^X//' << \SHAR_EOF > 'ShowPict.c'
X/* File:	ShowPict.c
X * Author:	Oliver Steele
X * USENET:	steele@cs.unc.edu
X * USNAIL:	1209 Mason Farm Rd. 27514
X * Purpose:	display a PICT file
X * Date:	13 May 1985
X * Comments:
X *			I release this code into the public domain.
X *			This code was written quickly and dirtily.
X *			I make no guarantees about it.
X */
X
X#include <MacTypes.h>
X#include <QuickDraw.h>
X#include <WindowMgr.h>
X#include <Color.h>
X#include <ColorToolbox.h>
X#include <EventMgr.h>
X#include <SegmentLdr.h>
X#include <FileMgr.h>
X#include <StdFilePkg.h>
X
Xextern int MBarHeight: 0xbaa;
X/*#define	HasCQD()	(!(ROM85&0x4000))
X#define	mbHeight	((ROM85<0)?20:MBarHeight)
X*/
Xstatic int	PICTRefNum;
X
Xpascal void GetPICTData(dp, n)
XPtr	dp;
Xint	n;
X{
X	long	count;
X
X	count = n;
X	FSRead(PICTRefNum,&count,dp);
X}
X
Xvoid DrawPICTFile(name,refnum)
XStringPtr	name;
Xint			refnum;
X{
X	CQDProcs	qdp;
X	PicHandle	ph;
X	long		count;
X	Rect		bounds;
X	WindowRecord window;
X
X	PICTRefNum = refnum;
X	ph = (PicHandle) NewHandle(sizeof(Picture));
X
X	SetFPos(PICTRefNum,fsFromStart,512);
X	count = sizeof(Picture);
X	FSRead(PICTRefNum,&count,*ph);
X
X	bounds = (**ph).picFrame;
X	OffsetRect(&bounds,-bounds.left,-bounds.top);
X	OffsetRect(&bounds,
X				(screenBits.bounds.right-bounds.right)/2,
X				(screenBits.bounds.bottom-mbHeight-bounds.bottom)/2);
X	if (bounds.left<0)
X		InsetRect(&bounds,-bounds.left,0);
X	if (bounds.top<0)
X		InsetRect(&bounds,0,-bounds.top);
X	OffsetRect(&bounds,0,mbHeight);
X
X	if (HasCQD())
X		NewCWindow(&window,&bounds,name,true,plainDBox,-1,false,0);
X	else
X		NewWindow (&window,&bounds,name,true,plainDBox,-1,false,0);
X
X	SetPort(&window.port);
X	SetStdCProcs(&qdp);
X	qdp.getPicProc = (Ptr) GetPICTData;
X	window.port.grafProcs = (QDProcsPtr) &qdp;
X
X	OffsetRect(&bounds,-bounds.left,-bounds.top);
X	DrawPicture(ph,&bounds);
X	FSClose(refnum);
X	while (!Button())
X		;
X	CloseWindow(&window);
X}
X
Xvoid OpenAndDraw(name,vol)
XStringPtr	name;
Xint			vol;
X{
X	int		refnum;
X	
X	if (FSOpen(name,vol,&refnum)) {
X		SysBeep(2);
X		return;
X		}
X	DrawPICTFile(name,refnum);
X	FSClose(refnum);
X}
X
Xmain()
X{
X	int	message, count;
X
X	MaxApplZone();
X	MoreMasters();
X
X	InitGraf(&thePort);
X	InitFonts();
X	InitWindows();
X	InitMenus();
X	TEInit();
X	InitDialogs(0);
X
X	InitCursor();
X	FlushEvents(everyEvent-diskMask,0);
X
X	CountAppFiles(&message, &count);
X	if (count) {
X		int		i;
X		AppFile	app;
X
X		for (i = 0; i++<count; ) {
X			GetAppFiles(i, &app);
X			if (app.fType == 'PICT')
X				OpenAndDraw(app.fName, app.vRefNum);
X			}
X	} else for (;;) {
X		SFReply	sf;
X		int		refnum;
X		static Point where = {100,100};
X
X		FlushEvents(everyEvent-diskMask,0);
X		SFGetFile(where, 0, 0, 1, "PICT", 0, &sf);
X		if (!sf.good)
X			break;
X		OpenAndDraw(sf.fName, sf.vRefNum);
X		}
X}
SHAR_EOF
if test 2664 -ne "`wc -c < 'ShowPict.c'`"
then
	echo shar: error transmitting "'ShowPict.c'" '(should have been 2664 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0
---