dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [DotGNU]System.Windows.Forms Coding Competition


From: Neil Cawse
Subject: RE: [DotGNU]System.Windows.Forms Coding Competition
Date: Mon, 27 Dec 2004 23:09:16 -0500

> 
> 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]