winforms 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. * System.Windows.Forms
  2. System.Windows.Forms is currently being implemented using the
  3. Win32 API, we will be using <a
  4. href="http://www.winehq.com">WineLib</a> on Unix systems to
  5. emulate the Win32 API.
  6. Although the original plans were to use Gtk on X and Cocoa on
  7. MacOS X, it would be very hard to emulate the event model in
  8. which some Winforms applications depend, and it would be very
  9. hard to implement the Wndproc method.
  10. In terms of integrating visually with the desktop, we are
  11. hoping to contribute to the Wine project an mechanism to make
  12. it use the Gtk+ themes on X11 and Cocoa on MacOS to render the
  13. widgets, and get the native look and feel on each of these
  14. platforms.
  15. There are no current plans to support embedded devices, but
  16. Gtk/FrameBuffer is an option. If you have suggestions or
  17. recommendations, please let us <a
  18. href="mailto:[email protected]">let us know</a>
  19. * Contributing
  20. The Winforms effort is being coordinated by <a
  21. href="mailto:[email protected]">Dennis Hayes</a>. If you are
  22. interested in helping out with this effort, get in touch with
  23. him.
  24. * System.Drawing
  25. Using existing libraries to implement some of the
  26. functionality required:
  27. <ul>
  28. * gdk-pixbuf is a generic image loader that loads an image
  29. and leaves it into an RGB buffer. It hides all the details
  30. about what image file format is being loaded.
  31. * Libart is a general framework for rendering RGB/RGBA
  32. buffers into RGB buffers and rendering postscript-like paths into
  33. RGB/RGBA buffers.
  34. </ul>
  35. We want to use gdk-pixbuf as the image loader for the image
  36. classes, and then we need operations to render that into the
  37. windowing system (Gtk+, MacOS, etc). But notice how there is
  38. very little dependnecies in Gdk-pixbuf on gtk, and libart has
  39. none.
  40. They are pretty independent from a windowing system
  41. (gdk-pixbuf comes with some "helper" routines for rendering
  42. data into a pixmap and to load pixmaps into RGB buffers).
  43. A few things to keep in mind:
  44. <ul>
  45. * gdk-pixbuf can be used to load images for Gtk+,
  46. MacOS X and Windows, it should be pretty portable,
  47. although we might need in the future to back-port
  48. some new features from Gtk head.
  49. * Libart is probably only going to be used with X11,
  50. as the MacOS X provides the same features in Quartz,
  51. and Win32 *probably* has that in GDI+. If not, we
  52. should use libart in Win32 as well (or for older
  53. Windows systems).
  54. </ul>
  55. * Directory Layout
  56. <pre>
  57. System.Drawing (assembly directory)
  58. System.Drawing.Blah
  59. Common code for "Blah"
  60. Stubs for "Blah" to ease ports.
  61. Gtk
  62. System.Drawing.Blah.
  63. Gtk ports of "System.Drawing.Blah"
  64. MacOS
  65. System.Drawing.Blah
  66. MacOS ports of "System.Drawing.Blah"
  67. WineLIB
  68. System.Drawing.Blah
  69. Win32 ports of "System.Drawing.Blah"
  70. </pre>
  71. Notice that there is a proof of concept Gtk-backend for
  72. Windows.Forms, but nobody is working on it, and for the
  73. reasons stated before it is not a long term strategy.
  74. * Open questions:
  75. I believe that the graphics contexts that are used to render
  76. can accept either libart-like rendering operations and
  77. X11-like rendering operations. This complicates matters, but
  78. I am not sure. Someone needs to investigate this.