24
24
#include "applet-transitions.h"
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)
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)
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)
44
glEnd(); } } while (0)*/
46
static void _cd_slider_add_background_to_slide (CairoDockModuleInstance *myApplet, double fX, double fY, double alpha, SliderImageArea *slide)
48
if (myConfig.pBackgroundColor[3] != 0)
50
cairo_set_source_rgba (myDrawContext, myConfig.pBackgroundColor[0], myConfig.pBackgroundColor[1], myConfig.pBackgroundColor[2], alpha * myConfig.pBackgroundColor[3]);
51
if (myConfig.iBackgroundType == 2)
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);
64
cairo_rectangle (myDrawContext, fX, fY, slide->fImgW, slide->fImgH);
65
cairo_fill (myDrawContext);
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)
72
static void _cd_slider_add_background_to_slide_opengl(CairoDockModuleInstance *myApplet, double fX, double fY, double alpha, SliderImageArea *slide)
74
if (myConfig.pBackgroundColor[3] != 0)
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)
80
int iLineWidth = _get_frame_linewidth (myApplet);
81
double fRadius = 1.33 * MIN (5, .25*iLineWidth);
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.
87
glPolygonMode (GL_FRONT, GL_FILL);
91
glPolygonMode (GL_FRONT, GL_FILL);
93
glBlendFunc (GL_ONE, GL_ZERO);
94
if (myConfig.pBackgroundColor[3] != 0)
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.);
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)
56
109
void cd_slider_draw_default (CairoDockModuleInstance *myApplet)
164
218
cairo_dock_apply_texture_at_size (myData.iTexture, myData.slideArea.fImgW, myData.slideArea.fImgH);
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.);
176
230
glDisable (GL_BLEND);