~ubuntu-branches/ubuntu/quantal/cairo-dock-plug-ins/quantal-201208191523

« back to all changes in this revision

Viewing changes to slider/src/applet-transitions.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2011-04-20 20:46:51 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20110420204651-ftnpzesj6uc7qeul
Tags: 2.3.0~1-0ubuntu1
* New Upstream Version (LP: #723995)
* Upstream short ChangeLog (since 2.3.0~0rc1):
 - Updated translations
 - Updated the integration of the new versions of kwin and compiz
    (Switcher, ShowDesktop, etc.)
 - Removed a lot of useless g_print
 - Updated a few plug-ins to fit with the new version of the API (gldit)
 - Fixed a few bugs
 - Updated MeMenu, MessagingMenu and Status-Notifier to works
    with the latest version of dbusmenu, etc.
* Switch to dpkg-source 3.0 (quilt) format
* debian/cairo-dock-plug-ins.install:
 - Added new files (interfaces for python, ruby, vala and mono)
* debian/control:
 - Added new dependences for new applets (sensors and zeitgeist)
    and new interfaces (python, valac, ruby and mono)
 - Updated the version of cairo-dock build-dependences
* debian/rules:
 - Added a new CMake flag to install python interface in debian/tmp
* Updated debian/watch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
 
1
        /**
2
2
* This file is a part of the Cairo-Dock project
3
3
*
4
4
* Copyright : (C) see the 'copyright' file.
23
23
 
24
24
#include "applet-transitions.h"
25
25
 
26
 
#define _cd_slider_erase_surface(myApplet) do { \
27
 
        cairo_set_source_rgba (myDrawContext, 0., 0., 0., 0.);\
28
 
        cairo_set_operator (myDrawContext, CAIRO_OPERATOR_SOURCE);\
29
 
        cairo_paint (myDrawContext);\
30
 
        cairo_set_operator (myDrawContext, CAIRO_OPERATOR_OVER); } while (0)
 
26
#define _cd_slider_erase_surface(myApplet) cairo_dock_erase_cairo_context (myDrawContext)
31
27
 
32
 
#define _cd_slider_add_background_to_slide(myApplet, fX, fY, alpha, slide) do { \
 
28
/**#define _cd_slider_add_background_to_slide(myApplet, fX, fY, alpha, slide) do { \
33
29
        if (myConfig.pBackgroundColor[3] != 0) {\
34
30
        cairo_set_source_rgba (myDrawContext, myConfig.pBackgroundColor[0], myConfig.pBackgroundColor[1], myConfig.pBackgroundColor[2], alpha * myConfig.pBackgroundColor[3]);\
35
31
        cairo_rectangle (myDrawContext, fX, fY, slide.fImgW, slide.fImgH);\
36
32
        cairo_fill (myDrawContext); } } while (0)
37
 
#define _cd_slider_add_background_to_current_slide(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide (myApplet, fX, fY, alpha, myData.slideArea)
38
 
#define _cd_slider_add_background_to_prev_slide(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide (myApplet, fX, fY, alpha, myData.prevSlideArea)
39
 
 
40
33
#define _cd_slider_add_background_to_slide_opengl(myApplet, fX, fY, alpha, slide) do { \
41
34
        glColor4f (myConfig.pBackgroundColor[0], myConfig.pBackgroundColor[1], myConfig.pBackgroundColor[2], alpha * myConfig.pBackgroundColor[3]);\
42
35
        glPolygonMode (GL_FRONT, GL_FILL);\
48
41
                glVertex3f(fX + slide.fImgW/2, fY - slide.fImgH/2, 0.);\
49
42
                glVertex3f(fX + slide.fImgW/2, fY + slide.fImgH/2, 0.);\
50
43
                glVertex3f(fX - slide.fImgW/2, fY + slide.fImgH/2, 0.);\
51
 
                glEnd(); } } while (0)
52
 
#define _cd_slider_add_background_to_current_slide_opengl(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide_opengl (myApplet, fX, fY, alpha, myData.slideArea)
53
 
#define _cd_slider_add_background_to_prev_slide_opengl(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide_opengl (myApplet, fX, fY, alpha, myData.prevSlideArea)
54
 
 
 
44
                glEnd(); } } while (0)*/
 
45
 
 
46
static void _cd_slider_add_background_to_slide (CairoDockModuleInstance *myApplet, double fX, double fY, double alpha, SliderImageArea *slide)
 
47
{
 
48
        if (myConfig.pBackgroundColor[3] != 0)
 
49
        {
 
50
                cairo_set_source_rgba (myDrawContext, myConfig.pBackgroundColor[0], myConfig.pBackgroundColor[1], myConfig.pBackgroundColor[2], alpha * myConfig.pBackgroundColor[3]);
 
51
                if (myConfig.iBackgroundType == 2)
 
52
                {
 
53
                        int iLineWidth = _get_frame_linewidth (myApplet);
 
54
                        double fRadius = MIN (5, .25*iLineWidth);
 
55
                        cairo_save (myDrawContext);
 
56
                        cairo_translate (myDrawContext, fX - .5*iLineWidth, fY);
 
57
                        cairo_dock_draw_rounded_rectangle (myDrawContext, fRadius, iLineWidth, slide->fImgW - (2*fRadius), slide->fImgH - iLineWidth);
 
58
                        cairo_set_line_width (myDrawContext, iLineWidth);
 
59
                        cairo_stroke (myDrawContext);
 
60
                        cairo_restore (myDrawContext);
 
61
                }
 
62
                else
 
63
                {
 
64
                        cairo_rectangle (myDrawContext, fX, fY, slide->fImgW, slide->fImgH);
 
65
                        cairo_fill (myDrawContext);
 
66
                }
 
67
        }
 
68
}
 
69
#define _cd_slider_add_background_to_current_slide(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide (myApplet, fX, fY, alpha, &myData.slideArea)
 
70
#define _cd_slider_add_background_to_prev_slide(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide (myApplet, fX, fY, alpha, &myData.prevSlideArea)
 
71
 
 
72
static void _cd_slider_add_background_to_slide_opengl(CairoDockModuleInstance *myApplet, double fX, double fY, double alpha, SliderImageArea *slide)
 
73
{
 
74
        if (myConfig.pBackgroundColor[3] != 0)
 
75
        {
 
76
                glDisable (GL_TEXTURE_2D);
 
77
                glColor4f (myConfig.pBackgroundColor[0], myConfig.pBackgroundColor[1], myConfig.pBackgroundColor[2], alpha * myConfig.pBackgroundColor[3]);
 
78
                if (myConfig.iBackgroundType == 2)
 
79
                {
 
80
                        int iLineWidth = _get_frame_linewidth (myApplet);
 
81
                        double fRadius = 1.33 * MIN (5, .25*iLineWidth);
 
82
                        glPushMatrix ();
 
83
                        glTranslatef (fX, fY, 0.);  // centre du rectangle.
 
84
                        glBlendFunc (GL_ONE, GL_ZERO);
 
85
                        cairo_dock_draw_rounded_rectangle_opengl (slide->fImgW - (2*fRadius) + iLineWidth, slide->fImgH + iLineWidth, fRadius, 0, NULL);  // we fill the rectangle, because the stroke function in opengl does not handle wide lines very well.
 
86
                        glPopMatrix ();
 
87
                        glPolygonMode (GL_FRONT, GL_FILL);
 
88
                }
 
89
                else
 
90
                {
 
91
                        glPolygonMode (GL_FRONT, GL_FILL);
 
92
                        glEnable (GL_BLEND);
 
93
                        glBlendFunc (GL_ONE, GL_ZERO);
 
94
                        if (myConfig.pBackgroundColor[3] != 0)
 
95
                        {
 
96
                                glBegin(GL_QUADS);
 
97
                                glVertex3f(fX - slide->fImgW/2, fY - slide->fImgH/2, 0.);
 
98
                                glVertex3f(fX + slide->fImgW/2, fY - slide->fImgH/2, 0.);
 
99
                                glVertex3f(fX + slide->fImgW/2, fY + slide->fImgH/2, 0.);
 
100
                                glVertex3f(fX - slide->fImgW/2, fY + slide->fImgH/2, 0.);
 
101
                                glEnd();
 
102
                        }
 
103
                }
 
104
        }
 
105
}
 
106
#define _cd_slider_add_background_to_current_slide_opengl(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide_opengl (myApplet, fX, fY, alpha, &myData.slideArea)
 
107
#define _cd_slider_add_background_to_prev_slide_opengl(myApplet, fX, fY, alpha) _cd_slider_add_background_to_slide_opengl (myApplet, fX, fY, alpha, &myData.prevSlideArea)
55
108
 
56
109
void cd_slider_draw_default (CairoDockModuleInstance *myApplet)
57
110
{
157
210
                
158
211
                glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
159
212
                glEnable (GL_TEXTURE_2D);
 
213
                glEnable (GL_BLEND);
160
214
                glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
161
215
                
162
216
                //Image
164
218
                cairo_dock_apply_texture_at_size (myData.iTexture, myData.slideArea.fImgW, myData.slideArea.fImgH);
165
219
                
166
220
                //Masque
 
221
                glDisable (GL_TEXTURE_2D);
167
222
                glColor4f (1., 1., 1., myData.fAnimAlpha);
168
223
                glBegin(GL_QUADS);
169
 
                glDisable (GL_TEXTURE_2D);
170
 
                glVertex3f(-.5,  .5, 0.);
171
 
                glVertex3f( .5,  .5, 0.);
172
 
                glVertex3f( .5, -.5, 0.);
173
 
                glVertex3f(-.5, -.5, 0.);
 
224
                glVertex3f(-.5*myData.slideArea.fImgW,  .5*myData.slideArea.fImgH, 0.);
 
225
                glVertex3f( .5*myData.slideArea.fImgW,  .5*myData.slideArea.fImgH, 0.);
 
226
                glVertex3f( .5*myData.slideArea.fImgW, -.5*myData.slideArea.fImgH, 0.);
 
227
                glVertex3f(-.5*myData.slideArea.fImgW, -.5*myData.slideArea.fImgH, 0.);
174
228
                glEnd();
175
229
                
176
230
                glDisable (GL_BLEND);
212
266
        {
213
267
                CD_APPLET_START_DRAWING_MY_ICON_OR_RETURN (FALSE);
214
268
                
215
 
                if (myData.iAnimCNT < myConfig.iNbAnimationStep)  // image precedente en train de disparaitre
 
269
                if (myData.iAnimCNT < myConfig.iNbAnimationStep && myData.iPrevTexture != 0)  // image precedente en train de disparaitre
216
270
                {
217
271
                        //On empeche la transparence
218
272
                        _cd_slider_add_background_to_prev_slide_opengl (myApplet, 0., 0., myData.fAnimAlpha);
421
475
        {
422
476
                CD_APPLET_START_DRAWING_MY_ICON_OR_RETURN (FALSE);
423
477
                
424
 
                _cd_slider_add_background_to_current_slide_opengl (myApplet, 0., 0., myData.fAnimAlpha);
 
478
                glPushMatrix ();
 
479
                glScalef (myData.fAnimAlpha, myData.fAnimAlpha, 1.);
 
480
                _cd_slider_add_background_to_current_slide_opengl (myApplet, 0., 0., 1.);
 
481
                glPopMatrix ();
425
482
                
426
483
                glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
427
484
                glEnable (GL_TEXTURE_2D);
465
522
        {
466
523
                CD_APPLET_START_DRAWING_MY_ICON_OR_RETURN (FALSE);
467
524
                
468
 
                _cd_slider_add_background_to_current_slide_opengl (myApplet, 0., 0., myData.fAnimAlpha);
 
525
                glPushMatrix ();
 
526
                glScalef (myData.fAnimAlpha, myData.fAnimAlpha, 1.);
 
527
                _cd_slider_add_background_to_current_slide_opengl (myApplet, 0., 0., 1.);
 
528
                glPopMatrix ();
469
529
                
470
530
                glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
471
531
                glEnable (GL_TEXTURE_2D);