RE: System.Windows.Forms Coding Competition
"Neil Cawse" <[email protected]> Mon, 27 Dec 2004 23:09:16 -0500
| Newsgroups | gmane.comp.gnu.dotgnu.developer |
|---|---|
| Message-ID | <AD5227CC61948542858F505100BC7FB0213766@Server.burlington.geotab.com> |
> > For this reason I want to publish a roughly-prioritized list of > specific missing functionality or other problems in our SWF so that > potential participants in the competition can easily find something > worthwhile to work on. > There is money to be made here doing something really cool and contributions will greatly help move this project along :) This is my list of what I see as the important items. They are ranked with importance and difficulty. This is not exhaustive and may be a bit out of date. We can use it as a starting point. Debate/disagreement with this is welcome! If anyone chooses to implement one of these areas - Id be happy to give my point of view about the best way to do / how to get more information / things to watch for. Regards Neil DotGNU.Images: ************** * Add support for Microsoft's ImageList format (basically bmp's stuck side by side). Needed to build SWF ImageList control. This is our last major hurdle before running proper swf apps. Difficulty Easy. Importance High. * Rework some areas to add in support for alpha blending. Remove the transparency bit mask and replace with an array of alpha's. Then rework frame copy code, resizing code, png, gif code to support the new alphas. Needed to properly support GDI+ functionality. Difficulty Moderate. Importance High. * Add support for transformations into the image copy code. Needed to properly support GDI+. Difficulty Moderate. Importance Moderate. * Build a managed version of the jpeg reader and writer or design win32 support for jpegs. Difficulty Low to High. Importance Low to Moderate. * Build a better test suite for DotGNU.Images to test copying, png support. Report any bugs. Difficulty Easy. Importance Moderate. System.Drawing: *************** * Finish off ToolkitGraphicsImageBase. This will allow us to draw to our own internal bitmap using the drawing primitives like DrawLine, FillPolygon etc. Once this is done, it would be the basis of a framebuffer implementation of IToolkit for things like pda's or whatever. It is also needed for a decent level of System.Graphics support, see www.xrossone.com - very cool but Im not sure if this license is compatible but it may give you insight. Difficulty Moderate. Importance High. * Do linear gradient brush by creating a bitmap to draw with. Difficulty Easy. Importance High. * Add proper scaling support for Pens, support round caps and all other pen attributes. See www.xrossone.com. Difficulty Moderate. Importance Moderate. * Finish implementation of paths. Difficulty Moderate. Importance Moderate. * Change MeasureString/DrawString code to use the minimum amount of temporary storage. It is currently not written efficiently. Difficulty Moderate. Importance Moderate. System.Drawing.Win32: ********************* * Add Mdi support for windows. Difficulty Moderate. Importance High. * Dialog/Modal support for windows. Difficulty Moderate. Importance High. * Mouse cursor support. Difficulty Easy. Importance High. * Settings changed event. Difficulty Easy. Importance Moderate. * Get Font Metrics and test properly. Difficulty Easy. Importance Moderate. * Clipboard support. Difficulty East. Importance Moderate. * Drag and Drop support. Difficulty Moderate. Importance Moderate. * Move all api's to Unicode. Difficulty Easy. Importance Moderate. System.Drawing.XSharp: ********************** * XSharp is significantly slower than Win32 and doesn't need to be. Rework the threading model and a few other areas to improve speed. At the moment XSharp is thread safe and the locking is costing us significantly in terms of performance - I am not knowledgeable enough to know if it is a problem with our locking implementation or that its just too expensive to be thread safe. Microsoft only supports UI's running on the one thread so we don't specifically need to be thread safe for swf support but for security we must just check that we are on the right thread when we make each call. Obviously if we can be thread safe with only a small performance cost then we should be thread safe. Difficulty Easy. Importance High. * Window minimized, maximized, restored, closed?, settings changed events. These are currently not wired in. Difficulty Easy. Importance High. * Better solution to an unknown border size around windows. May be impossible? Difficulty Unknown. Importance High. * Support for other X extensions. The big one is we need to be able to efficiently double buffer. There might be other ways of doing this - I don't really understand all the issues. Difficulty Unknown. Importance Moderate. * Clipboard support. Difficulty Unknown. Importance Moderate. * Drag and Drop support. Difficulty Unknown. Importance Moderate. General: ******** * Get our pnetlib running on Mono - useful to encourage people to move across and help us. Difficulty Easy. Importance Moderate. * Test and properly internationalize pnetlib. Difficulty Easy. Importance Moderate. System.Windows.Forms: ********************* * Carefully check Anchoring, Docking and control creation code, to make sure that the window handles are created as late as possible but at the same time correctly dock and anchor. Don't create a window early because it impacts performance. Easiest to do debugging in Visual Studio. Difficulty High(tricky). Importance High. * Implement BeginInvoke, Invoke, EndInvoke support. This requires work in Win32 and XSharp. Required for multithreaded UI apps. Difficulty Moderate. Importance High. * Ongoing testing, test cases and bug submissions. Difficulty Easy. Importance High. * Implement ImageList - requires DotGNU.Images support of this format. Requires ResX support (simple). Difficulty Moderate. Importance High. * Rework and complete ListBox. Difficulty Moderate. Importance High. * Finish Menus. Implement custom drawing support, short cut keys. To do properly will require some improvements to Win32 and XSharp. Difficulty Moderate. Importance Moderate. * Implement Datagrid control. This is being superseded by another control in V2. Difficulty Moderate. Importance Low. * Implement rest of common dialogs and improve. Difficulty Moderate. Importance Moderate. * Implement LinkLabel control. Difficulty Easy. Importance Moderate. * Implement ListView control. This is a *very* complex control but can be made useful by building a basic level of support. Difficulty High. Importance Moderate. * Implement RichTextBox. Difficulty Very High. Importance Moderate. * Implement Tooltip. This will require some changes to XSharp and Win32. Difficulty Moderate. Importance Moderate. * Implement Trackbar. Difficulty Easy. Importance Moderate. * Rework elements of textbox for better scalability, lower memory usage. Difficulty High. Importance Moderate. * Implement Binding. Difficulty Moderate. Importance Moderate. * Clipboard support. Requires Win32 and XSharp support. Difficulty Easy. Importance Moderate.