Revision: 33438 http://brlcad.svn.sourceforge.net/brlcad/?rev=33438&view=rev Author: bob1961 Date: 2008-12-31 20:04:40 +0000 (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 BRLCAD_OK; + if (sscanf(argv[1], "%lf", &sf) != 1) { + bu_vls_printf(&gedp->ged_result_str, "bad scale factor - %s", argv[1]); + return BRLCAD_ERROR; + } - gedp->ged_gvp->gv_scale *= sf; + return BRLCAD_OK; +} - if (gedp->ged_gvp->gv_scale < RT_MINVIEWSIZE) - gedp->ged_gvp->gv_scale = RT_MINVIEWSIZE; - gedp->ged_gvp->gv_size = 2.0 * gedp->ged_gvp->gv_scale; - gedp->ged_gvp->gv_isize = 1.0 / gedp->ged_gvp->gv_size; - ged_view_update(gedp->ged_gvp); +int +ged_scale(struct ged *gedp, int argc, const char *argv[]) +{ + int ret; + fastf_t sf; + if ((ret = ged_scale_args(gedp, argc, argv, &sf)) != BRLCAD_OK) + return ret; + + if (sf <= SMALL_FASTF || INFINITY < sf) return BRLCAD_OK; - } - bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return BRLCAD_ERROR; + /* scale the view */ + gedp->ged_gvp->gv_scale *= sf; + + if (gedp->ged_gvp->gv_scale < RT_MINVIEWSIZE) + gedp->ged_gvp->gv_scale = RT_MINVIEWSIZE; + gedp->ged_gvp->gv_size = 2.0 * gedp->ged_gvp->gv_scale; + gedp->ged_gvp->gv_isize = 1.0 / gedp->ged_gvp->gv_size; + ged_view_update(gedp->ged_gvp); + + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/tra.c =================================================================== --- brlcad/trunk/src/libged/tra.c 2008-12-31 20:03:49 UTC (rev 33437) +++ brlcad/trunk/src/libged/tra.c 2008-12-31 20:04:40 UTC (rev 33438) @@ -33,10 +33,8 @@ #include "ged_private.h" int -ged_tra(struct ged *gedp, int argc, const char *argv[]) +ged_tra_args(struct ged *gedp, int argc, const char *argv[], char *coord, vect_t tvec) { - vect_t tvec; - char coord; static const char *usage = "[-m|-v] x y z"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -54,11 +52,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); @@ -72,21 +70,34 @@ } } else { if (sscanf(argv[1], "%lf", &tvec[X]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "tra: 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", &tvec[Y]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "tra: 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", &tvec[Z]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "tra: 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; } } + return BRLCAD_OK; +} + +int +ged_tra(struct ged *gedp, int argc, const char *argv[]) +{ + int ret; + char coord; + vect_t tvec; + + if ((ret = ged_tra_args(gedp, argc, argv, &coord, tvec)) != BRLCAD_OK) + return ret; + return ged_do_tra(gedp, coord, tvec, (int (*)())0); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits