1 Star 0 Fork 0

Open3DV/lumos-firmware

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
xml_function.cpp 117.21 KB
一键复制 编辑 原始数据 按行查看 历史
zhangguanjin 提交于 2024-03-20 06:54 . remove device_config
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914
#include "xml_function.h"
SystemConfigXmlStruct SystemConfigXmlStruct::instance_;
SystemConfigXmlStruct::SystemConfigXmlStruct()
{
TiXmlDocument xml;
XmlParser xml_function;
xml_function.generateXml(xml);
instance_.xml_data_ = xml;
}
XmlParser::XmlParser()
{
}
XmlParser::~XmlParser()
{
}
int XmlParser::add_enum_feature_with_selected(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value,
std::vector<std::string> value_list, std::vector<std::string> display_list, std::vector<std::string>tip_list, std::vector<std::string>description_list,
std::vector<std::string> selected_list)
{
if (tip_list.size() != description_list.size())
{
return -1;
}
TiXmlElement* feature = new TiXmlElement("Enumeration");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
for (int i = 0; i < value_list.size(); i++)
{
TiXmlElement* element = new TiXmlElement("EnumEntry");
tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(tip_list[i].c_str());
tool->LinkEndChild(text);
element->LinkEndChild(tool);
description = new TiXmlElement("Description");
text = new TiXmlText(description_list[i].c_str());
description->LinkEndChild(text);
element->LinkEndChild(description);
display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_list[i].c_str());
display->LinkEndChild(text);
element->LinkEndChild(display);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(std::to_string(i).c_str());
value_e->LinkEndChild(text);
element->LinkEndChild(value_e);
feature->LinkEndChild(element);
}
for (int s_i = 0; s_i < selected_list.size(); s_i++)
{
TiXmlElement* element = new TiXmlElement("pSelected");
TiXmlText* text = new TiXmlText(selected_list[s_i].c_str());
element->LinkEndChild(text);
feature->LinkEndChild(element);
}
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_enum_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value,
std::vector<std::string> value_list, std::vector<std::string> display_list, std::vector<std::string>tip_list, std::vector<std::string>description_list)
{
if (tip_list.size() != description_list.size())
{
return -1;
}
TiXmlElement* feature = new TiXmlElement("Enumeration");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
for (int i = 0; i < value_list.size(); i++)
{
TiXmlElement* element = new TiXmlElement("EnumEntry");
tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(tip_list[i].c_str());
tool->LinkEndChild(text);
element->LinkEndChild(tool);
description = new TiXmlElement("Description");
text = new TiXmlText(description_list[i].c_str());
description->LinkEndChild(text);
element->LinkEndChild(description);
display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_list[i].c_str());
display->LinkEndChild(text);
element->LinkEndChild(display);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(std::to_string(i).c_str());
value_e->LinkEndChild(text);
element->LinkEndChild(value_e);
feature->LinkEndChild(element);
}
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_command_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::string command_value)
{
TiXmlElement* feature = new TiXmlElement("Command");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
TiXmlElement* value_ce = new TiXmlElement("CommandValue");
text = new TiXmlText(command_value.c_str());
value_ce->LinkEndChild(text);
feature->LinkEndChild(value_ce);
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_int_reg_feature(TiXmlElement *root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::vector<int> value_list, std::string max, std::string min, std::string unit)
{
TiXmlElement* feature = new TiXmlElement("IntReg");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* address = new TiXmlElement("Address");
text = new TiXmlText("0x00");
address->LinkEndChild(text);
feature->LinkEndChild(address);
TiXmlElement* length = new TiXmlElement("Length");
text = new TiXmlText(std::to_string(value_list.size()).c_str());
length->LinkEndChild(text);
feature->LinkEndChild(length);
std::string vale_str = "";
for(int i= 0;i< value_list.size();i++)
{
vale_str += std::to_string(value_list[i]);
if(i != value_list.size()-1)
{
vale_str += ",";
}
}
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(vale_str.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
TiXmlElement* value_max = new TiXmlElement("Max");
text = new TiXmlText(max.c_str());
value_max->LinkEndChild(text);
feature->LinkEndChild(value_max);
TiXmlElement* value_min = new TiXmlElement("Min");
text = new TiXmlText(min.c_str());
value_min->LinkEndChild(text);
feature->LinkEndChild(value_min);
if (!unit.empty())
{
TiXmlElement* value_unit = new TiXmlElement("Unit");
text = new TiXmlText(unit.c_str());
value_unit->LinkEndChild(text);
feature->LinkEndChild(value_unit);
}
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_int_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::string max, std::string min, std::string unit)
{
TiXmlElement* feature = new TiXmlElement("Integer");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
TiXmlElement* value_max = new TiXmlElement("Max");
text = new TiXmlText(max.c_str());
value_max->LinkEndChild(text);
feature->LinkEndChild(value_max);
TiXmlElement* value_min = new TiXmlElement("Min");
text = new TiXmlText(min.c_str());
value_min->LinkEndChild(text);
feature->LinkEndChild(value_min);
if (!unit.empty())
{
TiXmlElement* value_unit = new TiXmlElement("Unit");
text = new TiXmlText(unit.c_str());
value_unit->LinkEndChild(text);
feature->LinkEndChild(value_unit);
}
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_int_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::string unit)
{
TiXmlElement* feature = new TiXmlElement("Integer");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
if (!unit.empty())
{
TiXmlElement* value_unit = new TiXmlElement("Unit");
text = new TiXmlText(unit.c_str());
value_unit->LinkEndChild(text);
feature->LinkEndChild(value_unit);
}
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_bool_feature_width_selected(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::vector<std::string> selected_list)
{
TiXmlElement* feature = new TiXmlElement("Boolean");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
for (int s_i = 0; s_i < selected_list.size(); s_i++)
{
TiXmlElement* element = new TiXmlElement("pSelected");
TiXmlText* text = new TiXmlText(selected_list[s_i].c_str());
element->LinkEndChild(text);
feature->LinkEndChild(element);
}
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_string_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value)
{
TiXmlElement* feature = new TiXmlElement("String");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_float_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::string max, std::string min, std::string unit)
{
TiXmlElement* feature = new TiXmlElement("Float");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
TiXmlElement* value_max = new TiXmlElement("Max");
text = new TiXmlText(max.c_str());
value_max->LinkEndChild(text);
feature->LinkEndChild(value_max);
TiXmlElement* value_min = new TiXmlElement("Min");
text = new TiXmlText(min.c_str());
value_min->LinkEndChild(text);
feature->LinkEndChild(value_min);
if (!unit.empty())
{
TiXmlElement* value_unit = new TiXmlElement("Unit");
text = new TiXmlText(unit.c_str());
value_unit->LinkEndChild(text);
feature->LinkEndChild(value_unit);
}
root->LinkEndChild(feature);
return 0;
}
int XmlParser::add_float_feature(TiXmlElement* root, std::string name, std::string display_name, std::string space, std::string toolTip,
std::string descrioption, std::string access, std::string value, std::string unit)
{
TiXmlElement* feature = new TiXmlElement("Float");
feature->SetAttribute("Name", name.c_str());
feature->SetAttribute("NameSpace", space.c_str());
//{
TiXmlElement* tool = new TiXmlElement("ToolTip");
TiXmlText* text = new TiXmlText(toolTip.c_str());
tool->LinkEndChild(text);
feature->LinkEndChild(tool);
TiXmlElement* description = new TiXmlElement("Description");
text = new TiXmlText(descrioption.c_str());
description->LinkEndChild(text);
feature->LinkEndChild(description);
TiXmlElement* display = new TiXmlElement("DisplayName");
text = new TiXmlText(display_name.c_str());
display->LinkEndChild(text);
feature->LinkEndChild(display);
TiXmlElement* visibility = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
visibility->LinkEndChild(text);
feature->LinkEndChild(visibility);
TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText(access.c_str());
imposed->LinkEndChild(text);
feature->LinkEndChild(imposed);
TiXmlElement* value_e = new TiXmlElement("Value");
text = new TiXmlText(value.c_str());
value_e->LinkEndChild(text);
feature->LinkEndChild(value_e);
if (!unit.empty())
{
TiXmlElement* value_unit = new TiXmlElement("Unit");
text = new TiXmlText(unit.c_str());
value_unit->LinkEndChild(text);
feature->LinkEndChild(value_unit);
}
root->LinkEndChild(feature);
return 0;
}
void XmlParser::add_sub_category(TiXmlElement*& root)
{
TiXmlElement* sub_root_group = new TiXmlElement("Group");
sub_root_group->SetAttribute("Comment", "SubCategories");
/*TiXmlElement* device_control_category = new TiXmlElement("Category");
device_control_category->SetAttribute("Name", "DeviceControl");
device_control_category->SetAttribute("NameSpace", "Standard");
TiXmlElement* feature = new TiXmlElement("DisplayName");
TiXmlText* text = new TiXmlText("Device Control");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DeviceType");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DeviceScanType");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DeviceVendorName");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DeviceModelName");
feature->LinkEndChild(text);
device_control_category->LinkEndChild(feature);
*/
TiXmlElement* image_format_control_category = new TiXmlElement("Category");
image_format_control_category->SetAttribute("Name", "ImageFormatControl");
image_format_control_category->SetAttribute("NameSpace", "Custom");
TiXmlElement* feature = new TiXmlElement("DisplayName");
TiXmlText* text = new TiXmlText("Image Format Control");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("SensorWidth");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("SensorHeight");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("SensorName");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImageSelector");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImagePixelSize");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImageTransmission");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PatternsSelector");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PatternsNumber");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PatternsPixelSize");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PatternsMaxPixelValue");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PatternsExposureModel");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ReconstructBaseCache");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("OffsetX3D");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("OffsetY3D");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("Width3D");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("Height3D");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("PixelFormat");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("PixelFormatInfoSelector");
// feature->LinkEndChild(text);
// image_format_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(image_format_control_category);
/*************************************************************************************************/
TiXmlElement* acquisition_control_category = new TiXmlElement("Category");
acquisition_control_category->SetAttribute("Name", "AcquisitionControl");
acquisition_control_category->SetAttribute("NameSpace", "Standard");
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Acquisition Control");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Acquisition Control");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Acquisition Control");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("TriggerMode");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("TriggerSource");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("TriggerSoftware");
feature->LinkEndChild(text);
acquisition_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(acquisition_control_category);
/*************************************************************************************************/
TiXmlElement* analog_control_category = new TiXmlElement("Category");
analog_control_category->SetAttribute("Name", "AnalogControl");
analog_control_category->SetAttribute("NameSpace", "Standard");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Analog Control");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Analog Control");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Analog Control");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Gain");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Gamma");
feature->LinkEndChild(text);
analog_control_category->LinkEndChild(feature);
/*************************************************************************************************/
//sub_root_group->LinkEndChild(device_control_category);
//sub_root_group->LinkEndChild(image_format_control_category);
//sub_root_group->LinkEndChild(acquisition_control_category);
//sub_root_group->LinkEndChild(analog_control_category);
TiXmlElement* custom_sub_categories = new TiXmlElement("Group");
custom_sub_categories->SetAttribute("Comment", "DexSubCategories");
//TiXmlElement* engine_control_category = new TiXmlElement("Category");
//engine_control_category->SetAttribute("Name", "EngineControl");
//engine_control_category->SetAttribute("NameSpace", "Custom");
//feature = new TiXmlElement("DisplayName");
//text = new TiXmlText("Engine Control");
//feature->LinkEndChild(text);
//engine_control_category->LinkEndChild(feature);
//feature = new TiXmlElement("Visibility");
//text = new TiXmlText("Beginner");
//feature->LinkEndChild(text);
//engine_control_category->LinkEndChild(feature);
//feature = new TiXmlElement("ImposedAccessMode");
//text = new TiXmlText("RO");
//feature->LinkEndChild(text);
//engine_control_category->LinkEndChild(feature);
//feature = new TiXmlElement("pFeature");
//text = new TiXmlText("EngineControl");
//feature->LinkEndChild(text);
//engine_control_category->LinkEndChild(feature);
//
//sub_root_group->LinkEndChild(engine_control_category);
/*************************************************************************************************/
TiXmlElement* exposure3d_control_category = new TiXmlElement("Category");
exposure3d_control_category->SetAttribute("Name", "HdrControl");
exposure3d_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Hdr Control");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Hdr Control");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Hdr Control");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrNumber");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("HdrGroupSelector");
// feature->LinkEndChild(text);
// exposure3d_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("HdrExposureTime");
// feature->LinkEndChild(text);
// exposure3d_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("HdrLedCurrent");
// feature->LinkEndChild(text);
// exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry0");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry1");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry2");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry3");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry4");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposureEntry5");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry0");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry1");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry2");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry3");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry4");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrLedEntry5");
feature->LinkEndChild(text);
exposure3d_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(exposure3d_control_category);
/*************************************************************************************************/
TiXmlElement* basic_3d_control_category = new TiXmlElement("Category");
basic_3d_control_category->SetAttribute("Name", "Basic3DControl");
basic_3d_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Basic 3D Control");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Basic 3D Control");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Basic 3D Control");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("EngineModel");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ExposureModel");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ExposureTime3D");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Gain3D");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Led");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("RepeatedNumber");
feature->LinkEndChild(text);
basic_3d_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(basic_3d_control_category);
/*************************************************************************************************/
TiXmlElement* correction_control_category = new TiXmlElement("Category");
correction_control_category->SetAttribute("Name", "CorrectionControl");
correction_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Correction Control");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Correction Control");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Correction Control");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Smooth");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("SmoothLevel");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PhaseCorrect");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("PhaseCorrectLevel");
feature->LinkEndChild(text);
correction_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("ThermalDriftCorrection");
// feature->LinkEndChild(text);
// correction_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(correction_control_category);
/*************************************************************************************************/
TiXmlElement* exposure_control_category = new TiXmlElement("Category");
exposure_control_category->SetAttribute("Name", "Image2DControl");
exposure_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Image 2D Control");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Image 2D Control");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Image 2D Control");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("IlluminatedModel");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ExposureModel2D");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Gain2D");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ExposureTime2D");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrNumber2D");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("HdrGroupSelector2D");
// feature->LinkEndChild(text);
// exposure_control_category->LinkEndChild(feature);
// feature = new TiXmlElement("pFeature");
// text = new TiXmlText("HdrExposureTime2D");
// feature->LinkEndChild(text);
// exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry0");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry1");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry2");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry3");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry4");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry5");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry6");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry7");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry8");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrExposure2DEntry9");
feature->LinkEndChild(text);
exposure_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(exposure_control_category);
/*************************************************************************************************/
TiXmlElement* filter_control_category = new TiXmlElement("Category");
filter_control_category->SetAttribute("Name", "FilterControl");
filter_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Filter Control");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Filter Control");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Filter Control");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ConfidenceFilter");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ConfidenceThreshold");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("RadiusFilter");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("RadiusFilterRadius");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("RadiusFilterNumber");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("RadiusFilterIteration");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DepthFilter");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DepthFilterThreshold");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("FisherFilter");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("FisherFilterThreshold");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("MonotonicityFilter");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("MonotonicityFilterThreshold");
feature->LinkEndChild(text);
filter_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(filter_control_category);
/*************************************************************************************************/
TiXmlElement* calib_control_category = new TiXmlElement("Category");
calib_control_category->SetAttribute("Name", "CalibParam");
calib_control_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("ToolTip");
text = new TiXmlText("Calib Param");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Description");
text = new TiXmlText("Calib Param");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Calib Param");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("ImposedAccessMode");
text = new TiXmlText("RO");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Intrinsic");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Extrinsic");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Distortion");
feature->LinkEndChild(text);
calib_control_category->LinkEndChild(feature);
sub_root_group->LinkEndChild(calib_control_category);
root->LinkEndChild(sub_root_group);
}
void XmlParser::add_root_category(TiXmlElement*& root)
{
TiXmlElement* root_group = new TiXmlElement("Group");
root_group->SetAttribute("Comment", "RootCategory");
TiXmlElement* root_category = new TiXmlElement("Category");
root_category->SetAttribute("Name", "Root");
root_category->SetAttribute("NameSpace", "Standard");
//{
TiXmlElement* feature = new TiXmlElement("DisplayName");
TiXmlText* text = new TiXmlText("Root");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
//feature = new TiXmlElement("pFeature");
//text = new TiXmlText("DeviceControl");
//feature->LinkEndChild(text);
//root_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("AnalogControl");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("AcquisitionControl");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("DigitalIOControl");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Scan3dControl");
feature->LinkEndChild(text);
root_category->LinkEndChild(feature);
//}
root_group->LinkEndChild(root_category);
TiXmlElement* dex_category = new TiXmlElement("Category");
dex_category->SetAttribute("Name", "Root");
dex_category->SetAttribute("NameSpace", "Custom");
feature = new TiXmlElement("DisplayName");
text = new TiXmlText("Custom");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("Visibility");
text = new TiXmlText("Beginner");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Basic3DControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
//feature = new TiXmlElement("pFeature");
//text = new TiXmlText("EngineControl");
//feature->LinkEndChild(text);
//dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImageFormatControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("HdrControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("Image2DControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("CorrectionControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("FilterControl");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("CalibParam");
feature->LinkEndChild(text);
dex_category->LinkEndChild(feature);
root_group->LinkEndChild(dex_category);
root->LinkEndChild(root_group);
}
void XmlParser::add_xml_head(TiXmlElement*& root)
{
TiXmlElement* root_e = new TiXmlElement("RegisterDescription");
root_e->SetAttribute("xmlns", "http://www.genicam.org/GenApi/Version_1_1");
root_e->SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
root_e->SetAttribute("xsi:schemaLocation", "http://www.genicam.org/GenApi/Version_1_1 http://www.genicam.org/GenApi/GenApiSchema_Version_1_1.xsd");
root_e->SetAttribute("ModelName", "XEMA");
root_e->SetAttribute("VendorName", "Dexforce");
root_e->SetAttribute("ToolTip", "Reference SFNC camera XML (autogenerated)");
root_e->SetAttribute("StandardNameSpace", "None");
root_e->SetAttribute("SchemaMajorVersion", "1");
root_e->SetAttribute("SchemaMinorVersion", "1");
root_e->SetAttribute("SchemaSubMinorVersion", "0");
root_e->SetAttribute("MajorVersion", "2");
root_e->SetAttribute("MinorVersion", "0");
root_e->SetAttribute("SubMinorVersion", "0");
root_e->SetAttribute("ProductGuid", "11111111-2222-3333-4444-555555555555");
root_e->SetAttribute("VersionGuid", "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE");
root = root_e;
}
void XmlParser::add_device_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "DeviceControl");
}
void XmlParser::add_correction_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "CorrectionControl");
std::vector<std::string> select_feature;
select_feature.clear();
select_feature.push_back("SmoothLevel");
add_bool_feature_width_selected(group, "Smooth", "Smooth", "Custom", "", "", "RW", "1", select_feature);
add_int_feature(group, "SmoothLevel", "Level", "Custom", "", "", "RW", "1.0", "5", "1");
select_feature.clear();
select_feature.push_back("PhaseCorrectLevel");
add_bool_feature_width_selected(group, "PhaseCorrect", "Phase Correct", "Custom", "", "", "RW", "0", select_feature);
add_int_feature(group, "PhaseCorrectLevel", "Phase Correct Level", "Custom", "", "", "RW", "40", "100", "0");
root->LinkEndChild(group);
}
void XmlParser::add_filter_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "FilterControl");
std::vector<std::string> select_feature;
select_feature.push_back("RadiusFilterRadius");
select_feature.push_back("RadiusFilterNumber");
select_feature.push_back("RadiusFilterIteration");
add_bool_feature_width_selected(group, "RadiusFilter", "Radius Filter", "Custom", "", "", "RW", "0", select_feature);
add_float_feature(group, "RadiusFilterRadius", "Radius", "Custom", "", "", "RW", "2.5", "100", "0");
add_int_feature(group, "RadiusFilterNumber", "Number", "Custom", "", "", "RW", "8", "100", "2");
add_int_feature(group, "RadiusFilterIteration", "Iteration", "Custom", "", "", "RW", "1", "10", "1");
select_feature.clear();
select_feature.push_back("DepthFilterThreshold");
add_bool_feature_width_selected(group, "DepthFilter", "Depth Filter", "Custom", "", "", "RW", "0", select_feature);
add_float_feature(group, "DepthFilterThreshold", "Threshold", "Custom", "", "", "RW", "33.0", "100" ,"0");
select_feature.clear();
select_feature.push_back("ConfidenceThreshold");
add_bool_feature_width_selected(group, "ConfidenceFilter", "Confidence Filter", "Custom", "", "", "RW", "0", select_feature);
add_float_feature(group, "ConfidenceThreshold", "Threshold", "Custom", "", "", "RW", "3.0", "100", "0");
select_feature.clear();
select_feature.push_back("FisherFilterThreshold");
add_bool_feature_width_selected(group, "FisherFilter", "Fisher Filter", "Custom", "", "", "RW", "0", select_feature);
add_float_feature(group, "FisherFilterThreshold", "Threshold", "Custom", "", "", "RW", "30.0", "100", "0");
select_feature.clear();
select_feature.push_back("MonotonicityFilterThreshold");
add_bool_feature_width_selected(group, "MonotonicityFilter", "Monotonicity Filter", "Custom", "", "", "RW", "0", select_feature);
add_float_feature(group, "MonotonicityFilterThreshold", "Threshold", "Custom", "", "", "RW", "30.0", "100", "0");
root->LinkEndChild(group);
}
void XmlParser::add_calib_param_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "CalibParam");
add_string_feature(group, "Intrinsic", "Intrinsic", "Custom", "", "", "RW", "1,0,0,0,1,0,0,0,1");
add_string_feature(group, "Extrinsic", "Extrinsic", "Custom", "", "", "RW", "1,0,0,0,0,1,0,0,0,0,0,1");
add_string_feature(group, "Distortion", "Distortion", "Custom", "", "", "RW", "0,0,0,0,0");
root->LinkEndChild(group);
}
void XmlParser::add_image_2d_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "Image2DControl");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
value_list.push_back("Default");
display_list.push_back("Default");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("Illuminated");
display_list.push_back("Illuminated");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("NotIlluminated");
display_list.push_back("NotIlluminated");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "IlluminatedModel", "Illuminated Model", "Custom", "", "", "RW","0",
value_list, display_list, tips_list, description_list);
value_list.clear();
tips_list.clear();
description_list.clear();
display_list.clear();
value_list.push_back("SingleExposure2D");
display_list.push_back("Single Exposure");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("HdrExposure2D");
display_list.push_back("Hdr Exposure");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "ExposureModel2D", "Exposure Model", "Custom", "", "", "RW", "0",
value_list, display_list, tips_list, description_list);
value_list.clear();
tips_list.clear();
description_list.clear();
display_list.clear();
// for (int i = 0; i < 10; i++)
// {
// std::string str = "Group " + std::to_string(i);
// display_list.push_back(str);
// value_list.push_back(str);
// tips_list.push_back("");
// description_list.push_back("");
// }
// std::vector<std::string> select_list;
// select_list.push_back("HdrExposureTime2D");
// add_enum_feature_with_selected(group, "HdrGroupSelector2D", "Selector", "Custom", "", "", "RW", "0",
// value_list, display_list, tips_list, description_list, select_list);
value_list.clear();
tips_list.clear();
description_list.clear();
add_int_feature(group, "HdrNumber2D", "Number", "Custom", "", "", "RW", "2", "10" ,"2");
// add_int_feature(group, "HdrExposureTime2D", "Exposure List", "Custom", "", "", "RW", "12000", "1000000", "100", "us");
add_int_feature(group, "ExposureTime2D", "Exposure", "Custom", "", "", "RW", "12000","1000000", "100", "us");
add_float_feature(group, "Gain2D", "Gain", "Custom", "", "", "RW", "0", "24", "0", "db");
add_int_feature(group, "HdrExposure2DEntry0", "Exposure List 0", "Custom", "", "", "RW", "12000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry1", "Exposure List 1", "Custom", "", "", "RW", "36000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry2", "Exposure List 2", "Custom", "", "", "RW", "24000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry3", "Exposure List 3", "Custom", "", "", "RW", "48000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry4", "Exposure List 4", "Custom", "", "", "RW", "60000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry5", "Exposure List 5", "Custom", "", "", "RW", "100000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry6", "Exposure List 6", "Custom", "", "", "RW", "200000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry7", "Exposure List 7", "Custom", "", "", "RW", "400000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry8", "Exposure List 8", "Custom", "", "", "RW", "800000", "1000000", "100", "us");
add_int_feature(group, "HdrExposure2DEntry9", "Exposure List 9", "Custom", "", "", "RW", "1000000", "1000000", "100", "us");
root->LinkEndChild(group);
}
void XmlParser::add_hdr_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "HdrControl");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
// for (int i = 0; i < 6; i++)
// {
// std::string str = "Group " + std::to_string(i);
// value_list.push_back(str);
// display_list.push_back(str);
// tips_list.push_back("");
// description_list.push_back("");
// }
// std::vector<std::string> select_list;
// select_list.push_back("HdrExposureTime");
// select_list.push_back("HdrLedCurrent");
// add_enum_feature_with_selected(group, "HdrGroupSelector", "Selector", "Custom", "", "", "RW", "0",
// value_list, display_list, tips_list, description_list, select_list);
value_list.clear();
tips_list.clear();
description_list.clear();
add_int_feature(group, "HdrNumber", "Number", "Custom", "", "", "RW", "2", "6", "2");
// add_int_feature(group, "HdrExposureTime", "Exposure List", "Custom", "", "", "RW", "12000", "100000", "1700", "us");
// add_int_feature(group, "HdrLedCurrent", "Led List", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrExposureEntry0", "Exposure List 0", "Custom", "", "", "RW", "12000", "100000", "1700", "us");
add_int_feature(group, "HdrExposureEntry1", "Exposure List 1", "Custom", "", "", "RW", "24000", "100000", "1700", "us");
add_int_feature(group, "HdrExposureEntry2", "Exposure List 2", "Custom", "", "", "RW", "36000", "100000", "1700", "us");
add_int_feature(group, "HdrExposureEntry3", "Exposure List 3", "Custom", "", "", "RW", "48000", "100000", "1700", "us");
add_int_feature(group, "HdrExposureEntry4", "Exposure List 4", "Custom", "", "", "RW", "60000", "100000", "1700", "us");
add_int_feature(group, "HdrExposureEntry5", "Exposure List 5", "Custom", "", "", "RW", "100000", "100000", "1700", "us");
add_int_feature(group, "HdrLedEntry0", "Led List 0", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrLedEntry1", "Led List 1", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrLedEntry2", "Led List 2", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrLedEntry3", "Led List 3", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrLedEntry4", "Led List 4", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
add_int_feature(group, "HdrLedEntry5", "Led List 5", "Custom", "", "", "RW", "1023", "1023", "0", "Level");
// std::vector<int> exposure_list = { 12000, 20000, 30000, 40000, 50000, 60000 };
// std::vector<int> led_list = { 1023, 1023, 1023, 1023, 1023, 1023 };
// add_int_reg_feature(group, "HdrExposureTimeEntry", "Exposure Entry", "Custom", "", "", "RW",exposure_list, "100000", "1700", "us");
// add_int_reg_feature(group, "HdrLedCurrentEntry", "Led Entry", "Custom", "", "", "RW", led_list, "1023", "0", "Level");
root->LinkEndChild(group);
}
void XmlParser::add_basic_3d_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "Basic3DControl");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
value_list.push_back("NormalModel");
display_list.push_back("Normal Model");
tips_list.push_back("");
description_list.push_back("");
// value_list.push_back("ReflectModel");
// display_list.push_back("Reflect Model");
// tips_list.push_back("");
// description_list.push_back("");
// value_list.push_back("BlackModel");
// display_list.push_back("Black Model");
// tips_list.push_back("");
// description_list.push_back("");
add_enum_feature(group, "EngineModel", "Engine", "Custom", "", "", "RW", "0",
value_list, display_list, tips_list, description_list);
value_list.clear();
tips_list.clear();
description_list.clear();
display_list.clear();
value_list.push_back("SingleModel");
display_list.push_back("Single Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("HdrModel");
display_list.push_back("Hdr Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("RepeatedModel");
display_list.push_back("Repeated Model");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "ExposureModel", "Exposure Model", "Custom", "", "", "RW", "1",
value_list, display_list, tips_list, description_list);
add_float_feature(group, "Gain3D", "Gain", "Custom", "", "", "RW", "0", "24","0","db");
// add_float_feature(group, "Gamma3D", "Gamma", "Custom", "", "", "RW", "1.0", "4", "0");
add_int_feature(group, "ExposureTime3D", "Exposure", "Custom", "", "", "RW", "12000", "100000" ,"1700", "us");
add_int_feature(group, "Led", "Led", "Custom", "", "", "RW", "1023", "1023", "0", "level");
add_int_feature(group, "RepeatedNumber", "Repeated Number", "Custom", "", "", "RW", "2", "10", "2");
root->LinkEndChild(group);
}
void XmlParser::add_engine_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "EngineControl");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
value_list.push_back("NormalModel");
display_list.push_back("Normal Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("ReflectModel");
display_list.push_back("Reflect Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("BlackModel");
display_list.push_back("Black Model");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "EngineControl", "Engine Control", "Custom", "", "", "RW", "1",
value_list, display_list, tips_list, description_list);
root->LinkEndChild(group);
}
void XmlParser::add_image_format_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "ImageFormatControl");
add_int_feature(group, "SensorWidth", "Sensor Width", "Custom", "", "", "RO", "1920", "100000" ,"0");
add_int_feature(group, "SensorHeight", "Sensor Height", "Custom", "", "", "RO", "1200", "100000" ,"0");
add_string_feature(group,"SensorName","Sensor Name","Custom","","","RO","XEMA");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
value_list.push_back("Brightness");
display_list.push_back("Brightness");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("Depth");
display_list.push_back("Depth");
tips_list.push_back("");
description_list.push_back("");
std::vector<std::string> select_list;
select_list.push_back("ImagePixelSize");
select_list.push_back("ImageTransmission");
add_enum_feature_with_selected(group, "ImageSelector", "Image Selector", "Standard", "", "", "RW", "0",
value_list, display_list, tips_list, description_list,select_list);
value_list.clear();
display_list.clear();
tips_list.clear();
description_list.clear();
value_list.push_back("Bpp8");
display_list.push_back("Bpp8");
tips_list.push_back("8 bits per pixel.");
description_list.push_back("8 bits per pixel.");
value_list.push_back("Bpp16");
display_list.push_back("Bpp16");
tips_list.push_back("16 bits per pixel.");
description_list.push_back("16 bits per pixel.");
value_list.push_back("Bpp24");
display_list.push_back("Bpp24");
tips_list.push_back("24 bits per pixel.");
description_list.push_back("24 bits per pixel.");
value_list.push_back("Bpp32");
display_list.push_back("Bpp32");
tips_list.push_back("32 bits per pixel.");
description_list.push_back("32 bits per pixel.");
value_list.push_back("Bpp48");
display_list.push_back("Bpp48");
tips_list.push_back("48 bits per pixel.");
description_list.push_back("48 bits per pixel.");
value_list.push_back("Bpp96");
display_list.push_back("Bpp96");
tips_list.push_back("96 bits per pixel.");
description_list.push_back("96 bits per pixel.");
add_enum_feature(group, "ImagePixelSize", "Image Pixel Size", "Standard", "", "", "RO", "0",
value_list, display_list, tips_list, description_list);
std::vector<std::string> select_feature;
select_feature.clear();
add_bool_feature_width_selected(group, "ImageTransmission", "Image Transmission", "Custom", "", "", "RW", "1", select_feature);
value_list.clear();
display_list.clear();
tips_list.clear();
description_list.clear();
value_list.push_back("Raw02");
display_list.push_back("Raw02");
tips_list.push_back("Raw02.");
description_list.push_back("Raw02.");
value_list.push_back("Raw04");
display_list.push_back("Raw04");
tips_list.push_back("Raw04.");
description_list.push_back("Raw04.");
value_list.push_back("Raw06");
display_list.push_back("Raw06");
tips_list.push_back("Raw06.");
description_list.push_back("Raw06.");
select_list.clear();
select_list.push_back("PatternsNumber");
add_enum_feature_with_selected(group, "PatternsSelector", "Patterns Selector", "Standard", "", "", "RW", "2",
value_list, display_list, tips_list, description_list,select_list);
add_int_feature(group, "PatternsNumber", "Patterns Number", "Custom", "", "", "RO", "16", "999" ,"1");
value_list.clear();
display_list.clear();
tips_list.clear();
description_list.clear();
value_list.push_back("Bpp8");
display_list.push_back("Bpp8");
tips_list.push_back("8 bits per pixel.");
description_list.push_back("8 bits per pixel.");
value_list.push_back("Bpp16");
display_list.push_back("Bpp16");
tips_list.push_back("16 bits per pixel.");
description_list.push_back("16 bits per pixel.");
add_enum_feature(group, "PatternsPixelSize", "Patterns Pixel Size", "Standard", "", "", "RO", "0",
value_list, display_list, tips_list, description_list);
add_int_feature(group, "PatternsMaxPixelValue", "Patterns Max Pixel Value", "Custom", "", "", "RO", "255", "99999" ,"1");
value_list.clear();
tips_list.clear();
description_list.clear();
display_list.clear();
value_list.push_back("SingleModel");
display_list.push_back("Single Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("HdrModel");
display_list.push_back("Hdr Model");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("RepeatedModel");
display_list.push_back("Repeated Model");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "PatternsExposureModel", "Patterns Exposure Model", "Custom", "", "", "RW", "0",
value_list, display_list, tips_list, description_list);
add_command_feature(group, "ReconstructBaseCache", "Reconstruct Base Cache", "Standard", "", "", "RW", "0", "0");
/*
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImageSelector");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImagePixelSize");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
feature = new TiXmlElement("pFeature");
text = new TiXmlText("ImageTransmission");
feature->LinkEndChild(text);
image_format_control_category->LinkEndChild(feature);
*/
root->LinkEndChild(group);
}
void XmlParser::add_acquisition_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "AcquisitionControl");
std::vector<std::string> value_list;
std::vector<std::string> display_list;
std::vector<std::string> tips_list;
std::vector<std::string> description_list;
value_list.push_back("Off");
display_list.push_back("Off");
tips_list.push_back("");
description_list.push_back("");
value_list.push_back("On");
display_list.push_back("On");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "TriggerMode", "Trigger Mode", "Standard", "", "", "RW", "0",
value_list, display_list, tips_list, description_list);
value_list.clear();
display_list.clear();
tips_list.clear();
description_list.clear();
value_list.push_back("Software");
display_list.push_back("Software");
tips_list.push_back("");
description_list.push_back("");
add_enum_feature(group, "TriggerSource", "Trigger Source", "Standard", "", "", "RW", "0",
value_list, display_list, tips_list, description_list);
add_command_feature(group, "TriggerSoftware", "Generate Software Trigger", "Standard", "", "", "RW", "0", "0");
root->LinkEndChild(group);
}
void XmlParser::add_analog_control_category(TiXmlElement* root)
{
TiXmlElement* group = new TiXmlElement("Group");
group->SetAttribute("Comment", "AnalogControl");
add_float_feature(group, "Gain", "Gain", "Standard",
"Controls the selected gain as an absolute physical value.",
"Controls the selected gain as an absolute physical value. This is an amplification factor applied to the video signal.",
"RW", "0", "24", "0");
add_float_feature(group, "Gamma", "Gamma", "Standard",
"Controls the gamma correction of pixel intensity.",
"Controls the gamma correction of pixel intensity. This is typically used to compensate for non-linearity of the display system (such as CRT).",
"RW", "0", "4", "0");
root->LinkEndChild(group);
//TiXmlElement* gain_feature = new TiXmlElement("Float");
//gain_feature->SetAttribute("Name", "Root");
//gain_feature->SetAttribute("NameSpace", "Standard");
////{
//TiXmlElement* tool = new TiXmlElement("ToolTip");
//TiXmlText* text = new TiXmlText("Controls the selected gain as an absolute physical value.");
//tool->LinkEndChild(text);
//gain_feature->LinkEndChild(tool);
//TiXmlElement* description= new TiXmlElement("Description");
//text = new TiXmlText("Controls the selected gain as an absolute physical value. This is an amplification factor applied to the video signal.");
//description->LinkEndChild(text);
//gain_feature->LinkEndChild(description);
//TiXmlElement* display = new TiXmlElement("DisplayName");
//text = new TiXmlText("Gain");
//display->LinkEndChild(text);
//gain_feature->LinkEndChild(display);
//TiXmlElement* visibility = new TiXmlElement("Visibility");
//text = new TiXmlText("Beginner");
//visibility->LinkEndChild(text);
//gain_feature->LinkEndChild(visibility);
//TiXmlElement* imposed = new TiXmlElement("ImposedAccessMode");
//text = new TiXmlText("RW");
//imposed->LinkEndChild(text);
//gain_feature->LinkEndChild(imposed);
//TiXmlElement* value = new TiXmlElement("Value");
//text = new TiXmlText("0");
//value->LinkEndChild(text);
//gain_feature->LinkEndChild(value);
}
int XmlParser::generateXml(TiXmlDocument& xml)
{
TiXmlDocument doc;
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "UTF-8", "");
TiXmlElement* root;
add_xml_head(root);
add_root_category(root);
add_sub_category(root);
/*************************************************************************************************/
doc.LinkEndChild(decl);
doc.LinkEndChild(root);
/*************************************************************************************************/
add_acquisition_control_category(root);
add_image_format_control_category(root);
add_basic_3d_control_category(root);
add_hdr_control_category(root);
add_image_2d_control_category(root);
add_calib_param_category(root);
add_filter_control_category(root);
add_correction_control_category(root);
/***********************************************************************************************/
xml = doc;
return 0;
}
int XmlParser::generateXml(std::string path,TiXmlDocument& xml)
{
TiXmlDocument doc;
generateXml(doc);
doc.SaveFile(path.c_str());
xml = doc;
return 0;
}
int XmlParser::generateXml(std::string path)
{
TiXmlDocument doc;
generateXml(doc);
doc.SaveFile(path.c_str());
return 0;
}
//
//int XmlParser::generate_xml(std::string path)
//{
// TiXmlDocument doc;
// TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "UTF-8", "");
//
// TiXmlElement* root;
// add_xml_head(root);
//
// add_root_category(root);
// add_sub_category(root);
//
// /*************************************************************************************************/
//
//
// doc.LinkEndChild(decl);
// doc.LinkEndChild(root);
//
// /*************************************************************************************************/
// //add_analog_control_category(root);
// //add_acquisition_control_category(root);
//
// add_basic_3d_control_category(root);
// add_hdr_control_category(root);
// add_image_2d_control_category(root);
// add_calib_param_category(root);
// add_filter_control_category(root);
// add_correction_control_category(root);
//
// /***********************************************************************************************/
//
//
// doc.SaveFile(path.c_str());
//
// return 0;
//}
int XmlParser::getFeatureElement(TiXmlDocument xml_data, std::string name, std::string type, std::string& value)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
for (TiXmlElement* category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
//if (category_name == name)
//{
// for (TiXmlElement* item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
// {
// std::string elemName = item_elem->Value();
// if (type == elemName)
// {
// std::string text = item_elem->GetText();
// value = text;
// return 0;
// }
// }
//}
//else
//{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == name)
{
for (TiXmlElement* item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
std::string text = item_elem->GetText();
value = text;
return 0;
}
}
}
}
//}
}
}
/****************************************************************************************************************/
return -1;
}
int XmlParser::setFeatureValue(TiXmlDocument &xml_data, std::string name, std::string type, std::string value)
{
TiXmlElement *root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement *group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
// std::string attr = group_elem->Attribute("Comment"); // ��YourAttributeName�������������
// std::cout << "Value of " << elemName << " is: " << attr << std::endl;
for (TiXmlElement *category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
if (category_name == name)
{
for (TiXmlElement *item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
item_elem->Clear();
TiXmlText *text = new TiXmlText(value.c_str());
item_elem->LinkEndChild(text);
return 0;
}
}
}
else
{
for (TiXmlElement *feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == name)
{
for (TiXmlElement *item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
item_elem->Clear();
TiXmlText *text = new TiXmlText(value.c_str());
item_elem->LinkEndChild(text);
return 0;
}
}
}
}
}
}
}
/****************************************************************************************************************/
return -1;
}
int XmlParser::getFeature(TiXmlDocument xml_data, std::string name, std::string type, std::string& value)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
//std::string attr = group_elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
for (TiXmlElement* category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
if (category_name == name)
{
for (TiXmlElement* item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
std::string text = item_elem->GetText();
value = text;
return 0;
}
}
}
else
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == name)
{
for (TiXmlElement* item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
std::string text = item_elem->GetText();
value = text;
return 0;
}
}
}
}
}
}
}
/****************************************************************************************************************/
return -1;
}
int XmlParser::get_feature(TiXmlDocument xml_data, std::string name, std::string type, std::string& value)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
//std::string attr = group_elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
for (TiXmlElement* category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
if (category_name == name)
{
for (TiXmlElement* item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
std::string text = item_elem->GetText();
value = text;
return 0;
}
}
}
else
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == name)
{
for (TiXmlElement* item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
std::string text = item_elem->GetText();
value = text;
return 0;
}
}
}
}
}
}
}
/****************************************************************************************************************/
return -1;
}
int XmlParser::getFeatureEnumEntry(TiXmlDocument xml_data, std::string name, std::string type, std::string child_type, std::vector<std::string>& value_list)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
//std::string attr = group_elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
for (TiXmlElement* category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
if (category_name == name)
{
for (TiXmlElement* item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
//if (type == elemName)
//{
if ("EnumEntry" == elemName)
{
for (TiXmlElement* value_elem = item_elem->FirstChildElement(); value_elem != NULL; value_elem = value_elem->NextSiblingElement())
{
std::string value_name = value_elem->Value();
if (child_type == value_name)
{
std::string value = value_elem->GetText();
value_list.push_back(value);
}
}
}
//}
}
}
else
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == name)
{
for (TiXmlElement* item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if (type == elemName)
{
for (TiXmlElement* entry_elem = feature_elem->FirstChildElement(); entry_elem != NULL; entry_elem = entry_elem->NextSiblingElement())
{
std::string elemName = entry_elem->Value();
if ("EnumEntry" == elemName)
{
for (TiXmlElement* value_elem = entry_elem->FirstChildElement(); value_elem != NULL; value_elem = value_elem->NextSiblingElement())
{
std::string value_name = value_elem->Value();
if (child_type == value_name)
{
std::string value = value_elem->GetText();
value_list.push_back(value);
}
}
}
}
// if (!value_list.empty())
// {
// return 0;
// }
}
}
}
}
}
}
}
/****************************************************************************************************************/
if (!value_list.empty())
{
return 0;
}
return -1;
}
int XmlParser::getFeatureSelected(TiXmlDocument xml_data, std::string feature, std::vector<std::string>& value_list)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* group_elem = root->FirstChildElement(); group_elem != NULL; group_elem = group_elem->NextSiblingElement())
{
std::string elemName = group_elem->Value();
for (TiXmlElement* category_elem = group_elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string category_elemName = category_elem->Value();
std::string category_name = category_elem->Attribute("Name");
if (category_name == feature)
{
for (TiXmlElement* item_elem = category_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
if ("pSelected" == elemName)
{
std::string value = item_elem->GetText();
value_list.push_back(value);
}
}
}
else
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string feature_name = feature_elem->Value();
if (feature_name == feature)
{
for (TiXmlElement* item_elem = feature_elem->FirstChildElement(); item_elem != NULL; item_elem = item_elem->NextSiblingElement())
{
std::string elemName = item_elem->Value();
//if (type == elemName)
//{
for (TiXmlElement* entry_elem = feature_elem->FirstChildElement(); entry_elem != NULL; entry_elem = entry_elem->NextSiblingElement())
{
std::string elemName = entry_elem->Value();
if ("pSelected" == elemName)
{
std::string value = entry_elem->GetText();
value_list.push_back(value);
}
}
}
}
}
}
}
}
/****************************************************************************************************************/
if (!value_list.empty())
{
return 0;
}
return -1;
}
int XmlParser::getFeatureEnumEntry(TiXmlDocument xml_data, std::string feature, std::vector<std::string>& value_list)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
std::string feature_name = feature;
std::vector<std::string> feature_selected;
for (TiXmlElement* feature_elem = elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
std::string name = feature_elem->Attribute("Name");
if (feature_name == name)
{
if ("Enumeration" == group_elemName)
{
for (TiXmlElement* entry_elem = feature_elem->FirstChildElement(); entry_elem != NULL; entry_elem = entry_elem->NextSiblingElement())
{
std::string elemName = entry_elem->Value();
if ("EnumEntry" == elemName)
{
for (TiXmlElement* value_elem = entry_elem->FirstChildElement(); value_elem != NULL; value_elem = value_elem->NextSiblingElement())
{
std::string value_name = value_elem->Value();
if ("DisplayName" == value_name)
{
std::string value = value_elem->GetText();
value_list.push_back(value);
std::cout << "EnumEntry: " << value;
}
}
}
}
}
}
}
/****************************************************************************************************************/
}
return 0;
}
int XmlParser::getFeatureEnumEntry(TiXmlDocument xml_data, std::string category, std::string feature, std::vector<std::string>& value_list)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
if ("Group" == elemName && attr == category)
{
std::string feature_name = feature;
std::vector<std::string> feature_selected;
for (TiXmlElement* feature_elem = elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
std::string name = feature_elem->Attribute("Name");
if (feature_name == name)
{
if ("Enumeration" == group_elemName)
{
for (TiXmlElement* entry_elem = feature_elem->FirstChildElement(); entry_elem != NULL; entry_elem = entry_elem->NextSiblingElement())
{
std::string elemName = entry_elem->Value();
if ("EnumEntry" == elemName)
{
for (TiXmlElement* value_elem = entry_elem->FirstChildElement(); value_elem != NULL; value_elem = value_elem->NextSiblingElement())
{
std::string value_name = value_elem->Value();
if ("DisplayName" == value_name)
{
std::string value = value_elem->GetText();
value_list.push_back(value);
std::cout << "EnumEntry: " << value;
}
}
}
}
}
}
}
}
/****************************************************************************************************************/
}
return 0;
}
int XmlParser::getFeatureType(TiXmlDocument xml_data, std::vector<std::string> category,
std::vector<std::vector<std::string>> features, std::vector<std::vector<std::string>>& features_type,
std::vector < std::vector<std::vector<std::string>>>& selected_features)
{
TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "Failed to load file: No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
for (int iter_category = 0; iter_category < category.size(); iter_category++)
{
std::string category_name = category[iter_category];
std::vector<std::string> feature_type_list;
std::vector<std::vector<std::string>> feature_selected_list;
// ����XML�ļ�
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
//std::cout << "Value of " << elemName << " is: " << attr << std::endl;
if (category_name == attr)
{
std::vector<std::string> feature_list = features[iter_category];
for (int iter_feature = 0; iter_feature < feature_list.size(); iter_feature++)
{
std::string feature_name = feature_list[iter_feature];
std::vector<std::string> feature_selected;
for (TiXmlElement* feature_elem = elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
std::string value = feature_elem->Attribute("Name");
if (feature_name == value)
{
feature_type_list.push_back(group_elemName);
std::cout << "Value of " << feature_name << " is: " << group_elemName << std::endl;
for (TiXmlElement* selected_elem = feature_elem->FirstChildElement(); selected_elem != NULL; selected_elem = selected_elem->NextSiblingElement())
{
std::string elemName = selected_elem->Value();
if ("pSelected" == elemName)
{
std::string value = selected_elem->GetText();
std::cout << "pSelected of " << feature_name << " is: " << value << std::endl;
feature_selected.push_back(value);
}
}
}
}
feature_selected_list.push_back(feature_selected);
}
}
/****************************************************************************************************************/
}
features_type.push_back(feature_type_list);
selected_features.push_back(feature_selected_list);
}
for (int c_i = 0; c_i < category.size(); c_i++)
{
if (features[c_i].size() != features_type[c_i].size())
{
LOG(ERROR)<<"size of feature != size of features type " << category[c_i];
return -1;
}
}
return 0;
}
//
//int XmlParser::getFeatureType(TiXmlDocument xml_data, std::vector<std::string> category,
// std::vector<std::vector<std::string>> features, std::vector<std::vector<std::string>>& features_type,
// std::vector<std::vector<std::vector<std::string>>>& selected_features)
//{
//
// TiXmlElement* root = xml_data.RootElement(); // ��ȡ��Ԫ��
// if (root == NULL)
// {
// std::cerr << "Failed to load file: No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
// return -2;
// }
//
// for (int iter_category = 0; iter_category < category.size(); iter_category++)
// {
// std::string category_name = category[iter_category];
//
// std::vector<std::string> feature_type_list;
// std::vector<std::vector<std::string>> feature_selected_list;
//
// // ����XML�ļ�
// for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
// {
// std::string elemName = elem->Value();
// //const char* attr;
//
// std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
// //std::cout << "Value of " << elemName << " is: " << attr << std::endl;
//
// if (category_name == attr)
// {
// std::vector<std::string> feature_list = features[iter_category];
//
// for (int iter_feature = 0; iter_feature < feature_list.size(); iter_feature++)
// {
// std::string feature_name = feature_list[iter_feature];
//
// std::vector<std::string> feature_selected;
//
// for (TiXmlElement* feature_elem = elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
// {
// std::string group_elemName = feature_elem->Value();
// std::string value = feature_elem->Attribute("Name");
//
// if (feature_name == value)
// {
// feature_type_list.push_back(group_elemName);
// std::cout << "Value of " << feature_name << " is: " << group_elemName << std::endl;
//
// for (TiXmlElement* selected_elem = feature_elem->FirstChildElement(); selected_elem != NULL; selected_elem = selected_elem->NextSiblingElement())
// {
//
// std::string elemName = selected_elem->Value();
//
// if ("pSelected" == elemName)
// {
//
// std::string value = selected_elem->GetText();
// std::cout << "pSelected of " << feature_name << " is: " << value << std::endl;
//
// feature_selected.push_back(value);
// }
// }
//
// }
//
//
//
//
//
//
// }
//
// feature_selected_list.push_back(feature_selected);
//
// }
//
//
// }
//
//
// /****************************************************************************************************************/
//
// }
//
//
// features_type.push_back(feature_type_list);
// selected_features.push_back(feature_selected_list);
// }
//
//
// return 0;
//
//}
int XmlParser::readXmlFile(std::string path, TiXmlDocument& xml)
{
TiXmlDocument doc(path.c_str()); // �������xml�ļ���Ϊtest.xml
if (!doc.LoadFile())
{
LOG(INFO) << doc.ErrorDesc();
return -1;
}
xml = doc;
xml_data_ = xml;
return 0;
}
int XmlParser::getFeatures(TiXmlDocument xml, std::vector<std::string>& category, std::vector<std::vector<std::string>>& features)
{
std::vector<std::string> standard_category;
std::vector<std::string> custom_category;
std::vector<std::vector<std::string>> standard_features;
std::vector<std::vector<std::string>> custom_features;
TiXmlElement* root = xml.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
LOG(ERROR) << "Failed to load file: No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
return -2;
}
std::vector<std::string> feature_catory_list;
// ����XML�ļ�
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
std::cout << "Value of " << elemName << " is: " << attr << std::endl;
if ("RootCategory" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Root" == name && "Standard" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
standard_category.push_back(value);
}
}
}
if ("Root" == name && "Custom" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
custom_category.push_back(value);
}
}
}
}
}
}
custom_features.resize(custom_category.size());
standard_features.resize(standard_category.size());
/***************************************************************************************************************/
if ("SubCategories" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Standard" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(standard_category.begin(), standard_category.end(), name);
if (it != standard_category.end())
{
std::cout << "Found " << name << " at position " << it - standard_category.begin() << std::endl;
position = it - standard_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if (-1 != position)
{
standard_features[position] = features;
}
}
if ("Custom" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(custom_category.begin(), custom_category.end(), name);
if (it != custom_category.end())
{
std::cout << "Found " << name << " at position " << it - custom_category.begin() << std::endl;
position = it - custom_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if (-1 != position)
{
custom_features[position] = features;
}
}
}
}
}
/****************************************************************************************************************/
}
for (int i = 0; i < standard_category.size(); i++)
{
if (standard_features[i].size() > 0)
{
category.push_back(standard_category[i]);
features.push_back(standard_features[i]);
}
}
for (int i = 0; i < custom_category.size(); i++)
{
if (custom_features[i].size() > 0)
{
category.push_back(custom_category[i]);
features.push_back(custom_features[i]);
}
}
return 0;
}
int XmlParser::readFeature(std::string path, TiXmlDocument& xml_data, std::vector<std::string>& standard_category,
std::vector<std::vector<std::string>>& standard_features,
std::vector<std::string>& custom_category,
std::vector<std::vector<std::string>>& custom_features)
{
std::vector<std::string> standard_category_list;
std::vector<std::string> custom_category_list;
std::vector<std::vector<std::string>> feature_list;
std::vector<std::vector<std::string>> standard_feature_list;
std::vector<std::vector<std::string>> custom_feature_list;
TiXmlDocument doc(path.c_str()); // �������xml�ļ���Ϊtest.xml
if (!doc.LoadFile())
{
std::cerr << doc.ErrorDesc() << std::endl; // ������ܼ����ļ��������������
return -1;
}
xml_data = doc;
xml_data_ = xml_data;
TiXmlElement* root = doc.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "Failed to load file: No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
doc.Clear();
return -2;
}
std::vector<std::string> feature_catory_list;
// ����XML�ļ�
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
std::cout << "Value of " << elemName << " is: " << attr << std::endl;
if ("RootCategory" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Root" == name && "Standard" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
standard_category.push_back(value);
}
}
}
if ("Root" == name && "Custom" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
custom_category.push_back(value);
}
}
}
}
}
}
custom_features.resize(custom_category.size());
standard_features.resize(standard_category.size());
/***************************************************************************************************************/
if ("SubCategories" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Standard" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(standard_category.begin(), standard_category.end(), name);
if (it != standard_category.end())
{
std::cout << "Found " << name << " at position " << it - standard_category.begin() << std::endl;
position = it - standard_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if (-1 != position)
{
standard_features[position] = features;
}
}
if ("Custom" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(custom_category.begin(), custom_category.end(), name);
if (it != custom_category.end())
{
std::cout << "Found " << name << " at position " << it - custom_category.begin() << std::endl;
position = it - custom_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if (-1 != position)
{
custom_features[position] = features;
}
}
}
}
}
/****************************************************************************************************************/
}
return 0;
}
//
//
//int generate_xml(std::string path)
//{
// TiXmlDocument doc;
// TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "UTF-8", "");
//
// TiXmlElement* root;
// add_xml_head(root);
//
// add_root_category(root);
// add_sub_category(root);
//
// /*************************************************************************************************/
//
//
//
//
//
// doc.LinkEndChild(decl);
// doc.LinkEndChild(root);
//
// /*************************************************************************************************/
// add_analog_control_category(root);
// add_acquisition_control_category(root);
//
// add_basic_3d_control_category(root);
// add_hdr_control_category(root);
// add_image_2d_control_category(root);
// add_calib_param_category(root);
// add_filter_control_category(root);
// add_correction_control_category(root);
//
///***********************************************************************************************/
//
//
// doc.SaveFile(path.c_str());
//
// return 0;
//}
//
//
int XmlParser::get_feature(std::string path, std::vector<std::string>& standard_category, std::vector<std::vector<std::string>>& standard_features,
std::vector<std::string>& custom_category, std::vector<std::vector<std::string>>& custom_features)
{
std::vector<std::string> standard_category_list;
std::vector<std::string> custom_category_list;
std::vector<std::vector<std::string>> feature_list;
std::vector<std::vector<std::string>> standard_feature_list;
std::vector<std::vector<std::string>> custom_feature_list;
TiXmlDocument doc(path.c_str()); // �������xml�ļ���Ϊtest.xml
if (!doc.LoadFile())
{
std::cerr << doc.ErrorDesc() << std::endl; // ������ܼ����ļ��������������
return -1;
}
TiXmlElement* root = doc.RootElement(); // ��ȡ��Ԫ��
if (root == NULL)
{
std::cerr << "Failed to load file: No root element." << std::endl; // ����޸�Ԫ�أ����������Ϣ
doc.Clear();
return -2;
}
std::vector<std::string> feature_catory_list;
// ����XML�ļ�
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
//const char* attr;
std::string attr = elem->Attribute("Comment"); // ��YourAttributeName�������������
std::cout << "Value of " << elemName << " is: " << attr << std::endl;
if ("RootCategory" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Root" == name && "Standard" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
standard_category.push_back(value);
}
}
}
if ("Root" == name && "Custom" == space)
{
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
custom_category.push_back(value);
}
}
}
}
}
}
custom_features.resize(custom_category.size());
standard_features.resize(standard_category.size());
/***************************************************************************************************************/
if ("SubCategories" == attr)
{
for (TiXmlElement* category_elem = elem->FirstChildElement(); category_elem != NULL; category_elem = category_elem->NextSiblingElement())
{
std::string group_elemName = category_elem->Value();
if ("Category" == group_elemName)
{
std::string name = category_elem->Attribute("Name");
std::string space = category_elem->Attribute("NameSpace");
if ("Standard" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(standard_category.begin(), standard_category.end(), name);
if (it != standard_category.end())
{
std::cout << "Found "<< name <<" at position " << it - standard_category.begin() << std::endl;
position = it - standard_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if(-1 != position)
{
standard_features[position] = features;
}
}
if ("Custom" == space)
{
int position = -1;
std::vector<std::string> features;
auto it = std::find(custom_category.begin(), custom_category.end(), name);
if (it != custom_category.end())
{
std::cout << "Found " << name << " at position " << it - custom_category.begin() << std::endl;
position = it - custom_category.begin();
}
else
{
std::cout << "Did not find " << name << std::endl;
}
for (TiXmlElement* feature_elem = category_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
{
std::string group_elemName = feature_elem->Value();
if ("pFeature" == group_elemName)
{
std::string value = feature_elem->GetText();
//std::cout << "Value: " << value << std::endl;
features.push_back(value);
}
}
if (-1 != position)
{
custom_features[position] = features;
}
}
}
}
}
/****************************************************************************************************************/
//for (TiXmlElement* g_elem = elem->FirstChildElement(); g_elem != NULL; g_elem = g_elem->NextSiblingElement())
//{
// if (g_elem == NULL)
// {
// break;
// }
// std::string group_elemName = g_elem->Value();
//
// std::string group_elemText = g_elem->Attribute("Name");
// std::string group_namespace = g_elem->Attribute("NameSpace");
// if ("Category" == group_elemName)
// {
// std::cout << "Value of " << group_elemName << " is: " << group_elemText << " namespace: " << group_namespace << std::endl;
// std::vector<std::string> features;
// for (TiXmlElement* feature_elem = g_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
// {
// if (feature_elem == NULL)
// {
// break;
// }
// std::string group_elemName = feature_elem->Value();
// if ("pFeature" == group_elemName)
// {
// std::string value = feature_elem->GetText();
// //std::cout << "Value: " << value << std::endl;
// features.push_back(value);
// }
// }
// feature_list.push_back(features);
// if ("Standard" == group_namespace)
// {
// standard_category_list.push_back(group_elemText);
// standard_feature_list.push_back(features);
// }
// else if ("Custom" == group_namespace)
// {
// custom_category_list.push_back(group_elemText);
// custom_feature_list.push_back(features);
// }
// }
//if ("Root" == group_elemText)
//{
// for (TiXmlElement* feature_elem = g_elem->FirstChildElement(); feature_elem != NULL; feature_elem = feature_elem->NextSiblingElement())
// {
// if (feature_elem == NULL)
// {
// break;
// }
// std::string feature_elemName = feature_elem->Value();
// if ("pFeature" == feature_elemName)
// {
// std::string text = feature_elem->GetText();
// //std::cout << "Value of " << feature_elemName << " is: " << text << std::endl;
// feature_catory_list.push_back(text);
// }
// }
//}
}
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/open3dv/lumos-firmware.git
git@gitee.com:open3dv/lumos-firmware.git
open3dv
lumos-firmware
lumos-firmware
master

搜索帮助