summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/IconStorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/IconStorage.h')
-rw-r--r--common/quicktime_win32/IconStorage.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/common/quicktime_win32/IconStorage.h b/common/quicktime_win32/IconStorage.h
new file mode 100644
index 0000000..1092290
--- /dev/null
+++ b/common/quicktime_win32/IconStorage.h
@@ -0,0 +1,149 @@
+/*
+ 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__ */
+