GUI: prepare for more UX improvements
- add "temporary instrument" to DivEngine - prepare for two things: - instrument preview on file picker (at least built-in one) - instrument selector for banks (#364)
This commit is contained in:
parent
2e52a2855c
commit
b3f1935f2b
|
@ -739,6 +739,7 @@ String DivEngine::getWarnings() {
|
||||||
}
|
}
|
||||||
|
|
||||||
DivInstrument* DivEngine::getIns(int index, DivInstrumentType fallbackType) {
|
DivInstrument* DivEngine::getIns(int index, DivInstrumentType fallbackType) {
|
||||||
|
if (index==-2 && tempIns!=NULL) return tempIns;
|
||||||
if (index<0 || index>=song.insLen) {
|
if (index<0 || index>=song.insLen) {
|
||||||
switch (fallbackType) {
|
switch (fallbackType) {
|
||||||
case DIV_INS_OPLL:
|
case DIV_INS_OPLL:
|
||||||
|
@ -1363,6 +1364,15 @@ int DivEngine::addInstrumentPtr(DivInstrument* which) {
|
||||||
return song.insLen;
|
return song.insLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivEngine::loadTempIns(DivInstrument* which) {
|
||||||
|
BUSY_BEGIN;
|
||||||
|
if (tempIns==NULL) {
|
||||||
|
tempIns=new DivInstrument;
|
||||||
|
}
|
||||||
|
memcpy(tempIns,which,sizeof(DivInstrument));
|
||||||
|
BUSY_END;
|
||||||
|
}
|
||||||
|
|
||||||
void DivEngine::delInstrument(int index) {
|
void DivEngine::delInstrument(int index) {
|
||||||
BUSY_BEGIN;
|
BUSY_BEGIN;
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
|
|
|
@ -302,6 +302,7 @@ class DivEngine {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DivSong song;
|
DivSong song;
|
||||||
|
DivInstrument* tempIns;
|
||||||
DivSystem sysOfChan[DIV_MAX_CHANS];
|
DivSystem sysOfChan[DIV_MAX_CHANS];
|
||||||
int dispatchOfChan[DIV_MAX_CHANS];
|
int dispatchOfChan[DIV_MAX_CHANS];
|
||||||
int dispatchChanOfChan[DIV_MAX_CHANS];
|
int dispatchChanOfChan[DIV_MAX_CHANS];
|
||||||
|
@ -525,6 +526,9 @@ class DivEngine {
|
||||||
// if the returned vector is empty then there was an error.
|
// if the returned vector is empty then there was an error.
|
||||||
std::vector<DivInstrument*> instrumentFromFile(const char* path);
|
std::vector<DivInstrument*> instrumentFromFile(const char* path);
|
||||||
|
|
||||||
|
// load temporary instrument
|
||||||
|
void loadTempIns(DivInstrument* which);
|
||||||
|
|
||||||
// delete instrument
|
// delete instrument
|
||||||
void delInstrument(int index);
|
void delInstrument(int index);
|
||||||
|
|
||||||
|
@ -798,6 +802,7 @@ class DivEngine {
|
||||||
metroAmp(0.0f),
|
metroAmp(0.0f),
|
||||||
metroVol(1.0f),
|
metroVol(1.0f),
|
||||||
totalProcessed(0),
|
totalProcessed(0),
|
||||||
|
tempIns(NULL),
|
||||||
oscBuf{NULL,NULL},
|
oscBuf{NULL,NULL},
|
||||||
oscSize(1),
|
oscSize(1),
|
||||||
oscReadPos(0),
|
oscReadPos(0),
|
||||||
|
|
|
@ -2419,7 +2419,7 @@ bool FurnaceGUI::loop() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wantCaptureKeyboard=ImGui::GetIO().WantCaptureKeyboard;
|
wantCaptureKeyboard=ImGui::GetIO().WantTextInput;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
midiLock.lock();
|
midiLock.lock();
|
||||||
|
|
Loading…
Reference in a new issue