void AspRegionList::display(spAspCell_t cell, AspTraceList *selTraceList, spAspDataInfo_t dataInfo) { double px,py,pw,ph; cell->getPixCell(px,py,pw,ph); double vx,vy,vw,vh; cell->getValCell(vx,vy,vw,vh); set_clip_region((int)px-1,(int)(py+2*(cell->getCali(VERT))),(int)pw,(int)ph); AspRegionMap::iterator itr; spAspRegion_t region; for (itr = regionMap->begin(); itr != regionMap->end(); ++itr) { region = itr->second; if(region->dataID != "") { spAspTrace_t trace = selTraceList->getTraceByKey(region->dataID); if(trace != nullAspTrace) { region->display(cell,trace,dataInfo); } } } selTraceList->showBCModel(cell); // shown only if model exist and BC not applied set_clip_region(0,0,0,0); }
void AspAnnoList::display(spAspCell_t cell, spAspDataInfo_t dataInfo) { double px,py,pw,ph; cell->getPixCell(px,py,pw,ph); set_clip_region((int)px,(int)py,(int)pw,(int)ph); AspAnnoMap::iterator itr; for (itr = annoMap->begin(); itr != annoMap->end(); ++itr) { itr->second->display(cell,dataInfo); } set_clip_region(0,0,0,0); }
/************************************************************************ * * * Draw part of polygon's segment. That is, two lines between * 'vertex_selected' and the neighboring two vertices. * It is called when a user needs to resize a polygon. * * */ void Polygon::draw_resize(void) { set_clip_region(FRAME_CLIP_TO_IMAGE); if (bkg_pixmap){ // // Redraw entire polygon // draw(); }else{ // // Redraw the two segments that moved // if (vertex_selected == 0){ if (closed){ g_draw_line(gdev, pnt[npnts-1].x, pnt[npnts-1].y, pnt[0].x, pnt[0].y, color); } }else{ g_draw_line(gdev, pnt[vertex_selected-1].x, pnt[vertex_selected-1].y, pnt[vertex_selected].x, pnt[vertex_selected].y, color); } if (vertex_selected == (npnts-1)){ if (closed) { g_draw_line(gdev, pnt[vertex_selected].x, pnt[vertex_selected].y, pnt[0].x, pnt[0].y, color); } }else{ g_draw_line(gdev, pnt[vertex_selected].x, pnt[vertex_selected].y, pnt[vertex_selected+1].x, pnt[vertex_selected+1].y, color); } g_draw_points(gdev, pnt+vertex_selected, 1, color); if (roi_state(ROI_STATE_MARK)){ draw_mark(pnt[vertex_selected].x, pnt[vertex_selected].y); } } set_clip_region(FRAME_NO_CLIP); }
static void meta_background_actor_cull_out (MetaCullable *cullable, cairo_region_t *unobscured_region, cairo_region_t *clip_region) { MetaBackgroundActor *self = META_BACKGROUND_ACTOR (cullable); set_clip_region (self, clip_region); }
static void meta_background_actor_dispose (GObject *object) { MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object); set_clip_region (self, NULL); G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object); }
/************************************************************************ * * * Draw a multi connected lines to form a polygon. * * It is called when a polygon is completed. * * */ void Polygon::draw(void) { int i; if ((pnt == NULL) || (pnt[0].x == G_INIT_POS)) return; set_clip_region(FRAME_CLIP_TO_IMAGE); if (visibility != VISIBLE_NEVER && visible != FALSE){ XPoint *point = new XPoint[npnts+1]; for (i=0; i<npnts; i++){ point[i].x = pnt[i].x; point[i].y = pnt[i].y; } int npoints; if (closed){ npoints = npnts + 1; point[npnts].x = pnt[0].x; point[npnts].y = pnt[0].y; }else{ npoints = npnts; } G_Set_Color(gdev, color); XSetLineAttributes(gdev->xdpy, gdev->xgc, 0, LineSolid, CapButt, JoinBevel); XDrawLines(gdev->xdpy, gdev->xid, gdev->xgc, point, npoints, CoordModeOrigin); delete[] point; } roi_set_state(ROI_STATE_EXIST); if (roi_state(ROI_STATE_MARK)){ mark(); } set_clip_region(FRAME_NO_CLIP); }
/************************************************************************ * * * Erase part of a polygon. That is, two lines between * 'vertex_selected' and the neighboring two vertices. * It is called when a user needs to resize a polygon. * * */ void Polygon::erase_resize(void) { if (bkg_pixmap){ // // Erase the two segments // set_clip_region(FRAME_CLIP_TO_IMAGE); if (vertex_selected == 0){ if (closed){ redisplay_bkg(pnt[npnts-1].x, pnt[npnts-1].y, pnt[0].x, pnt[0].y); } }else{ redisplay_bkg(pnt[vertex_selected-1].x, pnt[vertex_selected-1].y, pnt[vertex_selected].x, pnt[vertex_selected].y); } if (vertex_selected == (npnts-1)){ if (closed) { redisplay_bkg(pnt[vertex_selected].x, pnt[vertex_selected].y, pnt[0].x, pnt[0].y); } }else{ redisplay_bkg(pnt[vertex_selected].x, pnt[vertex_selected].y, pnt[vertex_selected+1].x, pnt[vertex_selected+1].y); } }else{ // // XOR the two segments // draw_resize(); } set_clip_region(FRAME_NO_CLIP); }
static void meta_shaped_texture_dispose (GObject *object) { MetaShapedTexture *self = (MetaShapedTexture *) object; MetaShapedTexturePrivate *priv = self->priv; if (priv->paint_tower) meta_texture_tower_free (priv->paint_tower); priv->paint_tower = NULL; g_clear_pointer (&priv->texture, cogl_object_unref); g_clear_pointer (&priv->opaque_region, cairo_region_destroy); meta_shaped_texture_set_mask_texture (self, NULL); set_unobscured_region (self, NULL); set_clip_region (self, NULL); G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object); }
static cairo_status_t clip_and_composite (cairo_composite_rectangles_t *extents, draw_func_t draw_func, void *draw_closure) { cairo_status_t status; status = set_clip_region (extents); if (unlikely (status)) return status; if (extents->op == CAIRO_OPERATOR_SOURCE) { status = clip_and_composite_source (extents, draw_func, draw_closure); } else { if (extents->op == CAIRO_OPERATOR_CLEAR) { extents->source_pattern.solid = _cairo_pattern_white; extents->op = CAIRO_OPERATOR_DEST_OUT; } if (! _cairo_clip_is_region (extents->clip)) { if (extents->is_bounded) status = clip_and_composite_with_mask (extents, draw_func, draw_closure); else status = clip_and_composite_combine (extents, draw_func, draw_closure); } else { status = draw_func ((cairo_image_surface_t *) extents->surface, draw_closure, extents->op, &extents->source_pattern.base, 0, 0, &extents->bounded); } } if (status == CAIRO_STATUS_SUCCESS && ! extents->is_bounded) status = fixup_unbounded (extents); return status; }
static void meta_background_actor_reset_culling (MetaCullable *cullable) { MetaBackgroundActor *self = META_BACKGROUND_ACTOR (cullable); set_clip_region (self, NULL); }