572
572
///fMagnitude *= (fMagnitude * myIconsParam.fLabelAlphaThreshold + 1) / (myIconsParam.fLabelAlphaThreshold + 1);
575
//int iLabelSize = icon->iTextHeight;
575
//int iLabelSize = icon->label.iHeight;
576
576
int iLabelSize = myIconsParam.iLabelSize;
577
//g_print ("%d / %d\n", icon->iTextHeight, myIconsParam.iLabelSize),
577
//g_print ("%d / %d\n", icon->label.iHeight, myIconsParam.iLabelSize),
578
578
cairo_identity_matrix (pCairoContext); // on positionne les etiquettes sur un pixels entier, sinon ca floute.
579
579
if (bIsHorizontal)
580
580
cairo_translate (pCairoContext, floor (icon->fDrawX + icon->fGlideOffset * icon->fWidth * icon->fScale * (icon->fGlideOffset < 0 ? fGlideScale : 1)), floor (icon->fDrawY));
582
582
cairo_translate (pCairoContext, floor (icon->fDrawY), floor (icon->fDrawX + icon->fGlideOffset * icon->fWidth * icon->fScale * (icon->fGlideOffset < 0 ? fGlideScale : 1)));
584
double fOffsetX = (icon->fWidth * icon->fScale - icon->iTextWidth) / 2;
584
double fOffsetX = (icon->fWidth * icon->fScale - icon->label.iWidth) / 2;
585
585
if (fOffsetX < - icon->fDrawX) // l'etiquette deborde a gauche.
586
586
fOffsetX = - icon->fDrawX;
587
else if (icon->fDrawX + fOffsetX + icon->iTextWidth > iWidth) // l'etiquette deborde a droite.
588
fOffsetX = iWidth - icon->iTextWidth - icon->fDrawX;
587
else if (icon->fDrawX + fOffsetX + icon->label.iWidth > iWidth) // l'etiquette deborde a droite.
588
fOffsetX = iWidth - icon->label.iWidth - icon->fDrawX;
590
590
if (icon->fOrientation != 0 && ! myIconsParam.bTextAlwaysHorizontal)
591
591
cairo_rotate (pCairoContext, icon->fOrientation);
593
593
if (bIsHorizontal)
595
cairo_set_source_surface (pCairoContext,
595
/**cairo_set_source_surface (pCairoContext,
596
596
icon->pTextBuffer,
597
597
floor (fOffsetX),
598
floor (bDirectionUp ? -iLabelSize : icon->fHeight * icon->fScale));
598
floor (bDirectionUp ? -iLabelSize : icon->fHeight * icon->fScale));*/
599
cairo_dock_apply_image_buffer_surface_with_offset (&icon->label, pCairoContext,
600
floor (fOffsetX), floor (bDirectionUp ? -iLabelSize : icon->fHeight * icon->fScale), fMagnitude);
600
602
else if (myIconsParam.bTextAlwaysHorizontal) // horizontal label on a vertical dock -> draw them next to the icon, vertically centered (like the Parabolic view)
604
if (icon->pSubDock && gldi_container_is_visible (CAIRO_CONTAINER (icon->pSubDock))) // in vertical mode
602
608
const int pad = 3;
603
cairo_set_source_surface (pCairoContext,
609
/*cairo_set_source_surface (pCairoContext,
604
610
icon->pTextBuffer,
606
floor (0 - (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) - pad - icon->iTextWidth):
607
floor (0 + icon->fHeight * icon->fScale + (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) + pad),
608
floor (0 + icon->fWidth * icon->fScale/2 - icon->iTextHeight/2));
609
if (icon->pSubDock && gldi_container_is_visible (CAIRO_CONTAINER (icon->pSubDock)))
612
floor (0 - (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) - pad - icon->label.iWidth):
613
floor (0 + icon->fHeight * icon->fScale + (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) + pad),
614
floor (0 + icon->fWidth * icon->fScale/2 - icon->label.iHeight/2));*/
615
cairo_dock_apply_image_buffer_surface_with_offset (&icon->label, pCairoContext,
617
floor (0 - (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) - pad - icon->label.iWidth):
618
floor (0 + icon->fHeight * icon->fScale + (myDocksParam.iDockLineWidth + myDocksParam.iFrameMargin) * (1 - pDock->fMagnitudeMax) + pad),
619
floor (0 + icon->fWidth * icon->fScale/2 - icon->label.iHeight/2),
616
624
cairo_rotate (pCairoContext, bDirectionUp ? - G_PI/2 : G_PI/2);
617
cairo_set_source_surface (pCairoContext,
625
/**cairo_set_source_surface (pCairoContext,
618
626
icon->pTextBuffer,
619
627
floor (bDirectionUp ? fOffsetX - icon->fWidth * icon->fScale : fOffsetX),
620
-floor (bDirectionUp ? iLabelSize : icon->fHeight * icon->fScale + iLabelSize));
628
-floor (bDirectionUp ? iLabelSize : icon->fHeight * icon->fScale + iLabelSize));*/
629
cairo_dock_apply_image_buffer_surface_with_offset (&icon->label, pCairoContext,
630
floor (bDirectionUp ? fOffsetX - icon->fWidth * icon->fScale : fOffsetX),
631
-floor (bDirectionUp ? iLabelSize : icon->fHeight * icon->fScale + iLabelSize),
624
cairo_paint_with_alpha (pCairoContext, fMagnitude);
635
/**if (fMagnitude > .1)
636
cairo_paint_with_alpha (pCairoContext, fMagnitude);*/
625
637
cairo_restore (pCairoContext); // retour juste apres la translation (fDrawX, fDrawY).
628
640
//\_____________________ On dessine les infos additionnelles.
629
if (icon->pQuickInfoBuffer != NULL)
641
/**if (icon->pQuickInfoBuffer != NULL)
631
643
double fMaxScale = cairo_dock_get_icon_max_scale (icon);
632
644
cairo_translate (pCairoContext,
681
//\_____________________ On dessine les etiquettes, avec un alpha proportionnel au facteur d'echelle de leur icone.
682
if (bUseText && icon->pTextBuffer != NULL)
692
//\_____________________ On dessine les etiquettes.
693
if (bUseText && icon->label.pSurface != NULL)
684
695
cairo_save (pCairoContext);
685
double fOffsetX = (icon->fWidthFactor * icon->fWidth * icon->fScale - icon->iTextWidth) / 2;
696
double fOffsetX = (icon->fWidthFactor * icon->fWidth * icon->fScale - icon->label.iWidth) / 2;
686
697
if (fOffsetX < - icon->fDrawX)
687
698
fOffsetX = - icon->fDrawX;
688
else if (icon->fDrawX + fOffsetX + icon->iTextWidth > pContainer->iWidth)
689
fOffsetX = pContainer->iWidth - icon->iTextWidth - icon->fDrawX;
699
else if (icon->fDrawX + fOffsetX + icon->label.iWidth > pContainer->iWidth)
700
fOffsetX = pContainer->iWidth - icon->label.iWidth - icon->fDrawX;
690
701
if (icon->fOrientation != 0)
692
703
cairo_rotate (pCairoContext, icon->fOrientation);
694
cairo_set_source_surface (pCairoContext,
705
/**cairo_set_source_surface (pCairoContext,
695
706
icon->pTextBuffer,
697
708
-myIconsParam.iLabelSize);
698
cairo_paint (pCairoContext);
709
cairo_paint (pCairoContext);*/
710
cairo_dock_apply_image_buffer_surface_with_offset (&icon->label, pCairoContext,
711
fOffsetX, -myIconsParam.iLabelSize, 1.);
699
712
cairo_restore (pCairoContext); // retour juste apres la translation (fDrawX, fDrawY).