00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __CAIRO_DOCK_STRUCT__
00011 #define __CAIRO_DOCK_STRUCT__
00012
00013 #include <glib.h>
00014 #include <gdk/gdk.h>
00015 #include <X11/Xlib.h>
00016 #include <gtk/gtk.h>
00017 #include <cairo.h>
00018 #include <librsvg/rsvg.h>
00019 #include <librsvg/rsvg-cairo.h>
00020 #include <glib/gi18n.h>
00021
00022 #ifdef HAVE_GLITZ
00023 #include <gdk/gdkx.h>
00024 #include <glitz-glx.h>
00025 #include <cairo-glitz.h>
00026 #endif
00027
00028 typedef struct _CairoDockRenderer CairoDockRenderer;
00029 typedef struct _CairoDockDeskletRenderer CairoDockDeskletRenderer;
00030 typedef struct _CairoDockDialogRenderer CairoDockDialogRenderer;
00031
00032 typedef struct _Icon Icon;
00033 typedef struct _CairoDockContainer CairoDockContainer;
00034 typedef struct _CairoDock CairoDock;
00035 typedef struct _CairoDockDesklet CairoDockDesklet;
00036 typedef struct _CairoDockDialog CairoDockDialog;
00037
00038 typedef struct _CairoDockModule CairoDockModule;
00039 typedef struct _CairoDockVisitCard CairoDockVisitCard;
00040 typedef struct _CairoDockMinimalAppletConfig CairoDockMinimalAppletConfig;
00041 typedef struct _CairoDockVFSBackend CairoDockVFSBackend;
00042
00043 typedef struct _CairoDockClassAppli CairoDockClassAppli;
00044
00045 typedef void (*CairoDockCalculateMaxDockSizeFunc) (CairoDock *pDock);
00046 typedef Icon * (*CairoDockCalculateIconsFunc) (CairoDock *pDock);
00047 typedef void (*CairoDockRenderFunc) (CairoDock *pDock);
00048 typedef void (*CairoDockRenderOptimizedFunc) (CairoDock *pDock, GdkRectangle *pArea);
00049 typedef void (*CairoDockSetSubDockPositionFunc) (Icon *pPointedIcon, CairoDock *pParentDock);
00050
00051 struct _CairoDockRenderer {
00053 gchar *cReadmeFilePath;
00055 CairoDockCalculateMaxDockSizeFunc calculate_max_dock_size;
00057 CairoDockCalculateIconsFunc calculate_icons;
00059 CairoDockRenderFunc render;
00061 CairoDockRenderOptimizedFunc render_optimized;
00063 CairoDockSetSubDockPositionFunc set_subdock_position;
00065 gboolean bUseReflect;
00067 gchar *cPreviewFilePath;
00068 };
00069
00070
00071
00072 typedef enum {
00073 CAIRO_DOCK_VERTICAL = 0,
00074 CAIRO_DOCK_HORIZONTAL
00075 } CairoDockTypeHorizontality;
00076
00077 typedef enum {
00078 CAIRO_DOCK_TYPE_DOCK = 0,
00079 CAIRO_DOCK_TYPE_DESKLET,
00080 CAIRO_DOCK_TYPE_DIALOG
00081 } CairoDockTypeContainer;
00082
00083 struct _CairoDockContainer {
00085 CairoDockTypeContainer iType;
00087 GtkWidget *pWidget;
00089 gint iWidth, iHeight;
00091 int iWindowPositionX, iWindowPositionY;
00093 gboolean bInside;
00095 CairoDockTypeHorizontality bIsHorizontal;
00096 #ifdef HAVE_GLITZ
00097 glitz_drawable_format_t *pDrawFormat;
00098 glitz_drawable_t* pGlitzDrawable;
00099 glitz_format_t* pGlitzFormat;
00100 #else
00101 gpointer padding[3];
00102 #endif // HAVE_GLITZ
00103 };
00104
00105 #define CAIRO_DOCK_CONTAINER(p) ((CairoDockContainer *) (p))
00106
00107
00108 struct _CairoDock {
00110 CairoDockTypeContainer iType;
00112 GtkWidget *pWidget;
00114 gint iCurrentWidth;
00116 gint iCurrentHeight;
00118 gint iWindowPositionX;
00120 gint iWindowPositionY;
00122 gboolean bInside;
00124 CairoDockTypeHorizontality bHorizontalDock;
00125 #ifdef HAVE_GLITZ
00126 glitz_drawable_format_t *pDrawFormat;
00127 glitz_drawable_t* pGlitzDrawable;
00128 glitz_format_t* pGlitzFormat;
00129 #else
00130 gpointer padding[3];
00131 #endif // HAVE_GLITZ
00132
00134 GList* icons;
00136 gboolean bIsMainDock;
00138 gint iRefCount;
00139
00140
00142 gint iGapX;
00144 gint iGapY;
00146 gdouble fAlign;
00147
00149 gdouble fMagnitudeMax;
00151 gdouble iMaxIconHeight;
00153 gdouble fFlatDockWidth;
00155 gint iMinDockWidth;
00157 gint iMinDockHeight;
00159 gint iMaxDockWidth;
00161 gint iMaxDockHeight;
00163 gint iDecorationsWidth;
00165 gint iDecorationsHeight;
00167 gdouble fRatio;
00168
00169 gint iMaxLabelWidth;
00170 gint iRightMargin;
00171 gint iTopMargin;
00172
00173
00175 gint iScrollOffset;
00177 gint iMagnitudeIndex;
00179 gdouble fFoldingFactor;
00181 gint iMouseX;
00183 gint iMouseY;
00185 gint iAvoidingMouseIconType;
00187 gdouble fAvoidingMouseMargin;
00188
00190 GList *pFirstDrawnElement;
00192 gdouble fDecorationsOffsetX;
00193
00195 gboolean bAtBottom;
00197 gboolean bAtTop;
00199 gboolean bMenuVisible;
00201 gboolean bIsDragging;
00202
00203
00205 gint iSidMoveDown;
00207 gint iSidMoveUp;
00209 gint iSidGrowUp;
00211 gint iSidShrinkDown;
00213 gint iSidLeaveDemand;
00214
00215
00217 gchar *cRendererName;
00219 CairoDockCalculateMaxDockSizeFunc calculate_max_dock_size;
00221 CairoDockCalculateIconsFunc calculate_icons;
00223 CairoDockRenderFunc render;
00225 CairoDockRenderOptimizedFunc render_optimized;
00227 CairoDockSetSubDockPositionFunc set_subdock_position;
00229 gboolean bUseReflect;
00230 };
00231
00232
00233 typedef enum {
00234 CAIRO_DOCK_CATEGORY_ACCESSORY=0,
00235 CAIRO_DOCK_CATEGORY_DESKTOP,
00236 CAIRO_DOCK_CATEGORY_CONTROLER,
00237 CAIRO_DOCK_NB_CATEGORY
00238 } CairoDockPluginCategory;
00239
00240 struct _CairoDockVisitCard {
00242 gchar *cModuleName;
00244 gchar *cReadmeFilePath;
00246 short iMajorVersionNeeded;
00248 short iMinorVersionNeeded;
00250 short iMicroVersionNeeded;
00252 gchar *cPreviewFilePath;
00254 gchar *cGettextDomain;
00256 gchar *cDockVersionOnCompilation;
00258 gchar *cModuleVersion;
00260 gchar *cUserDataDir;
00262 gchar *cShareDataDir;
00264 gchar *cConfFileName;
00266 CairoDockPluginCategory iCategory;
00268 gchar *cIconFilePath;
00270 char reserved[40];
00271 };
00272
00274 typedef CairoDockVisitCard * (* CairoDockModulePreInit) (void);
00275
00277 typedef void (*CairoDockModuleInit) (GKeyFile *pKeyFile, Icon *pIcon, CairoDockContainer *pContainer, gchar *cConfFilePath, GError **erreur);
00278
00280 typedef void (*CairoDockModuleStop) (void);
00281
00283 typedef gboolean (*CairoDockModuleReload) (GKeyFile *pKeyFile, gchar *cConfFileToReload, CairoDockContainer *pContainer);
00284
00285 struct _CairoDockModule {
00287 gchar *cSoFilePath;
00289 GModule *pModule;
00291 CairoDockModuleInit initModule;
00293 CairoDockModuleStop stopModule;
00295 CairoDockModuleReload reloadModule;
00297 CairoDockVisitCard *pVisitCard;
00299 gchar *cConfFilePath;
00301 gboolean bActive;
00303 gboolean bCanDetach;
00305 CairoDockContainer *pContainer;
00307 double fLastLoadingTime;
00308 };
00309
00310 struct _CairoDockMinimalAppletConfig {
00311 gint iDesiredIconWidth;
00312 gint iDesiredIconHeight;
00313 gchar *cLabel;
00314 gchar *cIconFileName;
00315 gdouble fOrder;
00316 gboolean bDeskletUseSize;
00317 gint iDeskletWidth;
00318 gint iDeskletHeight;
00319 gint iDeskletPositionX;
00320 gint iDeskletPositionY;
00321 gboolean bIsDetached;
00322 gboolean bKeepBelow;
00323 gboolean bKeepAbove;
00324 gboolean bOnWidgetLayer;
00325 };
00326
00327
00328 typedef void (* CairoDockActionOnAnswerFunc) (int iAnswer, GtkWidget *pWidget, gpointer data);
00329 typedef void (* CairoDockDialogRenderFunc) (cairo_t *pCairoContext, CairoDockDialog *pDialog, gboolean bRenderOptimized);
00330 typedef gpointer (* CairoDockDialogLoadRendererFunc) (CairoDockDialog *pDialog, cairo_t *pSourceContext, gpointer *pConfig);
00331 typedef void (* CairoDockDialogFreeRendererDataFunc) (CairoDockDialog *pDesklet);
00332 struct _CairoDockDialogRenderer {
00333 CairoDockDialogRenderFunc render;
00334 CairoDockDialogLoadRendererFunc load_data;
00335 CairoDockDialogFreeRendererDataFunc free_data;
00336 };
00337
00338 struct _CairoDockDialog {
00340 CairoDockTypeContainer iType;
00342 GtkWidget *pWidget;
00344 int iWidth;
00346 int iHeight;
00348 int iPositionX;
00350 int iPositionY;
00352 gboolean bInside;
00354 CairoDockTypeHorizontality bIsHorizontal;
00355 #ifdef HAVE_GLITZ
00356 glitz_drawable_format_t *pDrawFormat;
00357 glitz_drawable_t* pGlitzDrawable;
00358 glitz_format_t* pGlitzFormat;
00359 #else
00360 gpointer padding[3];
00361 #endif // HAVE_GLITZ
00363 CairoDockDialogRenderer *pRenderer;
00365 gpointer pRendererData;
00367 int iAimedX;
00369 int iAimedY;
00371 gboolean bRight;
00373 gboolean bDirectionUp;
00375 double fRadius;
00377 double fTipHeight;
00379 cairo_surface_t* pTextBuffer;
00381 int iBubbleWidth, iBubbleHeight;
00383 int iMessageWidth, iMessageHeight;
00385 int iButtonsWidth, iButtonsHeight;
00387 int iInteractiveWidth, iInteractiveHeight;
00389 int iDistanceToDock;
00391 int iMargin;
00393 int iButtonOkOffset;
00395 int iButtonCancelOffset;
00397 GtkWidget *pMessageWidget;
00399 GtkWidget *pButtonsWidget;
00401 GtkWidget *pTipWidget;
00403 int iSidTimer;
00405 int iRefCount;
00407 GtkWidget *pInteractiveWidget;
00409 int iButtonsType;
00411 CairoDockActionOnAnswerFunc action_on_answer;
00413 gpointer pUserData;
00415 GFreeFunc pFreeUserDataFunc;
00417 Icon *pIcon;
00418 };
00419
00420
00421 typedef enum {
00422 CAIRO_DOCK_LAUNCHER = 0,
00423 CAIRO_DOCK_SEPARATOR12,
00424 CAIRO_DOCK_APPLI,
00425 CAIRO_DOCK_SEPARATOR23,
00426 CAIRO_DOCK_APPLET,
00427 CAIRO_DOCK_NB_TYPES
00428 } CairoDockIconType;
00429
00430 typedef enum {
00431 CAIRO_DOCK_BOUNCE = 0,
00432 CAIRO_DOCK_ROTATE,
00433 CAIRO_DOCK_BLINK,
00434 CAIRO_DOCK_PULSE,
00435 CAIRO_DOCK_UPSIDE_DOWN,
00436 CAIRO_DOCK_WOBBLY,
00437 CAIRO_DOCK_RANDOM,
00438 CAIRO_DOCK_NB_ANIMATIONS,
00439 CAIRO_DOCK_FOLLOW_MOUSE,
00440 CAIRO_DOCK_AVOID_MOUSE
00441 } CairoDockAnimationType;
00442
00443 struct _Icon {
00444
00446 gchar *acDesktopFileName;
00448 gchar *cBaseURI;
00450 gint iVolumeID;
00452 gchar *acFileName;
00454 gchar *acName;
00456 gchar *acCommand;
00458 gchar *cWorkingDirectory;
00460 CairoDockIconType iType;
00462 gdouble fOrder;
00464 CairoDock *pSubDock;
00466 gchar *cParentDockName;
00467
00469 gdouble fWidth;
00471 gdouble fHeight;
00473 cairo_surface_t* pIconBuffer;
00475 cairo_surface_t* pTextBuffer;
00477 cairo_surface_t* pReflectionBuffer;
00479 cairo_surface_t* pFullIconBuffer;
00481 int iTextWidth;
00483 int iTextHeight;
00485 gdouble fTextXOffset;
00487 gdouble fTextYOffset;
00489 gdouble fXMax;
00491 gdouble fXMin;
00492
00494 gdouble fXAtRest;
00495
00497 gdouble fPhase;
00499 gdouble fX;
00501 gdouble fY;
00503 gdouble fScale;
00505 gdouble fDrawX;
00507 gdouble fDrawY;
00509 gdouble fWidthFactor;
00511 gdouble fHeightFactor;
00513 gdouble fAlpha;
00515 gboolean bPointed;
00517 gint iCount;
00519 CairoDockAnimationType iAnimationType;
00521 gdouble fPersonnalScale;
00523 gdouble fDeltaYReflection;
00525 gdouble fOrientation;
00526
00528 gint iPid;
00530 Window Xid;
00532 gchar *cClass;
00534 double fLastCheckTime;
00536 gboolean bIsHidden;
00538 GtkAllocation windowGeometry;
00539
00541 CairoDockModule *pModule;
00543 gchar *cQuickInfo;
00545 cairo_surface_t* pQuickInfoBuffer;
00547 int iQuickInfoWidth;
00549 int iQuickInfoHeight;
00551 double fQuickInfoXOffset;
00553 double fQuickInfoYOffset;
00555 gboolean bHasIndicator;
00556 };
00557
00558
00559 typedef enum {
00560 CAIRO_DOCK_FILE_MODIFIED=0,
00561 CAIRO_DOCK_FILE_DELETED,
00562 CAIRO_DOCK_FILE_CREATED,
00563 CAIRO_DOCK_NB_EVENT_ON_FILES
00564 } CairoDockFMEventType;
00565
00566 typedef enum {
00567 CAIRO_DOCK_FM_SORT_BY_NAME=0,
00568 CAIRO_DOCK_FM_SORT_BY_DATE,
00569 CAIRO_DOCK_FM_SORT_BY_SIZE,
00570 CAIRO_DOCK_FM_SORT_BY_TYPE,
00571 CAIRO_DOCK_NB_SORT_ON_FILE
00572 } CairoDockFMSortType;
00573
00574 typedef void (*CairoDockFMGetFileInfoFunc) (const gchar *cBaseURI, gchar **cName, gchar **cURI, gchar **cIconName, gboolean *bIsDirectory, int *iVolumeID, double *fOrder, CairoDockFMSortType iSortType);
00575 typedef void (*CairoDockFMFilePropertiesFunc) (const gchar *cURI, guint64 *iSize, time_t *iLastModificationTime, gchar **cMimeType, int *iUID, int *iGID, int *iPermissionsMask);
00576 typedef GList * (*CairoDockFMListDirectoryFunc) (const gchar *cURI, CairoDockFMSortType g_fm_iSortType, int iNewIconsType, gboolean bListHiddenFiles, gchar **cFullURI);
00577 typedef void (*CairoDockFMLaunchUriFunc) (const gchar *cURI);
00578
00579 typedef gchar * (*CairoDockFMIsMountedFunc) (const gchar *cURI, gboolean *bIsMounted);
00580 typedef void (*CairoDockFMMountCallback) (gboolean bMounting, gboolean bSuccess, const gchar *cName, Icon *icon, CairoDock *pDock);
00581 typedef void (*CairoDockFMMountFunc) (const gchar *cURI, int iVolumeID, CairoDockFMMountCallback pCallback, Icon *icon, CairoDock *pDock);
00582 typedef void (*CairoDockFMUnmountFunc) (const gchar *cURI, int iVolumeID, CairoDockFMMountCallback pCallback, Icon *icon, CairoDock *pDockCairoDock);
00583
00584 typedef void (*CairoDockFMMonitorCallback) (CairoDockFMEventType iEventType, const gchar *cURI, gpointer data);
00585 typedef void (*CairoDockFMAddMonitorFunc) (const gchar *cURI, gboolean bDirectory, CairoDockFMMonitorCallback pCallback, gpointer data);
00586 typedef void (*CairoDockFMRemoveMonitorFunc) (const gchar *cURI);
00587
00588 typedef gboolean (*CairoDockFMDeleteFileFunc) (const gchar *cURI);
00589 typedef gboolean (*CairoDockFMRenameFileFunc) (const gchar *cOldURI, const gchar *cNewName);
00590 typedef gboolean (*CairoDockFMMoveFileFunc) (const gchar *cURI, const gchar *cDirectoryURI);
00591
00592 typedef gchar * (*CairoDockFMGetTrashFunc) (const gchar *cNearURI, gboolean bCreateIfNecessary);
00593 typedef gchar * (*CairoDockFMGetDesktopFunc) (void);
00594 typedef void (*CairoDockFMUserActionFunc) (void);
00595
00596 struct _CairoDockVFSBackend {
00597 CairoDockFMGetFileInfoFunc get_file_info;
00598 CairoDockFMFilePropertiesFunc get_file_properties;
00599 CairoDockFMListDirectoryFunc list_directory;
00600 CairoDockFMLaunchUriFunc launch_uri;
00601 CairoDockFMIsMountedFunc is_mounted;
00602 CairoDockFMMountFunc mount;
00603 CairoDockFMUnmountFunc unmount;
00604 CairoDockFMAddMonitorFunc add_monitor;
00605 CairoDockFMRemoveMonitorFunc remove_monitor;
00606 CairoDockFMDeleteFileFunc delete;
00607 CairoDockFMRenameFileFunc rename;
00608 CairoDockFMMoveFileFunc move;
00609 CairoDockFMGetTrashFunc get_trash_path;
00610 CairoDockFMGetDesktopFunc get_desktop_path;
00611 CairoDockFMUserActionFunc logout;
00612 CairoDockFMUserActionFunc setup_time;
00613 };
00614
00615
00616 typedef void (* CairoDockDeskletRenderFunc) (cairo_t *pCairoContext, CairoDockDesklet *pDesklet, gboolean bRenderOptimized);
00617 typedef gpointer (* CairoDockDeskletLoadRendererFunc) (CairoDockDesklet *pDesklet, cairo_t *pSourceContext, gpointer *pConfig);
00618 typedef void (* CairoDockDeskletFreeRendererDataFunc) (CairoDockDesklet *pDesklet);
00619 typedef void (* CairoDockDeskletLoadIconsFunc) (CairoDockDesklet *pDesklet, cairo_t *pSourceContext);
00620 struct _CairoDockDeskletRenderer {
00621 CairoDockDeskletRenderFunc render;
00622 CairoDockDeskletLoadRendererFunc load_data;
00623 CairoDockDeskletFreeRendererDataFunc free_data;
00624 CairoDockDeskletLoadIconsFunc load_icons;
00625 };
00626
00627 struct _CairoDockDesklet {
00629 CairoDockTypeContainer iType;
00631 GtkWidget *pWidget;
00633 gint iWidth, iHeight;
00635 int iWindowPositionX, iWindowPositionY;
00637 gboolean bInside;
00639 CairoDockTypeHorizontality bIsHorizontal;
00640 #ifdef HAVE_GLITZ
00641 glitz_drawable_format_t *pDrawFormat;
00642 glitz_drawable_t* pGlitzDrawable;
00643 glitz_format_t* pGlitzFormat;
00644 #else
00645 gpointer padding[3];
00646 #endif // HAVE_GLITZ
00648 CairoDockDeskletRenderer *pRenderer;
00650 gpointer pRendererData;
00652 GList *icons;
00654 gint diff_x, diff_y;
00655 gboolean moving;
00657 Icon *pIcon;
00659 gint iSidWritePosition;
00661 gint iSidWriteSize;
00663 gint iGradationCount;
00665 gint iSidGradationOnEnter;
00666 };
00667
00668
00669 #define CAIRO_DOCK_FM_VFS_ROOT "_vfsroot_"
00670 #define CAIRO_DOCK_FM_NETWORK "_network_"
00671 #define CAIRO_DOCK_FM_VFS_ROOT_NETWORK "_vfsroot+network_"
00672
00673
00674 typedef gboolean (* CairoDockForeachDeskletFunc) (CairoDockDesklet *pDesklet, CairoDockModule *pModule, gpointer data);
00675
00676 typedef void (* CairoDockForeachIconFunc) (Icon *icon, gpointer data);
00677
00678 typedef void (* CairoDockConfigFunc) (gchar *cConfFile, gpointer data);
00679
00680
00681 struct _CairoDockClassAppli {
00683 gboolean bUseXIcon;
00685 GList *pIconsOfClass;
00687 GList *pAppliOfClass;
00688 };
00689
00690
00692 #define CAIRO_DOCK_DATA_DIR ".cairo-dock"
00694 #define CAIRO_DOCK_THEMES_DIR "themes"
00696 #define CAIRO_DOCK_CURRENT_THEME_NAME "current_theme"
00698 #define CAIRO_DOCK_LAUNCHERS_DIR "launchers"
00700 #define CAIRO_DOCK_MAIN_DOCK_NAME "_MainDock_"
00702 #define CAIRO_DOCK_DEFAULT_RENDERER_NAME "default"
00703
00704
00705 #define CAIRO_DOCK_LAST_ORDER -1e9
00706 #define CAIRO_DOCK_NB_MAX_ITERATIONS 1000
00707
00708 #define CAIRO_DOCK_LOAD_ICONS_FOR_DESKLET TRUE
00709
00710 #define CAIRO_DOCK_UPDATE_DOCK_SIZE TRUE
00711 #define CAIRO_DOCK_ANIMATE_ICON TRUE
00712 #define CAIRO_DOCK_APPLY_RATIO TRUE
00713 #define CAIRO_DOCK_INSERT_SEPARATOR TRUE
00714
00715 #ifdef CAIRO_DOCK_VERBOSE
00716 #define CAIRO_DOCK_MESSAGE if (g_bVerbose) g_message
00717 #else
00718 #define CAIRO_DOCK_MESSAGE(s, ...)
00719 #endif
00720
00721
00722 typedef enum {
00723 CAIRO_DOCK_MAX_SIZE,
00724 CAIRO_DOCK_NORMAL_SIZE,
00725 CAIRO_DOCK_MIN_SIZE
00726 } CairoDockSizeType;
00727
00728 typedef enum {
00729 CAIRO_DOCK_MOUSE_INSIDE,
00730 CAIRO_DOCK_MOUSE_ON_THE_EDGE,
00731 CAIRO_DOCK_MOUSE_OUTSIDE
00732 } CairoDockMousePositionType;
00733
00734 typedef enum {
00735 CAIRO_DOCK_UNKNOWN_ENV=0,
00736 CAIRO_DOCK_GNOME,
00737 CAIRO_DOCK_KDE,
00738 CAIRO_DOCK_XFCE
00739 } CairoDockDesktopEnv;
00740
00741 typedef enum
00742 {
00743 CAIRO_DOCK_BOTTOM = 0,
00744 CAIRO_DOCK_TOP,
00745 CAIRO_DOCK_LEFT,
00746 CAIRO_DOCK_RIGHT,
00747 CAIRO_DOCK_NB_POSITIONS
00748 } CairoDockPositionType;
00749
00750 typedef enum
00751 {
00752 CAIRO_DOCK_LAUNCHER_FROM_DESKTOP_FILE = 0,
00753 CAIRO_DOCK_LAUNCHER_FOR_CONTAINER,
00754 CAIRO_DOCK_LAUNCHER_FOR_SEPARATOR,
00755 CAIRO_DOCK_NB_NEW_LAUNCHER_TYPE
00756 } CairoDockNewLauncherType;
00757
00758 #endif