Example #1
0
static void
linewidth_area_draw (GtkWidget *linewidth_area)
{
  GdkColor *win_bg;
  GdkColor line;
  int width, height;
  int i;
  int x_offs;
  
  if (!linewidth_area_pixmap)     /* we haven't gotten initial expose yet,
                               * no point in drawing anything */
    return;


  if (!linewidth_area_gc) {
    linewidth_area_gc = gdk_gc_new (linewidth_area_pixmap);
    gdk_gc_set_line_attributes(linewidth_area_gc, 1,
			       GDK_LINE_ON_OFF_DASH,
			       GDK_CAP_BUTT,
			       GDK_JOIN_MITER);
  }

  gdk_drawable_get_size (linewidth_area_pixmap, &width, &height);

  win_bg = &(linewidth_area->style->bg[GTK_STATE_NORMAL]);
  line = color_gdk_black;

  gdk_gc_set_foreground (linewidth_area_gc, win_bg);
  gdk_draw_rectangle (linewidth_area_pixmap, linewidth_area_gc, 1,
		      0, 0, width, height);

  gdk_gc_set_foreground (linewidth_area_gc, &line);
  
  for (i=0;i<=NUMLINES;i++) {
    x_offs = X_OFFSET(i);

    gdk_draw_rectangle (linewidth_area_pixmap, linewidth_area_gc, 1,
			x_offs, 2, i, height-4);
    
  }
  
  if (active_linewidth != 0) {
  gdk_draw_rectangle (linewidth_area_pixmap, linewidth_area_gc, 0,
		      X_OFFSET(active_linewidth)-2, 0,
		      active_linewidth+4, height-1);
  }

  gdk_draw_drawable (linewidth_area->window, linewidth_area_gc, linewidth_area_pixmap,
		     0, 0, 0, 0, width, height);
}
void lmt_compute_param_x(WYSIWYG *wn, int i, int32 *anchor_x, int32 *width)
{
	int32 h, wr, left = 0, right = 0, x_center;
	
	LAYOUT(wn) wo =  lmt_off_to_abs(wn, X_REF, WIDTH_OFFSET(i)); /*wid offst */
	h =  lmt_off_to_abs(wn, X_REF, X_OFFSET(i)); /* horizontal offset */
	wr = lmt_rel_to_abs(wn, 7, 4, &FRAME_DATA(i) rel_data);
	/* i4 width relationship */
	switch(LOCKPOINT(i))		/* the lock point */
	{
	  case TL:					/* 'x' = left */
	  case BL:
	  case CL:
	  case HL:
		h += lmt_rel_to_abs(wn, 3, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		left = h;
		if (wr)
			right = wr + LAYOUT(wn) wo;
		else
			right = h + LAYOUT(wn) wo;
		*anchor_x = left;
		break;
	  case TR:					/* 'x' = right */
	  case BR:
	  case CR:
	  case HR:
		h += lmt_rel_to_abs(wn, 4, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		right = h;
		if (wr)
			left = wr + LAYOUT(wn) wo;
		else
			left = h - LAYOUT(wn) wo;
		*anchor_x = right;
		break;
	  case TC:					/* 'x' = center */
	  case BC:
	  case CC:
	  case HC:
		h += lmt_rel_to_abs(wn, 5, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		x_center = h;			/* x-center */
		if (wr)
		{
			LAYOUT(wn) wo += wr;
			LAYOUT(wn) wo -= h;
			(LAYOUT(wn) wo < 0) ? (LAYOUT(wn) wo *= -2) : (LAYOUT(wn) wo *= 2);
		}
		left = (h - (LAYOUT(wn) wo / 2)); /* left */
		right = (h + (LAYOUT(wn) wo / 2)); /* right */
		*anchor_x = x_center;
		break;
	}
	*width = right - left;
}
void lmt_compute_x(WYSIWYG *wn, int i)
{
	int32 h, wr;
	
	h =  lmt_off_to_abs(wn, X_REF, X_OFFSET(i)); /* horizontal offset */
	wr = lmt_rel_to_abs(wn, 7, 4, &FRAME_DATA(i) rel_data);
	/* i4 width relationship */
	switch(LOCKPOINT(i))		/* the lock point */
	{
	  case TL:					/* 'x' = left */
	  case BL:
	  case CL:
	  case HL:
		h += lmt_rel_to_abs(wn, 3, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		ELE_DATA(i) rot_rect_left = h; /* left */
		if (wr)					/* right */
			ELE_DATA(i) rot_rect_right = wr + LAYOUT(wn) wo;
		else
			ELE_DATA(i) rot_rect_right = h + LAYOUT(wn) wo;
		ELE_DATA(i) rot_rect_x_center =	/* x-center */
			(ELE_DATA(i) rot_rect_right + h) / 2;
		break;
	  case TR:					/* 'x' = right */
	  case BR:
	  case CR:
	  case HR:
		h += lmt_rel_to_abs(wn, 4, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		ELE_DATA(i) rot_rect_right = h;	/* right */
		if (wr)					/* left */
			ELE_DATA(i) rot_rect_left = wr + LAYOUT(wn) wo;
		else
			ELE_DATA(i) rot_rect_left = h - LAYOUT(wn) wo;
		ELE_DATA(i) rot_rect_x_center =	/* x-center */
			(h + ELE_DATA(i) rot_rect_left) / 2;
		break;
	  case TC:					/* 'x' = center */
	  case BC:
	  case CC:
	  case HC:
		h += lmt_rel_to_abs(wn, 5, 0, &FRAME_DATA(i) rel_data);
		/* offset + relationship */
		ELE_DATA(i) rot_rect_x_center = h; /* x-center */
		if (wr)
		{
			LAYOUT(wn) wo += wr;
			LAYOUT(wn) wo -= h;
			(LAYOUT(wn) wo < 0) ? (LAYOUT(wn) wo *= -2) : (LAYOUT(wn) wo *= 2);
		}
		ELE_DATA(i) rot_rect_left = (h - (LAYOUT(wn) wo / 2)); /* left */
		ELE_DATA(i) rot_rect_right = (h + (LAYOUT(wn) wo / 2));	/* right */
		break;
	}
}
Example #4
0
static int
linewidth_area_target (int x, int y)
{
  int i;
  int x_offs;
  for (i=1;i<=NUMLINES;i++) {
    x_offs = X_OFFSET(i);
    if ((x>=x_offs-PIXELS_BETWEEN_LINES/2) &&
	(x<x_offs+i+PIXELS_BETWEEN_LINES/2))
      return i;
  }
  return 0;
}