README.mui
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:4k
源码类别:

GIS编程

开发平台:

Visual C++

  1. GLUT users wanting a GLUT user interface toolkit,
  2. Tom Davis (an SGI founder) has contributed his micro-UI toolkit ported
  3. to GLUT.  With this user interface library, it should be possible to
  4. write an OpenGL application with a very asthetically pleasing user
  5. interface.
  6. See the subdirectories:
  7.   lib/mui
  8.   test/mui
  9.   progs/mui
  10. The micro-UI is "as is" and currently doesn't have any documentation
  11. beyond the short description below written by Tom.
  12. - Mark Kilgard
  13.   July 16, 1997
  14. Here's some experimental code for a micro-ui (MUI).
  15. The code that draws the widgets is taken from the old Showcase "libui",
  16. and has been ported to OpenGL.  The showcase code had routines to draw
  17. the various widgets in many "states" -- selected, highlighted, inactive,
  18. et cetera.
  19. The philosophy behind MUI is to provide a ui library with multiple
  20. levels of access.  At the lowest level, if you just want to draw pretty
  21. buttons and handle all the interaction yourself, it should provide
  22. that.  But if you'd like to make a list of the widgets and have the
  23. code do locate-highlight as your mouse passes over the buttons and make
  24. callbacks when buttons are pressed or sliders are slid, it should
  25. provide that too.
  26. You should also be able to work at intermediate levels.  For example,
  27. the Showcase libui has "radio buttons", where a bunch of them are linked
  28. together, and if you press one, the previously pressed button is
  29. released.  But if you'd like to use these for a non-radio-like purpose
  30. becasue you like the way they look, you can do so, but you'll have to
  31. manually control which ones are activated.
  32. There's no layout tool (although I have some ideas on that topic --
  33. I'll try to add them to this someday), so you have to give the
  34. coordinates of all the widgets.
  35. I have not yet ported all the Showcase libui widgets.  So far the list
  36. of ported widgets includes:
  37.     generic buttons
  38.     radio buttons
  39.     tiny radio buttons
  40.     labels
  41.     bold labels
  42.     vertical sliders
  43.     horizontal sliders
  44.     text entry fields
  45.     scrolling text blocks (for selecting file names, for example)
  46.     pull-down menu (*)
  47. (*) Actually, I just provide the menu bar, and what gets activated are
  48. the GLUT pop-up menues.  It works fine, except that the GLUT pop-ups are
  49. not drawn in the same style as the rest of the MUI widgets.
  50. There's one very weird thing in the code -- the MUI always draws stuff
  51. using a sort of display list -- usually a very short display list.  The
  52. reason for this is that the Showcase libui was designed to run on
  53. systems with as few as 16 colors.  To get a bigger variety of colors in
  54. the 16 color case, it would draw things twice with 2 different colors
  55. and 2 different stipple patterns.  So to draw pink if it only had red
  56. and white, it would draw half the pixels in red, change the stipple to
  57. hit the other bits, and then draw the same thing in white.  If the
  58. system had good color capability, it would just draw in pink.
  59. I've tossed out the code that did multiple drawing, but the display list
  60. structure is ubiquitous, so I didn't bother to rip it out yet.  I
  61. shouldn't take too long; I wanted to get all the widgets ported first
  62. and then I figured I'd do the whole thing at once rather than
  63. piece-meal.
  64. I just don't want anyone to conclude that I'm a moron because of the
  65. obviously inefficient drawing code.  (There are pleny of other features
  66. of the code you can use to see if I'm really a moron :^)
  67. The code hasn't been cleaned up in the sense that I'd like to have the
  68. only visible external names begin with "mui_".  I'd also like to make
  69. sure that the only include file you'll need is mui.h.  And mui.h still
  70. exposes too much.  I've only used it for a small number of examples
  71. (about 3) of applications, and each new one I do causes me to clean
  72. things up a bit more.
  73.   -- Tom Davis (davis@sgi.com)