Exemple #1
0
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);
}
Exemple #2
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);
}
Exemple #3
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);
}
Exemple #6
0
/************************************************************************
 *                                                                       *
 *  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);
}
Exemple #7
0
/************************************************************************
 *                                                                      *
 *  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;
}
Exemple #10
0
static void
meta_background_actor_reset_culling (MetaCullable *cullable)
{
  MetaBackgroundActor *self = META_BACKGROUND_ACTOR (cullable);
  set_clip_region (self, NULL);
}