std::string VertexProgramDecompiler::BuildCode() { std::string main_body; for (uint i = 0, lvl = 1; i < m_instr_count; i++) { lvl -= m_instructions[i].close_scopes; if (lvl < 1) lvl = 1; //assert(lvl >= 1); for (int j = 0; j < m_instructions[i].put_close_scopes; ++j) { --lvl; if (lvl < 1) lvl = 1; main_body.append(lvl, '\t') += "}\n"; } for (int j = 0; j < m_instructions[i].do_count; ++j) { main_body.append(lvl, '\t') += "do\n"; main_body.append(lvl, '\t') += "{\n"; lvl++; } for (uint j = 0; j < m_instructions[i].body.size(); ++j) { main_body.append(lvl, '\t') += m_instructions[i].body[j] + "\n"; } lvl += m_instructions[i].open_scopes; } std::stringstream OS; insertHeader(OS); insertInputs(OS, m_parr.params[PF_PARAM_IN]); OS << std::endl; insertOutputs(OS, m_parr.params[PF_PARAM_NONE]); OS << std::endl; insertConstants(OS, m_parr.params[PF_PARAM_UNIFORM]); OS << std::endl; insertMainStart(OS); OS << main_body.c_str() << std::endl; insertMainEnd(OS); return OS.str(); }
void AudioPortConfig::trackSelectionChanged() { routeList->clear(); newSrcList->clear(); newDstList->clear(); QListWidgetItem* titem = tracksList->currentItem(); AudioTrack* atrack = (AudioTrack*)song->findTrack(titem->text()); if(atrack) { _selected = atrack; selectedIndex = tracksList->row(titem); //TrackList* tl = song->tracks(); //for(iTrack t = tl->begin(); t != tl->end(); ++t) //{ // if((*t)->isMidiTrack()) // continue; // AudioTrack* track = (AudioTrack*) (*t); // if(track->name() == atrack->name()) // continue; //You cant connect a track to itself //int channels = track->channels(); switch (atrack->type()) { case Track::WAVE_OUTPUT_HELPER:/*{{{*/ for(iTrack t = song->tracks()->begin(); t != song->tracks()->end(); ++t) { if((*t)->isMidiTrack()) continue; AudioTrack* track = (AudioTrack*) (*t); if(track->name() == atrack->name() || track->type() == Track::WAVE_OUTPUT_HELPER) continue; //You cant connect a track to itself //for (int channel = 0; channel < track->channels(); ++channel) //{ Route r(track, -1); newSrcList->addItem(r.name()); //} } insertInputs(); //newDstList->addItem(Route(track, -1).name()); break; case Track::WAVE_INPUT_HELPER: for(iTrack t = song->tracks()->begin(); t != song->tracks()->end(); ++t) { if((*t)->isMidiTrack()) continue; AudioTrack* track = (AudioTrack*) (*t); if(track->name() == atrack->name()) continue; //You cant connect a track to itself switch(track->type()) { case Track::WAVE_OUTPUT_HELPER: case Track::WAVE: newDstList->addItem(Route(track, -1).name()); break; default: break; } } insertOutputs(); break; case Track::WAVE: for(iTrack t = song->tracks()->begin(); t != song->tracks()->end(); ++t) { if((*t)->isMidiTrack()) continue; AudioTrack* track = (AudioTrack*) (*t); if(track->name() == atrack->name()) continue; //You cant connect a track to itself if(track->type() == Track::WAVE_INPUT_HELPER) { newSrcList->addItem(Route(track, -1).name()); } else if(track->type() == Track::WAVE_OUTPUT_HELPER) { newDstList->addItem(Route(track, -1).name()); } } break; default: break;/*}}}*/ } //} QTreeWidgetItem* widgetItem; const RouteList* rl = atrack->outRoutes(); for (ciRoute r = rl->begin(); r != rl->end(); ++r) { QString src(""); if (atrack->type() == Track::WAVE_OUTPUT_HELPER) { widgetItem = new QTreeWidgetItem(routeList, QStringList() << src << QString("") << atrack->name() << r->name() << QString::number(r->channel), Track::WAVE_OUTPUT_HELPER); } else { widgetItem = new QTreeWidgetItem(routeList, QStringList() << src << QString("") << atrack->name() << r->name() << QString::number(0), Track::WAVE_OUTPUT_HELPER); } widgetItem->setTextAlignment(1, Qt::AlignHCenter); widgetItem->setTextAlignment(4, Qt::AlignHCenter); } const RouteList* rli = atrack->inRoutes(); for (ciRoute ri = rli->begin(); ri != rli->end(); ++ri) { QString src(""); if (atrack->type() == Track::WAVE_INPUT_HELPER) { widgetItem = new QTreeWidgetItem(routeList, QStringList() << ri->name() << QString::number(ri->channel) << atrack->name() << src << QString(""), Track::WAVE_INPUT_HELPER); } else { widgetItem = new QTreeWidgetItem(routeList, QStringList() << ri->name() << QString::number(0) << atrack->name() << src << QString(""), Track::WAVE_INPUT_HELPER); } widgetItem->setTextAlignment(1, Qt::AlignHCenter); widgetItem->setTextAlignment(4, Qt::AlignHCenter); } routeSelectionChanged(); // init remove button srcSelectionChanged(); // init select button } }