void TSceneProperties::saveData(TOStream &os) const { if (!m_hGuides.empty()) { os.openChild("hGuides"); for (int i = 0; i < (int)m_hGuides.size(); i++) os << m_hGuides[i]; os.closeChild(); } if (!m_vGuides.empty()) { os.openChild("vGuides"); for (int i = 0; i < (int)m_vGuides.size(); i++) os << m_vGuides[i]; os.closeChild(); } int i; if (!m_cameras.empty()) { os.openChild("cameras"); for (i = 0; i < (int)m_cameras.size(); i++) { os.openChild("camera"); m_cameras[i]->saveData(os); os.closeChild(); } os.closeChild(); } os.openChild("outputs"); std::vector<TOutputProperties *> outputs; outputs.push_back(getOutputProperties()); outputs.push_back(getPreviewProperties()); for (i = 0; i < (int)outputs.size(); i++) { TOutputProperties &out = *outputs[i]; const TRenderSettings &rs = out.getRenderSettings(); std::map<std::string, std::string> attr; attr["name"] = i == 0 ? "main" : "preview"; os.openChild("output", attr); TFilePath outPath = out.getPath(); int from, to, step; out.getRange(from, to, step); os.child("range") << from << to; os.child("step") << step; os.child("shrink") << rs.m_shrinkX; os.child("applyShrinkToViewer") << (rs.m_applyShrinkToViewer ? 1 : 0); os.child("fps") << out.getFrameRate(); os.child("path") << outPath; os.child("bpp") << rs.m_bpp; os.child("multimedia") << out.getMultimediaRendering(); os.child("threadsIndex") << out.getThreadIndex(); os.child("maxTileSizeIndex") << out.getMaxTileSizeIndex(); os.child("subcameraPrev") << (out.isSubcameraPreview() ? 1 : 0); os.child("stereoscopic") << (rs.m_stereoscopic ? 1 : 0) << rs.m_stereoscopicShift; switch (rs.m_quality) { case TRenderSettings::StandardResampleQuality: os.child("resquality") << (int)0; break; case TRenderSettings::ImprovedResampleQuality: os.child("resquality") << (int)1; break; case TRenderSettings::HighResampleQuality: os.child("resquality") << (int)2; case TRenderSettings::Triangle_FilterResampleQuality: os.child("resquality") << (int)100; break; case TRenderSettings::Mitchell_FilterResampleQuality: os.child("resquality") << (int)101; break; case TRenderSettings::Cubic5_FilterResampleQuality: os.child("resquality") << (int)102; break; case TRenderSettings::Cubic75_FilterResampleQuality: os.child("resquality") << (int)103; break; case TRenderSettings::Cubic1_FilterResampleQuality: os.child("resquality") << (int)104; break; case TRenderSettings::Hann2_FilterResampleQuality: os.child("resquality") << (int)105; break; case TRenderSettings::Hann3_FilterResampleQuality: os.child("resquality") << (int)106; break; case TRenderSettings::Hamming2_FilterResampleQuality: os.child("resquality") << (int)107; break; case TRenderSettings::Hamming3_FilterResampleQuality: os.child("resquality") << (int)108; break; case TRenderSettings::Lanczos2_FilterResampleQuality: os.child("resquality") << (int)109; break; case TRenderSettings::Lanczos3_FilterResampleQuality: os.child("resquality") << (int)110; break; case TRenderSettings::Gauss_FilterResampleQuality: os.child("resquality") << (int)111; break; case TRenderSettings::ClosestPixel_FilterResampleQuality: os.child("resquality") << (int)112; break; case TRenderSettings::Bilinear_FilterResampleQuality: os.child("resquality") << (int)113; break; break; DEFAULT: assert(false); } switch (rs.m_fieldPrevalence) { case TRenderSettings::NoField: os.child("fieldprevalence") << (int)0; break; case TRenderSettings::EvenField: os.child("fieldprevalence") << (int)1; break; case TRenderSettings::OddField: os.child("fieldprevalence") << (int)2; break; DEFAULT: assert(false); } os.child("gamma") << rs.m_gamma; os.child("timestretch") << rs.m_timeStretchFrom << rs.m_timeStretchTo; if (out.getOffset() != 0) os.child("offset") << out.getOffset(); os.openChild("formatsProperties"); std::vector<std::string> fileExtensions; out.getFileFormatPropertiesExtensions(fileExtensions); for (int i = 0; i < (int)fileExtensions.size(); i++) { std::string ext = fileExtensions[i]; TPropertyGroup *pg = out.getFileFormatProperties(ext); assert(pg); std::map<std::string, std::string> attr; attr["ext"] = ext; os.openChild("formatProperties", attr); pg->saveData(os); os.closeChild(); } os.closeChild(); os.closeChild(); // </output> } os.closeChild(); os.openChild("cleanupParameters"); m_cleanupParameters->saveData(os); os.closeChild(); os.openChild("scanParameters"); m_scanParameters->saveData(os); os.closeChild(); os.openChild("vectorizerParameters"); m_vectorizerParameters->saveData(os); os.closeChild(); os.child("bgColor") << m_bgColor; os.child("markers") << m_markerDistance << m_markerOffset; os.child("subsampling") << m_fullcolorSubsampling << m_tlvSubsampling; os.child("fieldguide") << m_fieldGuideSize << m_fieldGuideAspectRatio; os.openChild("noteColors"); for (i = 0; i < m_notesColor.size(); i++) os << m_notesColor.at(i); os.closeChild(); }
//------------------------------------------------------------------------------------------------------- long AudioEffectX::dispatcher (long opCode, long index, long value, void *ptr, float opt) { long v = 0; switch(opCode) { // VstEvents case effProcessEvents: v = processEvents ((VstEvents*)ptr); break; // parameters and programs case effCanBeAutomated: v = canParameterBeAutomated (index) ? 1 : 0; break; case effString2Parameter: v = string2parameter (index, (char*)ptr) ? 1 : 0; break; case effGetNumProgramCategories: v = getNumCategories (); break; case effGetProgramNameIndexed: v = getProgramNameIndexed (value, index, (char*)ptr) ? 1 : 0; break; case effCopyProgram: v = copyProgram (index) ? 1 : 0; break; // connections, configuration case effConnectInput: inputConnected (index, value ? true : false); v = 1; break; case effConnectOutput: outputConnected (index, value ? true : false); v = 1; break; case effGetInputProperties: v = getInputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; break; case effGetOutputProperties: v = getOutputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; break; case effGetPlugCategory: v = (long)getPlugCategory (); break; // realtime case effGetCurrentPosition: v = reportCurrentPosition (); break; case effGetDestinationBuffer: v = (long)reportDestinationBuffer (); break; // offline case effOfflineNotify: v = offlineNotify ((VstAudioFile*)ptr, value, index != 0); break; case effOfflinePrepare: v = offlinePrepare ((VstOfflineTask*)ptr, value); break; case effOfflineRun: v = offlineRun ((VstOfflineTask*)ptr, value); break; // other case effSetSpeakerArrangement: v = setSpeakerArrangement ((VstSpeakerArrangement*)value, (VstSpeakerArrangement*)ptr) ? 1 : 0; break; case effProcessVarIo: v = processVariableIo ((VstVariableIo*)ptr) ? 1 : 0; break; case effSetBlockSizeAndSampleRate: setBlockSizeAndSampleRate (value, opt); v = 1; break; case effSetBypass: v = setBypass (value ? true : false) ? 1 : 0; break; case effGetEffectName: v = getEffectName ((char *)ptr) ? 1 : 0; break; case effGetErrorText: v = getErrorText ((char *)ptr) ? 1 : 0; break; case effGetVendorString: v = getVendorString ((char *)ptr) ? 1 : 0; break; case effGetProductString: v = getProductString ((char *)ptr) ? 1 : 0; break; case effGetVendorVersion: v = getVendorVersion (); break; case effVendorSpecific: v = vendorSpecific (index, value, ptr, opt); break; case effCanDo: v = canDo ((char*)ptr); break; case effGetIcon: v = (long)getIcon (); break; case effSetViewPosition: v = setViewPosition (index, value) ? 1 : 0; break; case effGetTailSize: v = getGetTailSize (); break; case effIdle: v = fxIdle (); break; case effGetParameterProperties: v = getParameterProperties (index, (VstParameterProperties*)ptr) ? 1 : 0; break; case effKeysRequired: v = (keysRequired () ? 0 : 1); // reversed to keep v1 compatibility break; case effGetVstVersion: v = getVstVersion (); break; // version 1.0 or unknown default: v = AudioEffect::dispatcher (opCode, index, value, ptr, opt); } return v; }
//------------------------------------------------------------------------------------------------------- long AudioEffectX::dispatcher (long opCode, long index, long value, void *ptr, float opt) { long v = 0; switch(opCode) { // VstEvents case effProcessEvents: v = processEvents ((VstEvents*)ptr); break; // parameters and programs case effCanBeAutomated: v = canParameterBeAutomated (index) ? 1 : 0; break; case effString2Parameter: v = string2parameter (index, (char*)ptr) ? 1 : 0; break; case effGetNumProgramCategories: v = getNumCategories (); break; case effGetProgramNameIndexed: v = getProgramNameIndexed (value, index, (char*)ptr) ? 1 : 0; break; case effCopyProgram: v = copyProgram (index) ? 1 : 0; break; // connections, configuration case effConnectInput: inputConnected (index, value ? true : false); v = 1; break; case effConnectOutput: outputConnected (index, value ? true : false); v = 1; break; case effGetInputProperties: v = getInputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; break; case effGetOutputProperties: v = getOutputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; break; case effGetPlugCategory: v = (long)getPlugCategory (); break; // realtime case effGetCurrentPosition: v = reportCurrentPosition (); break; case effGetDestinationBuffer: v = (long)reportDestinationBuffer (); break; // offline case effOfflineNotify: v = offlineNotify ((VstAudioFile*)ptr, value, index != 0); break; case effOfflinePrepare: v = offlinePrepare ((VstOfflineTask*)ptr, value); break; case effOfflineRun: v = offlineRun ((VstOfflineTask*)ptr, value); break; // other case effSetSpeakerArrangement: v = setSpeakerArrangement ((VstSpeakerArrangement*)value, (VstSpeakerArrangement*)ptr) ? 1 : 0; break; case effProcessVarIo: v = processVariableIo ((VstVariableIo*)ptr) ? 1 : 0; break; case effSetBlockSizeAndSampleRate: setBlockSizeAndSampleRate (value, opt); v = 1; break; case effSetBypass: v = setBypass (value ? true : false) ? 1 : 0; break; case effGetEffectName: v = getEffectName ((char *)ptr) ? 1 : 0; break; case effGetErrorText: v = getErrorText ((char *)ptr) ? 1 : 0; break; case effGetVendorString: v = getVendorString ((char *)ptr) ? 1 : 0; break; case effGetProductString: v = getProductString ((char *)ptr) ? 1 : 0; break; case effGetVendorVersion: v = getVendorVersion (); break; case effVendorSpecific: v = vendorSpecific (index, value, ptr, opt); break; case effCanDo: v = canDo ((char*)ptr); break; case effGetIcon: v = (long)getIcon (); break; case effSetViewPosition: v = setViewPosition (index, value) ? 1 : 0; break; case effGetTailSize: v = getGetTailSize (); break; case effIdle: v = fxIdle (); break; case effGetParameterProperties: v = getParameterProperties (index, (VstParameterProperties*)ptr) ? 1 : 0; break; case effKeysRequired: v = (keysRequired () ? 0 : 1); // reversed to keep v1 compatibility break; case effGetVstVersion: v = getVstVersion (); break; #if VST_2_1_EXTENSIONS case effEditKeyDown: if (editor) { VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt}; v = editor->onKeyDown (keyCode); } break; case effEditKeyUp: if (editor) { VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt}; v = editor->onKeyUp (keyCode); } break; case effSetEditKnobMode: if (editor) v = editor->setKnobMode (value); break; case effGetMidiProgramName: v = getMidiProgramName (index, (MidiProgramName*)ptr); break; case effGetCurrentMidiProgram: v = getCurrentMidiProgram (index, (MidiProgramName*)ptr); break; case effGetMidiProgramCategory: v = getMidiProgramCategory (index, (MidiProgramCategory*)ptr); break; case effHasMidiProgramsChanged: v = hasMidiProgramsChanged (index) ? 1 : 0; break; case effGetMidiKeyName: v = getMidiKeyName (index, (MidiKeyName*)ptr) ? 1 : 0; break; case effBeginSetProgram: v = beginSetProgram () ? 1 : 0; break; case effEndSetProgram: v = endSetProgram () ? 1 : 0; break; #endif // VST_2_1_EXTENSIONS #if VST_2_3_EXTENSIONS case effGetSpeakerArrangement: v = getSpeakerArrangement ((VstSpeakerArrangement**)value, (VstSpeakerArrangement**)ptr) ? 1 : 0; break; case effSetTotalSampleToProcess: v = setTotalSampleToProcess (value); break; case effShellGetNextPlugin: v = getNextShellPlugin ((char*)ptr); break; case effStartProcess: v = startProcess (); break; case effStopProcess: v = stopProcess (); break; case effSetPanLaw: v = setPanLaw (value, opt) ? 1 : 0; break; case effBeginLoadBank: v = beginLoadBank ((VstPatchChunkInfo*)ptr); break; case effBeginLoadProgram: v = beginLoadProgram ((VstPatchChunkInfo*)ptr); break; #endif // VST_2_3_EXTENSIONS // version 1.0 or unknown default: v = AudioEffect::dispatcher (opCode, index, value, ptr, opt); } return v; }