Refactor files based on beta debug build (#645)

* Rename LegoUnkSaveDataWriter -> LegoCharacterManager

* Refactor mxomni into mxomni/mxmisc

* Refactor legoomni into legoomni/misc

* Resolve deps

* Refactor atom

* Refactor mxutil

* Refactor mxio

* Rename/relocate files

* Fix format
This commit is contained in:
Christian Semmler
2024-03-09 15:07:52 -05:00
committed by GitHub
parent c62469fef4
commit 8069923651
150 changed files with 734 additions and 609 deletions

View File

@@ -1,8 +1,9 @@
#ifndef MXATOMIDCOUNTER_H
#define MXATOMIDCOUNTER_H
#ifndef MXATOM_H
#define MXATOM_H
#include "mxstl/stlcompat.h"
#include "mxstring.h"
#include "mxtypes.h"
// Counts the number of existing MxAtomId objects based
// on the matching char* string. A <map> seems fit for purpose here:
@@ -43,6 +44,36 @@ struct MxAtomIdCounterCompare {
class MxAtomIdCounterSet : public set<MxAtomIdCounter*, MxAtomIdCounterCompare> {};
enum LookupMode {
e_exact = 0,
e_lowerCase,
e_upperCase,
e_lowerCase2,
};
// SIZE 0x04
class MxAtomId {
public:
MxAtomId(const char*, LookupMode);
MxAtomId& operator=(const MxAtomId& p_atomId);
~MxAtomId();
MxAtomId() { this->m_internal = 0; }
inline MxBool operator==(const MxAtomId& p_atomId) const { return this->m_internal == p_atomId.m_internal; }
inline MxBool operator!=(const MxAtomId& p_atomId) const { return this->m_internal != p_atomId.m_internal; }
void Clear();
const char* GetInternal() const { return m_internal; }
private:
MxAtomIdCounter* GetCounter(const char*, LookupMode);
void Destroy();
const char* m_internal; // 0x00
};
// SYNTHETIC: LEGO1 0x100ad170
// MxAtomIdCounter::~MxAtomIdCounter
@@ -89,4 +120,4 @@ class MxAtomIdCounterSet : public set<MxAtomIdCounter*, MxAtomIdCounterCompare>
// TEMPLATE: LEGO1 0x100afe40
// Set<MxAtomIdCounter *,MxAtomIdCounterCompare>::~Set<MxAtomIdCounter *,MxAtomIdCounterCompare>
#endif // MXATOMIDCOUNTER_H
#endif // MXATOM_H

View File

@@ -1,37 +0,0 @@
#ifndef MXATOMID_H
#define MXATOMID_H
#include "mxatomidcounter.h"
#include "mxtypes.h"
enum LookupMode {
e_exact = 0,
e_lowerCase,
e_upperCase,
e_lowerCase2,
};
// SIZE 0x04
class MxAtomId {
public:
MxAtomId(const char*, LookupMode);
MxAtomId& operator=(const MxAtomId& p_atomId);
~MxAtomId();
MxAtomId() { this->m_internal = 0; }
inline MxBool operator==(const MxAtomId& p_atomId) const { return this->m_internal == p_atomId.m_internal; }
inline MxBool operator!=(const MxAtomId& p_atomId) const { return this->m_internal != p_atomId.m_internal; }
void Clear();
const char* GetInternal() const { return m_internal; }
private:
MxAtomIdCounter* GetCounter(const char*, LookupMode);
void Destroy();
const char* m_internal; // 0x00
};
#endif // MXATOMID_H

View File

@@ -82,7 +82,7 @@ public:
// https://learn.microsoft.com/en-us/windows/win32/medfound/image-stride
inline MxLong AlignToFourByte(MxLong p_value) const { return (p_value + 3) & -4; }
// Same as the one from legoutil.h, but flipped the other way
// Same as the one from legoutils.h, but flipped the other way
// TODO: While it's not outside the realm of possibility that they
// reimplemented Abs for only this file, that seems odd, right?
inline MxLong AbsFlipped(MxLong p_value) const { return p_value > 0 ? p_value : -p_value; }

View File

@@ -2,7 +2,7 @@
#define MXDSFILE_H
#include "mxdssource.h"
#include "mxioinfo.h"
#include "mxio.h"
#include "mxstring.h"
#include "mxtypes.h"

View File

@@ -2,7 +2,7 @@
#define MXDSOBJECT_H
#include "decomp.h"
#include "mxatomid.h"
#include "mxatom.h"
#include "mxcore.h"
class MxPresenter;

View File

@@ -2,7 +2,7 @@
#define MXENTITY_H
#include "decomp.h"
#include "mxatomid.h"
#include "mxatom.h"
#include "mxcore.h"
#include "mxdsaction.h"
#include "mxtypes.h"

View File

@@ -1,5 +1,5 @@
#ifndef MXIOINFO_H
#define MXIOINFO_H
#ifndef MXIO_H
#define MXIO_H
#include "mxtypes.h"
@@ -29,4 +29,4 @@ public:
MMIOINFO m_info;
};
#endif // MXIOINFO_H
#endif // MXIO_H

View File

@@ -0,0 +1,33 @@
#ifndef MXMISC_H
#define MXMISC_H
#include "mxtypes.h"
class MxAtomIdCounterSet;
class MxDSAction;
class MxEventManager;
class MxMusicManager;
class MxNotificationManager;
class MxObjectFactory;
class MxSoundManager;
class MxStreamer;
class MxTickleManager;
class MxTimer;
class MxVariableTable;
class MxVideoManager;
MxTickleManager* TickleManager();
MxTimer* Timer();
MxStreamer* Streamer();
MxSoundManager* MSoundManager();
MxVariableTable* VariableTable();
MxMusicManager* MusicManager();
MxEventManager* EventManager();
MxResult Start(MxDSAction*);
MxNotificationManager* NotificationManager();
MxVideoManager* MVideoManager();
MxAtomIdCounterSet* AtomIdCounterSet();
MxObjectFactory* ObjectFactory();
void DeleteObject(MxDSAction& p_dsAction);
#endif // MXMISC_H

View File

@@ -1,7 +1,7 @@
#ifndef MXOBJECTFACTORY_H
#define MXOBJECTFACTORY_H
#include "mxatomid.h"
#include "mxatom.h"
#include "mxcore.h"
#define FOR_MXOBJECTFACTORY_OBJECTS(X) \

View File

@@ -5,9 +5,9 @@
#include "mxcriticalsection.h"
#include "mxstring.h"
class MxAtomId;
class MxAtomIdCounterSet;
class MxDSAction;
class MxEntity;
class MxEventManager;
class MxMusicManager;
class MxNotificationManager;
@@ -17,12 +17,11 @@ class MxOmniCreateParam;
class MxPresenter;
class MxSoundManager;
class MxStreamer;
class MxStreamController;
class MxTickleManager;
class MxTimer;
class MxVariableTable;
class MxVideoManager;
class MxEntity;
class MxStreamController;
// VTABLE: LEGO1 0x100dc168
// SIZE 0x68
@@ -96,19 +95,4 @@ protected:
MxBool m_timerRunning; // 0x64
};
MxTickleManager* TickleManager();
MxTimer* Timer();
MxStreamer* Streamer();
MxSoundManager* MSoundManager();
MxVariableTable* VariableTable();
MxMusicManager* MusicManager();
MxEventManager* EventManager();
MxResult Start(MxDSAction*);
MxNotificationManager* NotificationManager();
MxVideoManager* MVideoManager();
MxAtomIdCounterSet* AtomIdCounterSet();
MxObjectFactory* ObjectFactory();
void DeleteObject(MxDSAction& p_dsAction);
#endif // MXOMNI_H

