void load_all_surfaces(void) { if (myData.pSurfaceDefault != NULL) cairo_surface_destroy (myData.pSurfaceDefault); if (myData.pSurfaceNote != NULL) cairo_surface_destroy (myData.pSurfaceNote); if (myDock) // en mode desklet, on ne peut pas charger les surfaces car on n'a pas leur encore leur taille. { //Chargement de default.svg if (myConfig.cIconDefault != NULL) { gchar *cUserImagePath = cairo_dock_generate_file_path (myConfig.cIconDefault); myData.pSurfaceDefault = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath); g_free (cUserImagePath); } else { myData.pSurfaceDefault = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (MY_APPLET_SHARE_DATA_DIR"/default.svg"); } //Chargement de note.svg myData.pSurfaceNote = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (MY_APPLET_SHARE_DATA_DIR"/note.svg"); } else { myData.pSurfaceDefault = NULL; myData.pSurfaceNote = NULL; } }
void cd_powermanager_draw_icon_with_effect (gboolean bOnBattery) { if (bOnBattery && myData.pSurfaceBattery == NULL) { gchar *cImagePath; if (myConfig.cUserBatteryIconName == NULL) cImagePath = g_strdup_printf ("%s/%s", MY_APPLET_SHARE_DATA_DIR, "default-battery.svg"); else cImagePath = cairo_dock_generate_file_path (myConfig.cUserBatteryIconName); myData.pSurfaceBattery = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cImagePath); g_free (cImagePath); } else if (! bOnBattery && myData.pSurfaceCharge == NULL) { gchar *cImagePath; if (myConfig.cUserChargeIconName == NULL) cImagePath = g_strdup_printf ("%s/%s", MY_APPLET_SHARE_DATA_DIR, "default-charge.svg"); else cImagePath = cairo_dock_generate_file_path (myConfig.cUserChargeIconName); myData.pSurfaceCharge = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cImagePath); g_free (cImagePath); } cairo_surface_t *pSurface = (bOnBattery ? myData.pSurfaceBattery : myData.pSurfaceCharge); switch (myConfig.iEffect) { case POWER_MANAGER_EFFECT_NONE : CD_APPLET_SET_SURFACE_ON_MY_ICON (pSurface); break; case POWER_MANAGER_EFFECT_ZOOM : cairo_save (myDrawContext); double fScale = .3 + .7 * myData.battery_charge / 100.; CD_APPLET_SET_SURFACE_ON_MY_ICON_WITH_ZOOM (pSurface, fScale); cairo_restore (myDrawContext); break; case POWER_MANAGER_EFFECT_TRANSPARENCY : cairo_save (myDrawContext); double fAlpha = .3 + .7 * myData.battery_charge / 100.; CD_APPLET_SET_SURFACE_ON_MY_ICON_WITH_ALPHA (pSurface, fAlpha); cairo_restore (myDrawContext); break; case POWER_MANAGER_EFFECT_BAR : cairo_save (myDrawContext); CD_APPLET_SET_SURFACE_ON_MY_ICON_WITH_BAR (pSurface, myData.battery_charge * .01); cairo_restore (myDrawContext); break; default : break; } }
/* Applique la surface correspondant a un etat sur l'icone. */ void cd_musicplayer_apply_status_surface (MyPlayerStatus iStatus) { cd_debug ("%s (%d)", __func__, iStatus); g_return_if_fail (iStatus < PLAYER_NB_STATUS); gboolean bUse3DTheme = (CD_APPLET_MY_CONTAINER_IS_OPENGL && myConfig.bOpenglThemes); cairo_surface_t *pSurface = myData.pSurfaces[iStatus]; // load the surface if not already in cache if (pSurface == NULL) { gchar *cUserIcon = myConfig.cUserImage[iStatus]; if (cUserIcon != NULL) // l'utilisateur a defini une icone perso pour ce statut => on essaye de la charger. { gchar *cUserImagePath = cairo_dock_search_icon_s_path (cUserIcon, MAX (myIcon->image.iWidth, myIcon->image.iHeight)); myData.pSurfaces[iStatus] = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath ? cUserImagePath : cUserIcon); // si on a trouve une icone, on la prend, sinon on considere le fichier comme une image. g_free (cUserImagePath); } if (myData.pSurfaces[iStatus] == NULL) // pas d'icone perso pour ce statut, ou l'icone specifiee n'a pas ete trouvee ou pas ete chargee => on prend l'icone par defaut. { const gchar **cIconName = (bUse3DTheme ? s_cDefaultIconName3D : s_cDefaultIconName); gchar *cImagePath = g_strdup_printf (MY_APPLET_SHARE_DATA_DIR"/%s", cIconName[iStatus]); myData.pSurfaces[iStatus] = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cImagePath); g_free (cImagePath); } pSurface = myData.pSurfaces[iStatus]; g_return_if_fail (pSurface != NULL); } // apply the surface if (bUse3DTheme) // 3D theme -> make a transition { if (myData.iPrevTextureCover != 0) _cairo_dock_delete_texture (myData.iPrevTextureCover); myData.iPrevTextureCover = myData.TextureCover; myData.TextureCover = cairo_dock_create_texture_from_surface (pSurface); if (myData.iPrevTextureCover != 0) { myData.iCoverTransition = NB_TRANSITION_STEP; cairo_dock_launch_animation (myContainer); } else { cd_opengl_render_to_texture (myApplet); CD_APPLET_REDRAW_MY_ICON; } } else // just apply the surface (we could make a transition too ...) { CD_APPLET_SET_SURFACE_ON_MY_ICON (pSurface); } }
CD_APPLET_PRE_INIT_END static void _load_surfaces (void) { GString *sImagePath = g_string_new (""); if (myData.pSurface != NULL) cairo_surface_destroy (myData.pSurface); if (myConfig.cDefaultIcon != NULL) { gchar *cUserImagePath = cairo_dock_generate_file_path (myConfig.cDefaultIcon); myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath); g_free (cUserImagePath); } else { g_string_printf (sImagePath, "%s/default.svg", MY_APPLET_SHARE_DATA_DIR); myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (sImagePath->str); } if (myData.pMuteSurface != NULL) cairo_surface_destroy (myData.pMuteSurface); if (myConfig.cMuteIcon != NULL) { gchar *cUserImagePath = cairo_dock_generate_file_path (myConfig.cMuteIcon); myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath); g_free (cUserImagePath); } else { g_string_printf (sImagePath, "%s/mute.svg", MY_APPLET_SHARE_DATA_DIR); myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (sImagePath->str); } g_string_free (sImagePath, TRUE); }
void cd_clock_load_back_and_fore_ground (GldiModuleInstance *myApplet) { int iWidth, iHeight; CD_APPLET_GET_MY_ICON_EXTENT (&iWidth, &iHeight); //\_______________ On construit les surfaces d'arriere-plan et d'avant-plan une bonne fois pour toutes. if (myConfig.bOldStyle) { myData.pBackgroundSurface = cd_clock_create_bg_surface (myApplet, iWidth, iHeight, KIND_BACKGROUND); myData.pForegroundSurface = cd_clock_create_bg_surface (myApplet, iWidth, iHeight, KIND_FOREGROUND); } else if (myConfig.cNumericBackgroundImage != NULL) { myData.pNumericBgSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (myConfig.cNumericBackgroundImage); } }