From d33bd310b16f4503bbad9188af3048d48bcdf9c6 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 24 Nov 2000 12:50:06 +0000
Subject: [PATCH] *** empty log message ***

---
 Geo/Geo.h          |  3 +--
 Geo/Print_Geo.cpp  | 58 ++++++++++++++++++++++++++++++++++------------
 Geo/Print_Geo.h    |  8 -------
 Graphics/Draw.h    |  7 +-----
 Mesh/Mesh.h        |  8 ++++++-
 Unix/CbFile.cpp    | 11 ++++++---
 Unix/CbFile.h      | 10 ++++----
 Unix/CbOptions.cpp | 19 ++++++++++-----
 Unix/CbOptions.h   |  3 ++-
 Unix/Main.cpp      |  9 ++++---
 Unix/Register.cpp  |  3 ++-
 Unix/Widgets.cpp   | 12 ++++++----
 12 files changed, 96 insertions(+), 55 deletions(-)
 delete mode 100644 Geo/Print_Geo.h

diff --git a/Geo/Geo.h b/Geo/Geo.h
index 40ce7b0c01..5688c4af60 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -1,4 +1,4 @@
-/* $Id: Geo.h,v 1.2 2000-11-23 14:11:30 geuzaine Exp $ */
+/* $Id: Geo.h,v 1.3 2000-11-24 12:49:59 geuzaine Exp $ */
 #ifndef _GEO_H_
 #define _GEO_H_
 
@@ -110,5 +110,4 @@ void rotate(int add, int s, char *fich, char *quoi);
 void dilate(int add, int s, char *fich, char *quoi);
 void protude(int s, char *fich, char *what);
 
-
 #endif
diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp
index 2fdfd0e93d..fbac4debf7 100644
--- a/Geo/Print_Geo.cpp
+++ b/Geo/Print_Geo.cpp
@@ -1,4 +1,4 @@
-/* $Id: Print_Geo.cpp,v 1.2 2000-11-23 14:11:30 geuzaine Exp $ */
+/* $Id: Print_Geo.cpp,v 1.3 2000-11-24 12:49:59 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -11,7 +11,7 @@ FILE *FOUT;
 void Print_Point(void *a, void *b){
   Vertex *v;
   v = *(Vertex**)a;
-  fprintf(FOUT, "Point(%d) = {%g, %gE, %g, %g};\n",
+  fprintf(FOUT, "Point(%d) = {%g, %g, %g, %g};\n",
           v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
 }
 
@@ -31,8 +31,8 @@ void Print_Nurbs (Curve *c, FILE *f){
   fprintf(f,"}\n");
   fprintf(f,"Knots {");
   for(j=0;j<List_Nbr(c->Control_Points)+c->degre+1;j++){
-    if(!j)fprintf(f,"%12.5E",c->k[j]);
-    else fprintf(f,",%12.5E",c->k[j]);
+    if(!j)fprintf(f,"%g",c->k[j]);
+    else fprintf(f,",%g",c->k[j]);
     if(j%5 == 4 && j!=List_Nbr(c->Control_Points)+c->degre)fprintf(FOUT,"\n");
   }
   fprintf(f,"}");
@@ -52,6 +52,9 @@ void Print_Curve(void *a, void *b){
     fprintf(FOUT,"Line (%d) = ",c->Num);
     break;
   case MSH_SEGM_CIRC:
+  case MSH_SEGM_CIRC_INV:
+  case MSH_SEGM_ELLI:
+  case MSH_SEGM_ELLI_INV:
     fprintf(FOUT,"Circle (%d) = ",c->Num);
     break;
   case MSH_SEGM_NURBS:
@@ -60,6 +63,9 @@ void Print_Curve(void *a, void *b){
   case MSH_SEGM_SPLN:
     fprintf(FOUT,"CatmullRom (%d) = ",c->Num);
     break;
+  default:
+    Msg(ERROR, "Unknown Curve Type %d", c->Typ);
+    return;
   }
   
   for(i=0;i<List_Nbr(c->Control_Points);i++){
@@ -70,11 +76,19 @@ void Print_Curve(void *a, void *b){
       fprintf(FOUT,"{%d",v->Num);
     if(i%6 == 7)fprintf(FOUT,"\n");
   }
-  if(c->Typ != MSH_SEGM_CIRC)
-    fprintf(FOUT,"};\n");
-  else
-    fprintf(FOUT,"} Plane{%12.5E,%12.5E,%12.5E};\n",
+
+  switch(c->Typ){
+  case MSH_SEGM_CIRC:
+  case MSH_SEGM_CIRC_INV:
+  case MSH_SEGM_ELLI:
+  case MSH_SEGM_ELLI_INV:
+    fprintf(FOUT,"} Plane{%g,%g,%g};\n",
             c->Circle.n[0],c->Circle.n[1],c->Circle.n[2]);
+    break;
+  default :
+    fprintf(FOUT,"};\n");
+    break;
+  }
   
 }
 
@@ -128,14 +142,14 @@ void Print_Surface(void *a, void *b){
     }
     fprintf(FOUT,"\t\tKnots\n\t\t{");
     for(j=0;j<s->Nu+s->OrderU+1;j++){
-      if(!j)fprintf(FOUT,"%12.5E",s->ku[j]);
-      else fprintf(FOUT,",%12.5E",s->ku[j]);
+      if(!j)fprintf(FOUT,"%g",s->ku[j]);
+      else fprintf(FOUT,",%g",s->ku[j]);
       if(j%5 == 4 && j!=s->Nu + s->OrderU)fprintf(FOUT,"\n\t\t");
     }
     fprintf(FOUT,"}\n\t\t{");
     for(j=0;j<s->Nv+s->OrderV+1;j++){
-      if(!j)fprintf(FOUT,"%12.5E",s->kv[j]);
-      else fprintf(FOUT,",%12.5E",s->kv[j]);
+      if(!j)fprintf(FOUT,"%g",s->kv[j]);
+      else fprintf(FOUT,",%g",s->kv[j]);
       if(j%5 == 4 && j!=s->Nv + s->OrderV)fprintf(FOUT,"\n\t\t");
     }
     fprintf(FOUT,"}\n\t\tOrder %3d %3d;\n\n",s->OrderU,s->OrderV);
@@ -145,11 +159,25 @@ void Print_Surface(void *a, void *b){
 
 void Print_Geo(Mesh *M, char *filename){
   Coherence_PS();
-  FOUT = fopen(filename,"w");
-  if(!FOUT)return;
+
+  if(filename){
+    FOUT = fopen(filename,"w");
+    if(!FOUT){
+      Msg(WARNING, "Unable to Open File '%s'", filename);
+      return;
+    }
+  }
+  else
+    FOUT = stdout;
+
   Tree_Action(M->Points,Print_Point);
   Tree_Action(M->Curves,Print_Curve);
   Tree_Action(M->Surfaces,Print_Surface);
-  fclose(FOUT);
+
+  if(filename){
+    Msg (INFOS, "Wrote File '%s'", filename);
+    fclose(FOUT);
+  }
+
 }
 
diff --git a/Geo/Print_Geo.h b/Geo/Print_Geo.h
deleted file mode 100644
index a5aeec5526..0000000000
--- a/Geo/Print_Geo.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* $Id: Print_Geo.h,v 1.2 2000-11-23 14:11:30 geuzaine Exp $ */
-#ifndef _PRINT_GEO_H_
-#define _PRINT_GEO_H_
-
-void Print_Geo(Mesh *M, char *filename);
-
-
-#endif
diff --git a/Graphics/Draw.h b/Graphics/Draw.h
index 57525a1c90..fdbf7e0b04 100644
--- a/Graphics/Draw.h
+++ b/Graphics/Draw.h
@@ -1,4 +1,4 @@
-/* $Id: Draw.h,v 1.3 2000-11-23 16:51:29 geuzaine Exp $ */
+/* $Id: Draw.h,v 1.4 2000-11-24 12:50:01 geuzaine Exp $ */
 #ifndef _DRAW_H_
 #define _DRAW_H_
 