View File

@@ -5,7 +5,6 @@
#include "mxcore.h"
#include "mxcriticalsection.h"
#include "mxdsaction.h"
#include "mxomni.h"
#include "mxpoint32.h"
class MxCompositePresenter;

View File

@@ -2,7 +2,7 @@
#define MXSOUNDMANAGER_H
#include "decomp.h"
#include "mxatomid.h"
#include "mxatom.h"
#include "mxaudiomanager.h"
#include <dsound.h>

View File

@@ -2,7 +2,6 @@
#define MXSOUNDPRESENTER_H
#include "mxaudiopresenter.h"
#include "mxomni.h"
// VTABLE: LEGO1 0x100d4b08
// SIZE 0x54

View File

@@ -2,7 +2,7 @@
#define MXSTREAMCONTROLLER_H
#include "decomp.h"
#include "mxatomid.h"
#include "mxatom.h"
#include "mxcore.h"
#include "mxcriticalsection.h"
#include "mxdsaction.h"

View File

@@ -1,5 +1,5 @@
#ifndef MXUTIL_H
#define MXUTIL_H
#ifndef MXUTILITIES_H
#define MXUTILITIES_H
#include "mxtypes.h"
@@ -77,7 +77,6 @@ void SetOmniUserMessage(void (*p_omniUserMessage)(const char*, MxS32));
MxBool ContainsPresenter(MxCompositePresenterList& p_presenterList, MxPresenter* p_presenter);
void FUN_100b7220(MxDSAction* p_action, MxU32 p_newFlags, MxBool p_setFlags);
MxDSObject* CreateStreamObject(MxDSFile*, MxS16);
MxBool KeyValueStringParse(char*, const char*, const char*);
#endif // MXUTIL_H
#endif // MXUTILITIES_H

