summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/PictUtils.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/PictUtils.h')
-rw-r--r--common/quicktime_win32/PictUtils.h513
1 files changed, 513 insertions, 0 deletions
diff --git a/common/quicktime_win32/PictUtils.h b/common/quicktime_win32/PictUtils.h
new file mode 100644
index 0000000..f33072c
--- /dev/null
+++ b/common/quicktime_win32/PictUtils.h
@@ -0,0 +1,513 @@
+/*
+ File: PictUtils.h
+
+ Contains: Picture Utilities Interfaces.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1990-2001 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 __PICTUTILS__
+#define __PICTUTILS__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __PALETTES__
+#include <Palettes.h>
+#endif
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#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
+
+/* verbs for the GetPictInfo, GetPixMapInfo, and NewPictInfo calls */
+enum {
+ returnColorTable = 0x0001,
+ returnPalette = 0x0002,
+ recordComments = 0x0004,
+ recordFontInfo = 0x0008,
+ suppressBlackAndWhite = 0x0010
+};
+
+enum {
+ /* 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 */
+};
+
+enum {
+ /* color bank types */
+ ColorBankIsCustom = -1,
+ ColorBankIsExactAnd555 = 0,
+ ColorBankIs555 = 1
+};
+
+typedef long PictInfoID;
+struct CommentSpec {
+ short count; /* number of occurrances of this comment ID */
+ short ID; /* ID for the comment in the picture */
+};
+typedef struct CommentSpec CommentSpec;
+typedef CommentSpec * CommentSpecPtr;
+typedef CommentSpecPtr * CommentSpecHandle;
+struct FontSpec {
+ short pictFontID; /* ID of the font in the picture */
+ short sysFontID; /* ID of the same font in the current system file */
+ long size[4]; /* bit array of all the sizes found (1..127) (bit 0 means > 127) */
+ short style; /* combined style of all occurrances of the font */
+ long nameOffset; /* offset into the fontNamesHdl handle for the font's name */
+};
+typedef struct FontSpec FontSpec;
+typedef FontSpec * FontSpecPtr;
+typedef FontSpecPtr * FontSpecHandle;
+struct PictInfo {
+ short version; /* this is always zero, for now */
+ long uniqueColors; /* the number of actual colors in the picture(s)/pixmap(s) */
+ PaletteHandle thePalette; /* handle to the palette information */
+ CTabHandle theColorTable; /* handle to the color table */
+ Fixed hRes; /* maximum horizontal resolution for all the pixmaps */
+ Fixed vRes; /* maximum vertical resolution for all the pixmaps */
+ short depth; /* maximum depth for all the pixmaps (in the picture) */
+ Rect sourceRect; /* the picture frame rectangle (this contains the entire picture) */
+ long textCount; /* total number of text strings in the picture */
+ long lineCount; /* total number of lines in the picture */
+ long rectCount; /* total number of rectangles in the picture */
+ long rRectCount; /* total number of round rectangles in the picture */
+ long ovalCount; /* total number of ovals in the picture */
+ long arcCount; /* total number of arcs in the picture */
+ long polyCount; /* total number of polygons in the picture */
+ long regionCount; /* total number of regions in the picture */
+ long bitMapCount; /* total number of bitmaps in the picture */
+ long pixMapCount; /* total number of pixmaps in the picture */
+ long commentCount; /* total number of comments in the picture */
+ long uniqueComments; /* the number of unique comments in the picture */
+ CommentSpecHandle commentHandle; /* handle to all the comment information */
+ long uniqueFonts; /* the number of unique fonts in the picture */
+ FontSpecHandle fontHandle; /* handle to the FontSpec information */
+ Handle fontNamesHandle; /* handle to the font names */
+ long reserved1;
+ long reserved2;
+};
+typedef struct PictInfo PictInfo;
+typedef PictInfo * PictInfoPtr;
+typedef PictInfoPtr * PictInfoHandle;
+typedef CALLBACK_API( OSErr , InitPickMethodProcPtr )(SInt16 colorsRequested, UInt32 *dataRef, SInt16 *colorBankType);
+typedef CALLBACK_API( OSErr , RecordColorsProcPtr )(UInt32 dataRef, RGBColor *colorsArray, SInt32 colorCount, SInt32 *uniqueColors);
+typedef CALLBACK_API( OSErr , CalcColorTableProcPtr )(UInt32 dataRef, SInt16 colorsRequested, void *colorBankPtr, CSpecArray resultPtr);
+typedef CALLBACK_API( OSErr , DisposeColorPickMethodProcPtr )(UInt32 dataRef);
+typedef STACK_UPP_TYPE(InitPickMethodProcPtr) InitPickMethodUPP;
+typedef STACK_UPP_TYPE(RecordColorsProcPtr) RecordColorsUPP;
+typedef STACK_UPP_TYPE(CalcColorTableProcPtr) CalcColorTableUPP;
+typedef STACK_UPP_TYPE(DisposeColorPickMethodProcPtr) DisposeColorPickMethodUPP;
+/*
+ * NewInitPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( InitPickMethodUPP )
+NewInitPickMethodUPP(InitPickMethodProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppInitPickMethodProcInfo = 0x00000FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(InitPickMethodUPP) NewInitPickMethodUPP(InitPickMethodProcPtr userRoutine) { return (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewInitPickMethodUPP(userRoutine) (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewRecordColorsUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( RecordColorsUPP )
+NewRecordColorsUPP(RecordColorsProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppRecordColorsProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(RecordColorsUPP) NewRecordColorsUPP(RecordColorsProcPtr userRoutine) { return (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewRecordColorsUPP(userRoutine) (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewCalcColorTableUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CalcColorTableUPP )
+NewCalcColorTableUPP(CalcColorTableProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppCalcColorTableProcInfo = 0x00003EE0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(CalcColorTableUPP) NewCalcColorTableUPP(CalcColorTableProcPtr userRoutine) { return (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewCalcColorTableUPP(userRoutine) (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewDisposeColorPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( DisposeColorPickMethodUPP )
+NewDisposeColorPickMethodUPP(DisposeColorPickMethodProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppDisposeColorPickMethodProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(DisposeColorPickMethodUPP) NewDisposeColorPickMethodUPP(DisposeColorPickMethodProcPtr userRoutine) { return (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewDisposeColorPickMethodUPP(userRoutine) (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeInitPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeInitPickMethodUPP(InitPickMethodUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeInitPickMethodUPP(InitPickMethodUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeInitPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeRecordColorsUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeRecordColorsUPP(RecordColorsUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeRecordColorsUPP(RecordColorsUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeRecordColorsUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeCalcColorTableUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeCalcColorTableUPP(CalcColorTableUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeCalcColorTableUPP(CalcColorTableUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeCalcColorTableUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeDisposeColorPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeDisposeColorPickMethodUPP(DisposeColorPickMethodUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeDisposeColorPickMethodUPP(DisposeColorPickMethodUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeDisposeColorPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeInitPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSErr )
+InvokeInitPickMethodUPP(
+ SInt16 colorsRequested,
+ UInt32 * dataRef,
+ SInt16 * colorBankType,
+ InitPickMethodUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeInitPickMethodUPP(SInt16 colorsRequested, UInt32 * dataRef, SInt16 * colorBankType, InitPickMethodUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppInitPickMethodProcInfo, colorsRequested, dataRef, colorBankType); }
+ #else
+ #define InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppInitPickMethodProcInfo, (colorsRequested), (dataRef), (colorBankType))
+ #endif
+#endif
+
+/*
+ * InvokeRecordColorsUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSErr )
+InvokeRecordColorsUPP(
+ UInt32 dataRef,
+ RGBColor * colorsArray,
+ SInt32 colorCount,
+ SInt32 * uniqueColors,
+ RecordColorsUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeRecordColorsUPP(UInt32 dataRef, RGBColor * colorsArray, SInt32 colorCount, SInt32 * uniqueColors, RecordColorsUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppRecordColorsProcInfo, dataRef, colorsArray, colorCount, uniqueColors); }
+ #else
+ #define InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppRecordColorsProcInfo, (dataRef), (colorsArray), (colorCount), (uniqueColors))
+ #endif
+#endif
+
+/*
+ * InvokeCalcColorTableUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSErr )
+InvokeCalcColorTableUPP(
+ UInt32 dataRef,
+ SInt16 colorsRequested,
+ void * colorBankPtr,
+ CSpecArray resultPtr,
+ CalcColorTableUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeCalcColorTableUPP(UInt32 dataRef, SInt16 colorsRequested, void * colorBankPtr, CSpecArray resultPtr, CalcColorTableUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppCalcColorTableProcInfo, dataRef, colorsRequested, colorBankPtr, resultPtr); }
+ #else
+ #define InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppCalcColorTableProcInfo, (dataRef), (colorsRequested), (colorBankPtr), (resultPtr))
+ #endif
+#endif
+
+/*
+ * InvokeDisposeColorPickMethodUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSErr )
+InvokeDisposeColorPickMethodUPP(
+ UInt32 dataRef,
+ DisposeColorPickMethodUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeDisposeColorPickMethodUPP(UInt32 dataRef, DisposeColorPickMethodUPP userUPP) { return (OSErr)CALL_ONE_PARAMETER_UPP(userUPP, uppDisposeColorPickMethodProcInfo, dataRef); }
+ #else
+ #define InvokeDisposeColorPickMethodUPP(dataRef, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppDisposeColorPickMethodProcInfo, (dataRef))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewInitPickMethodProc(userRoutine) NewInitPickMethodUPP(userRoutine)
+ #define NewRecordColorsProc(userRoutine) NewRecordColorsUPP(userRoutine)
+ #define NewCalcColorTableProc(userRoutine) NewCalcColorTableUPP(userRoutine)
+ #define NewDisposeColorPickMethodProc(userRoutine) NewDisposeColorPickMethodUPP(userRoutine)
+ #define CallInitPickMethodProc(userRoutine, colorsRequested, dataRef, colorBankType) InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userRoutine)
+ #define CallRecordColorsProc(userRoutine, dataRef, colorsArray, colorCount, uniqueColors) InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userRoutine)
+ #define CallCalcColorTableProc(userRoutine, dataRef, colorsRequested, colorBankPtr, resultPtr) InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userRoutine)
+ #define CallDisposeColorPickMethodProc(userRoutine, dataRef) InvokeDisposeColorPickMethodUPP(dataRef, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * GetPictInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetPictInfo(
+ PicHandle thePictHandle,
+ PictInfo * thePictInfo,
+ short verb,
+ short colorsRequested,
+ short colorPickMethod,
+ short version) THREEWORDINLINE(0x303C, 0x0800, 0xA831);
+
+
+/*
+ * GetPixMapInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetPixMapInfo(
+ PixMapHandle thePixMapHandle,
+ PictInfo * thePictInfo,
+ short verb,
+ short colorsRequested,
+ short colorPickMethod,
+ short version) THREEWORDINLINE(0x303C, 0x0801, 0xA831);
+
+
+/*
+ * NewPictInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+NewPictInfo(
+ PictInfoID * thePictInfoID,
+ short verb,
+ short colorsRequested,
+ short colorPickMethod,
+ short version) THREEWORDINLINE(0x303C, 0x0602, 0xA831);
+
+
+/*
+ * RecordPictInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+RecordPictInfo(
+ PictInfoID thePictInfoID,
+ PicHandle thePictHandle) THREEWORDINLINE(0x303C, 0x0403, 0xA831);
+
+
+/*
+ * RecordPixMapInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+RecordPixMapInfo(
+ PictInfoID thePictInfoID,
+ PixMapHandle thePixMapHandle) THREEWORDINLINE(0x303C, 0x0404, 0xA831);
+
+
+/*
+ * RetrievePictInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+RetrievePictInfo(
+ PictInfoID thePictInfoID,
+ PictInfo * thePictInfo,
+ short colorsRequested) THREEWORDINLINE(0x303C, 0x0505, 0xA831);
+
+
+/*
+ * DisposePictInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+DisposePictInfo(PictInfoID thePictInfoID) THREEWORDINLINE(0x303C, 0x0206, 0xA831);
+
+
+#if OLDROUTINENAMES
+#define DisposPictInfo(thePictInfoID) DisposePictInfo(thePictInfoID)
+#endif /* OLDROUTINENAMES */
+
+
+
+
+
+#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
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PICTUTILS__ */
+