@@ -17,11 +17,6 @@
 #define PRINT_GL2PS_IMAGE      4
 #define PRINT_GL2GIF           5
 
-#define FORMAT_XPM  1
-#define FORMAT_EPS  2
-#define FORMAT_BMP  3
-#define FORMAT_GIF  4
-
 void Init(void);
 void InitOv(void);
 void InitShading(void);
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 2a4b5439de..a5d42b2608 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -1,4 +1,4 @@
-/* $Id: Mesh.h,v 1.4 2000-11-23 15:05:59 geuzaine Exp $ */
+/* $Id: Mesh.h,v 1.5 2000-11-24 12:50:03 geuzaine Exp $ */
 #ifndef _MESH_H_
 #define _MESH_H_
 
@@ -10,6 +10,11 @@
 #define FORMAT_MSH  1
 #define FORMAT_UNV  2
 #define FORMAT_GREF 3
+#define FORMAT_XPM  4
+#define FORMAT_EPS  5
+#define FORMAT_BMP  6
+#define FORMAT_GIF  7
+#define FORMAT_GEO  7
 
 #define CONV_VALUE    0.8
 
@@ -413,6 +418,7 @@ void mai3d (Mesh * M, int Asked);
 
 void Init_Mesh (Mesh * M, int all);
 void Create_BgMesh (int i, double d, Mesh * m);
+void Print_Geo (Mesh * M, char *c);
 void Print_Mesh (Mesh * M, char *c, int Type);
 void Read_Mesh (Mesh * M, FILE * File_GEO, int Type);
 void GetStatistics (double s[50]);
diff --git a/Unix/CbFile.cpp b/Unix/CbFile.cpp
index 4052c4c6bf..68967c9297 100644
--- a/Unix/CbFile.cpp
+++ b/Unix/CbFile.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbFile.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */
+/* $Id: CbFile.cpp,v 1.6 2000-11-24 12:50:06 geuzaine Exp $ */
 
 #include <unistd.h>
 
