From 98796b8c9b5e01c115a3a3a7c189f98a3fc839ec Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 28 Mar 2012 06:17:13 +0000
Subject: [PATCH] pp & 3m

---
 CMakeLists.txt         |  6 ++++++
 Common/CommandLine.cpp |  4 ++--
 Common/GmshConfig.h.in |  1 +
 Common/Options.cpp     |  6 +++---
 Fltk/FlGui.cpp         | 11 +++++++++--
 Fltk/menuWindow.cpp    |  9 +++++++++
 Fltk/optionWindow.cpp  |  2 +-
 Mesh/Generator.cpp     | 10 +++++-----
 8 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1f4de45753..6e6658a675 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -456,6 +456,12 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
     set_config_option(HAVE_MPEG_ENCODE "Mpeg")
   endif(ENABLE_MPEG_ENCODE)
 
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M)
+    add_subdirectory(contrib/3M)
+    include_directories(contrib/3M)
+    set_config_option(HAVE_3M "3M")
+  endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M)
+
   if(ENABLE_OSMESA)
     find_library(OSMESA_LIB OSMesa)
     if(OSMESA_LIB)
diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 6f2d7e8609..29c042d85b 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -580,8 +580,8 @@ void GetOptions(int argc, char *argv[])
             CTX::instance()->mesh.algo3d = ALGO_3D_FRONTAL_DEL;
           else if(!strncmp(argv[i], "delhex3d", 8))
             CTX::instance()->mesh.algo3d = ALGO_3D_FRONTAL_HEX;
-		  else if(!strncmp(argv[i], "rtree3d", 9))
-			CTX::instance()->mesh.algo3d = ALGO_3D_RTREE;
+          else if(!strncmp(argv[i], "rtree3d", 9))
+            CTX::instance()->mesh.algo3d = ALGO_3D_RTREE;
           else
             Msg::Fatal("Unknown mesh algorithm");
           i++;
diff --git a/Common/GmshConfig.h.in b/Common/GmshConfig.h.in
index a9329d30ba..0248ac92b9 100644
--- a/Common/GmshConfig.h.in
+++ b/Common/GmshConfig.h.in
@@ -6,6 +6,7 @@
 #ifndef _GMSH_CONFIG_H_
 #define _GMSH_CONFIG_H_
 
+#cmakedefine HAVE_3M
 #cmakedefine HAVE_64BIT_SIZE_T
 #cmakedefine HAVE_ACIS
 #cmakedefine HAVE_ANN
diff --git a/Common/Options.cpp b/Common/Options.cpp
index f4c3dce18f..75be46b1c2 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -5046,9 +5046,9 @@ double opt_mesh_algo3d(OPT_ARGS_NUM)
     case ALGO_3D_FRONTAL:
       FlGui::instance()->options->mesh.choice[3]->value(1);
       break;
-	case ALGO_3D_RTREE:
-	  FlGui::instance()->options->mesh.choice[3]->value(5);
-	  break;
+    case ALGO_3D_RTREE:
+      FlGui::instance()->options->mesh.choice[3]->value(5);
+      break;
     case ALGO_3D_DELAUNAY:
     default:
       FlGui::instance()->options->mesh.choice[3]->value(0);
diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp
index 1c410b80dc..e90d1e803d 100644
--- a/Fltk/FlGui.cpp
+++ b/Fltk/FlGui.cpp
@@ -890,15 +890,22 @@ void window_cb(Fl_Widget *w, void *data)
       oldy = FlGui::instance()->graph[0]->win->y();
       oldw = FlGui::instance()->graph[0]->win->w();
       oldh = FlGui::instance()->graph[0]->win->h();
+//#define FS
+#ifndef FS
       FlGui::instance()->graph[0]->win->resize(Fl::x(), Fl::y(), Fl::w(), Fl::h());
       FlGui::instance()->graph[0]->hideMessages();
       FlGui::check();
-      //FlGui::instance()->graph[0]->win->fullscreen();
+#else
+      FlGui::instance()->graph[0]->win->fullscreen();
+#endif
       zoom = 0;
     }
     else{
+#ifndef FS
       FlGui::instance()->graph[0]->win->resize(oldx, oldy, oldw, oldh);
-      //FlGui::instance()->graph[0]->win->fullscreen_off(oldx, oldy, oldw, oldh);
+#else
+      FlGui::instance()->graph[0]->win->fullscreen_off();
+#endif
       zoom = 1;
     }
     FlGui::instance()->menu->win->show();
