本文整理汇总了C++中cairo_rel_line_to函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_rel_line_to函数的具体用法?C++ cairo_rel_line_to怎么用?C++ cairo_rel_line_to使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_rel_line_to函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: draw_cross
static void
draw_cross (cairo_t *cr,
double cx,
double cy,
double size)
{
cairo_move_to (cr, cx, cy - size/2.0);
cairo_rel_line_to (cr, size, size);
cairo_move_to (cr, cx, cy + size/2.0);
cairo_rel_line_to (cr, size, -size);
cairo_set_source_rgba (cr, 0.6, 0.6, 0.6, GSD_OSD_WINDOW_FG_ALPHA / 2);
cairo_set_line_width (cr, 14);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
cairo_stroke_preserve (cr);
cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, GSD_OSD_WINDOW_FG_ALPHA);
cairo_set_line_width (cr, 10);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
cairo_stroke (cr);
}
开发者ID:ebroder,项目名称:gnome-settings-daemon,代码行数:22,代码来源:gsd-media-keys-window.c
示例2: pycairo_rel_line_to
static PyObject *
pycairo_rel_line_to (PycairoContext *o, PyObject *args)
{
double dx, dy;
if (!PyArg_ParseTuple (args, "dd:Context.rel_line_to", &dx, &dy))
return NULL;
cairo_rel_line_to (o->ctx, dx, dy);
if (Pycairo_Check_Status (cairo_status (o->ctx)))
return NULL;
Py_RETURN_NONE;
}
开发者ID:anarcher,项目名称:enso-launcher-continued,代码行数:13,代码来源:pycairo-context.c
示例3: DrawMarker
void DrawMarker(cairo_t *cr, gint x, gint y, gint type, GdkColor *color)
{
if (type == 0) {
gdk_cairo_set_source_color(cr, &color[0]);
cairo_move_to(cr, x - MARKERLENGTH, y);
cairo_rel_line_to(cr, 2 * MARKERLENGTH, 0);
cairo_move_to(cr, x, y);
cairo_rel_line_to(cr, 0, -MARKERLENGTH);
cairo_stroke(cr);
} else if (type == 1) {
gdk_cairo_set_source_color(cr, &color[1]);
cairo_move_to(cr, x, y - MARKERLENGTH);
cairo_rel_line_to(cr, 0, 2 * MARKERLENGTH);
cairo_move_to(cr, x, y);
cairo_rel_line_to(cr, MARKERLENGTH, 0);
cairo_stroke(cr);
} else if (type == 2) {
gdk_cairo_set_source_color(cr, &color[2]);
cairo_rectangle(cr, x - MARKERLENGTH / 2, y - MARKERLENGTH / 2, MARKERLENGTH, MARKERLENGTH);
cairo_stroke(cr);
}
}
开发者ID:Dalb,项目名称:g3data,代码行数:22,代码来源:drawing.c
示例4: cairo_save
void DefaultWebThemeEngine::paintCheckbox(WebCanvas* canvas, State state, const WebRect& rect, const ButtonExtraParams& param) const
{
cairo_save(canvas);
setupBorder(canvas, state);
cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height);
cairo_stroke_preserve(canvas);
gradientFill(canvas, rect.y, rect.height, state == StatePressed);
if (param.checked) {
const double border = 3;
cairo_set_line_width(canvas, 2);
cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR);
cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + rect.height - border);
cairo_rel_line_to(canvas, rect.width - border * 2, -rect.height + border * 2);
cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + border);
cairo_rel_line_to(canvas, rect.width - border * 2, rect.height - border * 2);
cairo_stroke(canvas);
}
cairo_restore(canvas);
}
开发者ID:iArnaud,项目名称:webkitnix,代码行数:22,代码来源:DefaultWebThemeEngine.cpp
示例5: _cairo_draw_rounded_box
void
_cairo_draw_rounded_box (cairo_t *cr,
double x,
double y,
double w,
double h,
double r)
{
if (r == 0) {
cairo_rectangle (cr, x, y, w, h);
}
else {
cairo_move_to (cr, x, y + r);
cairo_arc (cr, x + r, y + r, r, 1.0 * M_PI, 1.5 * M_PI);
cairo_rel_line_to (cr, w - (r * 2), 0);
cairo_arc (cr, x + w - r, y + r, r, 1.5 * M_PI, 2.0 * M_PI);
cairo_rel_line_to (cr, 0, h - (r * 2));
cairo_arc (cr, x + w - r, y + h - r, r, 0.0 * M_PI, 0.5 * M_PI);
cairo_rel_line_to (cr, - (w - (r * 2)), 0);
cairo_arc (cr, x + r, y + h - r, r, 0.5 * M_PI, 1.0 * M_PI);
cairo_rel_line_to (cr, 0, - (h - (r * 2)));
}
}
开发者ID:cormac-w,项目名称:gthumb,代码行数:23,代码来源:cairo-utils.c
示例6: rel_line_to
ETERM * rel_line_to(ETERM* arg, int c_node) {
ETERM *x, *y;
cairo_context *ctx = get_cairo_context(arg);
if (ctx) {
x = erl_element(2, arg);
y = erl_element(3, arg);
cairo_rel_line_to(ctx->cr, val(x), val(y));
erl_free_term(x);
erl_free_term(y);
return erl_format("{c_node, ~i, ok}", c_node);
} else {
return erl_format("{c_node, ~i, {error, '~s'}}", c_node, ERR_CONTEXT);
}
}
开发者ID:chinnurtb,项目名称:erlycairo,代码行数:14,代码来源:erlycairo.c
示例7: gdk_threads_enter
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelLineTo
(JNIEnv *env, jobject obj, jdouble dx, jdouble dy)
{
struct graphics2d *gr = NULL;
gdk_threads_enter();
if (peer_is_disposed(env, obj)) { gdk_threads_leave(); return; }
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj);
g_assert (gr != NULL);
if (gr->debug) printf ("cairo_rel_line_to (%f, %f)\n", dx, dy);
cairo_rel_line_to (gr->cr, dx, dy);
gdk_threads_leave();
}
开发者ID:aosm,项目名称:gcc_40,代码行数:14,代码来源:gnu_java_awt_peer_gtk_GdkGraphics2D.c
示例8: draw
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_translate (cr, PAD, PAD);
/* A red triangle with SOURCE */
cairo_move_to (cr, SIZE / 5, SIZE / 5);
cairo_rel_line_to (cr, SIZE / 2, 0);
cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2);
cairo_close_path (cr);
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */
cairo_fill (cr);
/* A green circle with OVER */
cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 4, 0., 2. * M_PI);
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */
cairo_fill (cr);
/* Another red triangle with SOURCE */
cairo_move_to (cr, SIZE / 2, SIZE / 2);
cairo_rel_line_to (cr, SIZE / 2, 0);
cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2);
cairo_close_path (cr);
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */
cairo_fill (cr);
return CAIRO_TEST_SUCCESS;
}
开发者ID:499940913,项目名称:moon,代码行数:37,代码来源:over-between-source.c
示例9: draw_text_cursor_cb
static gboolean
draw_text_cursor_cb (GtkWidget *widget, cairo_t *cr, gpointer user_data)
{
GtkEditable *editable = GTK_EDITABLE(widget);
GtkStyleContext *stylectxt = gtk_widget_get_style_context (GTK_WIDGET(widget));
gint height = gtk_widget_get_allocated_height (widget);
const gchar *text;
GdkRGBA *fg_color;
GdkRGBA color;
gint x_offset;
gint cursor_x = 0;
// Get the layout x offset
gtk_entry_get_layout_offsets (GTK_ENTRY(widget), &x_offset, NULL);
// Get the foreground color
gdk_rgba_parse (&color, "black");
gtk_style_context_get_color (stylectxt, GTK_STATE_FLAG_NORMAL, &color);
fg_color = &color;
text = gtk_entry_get_text (GTK_ENTRY (widget));
if ((text != NULL) && (*text != '\0'))
{
PangoLayout *layout;
PangoRectangle strong_pos;
gint start_pos, end_pos, cursor_pos, cursor_byte_pos;
cursor_pos = gtk_editable_get_position (editable);
cursor_byte_pos = g_utf8_offset_to_pointer (text, cursor_pos) - text;
gtk_editable_get_selection_bounds (editable, &start_pos, &end_pos);
layout = gtk_entry_get_layout (GTK_ENTRY(widget));
pango_layout_get_cursor_pos (layout, cursor_byte_pos, &strong_pos, NULL);
cursor_x = x_offset + PANGO_PIXELS (strong_pos.x);
}
else
cursor_x = x_offset;
// Now draw a vertical line
cairo_set_source_rgb (cr, fg_color->red, fg_color->green, fg_color->blue);
cairo_set_line_width (cr, 1.0);
cairo_move_to (cr, cursor_x + 0.5, 2);
cairo_rel_line_to (cr, 0, height - 4);
cairo_stroke (cr);
return FALSE;
}
开发者ID:carrot-garden,项目名称:money_gnucash,代码行数:49,代码来源:gnucash-item-edit.c
示例10: make_path
static void
make_path (cairo_t *cr)
{
cairo_move_to (cr, 0, SIZE/2 + LINE_WIDTH);
cairo_rel_line_to (cr, SIZE, 0);
cairo_rel_line_to (cr, -SIZE, 0);
cairo_close_path (cr);
cairo_move_to (cr, 3*SIZE/4, 0);
cairo_rel_line_to (cr, -SIZE/2, SIZE);
cairo_rel_line_to (cr, SIZE/2, -SIZE);
cairo_close_path (cr);
cairo_move_to (cr, 0, SIZE/2-LINE_WIDTH);
cairo_rel_curve_to (cr,
SIZE/2, -2*LINE_WIDTH,
SIZE/2, 2*LINE_WIDTH,
SIZE, 0);
cairo_rel_curve_to (cr,
-SIZE/2, 2*LINE_WIDTH,
-SIZE/2, -2*LINE_WIDTH,
-SIZE, 0);
cairo_close_path (cr);
}
开发者ID:AZed,项目名称:cairo,代码行数:24,代码来源:joins-retrace.c
示例11: gt_graphics_cairo_draw_vertical_line
void gt_graphics_cairo_draw_vertical_line(GtGraphics *gg, double x, double y,
GtColor color, double length,
double stroke_width)
{
GtGraphicsCairo *g = gt_graphics_cairo_cast(gg);
gt_assert(g);
cairo_save(g->cr);
cairo_move_to(g->cr, rnd_to_nhalf(x), rnd_to_nhalf(y));
cairo_set_line_width(g->cr, 1);
cairo_rel_line_to(g->cr, 0, floor(length));
cairo_set_line_width(g->cr, stroke_width);
cairo_set_source_rgba(g->cr, color.red, color.green, color.blue, color.alpha);
cairo_stroke(g->cr);
cairo_restore(g->cr);
}
开发者ID:simongog,项目名称:genometools,代码行数:15,代码来源:graphics_cairo.c
示例12: diagonal
static cairo_test_status_t
diagonal (cairo_t *cr, int width, int height)
{
int x;
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
cairo_paint (cr);
cairo_set_source_rgba (cr, 1, 1, 1, 1);
for (x = -HEIGHT*PRECISION-2; x <= (WIDTH+HEIGHT)*PRECISION+2; x += 6) {
cairo_move_to (cr, x / (double)PRECISION - 2, -2);
cairo_rel_line_to (cr, HEIGHT + 4, HEIGHT + 4);
}
cairo_set_line_width (cr, 2 / (double)PRECISION);
cairo_stroke (cr);
return CAIRO_TEST_SUCCESS;
}
开发者ID:GuoCheng111,项目名称:WinCairoRequirements,代码行数:18,代码来源:sample.c
示例13: psrpgn_
/*==================================================================================
psrpgn - subroutine to generate closed polygons using rel. coordinates for all after
the first
==================================================================================*/
void psrpgn_ (double *x1, double *y1, double *rx, double *ry, int *npts, double *rline, double *width,int *ifill) {
int i;
DEBUGPRINT(("In psrpgn\n"));
completeRelativeOperation();
cairo_move_to(dmh_cr, *x1, *y1);
for (i = 0; i <= *npts-1; i++) {
cairo_rel_line_to(dmh_cr, deviceW(rx[i]), deviceH(ry[i]));
}
cairo_close_path(dmh_cr);
setLineProperties((int) *rline, *width);
cairo_set_source_rgb (dmh_cr, 0, 0, 0); /* black */
cairo_stroke_preserve(dmh_cr);
setFillType (*ifill);
cairo_fill(dmh_cr);
}
开发者ID:davehirsch,项目名称:Perplex,代码行数:22,代码来源:graphic_output.c
示例14: vcap_sunburst_draw
static double
vcap_sunburst_draw (cairo_t * cr, const struct vcap_data_entry * e, unsigned int m_radius, double arc_start)
{
unsigned int i;
double arc_end, radius, nrsum, c;
radius = ((double)e->level / m_radius);
if (e->parent) {
arc_end = arc_start + ((double)e->amount / vcap_data_lookup("eth")->amount) * 2 * M_PI;
} else {
arc_end = 2 * M_PI;
}
if (e->entries)
{
nrsum = arc_start;
for (i = 0; i < e->ecount; i++)
{
nrsum = vcap_sunburst_draw(cr, e->entries[i], m_radius, nrsum);
}
}
cairo_move_to (cr, 0, 0);
cairo_rel_line_to (cr, cos (arc_start) * radius, sin (arc_start) * radius);
cairo_arc (cr, 0, 0, radius, arc_start, arc_end);
cairo_line_to (cr, 0, 0);
c = ((double)(1/(double)(arc_start+e->level+1)))+0.2;
cairo_set_source_rgb (cr, c + (e->level%3 > 0)*0.02, c + (e->level/3)*0.05, c + (e->level%2 == 0)*0.1);
cairo_fill_preserve (cr);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_set_line_width (cr, 0.001);
cairo_stroke (cr);
return arc_end;
}
开发者ID:dsp,项目名称:vcap,代码行数:38,代码来源:sunburst.c
示例15: metaball_a
//=================================================================================
// metaball
//=================================================================================
static void metaball_a(Qdr *qdr, cairo_t *cr, int edge, int x, int y, double radius)
{
switch(edge){
case 0: //MB_NON
cairo_arc(cr, x+radius, y+radius, radius, 180*(M_PI/180.0), 270*(M_PI/180.0));
break;
case 1: //MB_TB
cairo_arc(cr, x+radius, y+radius, radius, 180*(M_PI/180.0), 210*(M_PI/180.0));
cairo_arc_negative(cr, x+radius-sqrt(3)*radius, y, radius, 30*(M_PI/180.0), 0*(M_PI/180.0));
break;
case 2: //MB_LR
cairo_arc_negative(cr, x, y+radius-sqrt(3)*radius, radius, 90*(M_PI/180.0), 60*(M_PI/180.0));
cairo_arc(cr, x+radius, y+radius, radius, 240*(M_PI/180.0), 270*(M_PI/180.0));
break;
case 3: //MB_BOTH
cairo_arc_negative(cr, x, y, (2-sqrt(3))*radius, 90*(M_PI/180.0), 0*(M_PI/180.0));
break;
case 4: //MB_FULL
cairo_line_to(cr, x, y-radius);
cairo_rel_line_to(cr, radius, 0);
break;
}
}
开发者ID:devilstan,项目名称:sqr,代码行数:26,代码来源:qdr_mark.c
示例16: metaball_d
static void metaball_d(Qdr *qdr, cairo_t *cr, int edge, int x, int y, double radius)
{
switch(edge){
case 0:
cairo_arc(cr, x+radius, y+radius, radius, 90*(M_PI/180.0), 180*(M_PI/180.0));
break;
case 1:
cairo_arc_negative(cr, x+radius-sqrt(3)*radius, y+radius*2, radius, 0*(M_PI/180.0), 330*(M_PI/180.0));
cairo_arc(cr, x+radius, y+radius, radius, 150*(M_PI/180.0), 180*(M_PI/180.0));
break;
case 2:
cairo_arc(cr, x+radius, y+radius, radius, 90*(M_PI/180.0), 120*(M_PI/180.0));
cairo_arc_negative(cr, x, y+radius+sqrt(3)*radius, radius, 300*(M_PI/180.0), 270*(M_PI/180.0));
break;
case 3:
cairo_arc_negative(cr, x, y+radius*2, (2-sqrt(3))*radius, 0*(M_PI/180.0), 270*(M_PI/180.0));
break;
case 4:
cairo_line_to(cr, x, y+qdr->msize);
cairo_rel_line_to(cr, 0, -radius);
break;
}
}
开发者ID:devilstan,项目名称:sqr,代码行数:23,代码来源:qdr_mark.c
示例17: blockarc_c
static void blockarc_c(Qdr *qdr, cairo_t *cr, int edge, int x, int y, double half, double lead, double radius)
{
switch(edge){
case 0: //rect
cairo_rel_line_to(cr, 0, half);
cairo_rel_line_to(cr, -half, 0);
break;
case 1: //arc
cairo_rel_line_to(cr, 0, lead);
cairo_arc(cr, x+half+lead, y+half+lead, radius, 0*(M_PI/180.0), 90*(M_PI/180.0));
cairo_rel_line_to(cr, -lead, 0);
break;
case 2: //narc
cairo_rel_line_to(cr, 0, lead);
cairo_arc_negative(cr, x+qdr->msize+radius, y+half+lead, radius, 180*(M_PI/180.0), 90*(M_PI/180.0));
cairo_rel_line_to(cr, -(radius+half), 0);
break;
}
}
开发者ID:devilstan,项目名称:sqr,代码行数:19,代码来源:qdr_mark.c
示例18: sc_arrow_draw
static gboolean sc_arrow_draw(GtkWidget*widget, cairo_t*cr)
{
SCArrow*arrow=SC_ARROW(widget);
int width=gtk_widget_get_allocated_width(widget);
int height =gtk_widget_get_allocated_height(widget);
double arrow_width=1.5*arrow->line_width;
double arrow_length=2*arrow_width;
double dashs[]={arrow_length,arrow_length-2,100000};
cairo_set_line_width(cr,arrow->line_width);
gdk_cairo_set_source_rgba(cr,&arrow->color);
//
cairo_move_to(cr,arrow->x1,arrow->y1);
cairo_line_to(cr,arrow->x0,arrow->y0);
//
cairo_set_dash(cr,dashs,3,arrow_length);
cairo_stroke(cr);
//
double rad=0.0;
int dx,dy;
dx=arrow->x1-arrow->x0;
dy=arrow->y1-arrow->y0;
if(dx>=0){
rad= atan(((double)dy)/dx);
}else{//dx<=0
rad=atan(((double)dy)/dx)+M_PI;
}
cairo_save(cr);
cairo_translate(cr,arrow->x1,arrow->y1);
//FIXME
//WARNING:: invalid matrix (not invertible)
cairo_rotate(cr,rad);
cairo_move_to(cr,0,0);
cairo_rel_line_to(cr,-arrow_length,-arrow_width);
cairo_rel_line_to(cr,0,arrow_width*2);
cairo_rel_line_to(cr,0,0);
cairo_fill(cr);
cairo_restore(cr);
return FALSE;
}
开发者ID:ranrangor,项目名称:ScreenCapturer,代码行数:61,代码来源:sc-arrow.c
示例19: draw_month_grid
static void
draw_month_grid (GcalYearView *year_view,
GtkWidget *widget,
cairo_t *cr,
gint month_nr,
gint *weeks_counter)
{
GcalYearViewPrivate *priv = year_view->priv;
GtkStyleContext *context;
GtkStateFlags state_flags;
PangoLayout *layout, *slayout;
PangoFontDescription *font_desc, *sfont_desc;
GdkRGBA color;
gint layout_width, layout_height, i, j, sw;
gint x, y, column, row, box_side, box_padding_top, box_padding_start;
gint days_delay, days, shown_rows, sunday_idx;
gchar *str, *nr_day, *nr_week;
gboolean selected_day;
cairo_save (cr);
context = gtk_widget_get_style_context (widget);
state_flags = gtk_widget_get_state_flags (widget);
sw = 1 - 2 * priv->k;
box_side = priv->navigator_grid->box_side;
x = priv->navigator_grid->coordinates[month_nr].x;
y = priv->navigator_grid->coordinates[month_nr].y;
gtk_style_context_get (context, state_flags | GTK_STATE_FLAG_SELECTED, "font", &sfont_desc, NULL);
slayout = gtk_widget_create_pango_layout (widget, NULL);
pango_layout_set_font_description (slayout, sfont_desc);
/* header */
gtk_style_context_save (context);
gtk_style_context_add_class (context, "header");
str = g_strdup (gcal_get_month_name (month_nr));
gtk_style_context_get (context, state_flags, "font", &font_desc, NULL);
layout = gtk_widget_create_pango_layout (widget, str);
pango_layout_set_font_description (layout, font_desc);
pango_layout_get_pixel_size (layout, &layout_width, &layout_height);
gtk_render_layout (context, cr, x + (box_side * 8 - layout_width) / 2, y + (box_side - layout_height) / 2,
layout);
gtk_render_background (context, cr,
x + (box_side * 8 - layout_width) / 2, y + (box_side - layout_height) / 2,
layout_width, layout_width);
pango_font_description_free (font_desc);
g_free (str);
gtk_style_context_restore (context);
/* separator line */
gtk_style_context_save (context);
gtk_style_context_add_class (context, "lines");
gtk_style_context_get_color (context, state_flags, &color);
cairo_set_line_width (cr, 0.2);
gdk_cairo_set_source_rgba (cr, &color);
cairo_move_to (cr, x + box_side / 2, y + box_side + 0.4);
cairo_rel_line_to (cr, 7 * box_side, 0);
cairo_stroke (cr);
gtk_style_context_restore (context);
/* days */
gtk_style_context_save (context);
gtk_style_context_add_class (context, "days");
gtk_style_context_get (context, state_flags, "font", &font_desc, NULL);
pango_layout_set_font_description (layout, font_desc);
days_delay = (time_day_of_week (1, month_nr, priv->date->year) - priv->first_weekday + 7) % 7;
days = days_delay + icaltime_days_in_month (month_nr + 1, priv->date->year);
shown_rows = ceil (days / 7.0);
sunday_idx = priv->k * 6 + sw * ((7 - priv->first_weekday) % 7);
for (i = 0; i < 7 * shown_rows; i++)
{
column = i % 7;
row = i / 7;
j = 7 * ((i + 7 * priv->k) / 7) + sw * (i % 7) + (1 - priv->k);
if (j <= days_delay)
continue;
else if (j > days)
continue;
j -= days_delay;
nr_day = g_strdup_printf ("%d", j);
pango_layout_set_text (layout, nr_day, -1);
pango_layout_get_pixel_size (layout, &layout_width, &layout_height);
box_padding_top = (box_side - layout_height) / 2 > 0 ? (box_side - layout_height) / 2 : 0;
box_padding_start = (box_side - layout_width) / 2 > 0 ? (box_side - layout_width) / 2 : 0;
selected_day = FALSE;
if (priv->selected_data->start_day != 0)
//.........这里部分代码省略.........
开发者ID:C4jk,项目名称:gnome-calendar,代码行数:101,代码来源:gcal-year-view.c
示例20: cd_rendering_render_optimized_3D_plane
void cd_rendering_render_optimized_3D_plane (cairo_t *pCairoContext, CairoDock *pDock, GdkRectangle *pArea)
{
//g_print ("%s ((%d;%d) x (%d;%d) / (%dx%d))\n", __func__, pArea->x, pArea->y, pArea->width, pArea->height, pDock->iCurrentWidth, pDock->iCurrentHeight);
double fLineWidth = myBackground.iDockLineWidth;
double fMargin = myBackground.iFrameMargin;
int iWidth = pDock->iCurrentWidth;
int iHeight = pDock->iCurrentHeight;
//\____________________ On dessine les decorations du fond sur la portion de fenetre.
cairo_save (pCairoContext);
double fDockOffsetX, fDockOffsetY;
if (pDock->bHorizontalDock)
{
fDockOffsetX = pArea->x;
fDockOffsetY = (pDock->bDirectionUp ? iHeight - pDock->iDecorationsHeight - fLineWidth : fLineWidth);
}
else
{
fDockOffsetX = (pDock->bDirectionUp ? iHeight - pDock->iDecorationsHeight - fLineWidth : fLineWidth);
fDockOffsetY = pArea->y;
}
//cairo_move_to (pCairoContext, fDockOffsetX, fDockOffsetY);
if (pDock->bHorizontalDock)
cairo_rectangle (pCairoContext, fDockOffsetX, fDockOffsetY, pArea->width, pDock->iDecorationsHeight);
else
cairo_rectangle (pCairoContext, fDockOffsetX, fDockOffsetY, pDock->iDecorationsHeight, pArea->height);
double fRadius = MIN (myBackground.iDockRadius, (pDock->iDecorationsHeight + myBackground.iDockLineWidth) / 2 - 1);
double fDeltaXTrapeze=0.;
double fOffsetX;
if (cairo_dock_is_extended_dock (pDock)) // mode panel etendu.
{
fOffsetX = fRadius + fLineWidth / 2;
}
else
{
Icon *pFirstIcon = cairo_dock_get_first_drawn_icon (pDock);
fOffsetX = (pFirstIcon != NULL ? pFirstIcon->fX - fMargin : fRadius + fLineWidth / 2);
}
double fDockWidth = cairo_dock_get_current_dock_width_linear (pDock);
if (g_pBackgroundSurface != NULL)
{
double fInclinationOnHorizon = (fDockWidth / 2) / iVanishingPointY;
double fRadius = myBackground.iDockRadius;
if (2*fRadius > pDock->iDecorationsHeight + fLineWidth)
fRadius = (pDock->iDecorationsHeight + fLineWidth) / 2 - 1;
double fDeltaXForLoop = fInclinationOnHorizon * (pDock->iDecorationsHeight + fLineWidth - (myBackground.bRoundedBottomCorner ? 2 : 1) * fRadius);
double cosa = 1. / sqrt (1 + fInclinationOnHorizon * fInclinationOnHorizon);
fDeltaXTrapeze = fDeltaXForLoop + fRadius * cosa;
double sina = cosa * fInclinationOnHorizon;
fDeltaXTrapeze = fInclinationOnHorizon * (pDock->iDecorationsHeight - (FALSE ? 2 : 1-sina) * fRadius) + fRadius * (FALSE ? 1 : cosa);
}
cairo_dock_render_decorations_in_frame (pCairoContext, pDock, pDock->bHorizontalDock ? fDockOffsetY : fDockOffsetX, fOffsetX-fDeltaXTrapeze, fDockWidth+2*fDeltaXTrapeze);
//\____________________ On dessine la partie du cadre qui va bien.
cairo_new_path (pCairoContext);
if (pDock->bHorizontalDock)
{
cairo_set_line_width (pCairoContext, fLineWidth);
cairo_move_to (pCairoContext, fDockOffsetX, fDockOffsetY - 0.5*fLineWidth);
cairo_rel_line_to (pCairoContext, pArea->width, 0);
cairo_set_source_rgba (pCairoContext, myBackground.fLineColor[0], myBackground.fLineColor[1], myBackground.fLineColor[2], myBackground.fLineColor[3]);
cairo_stroke (pCairoContext);
cairo_new_path (pCairoContext);
cairo_move_to (pCairoContext, fDockOffsetX, (pDock->bDirectionUp ? iHeight - 0.5*fLineWidth : pDock->iDecorationsHeight + 1.5 * fLineWidth));
cairo_rel_line_to (pCairoContext, pArea->width, 0);
}
else
{
cairo_move_to (pCairoContext, fDockOffsetX - .5*fLineWidth, fDockOffsetY);
cairo_rel_line_to (pCairoContext, 0, pArea->height);
cairo_set_line_width (pCairoContext, fLineWidth);
cairo_set_source_rgba (pCairoContext, myBackground.fLineColor[0], myBackground.fLineColor[1], myBackground.fLineColor[2], myBackground.fLineColor[3]);
cairo_stroke (pCairoContext);
cairo_new_path (pCairoContext);
cairo_move_to (pCairoContext, (pDock->bDirectionUp ? iHeight - fLineWidth / 2 : pDock->iDecorationsHeight + 1.5 * fLineWidth), fDockOffsetY);
cairo_rel_line_to (pCairoContext, 0, pArea->height);
}
cairo_set_line_width (pCairoContext, fLineWidth);
cairo_set_source_rgba (pCairoContext, myBackground.fLineColor[0], myBackground.fLineColor[1], myBackground.fLineColor[2], myBackground.fLineColor[3]);
cairo_stroke (pCairoContext);
cairo_restore (pCairoContext);
//\____________________ On dessine les icones impactees.
GList *pFirstDrawnElement = (pDock->pFirstDrawnElement != NULL ? pDock->pFirstDrawnElement : pDock->icons);
if (pFirstDrawnElement != NULL)
{
double fXMin = (pDock->bHorizontalDock ? pArea->x : pArea->y), fXMax = (pDock->bHorizontalDock ? pArea->x + pArea->width : pArea->y + pArea->height);
double fDockMagnitude = cairo_dock_calculate_magnitude (pDock->iMagnitudeIndex);
double fXLeft, fXRight;
Icon *icon;
//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:cairo-dock-svn,代码行数:101,代码来源:rendering-3D-plane.c
注:本文中的cairo_rel_line_to函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论