Skip to content
Snippets Groups Projects
Commit 70d53121 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

Add some tests so that we don't crash when given absurd options (e.g.
from corrupted option files)
parent aef5f939
Branches
Tags
No related merge requests found
// $Id: Options.cpp,v 1.117 2003-11-08 04:08:20 geuzaine Exp $
// $Id: Options.cpp,v 1.118 2003-11-18 20:06:02 geuzaine Exp $
//
// Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
//
......@@ -2616,8 +2616,6 @@ double opt_general_light52(OPT_ARGS_NUM)
return CTX.light_position[5][2];
}
double opt_geometry_auto_coherence(OPT_ARGS_NUM)
{
if(action & GMSH_SET)
......@@ -3238,8 +3236,17 @@ double opt_mesh_nb_smoothing(OPT_ARGS_NUM)
double opt_mesh_algo(OPT_ARGS_NUM)
{
if(action & GMSH_SET)
CTX.mesh.algo = (int)val;
if(action & GMSH_SET){
int algo = (int)val;
if(algo != DELAUNAY_ISO &&
algo != DELAUNAY_SHEWCHUK &&
algo != DELAUNAY_ANISO){
Msg(WARNING, "Unknown mesh algorithm: keeping existing value");
}
else{
CTX.mesh.algo = algo;
}
}
#if defined(HAVE_FLTK)
if(WID && (action & GMSH_GUI)) {
WID->mesh_butt[0]->value(CTX.mesh.algo == DELAUNAY_ISO);
......@@ -3654,8 +3661,6 @@ double opt_post_nb_views(OPT_ARGS_NUM)
return List_Nbr(CTX.post.list);
}
double opt_view_nb_timestep(OPT_ARGS_NUM)
{
GET_VIEW(0.);
......@@ -3885,9 +3890,18 @@ double opt_view_intervals_type(OPT_ARGS_NUM)
{
GET_VIEW(0.);
if(action & GMSH_SET) {
v->IntervalsType = (int)val;
int type = (int)val;
if(type != DRAW_POST_ISO &&
type != DRAW_POST_DISCRETE &&
type != DRAW_POST_CONTINUOUS &&
type != DRAW_POST_NUMERIC){
Msg(WARNING, "Unknown interval type: keeping existing value");
}
else{
v->IntervalsType = type;
v->Changed = 1;
}
}
#if defined(HAVE_FLTK)
if(WID && (action & GMSH_GUI) && (num == WID->view_number)) {
switch (v->IntervalsType) {
......@@ -3928,9 +3942,17 @@ double opt_view_type(OPT_ARGS_NUM)
{
GET_VIEW(0.);
if(action & GMSH_SET) {
v->Type = (int)val;
int type = (int)val;
if(type != DRAW_POST_3D &&
type != DRAW_POST_2D_SPACE &&
type != DRAW_POST_2D_TIME){
Msg(WARNING, "Unknown view type: keeping existing value");
}
else{
v->Type = type;
v->Changed = 1;
}
}
#if defined(HAVE_FLTK)
if(WID && (action & GMSH_GUI) && (num == WID->view_number)) {
WID->view_butt[1]->value(v->Type == DRAW_POST_3D);
......@@ -4338,9 +4360,17 @@ double opt_view_scale_type(OPT_ARGS_NUM)
{
GET_VIEW(0.);
if(action & GMSH_SET) {
v->ScaleType = (int)val;
int type = (int)val;
if(type != DRAW_POST_LINEAR &&
type != DRAW_POST_LOGARITHMIC &&
type != DRAW_POST_DOUBLELOGARITHMIC){
Msg(WARNING, "Unknown scale type: keeping existing value");
}
else{
v->ScaleType = type;
v->Changed = 1;
}
}
#if defined(HAVE_FLTK)
if(WID && (action & GMSH_GUI) && (num == WID->view_number)) {
switch (v->ScaleType) {
......
// $Id: Entity.cpp,v 1.27 2003-03-21 00:52:38 geuzaine Exp $
// $Id: Entity.cpp,v 1.28 2003-11-18 20:06:02 geuzaine Exp $
//
// Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
//
......@@ -258,66 +258,6 @@ void Draw_Vector(int Type, int Fill,
switch (Type) {
case DRAW_POST_ARROW:
b = 0.0666 * d;
f1 = 0.85;
f2 = 0.8;
b *= 2;
f1 /= 1.5;
f2 /= 1.5;
if(Fill) {
glBegin(GL_LINES);
glVertex3d(x, y, z);
glVertex3d(x + dx, y + dy, z + dz);
glEnd();
glBegin(GL_TRIANGLES);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (t[0]), y + f2 * dy + b * (t[1]),
z + f2 * dz + b * (t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-t[0]), y + f2 * dy + b * (-t[1]),
z + f2 * dz + b * (-t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-u[0]), y + f2 * dy + b * (-u[1]),
z + f2 * dz + b * (-u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (u[0]), y + f2 * dy + b * (u[1]),
z + f2 * dz + b * (u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glEnd();
}
else {
glBegin(GL_LINE_STRIP);
glVertex3d(x, y, z);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (t[0]), y + f2 * dy + b * (t[1]),
z + f2 * dz + b * (t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + f2 * dx + b * (-t[0]), y + f2 * dy + b * (-t[1]),
z + f2 * dz + b * (-t[2]));
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-u[0]), y + f2 * dy + b * (-u[1]),
z + f2 * dz + b * (-u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + f2 * dx + b * (u[0]), y + f2 * dy + b * (u[1]),
z + f2 * dz + b * (u[2]));
glVertex3d(x + dx, y + dy, z + dz);
glEnd();
}
break;
case DRAW_POST_PYRAMID:
b = .1333 * d;
......@@ -461,8 +401,65 @@ void Draw_Vector(int Type, int Fill,
}
break;
case DRAW_POST_ARROW:
default:
//Msg(GERROR, "Unknown type of vector to draw");
b = 0.0666 * d;
f1 = 0.85;
f2 = 0.8;
b *= 2;
f1 /= 1.5;
f2 /= 1.5;
if(Fill) {
glBegin(GL_LINES);
glVertex3d(x, y, z);
glVertex3d(x + dx, y + dy, z + dz);
glEnd();
glBegin(GL_TRIANGLES);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (t[0]), y + f2 * dy + b * (t[1]),
z + f2 * dz + b * (t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-t[0]), y + f2 * dy + b * (-t[1]),
z + f2 * dz + b * (-t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-u[0]), y + f2 * dy + b * (-u[1]),
z + f2 * dz + b * (-u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (u[0]), y + f2 * dy + b * (u[1]),
z + f2 * dz + b * (u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glEnd();
}
else {
glBegin(GL_LINE_STRIP);
glVertex3d(x, y, z);
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (t[0]), y + f2 * dy + b * (t[1]),
z + f2 * dz + b * (t[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + f2 * dx + b * (-t[0]), y + f2 * dy + b * (-t[1]),
z + f2 * dz + b * (-t[2]));
glVertex3d(x + dx, y + dy, z + dz);
glVertex3d(x + f2 * dx + b * (-u[0]), y + f2 * dy + b * (-u[1]),
z + f2 * dz + b * (-u[2]));
glVertex3d(x + f1 * dx, y + f1 * dy, z + f1 * dz);
glVertex3d(x + f2 * dx + b * (u[0]), y + f2 * dy + b * (u[1]),
z + f2 * dz + b * (u[2]));
glVertex3d(x + dx, y + dy, z + dz);
glEnd();
}
break;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment