Thread: [brlcad-commits] SF.net SVN: brlcad:[55881] brlcad/trunk/src/libdm/dm-qt.cpp
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <vla...@us...> - 2013-06-27 15:00:36
|
Revision: 55881 http://sourceforge.net/p/brlcad/code/55881 Author: vladbogo Date: 2013-06-27 15:00:33 +0000 (Thu, 27 Jun 2013) Log Message: ----------- Use __BEGIN_DECL and __END_DECL macros instead of extern "C". Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-27 14:27:10 UTC (rev 55880) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-27 15:00:33 UTC (rev 55881) @@ -33,9 +33,8 @@ #include "vmath.h" #include "dm.h" -#ifdef __cplusplus -extern "C" -#endif +__BEGIN_DECLS + struct dm * qt_open(Tcl_Interp *interp, int argc, const char **argv) { @@ -54,6 +53,9 @@ return dmp; } +__END_DECLS + + HIDDEN int qt_close(struct dm *UNUSED(dmp)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 20:39:32
|
Revision: 55898 http://sourceforge.net/p/brlcad/code/55898 Author: vladbogo Date: 2013-06-30 20:39:29 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Variable initialization in order to create Tk main window. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-29 11:25:32 UTC (rev 55897) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 20:39:29 UTC (rev 55898) @@ -29,6 +29,7 @@ #endif #include "tcl.h" +#include "tk.h" #include "bu.h" #include "vmath.h" #include "dm.h" @@ -36,20 +37,37 @@ __BEGIN_DECLS struct dm * -qt_open(Tcl_Interp *interp, int argc, const char **argv) +qt_open(Tcl_Interp *interp, int argc, char **argv) { - struct dm *dmp; + static int count = 0; + struct dm *dmp = (struct dm *)NULL; + struct bu_vls init_proc_vls = BU_VLS_INIT_ZERO; + Tk_Window tkwin; if (argc < 0 || !argv) return DM_NULL; + if ((tkwin = Tk_MainWindow(interp)) == NULL) { + return DM_NULL; + } + BU_ALLOC(dmp, struct dm); - *dmp = dm_qt; + *dmp = dm_qt; /* struct copy */ dmp->dm_interp = interp; + bu_vls_init(&dmp->dm_pathName); + bu_vls_init(&dmp->dm_tkName); + bu_vls_init(&dmp->dm_dName); + + dm_processOptions(dmp, &init_proc_vls, --argc, ++argv); + + if (bu_vls_strlen(&dmp->dm_pathName) == 0) { + bu_vls_printf(&dmp->dm_pathName, ".dm_qt%d", count); + } + ++count; + bu_log("qt_open called\n"); - return dmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 21:09:41
|
Revision: 55899 http://sourceforge.net/p/brlcad/code/55899 Author: vladbogo Date: 2013-06-30 21:09:38 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Tested the dm_top value and created the corresponding window: toplevel or embedded. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 20:39:29 UTC (rev 55898) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:09:38 UTC (rev 55899) @@ -33,6 +33,7 @@ #include "bu.h" #include "vmath.h" #include "dm.h" +#include "dm_xvars.h" __BEGIN_DECLS @@ -44,6 +45,8 @@ struct bu_vls init_proc_vls = BU_VLS_INIT_ZERO; Tk_Window tkwin; + struct dm_xvars *pubvars = NULL; + if (argc < 0 || !argv) return DM_NULL; @@ -56,6 +59,9 @@ *dmp = dm_qt; /* struct copy */ dmp->dm_interp = interp; + BU_ALLOC(dmp->dm_vars.pub_vars, struct dm_xvars); + pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; + bu_vls_init(&dmp->dm_pathName); bu_vls_init(&dmp->dm_tkName); bu_vls_init(&dmp->dm_dName); @@ -67,6 +73,45 @@ } ++count; + if (bu_vls_strlen(&dmp->dm_dName) == 0) { + char *dp; + + dp = getenv("DISPLAY"); + if (dp) + bu_vls_strcpy(&dmp->dm_dName, dp); + else + bu_vls_strcpy(&dmp->dm_dName, ":0.0"); + } + if (bu_vls_strlen(&init_proc_vls) == 0) + bu_vls_strcpy(&init_proc_vls, "bind_dm"); + + if (dmp->dm_top) { + /* Make xtkwin a toplevel window */ + pubvars->xtkwin = Tk_CreateWindowFromPath(interp, tkwin, + bu_vls_addr(&dmp->dm_pathName), + bu_vls_addr(&dmp->dm_dName)); + pubvars->top = pubvars->xtkwin; + } else { + char *cp; + + cp = strrchr(bu_vls_addr(&dmp->dm_pathName), (int)'.'); + if (cp == bu_vls_addr(&dmp->dm_pathName)) { + pubvars->top = tkwin; + } else { + struct bu_vls top_vls = BU_VLS_INIT_ZERO; + + bu_vls_strncpy(&top_vls, (const char *)bu_vls_addr(&dmp->dm_pathName), cp - bu_vls_addr(&dmp->dm_pathName)); + + pubvars->top = Tk_NameToWindow(interp, bu_vls_addr(&top_vls), tkwin); + bu_vls_free(&top_vls); + } + + /* Make xtkwin an embedded window */ + pubvars->xtkwin = + Tk_CreateWindow(interp, pubvars->top, + cp + 1, (char *)NULL); + } + bu_log("qt_open called\n"); return dmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 21:12:23
|
Revision: 55900 http://sourceforge.net/p/brlcad/code/55900 Author: vladbogo Date: 2013-06-30 21:12:19 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Corrected the dm-qt filename and other small inconsistencies. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:09:38 UTC (rev 55899) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:12:19 UTC (rev 55900) @@ -17,7 +17,7 @@ * License along with this file; see the file named COPYING for more * information. */ -/** @file libdm/dm-qt.c +/** @file libdm/dm-qt.cpp * */ #include "common.h" @@ -466,7 +466,7 @@ /* * Local Variables: - * mode: C + * mode: C++ * tab-width: 8 * indent-tabs-mode: t * c-file-style: "stroustrup" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 21:20:33
|
Revision: 55901 http://sourceforge.net/p/brlcad/code/55901 Author: vladbogo Date: 2013-06-30 21:20:30 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Sanity check to see if the window has been succesffully created. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:12:19 UTC (rev 55900) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:20:30 UTC (rev 55901) @@ -35,90 +35,7 @@ #include "dm.h" #include "dm_xvars.h" -__BEGIN_DECLS -struct dm * -qt_open(Tcl_Interp *interp, int argc, char **argv) -{ - static int count = 0; - struct dm *dmp = (struct dm *)NULL; - struct bu_vls init_proc_vls = BU_VLS_INIT_ZERO; - Tk_Window tkwin; - - struct dm_xvars *pubvars = NULL; - - if (argc < 0 || !argv) - return DM_NULL; - - if ((tkwin = Tk_MainWindow(interp)) == NULL) { - return DM_NULL; - } - - BU_ALLOC(dmp, struct dm); - - *dmp = dm_qt; /* struct copy */ - dmp->dm_interp = interp; - - BU_ALLOC(dmp->dm_vars.pub_vars, struct dm_xvars); - pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; - - bu_vls_init(&dmp->dm_pathName); - bu_vls_init(&dmp->dm_tkName); - bu_vls_init(&dmp->dm_dName); - - dm_processOptions(dmp, &init_proc_vls, --argc, ++argv); - - if (bu_vls_strlen(&dmp->dm_pathName) == 0) { - bu_vls_printf(&dmp->dm_pathName, ".dm_qt%d", count); - } - ++count; - - if (bu_vls_strlen(&dmp->dm_dName) == 0) { - char *dp; - - dp = getenv("DISPLAY"); - if (dp) - bu_vls_strcpy(&dmp->dm_dName, dp); - else - bu_vls_strcpy(&dmp->dm_dName, ":0.0"); - } - if (bu_vls_strlen(&init_proc_vls) == 0) - bu_vls_strcpy(&init_proc_vls, "bind_dm"); - - if (dmp->dm_top) { - /* Make xtkwin a toplevel window */ - pubvars->xtkwin = Tk_CreateWindowFromPath(interp, tkwin, - bu_vls_addr(&dmp->dm_pathName), - bu_vls_addr(&dmp->dm_dName)); - pubvars->top = pubvars->xtkwin; - } else { - char *cp; - - cp = strrchr(bu_vls_addr(&dmp->dm_pathName), (int)'.'); - if (cp == bu_vls_addr(&dmp->dm_pathName)) { - pubvars->top = tkwin; - } else { - struct bu_vls top_vls = BU_VLS_INIT_ZERO; - - bu_vls_strncpy(&top_vls, (const char *)bu_vls_addr(&dmp->dm_pathName), cp - bu_vls_addr(&dmp->dm_pathName)); - - pubvars->top = Tk_NameToWindow(interp, bu_vls_addr(&top_vls), tkwin); - bu_vls_free(&top_vls); - } - - /* Make xtkwin an embedded window */ - pubvars->xtkwin = - Tk_CreateWindow(interp, pubvars->top, - cp + 1, (char *)NULL); - } - - bu_log("qt_open called\n"); - return dmp; -} - -__END_DECLS - - HIDDEN int qt_close(struct dm *UNUSED(dmp)) { @@ -464,6 +381,96 @@ }; +__BEGIN_DECLS + +struct dm * +qt_open(Tcl_Interp *interp, int argc, char **argv) +{ + static int count = 0; + struct dm *dmp = (struct dm *)NULL; + struct bu_vls init_proc_vls = BU_VLS_INIT_ZERO; + Tk_Window tkwin; + + struct dm_xvars *pubvars = NULL; + + if (argc < 0 || !argv) + return DM_NULL; + + if ((tkwin = Tk_MainWindow(interp)) == NULL) { + return DM_NULL; + } + + BU_ALLOC(dmp, struct dm); + + *dmp = dm_qt; /* struct copy */ + dmp->dm_interp = interp; + + BU_ALLOC(dmp->dm_vars.pub_vars, struct dm_xvars); + pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; + + bu_vls_init(&dmp->dm_pathName); + bu_vls_init(&dmp->dm_tkName); + bu_vls_init(&dmp->dm_dName); + + dm_processOptions(dmp, &init_proc_vls, --argc, ++argv); + + if (bu_vls_strlen(&dmp->dm_pathName) == 0) { + bu_vls_printf(&dmp->dm_pathName, ".dm_qt%d", count); + } + ++count; + + if (bu_vls_strlen(&dmp->dm_dName) == 0) { + char *dp; + + dp = getenv("DISPLAY"); + if (dp) + bu_vls_strcpy(&dmp->dm_dName, dp); + else + bu_vls_strcpy(&dmp->dm_dName, ":0.0"); + } + if (bu_vls_strlen(&init_proc_vls) == 0) + bu_vls_strcpy(&init_proc_vls, "bind_dm"); + + if (dmp->dm_top) { + /* Make xtkwin a toplevel window */ + pubvars->xtkwin = Tk_CreateWindowFromPath(interp, tkwin, + bu_vls_addr(&dmp->dm_pathName), + bu_vls_addr(&dmp->dm_dName)); + pubvars->top = pubvars->xtkwin; + } else { + char *cp; + + cp = strrchr(bu_vls_addr(&dmp->dm_pathName), (int)'.'); + if (cp == bu_vls_addr(&dmp->dm_pathName)) { + pubvars->top = tkwin; + } else { + struct bu_vls top_vls = BU_VLS_INIT_ZERO; + + bu_vls_strncpy(&top_vls, (const char *)bu_vls_addr(&dmp->dm_pathName), cp - bu_vls_addr(&dmp->dm_pathName)); + + pubvars->top = Tk_NameToWindow(interp, bu_vls_addr(&top_vls), tkwin); + bu_vls_free(&top_vls); + } + + /* Make xtkwin an embedded window */ + pubvars->xtkwin = + Tk_CreateWindow(interp, pubvars->top, + cp + 1, (char *)NULL); + } + + if (pubvars->xtkwin == NULL) { + bu_log("qt_open: Failed to open %s\n", bu_vls_addr(&dmp->dm_pathName)); + (void)qt_close(dmp); + return DM_NULL; + } + + bu_log("qt_open called\n"); + return dmp; +} + +__END_DECLS + + /* * Local Variables: * mode: C++ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 21:24:34
|
Revision: 55902 http://sourceforge.net/p/brlcad/code/55902 Author: vladbogo Date: 2013-06-30 21:24:31 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Added a comment to highlight the qt_open function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:20:30 UTC (rev 55901) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:24:31 UTC (rev 55902) @@ -383,6 +383,12 @@ __BEGIN_DECLS +/* + * Q T _ O P E N + * + * Fire up the display manager, and the display processor. + * + */ struct dm * qt_open(Tcl_Interp *interp, int argc, char **argv) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 21:56:46
|
Revision: 55903 http://sourceforge.net/p/brlcad/code/55903 Author: vladbogo Date: 2013-06-30 21:56:42 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Init dm, open display and set window dimensions. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:24:31 UTC (rev 55902) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:56:42 UTC (rev 55903) @@ -393,8 +393,10 @@ qt_open(Tcl_Interp *interp, int argc, char **argv) { static int count = 0; + int make_square = -1; struct dm *dmp = (struct dm *)NULL; struct bu_vls init_proc_vls = BU_VLS_INIT_ZERO; + struct bu_vls str = BU_VLS_INIT_ZERO; Tk_Window tkwin; struct dm_xvars *pubvars = NULL; @@ -470,6 +472,51 @@ return DM_NULL; } + bu_vls_printf(&dmp->dm_tkName, "%s", (char *)Tk_Name(pubvars->xtkwin)); + + bu_vls_printf(&str, "_init_dm %V %V\n", &init_proc_vls, &dmp->dm_pathName); + + if (Tcl_Eval(interp, bu_vls_addr(&str)) == TCL_ERROR) { + bu_log("qt_open: _init_dm failed\n"); + bu_vls_free(&init_proc_vls); + bu_vls_free(&str); + (void)qt_close(dmp); + return DM_NULL; + } + + bu_vls_free(&init_proc_vls); + bu_vls_free(&str); + + pubvars->dpy = Tk_Display(pubvars->top); + + /* make sure there really is a display before proceeding. */ + if (!pubvars->dpy) { + bu_log("qt_open: Unable to attach to display (%s)\n", bu_vls_addr(&dmp->dm_pathName)); + (void)qt_close(dmp); + return DM_NULL; + } + + if (dmp->dm_width == 0) { + dmp->dm_width = + WidthOfScreen(Tk_Screen(pubvars->xtkwin)) - 30; + ++make_square; + } + + if (dmp->dm_height == 0) { + dmp->dm_height = + HeightOfScreen(Tk_Screen(pubvars->xtkwin)) - 30; + ++make_square; + } + + if (make_square > 0) { + /* Make window square */ + if (dmp->dm_height < + dmp->dm_width) + dmp->dm_width = dmp->dm_height; + else + dmp->dm_height = dmp->dm_width; + } + bu_log("qt_open called\n"); return dmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-06-30 22:26:52
|
Revision: 55904 http://sourceforge.net/p/brlcad/code/55904 Author: vladbogo Date: 2013-06-30 22:26:50 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Added the qt_configureWin_guts function and fixed some initialization issues. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 21:56:42 UTC (rev 55903) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-06-30 22:26:50 UTC (rev 55904) @@ -351,23 +351,23 @@ "qt", "Qt Display", DM_TYPE_QT, - 0,/* top */ + 1, 0,/* width */ 0,/* height */ 0,/* bytes per pixel */ 0,/* bits per channel */ 0, 0, + 1.0,/* aspect ratio */ 0, - 0, {0, 0}, BU_VLS_INIT_ZERO, /* bu_vls path name*/ BU_VLS_INIT_ZERO, /* bu_vls full name drawing window */ BU_VLS_INIT_ZERO, /* bu_vls short name drawing window */ {0, 0, 0}, /* bg color */ {0, 0, 0}, /* fg color */ - {0.0, 0.0, 0.0}, /* clipmin */ - {0.0, 0.0, 0.0}, /* clipmax */ + {GED_MIN, GED_MIN, GED_MIN}, /* clipmin */ + {GED_MAX, GED_MAX, GED_MAX}, /* clipmax */ 0, /* no debugging */ 0, /* no perspective */ 0, /* no lighting */ @@ -381,6 +381,13 @@ }; +HIDDEN int +qt_configureWin_guts(struct dm *UNUSED(dmp), int UNUSED(force)) +{ + return 0; +} + + __BEGIN_DECLS /* @@ -517,6 +524,12 @@ dmp->dm_height = dmp->dm_width; } + Tk_GeometryRequest(pubvars->xtkwin, dmp->dm_width, dmp->dm_height); + + Tk_MakeWindowExist(pubvars->xtkwin); + pubvars->win = Tk_WindowId(pubvars->xtkwin); + dmp->dm_id = pubvars->win; + bu_log("qt_open called\n"); return dmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-14 15:27:51
|
Revision: 56038 http://sourceforge.net/p/brlcad/code/56038 Author: vladbogo Date: 2013-07-14 15:27:47 +0000 (Sun, 14 Jul 2013) Log Message: ----------- remove trailing ws Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-14 15:24:21 UTC (rev 56037) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-14 15:27:47 UTC (rev 56038) @@ -37,8 +37,8 @@ #include "vmath.h" #include "dm.h" #include "dm_xvars.h" -/* -*/ + + HIDDEN int qt_close(struct dm *UNUSED(dmp)) { @@ -543,7 +543,7 @@ QApplication app(argc, argv); QTkMainWindow *w = new QTkMainWindow(pubvars->win); w->show(); - + Tk_MapWindow(pubvars->xtkwin); bu_log("qt_open called\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-14 17:35:16
|
Revision: 56040 http://sourceforge.net/p/brlcad/code/56040 Author: vladbogo Date: 2013-07-14 17:35:12 +0000 (Sun, 14 Jul 2013) Log Message: ----------- Implemented qt-close so that the display manager can be gracefully released. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-14 15:50:25 UTC (rev 56039) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-14 17:35:12 UTC (rev 56040) @@ -37,12 +37,30 @@ #include "dm.h" #include "dm_xvars.h" - +/* + * Q T _ C L O S E + * + * Release the display manager + */ HIDDEN int -qt_close(struct dm *UNUSED(dmp)) +qt_close(struct dm *dmp) { - bu_log("qt_close not implemented\n"); - return 0; + struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + if (privars->qapp) + privars->qapp->quit(); + if (pubvars->xtkwin) + Tk_DestroyWindow(pubvars->xtkwin); + + bu_vls_free(&dmp->dm_pathName); + bu_vls_free(&dmp->dm_tkName); + bu_vls_free(&dmp->dm_dName); + bu_free((genptr_t)dmp->dm_vars.priv_vars, "qt_close: qt_vars"); + bu_free((genptr_t)dmp->dm_vars.pub_vars, "qt_close: dm_xvars"); + bu_free((genptr_t)dmp, "qt_close: dmp"); + + return TCL_OK; } @@ -544,6 +562,7 @@ dmp->dm_id = pubvars->win; privars->qapp = new QApplication(argc, argv); + QTkMainWindow *w = new QTkMainWindow(pubvars->win); w->show(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-15 17:48:21
|
Revision: 56058 http://sourceforge.net/p/brlcad/code/56058 Author: vladbogo Date: 2013-07-15 17:48:18 +0000 (Mon, 15 Jul 2013) Log Message: ----------- Remove trailing ws and other minor changes. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 11:50:52 UTC (rev 56057) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 17:48:18 UTC (rev 56058) @@ -39,7 +39,7 @@ /* * Q T _ C L O S E - * + * * Release the display manager */ HIDDEN int @@ -52,7 +52,7 @@ privars->qapp->quit(); if (pubvars->xtkwin) Tk_DestroyWindow(pubvars->xtkwin); - + bu_vls_free(&dmp->dm_pathName); bu_vls_free(&dmp->dm_tkName); bu_vls_free(&dmp->dm_dName); @@ -411,7 +411,7 @@ QTkMainWindow::QTkMainWindow(WId win) :QWidget() { - QWidget::create(win, false, true); + create(win, false, true); } @@ -435,7 +435,7 @@ struct dm_xvars *pubvars = NULL; struct qt_vars *privars = NULL; - + if (argc < 0 || !argv) return DM_NULL; @@ -563,11 +563,13 @@ privars->qapp = new QApplication(argc, argv); - QTkMainWindow *w = new QTkMainWindow(pubvars->win); - w->show(); + QTkMainWindow *win = new QTkMainWindow((WId)pubvars->win); + win->show(); Tk_MapWindow(pubvars->xtkwin); + + bu_log("Tk: %ld Qt: %ld\n", pubvars->win, win->winId()); bu_log("qt_open called\n"); return dmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-15 18:19:16
|
Revision: 56060 http://sourceforge.net/p/brlcad/code/56060 Author: vladbogo Date: 2013-07-15 18:19:13 +0000 (Mon, 15 Jul 2013) Log Message: ----------- Implemented qt_configureWin_guts. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 18:10:20 UTC (rev 56059) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 18:19:13 UTC (rev 56060) @@ -404,9 +404,29 @@ HIDDEN int -qt_configureWin_guts(struct dm *UNUSED(dmp), int UNUSED(force)) +qt_configureWin_guts(struct dm *dmp, int force) { - return 0; + /* struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; */ + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + int width = privars->win->width(); + int height = privars->win->height(); + + if (!force && + dmp->dm_height == height && + dmp->dm_width == width) + return TCL_OK; + + qt_reshape(dmp, width, height); + + if (dmp->dm_debugLevel) { + bu_log("qt_configureWin_guts()\n"); + bu_log("width = %d, height = %d\n", dmp->dm_width, dmp->dm_height); + } + + /* TODO select font */ + + return TCL_OK; } @@ -566,8 +586,12 @@ privars->qapp = new QApplication(argc, argv); privars->win = new QTkMainWindow((WId)pubvars->win); + privars->win->resize(dmp->dm_width, dmp->dm_height); + privars->win->show(); - + + qt_configureWin_guts(dmp, 1); + Tk_MapWindow(pubvars->xtkwin); bu_log("Tk: %ld Qt: %ld\n", pubvars->win, privars->win->winId()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-15 18:58:58
|
Revision: 56061 http://sourceforge.net/p/brlcad/code/56061 Author: vladbogo Date: 2013-07-15 18:58:55 +0000 (Mon, 15 Jul 2013) Log Message: ----------- Set window background color. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 18:19:13 UTC (rev 56060) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 18:58:55 UTC (rev 56061) @@ -588,10 +588,18 @@ privars->win = new QTkMainWindow((WId)pubvars->win); privars->win->resize(dmp->dm_width, dmp->dm_height); + QPalette *pal = new QPalette(); + pal->setColor(QPalette::Background, Qt::black); + privars->win->setAutoFillBackground(true); + privars->win->setPalette(*pal); + delete pal; + privars->win->show(); qt_configureWin_guts(dmp, 1); + Tk_SetWindowBackground(pubvars->xtkwin, + 0); Tk_MapWindow(pubvars->xtkwin); bu_log("Tk: %ld Qt: %ld\n", pubvars->win, privars->win->winId()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-15 19:11:18
|
Revision: 56062 http://sourceforge.net/p/brlcad/code/56062 Author: vladbogo Date: 2013-07-15 19:11:14 +0000 (Mon, 15 Jul 2013) Log Message: ----------- Remove trailing ws and other small cleanups. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 18:58:55 UTC (rev 56061) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-15 19:11:14 UTC (rev 56062) @@ -48,6 +48,9 @@ struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + privars->win->close(); + delete privars->win; + if (privars->qapp) privars->qapp->quit(); if (pubvars->xtkwin) @@ -210,11 +213,39 @@ } +HIDDEN void +qt_reshape(struct dm *dmp, int width, int height) +{ + dmp->dm_height = height; + dmp->dm_width = width; + dmp->dm_aspect = (fastf_t)dmp->dm_width / (fastf_t)dmp->dm_height; +} + + HIDDEN int -qt_configureWin(struct dm *UNUSED(dmp), int UNUSED(force)) +qt_configureWin(struct dm *dmp, int force) { - bu_log("qt_configureWin not implemented\n"); - return 0; + /* struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; */ + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + int width = privars->win->width(); + int height = privars->win->height(); + + if (!force && + dmp->dm_height == height && + dmp->dm_width == width) + return TCL_OK; + + qt_reshape(dmp, width, height); + + if (dmp->dm_debugLevel) { + bu_log("qt_configureWin_guts()\n"); + bu_log("width = %d, height = %d\n", dmp->dm_width, dmp->dm_height); + } + + /* TODO select font */ + + return TCL_OK; } @@ -313,15 +344,6 @@ } -HIDDEN void -qt_reshape(struct dm *dmp, int width, int height) -{ - dmp->dm_height = height; - dmp->dm_width = width; - dmp->dm_aspect = (fastf_t)dmp->dm_width / (fastf_t)dmp->dm_height; -} - - HIDDEN int qt_makeCurrent(struct dm *UNUSED(dmp)) { @@ -403,33 +425,6 @@ }; -HIDDEN int -qt_configureWin_guts(struct dm *dmp, int force) -{ - /* struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; */ - struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; - - int width = privars->win->width(); - int height = privars->win->height(); - - if (!force && - dmp->dm_height == height && - dmp->dm_width == width) - return TCL_OK; - - qt_reshape(dmp, width, height); - - if (dmp->dm_debugLevel) { - bu_log("qt_configureWin_guts()\n"); - bu_log("width = %d, height = %d\n", dmp->dm_width, dmp->dm_height); - } - - /* TODO select font */ - - return TCL_OK; -} - - QTkMainWindow::QTkMainWindow(WId win) :QWidget() { @@ -587,17 +582,17 @@ privars->win = new QTkMainWindow((WId)pubvars->win); privars->win->resize(dmp->dm_width, dmp->dm_height); - + QPalette *pal = new QPalette(); - pal->setColor(QPalette::Background, Qt::black); + pal->setColor(QPalette::Background, Qt::black); privars->win->setAutoFillBackground(true); privars->win->setPalette(*pal); delete pal; - + privars->win->show(); - - qt_configureWin_guts(dmp, 1); - + + qt_configureWin(dmp, 1); + Tk_SetWindowBackground(pubvars->xtkwin, 0); Tk_MapWindow(pubvars->xtkwin); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-17 19:59:50
|
Revision: 56108 http://sourceforge.net/p/brlcad/code/56108 Author: vladbogo Date: 2013-07-17 19:59:47 +0000 (Wed, 17 Jul 2013) Log Message: ----------- Implemented the qt_setBGcolor function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-17 19:35:15 UTC (rev 56107) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-17 19:59:47 UTC (rev 56108) @@ -201,10 +201,24 @@ HIDDEN int -qt_setBGColor(struct dm *UNUSED(dmp), unsigned char UNUSED(r), unsigned char UNUSED(g), unsigned char UNUSED(b)) +qt_setBGColor(struct dm *dmp, unsigned char r, unsigned char g, unsigned char b) { - bu_log("qt_setBGColor not implemented\n"); - return 0; + QColor q; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + q.setRgb(r, g, b); + + dmp->dm_bg[0] = r; + dmp->dm_bg[1] = g; + dmp->dm_bg[2] = b; + + privars->bg = q; + + QPalette pal = privars->win->palette(); + pal.setColor(QPalette::Background, Qt::black); + privars->win->setPalette(pal); + + return TCL_OK; } @@ -596,13 +610,8 @@ privars->win->resize(dmp->dm_width, dmp->dm_height); /* set the background color */ - privars->bg = Qt::black; - privars->fg = Qt::red; - QPalette *pal = new QPalette(); - pal->setColor(QPalette::Background, privars->bg); privars->win->setAutoFillBackground(true); - privars->win->setPalette(*pal); - delete pal; + qt_setBGColor(dmp, 0, 0, 0); privars->win->show(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2013-07-18 17:08:21
|
Revision: 56119 http://sourceforge.net/p/brlcad/code/56119 Author: carlmoore Date: 2013-07-18 17:08:17 +0000 (Thu, 18 Jul 2013) Log Message: ----------- remove trailing blanks/tabs Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-18 08:35:34 UTC (rev 56118) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-18 17:08:17 UTC (rev 56119) @@ -205,19 +205,19 @@ { QColor q; struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; - + q.setRgb(r, g, b); dmp->dm_bg[0] = r; dmp->dm_bg[1] = g; dmp->dm_bg[2] = b; - + privars->bg = q; - + QPalette pal = privars->win->palette(); pal.setColor(QPalette::Background, Qt::black); privars->win->setPalette(pal); - + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-19 07:09:13
|
Revision: 56123 http://sourceforge.net/p/brlcad/code/56123 Author: vladbogo Date: 2013-07-19 07:09:10 +0000 (Fri, 19 Jul 2013) Log Message: ----------- Implemented qt-setFGColor. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 06:57:59 UTC (rev 56122) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 07:09:10 UTC (rev 56123) @@ -214,10 +214,20 @@ HIDDEN int -qt_setFGColor(struct dm *UNUSED(dmp), unsigned char UNUSED(r), unsigned char UNUSED(g), unsigned char UNUSED(b), int UNUSED(strict), fastf_t UNUSED(transparency)) +qt_setFGColor(struct dm *dmp, unsigned char r, unsigned char g, unsigned char b, int UNUSED(strict), fastf_t transparency) { - bu_log("qt_setFGColor not implemented\n"); - return 0; + QColor q; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + q.setRgb(r, g, b, transparency); + + dmp->dm_fg[0] = r; + dmp->dm_fg[1] = g; + dmp->dm_fg[2] = b; + + privars->fg = q; + + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-19 08:48:15
|
Revision: 56125 http://sourceforge.net/p/brlcad/code/56125 Author: vladbogo Date: 2013-07-19 08:48:12 +0000 (Fri, 19 Jul 2013) Log Message: ----------- Implemented qt_setLineAttr function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 07:57:01 UTC (rev 56124) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 08:48:12 UTC (rev 56125) @@ -248,10 +248,25 @@ HIDDEN int -qt_setLineAttr(struct dm *UNUSED(dmp), int UNUSED(width), int UNUSED(style)) +qt_setLineAttr(struct dm *dmp, int width, int style) { - bu_log("qt_setLineAttr not implemented\n"); - return 0; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + dmp->dm_lineWidth = width; + dmp->dm_lineStyle = style; + + if (width <= 1) + width = 0; + + QPen p = privars->painter->pen(); + p.setWidth(width); + if (style == DM_DASHED_LINE) + p.setStyle(Qt::DashLine); + else + p.setStyle(Qt::SolidLine); + privars->painter->setPen(p); + + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-19 08:58:11
|
Revision: 56126 http://sourceforge.net/p/brlcad/code/56126 Author: vladbogo Date: 2013-07-19 08:58:07 +0000 (Fri, 19 Jul 2013) Log Message: ----------- Implemented the qt_drawString2D function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 08:48:12 UTC (rev 56125) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 08:58:07 UTC (rev 56126) @@ -119,10 +119,16 @@ HIDDEN int -qt_drawString2D(struct dm *UNUSED(dmp), const char *UNUSED(str), fastf_t UNUSED(x), fastf_t UNUSED(y), int UNUSED(size), int UNUSED(use_aspect)) +qt_drawString2D(struct dm *dmp, const char *str, fastf_t x, fastf_t y, int UNUSED(size), int use_aspect) { - bu_log("qt_drawString2D not implemented\n"); - return 0; + int sx, sy; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + sx = dm_Normal2Xx(dmp, x); + sy = dm_Normal2Xy(dmp, y, use_aspect); + + privars->painter->drawText(sx, sy, str); + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-19 11:55:18
|
Revision: 56128 http://sourceforge.net/p/brlcad/code/56128 Author: vladbogo Date: 2013-07-19 11:55:15 +0000 (Fri, 19 Jul 2013) Log Message: ----------- Implemented the qt_drawPoint2D function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 09:34:05 UTC (rev 56127) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-19 11:55:15 UTC (rev 56128) @@ -166,10 +166,16 @@ HIDDEN int -qt_drawPoint2D(struct dm *UNUSED(dmp), fastf_t UNUSED(x), fastf_t UNUSED(y)) +qt_drawPoint2D(struct dm *dmp, fastf_t x, fastf_t y) { - bu_log("qt_drawPoint2D not implemented\n"); - return 0; + int sx, sy; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + sx = dm_Normal2Xx(dmp, x); + sy = dm_Normal2Xy(dmp, y, 0); + + privars->painter->drawPoint(sx, sy); + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-26 21:07:29
|
Revision: 56242 http://sourceforge.net/p/brlcad/code/56242 Author: vladbogo Date: 2013-07-26 21:07:26 +0000 (Fri, 26 Jul 2013) Log Message: ----------- Sanity checks, ws, log calls Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-26 20:49:34 UTC (rev 56241) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-26 21:07:26 UTC (rev 56242) @@ -82,7 +82,7 @@ privars->painter->setPen(privars->fg); privars->painter->setFont(*privars->font); - bu_log("drawBegin called\n"); + bu_log("qt_drawBegin called\n"); return TCL_OK; } @@ -91,11 +91,13 @@ qt_drawEnd(struct dm *dmp) { struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + privars->painter->end(); delete privars->painter; privars->painter = NULL; dmp->dm_processEvents(dmp); + bu_log("qt_drawEnd called\n"); return TCL_OK; } @@ -133,7 +135,11 @@ sx = dm_Normal2Xx(dmp, x); sy = dm_Normal2Xy(dmp, y, use_aspect); + if (privars->painter == NULL) + return TCL_ERROR; privars->painter->drawText(sx, sy, str); + + bu_log("qt_drawString2D called\n"); return TCL_OK; } @@ -149,7 +155,11 @@ sy1 = dm_Normal2Xy(dmp, y_1, 0); sy2 = dm_Normal2Xy(dmp, y_2, 0); + if (privars->painter == NULL) + return TCL_ERROR; privars->painter->drawLine(sx1, sy1, sx2, sy2); + + bu_log("qt_drawLine2D called\n"); return TCL_OK; } @@ -179,7 +189,11 @@ sx = dm_Normal2Xx(dmp, x); sy = dm_Normal2Xy(dmp, y, 0); + if (privars->painter == NULL) + return TCL_ERROR; privars->painter->drawPoint(sx, sy); + + bu_log("qt_drawPoint2D called\n"); return TCL_OK; } @@ -238,8 +252,12 @@ privars->fg.setRgb(r, g, b); if (privars->painter != NULL) { - privars->painter->setPen(privars->fg); + QPen p = privars->painter->pen(); + p.setColor(privars->fg); + privars->painter->setPen(p); } + + bu_log("qt_setFGColor called\n"); return TCL_OK; } @@ -255,8 +273,11 @@ dmp->dm_bg[1] = g; dmp->dm_bg[2] = b; + if(privars->pix == NULL) + return TCL_ERROR; privars->pix->fill(privars->bg); + bu_log("qt_setBGColor called\n"); return TCL_OK; } @@ -272,6 +293,8 @@ if (width <= 1) width = 0; + if (privars->painter == NULL) + return TCL_ERROR; QPen p = privars->painter->pen(); p.setWidth(width); if (style == DM_DASHED_LINE) @@ -280,6 +303,7 @@ p.setStyle(Qt::SolidLine); privars->painter->setPen(p); + bu_log("qt_setLineAttr called\n"); return TCL_OK; } @@ -290,6 +314,8 @@ dmp->dm_height = height; dmp->dm_width = width; dmp->dm_aspect = (fastf_t)dmp->dm_width / (fastf_t)dmp->dm_height; + + bu_log("qt_reshape called\n"); } @@ -342,6 +368,7 @@ } } + bu_log("qt_configureWin called\n"); return TCL_OK; } @@ -742,13 +769,12 @@ privars->pix = new QPixmap(dmp->dm_width, dmp->dm_height); privars->win = new QTkMainWindow(privars->pix, window); - privars->win->create(); privars->win->setWidth(dmp->dm_width); privars->win->setHeight(dmp->dm_height); - privars->win->show(); privars->font = NULL; + qt_configureWin(dmp, 1); privars->painter = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-27 19:02:16
|
Revision: 56266 http://sourceforge.net/p/brlcad/code/56266 Author: vladbogo Date: 2013-07-27 19:02:13 +0000 (Sat, 27 Jul 2013) Log Message: ----------- Resize the Qt window when the Tk one changes size. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-27 18:30:31 UTC (rev 56265) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-27 19:02:13 UTC (rev 56266) @@ -322,11 +322,11 @@ HIDDEN int qt_configureWin(struct dm *dmp, int force) { - /* struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; */ + struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars; struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; - int width = privars->win->width(); - int height = privars->win->height(); + int width = Tk_Width(pubvars->xtkwin); + int height = Tk_Height(pubvars->xtkwin); if (!force && dmp->dm_height == height && @@ -334,6 +334,7 @@ return TCL_OK; qt_reshape(dmp, width, height); + privars->win->resize(width, height); *privars->pix = privars->pix->scaled(width, height); if (dmp->dm_debugLevel) { @@ -769,8 +770,7 @@ privars->pix = new QPixmap(dmp->dm_width, dmp->dm_height); privars->win = new QTkMainWindow(privars->pix, window); - privars->win->setWidth(dmp->dm_width); - privars->win->setHeight(dmp->dm_height); + privars->win->resize(dmp->dm_width, dmp->dm_height); privars->win->show(); privars->font = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-30 20:21:35
|
Revision: 56359 http://sourceforge.net/p/brlcad/code/56359 Author: vladbogo Date: 2013-07-30 20:21:32 +0000 (Tue, 30 Jul 2013) Log Message: ----------- Repaint the window each time drawEnd is called to prevent lag between events and updates. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:13:20 UTC (rev 56358) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:21:32 UTC (rev 56359) @@ -39,6 +39,13 @@ #include "dm.h" #include "dm_xvars.h" +HIDDEN bool +qt_sendRepaintEvent(struct dm *dmp) +{ + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + QEvent e(QEvent::UpdateRequest); + return privars->qapp->sendEvent(privars->win, &e); +} /* * Q T _ C L O S E * @@ -94,6 +101,7 @@ privars->painter->end(); delete privars->painter; privars->painter = NULL; + qt_sendRepaintEvent(dmp); dmp->dm_processEvents(dmp); bu_log("qt_drawEnd called\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-30 20:55:30
|
Revision: 56363 http://sourceforge.net/p/brlcad/code/56363 Author: vladbogo Date: 2013-07-30 20:55:26 +0000 (Tue, 30 Jul 2013) Log Message: ----------- Implemented the qt_drawVList function. Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:53:04 UTC (rev 56362) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:55:26 UTC (rev 56363) @@ -226,10 +226,168 @@ HIDDEN int -qt_drawVList(struct dm *UNUSED(dmp), struct bn_vlist *UNUSED(vp)) -{ - bu_log("qt_drawVList not implemented\n"); - return 0; +qt_drawVList(struct dm *dmp, struct bn_vlist *vp) +{ + static vect_t spnt, lpnt, pnt; + struct bn_vlist *tvp; + QLine lines[1024]; + QLine *linep; + int nseg; + fastf_t delta; + point_t *pt_prev = NULL; + fastf_t dist_prev=1.0; + struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars; + + /* delta is used in clipping to insure clipped endpoint is + * slightly in front of eye plane (perspective mode only). This + * value is a SWAG that seems to work OK. + */ + delta = privars->qmat[15]*0.0001; + if (delta < 0.0) + delta = -delta; + if (delta < SQRT_SMALL_FASTF) + delta = SQRT_SMALL_FASTF; + + nseg = 0; + linep = lines; + for (BU_LIST_FOR(tvp, bn_vlist, &vp->l)) { + int i; + int nused = tvp->nused; + int *cmd = tvp->cmd; + point_t *pt = tvp->pt; + fastf_t dist; + + for (i = 0; i < nused; i++, cmd++, pt++) { + switch (*cmd) { + case BN_VLIST_POLY_START: + case BN_VLIST_POLY_VERTNORM: + case BN_VLIST_TRI_START: + case BN_VLIST_TRI_VERTNORM: + continue; + case BN_VLIST_POLY_MOVE: + case BN_VLIST_LINE_MOVE: + case BN_VLIST_TRI_MOVE: + /* Move, not draw */ + if (dmp->dm_perspective > 0) { + /* cannot apply perspective transformation to + * points behind eye plane!!!! + */ + dist = VDOT(*pt, &privars->qmat[12]) + privars->qmat[15]; + if (dist <= 0.0) { + pt_prev = pt; + dist_prev = dist; + continue; + } else { + MAT4X3PNT(lpnt, privars->qmat, *pt); + dist_prev = dist; + pt_prev = pt; + } + } else { + MAT4X3PNT(lpnt, privars->qmat, *pt); + } + + lpnt[0] *= 2047; + lpnt[1] *= 2047 * dmp->dm_aspect; + lpnt[2] *= 2047; + continue; + case BN_VLIST_POLY_DRAW: + case BN_VLIST_POLY_END: + case BN_VLIST_LINE_DRAW: + case BN_VLIST_TRI_DRAW: + case BN_VLIST_TRI_END: + /* draw */ + if (dmp->dm_perspective > 0) { + dist = VDOT(*pt, &privars->qmat[12]) + privars->qmat[15]; + if (dist <= 0.0) { + if (dist_prev <= 0.0) { + /* nothing to plot */ + dist_prev = dist; + pt_prev = pt; + continue; + } else { + if (pt_prev) { + fastf_t alpha; + vect_t diff; + point_t tmp_pt; + + /* clip this end */ + VSUB2(diff, *pt, *pt_prev); + alpha = (dist_prev - delta) / (dist_prev - dist); + VJOIN1(tmp_pt, *pt_prev, alpha, diff); + MAT4X3PNT(pnt, privars->qmat, tmp_pt); + } + } + } else { + if (dist_prev <= 0.0) { + if (pt_prev) { + fastf_t alpha; + vect_t diff; + point_t tmp_pt; + + /* clip other end */ + VSUB2(diff, *pt, *pt_prev); + alpha = (-dist_prev + delta) / (dist - dist_prev); + VJOIN1(tmp_pt, *pt_prev, alpha, diff); + MAT4X3PNT(lpnt, privars->qmat, tmp_pt); + lpnt[0] *= 2047; + lpnt[1] *= 2047 * dmp->dm_aspect; + lpnt[2] *= 2047; + MAT4X3PNT(pnt, privars->qmat, *pt); + } + } else { + MAT4X3PNT(pnt, privars->qmat, *pt); + } + } + dist_prev = dist; + } else { + MAT4X3PNT(pnt, privars->qmat, *pt); + } + + pnt[0] *= 2047; + pnt[1] *= 2047 * dmp->dm_aspect; + pnt[2] *= 2047; + + /* save pnt --- it might get changed by clip() */ + VMOVE(spnt, pnt); + pt_prev = pt; + + if (dmp->dm_zclip) { + if (vclip(lpnt, pnt, + dmp->dm_clipmin, + dmp->dm_clipmax) == 0) { + VMOVE(lpnt, spnt); + continue; + } + } + /* convert to Qt window coordinates */ + linep->setLine ((short)GED_TO_Xx(dmp, lpnt[0]), + (short)GED_TO_Xy(dmp, lpnt[1]), + (short)GED_TO_Xx(dmp, pnt[0]), + (short)GED_TO_Xy(dmp, pnt[1]) + ); + + nseg++; + linep++; + VMOVE(lpnt, spnt); + + if (nseg == 1024) { + privars->painter->drawLines(lines, nseg); + nseg = 0; + linep = lines; + } + break; + case BN_VLIST_POINT_DRAW: + break; + } + } + } + + if (nseg) { + privars->painter->drawLines(lines, nseg); + } + + bu_log("qt_drawVList called\n"); + return TCL_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vla...@us...> - 2013-07-30 20:59:56
|
Revision: 56364 http://sourceforge.net/p/brlcad/code/56364 Author: vladbogo Date: 2013-07-30 20:59:52 +0000 (Tue, 30 Jul 2013) Log Message: ----------- ws Modified Paths: -------------- brlcad/trunk/src/libdm/dm-qt.cpp Modified: brlcad/trunk/src/libdm/dm-qt.cpp =================================================================== --- brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:55:26 UTC (rev 56363) +++ brlcad/trunk/src/libdm/dm-qt.cpp 2013-07-30 20:59:52 UTC (rev 56364) @@ -227,7 +227,7 @@ HIDDEN int qt_drawVList(struct dm *dmp, struct bn_vlist *vp) -{ +{ static vect_t spnt, lpnt, pnt; struct bn_vlist *tvp; QLine lines[1024]; @@ -365,7 +365,7 @@ (short)GED_TO_Xx(dmp, pnt[0]), (short)GED_TO_Xy(dmp, pnt[1]) ); - + nseg++; linep++; VMOVE(lpnt, spnt); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |