{
Created: Tuesday, July 23, 1991 at 2:54 PM
 PictUtil.p
 Pascal Interface to the Macintosh Libraries

  Copyright Apple Computer, Inc. 1990-1991
  All rights reserved
    This file is used in these builds: ROM System


	Change History (most recent first):

		 <5>	 7/23/91	JL		Checked in File from database. Adjusted comments. Reformatted
									structs to match output from database.
		 <4>	 1/16/91	JDR		(dba) Renamed METHOD_SYSTEM to systemMethod, METHOD_POPULAR to
									popularMethod, and METHOD_MEDIAN to medianMethod
		 <3>	 9/21/90	gbm		(Actually DDG) Updated selectors to work with ProcHelper.
		 <2>	 9/19/90	DDG		Fixed the header.
		 <1>	 9/19/90	DDG		first checked in

	To Do:
}


{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}

{$IFC NOT UsingIncludes}
 UNIT PictUtil;
 INTERFACE
{$ENDC}

{$IFC UNDEFINED UsingPictUtil}
{$SETC UsingPictUtil := 1}

{$I+}
{$SETC PictUtilIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingPalettes}
{$I $$Shell(PInterfaces)Palettes.p}
{$ENDC}
{$SETC UsingIncludes := PictUtilIncludes}

CONST

{ verbs for the GetPictInfo, GetPixMapInfo, and NewPictInfo calls }
returnColorTable = 1;
returnPalette = 2;
recordComments = 4;
recordFontInfo = 8;
suppressBlackAndWhite = 16;

{ color pick methods }
systemMethod = 0;					{system color pick method}
popularMethod = 1;					{method that chooses the most popular set of colors}
medianMethod = 2;					{method that chooses a good average mix of colors}

{ color bank types }
ColorBankIsCustom = -1;
ColorBankIsExactAnd555 = 0;
ColorBankIs555 = 1;

TYPE
PictInfoID = LONGINT;

CommentSpecPtr = ^CommentSpec;
CommentSpecHandle = ^CommentSpecPtr;
CommentSpec = RECORD
 count: INTEGER;					{ number of occurrances of this comment ID }
 ID: INTEGER;						{ ID for the comment in the picture }
 END;

FontSpecPtr = ^FontSpec;
FontSpecHandle = ^FontSpecPtr;
FontSpec = RECORD
 pictFontID: INTEGER;				{ ID of the font in the picture }
 sysFontID: INTEGER;				{ ID of the same font in the current system file }
 size: ARRAY [0..3] OF LONGINT;		{ bit array of all the sizes found (1..127) (bit 0 means > 127) }
 style: INTEGER;					{ combined style of all occurrances of the font }
 nameOffset: LONGINT;				{ offset into the fontNamesHdl handle for the font�s name }
 END;

PictInfoPtr = ^PictInfo;
PictInfoHandle = ^PictInfoPtr;
PictInfo = RECORD
 version: INTEGER;					{ this is always zero, for now }
 uniqueColors: LONGINT;				{ the number of actual colors in the picture(s)/pixmap(s) }
 thePalette: PaletteHandle;			{ handle to the palette information }
 theColorTable: CTabHandle;			{ handle to the color table }
 hRes: Fixed;						{ maximum horizontal resolution for all the pixmaps }
 vRes: Fixed;						{ maximum vertical resolution for all the pixmaps }
 depth: INTEGER;					{ maximum depth for all the pixmaps (in the picture) }
 sourceRect: Rect;					{ the picture frame rectangle (this contains the entire picture) }
 textCount: LONGINT;				{ total number of text strings in the picture }
 lineCount: LONGINT;				{ total number of lines in the picture }
 rectCount: LONGINT;				{ total number of rectangles in the picture }
 rRectCount: LONGINT;				{ total number of round rectangles in the picture }
 ovalCount: LONGINT;				{ total number of ovals in the picture }
 arcCount: LONGINT;					{ total number of arcs in the picture }
 polyCount: LONGINT;				{ total number of polygons in the picture }
 regionCount: LONGINT;				{ total number of regions in the picture }
 bitMapCount: LONGINT;				{ total number of bitmaps in the picture }
 pixMapCount: LONGINT;				{ total number of pixmaps in the picture }
 commentCount: LONGINT;				{ total number of comments in the picture }
 uniqueComments: LONGINT;			{ the number of unique comments in the picture }
 commentHandle: CommentSpecHandle;	{ handle to all the comment information }
 uniqueFonts: LONGINT;				{ the number of unique fonts in the picture }
 fontHandle: FontSpecHandle;		{ handle to the FontSpec information }
 fontNamesHandle: Handle;			{ handle to the font names }
 reserved1: LONGINT;
 reserved2: LONGINT;
 END;


FUNCTION GetPictInfo(thePictHandle: PicHandle;
                     VAR thePictInfo: PictInfo;
                     verb: INTEGER;
                     colorsRequested: INTEGER;
                     colorPickMethod: INTEGER;
                     version: INTEGER): OSErr;
 INLINE $303C,$0800,$A831;
FUNCTION GetPixMapInfo(thePixMapHandle: PixMapHandle;
                       VAR thePictInfo: PictInfo;
                       verb: INTEGER;
                       colorsRequested: INTEGER;
                       colorPickMethod: INTEGER;
                       version: INTEGER): OSErr;
 INLINE $303C,$0801,$A831;
FUNCTION NewPictInfo(VAR thePictInfoID: PictInfoID;
                     verb: INTEGER;
                     colorsRequested: INTEGER;
                     colorPickMethod: INTEGER;
                     version: INTEGER): OSErr;
 INLINE $303C,$0602,$A831;
FUNCTION RecordPictInfo(thePictInfoID: PictInfoID;
                        thePictHandle: PicHandle): OSErr;
 INLINE $303C,$0403,$A831;
FUNCTION RecordPixMapInfo(thePictInfoID: PictInfoID;
                          thePixMapHandle: PixMapHandle): OSErr;
 INLINE $303C,$0404,$A831;
FUNCTION RetrievePictInfo(thePictInfoID: PictInfoID;
                          VAR thePictInfo: PictInfo;
                          colorsRequested: INTEGER): OSErr;
 INLINE $303C,$0505,$A831;
FUNCTION DisposPictInfo(thePictInfoID: PictInfoID): OSErr;
 INLINE $303C,$0206,$A831;


{$ENDC} { UsingPictUtil }

{$IFC NOT UsingIncludes}
 END.
{$ENDC}