git-svn-id: svn://192.168.0.12/source@202 8346c931-da38-4b9b-9d4c-e48b93cbd075

This commit is contained in:
admin
2015-09-30 01:18:55 +00:00
parent 345cb977b0
commit bbafe240f3
20 changed files with 2175 additions and 682 deletions

View File

@@ -83,6 +83,12 @@ YAlgorithm* YAFactory::getYAlgorithm(QMap<QString, QString> mapParam)
m_mapAlgorithm.insert("platform", new YPlatformAlgorithm());
Algorithm = m_mapAlgorithm.value("platform");
}
else if(mapParam.value("Algorithm").compare("twodeptha", Qt::CaseInsensitive) == 0)
{
if(!m_mapAlgorithm.contains("twodeptha"))
m_mapAlgorithm.insert("twodeptha", new YTwoDepthAAlgorithm());
Algorithm = m_mapAlgorithm.value("twodeptha");
}
else
{
Algorithm = NULL;
@@ -512,8 +518,130 @@ void YPlatformAlgorithm::Start()
}
delete ymfilter;
}
void YTwoDepthAAlgorithm::Start()
{
if(m_mapParam.isEmpty())
return;
bool okThread = false;
int nThread = m_mapParam.value("Thread").trimmed().toInt(&okThread);
if(!okThread)
setThreadNumber(1);
else
setThreadNumber(nThread);
QMap<QString, QString>mapParam = m_mapParam;
mapParam["Algorithm"] = "onedepth";
m_pYMThread = new YMorphereThread*[getThreadNumber()];
for(int i = 0; i < getThreadNumber(); i++)
{
m_pYMThread[i] = ThreadFactory::getThread(mapParam);
m_pYMThread[i]->setDataAlgorithmInterface(m_pDAInterface);
m_pYMThread[i]->setMutex(&mutex);
m_pYMThread[i]->setParam(mapParam);
}
for(int i = 0;i < getThreadNumber(); i++)
{
m_pYMThread[i]->start();
}
for(int i = 0;i < getThreadNumber(); i++)
{
m_pYMThread[i]->wait();
}
m_mapThreadResult = new QMap<QString, int>*[getThreadNumber()];
for(int i = 0; i < getThreadNumber(); i++)
{
m_mapThreadResult[i] = new QMap<QString, int>();
}
for(int i = 0; i < getThreadNumber(); i++)
{
*m_mapThreadResult[i] = m_pYMThread[i]->getResult();
m_pYMThread[i]->clearResult();
}
for(int i = 0;i < getThreadNumber(); i++)
{
delete m_pYMThread[i];
}
delete[] m_pYMThread;
EmergeThreadResult();
YMFilter* ymfilter = YMFilterFactory::getFilter(mapParam);
//qDebug() << "EXEC";
if(ymfilter != NULL)
{
ymfilter->setParam(m_mapParam);
m_mapTotalResult = ymfilter->Exec(m_mapTotalResult);
}
delete ymfilter;
QList<QString> listKeys = m_mapTotalResult.keys();
QString strKeys;
for(int i = 0; i < listKeys.count(); i++)
{
strKeys += (listKeys.at(i).trimmed() + " ");
}
strKeys = strKeys.trimmed();
m_mapTotalResult.clear();
m_mapParam.insert("OneDepthKeys", strKeys);
m_pDAInterface->reset();
m_pYMThread = new YMorphereThread*[getThreadNumber()];
for(int i = 0; i < getThreadNumber(); i++)
{
m_pYMThread[i] = ThreadFactory::getThread(m_mapParam);
m_pYMThread[i]->setDataAlgorithmInterface(m_pDAInterface);
m_pYMThread[i]->setMutex(&mutex);
m_pYMThread[i]->setParam(m_mapParam);
}
for(int i = 0;i < getThreadNumber(); i++)
{
m_pYMThread[i]->start();
}
for(int i = 0;i < getThreadNumber(); i++)
{
m_pYMThread[i]->wait();
}
m_mapThreadResult = new QMap<QString, int>*[getThreadNumber()];
for(int i = 0; i < getThreadNumber(); i++)
{
m_mapThreadResult[i] = new QMap<QString, int>();
}
for(int i = 0; i < getThreadNumber(); i++)
{
*m_mapThreadResult[i] = m_pYMThread[i]->getResult();
m_pYMThread[i]->clearResult();
}
for(int i = 0;i < getThreadNumber(); i++)
{
delete m_pYMThread[i];
}
delete[] m_pYMThread;
EmergeThreadResult();
ymfilter = YMFilterFactory::getFilter(m_mapParam);
//qDebug() << "EXEC";
if(ymfilter != NULL)
{
ymfilter->setParam(m_mapParam);
m_mapTotalResult = ymfilter->Exec(m_mapTotalResult);
}
delete ymfilter;
}