~cairo-dock-team/cairo-dock-plug-ins/3.0.x

« back to all changes in this revision

Viewing changes to dock-rendering/src/rendering-panel.c

  • Committer: fabounet
  • Date: 2010-05-27 16:55:02 UTC
  • Revision ID: fabounet03@gmail.com-20100527165502-22gb8xitlu1rfp5m
added the Indicator-applet framework

Show diffs side-by-side

added added

removed removed

Lines of Context:
193
193
        else
194
194
                cairo_new_path (pCairoContext);
195
195
        cairo_restore (pCairoContext);
196
 
 
 
196
        
 
197
        double x1, x2, dx, h = pDock->iDecorationsHeight;
 
198
        GList *ic;
 
199
        Icon *pIcon;
 
200
        for (ic = pDock->icons; ic != NULL; ic = ic->next)
 
201
        {
 
202
                pIcon = ic->data;
 
203
                if (CAIRO_DOCK_IS_SEPARATOR (pIcon))
 
204
                {
 
205
                        x1 = pIcon->fDrawX = pIcon->fX;
 
206
                        
 
207
                        pIcon = NULL;
 
208
                        for (ic = ic->next; ic != NULL; ic = ic->next)
 
209
                        {
 
210
                                pIcon = ic->data;
 
211
                                if (!CAIRO_DOCK_IS_SEPARATOR (pIcon))
 
212
                                        break;
 
213
                        }
 
214
                        if (ic != NULL)
 
215
                        {
 
216
                                pIcon = ic->data;
 
217
                                x2 = pIcon->fDrawX;
 
218
                        }
 
219
                        else
 
220
                                break;
 
221
                        
 
222
                        g_print ("separator from %.2f to %.2f\n", x1, x2);
 
223
                        dx = MIN (fRadius, (x2 - x1) / 2);
 
224
                        
 
225
                        cairo_move_to (pCairoContext, x1, 0.);
 
226
                        cairo_rel_curve_to (pCairoContext,
 
227
                                dx, 0.,
 
228
                                0., h,
 
229
                                dx, 0.);
 
230
                        cairo_rel_move_to (pCairoContext,
 
231
                                x2 - x1 - 2*dx, 0.);
 
232
                        cairo_rel_curve_to (pCairoContext,
 
233
                                dx, 0.,
 
234
                                0., -h,
 
235
                                dx, 0.);
 
236
                        cairo_close_path (pCairoContext);
 
237
                        
 
238
                        cairo_set_operator (pCairoContext, CAIRO_OPERATOR_DEST_OUT);
 
239
                        cairo_set_source_rgba (pCairoContext, 0.0, 0.0, 0.0, 1.0);
 
240
                        cairo_fill (pCairoContext);
 
241
                        
 
242
                        if (fLineWidth > 0)
 
243
                        {
 
244
                                cairo_move_to (pCairoContext, x1, 0.);
 
245
                                cairo_rel_curve_to (pCairoContext,
 
246
                                        dx, 0.,
 
247
                                        0., h,
 
248
                                        dx, 0.);
 
249
                                cairo_rel_move_to (pCairoContext,
 
250
                                        x2 - x1 - 2*dx, 0.);
 
251
                                cairo_rel_curve_to (pCairoContext,
 
252
                                        dx, 0.,
 
253
                                        0., -h,
 
254
                                        dx, 0.);
 
255
                                
 
256
                                cairo_set_operator (pCairoContext, CAIRO_OPERATOR_OVER);
 
257
                                cairo_set_line_width (pCairoContext, fLineWidth);
 
258
                                cairo_set_source_rgba (pCairoContext, myBackground.fLineColor[0], myBackground.fLineColor[1], myBackground.fLineColor[2], myBackground.fLineColor[3]);
 
259
                                cairo_stroke (pCairoContext);
 
260
                        }
 
261
                }
 
262
        }
 
263
        
197
264
        //\____________________ On dessine la ficelle qui les joint.
198
265
        if (myIcons.iStringLineWidth > 0)
199
266
                cairo_dock_draw_string (pCairoContext, pDock, myIcons.iStringLineWidth, FALSE, FALSE);
344
411
}
345
412
 
346
413
 
 
414
const int iNbCurveSteps = 20;
 
415
static void _draw_physical_separator (double x1, double x2, CairoDock *pDock)
 
416
{
 
417
        _cairo_dock_define_static_vertex_tab (2*(iNbCurveSteps+1) + 1);  // +1 pour boucler
 
418
        
 
419
        double fLineWidth = myBackground.iDockLineWidth;
 
420
        double fRadius = (pDock->iDecorationsHeight + fLineWidth - 2 * myBackground.iDockRadius > 0 ? myBackground.iDockRadius : (pDock->iDecorationsHeight + fLineWidth) / 2 - 1);
 
421
        double dx = MIN (fRadius, (x2 - x1) / 2);
 
422
        double h = pDock->iDecorationsHeight;
 
423
        
 
424
        int i;
 
425
        for (i = 0; i <= iNbCurveSteps; i ++)
 
426
        {
 
427
                t = 1.*i/NB_VERTEX_PER_ICON_PAIR;  // [0;1]
 
428
                _cairo_dock_set_vertex_xy (n,
 
429
                        Bezier (x1, x1 + dx,x1_,x1,t),
 
430
                        Bezier (y1, y0_,y1_,y1,t));
 
431
        }
 
432
        
 
433
        _cairo_dock_set_vertex_xy(_i, _x, _y)
 
434
}
347
435
 
348
436
static void cd_render_opengl (CairoDock *pDock)
349
437
{
404
492
                cairo_dock_draw_current_path_opengl (fLineWidth, myBackground.fLineColor, iNbVertex);
405
493
        glPopMatrix ();
406
494
        
 
495
        
 
496
        {
 
497
                glEnable (GL_BLEND);
 
498
                glBlendFunc (GL_ONE, GL_ZERO);
 
499
                glColor4f (0., 0., 0., 0.);
 
500
        }
 
501
        
407
502
        //\_____________ On dessine la ficelle.
408
503
        if (myIcons.iStringLineWidth > 0)
409
504
                cairo_dock_draw_string_opengl (pDock, myIcons.iStringLineWidth, FALSE, FALSE);