void ThermoPhase::initThermoXML(XML_Node& phaseNode, const std::string& id)
{
    if (phaseNode.hasChild("state")) {
        setStateFromXML(phaseNode.child("state"));
    }
    xMol_Ref.resize(m_kk);
    getMoleFractions(&xMol_Ref[0]);
}
示例#2
0
// set state, including the view status, from a binary blob stored in host.
//
void MLPluginProcessor::setStateFromBlob (const void* data, int sizeInBytes)
{
	debug() << "setStateFromBlob: " << sizeInBytes << "bytes of XML data.\n";
	XmlElementPtr xmlState(getXmlFromBinary (data, sizeInBytes));
	if (xmlState)
	{
        bool setViewAttributes = true;
		setStateFromXML(*xmlState, setViewAttributes);
		mpLatestStateLoaded = xmlState;
	}
}
示例#3
0
void MLPluginProcessor::setStateFromText (const String& stateStr)
{
	XmlDocument doc(stateStr);
	XmlElementPtr xmlState (doc.getDocumentElement());
	if (xmlState)
	{
        bool setViewAttributes = false;
		setStateFromXML(*xmlState, setViewAttributes);
		mpLatestStateLoaded = xmlState;
	}
}
示例#4
0
void MLPluginProcessor::returnToLatestStateLoaded()
{
	if(mpLatestStateLoaded)
	{
        bool setViewAttributes = false;
		setStateFromXML(*mpLatestStateLoaded, setViewAttributes);
	}
	else
	{
		debug() << "MLPluginProcessor::returnToLatestStateLoaded: no saved state!\n";
	}
}
示例#5
0
void MLPluginProcessor::loadStateFromFile(const File& f)
{
	if (f.exists())
	{
		String extension = f.getFileExtension();
		if (extension == ".mlpreset")
		{
			// load cross-platform mlpreset file.
			ScopedPointer<XmlDocument> stateToLoad (new XmlDocument(f));
			if (stateToLoad != NULL)
			{
				XmlElementPtr pDocElem (stateToLoad->getDocumentElement(true));
				setStateFromXML(*pDocElem, false);
				mpLatestStateLoaded = pDocElem;
			}
		}        
		else if (extension == ".aupreset")
		{
			// tell AU wrapper to load AU-compatible .aupreset file.
			sendMessageToMLListener (MLAudioProcessorListener::kLoad, f);
		}
	}	
}
示例#6
0
void MLPluginProcessor::setPatchStateFromText (const String& stateStr)
{
	const String& trimmedState = stateStr.trimStart();
	if(trimmedState[0] == '{')
	{
		// assume JSON
		cJSON* root = cJSON_Parse(trimmedState.toUTF8());
		if(root)
		{
			mpPatchState->setStateFromJSON(root);
			cJSON_Delete(root);
		}
		else
		{
			debug() << "MLPluginProcessor::setPatchStateFromText: couldn't create JSON object!\n";
		}
	}
	else if (trimmedState[0] == '<')
	{
		// assume XML
		ScopedPointer<XmlDocument> stateToLoad (new XmlDocument(trimmedState));
		if (stateToLoad != NULL)
		{
			XmlElementPtr pDocElem (stateToLoad->getDocumentElement(true));
			setStateFromXML(*pDocElem, false);
		}
		else
		{
			debug() << "MLPluginProcessor::setPatchStateFromText: couldn't create XML object!\n";
		}
	}
	else
	{
		debug() << "MLPluginProcessor::setPatchStateFromText: unknown format for .mlpreset file!\n";
	}
	updateChangedProperties();
}
示例#7
0
// set Processor and Environment states from XML or JSON in binary.
// state is in JSON format. XML can be read for backwards compatibility..
//
void MLPluginProcessor::setPatchAndEnvStatesFromBinary (const void* data, int sizeInBytes)
{
	// first try getting XML from binary- this will fail if blob is not in XML format
	XmlElementPtr xmlState(getXmlFromBinary (data, sizeInBytes));
	if (xmlState)
	{
		bool setViewAttributes = true;
		setStateFromXML(*xmlState, setViewAttributes);
	}
	else
	{
		// TODO uncompress here
		std::string stateStr (static_cast<const char *>(data), sizeInBytes);
		
		// trim starting whitespace
		const char * pStart = stateStr.data();
		const char * pTrimmedStart = pStart;
		while(isspace(*pTrimmedStart) && (pTrimmedStart - pStart < sizeInBytes))
		{
			pTrimmedStart++;
		}
		
		// assume JSON
		bool OK = true;
		cJSON* root = cJSON_Parse(pTrimmedStart);
		if(root)
		{
			cJSON* patchState = cJSON_GetObjectItem(root, "patch");
			if(patchState)
			{
				mpPatchState->setStateFromJSON(patchState);
			}
			else
			{
				OK = false;
			}
			
			cJSON* environmentState = cJSON_GetObjectItem(root, "environment");
			if(environmentState)
			{
				mpEnvironmentState->setStateFromJSON(environmentState);
			}
			else
			{
				OK = false;
			}
			
			cJSON_Delete(root);
		}
		
		if(!OK)
		{
			// TODO notify user in release
			debug() << "MLPluginProcessor::setPatchAndEnvStatesFromBinary: couldn't load JSON!\n";
		}
	}
	
	// push state for access by "Revert To saved"
	mpPatchState->clearStateStack();
	mpPatchState->pushStateToStack();
}