View File

@@ -1,8 +1,8 @@
#include "mxdsaction.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include "mxutil.h"
#include "mxutilities.h"
#include <float.h>
#include <limits.h>

View File

@@ -1,6 +1,6 @@
#include "mxdsmediaaction.h"
#include "mxutil.h"
#include "mxutilities.h"
DECOMP_SIZE_ASSERT(MxDSMediaAction, 0xb8)

View File

@@ -11,7 +11,7 @@
#include "mxdsserialaction.h"
#include "mxdssound.h"
#include "mxdsstill.h"
#include "mxutil.h"
#include "mxutilities.h"
#include <stdlib.h>
#include <string.h>

View File

@@ -1,6 +1,6 @@
#include "mxdsselectaction.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include "mxvariabletable.h"

View File

@@ -1,6 +1,6 @@
#include "mxdssound.h"
#include "mxutil.h"
#include "mxutilities.h"
DECOMP_SIZE_ASSERT(MxDSSound, 0xc0)

View File

@@ -2,8 +2,8 @@
#include "decomp.h"
#include "mxdssound.h"
#include "mxmisc.h"
#include "mxmusicmanager.h"
#include "mxomni.h"
DECOMP_SIZE_ASSERT(MxLoopingMIDIPresenter, 0x58);

View File

@@ -3,6 +3,7 @@
#include "decomp.h"
#include "mxautolocker.h"
#include "mxdssound.h"
#include "mxmisc.h"
#include "mxmusicmanager.h"
DECOMP_SIZE_ASSERT(MxMIDIPresenter, 0x58);

View File

@@ -1,6 +1,6 @@
#include "mxmusicmanager.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxticklemanager.h"
#include <windows.h>

View File

@@ -1,8 +1,8 @@
#include "mxmusicpresenter.h"
#include "decomp.h"
#include "mxmisc.h"
#include "mxmusicmanager.h"
#include "mxomni.h"
DECOMP_SIZE_ASSERT(MxMusicPresenter, 0x54);

View File

@@ -2,6 +2,7 @@
#include "define.h"
#include "mxautolocker.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxpresenter.h"
#include "mxticklemanager.h"

View File

@@ -1,6 +1,7 @@
#include "mxsoundpresenter.h"
#include "decomp.h"
#include "mxmisc.h"
#include "mxsoundmanager.h"
DECOMP_SIZE_ASSERT(MxSoundPresenter, 0x54)

View File

@@ -4,9 +4,10 @@
#include "define.h"
#include "mxautolocker.h"
#include "mxdssound.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxsoundmanager.h"
#include "mxutil.h"
#include "mxutilities.h"
DECOMP_SIZE_ASSERT(MxWavePresenter, 0x6c);
DECOMP_SIZE_ASSERT(MxWavePresenter::WaveFormat, 0x18);

View File

@@ -1,7 +1,13 @@
#include "mxatomid.h"
#include "mxatom.h"
#include "decomp.h"
#include "mxmisc.h"
#include "mxomni.h"
DECOMP_SIZE_ASSERT(MxAtomId, 0x04);
DECOMP_SIZE_ASSERT(MxAtomIdCounter, 0x14);
DECOMP_SIZE_ASSERT(MxAtomIdCounterSet, 0x10);
// FUNCTION: LEGO1 0x100acf90
MxAtomId::MxAtomId(const char* p_str, LookupMode p_mode)
{
@@ -107,3 +113,17 @@ void MxAtomId::Clear()
Destroy();
m_internal = NULL;
}
// FUNCTION: LEGO1 0x100ad7f0
void MxAtomIdCounter::Inc()
{
m_value++;
}
// FUNCTION: LEGO1 0x100ad800
void MxAtomIdCounter::Dec()
{
if (m_value) {
m_value--;
}
}

View File

@@ -1,20 +0,0 @@
#include "mxatomidcounter.h"
#include "decomp.h"
DECOMP_SIZE_ASSERT(MxAtomIdCounter, 0x14);
DECOMP_SIZE_ASSERT(MxAtomIdCounterSet, 0x10);
// FUNCTION: LEGO1 0x100ad7f0
void MxAtomIdCounter::Inc()
{
m_value++;
}
// FUNCTION: LEGO1 0x100ad800
void MxAtomIdCounter::Dec()
{
if (m_value) {
m_value--;
}
}

View File

@@ -3,6 +3,7 @@
#include "decomp.h"
#include "mxautolocker.h"
#include "mxdsmultiaction.h"
#include "mxmisc.h"
#include "mxnotificationmanager.h"
#include "mxobjectfactory.h"

View File

@@ -3,6 +3,7 @@
#include "mxactionnotificationparam.h"
#include "mxautolocker.h"
#include "mxcompositepresenter.h"
#include "mxmisc.h"
#include "mxnotificationmanager.h"
#include "mxstreamchunk.h"
#include "mxtimer.h"

View File

@@ -0,0 +1,81 @@
#include "mxmisc.h"
#include "mxomni.h"
// FUNCTION: LEGO1 0x100acea0
MxObjectFactory* ObjectFactory()
{
return MxOmni::GetInstance()->GetObjectFactory();
}
// FUNCTION: LEGO1 0x100aceb0
MxNotificationManager* NotificationManager()
{
return MxOmni::GetInstance()->GetNotificationManager();
}
// FUNCTION: LEGO1 0x100acec0
MxTickleManager* TickleManager()
{
return MxOmni::GetInstance()->GetTickleManager();
}
// FUNCTION: LEGO1 0x100aced0
MxTimer* Timer()
{
return MxOmni::GetInstance()->GetTimer();
}
// FUNCTION: LEGO1 0x100acee0
MxAtomIdCounterSet* AtomIdCounterSet()
{
return MxOmni::GetInstance()->GetAtomIdCounterSet();
}
// FUNCTION: LEGO1 0x100acef0
MxStreamer* Streamer()
{
return MxOmni::GetInstance()->GetStreamer();
}
// FUNCTION: LEGO1 0x100acf00
MxSoundManager* MSoundManager()
{
return MxOmni::GetInstance()->GetSoundManager();
}
// FUNCTION: LEGO1 0x100acf10
MxVideoManager* MVideoManager()
{
return MxOmni::GetInstance()->GetVideoManager();
}
// FUNCTION: LEGO1 0x100acf20
MxVariableTable* VariableTable()
{
return MxOmni::GetInstance()->GetVariableTable();
}
// FUNCTION: LEGO1 0x100acf30
MxMusicManager* MusicManager()
{
return MxOmni::GetInstance()->GetMusicManager();
}
// FUNCTION: LEGO1 0x100acf40
MxEventManager* EventManager()
{
return MxOmni::GetInstance()->GetEventManager();
}
// FUNCTION: LEGO1 0x100acf50
MxResult Start(MxDSAction* p_dsAction)
{
return MxOmni::GetInstance()->Start(p_dsAction);
}
// FUNCTION: LEGO1 0x100acf70
void DeleteObject(MxDSAction& p_dsAction)
{
MxOmni::GetInstance()->DeleteObject(p_dsAction);
}

