// *****************************************************************************
//
//	WindoidDefines.h
//
// -----------------------------------------------------------------------------
//	This file contains only the #define's used to determine how to compile
//	the Infinity Windoid WDEF. By modifying only this file, you can choose
//	what capabilities will be included when the WDEF is compiled.
// *****************************************************************************
#ifndef __WindoidDefines__
#define __WindoidDefines__

// *****************************************************************************
//	Conditional Compilation Options
// -----------------------------------------------------------------------------
/*

The #define's you may make include:

	ALLOW_VERT -	This determines if the code that is compiled will support
					a palette that has a vertical title bar along the left
					side of the window (rather than the top). To create such
					a window, add one to the varcode that is used.

	ALLOW_GROW -	This option creates a WDEF that supports a grow box. This
					grow box behaves exactly like that of a standard document
					window. This addition to the code was provided to me by
					Jim Petrick.
	
	ALLOW_ZOOM -	This option creates a windoid that supports a zoombox.
					To add the zoombox to a windoid, add zoomDocProc to the
					procID when creating the window. 
					
					The application is responsible for setting the user state 
					and standard state Rects of the window for zooming. (When 
					a new window is created, both of these are initialized to 
					the bounds of the window. See the README for more 
					information).

	SMALL_GROW -	This option will cause the grow box to be drawn smaller
					than the standard size.

	STAYPUT_ZOOM -	This option will cause both the user and standard Rects to
					be changed together, causing the zoomed in and out state
					to have the same topLeft at all times. If this is not set,
					the standard and user states have their own 'memories'.
					(Note: this behavior is not fully tested.)

	MFI_ZOOM -		This will cause the WDEF to handle the zoom box in the way
					expected by MicroFrontier applications (the same way as
					version 2.2). That is, the other state that is used is one
					which has a title bar with a small area (in which the host
					program displays a label for the windoid).
					
	MACAPP_STYLE -	This determines if the varcodes that are supported are
					the one's I consider 'normal' or the ones MacApp's
					windoid WDEF knows about. Note, however, that this code
					only supports the 'smaller', title-less version that
					is available in MacApp's.

	THINK_STYLE -	This creates a version of the WDEF that is totally
					compatible with the varcodes used in the windoid WDEF 
					included with the THINK environments. 
					
					Two things are done: varcode 0 gives a normal titlebar, 
					varcode 2 gives a titlebar down the left side, and other 
					varcodes (i.e. 1,3,4,5,6,7) give no titlebar at all. 
					(Note that in my version, a zoom box may also be used 
					with this style.) Also, for the THINK style, ALWAYS_HILITE 
					is also set, as this is how theirs works.

	ALWAYS_HILITE -	This will cause a windoid to be created that will always
					draw its title bar with gadgets and all. Normally, the
					windoid will draw the titlebar and frame in gray and
					empty when the window is not hilighted (like normal
					windows). Some programs, however, don't keep their
					windoids properly hilighted, so this will make them 
					appear to always be active.

	VERS_2_2_COMPATIBLE - This creates a version of the WDEF that is 
					functionally compatible with the version 2.2 windoid that
					I released. The only issue involved is the way the zooming
					is handled.

	THICK_TITLEBAR - Defining this will cause the titlebar of the windoid to
					be a little taller and include tinges along the outside
					that match those of document windows. 
					
					This is similar to Adobe's recent windoids, and also 
					similar to (but better than in my opinion) the floating 
					windows put up by Casper on the AV Macs. 
					
					This option works especially well if the window has a 
					grow box (the overall appearance of the windoid is better) 
					or if title strings are being shown, as descenders are 
					cut off with the thinner titlebar.

	TITLE_STRING -	Due to popular request and several commercial applications
					with titles in their floaters, I have implemented this
					option. When enabled, the windoid's title will appear
					centered in the titlebar. 
					
					Currently, this feature does not look at the script and 
					change the size of the titlebar as is recommended for 
					regions with an application font that doesn't work at 
					9 points. 
					
					Now, a note: I personally don't like the title showing in 
					the titlebar of a floater, since it makes it look more 
					like a document window. If you like them, though, the ones 
					I have implemented take everything into account.

	SYS7_OR_LATER - If this flag is set, a version of the WDEF that doesn't
					support the System 6 coloring will be compiled. Note that
					this version may crash on systems earlier than 7.0, so 
					your application should make sure to check for System 7
					or later.
					
	USE_GESTALT -	Define this if you want to use Gestalt to determine the
					System and QuickDraw versions. Otherwise, SysEnvirons is
					used. (NOTE: using Gestalt in MPW will cause additional
					glue code to be attached to the WDEF resource, making it
					larger.)  With SYS7_OR_LATER, this is automatically
					defined.

	ALIGN_ZOOM -	Aligns the zoom box with the titlebar pattern so that it
					appear aligned the same as the close box (i.e. it will
					be an extra pixel from the edge of the window)

	UNIV_HEADERS -	Define this if you are compiling the WDEF with Universal
					headers (the only change made is that if you are using
					them, the ProcPtr for the DeviceLoop drawing routines
					get created with UniversalProcPtrs).

	PBOOK_AWARE -	If this is defined, the WDEF will act like the WDEF that
					is included in the PowerBook enabler. That is, when the 
					window is on the main screen of a PowerBook with a passive
					matrix display, the titlebar will always be drawn in black
					and white (to avoid shimmering).

------------------------------------------------------------------------------*/

//#define MACAPP_STYLE

#define THICK_TITLEBAR
#define TITLE_STRING

#define ALLOW_ZOOM
//#define ALLOW_VERT
//#define ALLOW_GROW

//#define SMALL_GROW

#define SYS7_OR_LATER

#define UNIV_HEADERS
#define ALIGN_ZOOM
#define PBOOK_AWARE
//#define VERS_2_2_COMPATIBLE

// *****************************************************************************
//	Combinations
//		These should pretty much remain untouched
// -----------------------------------------------------------------------------

#ifdef VERS_2_2_COMPATIBLE
	#ifndef MFI_ZOOM
	#define MFI_ZOOM
	#endif
	
	#ifndef STAYPUT_ZOOM
	#define STAYPUT_ZOOM
	#endif
#endif

// -----------------------------------------------------------------------------

#ifdef THINK_STYLE
	#ifndef ALLOW_VERT
	#define ALLOW_VERT
	#endif

	#ifndef ALWAYS_HILITE
	#define ALWAYS_HILITE
	#endif

	#ifdef MACAPP_STYLE
	#undef MACAPP_STYLE
	#endif
#endif

// -----------------------------------------------------------------------------

#ifdef MACAPP_STYLE
	#ifdef ALLOW_VERT
	#undef ALLOW_VERT
	#endif

	#ifdef ALWAYS_HILITE
	#undef ALWAYS_HILITE
	#endif

	#ifndef ALLOW_GROW
	#define ALLOW_GROW
	#endif
#endif

// -----------------------------------------------------------------------------

#ifdef SYS7_OR_LATER
	#ifndef USE_GESTALT
	#define USE_GESTALT
	#endif
#endif

// *****************************************************************************
//	System version define for the Apple Interfaces
// -----------------------------------------------------------------------------

#ifdef SYS7_OR_LATER
	#define SystemSevenOrLater 1	
#else
	#define SystemSixOrLater 1		
#endif

	// This is used so that we can cut down on the code size in MPW. If 
	// support for earlier systems is important, get rid of this. 
	// Note: for this define to work under THINK C, MacHeaders cannot be used.

// *****************************************************************************
#endif