Code Example: Command Plugin
The Geometry Editing Library (libged) defines commands for working with BRL-CAD models. The following code illustrates how individual commands are defined within the library.
#include "common.h" #include "bio.h" #include "bu.h" #include "ged.h"
HIDDEN int zoom(struct ged *gedp, double sf) { gedp->ged_gvp->gv_scale /= sf; if (gedp->ged_gvp->gv_scale < RT_MINVIEWSCALE) gedp->ged_gvp->gv_scale = RT_MINVIEWSCALE; 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 GED_OK; }
int ged_zoom(struct ged *gedp, int argc, const char *argv[]) { int ret; double sf = 1.0; GED_CHECK_VIEW(gedp, GED_ERROR); GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR); /* must be wanting help */ if (argc != 2) { bu_vls_printf(gedp->ged_result_str, "Usage: %s scale_factor", argv[0]); return (argc == 1) ? GED_HELP : GED_ERROR; } /* get the scale factor */ ret = bu_sscanf(argv[1], "%lf", &sf); if (ret != 1 || sf < SMALL_FASTF || sf > INFINITY) { bu_vls_printf(gedp->ged_result_str, "ERROR: bad scale factor [%s]", argv[1]); return GED_ERROR; } return zoom(gedp, sf); }