CDMediaplayerParameters *rendering_configure_mediaplayer (CairoDesklet *pDesklet, cairo_t *pSourceContext, gpointer *pConfig) { cd_debug (""); CDMediaplayerParameters *pMediaplayer = g_new0 (CDMediaplayerParameters, 1); if (pConfig != NULL) // dessin de l'artiste et du titre sur le coté du desklet. { pMediaplayer->cArtist = pConfig[0]; pMediaplayer->cTitle = pConfig[1]; if (pMediaplayer->cArtist != NULL) pMediaplayer->pArtistSurface = cairo_dock_create_surface_from_text (pMediaplayer->cArtist, pSourceContext, &g_iconTextDescription, cairo_dock_get_max_scale (pDesklet), &pMediaplayer->fArtistWidth, &pMediaplayer->fArtistHeight, &pMediaplayer->fArtistXOffset, &pMediaplayer->fArtistYOffset); if (pMediaplayer->cTitle != NULL) pMediaplayer->pTitleSurface = cairo_dock_create_surface_from_text (pMediaplayer->cTitle, pSourceContext, &g_iconTextDescription, cairo_dock_get_max_scale (pDesklet), &pMediaplayer->fTitleWidth, &pMediaplayer->fTitleHeight, &pMediaplayer->fTitleXOffset, &pMediaplayer->fTitleYOffset); pMediaplayer->bControlButton = GPOINTER_TO_INT (pConfig[2]); } return pMediaplayer; }
void rendering_update_text (CairoDialog *pDialog, gpointer *pNewData) { CDTextParameters *pText = (CDTextParameters *) pDialog->pRendererData; if (pText == NULL) return ; gchar *cNewText = (gchar *) pNewData; int iTextWidth, iTextHeight; double fTextXOffset, fTextYOffset; cairo_surface_destroy (pText->pTextSurface); pText->pTextSurface = NULL; cairo_t *pCairoContext = cairo_dock_create_context_from_window (CAIRO_CONTAINER (pDialog)); g_return_if_fail (cairo_status (pCairoContext) == CAIRO_STATUS_SUCCESS); pText->pTextSurface = cairo_dock_create_surface_from_text (cNewText, pCairoContext, &pText->textDescription, 1., &iTextWidth, &iTextHeight, &fTextXOffset, &fTextYOffset); cairo_destroy (pCairoContext); if (iTextWidth > pDialog->iInteractiveWidth || iTextHeight > pDialog->iInteractiveHeight) gtk_widget_set_size_request (pDialog->pInteractiveWidget, iTextWidth, iTextHeight); }
CDTextParameters *rendering_configure_text (CairoDialog *pDialog, cairo_t *pSourceContext, gpointer *pConfig) { cd_debug (""); CDTextParameters *pText = g_new0 (CDTextParameters, 1); gchar *cInitialText = NULL; if (pConfig != NULL) { cairo_dock_copy_label_description (&pText->textDescription, (CairoDockLabelDescription *) pConfig[0]); cInitialText = (gchar *) pConfig[1]; } int iTextWidth, iTextHeight; double fTextXOffset, fTextYOffset; if (cInitialText != NULL) { pText->pTextSurface = cairo_dock_create_surface_from_text (cInitialText, pSourceContext, &pText->textDescription, 1., &iTextWidth, &iTextHeight, &fTextXOffset, &fTextYOffset); } return pText; }
void cd_do_numberize_icons (CairoDock *pDock) { int n = 0; int iWidth, iHeight; gchar number[2]; number[1] = '\0'; GldiTextDescription *pLabelDesc = gldi_text_description_duplicate (&myIconsParam.quickInfoTextDescription); int iSize = pLabelDesc->iSize; cairo_surface_t *pSurface; Icon *pIcon; GList *ic; for (ic = pDock->icons; ic != NULL && n < 10; ic = ic->next) { pIcon = ic->data; if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pIcon)) { if (n == 9) // 10th icon is "0" number[0] = '0'; else number[0] = '1' + n; // the first icon will take the "1" number. pLabelDesc->iSize *= cairo_dock_get_icon_max_scale (pIcon); pSurface = cairo_dock_create_surface_from_text (number, pLabelDesc, &iWidth, &iHeight); pLabelDesc->iSize = iSize; CairoOverlay *pOverlay = cairo_dock_add_overlay_from_surface (pIcon, pSurface, iWidth, iHeight, CAIRO_OVERLAY_UPPER_RIGHT, myApplet); if (pOverlay) cairo_dock_set_overlay_scale (pOverlay, 0); // don't scale with the icon. n ++; } } gldi_text_description_free (pLabelDesc); }
void rendering_update_text_for_mediaplayer (CairoDesklet *pDesklet, gpointer *pNewData) { CDMediaplayerParameters *pMediaplayer = (CDMediaplayerParameters *) pDesklet->pRendererData; if (pMediaplayer == NULL) return; //On reset tout! if (pMediaplayer->pArtistSurface != NULL) { cairo_surface_destroy (pMediaplayer->pArtistSurface); pMediaplayer->pArtistSurface = NULL; } if (pMediaplayer->pTitleSurface != NULL) { cairo_surface_destroy (pMediaplayer->pTitleSurface); pMediaplayer->pTitleSurface = NULL; } //On réattribue les textes pMediaplayer->cArtist = pNewData[0]; pMediaplayer->cTitle = pNewData[1]; cairo_t *pCairoContext = cairo_dock_create_context_from_window (CAIRO_CONTAINER (pDesklet)); if (pMediaplayer->cArtist != NULL) pMediaplayer->pArtistSurface = cairo_dock_create_surface_from_text (pMediaplayer->cArtist, pCairoContext, &g_iconTextDescription, cairo_dock_get_max_scale (pDesklet), &pMediaplayer->fArtistWidth, &pMediaplayer->fArtistHeight, &pMediaplayer->fArtistXOffset, &pMediaplayer->fArtistYOffset); if (pMediaplayer->cTitle != NULL) pMediaplayer->pTitleSurface = cairo_dock_create_surface_from_text (pMediaplayer->cTitle, pCairoContext, &g_iconTextDescription, cairo_dock_get_max_scale (pDesklet), &pMediaplayer->fTitleWidth, &pMediaplayer->fTitleHeight, &pMediaplayer->fTitleXOffset, &pMediaplayer->fTitleYOffset); cairo_destroy (pCairoContext); cd_debug (""); }
static cairo_surface_t *_cairo_dock_create_dialog_text_surface (const gchar *cText, gboolean bUseMarkup, int *iTextWidth, int *iTextHeight) { if (cText == NULL) return NULL; myDialogsParam.dialogTextDescription.bUseMarkup = bUseMarkup; // slight optimization, rather than duplicating the TextDescription each time. cairo_surface_t *pSurface = cairo_dock_create_surface_from_text (cText, &myDialogsParam.dialogTextDescription, iTextWidth, iTextHeight); myDialogsParam.dialogTextDescription.bUseMarkup = FALSE; // by default return pSurface; }
void cairo_dock_load_icon_text (Icon *icon) { cairo_dock_unload_image_buffer (&icon->label); if (icon->cName == NULL || (myIconsParam.iconTextDescription.iSize == 0)) return ; gchar *cTruncatedName = NULL; if (CAIRO_DOCK_IS_APPLI (icon) && myTaskbarParam.iAppliMaxNameLength > 0) { cTruncatedName = cairo_dock_cut_string (icon->cName, myTaskbarParam.iAppliMaxNameLength); } int iWidth, iHeight; cairo_surface_t *pSurface = cairo_dock_create_surface_from_text ((cTruncatedName != NULL ? cTruncatedName : icon->cName), &myIconsParam.iconTextDescription, &iWidth, &iHeight); cairo_dock_load_image_buffer_from_surface (&icon->label, pSurface, iWidth, iHeight); g_free (cTruncatedName); }
static void _cairo_dock_finish_load_data_renderer (CairoDataRenderer *pRenderer, gboolean bLoadTextures, Icon *pIcon) { int iNbValues = cairo_data_renderer_get_nb_values (pRenderer); //\___________________ On charge les emblemes si l'implementation les a valides. if (pRenderer->pEmblems != NULL) { CairoDataRendererEmblem *pEmblem; cairo_surface_t *pSurface; int i; for (i = 0; i < iNbValues; i ++) { pEmblem = &pRenderer->pEmblems[i]; if (pEmblem->pSurface != NULL) { cairo_surface_destroy (pEmblem->pSurface); pEmblem->pSurface = NULL; } if (pEmblem->iTexture != 0) { _cairo_dock_delete_texture (pEmblem->iTexture); pEmblem->iTexture = 0; } if (pEmblem->param.fWidth != 0 && pEmblem->param.fHeight != 0 && pEmblem->cImagePath != NULL) { pSurface = cairo_dock_create_surface_from_image_simple (pEmblem->cImagePath, pEmblem->param.fWidth * pRenderer->iWidth, pEmblem->param.fHeight * pRenderer->iHeight); if (bLoadTextures) { pEmblem->iTexture = cairo_dock_create_texture_from_surface (pSurface); cairo_surface_destroy (pSurface); } else pEmblem->pSurface = pSurface; } } } //\___________________ On charge les labels si l'implementation les a valides. if (pRenderer->pLabels != NULL) { GldiTextDescription textDescription; gldi_text_description_copy (&textDescription, &myIconsParam.quickInfoTextDescription); CairoDataRendererText *pLabel; cairo_surface_t *pSurface; int i; for (i = 0; i < iNbValues; i ++) { pLabel = &pRenderer->pLabels[i]; if (pLabel->pSurface != NULL) { cairo_surface_destroy (pLabel->pSurface); pLabel->pSurface = NULL; } if (pLabel->iTexture != 0) { _cairo_dock_delete_texture (pLabel->iTexture); pLabel->iTexture = 0; } if (pLabel->param.fWidth != 0 && pLabel->param.fHeight != 0 && pLabel->cText != NULL) { textDescription.bNoDecorations = TRUE; textDescription.bUseDefaultColors = FALSE; textDescription.iMargin = 0; textDescription.bOutlined = TRUE; /// tester avec et sans ... textDescription.fColorStart.rgba.red = pLabel->param.pColor[0]; textDescription.fColorStart.rgba.green = pLabel->param.pColor[1]; textDescription.fColorStart.rgba.blue = pLabel->param.pColor[2]; textDescription.fColorStart.rgba.alpha = 1.; pSurface = cairo_dock_create_surface_from_text (pLabel->cText, &textDescription, &pLabel->iTextWidth, &pLabel->iTextHeight); if (bLoadTextures) { pLabel->iTexture = cairo_dock_create_texture_from_surface (pSurface); cairo_surface_destroy (pSurface); } else pLabel->pSurface = pSurface; } } } //\___________________ On regarde si le texte dessine sur l'icone sera suffisamment lisible. if (pRenderer->pValuesText != NULL) { CairoDataRendererTextParam *pText = &pRenderer->pValuesText[0]; //g_print ("+++++++pText->fWidth * pRenderer->iWidth : %.2f\n", pText->fWidth * pRenderer->iWidth); pRenderer->bCanRenderValueAsText = (pText->fWidth * pRenderer->iWidth >= CD_MIN_TEXT_WITH); } if (pRenderer->bCanRenderValueAsText && pRenderer->bWriteValues) gldi_icon_set_quick_info (pIcon, NULL); //\___________________ Build an overlay if the renderer will use some. if (pRenderer->bUseOverlay) { //g_print ("+ overlay %dx%d\n", pRenderer->iWidth, pRenderer->iHeight); cairo_surface_t *pSurface = cairo_dock_create_blank_surface (pRenderer->iWidth, pRenderer->iHeight); pRenderer->pOverlay = cairo_dock_add_overlay_from_surface (pIcon, pSurface, pRenderer->iWidth, pRenderer->iHeight, pRenderer->iOverlayPosition, (gpointer)"data-renderer"); // this string is constant; any previous overlay will be removed. cairo_dock_set_overlay_scale (pRenderer->pOverlay, 0); // keep the original size of the image } }