本文整理汇总了C++中cairo_save函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_save函数的具体用法?C++ cairo_save怎么用?C++ cairo_save使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_save函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: stageone
//.........这里部分代码省略.........
src_desc.set_wh(src_w, src_h);
// New expanded renddesc values
const double wpw=src_desc.get_pw();
const double wph=src_desc.get_ph();
const double wtlx=src_desc.get_tl()[0];
const double wtly=src_desc.get_tl()[1];
// render the context onto a new surface
cairo_surface_t* csource, *cresult;
csource=cairo_surface_create_similar(cairo_get_target(cr),CAIRO_CONTENT_COLOR_ALPHA, src_w, src_h);
cresult=cairo_surface_create_similar(cairo_get_target(cr),CAIRO_CONTENT_COLOR_ALPHA, w, h);
cairo_t *subcr=cairo_create(csource);
cairo_scale(subcr, 1/wpw, 1/wph);
cairo_translate(subcr, -wtlx, -wtly);
if(!context.accelerated_cairorender(subcr,quality,src_desc,&stageone))
return false;
// don't needed anymore
cairo_destroy(subcr);
//access to pixels
CairoSurface source(csource);
source.map_cairo_image();
CairoSurface result(cresult);
result.map_cairo_image();
float u,v;
Point pos, tmp;
if(quality<=4) // CUBIC
for(y=0,pos[1]=tl[1];y<h;y++,pos[1]+=ph)
{
for(x=0,pos[0]=tl[0];x<w;x++,pos[0]+=pw)
{
tmp=transform(pos);
u=(tmp[0]-src_tl[0])/src_pw;
v=(tmp[1]-src_tl[1])/src_ph;
if(u<0 || v<0 || u>=src_w || v>=src_h || isnan(u) || isnan(v))
result[y][x]=CairoColor(context.get_color(tmp)).premult_alpha();
else
result[y][x]=source.cubic_sample_cooked(u,v);
}
if((y&31)==0 && cb && !stagetwo.amount_complete(y,h)) return false;
}
else if (quality<=6) // INTERPOLATION_LINEAR
for(y=0,pos[1]=tl[1];y<h;y++,pos[1]+=ph)
{
for(x=0,pos[0]=tl[0];x<w;x++,pos[0]+=pw)
{
tmp=transform(pos);
u=(tmp[0]-src_tl[0])/src_pw;
v=(tmp[1]-src_tl[1])/src_ph;
if(u<0 || v<0 || u>=src_w || v>=src_h || isnan(u) || isnan(v))
result[y][x]=CairoColor(context.get_color(tmp)).premult_alpha();
else
result[y][x]=source.linear_sample_cooked(u,v);
}
if((y&31)==0 && cb && !stagetwo.amount_complete(y,h)) return false;
}
else // NEAREST_NEIGHBOR
for(y=0,pos[1]=tl[1];y<h;y++,pos[1]+=ph)
{
for(x=0,pos[0]=tl[0];x<w;x++,pos[0]+=pw)
{
tmp=transform(pos);
u=(tmp[0]-src_tl[0])/src_pw;
v=(tmp[1]-src_tl[1])/src_ph;
if(u<0 || v<0 || u>=src_w || v>=src_h || isnan(u) || isnan(v))
result[y][x]=CairoColor(context.get_color(tmp)).premult_alpha();
else
result[y][x]=source[floor_to_int(v)][floor_to_int(u)];
}
if((y&31)==0 && cb && !stagetwo.amount_complete(y,h)) return false;
}
result.unmap_cairo_image();
source.unmap_cairo_image();
cairo_surface_destroy(csource);
// Now paint it on the context
cairo_save(cr);
cairo_translate(cr, tl[0], tl[1]);
cairo_scale(cr, pw, ph);
cairo_set_source_surface(cr, cresult, 0, 0);
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_paint(cr);
cairo_restore(cr);
cairo_surface_destroy(cresult);
// Mark our progress as finished
if(cb && !cb->amount_complete(10000,10000))
return false;
return true;
}
开发者ID:aaronaskew,项目名称:synfig,代码行数:101,代码来源:curvewarp.cpp
示例2: rendering_draw_caroussel_in_desklet
void rendering_draw_caroussel_in_desklet (cairo_t *pCairoContext, CairoDesklet *pDesklet, gboolean bRenderOptimized)
{
CDCarousselParameters *pCaroussel = (CDCarousselParameters *) pDesklet->pRendererData;
//g_print ("%s(%x)\n", __func__, pCaroussel);
if (pCaroussel == NULL)
return ;
double fTheta = G_PI/2 + pCaroussel->fRotationAngle, fDeltaTheta = pCaroussel->fDeltaTheta;
int iEllipseHeight = pCaroussel->iEllipseHeight;
double fInclinationOnHorizon = pCaroussel->fInclinationOnHorizon;
int iFrameHeight = pCaroussel->iFrameHeight;
double fExtraWidth = pCaroussel->fExtraWidth;
double a = pCaroussel->a, b = pCaroussel->b;
Icon *pIcon;
GList *ic;
if (pCaroussel->b3D)
{
for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
{
pIcon = ic->data;
if (fTheta > G_PI && fTheta < 2*G_PI) // arriere-plan.
{
pIcon->fScale = (1 + .5 * fabs (fTheta - 3 * G_PI / 2) / (G_PI / 2)) / 1.5;
pIcon->fAlpha = pIcon->fScale;
}
else
{
pIcon->fScale = 1.;
pIcon->fAlpha = 1.;
}
pIcon->fDrawX = pDesklet->iWidth / 2 + a * cos (fTheta) - pIcon->fWidth/2 * 1;
pIcon->fDrawY = pDesklet->iHeight / 2 + b * sin (fTheta) - pIcon->fHeight * pIcon->fScale + myLabels.iconTextDescription.iSize;
fTheta += fDeltaTheta;
if (fTheta >= G_PI/2 + 2*G_PI)
fTheta -= 2*G_PI;
}
//\____________________ On trace le cadre.
double fLineWidth = g_iDockLineWidth;
double fMargin = 0*myBackground.iFrameMargin;
double fDockWidth = pDesklet->iWidth - fExtraWidth;
int sens=1;
double fDockOffsetX, fDockOffsetY; // Offset du coin haut gauche du cadre.
fDockOffsetX = fExtraWidth / 2;
fDockOffsetY = (pDesklet->iHeight - iEllipseHeight) / 2 + myLabels.iconTextDescription.iSize;
cairo_save (pCairoContext);
cairo_dock_draw_frame (pCairoContext, g_iDockRadius, fLineWidth, fDockWidth, iFrameHeight, fDockOffsetX, fDockOffsetY, sens, fInclinationOnHorizon, pDesklet->bIsHorizontal);
//\____________________ On dessine les decorations dedans.
cairo_set_source_rgba (pCairoContext, .8, .8, .8, .75);
cairo_fill_preserve (pCairoContext);
//\____________________ On dessine le cadre.
if (fLineWidth > 0)
{
cairo_set_line_width (pCairoContext, fLineWidth);
cairo_set_source_rgba (pCairoContext, .9, .9, .9, 1.);
cairo_stroke (pCairoContext);
}
cairo_restore (pCairoContext);
//\____________________ On dessine les icones dans l'ordre qui va bien.
for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
{
pIcon = ic->data;
if (pIcon->pIconBuffer != NULL)
{
cairo_save (pCairoContext);
if (pIcon->fDrawY + pIcon->fHeight < pDesklet->iHeight / 2 + myLabels.iconTextDescription.iSize && pIcon->fDrawX + pIcon->fWidth/2 > pDesklet->iWidth / 2) // arriere-plan droite.
cairo_dock_render_one_icon_in_desklet (pIcon, pCairoContext, TRUE, TRUE, pDesklet->iWidth);
cairo_restore (pCairoContext);
}
}
for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
{
pIcon = ic->data;
if (pIcon->pIconBuffer != NULL)
{
cairo_save (pCairoContext);
if (pIcon->fDrawY + pIcon->fHeight < pDesklet->iHeight / 2 + myLabels.iconTextDescription.iSize && pIcon->fDrawX + pIcon->fWidth/2 <= pDesklet->iWidth / 2) // arriere-plan gauche.
cairo_dock_render_one_icon_in_desklet (pIcon, pCairoContext, TRUE, TRUE, pDesklet->iWidth);
cairo_restore (pCairoContext);
}
}
cairo_save (pCairoContext);
pDesklet->pIcon->fDrawY = pDesklet->iHeight/2 - pDesklet->pIcon->fHeight + myLabels.iconTextDescription.iSize;
cairo_dock_render_one_icon_in_desklet (pDesklet->pIcon, pCairoContext, TRUE, FALSE, pDesklet->iWidth);
cairo_restore (pCairoContext);
//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:cairo-dock-svn,代码行数:101,代码来源:rendering-desklet-caroussel.c
示例3: eng_image_draw
static void
eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
{
Render_Engine *re;
Evas_Cairo_Context *ctxt;
Evas_Cairo_Image *im;
DATA32 *pix;
re = (Render_Engine *)data;
ctxt = (Evas_Cairo_Context *)context;
if (!image) return;
im = image;
evas_common_load_image_data_from_file(im->im);
pix = im->im->image->data;
if (pix)
{
if (!im->surface)
{
im->mulpix = malloc(im->im->image->w * im->im->image->h * sizeof(DATA32));
if (im->mulpix)
{
int i, n;
DATA32 *p;
n = im->im->image->w * im->im->image->h;
p = im->mulpix;
for (i = 0; i < n; i++)
{
int a;
a = A_VAL(pix);
R_VAL(p) = (R_VAL(pix) * a) / 255;
G_VAL(p) = (G_VAL(pix) * a) / 255;
B_VAL(p) = (B_VAL(pix) * a) / 255;
A_VAL(p) = a;
p++;
pix++;
}
im->surface = cairo_image_surface_create_for_data(im->mulpix,
CAIRO_FORMAT_ARGB32,
im->im->image->w,
im->im->image->h,
0);
im->pattern = cairo_pattern_create_for_surface(im->surface);
}
}
if (smooth)
cairo_pattern_set_filter(im->pattern, CAIRO_FILTER_BILINEAR);
else
cairo_pattern_set_filter(im->pattern, CAIRO_FILTER_NEAREST);
cairo_save(ctxt->cairo);
cairo_translate(ctxt->cairo, dst_x, dst_y);
cairo_scale(ctxt->cairo,
(double)src_w / (double)dst_w,
(double)src_h / (double)dst_h);
cairo_move_to(ctxt->cairo, 0, 0);
// cairo_set_rgb_color(re->win->cairo,
// (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0,
// (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0,
// (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0);
// cairo_set_alpha(re->win->cairo,
// (double)(A_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0);
cairo_set_source_surface(ctxt->cairo,
im->surface,
im->im->image->w,
im->im->image->h);
cairo_paint(ctxt->cairo);
cairo_restore(ctxt->cairo);
}
}
开发者ID:nashidau,项目名称:Evas-Next,代码行数:72,代码来源:evas_engine.c
示例4: photos_utils_create_collection_icon
GIcon *
photos_utils_create_collection_icon (gint base_size, GList *pixbufs)
{
cairo_surface_t *surface; /* TODO: use g_autoptr */
cairo_t *cr; /* TODO: use g_autoptr */
GdkPixbuf *pix;
GIcon *ret_val;
GList *l;
g_autoptr (GtkStyleContext) context = NULL;
g_autoptr (GtkWidgetPath) path = NULL;
gint cur_x;
gint cur_y;
gint padding;
gint pix_height;
gint pix_width;
gint scale_size;
gint tile_size;
guint idx;
guint n_grid;
guint n_pixbufs;
guint n_tiles;
n_pixbufs = g_list_length (pixbufs);
if (n_pixbufs < 3)
{
n_grid = 1;
n_tiles = 1;
}
else
{
n_grid = 2;
n_tiles = 4;
}
padding = MAX (base_size / 10, 4);
tile_size = (base_size - ((n_grid + 1) * padding)) / n_grid;
context = gtk_style_context_new ();
gtk_style_context_add_class (context, "photos-collection-icon");
path = gtk_widget_path_new ();
gtk_widget_path_append_type (path, GTK_TYPE_ICON_VIEW);
gtk_style_context_set_path (context, path);
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, base_size, base_size);
cr = cairo_create (surface);
gtk_render_background (context, cr, 0, 0, base_size, base_size);
l = pixbufs;
idx = 0;
cur_x = padding;
cur_y = padding;
while (l != NULL && idx < n_tiles)
{
pix = l->data;
pix_width = gdk_pixbuf_get_width (pix);
pix_height = gdk_pixbuf_get_height (pix);
scale_size = MIN (pix_width, pix_height);
cairo_save (cr);
cairo_translate (cr, cur_x, cur_y);
cairo_rectangle (cr, 0, 0,
tile_size, tile_size);
cairo_clip (cr);
cairo_scale (cr, (gdouble) tile_size / (gdouble) scale_size, (gdouble) tile_size / (gdouble) scale_size);
gdk_cairo_set_source_pixbuf (cr, pix, 0, 0);
cairo_paint (cr);
cairo_restore (cr);
idx++;
l = l->next;
if ((idx % n_grid) == 0)
{
cur_x = padding;
cur_y += tile_size + padding;
}
else
{
cur_x += tile_size + padding;
}
}
ret_val = G_ICON (gdk_pixbuf_get_from_surface (surface, 0, 0, base_size, base_size));
cairo_surface_destroy (surface);
cairo_destroy (cr);
return ret_val;
}
开发者ID:uajain,项目名称:gnome-photos,代码行数:97,代码来源:photos-utils.c
示例5: paint_grid_and_ticks
static void
paint_grid_and_ticks (GsGraph *graph, cairo_t *cr)
{
GsPoint origin;
gs_point_to_pixel (&(graph->priv->transform), &(graph->priv->origin), &origin);
gint k;
gdouble pos;
if (!graph->priv->show_grid && !graph->priv->show_ticks) {
return;
}
cairo_set_line_width (cr, 0.5);
// Horizontal grid lines/ticks
gint start_y = (gint) (floor (graph->priv->view.y1 / graph->priv->grid_dy));
gint end_y = (gint) (floor (graph->priv->view.y2 / graph->priv->grid_dy));
for (k = start_y; k <= end_y; k++) {
gs_point_to_pixel_values (&(graph->priv->transform), 0, k * graph->priv->grid_dy, NULL, &pos);
if (graph->priv->show_grid) {
cairo_save (cr);
if (graph->priv->dotted_grid) {
cairo_set_dash (cr, DASH_PATTERN, 1, 0);
}
gdk_cairo_set_source_color (cr, graph->priv->grid_color);
cairo_move_to (cr, 0, pos);
cairo_line_to (cr, graph->priv->width, pos);
cairo_stroke (cr);
cairo_restore (cr);
}
if (graph->priv->show_vertical_axis && graph->priv->show_ticks) {
gdk_cairo_set_source_color (cr, graph->priv->axes_color);
cairo_move_to (cr, origin.x - graph->priv->tick_length, pos);
cairo_line_to (cr, origin.x + graph->priv->tick_length, pos);
cairo_stroke (cr);
}
}
// Vertical grid lines/ticks
gint start_x = (gint) (floor (graph->priv->view.x1 / graph->priv->grid_dx));
gint end_x = (gint) (floor (graph->priv->view.x2 / graph->priv->grid_dx));
for (k = start_x; k <= end_x; k++) {
gs_point_to_pixel_values (&(graph->priv->transform), k * graph->priv->grid_dx, 0, &pos, NULL);
if (graph->priv->show_grid) {
cairo_save (cr);
if (graph->priv->dotted_grid) {
cairo_set_dash (cr, DASH_PATTERN, 1, 0);
}
gdk_cairo_set_source_color (cr, graph->priv->grid_color);
cairo_move_to (cr, pos, 0);
cairo_line_to (cr, pos, graph->priv->height);
cairo_stroke (cr);
cairo_restore (cr);
}
if (graph->priv->show_horizontal_axis && graph->priv->show_ticks) {
gdk_cairo_set_source_color (cr, graph->priv->axes_color);
cairo_move_to (cr, pos, origin.y + graph->priv->tick_length);
cairo_line_to (cr, pos, origin.y - graph->priv->tick_length);
cairo_stroke (cr);
}
}
}
开发者ID:jorgeatorres,项目名称:gsgraph,代码行数:73,代码来源:gs-graph.c
示例6: _lib_filmstrip_expose_callback
static gboolean _lib_filmstrip_expose_callback(GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
dt_lib_module_t *self = (dt_lib_module_t *)user_data;
dt_lib_filmstrip_t *strip = (dt_lib_filmstrip_t *)self->data;
int32_t width = widget->allocation.width;
int32_t height = widget->allocation.height;
gdouble pointerx = strip->pointerx;
gdouble pointery = strip->pointery;
if(darktable.gui->center_tooltip == 1)
darktable.gui->center_tooltip++;
strip->image_over = DT_VIEW_DESERT;
DT_CTL_SET_GLOBAL(lib_image_mouse_over_id, -1);
/* create cairo surface */
cairo_t *cr = gdk_cairo_create(widget->window);
/* fill background */
cairo_set_source_rgb (cr, .2, .2, .2);
cairo_paint(cr);
int offset = strip->offset;
const float wd = height;
const float ht = height;
int max_cols = (int)(width/(float)wd) + 2;
if (max_cols%2 == 0)
max_cols += 1;
const int col_start = max_cols/2 - strip->offset;
const int empty_edge = (width - (max_cols * wd))/2;
int step_res = SQLITE_ROW;
sqlite3_stmt *stmt = NULL;
/* mouse over image position in filmstrip */
pointerx -= empty_edge;
const int seli = (pointery > 0 && pointery <= ht) ? pointerx / (float)wd : -1;
const int img_pointerx = (int)fmodf(pointerx, wd);
const int img_pointery = (int)pointery;
/* get the count of current collection */
strip->collection_count = dt_collection_get_count (darktable.collection);
/* get the collection query */
const gchar *query=dt_collection_get_query (darktable.collection);
if(!query)
return FALSE;
if(offset < 0)
strip->offset = offset = 0;
if(offset > strip->collection_count-1)
strip->offset = offset = strip->collection_count-1;
// dt_view_set_scrollbar(self, offset, count, max_cols, 0, 1, 1);
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), query, -1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, offset - max_cols/2);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 2, max_cols);
cairo_save(cr);
cairo_translate(cr, empty_edge, 0.0f);
for(int col = 0; col < max_cols; col++)
{
if(col < col_start)
{
cairo_translate(cr, wd, 0.0f);
continue;
}
if(step_res != SQLITE_DONE)
{
step_res = sqlite3_step(stmt);
}
if(step_res == SQLITE_ROW)
{
int id = sqlite3_column_int(stmt, 0);
// set mouse over id
if(seli == col)
{
strip->mouse_over_id = id;
DT_CTL_SET_GLOBAL(lib_image_mouse_over_id, strip->mouse_over_id);
}
cairo_save(cr);
// FIXME find out where the y translation is done, how big the value is and use it directly instead of getting it from the matrix ...
cairo_matrix_t m;
cairo_get_matrix(cr, &m);
dt_view_image_expose(&(strip->image_over), id, cr, wd, ht, max_cols, img_pointerx, img_pointery, FALSE);
cairo_restore(cr);
}
else if (step_res == SQLITE_DONE)
{
/* do nothing, just add some empty thumb frames */
//.........这里部分代码省略.........
开发者ID:jonleighton,项目名称:darktable,代码行数:101,代码来源:filmstrip.c
示例7: draw_spiral
static cairo_time_t
draw_spiral (cairo_t *cr,
cairo_fill_rule_t fill_rule,
align_t align,
close_t close,
int width, int height, int loops)
{
int i;
int n=0;
double x[MAX_SEGMENTS];
double y[MAX_SEGMENTS];
int step = 3;
int side = width < height ? width : height;
assert(5*(side/step/2+1)+2 < MAX_SEGMENTS);
#define L(x_,y_) (x[n] = (x_), y[n] = (y_), n++)
#define M(x_,y_) L(x_,y_)
#define v(t) L(x[n-1], y[n-1] + (t))
#define h(t) L(x[n-1] + (t), y[n-1])
switch (align) {
case PIXALIGN: M(0,0); break;
case NONALIGN: M(0.1415926, 0.7182818); break;
}
while (side >= step && side >= 0) {
v(side);
h(side);
v(-side);
h(-side+step);
v(step);
side -= 2*step;
}
switch (close) {
case RECTCLOSE: L(x[n-1],y[0]); break;
case DIAGCLOSE: L(x[0],y[0]); break;
}
assert(n < MAX_SEGMENTS);
cairo_save (cr);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_paint (cr);
cairo_translate (cr, 1, 1);
cairo_set_fill_rule (cr, fill_rule);
cairo_set_source_rgb (cr, 1, 0, 0);
cairo_new_path (cr);
cairo_move_to (cr, x[0], y[0]);
for (i = 1; i < n; i++) {
cairo_line_to (cr, x[i], y[i]);
}
cairo_close_path (cr);
cairo_perf_timer_start ();
cairo_perf_set_thread_aware (cr, FALSE);
while (loops--) {
if (loops == 0)
cairo_perf_set_thread_aware (cr, TRUE);
cairo_fill_preserve (cr);
}
cairo_perf_timer_stop ();
cairo_restore (cr);
return cairo_perf_timer_elapsed ();
}
开发者ID:csyuschmjuh,项目名称:apl,代码行数:71,代码来源:spiral.c
示例8: DrawResizableBackground
void DrawResizableBackground(cairo_t *c,
cairo_surface_t *background,
int width,
int height,
int marginLeft,
int marginTop,
int marginRight,
int marginBottom,
FillRule fillV,
FillRule fillH
)
{
int resizeHeight = cairo_image_surface_get_height(background) - marginTop - marginBottom;
int resizeWidth = cairo_image_surface_get_width(background) - marginLeft - marginRight;
if (resizeHeight <= 0)
resizeHeight = 1;
if (resizeWidth <= 0)
resizeWidth = 1;
cairo_save(c);
cairo_set_operator(c, CAIRO_OPERATOR_SOURCE);
cairo_set_source_surface(c, background, 0, 0);
/* 九宫格
* 7 8 9
* 4 5 6
* 1 2 3
*/
/* part 1 */
cairo_save(c);
cairo_translate(c, 0, height - marginBottom);
cairo_set_source_surface(c, background, 0, -marginTop - resizeHeight);
cairo_rectangle(c, 0, 0, marginLeft, marginBottom);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
/* part 3 */
cairo_save(c);
cairo_translate(c, width - marginRight, height - marginBottom);
cairo_set_source_surface(c, background, -marginLeft - resizeWidth, -marginTop - resizeHeight);
cairo_rectangle(c, 0, 0, marginRight, marginBottom);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
/* part 7 */
cairo_save(c);
cairo_rectangle(c, 0, 0, marginLeft, marginTop);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
/* part 9 */
cairo_save(c);
cairo_translate(c, width - marginRight, 0);
cairo_set_source_surface(c, background, -marginLeft - resizeWidth, 0);
cairo_rectangle(c, 0, 0, marginRight, marginTop);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
/* part 2 & 8 */
{
if (fillH == F_COPY) {
int repaint_times = (width - marginLeft - marginRight) / resizeWidth;
int remain_width = (width - marginLeft - marginRight) % resizeWidth;
int i = 0;
for (i = 0; i < repaint_times; i++) {
/* part 8 */
cairo_save(c);
cairo_translate(c, marginLeft + i * resizeWidth, 0);
cairo_set_source_surface(c, background, -marginLeft, 0);
cairo_rectangle(c, 0, 0, resizeWidth, marginTop);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
/* part 2 */
cairo_save(c);
cairo_translate(c, marginLeft + i * resizeWidth, height - marginBottom);
cairo_set_source_surface(c, background, -marginLeft, -marginTop - resizeHeight);
cairo_rectangle(c, 0, 0, resizeWidth, marginBottom);
cairo_clip(c);
cairo_paint(c);
cairo_restore(c);
}
if (remain_width != 0) {
/* part 8 */
cairo_save(c);
cairo_translate(c, marginLeft + repaint_times * resizeWidth, 0);
cairo_set_source_surface(c, background, -marginLeft, 0);
cairo_rectangle(c, 0, 0, remain_width, marginTop);
//.........这里部分代码省略.........
开发者ID:ezc,项目名称:fcitx,代码行数:101,代码来源:skin.c
示例9: textRenderTextToSurface
static Bool
textRenderTextToSurface (CompScreen *s,
const char *text,
TextSurfaceData *data,
const CompTextAttrib *attrib)
{
int width, height, layoutWidth;
pango_font_description_set_family (data->font, attrib->family);
pango_font_description_set_absolute_size (data->font,
attrib->size * PANGO_SCALE);
pango_font_description_set_style (data->font, PANGO_STYLE_NORMAL);
if (attrib->flags & CompTextFlagStyleBold)
pango_font_description_set_weight (data->font, PANGO_WEIGHT_BOLD);
if (attrib->flags & CompTextFlagStyleItalic)
pango_font_description_set_style (data->font, PANGO_STYLE_ITALIC);
pango_layout_set_font_description (data->layout, data->font);
if (attrib->flags & CompTextFlagEllipsized)
pango_layout_set_ellipsize (data->layout, PANGO_ELLIPSIZE_END);
pango_layout_set_auto_dir (data->layout, FALSE);
pango_layout_set_text (data->layout, text, -1);
pango_layout_get_pixel_size (data->layout, &width, &height);
if (attrib->flags & CompTextFlagWithBackground)
{
width += 2 * attrib->bgHMargin;
height += 2 * attrib->bgVMargin;
}
width = MIN (attrib->maxWidth, width);
height = MIN (attrib->maxHeight, height);
/* update the size of the pango layout */
layoutWidth = attrib->maxWidth;
if (attrib->flags & CompTextFlagWithBackground)
layoutWidth -= 2 * attrib->bgHMargin;
pango_layout_set_width (data->layout, layoutWidth * PANGO_SCALE);
if (!textUpdateSurface (s, data, width, height))
return FALSE;
pango_cairo_update_layout (data->cr, data->layout);
cairo_save (data->cr);
cairo_set_operator (data->cr, CAIRO_OPERATOR_CLEAR);
cairo_paint (data->cr);
cairo_restore (data->cr);
cairo_set_operator (data->cr, CAIRO_OPERATOR_OVER);
if (attrib->flags & CompTextFlagWithBackground)
{
textDrawTextBackground (data->cr, 0, 0, width, height,
MIN (attrib->bgHMargin, attrib->bgVMargin));
cairo_set_source_rgba (data->cr,
attrib->bgColor[0] / 65535.0,
attrib->bgColor[1] / 65535.0,
attrib->bgColor[2] / 65535.0,
attrib->bgColor[3] / 65535.0);
cairo_fill (data->cr);
cairo_move_to (data->cr, attrib->bgHMargin, attrib->bgVMargin);
}
cairo_set_source_rgba (data->cr,
attrib->color[0] / 65535.0,
attrib->color[1] / 65535.0,
attrib->color[2] / 65535.0,
attrib->color[3] / 65535.0);
pango_cairo_show_layout (data->cr, data->layout);
return TRUE;
}
开发者ID:compiz-reloaded,项目名称:compiz-plugins-main,代码行数:80,代码来源:text.c
示例10: draw_dvdag_node_1
static void draw_dvdag_node_1(cairo_t *cr, dv_dag_node_t *node) {
// Count node drawn
S->nd++;
// Node color
double x = node->vl->c;
double y = node->c;
double c[4];
int v = 0;
switch (S->nc) {
case 0:
v = node->pi->info.worker; break;
case 1:
v = node->pi->info.cpu; break;
case 2:
v = node->pi->info.kind; break;
default:
v = node->pi->info.worker;
}
lookup_color(v, c, c+1, c+2, c+3);
// Alpha
double alpha = 1.0;
// Draw path
cairo_save(cr);
cairo_new_path(cr);
if (dv_is_union(node)) {
double xx, yy, w, h;
if (dv_is_expanding(node) || dv_is_shrinking(node)) {
double margin = 1.0;
if (dv_is_expanding(node)) {
// Fading out
alpha = get_alpha_fading_out();
margin = get_alpha_fading_in();
} else {
// Fading in
alpha = get_alpha_fading_in();
margin = get_alpha_fading_out();
}
// Large-sized box
margin *= DV_UNION_NODE_MARGIN;
xx = x - node->lc * DV_HDIS - DV_RADIUS - margin;
yy = y - DV_RADIUS - margin;
dv_dag_node_t * hd = (dv_dag_node_t *) node->heads->top->item;
h = hd->dc * DV_VDIS + 2 * (DV_RADIUS + margin);
w = (node->lc + node->rc) * DV_HDIS + 2 * (DV_RADIUS + margin);
} else {
// Normal-sized box
xx = x - DV_RADIUS;
yy = y - DV_RADIUS;
w = 2 * DV_RADIUS;
h = 2 * DV_RADIUS;
if (node->lv > S->a->new_sel) {
// Fading out
alpha = get_alpha_fading_out();
} else if (node->lv > S->sel) {
// Fading in
alpha = get_alpha_fading_in();
}
}
// Box
cairo_move_to(cr, xx, yy);
cairo_line_to(cr, xx + w, yy);
cairo_line_to(cr, xx + w, yy + h);
cairo_line_to(cr, xx, yy + h);
cairo_close_path(cr);
} else {
// Normal-sized circle
cairo_arc(cr, x, y, DV_RADIUS, 0.0, 2*M_PI);
if (node->lv > S->a->new_sel) {
// Fading out
alpha = get_alpha_fading_out();
} else if (node->lv > S->sel) {
// Fading in
alpha = get_alpha_fading_in();
}
}
// Draw node
cairo_set_source_rgba(cr, c[0], c[1], c[2], c[3] * alpha);
cairo_fill_preserve(cr);
cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, alpha);
cairo_stroke(cr);
cairo_restore(cr);
}
开发者ID:zanton,项目名称:dagviz,代码行数:92,代码来源:draw.c
示例11: dt_iop_zonesystem_bar_draw
static gboolean dt_iop_zonesystem_bar_draw(GtkWidget *widget, cairo_t *crf, dt_iop_module_t *self)
{
dt_iop_zonesystem_gui_data_t *g = (dt_iop_zonesystem_gui_data_t *)self->gui_data;
dt_iop_zonesystem_params_t *p = (dt_iop_zonesystem_params_t *)self->params;
const int inset = DT_ZONESYSTEM_INSET;
GtkAllocation allocation;
gtk_widget_get_allocation(widget, &allocation);
int width = allocation.width, height = allocation.height;
cairo_surface_t *cst = dt_cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
cairo_t *cr = cairo_create(cst);
/* clear background */
cairo_set_source_rgb(cr, .15, .15, .15);
cairo_paint(cr);
/* translate and scale */
width -= 2 * inset;
height -= 2 * inset;
cairo_save(cr);
cairo_translate(cr, inset, inset);
cairo_scale(cr, width, height);
/* render the bars */
float zonemap[MAX_ZONE_SYSTEM_SIZE] = { 0 };
_iop_zonesystem_calculate_zonemap(p, zonemap);
float s = (1. / (p->size - 2));
cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
for(int i = 0; i < p->size - 1; i++)
{
/* draw the reference zone */
float z = s * i;
cairo_rectangle(cr, (1. / (p->size - 1)) * i, 0, (1. / (p->size - 1)),
DT_ZONESYSTEM_REFERENCE_SPLIT - DT_ZONESYSTEM_BAR_SPLIT_WIDTH);
cairo_set_source_rgb(cr, z, z, z);
cairo_fill(cr);
/* draw zone mappings */
cairo_rectangle(cr, zonemap[i], DT_ZONESYSTEM_REFERENCE_SPLIT + DT_ZONESYSTEM_BAR_SPLIT_WIDTH,
(zonemap[i + 1] - zonemap[i]), 1.0 - DT_ZONESYSTEM_REFERENCE_SPLIT);
cairo_set_source_rgb(cr, z, z, z);
cairo_fill(cr);
}
cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
cairo_restore(cr);
/* render zonebar control lines */
cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
cairo_set_line_width(cr, 1.);
cairo_rectangle(cr, inset, inset, width, height);
cairo_set_source_rgb(cr, .1, .1, .1);
cairo_stroke(cr);
cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
/* render control points handles */
cairo_set_source_rgb(cr, 0.6, 0.6, 0.6);
cairo_set_line_width(cr, DT_PIXEL_APPLY_DPI(1.));
const float arrw = DT_PIXEL_APPLY_DPI(7.0f);
for(int k = 1; k < p->size - 1; k++)
{
float nzw = zonemap[k + 1] - zonemap[k];
float pzw = zonemap[k] - zonemap[k - 1];
if((((g->mouse_x / width) > (zonemap[k] - (pzw / 2.0)))
&& ((g->mouse_x / width) < (zonemap[k] + (nzw / 2.0)))) || p->zone[k] != -1)
{
gboolean is_under_mouse = ((width * zonemap[k]) - arrw * .5f < g->mouse_x
&& (width * zonemap[k]) + arrw * .5f > g->mouse_x);
cairo_move_to(cr, inset + (width * zonemap[k]), height + (2 * inset) - 1);
cairo_rel_line_to(cr, -arrw * .5f, 0);
cairo_rel_line_to(cr, arrw * .5f, -arrw);
cairo_rel_line_to(cr, arrw * .5f, arrw);
cairo_close_path(cr);
if(is_under_mouse)
cairo_fill(cr);
else
cairo_stroke(cr);
}
}
/* push mem surface into widget */
cairo_destroy(cr);
cairo_set_source_surface(crf, cst, 0, 0);
cairo_paint(crf);
cairo_surface_destroy(cst);
return TRUE;
}
开发者ID:dirkbr,项目名称:darktable,代码行数:91,代码来源:zonesystem.c
示例12: cairo_dock_render_overlays_to_context
void cairo_dock_render_overlays_to_context (CairoDataRenderer *pRenderer, int iNumValue, cairo_t *pCairoContext)
{
if (pRenderer->pEmblems != NULL)
{
CairoDataRendererEmblem *pEmblem;
pEmblem = &pRenderer->pEmblems[iNumValue];
if (pEmblem->pSurface != NULL)
{
cairo_set_source_surface (pCairoContext,
pEmblem->pSurface,
(.5 + pEmblem->param.fX - pEmblem->param.fWidth/2) * pRenderer->iWidth,
(.5 - pEmblem->param.fY - pEmblem->param.fHeight/2) * pRenderer->iHeight);
cairo_paint_with_alpha (pCairoContext, pEmblem->param.fAlpha);
}
}
if (pRenderer->pLabels != NULL)
{
CairoDataRendererText *pLabel;
pLabel = &pRenderer->pLabels[iNumValue];
if (pLabel->pSurface != NULL)
{
double f = MIN (pLabel->param.fWidth * pRenderer->iWidth / pLabel->iTextWidth, pLabel->param.fHeight * pRenderer->iHeight / pLabel->iTextHeight); // on garde le ratio du texte.
if (pLabel->iTextHeight * f > 7) // sinon illisible
{
cairo_save (pCairoContext);
cairo_scale (pCairoContext,
f,
f);
cairo_set_source_surface (pCairoContext,
pLabel->pSurface,
.5+floor ((.5 + pLabel->param.fX) * pRenderer->iWidth/f - pLabel->iTextWidth /2),
.5+floor ((.5 - pLabel->param.fY) * pRenderer->iHeight/f - pLabel->iTextHeight /2));
cairo_paint_with_alpha (pCairoContext, pLabel->param.pColor[3]);
cairo_restore (pCairoContext);
}
}
}
if (pRenderer->bWriteValues && pRenderer->bCanRenderValueAsText)
{
CairoDataRendererTextParam *pText;
pText = &pRenderer->pValuesText[iNumValue];
if (pText->fWidth != 0 && pText->fHeight != 0)
{
cairo_data_renderer_format_value (pRenderer, iNumValue);
cairo_save (pCairoContext);
cairo_set_source_rgb (pCairoContext, pText->pColor[0], pText->pColor[1], pText->pColor[2]);
PangoLayout *pLayout = pango_cairo_create_layout (pCairoContext);
PangoFontDescription *fd = pango_font_description_from_string ("Monospace 12");
pango_layout_set_font_description (pLayout, fd);
PangoRectangle log;
pango_layout_set_text (pLayout, pRenderer->cFormatBuffer, -1);
pango_layout_get_pixel_extents (pLayout, NULL, &log);
double fZoom = MIN (pText->fWidth * pRenderer->iWidth / (log.width), pText->fHeight * pRenderer->iHeight / log.height);
cairo_move_to (pCairoContext,
floor ((.5 + pText->fX) * pRenderer->iWidth - log.width*fZoom/2),
floor ((.5 - pText->fY) * pRenderer->iHeight - log.height*fZoom/2));
cairo_scale (pCairoContext,
fZoom,
fZoom);
pango_cairo_show_layout (pCairoContext, pLayout);
g_object_unref (pLayout);
cairo_restore (pCairoContext);
}
}
}
开发者ID:363734,项目名称:cairo-dock-core,代码行数:71,代码来源:cairo-dock-data-renderer.c
示例13: ppg_ruler_draw_arrow
static void
ppg_ruler_draw_arrow (PpgRuler *ruler)
{
PpgRulerPrivate *priv;
GtkStyle *style;
GdkColor base_light;
GdkColor base_dark;
GdkColor hl_light;
GdkColor hl_dark;
cairo_t *cr;
gint half;
gint line_width;
gint center;
gint middle;
gdouble top;
gdouble bottom;
gdouble left;
gdouble right;
g_return_if_fail(PPG_IS_RULER(ruler));
priv = ruler->priv;
style = gtk_widget_get_style(GTK_WIDGET(ruler));
cr = gdk_cairo_create(priv->arrow);
cairo_save(cr);
cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
cairo_rectangle(cr, 0, 0, ARROW_SIZE, ARROW_SIZE);
cairo_fill(cr);
cairo_restore(cr);
center = middle = half = ARROW_SIZE / 2;
line_width = half / 6;
base_light = style->light[GTK_STATE_SELECTED];
base_dark = style->dark[GTK_STATE_SELECTED];
hl_light = style->light[GTK_STATE_SELECTED];
hl_dark = style->mid[GTK_STATE_SELECTED];
top = middle - half + line_width + 0.5;
bottom = middle + half - line_width + 0.5;
left = center - half + line_width + 0.5;
right = center +half - line_width - 0.5;
cairo_set_line_width(cr, line_width);
cairo_move_to(cr, left + line_width, top + line_width);
cairo_line_to(cr, right + line_width, top + line_width);
cairo_line_to(cr, right + line_width, middle + line_width);
cairo_line_to(cr, center + line_width, bottom + line_width);
cairo_line_to(cr, left + line_width, middle + line_width);
cairo_line_to(cr, left + line_width, top + line_width);
cairo_close_path(cr);
cairo_set_source_rgba(cr, 0, 0, 0, 0.5);
cairo_fill(cr);
cairo_move_to(cr, left, top);
cairo_line_to(cr, center, top);
cairo_line_to(cr, center, bottom);
cairo_line_to(cr, left, middle);
cairo_line_to(cr, left, top);
cairo_close_path(cr);
gdk_cairo_set_source_color(cr, &base_light);
cairo_fill(cr);
cairo_move_to(cr, center, top);
cairo_line_to(cr, right, top);
cairo_line_to(cr, right, middle);
cairo_line_to(cr, center, bottom);
cairo_line_to(cr, center, top);
cairo_close_path(cr);
gdk_cairo_set_source_color(cr, &base_light);
cairo_fill_preserve(cr);
cairo_set_source_rgba(cr,
base_dark.red / 65535.0,
base_dark.green / 65535.0,
base_dark.blue / 65535.0,
0.5);
cairo_fill(cr);
cairo_move_to(cr, left + line_width, top + line_width);
cairo_line_to(cr, right - line_width, top + line_width);
cairo_line_to(cr, right - line_width, middle);
cairo_line_to(cr, center, bottom - line_width - 0.5);
cairo_line_to(cr, left + line_width, middle);
cairo_line_to(cr, left + line_width, top + line_width);
cairo_close_path(cr);
gdk_cairo_set_source_color(cr, &hl_light);
cairo_stroke(cr);
cairo_move_to(cr, left, top);
cairo_line_to(cr, right, top);
cairo_line_to(cr, right, middle);
cairo_line_to(cr, center, bottom);
cairo_line_to(cr, left, middle);
cairo_line_to(cr, left, top);
cairo_close_path(cr);
gdk_cairo_set_source_color(cr, &base_dark);
cairo_stroke(cr);
//.........这里部分代码省略.........
开发者ID:jjardon,项目名称:perfkit,代码行数:101,代码来源:ppg-ruler.c
示例14: _lib_histogram_expose_callback
static gboolean _lib_histogram_expose_callback(GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
dt_lib_module_t *self = (dt_lib_module_t *)user_data;
dt_lib_histogram_t *d = (dt_lib_histogram_t *)self->data;
dt_develop_t *dev = darktable.develop;
float *hist = dev->histogram;
float hist_max = dev->histogram_type == DT_DEV_HISTOGRAM_LINEAR?dev->histogram_max:logf(1.0 + dev->histogram_max);
const int inset = DT_HIST_INSET;
int width = widget->allocation.width, height = widget->allocation.height;
cairo_surface_t *cst = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
cairo_t *cr = cairo_create(cst);
GtkStyle *style=gtk_rc_get_style_by_paths(gtk_settings_get_default(), NULL,"GtkWidget", GTK_TYPE_WIDGET);
if(!style) style = gtk_rc_get_style(widget);
cairo_set_source_rgb(cr, style->bg[0].red/65535.0, style->bg[0].green/65535.0, style->bg[0].blue/65535.0);
cairo_paint(cr);
cairo_translate(cr, 4*inset, inset);
width -= 2*4*inset;
height -= 2*inset;
if(d->mode_x == 0)
{
d->color_w = 0.06*width;
d->button_spacing = 0.01*width;
d->button_h = 0.06*width;
d->button_y = d->button_spacing;
d->mode_w = d->color_w;
d->mode_x = width - 3*(d->color_w+d->button_spacing) - (d->mode_w+d->button_spacing);
d->red_x = width - 3*(d->color_w+d->button_spacing);
d->green_x = width - 2*(d->color_w+d->button_spacing);
d->blue_x = width - (d->color_w+d->button_spacing);
}
// TODO: probably this should move to the configure-event callback! That would be future proof if we ever (again) allow to resize the side panels.
const gint stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width);
// this code assumes that the first expose comes before the first (preview) pipe is processed and that the size of the widget doesn't change!
if(dev->histogram_waveform_width == 0)
{
dev->histogram_waveform = (uint32_t*)calloc(height * stride / 4, sizeof(uint32_t));
dev->histogram_waveform_stride = stride;
dev->histogram_waveform_height = height;
dev->histogram_waveform_width = width;
// return TRUE; // there are enough expose events following ...
}
#if 1
// draw shadow around
float alpha = 1.0f;
cairo_set_line_width(cr, 0.2);
for(int k=0; k<inset; k++)
{
cairo_rectangle(cr, -k, -k, width + 2*k, height + 2*k);
cairo_set_source_rgba(cr, 0, 0, 0, alpha);
alpha *= 0.5f;
cairo_fill(cr);
}
cairo_set_line_width(cr, 1.0);
#else
cairo_set_line_width(cr, 1.0);
cairo_set_source_rgb (cr, .1, .1, .1);
cairo_rectangle(cr, 0, 0, width, height);
cairo_stroke(cr);
#endif
cairo_rectangle(cr, 0, 0, width, height);
cairo_clip(cr);
cairo_set_source_rgb (cr, .3, .3, .3);
cairo_rectangle(cr, 0, 0, width, height);
cairo_fill(cr);
if(d->highlight == 1)
{
cairo_set_source_rgb (cr, .5, .5, .5);
cairo_rectangle(cr, 0, 0, .2*width, height);
cairo_fill(cr);
}
else if(d->highlight == 2)
{
cairo_set_source_rgb (cr, .5, .5, .5);
cairo_rectangle(cr, 0.2*width, 0, width, height);
cairo_fill(cr);
}
// draw grid
cairo_set_line_width(cr, .4);
cairo_set_source_rgb (cr, .1, .1, .1);
if(dev->histogram_type == DT_DEV_HISTOGRAM_WAVEFORM)
dt_draw_waveform_lines(cr, 0, 0, width, height);
else
dt_draw_grid(cr, 4, 0, 0, width, height);
if(hist_max > 0)
{
cairo_save(cr);
if(dev->histogram_type == DT_DEV_HISTOGRAM_WAVEFORM)
{
// make the color channel selector work:
uint8_t *buf = (uint8_t*)malloc(sizeof(uint8_t) * height * stride);
//.........这里部分代码省略.........
开发者ID:MarcAntoine-Arnaud,项目名称:darktable,代码行数:101,代码来源:histogram.c
示例15: ppg_ruler_draw_ruler
static void
ppg_ruler_draw_ruler (PpgRuler *ruler)
{
PpgRulerPrivate *priv;
GtkAllocation alloc;
PangoLayout *layout;
cairo_t *cr;
GtkStyle *style;
GdkColor text_color;
gint text_width;
gint text_height;
gdouble every = 1.0;
gdouble n_seconds;
gdouble v;
gdouble p;
gint x;
gint xx;
gint n;
gint z = 0;
g_return_if_fail(PPG_IS_RULER(ruler));
priv = ruler->priv;
gtk_widget_get_allocation(GTK_WIDGET(ruler), &alloc);
style = gtk_widget_get_style(GTK_WIDGET(ruler));
cr = gdk_cairo_create(priv->ruler);
cairo_save(cr);
cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
cairo_rectangle(cr, 0, 0, alloc.width, alloc.height);
cairo_fill(cr);
cairo_restore(cr);
text_color = style->text[GTK_STATE_NORMAL];
cairo_set_line_width(cr, 1.0);
gdk_cairo_set_source_color(cr, &text_color);
layout = pango_cairo_create_layout(cr);
pango_layout_set_font_description(layout, priv->font_desc);
pango_layout_set_markup(layout, "00:00:00", -1);
pango_layout_get_pixel_size(layout, &text_width, &text_height);
text_width += 5;
n_seconds = priv->upper - priv->lower;
if ((alloc.width / n_seconds) < text_width) {
every = ceil(text_width / (alloc.width / n_seconds));
}
for (v = ceil(priv->lower); v < priv->upper; v += every) {
gdk_cairo_set_source_color(cr, &text_color);
x = get_x_offset(priv, &alloc, v);
cairo_move_to(cr, x + 0.5, alloc.height - 1.5);
cairo_line_to(cr, x + 0.5, 0.5);
/*
* TODO: Mini lines.
*/
for (p = v, n = 0, z = 0;
p < v + every;
p += (every / 10), n++, z++)
{
if (n == 0 || n == 10) {
continue;
}
xx = get_x_offset(priv, &alloc, p);
cairo_move_to(cr, xx + 0.5, alloc.height - 1.5);
if (z % 2 == 0) {
cairo_line_to(cr, xx + 0.5, text_height + 8.5);
} else {
cairo_line_to(cr, xx + 0.5, text_height + 5.5);
}
}
cairo_stroke(cr);
cairo_move_to(cr, x + 1.5, 1.5);
ppg_ruler_update_layout_text(ruler, layout, v);
pango_cairo_show_layout(cr, layout);
}
g_object_unref(layout);
cairo_destroy(cr);
}
开发者ID:jjardon,项目名称:perfkit,代码行数:85,代码来源:ppg-ruler.c
-
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:18144|2023-10-27
-
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9633|2022-11-06
-
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8161|2022-11-06
-
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8538|2022-11-06
-
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8439|2022-11-06
-
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9359|2022-11-06
-
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8410|2022-11-06
-
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7848|2022-11-06
-
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8395|2022-11-06
-
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7387|2022-11-06
|
请发表评论