View File

@@ -8,11 +8,13 @@
#include "mxdsanim.h"
#include "mxdssound.h"
#include "mxentity.h"
#include "mxmisc.h"
#include "mxnotificationmanager.h"
#include "mxobjectfactory.h"
#include "mxomni.h"
#include "mxparam.h"
#include "mxstreamer.h"
#include "mxutil.h"
#include "mxutilities.h"
#include <string.h>

View File

@@ -1,7 +1,7 @@
#include "mxticklemanager.h"
#include "decomp.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include "mxtypes.h"

View File

@@ -1,4 +1,4 @@
#include "mxutil.h"
#include "mxutilities.h"
#include "mxcompositepresenter.h"
#include "mxdsaction.h"

View File

@@ -1,7 +1,7 @@
#include "mxeventmanager.h"
#include "mxcriticalsection.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxthread.h"
#include "mxticklemanager.h"

View File

@@ -3,7 +3,7 @@
#include "decomp.h"
#include "mxautolocker.h"
#include "mxeventmanager.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxvariabletable.h"
DECOMP_SIZE_ASSERT(MxEventPresenter, 0x54);

View File

@@ -1,10 +1,11 @@
#include "mxomni.h"
#include "mxactionnotificationparam.h"
#include "mxatomidcounter.h"
#include "mxatom.h"
#include "mxautolocker.h"
#include "mxdsmultiaction.h"
#include "mxeventmanager.h"
#include "mxmisc.h"
#include "mxmusicmanager.h"
#include "mxnotificationmanager.h"
#include "mxobjectfactory.h"
@@ -28,84 +29,6 @@ MxBool g_use3dSound = FALSE;
// GLOBAL: LEGO1 0x101015b0
MxOmni* MxOmni::g_instance = NULL;
// FUNCTION: LEGO1 0x100acea0
MxObjectFactory* ObjectFactory()
{
return MxOmni::GetInstance()->GetObjectFactory();
}
// FUNCTION: LEGO1 0x100aceb0
MxNotificationManager* NotificationManager()
{
return MxOmni::GetInstance()->GetNotificationManager();
}
// FUNCTION: LEGO1 0x100acec0
MxTickleManager* TickleManager()
{
return MxOmni::GetInstance()->GetTickleManager();
}
// FUNCTION: LEGO1 0x100aced0
MxTimer* Timer()
{
return MxOmni::GetInstance()->GetTimer();
}
// FUNCTION: LEGO1 0x100acee0
MxAtomIdCounterSet* AtomIdCounterSet()
{
return MxOmni::GetInstance()->GetAtomIdCounterSet();
}
// FUNCTION: LEGO1 0x100acef0
MxStreamer* Streamer()
{
return MxOmni::GetInstance()->GetStreamer();
}
// FUNCTION: LEGO1 0x100acf00
MxSoundManager* MSoundManager()
{
return MxOmni::GetInstance()->GetSoundManager();
}
// FUNCTION: LEGO1 0x100acf10
MxVideoManager* MVideoManager()
{
return MxOmni::GetInstance()->GetVideoManager();
}
// FUNCTION: LEGO1 0x100acf20
MxVariableTable* VariableTable()
{
return MxOmni::GetInstance()->GetVariableTable();
}
// FUNCTION: LEGO1 0x100acf30
MxMusicManager* MusicManager()
{
return MxOmni::GetInstance()->GetMusicManager();
}
// FUNCTION: LEGO1 0x100acf40
MxEventManager* EventManager()
{
return MxOmni::GetInstance()->GetEventManager();
}
// FUNCTION: LEGO1 0x100acf50
MxResult Start(MxDSAction* p_dsAction)
{
return MxOmni::GetInstance()->Start(p_dsAction);
}
// FUNCTION: LEGO1 0x100acf70
void DeleteObject(MxDSAction& p_dsAction)
{
MxOmni::GetInstance()->DeleteObject(p_dsAction);
}
// FUNCTION: LEGO1 0x100aef10
MxOmni::MxOmni()
{

View File

@@ -3,7 +3,7 @@
#include "compat.h"
#include "decomp.h"
#include "mxautolocker.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxparam.h"
#include "mxticklemanager.h"
#include "mxtypes.h"

View File

@@ -4,6 +4,7 @@
#include "mxautolocker.h"
#include "mxdiskstreamprovider.h"
#include "mxdsstreamingaction.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxticklemanager.h"

View File

@@ -3,6 +3,7 @@
#include "mxdiskstreamcontroller.h"
#include "mxdschunk.h"
#include "mxdsstreamingaction.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxstreamchunk.h"
#include "mxstreamcontroller.h"

View File

@@ -1,4 +1,4 @@
#include "mxioinfo.h"
#include "mxio.h"
#include "decomp.h"

View File

@@ -2,7 +2,7 @@
#include "mxdsbuffer.h"
#include "mxstreamlist.h"
#include "mxutil.h"
#include "mxutilities.h"
// FUNCTION: LEGO1 0x100c2fe0
MxStreamChunk::~MxStreamChunk()

View File

@@ -3,12 +3,12 @@
#include "mxautolocker.h"
#include "mxdsmultiaction.h"
#include "mxdsstreamingaction.h"
#include "mxmisc.h"
#include "mxnextactiondatastart.h"
#include "mxomni.h"
#include "mxstl/stlcompat.h"
#include "mxstreamchunk.h"
#include "mxtimer.h"
#include "mxutil.h"
#include "mxutilities.h"
DECOMP_SIZE_ASSERT(MxStreamController, 0x64)
DECOMP_SIZE_ASSERT(MxNextActionDataStart, 0x14)

View File

@@ -1,8 +1,8 @@
#include "mxstreamer.h"
#include "mxdiskstreamcontroller.h"
#include "mxmisc.h"
#include "mxnotificationmanager.h"
#include "mxomni.h"
#include "mxramstreamcontroller.h"
#include <algorithm>

View File

@@ -1,7 +1,7 @@
#include "mxthread.h"
#include "decomp.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxtimer.h"
#include <process.h>

View File

@@ -1,7 +1,7 @@
#include "mxbitmap.h"
#include "decomp.h"
#include "mxutil.h"
#include "mxutilities.h"
DECOMP_SIZE_ASSERT(MxBitmap, 0x20);
DECOMP_SIZE_ASSERT(MxBITMAPINFO, 0x428);

View File

@@ -1,6 +1,8 @@
#include "mxdisplaysurface.h"
#include "mxutil.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxutilities.h"
#include "mxvideomanager.h"
#include <windows.h>

View File

@@ -3,7 +3,7 @@
#include "decomp.h"
#include "mxbitmap.h"
#include "mxdsmediaaction.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxpalette.h"
#include "mxvideomanager.h"

View File

@@ -1,6 +1,6 @@
#include "mxpalette.h"
#include "mxomni.h"
#include "mxmisc.h"
#include "mxvideomanager.h"
// GLOBAL: LEGO1 0x10102188

View File

@@ -2,6 +2,7 @@
#include "decomp.h"
#include "mxdsmediaaction.h"
#include "mxmisc.h"
#include "mxvideomanager.h"
DECOMP_SIZE_ASSERT(MxSmkPresenter, 0x720);

View File

@@ -4,8 +4,9 @@
#include "define.h"
#include "mxcompositepresenter.h"
#include "mxdsmediaaction.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxutil.h"
#include "mxutilities.h"
#include "mxvideomanager.h"
DECOMP_SIZE_ASSERT(MxStillPresenter, 0x6c);

View File

@@ -1,6 +1,8 @@
#include "mxvideomanager.h"
#include "mxautolocker.h"
#include "mxmisc.h"
#include "mxomni.h"
#include "mxpresenter.h"
#include "mxticklemanager.h"

View File

@@ -2,6 +2,7 @@
#include "mxautolocker.h"
#include "mxdsmediaaction.h"
#include "mxmisc.h"
#include "mxregioncursor.h"
#include "mxvideomanager.h"