Daily Progress

Project Info

Project Name New Cross-Platform 3D Display Manager
Student Name Bogolin Simion Vlad
IRC nick vladbogo
Link to proposal


  • Embed Qt in Tk windows
  • Drawing
    • Line drawing
    • Text drawing
  • Keyboard and mouse integration
  • Embedding a framebuffer window


Community bonding

  • 30 May 2013:
    • Updated short description of the project on the melange page.
  • 1 June 2013:
    • A first step in implementing the qt display manager. Now it only prints logs similar to txt dm, but has some improvements
  • 4 June 2013:
  • 14 June 2013:

Week 1 (17 - 23 June)

  • Weekly milestone:
    • As I haven't worked with Qt before I will focus on getting more familiarized with it this week and also a more detailed look on the existing dm's code to be sure I will not miss anything.
  • 17 June 2013:
    • Created a first qt small application. It is not something complicated. I focused on the compilation procedure and how to integrate qt with cmake.
  • 18 June 2013:
    • I successfully built a qt project using cmake. I struggled with the difference between Qt4 and Qt5 but finally managed to make a cmake build.
  • 19 June 2013:
  • 20 June 2013:
    • Studied existing cmake files in order to complete integration of Qt with cmake.
    • Found out a FindQt.cmake implementation and tested it: does not work.
  • 21 June 2013:
    • Studied existing X-dm implementation, especially the open function.
  • 22 June 2013:
    • A short break so I didn't do much today but I've looked on the mged dm files (mged/dm-ogl.c).
  • 23 June 2013:
    • Studied some more detailed Qt projects that involve basic drawing.
  • Conclusion:
    • Overall it was a good week in which I think I've managed to accomplish the weekly milestone. I still have to clear out some things but I'm confident I can start implementing effectively.

Week 2 (25 - 30 June)

  • Weekly milestone:
    • Start implementing effectively and make progress in embedding Qt in Tk window.
  • 24 June 2013:
    • Committed the qt display manager patch. It only prints logs now.
    • Additional test to set BRLCAD_ENABLE_QT. Still needs to be improved because at the moment the path to Qt installation should be provided in the CMAKE_PREFIX_PATH.
  • 25 June 2013:
    • Integrated Qt in BRL-CAD's cmake build and created a small application to test the integration. Still needs to quiet warnings from Qt files.
  • 26 June 2013:
    • A break day so I did not do much work.
  • 27 June 2013:
    • IRC discussion regarding various problems: framebuffer to be used by the new display manager (i will start with a null/text framebuffer), fPIC flag
    • Committed changes to complete Qt integration in cmake build and found a suitable solution for the position independent code flag at least for the moment (cmake version 2.8.11)
    • Almost everything ready so tomorrow I will start working effectively to embed Qt in Tk window
  • 28 June 2013:
    • Found different ways to quiet warnings from Qt files.
    • Read Qt documentation and studied some basic drawing applications.
  • 29 June 2013:
    • Started working on actual embedding.
    • Small steps in order to create the Tk main window.
    • Go back to Bucharest (and hopefully this will solve the internet connection problem which was a little bad here) so today is a busy day.
  • 30 June 2013:
    • Dealt with generic Tk window problems such as window type (top-level or embedded), creating a display, window dimension.
    • Almost finished the logic behind the Tk window so that Qt can be successfully embedded in it.
  • Conclusion:
    • A lot of things that were needed to be clarified are now clear, especially after the IRC discussion.
    • Tk main window is almost created so I have made some progress in the actual implementation.
    • Still the cmake integration took more that I've expected so I can't say I've made all things I had in mind for this week but this is nothing to be worried about because I am on schedule.

Week 3 (1 July - 7 July)

  • Weekly milestone:
    • Finish embedding Qt in Tk window.
  • 1 July 2013:
    • Finished creating Tk main window: now it's displays an empty window.
    • Struggled with a segfault due to doevent(mged/doevent.c) function: solved this by adding an qt_doevent(mged/dm-qt.c) function which does nothing for the moment.
  • 2 July 2013:
    • Studied QPixmap examples.
  • 3 July 2013:
    • Review existing dm X implementation and focus on pixmap creation.
  • 4 July 2013:
    • After updating to the latest sources Tcl_Eval from dm_open failed. Solved it by recompiling the whole code again.
    • Read about QApplication in detail because when I tried to create some Qt widgets I got a runtime error saying that QApplication is required.
    • Looked on the drawBegin function to see how drawing is dealt with in the current implementation.
    • Ignored the float-equal warning for libdm so that the code compiles with strict compilation on.
  • 5 July 2013:
    • Break day
  • 6 July 2013:
    • Studied an existing Qt and Tk integration.
  • 7 July 2013:
    • Struggled with showing a Qt window using processEvents function.
  • Conclusion:
    • Quite a busy week with a lot of unexpected problems so I am a little bit behind my original schedule but I am confident I will make up for the lost time next week.
    • I had some discussions with my mentor during the past days and decided to leave the Tk part as small as possible (preferably just Qt to be used in the display window)

Week 4

  • Weekly milestone:
    • Draw lines in the new display manager.
  • 8 July 2013:
    • Finally solved the display of the Qt window (processEvents must be called during refresh)
  • 9 July 2013:
    • Studied the mged main loop and refresh procedure to see how could Qt be integrated with.