Revision: 33438
http://brlcad.svn.sourceforge.net/brlcad/?rev=33438view=rev
Author: bob1961
Date: 2008-12-31 20:04:40 + (Wed, 31 Dec 2008)
Log Message:
---
Split out the arg parsing into separate functions.
Modified Paths:
--
brlcad/trunk/src/libged/arot.c
brlcad/trunk/src/libged/rot.c
brlcad/trunk/src/libged/scale.c
brlcad/trunk/src/libged/tra.c
Modified: brlcad/trunk/src/libged/arot.c
===
--- brlcad/trunk/src/libged/arot.c 2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/arot.c 2008-12-31 20:04:40 UTC (rev 33438)
@@ -33,9 +33,8 @@
#include ged_private.h
int
-ged_arot(struct ged *gedp, int argc, const char *argv[])
+ged_arot_args(struct ged *gedp, int argc, const char *argv[], mat_t rmat)
{
-mat_t rmat;
point_t pt;
vect_t axis;
fastf_t angle;
@@ -60,30 +59,41 @@
}
if (sscanf(argv[1], %lf, axis[X]) != 1) {
- bu_vls_printf(gedp-ged_result_str, ged_arot: bad X value - %s\n,
argv[1]);
+ bu_vls_printf(gedp-ged_result_str, %s: bad X value - %s\n, argv[0],
argv[1]);
return BRLCAD_ERROR;
}
if (sscanf(argv[2], %lf, axis[Y]) != 1) {
- bu_vls_printf(gedp-ged_result_str, ged_arot: bad Y value - %s\n,
argv[2]);
+ bu_vls_printf(gedp-ged_result_str, %s: bad Y value - %s\n, argv[0],
argv[2]);
return BRLCAD_ERROR;
}
if (sscanf(argv[3], %lf, axis[Z]) != 1) {
- bu_vls_printf(gedp-ged_result_str, ged_arot: bad Z value - %s\n,
argv[3]);
+ bu_vls_printf(gedp-ged_result_str, %s: bad Z value - %s\n, argv[0],
argv[3]);
return BRLCAD_ERROR;
}
if (sscanf(argv[4], %lf, angle) != 1) {
- bu_vls_printf(gedp-ged_result_str, ged_arot: bad angle - %s\n,
argv[4]);
+ bu_vls_printf(gedp-ged_result_str, %s: bad angle - %s\n, argv[0],
argv[4]);
return BRLCAD_ERROR;
}
VSETALL(pt, 0.0);
VUNITIZE(axis);
-
bn_mat_arb_rot(rmat, pt, axis, angle*bn_degtorad);
+return BRLCAD_OK;
+}
+
+int
+ged_arot(struct ged *gedp, int argc, const char *argv[])
+{
+int ret;
+mat_t rmat;
+
+if ((ret = ged_arot_args(gedp, argc, argv, rmat)) != BRLCAD_OK)
+ return ret;
+
return ged_do_rot(gedp, gedp-ged_gvp-gv_coord, rmat, (int (*)())0);
}
Modified: brlcad/trunk/src/libged/rot.c
===
--- brlcad/trunk/src/libged/rot.c 2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/rot.c 2008-12-31 20:04:40 UTC (rev 33438)
@@ -33,11 +33,9 @@
#include ged_private.h
int
-ged_rot(struct ged *gedp, int argc, const char *argv[])
+ged_rot_args(struct ged *gedp, int argc, const char *argv[], char *coord,
mat_t rmat)
{
vect_t rvec;
-mat_t rmat;
-char coord;
static const char *usage = [-m|-v] x y z;
GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR);
@@ -55,11 +53,11 @@
/* process possible coord flag */
if (argv[1][0] == '-' (argv[1][1] == 'v' || argv[1][1] == 'm')
argv[1][2] == '\0') {
- coord = argv[1][1];
+ *coord = argv[1][1];
--argc;
++argv;
} else
- coord = gedp-ged_gvp-gv_coord;
+ *coord = gedp-ged_gvp-gv_coord;
if (argc != 2 argc != 4) {
bu_vls_printf(gedp-ged_result_str, Usage: %s %s, argv[0], usage);
@@ -91,6 +89,19 @@
VSCALE(rvec, rvec, -1.0);
bn_mat_angles(rmat, rvec[X], rvec[Y], rvec[Z]);
+return BRLCAD_OK;
+}
+
+int
+ged_rot(struct ged *gedp, int argc, const char *argv[])
+{
+int ret;
+char coord;
+mat_t rmat;
+
+if ((ret = ged_rot_args(gedp, argc, argv, coord, rmat)) != BRLCAD_OK)
+ return ret;
+
return ged_do_rot(gedp, coord, rmat, (int (*)())0);
}
Modified: brlcad/trunk/src/libged/scale.c
===
--- brlcad/trunk/src/libged/scale.c 2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/scale.c 2008-12-31 20:04:40 UTC (rev 33438)
@@ -34,9 +34,8 @@
int
-ged_scale(struct ged *gedp, int argc, const char *argv[])
+ged_scale_args(struct ged *gedp, int argc, const char *argv[], fastf_t *sf)
{
-fastf_t sf;
static const char *usage = sf;
GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR);
@@ -49,32 +48,44 @@
/* must be wanting help */
if (argc == 1) {
bu_vls_printf(gedp-ged_result_str, Usage: %s %s, argv[0], usage);
- return BRLCAD_OK;
+ return BRLCAD_HELP;
}
-/* scale the view */
-if (argc == 2) {
- if (sscanf(argv[1], %lf, sf) != 1) {
- bu_vls_printf(gedp-ged_result_str, bad scale factor - %s,
argv[1]);
- return BRLCAD_ERROR;
- }
+if (argc != 2) {
+ bu_vls_printf(gedp-ged_result_str, Usage: %s %s, argv[0], usage);
+ return BRLCAD_ERROR;
+}
- if (sf = SMALL_FASTF || INFINITY sf)
- return