/* * * Usage: * procname getcursor */ HIDDEN int fbo_getcursor_tcl(void *clientData, int argc, const char **argv) { struct fb_obj *fbop = (struct fb_obj *)clientData; int status; int mode; int x, y; struct bu_vls vls = BU_VLS_INIT_ZERO; if (argc != 2 || !BU_STR_EQUIV(argv[1], "getcursor")) { bu_log("ERROR: unexpected argument(s)\n"); return BRLCAD_ERROR; } status = fb_getcursor(fbop->fbo_fbs.fbs_fbp, &mode, &x, &y); if (status == 0) { bu_vls_printf(&vls, "%d %d %d", mode, x, y); Tcl_AppendResult(fbop->fbo_interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return BRLCAD_OK; } return BRLCAD_ERROR; }
/* * * Usage: * procname getcursor */ HIDDEN int fbo_getcursor_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) { struct fb_obj *fbop = (struct fb_obj *)clientData; int status; int mode; int x, y; struct bu_vls vls; if (argc != 2) { bu_vls_init(&vls); bu_vls_printf(&vls, "helplib fb_getcursor"); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; } status = fb_getcursor(fbop->fbo_fbs.fbs_fbp, &mode, &x, &y); if (status == 0) { bu_vls_init(&vls); bu_vls_printf(&vls, "%d %d %d", mode, x, y); Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return TCL_OK; } return TCL_ERROR; }
HIDDEN int mem_getcursor(FBIO *ifp, int *mode, int *x, int *y) { if (MI(ifp)->write_thru) { return fb_getcursor(MI(ifp)->fbp, mode, x, y); } fb_sim_getcursor(ifp, mode, x, y); return 0; }