Oops, patch file missing, here it is...
diff -urN -x Makefile.in -x dia.pot -x configure -x CVS -x .cvsignore -x intl -x ABOUT-NLS -x COPYING -x aclocal.m4 -x config.guess -x config.h.in -x config.sub -x install-sh -x ltconfig -x ltmain.sh -x missing -x mkinstalldirs -x Makefile.in.in -x cat-id-tbl.c -x cat-id-tbl.c.orig -x dia.pot.orig -x *.gmo -x Makefile -x .deps -x .libs -x *.po -x *.s dia-cvs/dia/ChangeLog dia-mine/dia/ChangeLog
--- dia-cvs/dia/ChangeLog	Tue Jan 25 20:29:57 2000
+++ dia-mine/dia/ChangeLog	Tue Jan 25 20:26:12 2000
@@ -1,3 +1,13 @@
+2000-01-25 Steffen Macke <[EMAIL PROTECTED]>
+
+	* lib/arrows.h; added ARROW_SLASHED_CROSS to the enum
+	* lib/arrows.c: added the functions draw_slashed_cross and 
+	calculate_slashed_cross; added case ARROW_SLASHED_CROSS to draw_arrow
+	* app/lineprops_area.c: added ARROW_SLASHED_CROSS to 
+	dia_arrow_chooser_new; added case ARROW_SLASHED_CROSS to 
+	dia_arrow_preview_expose
+	* lib/widgets.c: added new menuitem in dia_arrow_selector_init
+	
 2000-01-24  James Henstridge  <[EMAIL PROTECTED]>
 
 	* lib/geometry.[ch]: added inline versions of functions.  Used
diff -urN -x Makefile.in -x dia.pot -x configure -x CVS -x .cvsignore -x intl -x ABOUT-NLS -x COPYING -x aclocal.m4 -x config.guess -x config.h.in -x config.sub -x install-sh -x ltconfig -x ltmain.sh -x missing -x mkinstalldirs -x Makefile.in.in -x cat-id-tbl.c -x cat-id-tbl.c.orig -x dia.pot.orig -x *.gmo -x Makefile -x .deps -x .libs -x *.po -x *.s dia-cvs/dia/app/lineprops_area.c dia-mine/dia/app/lineprops_area.c
--- dia-cvs/dia/app/lineprops_area.c	Tue Jan 25 20:29:57 2000
+++ dia-mine/dia/app/lineprops_area.c	Tue Jan 25 20:15:17 2000
@@ -241,6 +241,18 @@
 	gdk_draw_line(win, gc, x+width-5,y+height/2, x+width-5-height/2,y+height-5);
       }
       break;
+    case ARROW_SLASHED_CROSS:
+      if (arrow->left) {
+        gdk_draw_line(win, gc, x+5,y+height/2, x+width,y+height/2); /*line*/
+        gdk_draw_line(win, gc, x+5,y+height-5, x+height-5,y+5);   /*slash*/
+        gdk_draw_line(win, gc, x+height/2,y+height-5, x+height/2,y+5);  /*cross*/
+			} else {
+        gdk_draw_line(win, gc, x,y+height/2, x+width-5,y+height/2); /*line*/
+        gdk_draw_line(win, gc, x+width-height/2-5,y+height-5, x+width-5,y+5);   /*slash*/
+        gdk_draw_line(win, gc, x+width-height/2,y+height-5, x+width-height/2,y+5);  /*cross*/
+      }
+    break;
+
     }    
     gdk_gc_set_line_attributes(gc, gcvalues.line_width, gcvalues.line_style,
 			       gcvalues.cap_style, gcvalues.join_style);
@@ -538,7 +550,7 @@
   menu = gtk_menu_new();
   gtk_object_set_data_full(GTK_OBJECT(chooser), button_menu_key, menu,
 			   (GtkDestroyNotify)gtk_widget_unref);
-  for (i = 0; i <= ARROW_HALF_HEAD; i++) {
+  for (i = 0; i <= ARROW_SLASHED_CROSS; i++) {
     mi = gtk_menu_item_new();
     gtk_object_set_data(GTK_OBJECT(mi), menuitem_enum_key, GINT_TO_POINTER(i));
     ar = dia_arrow_preview_new(i, left);
@@ -809,4 +821,8 @@
 			     lchooser->user_data);
   }
 }
+
+
+
+
 
diff -urN -x Makefile.in -x dia.pot -x configure -x CVS -x .cvsignore -x intl -x ABOUT-NLS -x COPYING -x aclocal.m4 -x config.guess -x config.h.in -x config.sub -x install-sh -x ltconfig -x ltmain.sh -x missing -x mkinstalldirs -x Makefile.in.in -x cat-id-tbl.c -x cat-id-tbl.c.orig -x dia.pot.orig -x *.gmo -x Makefile -x .deps -x .libs -x *.po -x *.s dia-cvs/dia/lib/arrows.c dia-mine/dia/lib/arrows.c
--- dia-cvs/dia/lib/arrows.c	Tue Jan 25 20:29:57 2000
+++ dia-mine/dia/lib/arrows.c	Tue Jan 25 20:15:17 2000
@@ -193,6 +193,64 @@
   renderer->ops->fill_polygon(renderer, poly, 4, color);
 }
 
