1 /* 2 * This file is a part of the Cairo-Dock project 3 * 4 * Copyright : (C) see the 'copyright' file. 5 * E-mail : see the 'copyright' file. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 3 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 21 #ifndef __CAIRO_DOCK_BACKENDS_MANAGER__ 22 #define __CAIRO_DOCK_BACKENDS_MANAGER__ 23 24 #include <glib.h> 25 26 #include "cairo-dock-struct.h" 27 #include "cairo-dock-manager.h" 28 #include "cairo-dock-desklet-factory.h" 29 #include "cairo-dock-dock-factory.h" 30 #include "cairo-dock-dialog-factory.h" 31 G_BEGIN_DECLS 32 33 // manager 34 typedef struct _CairoBackendsParam CairoBackendsParam; 35 36 #ifndef _MANAGER_DEF_ 37 extern GldiManager myBackendsMgr; 38 extern CairoBackendsParam myBackendsParam; 39 #endif 40 41 // params 42 struct _CairoBackendsParam { 43 // views 44 gchar *cMainDockDefaultRendererName; 45 gchar *cSubDockDefaultRendererName; 46 gdouble fSubDockSizeRatio; 47 // system 48 gint iUnfoldingDuration; 49 gint iGrowUpInterval, iShrinkDownInterval; 50 gint iHideNbSteps, iUnhideNbSteps; 51 gdouble fRefreshInterval; 52 gboolean bDynamicReflection; 53 }; 54 55 struct _CairoDockAnimationRecord { 56 gint id; 57 const gchar *cDisplayedName; 58 gboolean bIsEffect; 59 }; 60 61 // Dock renderer 62 CairoDockRenderer *cairo_dock_get_renderer (const gchar *cRendererName, gboolean bForMainDock); 63 void cairo_dock_register_renderer (const gchar *cRendererName, CairoDockRenderer *pRenderer); 64 void cairo_dock_remove_renderer (const gchar *cRendererName); 65 66 // Desklet renderer 67 CairoDeskletRenderer *cairo_dock_get_desklet_renderer (const gchar *cRendererName); 68 void cairo_dock_register_desklet_renderer (const gchar *cRendererName, CairoDeskletRenderer *pRenderer); 69 void cairo_dock_remove_desklet_renderer (const gchar *cRendererName); 70 void cairo_dock_predefine_desklet_renderer_config (CairoDeskletRenderer *pRenderer, const gchar *cConfigName, CairoDeskletRendererConfigPtr pConfig); 71 CairoDeskletRendererConfigPtr cairo_dock_get_desklet_renderer_predefined_config (const gchar *cRendererName, const gchar *cConfigName); 72 73 // Dialog renderer 74 CairoDialogRenderer *cairo_dock_get_dialog_renderer (const gchar *cRendererName); 75 void cairo_dock_register_dialog_renderer (const gchar *cRendererName, CairoDialogRenderer *pRenderer); 76 void cairo_dock_remove_dialog_renderer (const gchar *cRendererName); 77 78 // Desklet decorations 79 CairoDeskletDecoration *cairo_dock_get_desklet_decoration (const gchar *cDecorationName); 80 void cairo_dock_register_desklet_decoration (const gchar *cDecorationName, CairoDeskletDecoration *pDecoration); 81 void cairo_dock_remove_desklet_decoration (const gchar *cDecorationName); 82 83 // Hiding animations 84 CairoDockHidingEffect *cairo_dock_get_hiding_effect (const gchar *cHidingEffect); 85 void cairo_dock_register_hiding_effect (const gchar *cHidingEffect, CairoDockHidingEffect *pEffect); 86 void cairo_dock_remove_hiding_effect (const gchar *cHidingEffect); 87 88 // Container Icon renderer 89 CairoIconContainerRenderer *cairo_dock_get_icon_container_renderer (const gchar *cRendererName); 90 void cairo_dock_register_icon_container_renderer (const gchar *cRendererName, CairoIconContainerRenderer *pRenderer); 91 void cairo_dock_remove_icon_container_renderer (const gchar *cRendererName); 92 void cairo_dock_foreach_icon_container_renderer (GHFunc pCallback, gpointer data); 93 94 95 void cairo_dock_set_renderer (CairoDock *pDock, const gchar *cRendererName); 96 void cairo_dock_set_default_renderer (CairoDock *pDock); 97 98 void cairo_dock_set_desklet_renderer (CairoDesklet *pDesklet, CairoDeskletRenderer *pRenderer, CairoDeskletRendererConfigPtr pConfig); 99 void cairo_dock_set_desklet_renderer_by_name (CairoDesklet *pDesklet, const gchar *cRendererName, CairoDeskletRendererConfigPtr pConfig); 100 101 void cairo_dock_set_dialog_renderer (CairoDialog *pDialog, CairoDialogRenderer *pRenderer, CairoDialogRendererConfigPtr pConfig); 102 void cairo_dock_set_dialog_renderer_by_name (CairoDialog *pDialog, const gchar *cRendererName, CairoDialogRendererConfigPtr pConfig); 103 104 // Dialog decorator 105 CairoDialogDecorator *cairo_dock_get_dialog_decorator (const gchar *cDecoratorName); 106 void cairo_dock_register_dialog_decorator (const gchar *cDecoratorName, CairoDialogDecorator *pDecorator); 107 void cairo_dock_remove_dialog_decorator (const gchar *cDecoratorName); 108 void cairo_dock_set_dialog_decorator (CairoDialog *pDialog, CairoDialogDecorator *pDecorator); 109 void cairo_dock_set_dialog_decorator_by_name (CairoDialog *pDialog, const gchar *cDecoratorName); 110 111 112 void cairo_dock_render_desklet_with_new_data (CairoDesklet *pDesklet, CairoDeskletRendererDataPtr pNewData); 113 void cairo_dock_render_dialog_with_new_data (CairoDialog *pDialog, CairoDialogRendererDataPtr pNewData); 114 115 116 void cairo_dock_foreach_dock_renderer (GHFunc pFunction, gpointer data); 117 void cairo_dock_foreach_desklet_decoration (GHFunc pFunction, gpointer data); 118 void cairo_dock_foreach_dialog_decorator (GHFunc pFunction, gpointer data); 119 void cairo_dock_foreach_animation (GHFunc pFunction, gpointer data); 120 121 122 void cairo_dock_update_renderer_list_for_gui (void); 123 void cairo_dock_update_desklet_decorations_list_for_gui (void); 124 void cairo_dock_update_desklet_decorations_list_for_applet_gui (void); 125 void cairo_dock_update_animations_list_for_gui (void); 126 void cairo_dock_update_dialog_decorator_list_for_gui (void); 127 128 129 // Icon animations 130 int cairo_dock_register_animation (const gchar *cAnimation, const gchar *cDisplayedName, gboolean bIsEffect); 131 void cairo_dock_free_animation_record (CairoDockAnimationRecord *pRecord); 132 int cairo_dock_get_animation_id (const gchar *cAnimation); 133 const gchar *cairo_dock_get_animation_displayed_name (const gchar *cAnimation); 134 void cairo_dock_unregister_animation (const gchar *cAnimation); 135 void cairo_dock_foreach_animation (GHFunc pHFunction, gpointer data); 136 137 138 #define CAIRO_CONTAINER_IS_OPENGL(pContainer) (g_bUseOpenGL && ((CAIRO_DOCK_IS_DOCK (pContainer) && CAIRO_DOCK (pContainer)->pRenderer->render_opengl) || (CAIRO_DOCK_IS_DESKLET (pContainer) && CAIRO_DESKLET (pContainer)->pRenderer && CAIRO_DESKLET (pContainer)->pRenderer->render_opengl))) 139 #define CAIRO_DOCK_CONTAINER_IS_OPENGL CAIRO_CONTAINER_IS_OPENGL 140 141 void gldi_register_backends_manager (void); 142 143 G_END_DECLS 144 #endif 145