~ubuntu-branches/ubuntu/utopic/cairo-dock/utopic

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-draw.c

  • Committer: Matthieu Baerts
  • Date: 2012-08-18 12:02:27 UTC
  • mto: This revision was merged to the branch mainline in revision 30.
  • Revision ID: matttbe@gmail.com-20120818120227-egczdficyxkeitzf
Tags: upstream-3.0.99.beta1
ImportĀ upstreamĀ versionĀ 3.0.99.beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
555
555
        cairo_restore (pCairoContext);  // retour juste apres la translation (fDrawX, fDrawY).
556
556
        
557
557
        //\_____________________ On dessine les etiquettes, avec un alpha proportionnel au facteur d'echelle de leur icone.
558
 
        if (bUseText && icon->pTextBuffer != NULL && icon->iHideLabel == 0
 
558
        if (bUseText && icon->label.pSurface != NULL && icon->iHideLabel == 0
559
559
        && (icon->bPointed || (icon->fScale > 1.01 && ! myIconsParam.bLabelForPointedIconOnly)))  // 1.01 car sin(pi) = 1+epsilon :-/  //  && icon->iAnimationState < CAIRO_DOCK_STATE_CLICKED
560
560
        {
561
561
                cairo_save (pCairoContext);
572
572
                        ///fMagnitude *= (fMagnitude * myIconsParam.fLabelAlphaThreshold + 1) / (myIconsParam.fLabelAlphaThreshold + 1);
573
573
                }
574
574
                
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));
581
581
                else
582
582
                        cairo_translate (pCairoContext, floor (icon->fDrawY), floor (icon->fDrawX + icon->fGlideOffset * icon->fWidth * icon->fScale * (icon->fGlideOffset < 0 ? fGlideScale : 1)));
583
583
                
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;
589
589
                
590
590
                if (icon->fOrientation != 0 && ! myIconsParam.bTextAlwaysHorizontal)
591
591
                        cairo_rotate (pCairoContext, icon->fOrientation);
592
592
                
593
593
                if (bIsHorizontal)
594
594
                {
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);
599
601
                }
600
602
                else if (myIconsParam.bTextAlwaysHorizontal)  // horizontal label on a vertical dock -> draw them next to the icon, vertically centered (like the Parabolic view)
601
603
                {
 
604
                        if (icon->pSubDock && gldi_container_is_visible (CAIRO_CONTAINER (icon->pSubDock)))  // in vertical mode 
 
605
                        {
 
606
                                fMagnitude /= 3;
 
607
                        }
602
608
                        const int pad = 3;
603
 
                        cairo_set_source_surface (pCairoContext,
 
609
                        /*cairo_set_source_surface (pCairoContext,
604
610
                                icon->pTextBuffer,
605
611
                                bDirectionUp ? 
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)))
610
 
                        {
611
 
                                fMagnitude /= 3;
612
 
                        }
 
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,
 
616
                                bDirectionUp ? 
 
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),
 
620
                                fMagnitude);
613
621
                }
614
622
                else
615
623
                {
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),
 
632
                                fMagnitude);
621
633
                }
622
634
                
623
 
                if (fMagnitude > .1)
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).
626
638
        }
627
639
        
628
640
        //\_____________________ On dessine les infos additionnelles.
629
 
        if (icon->pQuickInfoBuffer != NULL)
 
641
        /**if (icon->pQuickInfoBuffer != NULL)
630
642
        {
631
643
                double fMaxScale = cairo_dock_get_icon_max_scale (icon);
632
644
                cairo_translate (pCairoContext,
645
657
                        cairo_paint (pCairoContext);
646
658
                else
647
659
                        cairo_paint_with_alpha (pCairoContext, icon->fAlpha);
648
 
        }
649
 
        
 
660
        }*/
650
661
        cairo_dock_draw_icon_overlays_cairo (icon, fRatio, pCairoContext);
651
662
}
652
663
 
678
689
                }
679
690
        }
680
691
        
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)
683
694
        {
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)
691
702
                {
692
703
                        cairo_rotate (pCairoContext, icon->fOrientation);
693
704
                }
694
 
                cairo_set_source_surface (pCairoContext,
 
705
                /**cairo_set_source_surface (pCairoContext,
695
706
                        icon->pTextBuffer,
696
707
                        fOffsetX,
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).
700
713
        }
701
714
        
703
716
        ///     _cairo_dock_draw_appli_indicator (icon, pCairoContext, TRUE, 1., TRUE);
704
717
        
705
718
        //\_____________________ On dessine les infos additionnelles.
706
 
        if (icon->pQuickInfoBuffer != NULL)
 
719
        /**if (icon->pQuickInfoBuffer != NULL)
707
720
        {
708
721
                cairo_translate (pCairoContext,
709
722
                        (- icon->iQuickInfoWidth + icon->fWidth) / 2 * icon->fScale,
718
731
                        0,
719
732
                        0);
720
733
                cairo_paint (pCairoContext);
721
 
        }
 
734
        }*/
 
735
        cairo_dock_draw_icon_overlays_cairo (icon, pContainer->fRatio, pCairoContext);
722
736
}
723
737
 
724
738