I've got MFDExtractor working nicely in Visual Studio .NET Express (c# version). So far, it's slightly overwhelming - not sure where to start really! Having said that, the first thing I've discovered is that the initial configuration data is stored as xml inside "app.config". In this file it dictates the starting pixels to be cloned by MFDExtractor (which can be confirmed by the 573, 661, 190, etc values which are the default settings in the MFDExtractor options).
Code:
<userSettings>
<MFDExtractor.Properties.Settings>
<setting name="LMFD_ULY" serializeAs="String">
<value>573</value>
</setting>
<setting name="RMFD_ULX" serializeAs="String">
<value>661</value>
</setting>
<setting name="RMFD_ULY" serializeAs="String">
<value>573</value>
</setting>
<setting name="LMFD_ULX" serializeAs="String">
<value>190</value>
</setting>
<setting name="LMFD_StretchToFit" serializeAs="String">
<value>False</value>
</setting>
<setting name="RMFD_StretchToFit" serializeAs="String">
<value>False</value>
</setting>
<setting name="LMFD_LRX" serializeAs="String">
<value>352</value>
</setting>
<setting name="LMFD_LRY" serializeAs="String">
<value>737</value>
</setting>
<setting name="RMFD_LRX" serializeAs="String">
<value>833</value>
</setting>
<setting name="RMFD_LRY" serializeAs="String">
<value>737</value>
</setting>
<setting name="LMFD_UseExactOutputSize" serializeAs="String">
<value>True</value>
</setting>
<setting name="RMFD_UseExactOutputSize" serializeAs="String">
<value>True</value>
</setting>
<setting name="LMFD_OutULX" serializeAs="String">
<value>0</value>
</setting>
<setting name="LMFD_OutULY" serializeAs="String">
<value>0</value>
</setting>
<setting name="LMFD_OutLRX" serializeAs="String">
<value>162</value>
</setting>
<setting name="LMFD_OutLRY" serializeAs="String">
<value>164</value>
</setting>
<setting name="RMFD_OutULX" serializeAs="String">
<value>200</value>
</setting>
<setting name="RMFD_OutULY" serializeAs="String">
<value>0</value>
</setting>
<setting name="RMFD_OutLRX" serializeAs="String">
<value>362</value>
</setting>
<setting name="RMFD_OutLRY" serializeAs="String">
<value>164</value>
</setting>
These string names appear inside "extractor.cs" which I'm guessing is the code to actually extract (or clone) stuff. The following code seems to load the strings from the above xml file and use them as the default settings:
Code:
public void LoadSettings()
{
Properties.Settings settings = Properties.Settings.Default;
_leftMfdInputRect = Rectangle.FromLTRB(settings.LMFD_ULX, settings.LMFD_ULY, settings.LMFD_LRX, settings.LMFD_LRY);
_rightMfdInputRect = Rectangle.FromLTRB(settings.RMFD_ULX, settings.RMFD_ULY, settings.RMFD_LRX, settings.RMFD_LRY);
_leftMfdOutputRect = Rectangle.FromLTRB(settings.LMFD_OutULX, settings.LMFD_OutULY, settings.LMFD_OutLRX, settings.LMFD_OutLRY);
_rightMfdOutputRect = Rectangle.FromLTRB(settings.RMFD_OutULX, settings.RMFD_OutULY, settings.RMFD_OutLRX, settings.RMFD_OutLRY);
_leftMfdAlwaysOnTop = settings.LMFD_AlwaysOnTop;
_rightMfdAlwaysOnTop = settings.RMFD_AlwaysOnTop;
So what I'm thinking is we need to add some hotkeys functionality that would allow us to switch between various sets of pixels. For example, pressing ctrl+alt+1 would change the LMFD_ULY string to "250" thereby changing the area that MFDExtractor is cloning.
The next step would be to remove the Falcon HUD graphics when the settings window is opened. A 3rd/4th/etc cloned window would also be quite useful - something which later versions of MFDExtractor support (so we could look at the sourcecode to see what additions need to be made perhaps?)
Bookmarks