d3view 수정
git-svn-id: svn://192.168.0.12/source@177 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -77,6 +77,12 @@ YAlgorithm* YAFactory::getYAlgorithm(QMap<QString, QString> mapParam)
|
||||
m_mapAlgorithm.insert("basic", new YAlgorithm());
|
||||
Algorithm = m_mapAlgorithm.value("basic");
|
||||
}
|
||||
else if(mapParam.value("Algorithm").compare("platform", Qt::CaseInsensitive) == 0)
|
||||
{
|
||||
if(!m_mapAlgorithm.contains("platform"))
|
||||
m_mapAlgorithm.insert("platform", new YPlatformAlgorithm());
|
||||
Algorithm = m_mapAlgorithm.value("platform");
|
||||
}
|
||||
else
|
||||
{
|
||||
Algorithm = NULL;
|
||||
@@ -379,3 +385,135 @@ void YTwoDepthAlgorithm::Start()
|
||||
}
|
||||
|
||||
|
||||
void YPlatformAlgorithm::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"] = "platformone";
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
qDebug() << "totalresult: " << m_mapTotalResult.size();
|
||||
ymfilter->setParam(m_mapParam);
|
||||
m_mapTotalResult = ymfilter->Exec(m_mapTotalResult);
|
||||
}
|
||||
delete ymfilter;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user