@@ -147,8 +147,13 @@ void FileCb(Widget w, XtPointer client_data, XtPointer call_data){
   case FILE_SAVE_COLORTABLE_AS : SaveToDisk(c, WID.ED.saveDialog, SaveColorTable); break;
   case FILE_CANCEL             : WARNING_OVERRIDE = 0; break;
   case FILE_PRINT              : 
-    SaveToDisk(c, WID.ED.printDialog, CreateImage); 
-    Init(); Draw(); break;
+    if(CTX.print.format == FORMAT_GEO)
+      Print_Geo(&M, c);
+    else{
+      SaveToDisk(c, WID.ED.printDialog, CreateImage); 
+      Init(); Draw(); 
+    }
+    break;
   default :
     Msg(WARNING, "Unknown event in FileCb : %d", (long int)client_data); 
     break;
diff --git a/Unix/CbFile.h b/Unix/CbFile.h
index 7e25566c24..be019706f2 100644
--- a/Unix/CbFile.h
+++ b/Unix/CbFile.h
@@ -1,13 +1,13 @@
-/* $Id: CbFile.h,v 1.2 2000-11-23 14:11:40 geuzaine Exp $ */
+/* $Id: CbFile.h,v 1.3 2000-11-24 12:50:06 geuzaine Exp $ */
 #ifndef _CB_FILE_H_
 #define _CB_FILE_H_
 
 #define  FILE_LOAD_GEOM                         301
 #define  FILE_LOAD_POST                         302
-#define  FILE_SAVE_MESH                         303
-#define  FILE_SAVE_MESH_AS                      304
-#define  FILE_SAVE_COLORTABLE_AS                305
-#define  FILE_PRINT                             306
+#define  FILE_SAVE_MESH                         304
+#define  FILE_SAVE_MESH_AS                      305
+#define  FILE_SAVE_COLORTABLE_AS                306
+#define  FILE_PRINT                             307
 #define  FILE_CANCEL                            308
 
 #endif
diff --git a/Unix/CbOptions.cpp b/Unix/CbOptions.cpp
index a12df68460..7511f1f6f8 100644
--- a/Unix/CbOptions.cpp
+++ b/Unix/CbOptions.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbOptions.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */
+/* $Id: CbOptions.cpp,v 1.6 2000-11-24 12:50:06 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -112,11 +112,18 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){
 
     /* print */
 
-  case OPTIONS_PRINT_XDUMP        : CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_XPM; break;
-  case OPTIONS_PRINT_GL2GIF       : CTX.print.type = PRINT_GL2GIF; CTX.print.format = FORMAT_GIF; break;
-  case OPTIONS_PRINT_GL2PS_SIMPLE : CTX.print.type = PRINT_GL2PS_SIMPLE; CTX.print.format = FORMAT_EPS;break;
-  case OPTIONS_PRINT_GL2PS_COMPLEX: CTX.print.type = PRINT_GL2PS_RECURSIVE; CTX.print.format = FORMAT_EPS;break;
-  case OPTIONS_PRINT_GL2PS_IMAGE  : CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_EPS;break;
+  case OPTIONS_PRINT_XDUMP        : 
+    CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_XPM; break;
+  case OPTIONS_PRINT_GL2GIF       : 
+    CTX.print.type = PRINT_GL2GIF; CTX.print.format = FORMAT_GIF; break;
+  case OPTIONS_PRINT_GL2PS_SIMPLE : 
+    CTX.print.type = PRINT_GL2PS_SIMPLE; CTX.print.format = FORMAT_EPS;break;
+  case OPTIONS_PRINT_GL2PS_COMPLEX: 
+    CTX.print.type = PRINT_GL2PS_RECURSIVE; CTX.print.format = FORMAT_EPS;break;
+  case OPTIONS_PRINT_GL2PS_IMAGE  : 
+    CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_EPS;break;
+  case OPTIONS_PRINT_GEO          : 
+    CTX.print.type = -1; CTX.print.format = FORMAT_GEO;break;
 
     /* geometrie */
 
diff --git a/Unix/CbOptions.h b/Unix/CbOptions.h
index bc08648dec..30ee0a8bdd 100644
--- a/Unix/CbOptions.h
+++ b/Unix/CbOptions.h
@@ -1,4 +1,4 @@
-/* $Id: CbOptions.h,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */
+/* $Id: CbOptions.h,v 1.6 2000-11-24 12:50:06 geuzaine Exp $ */
 #ifndef _CB_OPTIONS_H_
 #define _CB_OPTIONS_H_
 
@@ -102,5 +102,6 @@
 #define  OPTIONS_PRINT_GL2PS_COMPLEX            402
 #define  OPTIONS_PRINT_GL2PS_IMAGE              403
 #define  OPTIONS_PRINT_GL2GIF                   404
+#define  OPTIONS_PRINT_GEO                      405
 					     
 #endif
diff --git a/Unix/Main.cpp b/Unix/Main.cpp
index 51ad55f630..ccf7f0150a 100644
--- a/Unix/Main.cpp
+++ b/Unix/Main.cpp
@@ -1,4 +1,4 @@
-/* $Id: Main.cpp,v 1.9 2000-11-24 08:04:14 geuzaine Exp $ */
+/* $Id: Main.cpp,v 1.10 2000-11-24 12:50:06 geuzaine Exp $ */
 
 #include <signal.h>
 
@@ -42,9 +42,9 @@ char gmsh_url[]       = "URL              : " GMSH_URL ;
 char gmsh_help[]      = 
   "Usage: %s [options] [files]\n"
   "Mesh options:\n"
-  "  -0                    parse input and exit\n"
+  "  -0                    parse input and output analysed geometry\n"
   "  -1, -2, -3            batch 1-, 2- or 3-dimensional mesh\n"
-  "  -format msh|unv       mesh format (default: msh)\n"
+  "  -format msh|unv|gref  output format (default: msh)\n"
   "  -algo iso|aniso       mesh algorithm (default: iso)\n"
   "  -smooth int           mesh smoothing (default: 0)\n"
   "  -degree int           mesh degree (default: 1)\n"
@@ -509,6 +509,9 @@ int main(int argc, char *argv[]){
 	mai3d(THEM, CTX.interactive);
 	Print_Mesh(THEM,NULL,CTX.mesh.format);
       }
+      else{
+	Print_Geo(THEM, NULL);
+      }
       exit(1);
     }    
   }
