Revision: 76340 http://sourceforge.net/p/brlcad/code/76340 Author: starseeker Date: 2020-07-15 00:08:48 +0000 (Wed, 15 Jul 2020) Log Message: ----------- move fb functions
Modified Paths: -------------- brlcad/trunk/src/libtclcad/fb_obj.c brlcad/trunk/src/libtclcad/tclcad_obj.c brlcad/trunk/src/libtclcad/tclcad_private.h Modified: brlcad/trunk/src/libtclcad/fb_obj.c =================================================================== --- brlcad/trunk/src/libtclcad/fb_obj.c 2020-07-14 21:57:25 UTC (rev 76339) +++ brlcad/trunk/src/libtclcad/fb_obj.c 2020-07-15 00:08:48 UTC (rev 76340) @@ -903,7 +903,187 @@ } + +void +to_fbs_callback(void *clientData) +{ + struct ged_dm_view *gdvp = (struct ged_dm_view *)clientData; + + to_refresh_view(gdvp); +} + + +int +to_close_fbs(struct ged_dm_view *gdvp) +{ + if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) + return TCL_OK; + + fb_flush(gdvp->gdv_fbs.fbs_fbp); + fb_close_existing(gdvp->gdv_fbs.fbs_fbp); + gdvp->gdv_fbs.fbs_fbp = FB_NULL; + + return TCL_OK; +} + + /* + * Open/activate the display managers framebuffer. + */ +int +to_open_fbs(struct ged_dm_view *gdvp, Tcl_Interp *interp) +{ + /* already open */ + if (gdvp->gdv_fbs.fbs_fbp != FB_NULL) + return TCL_OK; + + gdvp->gdv_fbs.fbs_fbp = dm_get_fb(gdvp->gdv_dmp); + + if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) { + Tcl_Obj *obj; + + obj = Tcl_GetObjResult(interp); + if (Tcl_IsShared(obj)) + obj = Tcl_DuplicateObj(obj); + + Tcl_AppendStringsToObj(obj, "openfb: failed to allocate framebuffer memory\n", (char *)NULL); + + Tcl_SetObjResult(interp, obj); + return TCL_ERROR; + } + + return TCL_OK; +} + + + +int +to_set_fb_mode(struct ged *gedp, + int argc, + const char *argv[], + ged_func_ptr UNUSED(func), + const char *usage, + int UNUSED(maxargs)) +{ + int mode; + struct ged_dm_view *gdvp; + + /* initialize result */ + bu_vls_trunc(gedp->ged_result_str, 0); + + /* must be wanting help */ + if (argc == 1) { + bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return GED_HELP; + } + + if (3 < argc) { + bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return GED_ERROR; + } + + for (BU_LIST_FOR(gdvp, ged_dm_view, ¤t_top->to_gop->go_head_views.l)) { + if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_name), argv[1])) + break; + } + + if (BU_LIST_IS_HEAD(&gdvp->l, ¤t_top->to_gop->go_head_views.l)) { + bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]); + return GED_ERROR; + } + + /* Get fb mode */ + if (argc == 2) { + bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_mode); + return GED_OK; + } + + /* Set fb mode */ + if (bu_sscanf(argv[2], "%d", &mode) != 1) { + bu_vls_printf(gedp->ged_result_str, "set_fb_mode: bad value - %s\n", argv[2]); + return GED_ERROR; + } + + if (mode < 0) + mode = 0; + else if (TCLCAD_OBJ_FB_MODE_OVERLAY < mode) + mode = TCLCAD_OBJ_FB_MODE_OVERLAY; + + gdvp->gdv_fbs.fbs_mode = mode; + to_refresh_view(gdvp); + + return GED_OK; +} + + +int +to_listen(struct ged *gedp, + int argc, + const char *argv[], + ged_func_ptr UNUSED(func), + const char *usage, + int UNUSED(maxargs)) +{ + struct ged_dm_view *gdvp; + + /* initialize result */ + bu_vls_trunc(gedp->ged_result_str, 0); + + /* must be wanting help */ + if (argc == 1) { + bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return GED_HELP; + } + + if (3 < argc) { + bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return GED_ERROR; + } + + for (BU_LIST_FOR(gdvp, ged_dm_view, ¤t_top->to_gop->go_head_views.l)) { + if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_name), argv[1])) + break; + } + + if (BU_LIST_IS_HEAD(&gdvp->l, ¤t_top->to_gop->go_head_views.l)) { + bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]); + return GED_ERROR; + } + + if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) { + bu_vls_printf(gedp->ged_result_str, "%s listen: framebuffer not open!\n", argv[0]); + return GED_ERROR; + } + + /* return the port number */ + if (argc == 2) { + bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_listener.fbsl_port); + return GED_OK; + } + + if (argc == 3) { + int port; + + if (bu_sscanf(argv[2], "%d", &port) != 1) { + bu_vls_printf(gedp->ged_result_str, "listen: bad value - %s\n", argv[2]); + return GED_ERROR; + } + + if (port >= 0) + fbs_open(&gdvp->gdv_fbs, port); + else { + fbs_close(&gdvp->gdv_fbs); + } + bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_listener.fbsl_port); + return GED_OK; + } + + bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return GED_ERROR; +} + + +/* * Local Variables: * mode: C * tab-width: 8 Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c =================================================================== --- brlcad/trunk/src/libtclcad/tclcad_obj.c 2020-07-14 21:57:25 UTC (rev 76339) +++ brlcad/trunk/src/libtclcad/tclcad_obj.c 2020-07-15 00:08:48 UTC (rev 76340) @@ -318,12 +318,6 @@ ged_func_ptr func, const char *usage, int maxargs); -HIDDEN int to_listen(struct ged *gedp, - int argc, - const char *argv[], - ged_func_ptr func, - const char *usage, - int maxargs); HIDDEN int to_local2base(struct ged *gedp, int argc, const char *argv[], @@ -572,12 +566,6 @@ ged_func_ptr func, const char *usage, int maxargs); -HIDDEN int to_set_fb_mode(struct ged *gedp, - int argc, - const char *argv[], - ged_func_ptr func, - const char *usage, - int maxargs); HIDDEN int to_snap_view(struct ged *gedp, int argc, const char *argv[], @@ -646,9 +634,6 @@ int maxargs); /* Utility Functions */ -HIDDEN int to_close_fbs(struct ged_dm_view *gdvp); -HIDDEN void to_fbs_callback(); -HIDDEN int to_open_fbs(struct ged_dm_view *gdvp, Tcl_Interp *interp); HIDDEN void to_create_vlist_callback_solid(struct solid *gdlp); HIDDEN void to_create_vlist_callback(struct display_list *gdlp); @@ -5619,73 +5604,7 @@ } -HIDDEN int -to_listen(struct ged *gedp, - int argc, - const char *argv[], - ged_func_ptr UNUSED(func), - const char *usage, - int UNUSED(maxargs)) -{ - struct ged_dm_view *gdvp; - /* initialize result */ - bu_vls_trunc(gedp->ged_result_str, 0); - - /* must be wanting help */ - if (argc == 1) { - bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return GED_HELP; - } - - if (3 < argc) { - bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return GED_ERROR; - } - - for (BU_LIST_FOR(gdvp, ged_dm_view, ¤t_top->to_gop->go_head_views.l)) { - if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_name), argv[1])) - break; - } - - if (BU_LIST_IS_HEAD(&gdvp->l, ¤t_top->to_gop->go_head_views.l)) { - bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]); - return GED_ERROR; - } - - if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) { - bu_vls_printf(gedp->ged_result_str, "%s listen: framebuffer not open!\n", argv[0]); - return GED_ERROR; - } - - /* return the port number */ - if (argc == 2) { - bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_listener.fbsl_port); - return GED_OK; - } - - if (argc == 3) { - int port; - - if (bu_sscanf(argv[2], "%d", &port) != 1) { - bu_vls_printf(gedp->ged_result_str, "listen: bad value - %s\n", argv[2]); - return GED_ERROR; - } - - if (port >= 0) - fbs_open(&gdvp->gdv_fbs, port); - else { - fbs_close(&gdvp->gdv_fbs); - } - bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_listener.fbsl_port); - return GED_OK; - } - - bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return GED_ERROR; -} - - HIDDEN int to_local2base(struct ged *gedp, int UNUSED(argc), @@ -7875,65 +7794,6 @@ HIDDEN int -to_set_fb_mode(struct ged *gedp, - int argc, - const char *argv[], - ged_func_ptr UNUSED(func), - const char *usage, - int UNUSED(maxargs)) -{ - int mode; - struct ged_dm_view *gdvp; - - /* initialize result */ - bu_vls_trunc(gedp->ged_result_str, 0); - - /* must be wanting help */ - if (argc == 1) { - bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return GED_HELP; - } - - if (3 < argc) { - bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return GED_ERROR; - } - - for (BU_LIST_FOR(gdvp, ged_dm_view, ¤t_top->to_gop->go_head_views.l)) { - if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_name), argv[1])) - break; - } - - if (BU_LIST_IS_HEAD(&gdvp->l, ¤t_top->to_gop->go_head_views.l)) { - bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]); - return GED_ERROR; - } - - /* Get fb mode */ - if (argc == 2) { - bu_vls_printf(gedp->ged_result_str, "%d", gdvp->gdv_fbs.fbs_mode); - return GED_OK; - } - - /* Set fb mode */ - if (bu_sscanf(argv[2], "%d", &mode) != 1) { - bu_vls_printf(gedp->ged_result_str, "set_fb_mode: bad value - %s\n", argv[2]); - return GED_ERROR; - } - - if (mode < 0) - mode = 0; - else if (TCLCAD_OBJ_FB_MODE_OVERLAY < mode) - mode = TCLCAD_OBJ_FB_MODE_OVERLAY; - - gdvp->gdv_fbs.fbs_mode = mode; - to_refresh_view(gdvp); - - return GED_OK; -} - - -HIDDEN int to_snap_view(struct ged *gedp, int argc, const char *argv[], @@ -8694,60 +8554,7 @@ /*************************** Local Utility Functions ***************************/ - HIDDEN void -to_fbs_callback(void *clientData) -{ - struct ged_dm_view *gdvp = (struct ged_dm_view *)clientData; - - to_refresh_view(gdvp); -} - - -HIDDEN int -to_close_fbs(struct ged_dm_view *gdvp) -{ - if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) - return TCL_OK; - - fb_flush(gdvp->gdv_fbs.fbs_fbp); - fb_close_existing(gdvp->gdv_fbs.fbs_fbp); - gdvp->gdv_fbs.fbs_fbp = FB_NULL; - - return TCL_OK; -} - - -/* - * Open/activate the display managers framebuffer. - */ -HIDDEN int -to_open_fbs(struct ged_dm_view *gdvp, Tcl_Interp *interp) -{ - /* already open */ - if (gdvp->gdv_fbs.fbs_fbp != FB_NULL) - return TCL_OK; - - gdvp->gdv_fbs.fbs_fbp = dm_get_fb(gdvp->gdv_dmp); - - if (gdvp->gdv_fbs.fbs_fbp == FB_NULL) { - Tcl_Obj *obj; - - obj = Tcl_GetObjResult(interp); - if (Tcl_IsShared(obj)) - obj = Tcl_DuplicateObj(obj); - - Tcl_AppendStringsToObj(obj, "openfb: failed to allocate framebuffer memory\n", (char *)NULL); - - Tcl_SetObjResult(interp, obj); - return TCL_ERROR; - } - - return TCL_OK; -} - - -HIDDEN void to_create_vlist_callback_solid(struct solid *sp) { struct ged_dm_view *gdvp; Modified: brlcad/trunk/src/libtclcad/tclcad_private.h =================================================================== --- brlcad/trunk/src/libtclcad/tclcad_private.h 2020-07-14 21:57:25 UTC (rev 76339) +++ brlcad/trunk/src/libtclcad/tclcad_private.h 2020-07-15 00:08:48 UTC (rev 76340) @@ -78,7 +78,25 @@ extern int Ged_Init(Tcl_Interp *interp); extern int Rt_Init(Tcl_Interp *interp); +/* Fb functions */ +extern int to_close_fbs(struct ged_dm_view *gdvp); +extern void to_fbs_callback(); +extern int to_open_fbs(struct ged_dm_view *gdvp, Tcl_Interp *interp); +extern int to_set_fb_mode(struct ged *gedp, + int argc, + const char *argv[], + ged_func_ptr func, + const char *usage, + int maxargs); +extern int to_listen(struct ged *gedp, + int argc, + const char *argv[], + ged_func_ptr func, + const char *usage, + int maxargs); + + /* Utility functions */ extern int to_edit_redraw(struct ged *gedp, int argc, const char *argv[]); 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