Porting WW to Mono

From World Wind Wiki

Revision as of 17:09, 6 January 2006 by Adamhill (Talk | contribs)
Jump to: navigation, search

This is an overview of issues in porting WorldWind to Mono. During inspection World Wind was of version, and Mono of version 1.1.12. It is also possible that something significant might have left unnoticed.

Win32 stuff that needs rewriting

WorldWind.PerformanceTimer: High resolution timer
WorldWind.Net.ProxyHelper: Proxy configurator used by WorldWind.Net.WebDownload
Utility.DataProtector: Used to encrypt user credentials
Utility.BindingsCheck: Windows pre-SP1 .NET runtime 1.1 "50 bindings problem" check, used by WorldWind.MainApplication
Utility.Win32Message: Turn Win32 error codes into messages, used by DataProtector and BindingsCheck
PluginEngine.PluginListView: Custom ListView that relies on Win32 API
WorldWindow.IsAppStillIdle: Private property relying on Win32 messaging, never used
WorldWind.MainApplication: Custom overridden WndProc, checking of whether the app is running already and sending of cmdline args to a running instance of the app, all three, relies on Win32 messaging
Three NativeMethods classes: Separate helper classes for custom Win32 messaging, used by the messaging issues described above

Windows.Net framework depedencies

Here are listed classes that are needed by WW, but Mono hasn't got them in full functionality yet. Excluding DirectX/3D, these depedencies are not necessarily very difficult to handle.

The inspection was based on a class status information shown in Mono docs and Mono WinForms development status.

These two will need a serious replacement
System.Windows.Forms: DateTimePicker, Form ("mdi under development, transparency not supported"), PropertyGrid, RichTextBox and TextBox may introduce trouble
System: Array and Environment.SpecialFolder
System.Text: StringBuilder
System.Xml: XmlTextWriter
System.IO: MemoryStream

These are the rest of the required namespaces which might work as is:

System.Globalization, System.Drawing, System.Web, System.Collections, System.Net, System.Reflection, System.Diagnostics, System.Xml.Schema, System.Xml.Serialization, System.Drawing.Drawing2D, System.Drawing.Design, System.CodeDom.Compiler, System.CodeDom, System.ComponentModel, System.Collections.Specialized, System.Runtime.CompilerServices, System.Runtime.InteropServices, System.Resources, System.Threading, System.Xml.XPath, System.Configuration, System.Security.Permissions, System.Security, System.Drawing.Imaging, System.Drawing.Text, System.Timers, Microsoft.VisualBasic, Microsoft.CSharp and Microsoft.JScript.

Note about what works =

When I compiled WW with #Develop with 1.10, all the projects in the solution compiled except for WorldWind and WorldWindow. This does not mean that the code will run without error. Since Mono does not stub methods that are not working, it means someone has implememnted it, but may or may not be passing the unit tests.

Personal tools