+static void
+calculate_slashed_cross(Point *poly/*[6]*/, Point *to, Point *from,
+		  real length, real width)
+{
+  Point delta;
+  Point orth_delta;
+  real len;
+  int i;
+
+  delta = *to;
+  point_sub(&delta, from);
+  len = sqrt(point_dot(&delta, &delta));
+  if (len <= 0.0001) {
+    delta.x=1.0;
+    delta.y=0.0;
+  } else {
+    delta.x/=len;
+    delta.y/=len;
+  }
+
+  orth_delta.x = delta.y;
+  orth_delta.y = -delta.x;
+
+  point_scale(&delta, length/2.0);
+  point_scale(&orth_delta, width/2.0);
+
+  for(i=0; i<6;i++)poly[i] = *to;
+
+  point_add(&poly[1], &delta);
+
+  point_add(&poly[2], &delta);
+  point_add(&poly[2], &orth_delta);
+
+  point_sub(&poly[3], &delta);
+  point_sub(&poly[3], &orth_delta);
+
+  point_add(&poly[4], &orth_delta);
+  point_sub(&poly[5], &orth_delta);
+}
+
+static void
+draw_slashed_cross(Renderer *renderer, Point *to, Point *from,
+     real length, real width, real linewidth, Color *color)
+{
+     Point poly[6];
+
+      calculate_slashed_cross(poly, to, from, length, width);
+
+      renderer->ops->set_linewidth(renderer, linewidth);
+      renderer->ops->set_linestyle(renderer, LINESTYLE_SOLID);
+      renderer->ops->set_linejoin(renderer, LINEJOIN_MITER);
+      renderer->ops->set_linecaps(renderer, LINECAPS_BUTT);
+
+      renderer->ops->draw_line(renderer, &poly[0],&poly[1], color);
+      renderer->ops->draw_line(renderer, &poly[2],&poly[3], color);			
+      renderer->ops->draw_line(renderer, &poly[4],&poly[5], color);
+}
+
 void
 arrow_draw(Renderer *renderer, ArrowType type,
 	   Point *to, Point *from,
@@ -222,7 +280,13 @@
   case ARROW_FILLED_DIAMOND:
     fill_diamond(renderer, to, from, length, width, fg_color);
     break;
+  case ARROW_SLASHED_CROSS:
+    draw_slashed_cross(renderer, to, from, length, width, linewidth, fg_color);
+    break;
   }
   
 }
+
+
+
 
diff -urN -x Makefile.in -x dia.pot -x configure -x CVS -x .cvsignore -x intl -x ABOUT-NLS -x COPYING -x aclocal.m4 -x config.guess -x config.h.in -x config.sub -x install-sh -x ltconfig -x ltmain.sh -x missing -x mkinstalldirs -x Makefile.in.in -x cat-id-tbl.c -x cat-id-tbl.c.orig -x dia.pot.orig -x *.gmo -x Makefile -x .deps -x .libs -x *.po -x *.s dia-cvs/dia/lib/arrows.h dia-mine/dia/lib/arrows.h
--- dia-cvs/dia/lib/arrows.h	Tue Jan 25 20:29:57 2000
+++ dia-mine/dia/lib/arrows.h	Tue Jan 25 20:15:17 2000
@@ -31,7 +31,8 @@
   ARROW_FILLED_TRIANGLE,
   ARROW_HOLLOW_DIAMOND,
   ARROW_FILLED_DIAMOND,
-  ARROW_HALF_HEAD
+  ARROW_HALF_HEAD,
+  ARROW_SLASHED_CROSS
 } ArrowType;
 
 typedef struct {
diff -urN -x Makefile.in -x dia.pot -x configure -x CVS -x .cvsignore -x intl -x ABOUT-NLS -x COPYING -x aclocal.m4 -x config.guess -x config.h.in -x config.sub -x install-sh -x ltconfig -x ltmain.sh -x missing -x mkinstalldirs -x Makefile.in.in -x cat-id-tbl.c -x cat-id-tbl.c.orig -x dia.pot.orig -x *.gmo -x Makefile -x .deps -x .libs -x *.po -x *.s dia-cvs/dia/lib/widgets.c dia-mine/dia/lib/widgets.c
--- dia-cvs/dia/lib/widgets.c	Tue Jan 25 20:29:57 2000
+++ dia-mine/dia/lib/widgets.c	Tue Jan 25 20:15:17 2000
@@ -693,6 +693,12 @@
   gtk_menu_append (GTK_MENU (menu), menuitem);
   gtk_widget_show (menuitem);
 
+  menuitem = gtk_radio_menu_item_new_with_label (group, _("Slashed Cross"));
+  gtk_object_set_user_data(GTK_OBJECT(menuitem), GINT_TO_POINTER(ARROW_SLASHED_CROSS));
+  group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
+  gtk_menu_append (GTK_MENU (menu), menuitem);
+  gtk_widget_show (menuitem);
+
   gtk_menu_set_active(GTK_MENU (menu), DEFAULT_ARROW);
   gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);
   gtk_signal_connect_object(GTK_OBJECT(menu), "selection-done", 
@@ -911,4 +917,6 @@
 {
   return gtk_entry_get_text(GTK_ENTRY(fs->entry));
 }
+
+
 

Reply via email to