diff --git a/Unix/Register.cpp b/Unix/Register.cpp
index 53448f9e55..dbc739f910 100644
--- a/Unix/Register.cpp
+++ b/Unix/Register.cpp
@@ -1,4 +1,4 @@
-/* $Id: Register.cpp,v 1.5 2000-11-23 23:20:35 geuzaine Exp $ */
+/* $Id: Register.cpp,v 1.6 2000-11-24 12:50:06 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -150,6 +150,7 @@ void RegisterCallbacks_FD(Widgets_T *w){
   register_activate_cb (w->FD.printButt[1],    OptionsCb, OPTIONS_PRINT_GL2PS_COMPLEX);
   register_activate_cb (w->FD.printButt[2],    OptionsCb, OPTIONS_PRINT_XDUMP);
   register_activate_cb (w->FD.printButt[3],    OptionsCb, OPTIONS_PRINT_GL2GIF);
+  register_activate_cb (w->FD.printButt[4],    OptionsCb, OPTIONS_PRINT_GEO);
 }
 
 void RegisterCallbacks_OD(Widgets_T *w){
diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp
index 74ab0e90a0..ade5fe90cc 100644
--- a/Unix/Widgets.cpp
+++ b/Unix/Widgets.cpp
@@ -1,4 +1,4 @@
-/* $Id: Widgets.cpp,v 1.6 2000-11-24 09:44:05 geuzaine Exp $ */
+/* $Id: Widgets.cpp,v 1.7 2000-11-24 12:50:06 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -80,13 +80,13 @@ void CreateWidgets_M(Widgets_T *w){
   XtManageChild(w->M.fileSep[0]);
 
   i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save")); i++;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save Mesh")); i++;
   XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-s)")); i++;
   w->M.fileButt[2] = XmCreatePushButton(w->M.filePane, "MfileButt2", arg, i);
   XtManageChild(w->M.fileButt[2]);
 
   i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save as")); i++;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save Mesh as")); i++;
   XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-S-s)")); i++;
   XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>s:"); i++;
   w->M.fileButt[3] = XmCreatePushButton(w->M.filePane, "MfileButt3", arg, i);
@@ -589,7 +589,7 @@ void CreateWidgets_FD(Widgets_T *w){
 
   /* save as */
   i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Save Mesh")); i++;
+  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Save")); i++;
   XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
   XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*")); i++;
   XtSetArg(arg[i], XmNautoUnmanage, True); i++;
@@ -678,7 +678,11 @@ void CreateWidgets_FD(Widgets_T *w){
   w->FD.printButt[3] = XmCreatePushButton(w->FD.printPane[0], "MprintButt3", arg, i);
   XtManageChild(w->FD.printButt[3]);
   i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GEO")); i++;
+  w->FD.printButt[4] = XmCreatePushButton(w->FD.printPane[0], "MprintButt3", arg, i);
+  XtManageChild(w->FD.printButt[4]);
 
+  i=0;
   XtSetArg(arg[i], XmNsubMenuId, w->FD.printPane[0]); i++;
   XtSetArg(arg[i], XmNspacing, 0); i++;
   w->FD.printMenu[0] = XmCreateOptionMenu(w->FD.printRowCol, "FDprintMenu0", arg, i);
-- 
GitLab