diff --git a/Fltk/menuWindow.cpp b/Fltk/menuWindow.cpp
index 44a6238a0e..21609da8ef 100644
--- a/Fltk/menuWindow.cpp
+++ b/Fltk/menuWindow.cpp
@@ -57,6 +57,9 @@ typedef unsigned long intptr_t;
 #if defined(HAVE_ONELAB)
 #include "onelab.h"
 #endif
+#if defined(HAVE_3M)
+#include "3M.h"
+#endif
 
 static void file_new_cb(Fl_Widget *w, void *data)
 {
@@ -2370,6 +2373,9 @@ static Fl_Menu_Item bar_table[] = {
     {"&Manipulator",     FL_CTRL+FL_SHIFT+'m', (Fl_Callback *)manip_cb, 0},
 #if defined(HAVE_ONELAB)
     {"&OneLab",          0, (Fl_Callback *)solver_cb, (void*)(-1), FL_MENU_DIVIDER},
+#endif
+#if defined(HAVE_3M)
+    {"&3M",              0, (Fl_Callback *)window3M_cb, 0, FL_MENU_DIVIDER},
 #endif
     {"S&tatistics",      FL_CTRL+'i', (Fl_Callback *)statistics_cb, 0},
     {"M&essage Console", FL_CTRL+'l', (Fl_Callback *)message_cb, 0},
@@ -2435,6 +2441,9 @@ static Fl_Menu_Item sysbar_table[] = {
     {"Manipulator",     FL_META+FL_SHIFT+'m', (Fl_Callback *)manip_cb, 0},
 #if defined(HAVE_ONELAB)
     {"OneLab",          0, (Fl_Callback *)solver_cb, (void*)(-1), FL_MENU_DIVIDER},
+#endif
+#if defined(HAVE_3M)
+    {"3M",              0, (Fl_Callback *)window3M_cb, 0, FL_MENU_DIVIDER},
 #endif
     {"Statistics",      FL_META+'i', (Fl_Callback *)statistics_cb, 0},
     {"Message Console", FL_META+'l', (Fl_Callback *)message_cb, 0},
diff --git a/Fltk/optionWindow.cpp b/Fltk/optionWindow.cpp
index 56cddad00b..00d73f3929 100644
--- a/Fltk/optionWindow.cpp
+++ b/Fltk/optionWindow.cpp
@@ -517,7 +517,7 @@ static void mesh_options_ok_cb(Fl_Widget *w, void *data)
                   (o->mesh.choice[3]->value() == 2) ? ALGO_3D_FRONTAL_DEL :
                   (o->mesh.choice[3]->value() == 3) ? ALGO_3D_FRONTAL_HEX :
                   (o->mesh.choice[3]->value() == 4) ? ALGO_3D_MMG3D :
-				  (o->mesh.choice[3]->value() == 5) ? ALGO_3D_RTREE :
+                  (o->mesh.choice[3]->value() == 5) ? ALGO_3D_RTREE :
                   ALGO_3D_FRONTAL);
   opt_mesh_algo_recombine(0, GMSH_SET, o->mesh.choice[1]->value());
   opt_mesh_recombine_all(0, GMSH_SET, o->mesh.butt[21]->value());
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 660087edb6..62087e6044 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -557,16 +557,16 @@ static void Mesh3D(GModel *m)
   FindConnectedRegions(delaunay, connected);
   for(unsigned int i = 0; i < connected.size(); i++){
     MeshDelaunayVolume(connected[i]);
-	if(CTX::instance()->mesh.algo3d==ALGO_3D_RTREE){
-	  Filler f;
-	  f.treat_region(connected[i][0]);
-	}
+    if(CTX::instance()->mesh.algo3d == ALGO_3D_RTREE){
+      Filler f;
+      f.treat_region(connected[i][0]);
+    }
   }
 
   double t2 = Cpu();
   CTX::instance()->meshTimer[2] = t2 - t1;
   Msg::StatusBar(2, true, "Done meshing 3D (%g s)", CTX::instance()->meshTimer[2]);
-  
+
 }
 
 void OptimizeMeshNetgen(GModel *m)
-- 
GitLab