src/cairo-dock-struct.h

Aller à la documentation de ce fichier.
00001 /******************************************************************************
00002 
00003 This file is a part of the cairo-dock program, 
00004 released under the terms of the GNU General Public License.
00005 
00006 Written by Fabrice Rey (for any bug report, please mail me to fabounet_03@yahoo.fr)
00007 
00008 ******************************************************************************/
00009 #ifndef __CAIRO_DOCK_STRUCT__
00010 #define  __CAIRO_DOCK_STRUCT__
00011 
00012 #include <glib.h>
00013 #include <gdk/gdk.h>
00014 #include <X11/Xlib.h>
00015 #include <gtk/gtk.h>
00016 #include <cairo.h>
00017 #include <librsvg/rsvg.h>
00018 #include <librsvg/rsvg-cairo.h>
00019 
00020 #ifdef HAVE_GLITZ
00021 #include <gdk/gdkx.h>
00022 #include <glitz-glx.h>
00023 #include <cairo-glitz.h>
00024 #endif
00025 
00026 typedef struct _CairoDock CairoDock;
00027 typedef struct _CairoDockModule CairoDockModule;
00028 typedef struct _CairoDockDialog CairoDockDialog;
00029 typedef struct _Icon Icon;
00030 typedef struct _CairoDockVisitCard CairoDockVisitCard;
00031 
00032 typedef enum {
00033         CAIRO_DOCK_VERTICAL = 0,
00034         CAIRO_DOCK_HORIZONTAL
00035         } CairoDockTypeHorizontality;
00036 
00037 
00038 typedef void (*CairoDockCalculateMaxDockSizeFunc) (CairoDock *pDock);
00039 typedef Icon * (*CairoDockCalculateIconsFunc) (CairoDock *pDock);
00040 typedef void (*CairoDockRenderFunc) (CairoDock *pDock);
00041 typedef void (*CairoDockRenderOptimizedFunc) (CairoDock *pDock, GdkRectangle *pArea);
00042 typedef void (*CairoDockSetSubDockPositionFunc) (Icon *pPointedIcon, CairoDock *pParentDock);
00043 
00044 typedef struct _CairoDockRenderer {
00045         gchar *cReadmeFilePath;
00046         CairoDockCalculateMaxDockSizeFunc calculate_max_dock_size;
00047         CairoDockCalculateIconsFunc calculate_icons;
00048         CairoDockRenderFunc render;
00049         CairoDockRenderOptimizedFunc render_optimized;
00050         CairoDockSetSubDockPositionFunc set_subdock_position;
00051         gboolean bUseReflect;
00052         } CairoDockRenderer;
00053 
00054 
00055 struct _CairoDock {
00057         GList* icons;
00059         GtkWidget *pWidget;
00061         gboolean bIsMainDock;
00063         gint iRefCount;
00064         
00065         //\_______________ Les parametres de position et de geometrie de la fenetre du dock.
00067         gint iGapX;
00069         gint iGapY;
00071         gdouble fAlign;  
00073         CairoDockTypeHorizontality bHorizontalDock;  
00074         
00076         gint iMaxIconHeight;
00078         gint iFlatDockWidth;
00080         gint iMinDockWidth;
00082         gint iMinDockHeight;
00084         gint iMaxDockWidth;
00086         gint iMaxDockHeight;
00088         gint iDecorationsWidth;
00090         gint iDecorationsHeight;
00092         gint iWindowPositionX;
00094         gint iWindowPositionY;
00096         gint iCurrentWidth;
00098         gint iCurrentHeight;
00099         
00100         //\_______________ Les parametres lies a une animation du dock.
00102         gint iScrollOffset;
00104         gint iMagnitudeIndex;
00106         gdouble fFoldingFactor;
00108         gint iMouseX;
00110         gint iMouseY;
00112         gint iAvoidingMouseIconType;
00114         gdouble fAvoidingMouseMargin;
00115         
00117         GList *pFirstDrawnElement;
00119         gdouble fDecorationsOffsetX;
00120         
00122         gboolean bAtBottom;
00124         gboolean bAtTop;
00126         gboolean bInside;
00128         gboolean bMenuVisible;
00129         
00130         //\_______________ Les ID des threads en cours sur le dock.
00132         gint iSidMoveDown;
00134         gint iSidMoveUp;
00136         gint iSidGrowUp;
00138         gint iSidShrinkDown;
00140         gint iSidLeaveDemand;
00141         
00142         //\_______________ Les fonctions de dessin du dock.
00144         gchar *cRendererName;
00146         CairoDockCalculateMaxDockSizeFunc calculate_max_dock_size;
00148         CairoDockCalculateIconsFunc calculate_icons;
00150         CairoDockRenderFunc render;
00152         CairoDockRenderOptimizedFunc render_optimized;
00154         CairoDockSetSubDockPositionFunc set_subdock_position;
00156         gboolean bUseReflect;
00157         
00158 #ifdef HAVE_GLITZ
00159         glitz_drawable_format_t *pDrawFormat;
00160         glitz_drawable_t* pGlitzDrawable;
00161         glitz_format_t* pGlitzFormat;
00162 #endif // HAVE_GLITZ
00163         };
00164 
00165 
00166 struct _CairoDockVisitCard {
00168         gchar *cModuleName;
00170         gchar *cReadmeFilePath;
00172         short iMajorVersionNeeded;
00174         short iMinorVersionNeeded;
00176         short iMicroVersionNeeded;
00177 };
00178 
00179 typedef CairoDockVisitCard * (* CairoDockModulePreInit) (void);
00180 
00181 typedef gpointer (*CairoDockModuleInit) (CairoDock *pDock, gchar **cConfFilePath, GError **erreur);  // renvoie son icone si il en a.
00182 
00183 typedef void (*CairoDockModuleStop) (void);
00184 
00185 struct _CairoDockModule {
00187         gchar *cModuleName;
00189         gchar *cSoFilePath;
00191         GModule *pModule;
00193         CairoDockModuleInit initModule;
00195         CairoDockModuleStop stopModule;
00197         gchar *cConfFilePath;
00199         gchar *cReadmeFilePath;
00201         gboolean bActive;
00202 };
00203 
00204 
00205 typedef void (* CairoDockActionOnAnswerFunc) (int iAnswer, GtkWidget *pWidget, gpointer data);
00206 
00207 struct _CairoDockDialog
00208 {
00210         int iWidth;
00212         int iHeight;
00214         int iPositionX;
00216         int iPositionY;
00218         int iAimedX;
00220         int iAimedY;
00222         gboolean bRight;
00224         gboolean bIsPerpendicular;
00226         gboolean bDirectionUp;
00228         double fRadius;
00230         double fTipHeight;
00232         cairo_surface_t* pTextBuffer;
00234         int iTextWidth;
00236         int iTextHeight;
00238         int iMessageHeight; 
00240         int iButtonOkOffset;
00242         int iButtonCancelOffset;
00244         GtkWidget *pWidget;
00246         int iSidTimer;
00248         int iRefCount;
00250         gboolean bBuildComplete;
00252         GtkWidget *pInteractiveWidget;
00254         int iButtonsType;
00256         CairoDockActionOnAnswerFunc action_on_answer;
00258         gpointer pUserData;
00260         GFreeFunc pFreeUserDataFunc;
00261         };
00262 
00263 
00264 typedef enum {
00265         CAIRO_DOCK_LAUNCHER = 0,
00266         CAIRO_DOCK_SEPARATOR12,
00267         CAIRO_DOCK_APPLI,
00268         CAIRO_DOCK_SEPARATOR23,
00269         CAIRO_DOCK_APPLET,
00270         CAIRO_DOCK_NB_TYPES
00271         } CairoDockIconType;
00272 
00273 typedef enum {
00274         CAIRO_DOCK_BOUNCE = 0,
00275         CAIRO_DOCK_ROTATE,
00276         CAIRO_DOCK_BLINK,
00277         CAIRO_DOCK_PULSE,
00278         CAIRO_DOCK_UPSIDE_DOWN,
00279         CAIRO_DOCK_WOBBLY,
00280         CAIRO_DOCK_RANDOM,
00281         CAIRO_DOCK_NB_ANIMATIONS,
00282         CAIRO_DOCK_FOLLOW_MOUSE,
00283         CAIRO_DOCK_AVOID_MOUSE
00284         } CairoDockAnimationType;
00285 
00286 struct _Icon {
00287         //\____________ renseignes lors de la creation de l'icone.
00289         gchar *acDesktopFileName;
00291         gchar *cBaseURI;
00293         gint iVolumeID;
00295         gchar* acFileName;
00297         gchar* acName;
00299         gchar* acCommand;
00301         CairoDockIconType iType;
00303         gdouble fOrder;
00305         CairoDock *pSubDock;
00307         gchar *cParentDockName;
00308         //\____________ calcules lors du chargement de l'icone.
00310         gdouble fWidth;
00312         gdouble fHeight;
00314         cairo_surface_t* pIconBuffer;
00316         cairo_surface_t* pTextBuffer;
00318         cairo_surface_t* pReflectionBuffer;
00320         cairo_surface_t* pFullIconBuffer;
00322         int iTextWidth;
00324         int iTextHeight;
00326         gdouble fTextXOffset;
00328         gdouble fTextYOffset;
00330         gdouble fXMax;
00332         gdouble fXMin;
00333         //\____________ calcules a chaque scroll et insertion/suppression d'une icone.
00335         gdouble fXAtRest;
00336         //\____________ calcules a chaque fois.
00338         gdouble fPhase;
00340         gdouble fX;
00342         gdouble fY;
00344         gdouble fScale;
00346         gdouble fDrawX;
00348         gdouble fDrawY;
00350         gdouble fWidthFactor;
00352         gdouble fHeightFactor;
00354         gdouble fAlpha;
00356         gboolean bPointed;
00358         gint iCount;
00360         CairoDockAnimationType iAnimationType;
00362         gdouble fPersonnalScale;
00364         gdouble fDeltaYReflection;
00366         gdouble fOrientation;
00367         //\____________ Pour les applis.
00369         gint iPid;
00371         Window Xid;
00373         gchar *cClass;
00375         double fLastCheckTime;
00377         gboolean bIsHidden;
00378         //\____________ Pour les modules.
00380         CairoDockModule *pModule;
00382         gchar *cQuickInfo;
00384         cairo_surface_t* pQuickInfoBuffer;
00386         int iQuickInfoWidth;
00388         int iQuickInfoHeight;
00390         double fQuickInfoXOffset;
00392         double fQuickInfoYOffset;
00393         //\____________ Pour les bulles de dialogues.
00395         CairoDockDialog *pDialog;
00396 };
00397 
00398 
00400 #define CAIRO_DOCK_DATA_DIR ".cairo-dock"
00402 #define CAIRO_DOCK_THEMES_DIR "themes"
00404 #define CAIRO_DOCK_CURRENT_THEME_NAME "current_theme"
00406 #define CAIRO_DOCK_LAUNCHERS_DIR "launchers"
00408 #define CAIRO_DOCK_MAIN_DOCK_NAME "_MainDock_"
00410 #define CAIRO_DOCK_DEFAULT_RENDERER_NAME "default"
00411 
00412 
00413 #define CAIRO_DOCK_LAST_ORDER -1e9
00414 #define CAIRO_DOCK_NB_MAX_ITERATIONS 1000
00415 
00416 #define CAIRO_DOCK_UPDATE_DOCK_SIZE TRUE
00417 #define CAIRO_DOCK_ANIMATE_ICON TRUE
00418 #define CAIRO_DOCK_APPLY_RATIO TRUE
00419 
00420 #ifdef CAIRO_DOCK_VERBOSE
00421 #define CAIRO_DOCK_MESSAGE if (g_bVerbose) g_message
00422 #else
00423 #define CAIRO_DOCK_MESSAGE(s, ...)
00424 #endif
00425 
00426 
00427 typedef enum {
00428         CAIRO_DOCK_MAX_SIZE,
00429         CAIRO_DOCK_NORMAL_SIZE,
00430         CAIRO_DOCK_MIN_SIZE
00431         } CairoDockSizeType;
00432 
00433 typedef enum {
00434         CAIRO_DOCK_MOUSE_INSIDE,
00435         CAIRO_DOCK_MOUSE_ON_THE_EDGE,
00436         CAIRO_DOCK_MOUSE_OUTSIDE
00437         } CairoDockMousePositionType;
00438 
00439 typedef void (* CairoDockConfigFunc) (gchar *cConfFile, gpointer data);
00440 
00441 typedef enum {
00442         CAIRO_DOCK_UNKNOWN_ENV=0,
00443         CAIRO_DOCK_GNOME,
00444         CAIRO_DOCK_KDE
00445         } CairoDockDesktopEnv;
00446 
00447 typedef enum
00448 {
00449         CAIRO_DOCK_BOTTOM = 0,
00450         CAIRO_DOCK_TOP,
00451         CAIRO_DOCK_LEFT,
00452         CAIRO_DOCK_RIGHT,
00453         CAIRO_DOCK_NB_POSITIONS
00454         } CairoDockPositionType;
00455 
00456 #endif

Généré le Tue Dec 11 02:26:43 2007 pour Cairo-Dock par  doxygen 1.5.3