source-engine/common/quicktime_win32/IconStorage.h

150 lines
4.9 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
/*
File: IconStorage.h
Contains: Services to load and share icon family data.
Version: QuickTime 7.3
Copyright: (c) 2007 (c) 2000-2002 by Apple Computer, Inc., all rights reserved.
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
#ifndef __ICONSTORAGE__
#define __ICONSTORAGE__
#ifndef __MACTYPES__
#include <MacTypes.h>
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#if PRAGMA_IMPORT
#pragma import on
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
/* The following icon types can only be used as an icon element */
/* inside a 'icns' icon family */
enum {
kThumbnail32BitData = FOUR_CHAR_CODE('it32'),
kThumbnail8BitMask = FOUR_CHAR_CODE('t8mk')
};
enum {
kHuge1BitMask = FOUR_CHAR_CODE('ich#'),
kHuge4BitData = FOUR_CHAR_CODE('ich4'),
kHuge8BitData = FOUR_CHAR_CODE('ich8'),
kHuge32BitData = FOUR_CHAR_CODE('ih32'),
kHuge8BitMask = FOUR_CHAR_CODE('h8mk')
};
/* The following icon types can be used as a resource type */
/* or as an icon element type inside a 'icns' icon family */
enum {
kLarge1BitMask = FOUR_CHAR_CODE('ICN#'),
kLarge4BitData = FOUR_CHAR_CODE('icl4'),
kLarge8BitData = FOUR_CHAR_CODE('icl8'),
kLarge32BitData = FOUR_CHAR_CODE('il32'),
kLarge8BitMask = FOUR_CHAR_CODE('l8mk'),
kSmall1BitMask = FOUR_CHAR_CODE('ics#'),
kSmall4BitData = FOUR_CHAR_CODE('ics4'),
kSmall8BitData = FOUR_CHAR_CODE('ics8'),
kSmall32BitData = FOUR_CHAR_CODE('is32'),
kSmall8BitMask = FOUR_CHAR_CODE('s8mk'),
kMini1BitMask = FOUR_CHAR_CODE('icm#'),
kMini4BitData = FOUR_CHAR_CODE('icm4'),
kMini8BitData = FOUR_CHAR_CODE('icm8')
};
/* Obsolete. Use names defined above. */
enum {
large1BitMask = kLarge1BitMask,
large4BitData = kLarge4BitData,
large8BitData = kLarge8BitData,
small1BitMask = kSmall1BitMask,
small4BitData = kSmall4BitData,
small8BitData = kSmall8BitData,
mini1BitMask = kMini1BitMask,
mini4BitData = kMini4BitData,
mini8BitData = kMini8BitData
};
/*
IconFamily 'icns' resources contain an entire IconFamily (all sizes and depths).
For custom icons, icns IconFamily resources of the custom icon resource ID are fetched first before
the classic custom icons (individual 'ics#, ICN#, etc) are fetched. If the fetch of the icns resource
succeeds then the icns is looked at exclusively for the icon data.
For custom icons, new icon features such as 32-bit deep icons are only fetched from the icns resource.
This is to avoid incompatibilities with cut & paste of new style icons with an older version of the
MacOS Finder.
DriverGestalt is called with code kdgMediaIconSuite by IconServices after calling FSM to determine a
driver icon for a particular device. The result of the kdgMediaIconSuite call to DriverGestalt should
be a pointer an an IconFamily. In this manner driver vendors can provide rich, detailed drive icons
instead of the 1-bit variety previously supported.
*/
enum {
kIconFamilyType = FOUR_CHAR_CODE('icns')
};
struct IconFamilyElement {
OSType elementType; /* 'ICN#', 'icl8', etc...*/
Size elementSize; /* Size of this element*/
unsigned char elementData[1];
};
typedef struct IconFamilyElement IconFamilyElement;
struct IconFamilyResource {
OSType resourceType; /* Always 'icns'*/
Size resourceSize; /* Total size of this resource*/
IconFamilyElement elements[1];
};
typedef struct IconFamilyResource IconFamilyResource;
typedef IconFamilyResource * IconFamilyPtr;
typedef IconFamilyPtr * IconFamilyHandle;
/* Icon Variants */
/* These can be used as an element of an 'icns' icon family */
/* or as a parameter to GetIconRefVariant */
enum {
kTileIconVariant = FOUR_CHAR_CODE('tile'),
kRolloverIconVariant = FOUR_CHAR_CODE('over'),
kDropIconVariant = FOUR_CHAR_CODE('drop'),
kOpenIconVariant = FOUR_CHAR_CODE('open'),
kOpenDropIconVariant = FOUR_CHAR_CODE('odrp')
};
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#endif /* __ICONSTORAGE__ */