123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020 |
- #ifndef BOOSTGRAPHWRAPPER_H
- #define BOOSTGRAPHWRAPPER_H
- #include <GraphLayoutLibrary_global.h>
- #include <Common/GraphType.h>
- #include <Common/GeometryHelper.h>
- #include <boost/graph/connected_components.hpp>
- #include <boost/graph/biconnected_components.hpp>
- #include <boost/graph/smallest_last_ordering.hpp>
- #include <boost/graph/topological_sort.hpp>
- #include <QtCore/qmath.h>
- #include <boost/exception/get_error_info.hpp>
- #include <LayoutUtilities/CommonLayoutConstants.h>
- #include <LayoutException/LayoutExceptionConstants.h>
- #include <LayoutException/LayoutMemoryException.h>
- #include <QDebug>
- using namespace std;
- typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info;
- //To Do: Later move MACROS to separate header file
- #define DELETE_AND_SET_NULL(objectPointer)\
- if(objectPointer != NULL)\
- {\
- delete objectPointer;\
- objectPointer = NULL;\
- }
- #define PGL_VERTEX_INDEX(vertex,graph) \
- get(vertex_index,graph,vertex)
- #define PGL_PRINT_VERTEX_ORDER( graph , mapVertexOrder , GraphType) \
- cout << "Vertex Order: "; \
- BGL_FORALL_VERTICES(BGL_CAT(v,__LINE__) , graph , GraphType) \
- cout << mapVertexOrder[BGL_CAT(v,__LINE__)] << " "; \
- cout << endl;
- //For Vertex Ordering
- enum ShiftDirection { LeftDirection = 1000, RightDirection = 1001 };
- //Map vertex descriptor to order
- #define PGL_MAP_VERTEX_ORDER(mapVertexOrder,graph) \
- property_map<SubGraph , std::size_t VertexProperties::*>::type \
- mapVertexOrder(get(&VertexProperties::iOrder , graph));
- //Map vertex descriptor to its bundled property
- #define PGL_MAP_VERTEX_BUNDLED_PROPERTY(mapVertexProperty, PropertyType , PropertyName , graphObject) \
- property_map<SubGraph , PropertyType VertexProperties::*>::type \
- mapVertexProperty(get(&VertexProperties::PropertyName , graphObject));
- //Swap vertex order values
- #define PGL_SWAP_VERTEX_ORDER(v1 , v2 , mapVertexOrder) \
- mapVertexOrder[v1] = mapVertexOrder[v1] ^ mapVertexOrder[v2]; \
- mapVertexOrder[v2] = mapVertexOrder[v1] ^ mapVertexOrder[v2]; \
- mapVertexOrder[v1] = mapVertexOrder[v1] ^ mapVertexOrder[v2];
- //Map graph property
- #define PGL_MAP_GRAPH_REF_PROPERTY(mapGraphRefPropertyName , gGraph)\
- boost::ref_property_map<SubGraph*, GraphProperties>\
- mapGraphRefPropertyName(boost::get_property(gGraph,graph_custom_prop));
- //To Do: later compartment class
- /**
- * A structure to store comprtment layout.
- */
- struct LayoutCompartment{
- int x,y; /*!< coordinates of location */
- int height; /*!< Height */
- int width; /*!< Width */
- };
- /**
- * @brief The BoostGraphWrapper class
- *
- * The wrapper class around Boost graphs. Provides methods to access and manipulte properties of the graph.
- */
- class GRAPHLAYOUTLIBRARYSHARED_EXPORT BoostGraphWrapper
- {
- private:
- SubGraph m_Graph; /*!< Instance of Boost graph */
- public:
- /** @name Creators
- * The methods under this section are responsible for constructing
- * an instance of type BoostGraphWrapper.
- */
- //@{
- /**
- Constructs new object of type BoostGraphWrapper
- */
- BoostGraphWrapper();
- /**
- Constructs new object of type BoostGraphWrapper
- @param graph
- Object of boost graph type
- */
- BoostGraphWrapper(SubGraph graph);
- //@}
- /** @name Modifiers
- * The methods under this section are responsible for modifying
- * an instance of type BoostGraphWrapper.
- */
- //@{
- //Add Vertex
- //for m_Graph
- /**
- This function adds new vertex in the wrapper member graph.
- @pre
- -# gInputGraph != NULL
- @param none
- @return vertexdescriptor
- @throw none
- */
- VertexDescriptor addVertex();
- //for m_Graph
- /**
- This function adds provided vertex in the wrapper member graph.
- @pre none
- @param none
- @return vertexdescriptor
- @throw none
- */
- VertexDescriptor addVertex(VertexDescriptor& vertex);
- /**
- This function adds new vertex in the provided graph.
- @pre
- -# subgraph != NULL
- @param subgraph
- reference to input graph
- @return vertexdescriptor
- @throw none
- */
- VertexDescriptor addVertex(SubGraph& subgraph);
- /**
- This functions adds provided vertex in the provided graph.
- @pre
- -# subgraph != NULL
- @param subgraph
- reference to input graph
- @param vertex
- reference to vertex
- @return vertexdescriptor
- @throw none
- */
- VertexDescriptor addVertex(VertexDescriptor& vertex , SubGraph& subgraph);
- /**
- This function adds a vertex (node) of specified type
- @pre
- -# subgraph != NULL
- -# enVertexType should be valid
- @param subgraph
- reference to input graph.
- @param enVertexType
- type of vertex from available types.
- @return VertexDescriptor
- @throw none
- */
- VertexDescriptor addVertex(SubGraph &subgraph , LayoutEnum::NodeType enVertexType);
- //Add Edge
- //for m_Graph
- /**
- This function adds edge between provided source and target vertices in the wrapper member graph.
- @pre none
- @param vertex1
- reference of source vertex.
- @param vertex2
- reference of target vertex.
- @return edgedescriptor and bool pair
- @throw none
- */
- EdgeBoolPair addEdge(VertexDescriptor& vertex1,VertexDescriptor& vertex2);
- /**
- This function adds edge between provided source and target vertices in the provided graph.
- @pre none
- @param vertex1
- reference of source vertex.
- @param vertex2
- reference of target vertex.
- @param subgraph
- referecne to graph
- @return edgedescriptor and bool pair
- @throw none
- */
- EdgeBoolPair addEdge(VertexDescriptor& vertex1,VertexDescriptor& vertex2,
- SubGraph& subgraph);
- /**
- This function adds edge between provided source and target vertices in the wrapper member graph.
- @pre
- -# subgraph != NULL
- -# enEdgeType should be valid type
- @param vertex1
- reference of source vertex.
- @param vertex2
- reference of target vertex.
- @param subgraph
- referecne to graph
- @param enEdgeType
- type of edge from available types
- @return edgedescriptor and bool pair
- @throw none
- */
- EdgeBoolPair addEdge(VertexDescriptor& vertex1,VertexDescriptor& vertex2,
- SubGraph& subgraph, LayoutEnum::EdgeType enEdgeType);
- /**
- This function deletes provided edge from provided graph.
- @pre
- -# gGraph != NULL
- @param eEdge
- reference of edge
- @param subgraph
- referecne to graph
- @return none
- @throw none
- */
- void removeEdge(EdgeDescriptor& eEdge , SubGraph& gGraph);
- /**
- This function deletes provided edge from wrapper member graph.
- @pre
- -# gGraph != NULL
- @param eEdge
- reference to edge
- @return none
- @throw none
- */
- void removeEdge(EdgeDescriptor& eEdge);
- /**
- This function deletes edge between provided source and target vertices from provided graph.
- @pre
- -# gGraph != NULL
- @param vSource
- reference to vSource
- @param vTarget
- reference to vTarget
- @param gGraph
- reference to gGraph
- @return none
- @throw none
- */
- void removeEdge(VertexDescriptor& vSource , VertexDescriptor& vTarget , SubGraph& gGraph);
- /**
- This function deletes edge between provided source and target vertices from wrapeer member graph.
- @pre none
- @param vSource
- reference to vSource
- @param vTarget
- reference to vTarget
- @return none
- @throw none
- */
- void removeEdge(VertexDescriptor& vSource , VertexDescriptor& vTarget);
-
- //Subgraph
- /**
- This function creates empty subgraph under the hierarchy of wrapper member graph.
- @pre none
- @param none
- @return reference to subgraph
- @throw none
- */
- SubGraph& addSubgraph();
- /**
- This function creates empty subgraph under the hierarchy of provided graph.
- @pre
- -# subgraph != NULL
- @param subgraph
- reference to subgraph
- @return reference to subgraph
- @throw none
- */
- SubGraph& addSubgraph(SubGraph& subgraph);
-
- /**
- This function sets vertex id for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @pre
- -# sId should not be empty
- @param vertex
- reference to subgraph
- @param vertex
- reference to vertex
- @param sId
- id for the vertex
- @return none
- @throw none
- */
- void setVertexId(VertexDescriptor& vertex, SubGraph& subgraph, QString sId);
- /**
- This function sets vertex id for provided vertex to vertex property of wrapper member graph.
- @pre
- -# subgraph != NULL
- @pre
- -# sId should not be empty
- @param vertex
- reference to vertex
- @param sId
- id for the vertex
- @return none
- @throw none
- */
- void setVertexId(VertexDescriptor& vertex , QString sId);
-
- /**
- This function sets height for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iHeight
- height of vertex
- @return none
- @throw none
- */
- void setVertexHeight(VertexDescriptor& vertex, SubGraph& subgraph , int iHeight);
- /**
- This function sets height for provided vertex to vertex property of wrapper member graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param iHeight
- height of vertex
- @return none
- @throw none
- */
- void setVertexHeight(VertexDescriptor& vertex , int iHeight);
-
- /**
- This function sets width for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iWidth
- width of vertex
- @return none
- @throw none
- */
- void setVertexWidth(VertexDescriptor& vertex, SubGraph& subgraph , int iWidth);
- /**
- This function sets width for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iWidth
- width of vertex
- @return none
- @throw none
- */
- void setVertexWidth(VertexDescriptor& vertex , int iWidth);
-
- /**
- This function writes left x coordinate for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iLeftCoordX
- value of left coordinate X
- @return none
- @throw none
- */
- void setVertexLeftCoordX(VertexDescriptor& vertex , int iLeftCoordX);
- /**
- This function writes left x coordinate for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iLeftCoordX
- value of left coordinate X
- @return none
- @throw none
- */
- void setVertexLeftCoordX(VertexDescriptor& vertex, SubGraph& subgraph , int iLeftCoordX);
-
- /**
- This function writes left y coordinate for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iLeftCoordY
- value of left coordinate Y
- @return none
- @throw none
- */
- void setVertexLeftCoordY(VertexDescriptor& vertex, SubGraph& subgraph , int iLeftCoordY);
- /**
- This function writes left y coordinate for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iLeftCoordY
- value of left coordinate Y
- @return none
- @throw none
- */
- void setVertexLeftCoordY(VertexDescriptor& vertex, int iLeftCoordY);
-
- /**
- This function writes center x coordinate for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iCoordX
- value of center coordinate X
- @return none
- @throw none
- */
- void setVertexCenterCoordX(VertexDescriptor& vertex , int iCoordX);
- /**
- This function writes center x coordinate for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iCoordX
- value of center coordinate X
- @return none
- @throw none
- */
- void setVertexCenterCoordX(VertexDescriptor& vertex, SubGraph& subgraph , int iCoordX);
-
- /**
- This function writes center y coordinate for provided vertex to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iCoordY
- value of center coordinate Y
- @return none
- @throw none
- */
- void setVertexCenterCoordY(VertexDescriptor& vertex, SubGraph& subgraph , int iCoordY);
- /**
- This function writes center y coordinate for provided vertex to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iCoordY
- value of center coordinate y
- @return none
- @throw none
- */
- void setVertexCenterCoordY(VertexDescriptor& vertex, int iCoordY);
-
- /**
- This function writes whether provided vertex is invisible or not to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param bIsInvisible
- boolean whether the vertex is visible type or not
- @return none
- @throw none
- */
- void setVertexIsInvisible(VertexDescriptor& vertex, SubGraph& subgraph , bool bIsInvisible);
- /**
- This function writes whether provided vertex is invisible or not to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param bIsInvisible
- boolean whether the vertex is visible type or not
- @return none
- @throw none
- */
- void setVertexIsInvisible(VertexDescriptor& vertex , bool bIsInvisible);
-
- /**
- This function writes whether provided vertex is invisible or not to vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param bIsExpandable
- boolean whether the vertex is expandable type or not
- @return none
- @throw none
- */
- void setVertexExpandable(VertexDescriptor& vertex, SubGraph& subgraph , bool bIsExpandable);
- /**
- This function writes whether provided vertex is expandable or not to vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param bIsExpandable
- boolean whether the vertex is epandable type or not
- @return none
- @throw none
- */
- void setVertexExpandable(VertexDescriptor& vertex , bool bIsExpandable);
-
- /**
- This function writes treewidth in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iTreeWidth
- tree width in integer
- @return none
- @throw none
- */
- void setVertexTreeWidth(VertexDescriptor& vertex, SubGraph& subgraph , int iTreeWidth);
- /**
- This function writes treewidth in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iTreeWidth
- value of the treewidth
- @return none
- @throw none
- */
- void setVertexTreeWidth(VertexDescriptor& vertex,int iTreeWidth);
-
- /**
- This function writes distance from root in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iDistanceFromRoot
- distance from root in integer
- @return none
- @throw none
- */
- void setVertexDistanceFromRoot(VertexDescriptor& vertex, SubGraph& subgraph , int iDistanceFromRoot);
- /**
- This function writes distance from root in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iDistanceFromRoot
- value of the distance from root.
- @return none
- @throw none
- */
- void setVertexDistanceFromRoot(VertexDescriptor& vertex , int iDistanceFromRoot);
- //int iRank;
-
- /**
- This function writes rank of vertex in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iRank
- rank of vertex in integer
- @return none
- @throw none
- */
- void setVertexRank(VertexDescriptor& vertex, SubGraph& subgraph , int iRank);
- /**
- This function writes vertex rank in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iRank
- value of the vertex rank.
- @return none
- @throw none
- */
- void setVertexRank(VertexDescriptor& vertex , int iRank);
- //int iPosition;
-
- /**
- This function writes horizontal position of vertex in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iHorizontalPosition
- horizontal position of vertex in integer
- @return none
- @throw none
- */
- void setVertexHorizontalPosition(VertexDescriptor& vertex, SubGraph& subgraph , int iHorizontalPosition);
- /**
- This function writes vertex horizontal position in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iHorizontalPosition
- value of the horizontal position.
- @return none
- @throw none
- */
- void setVertexHorizontalPosition(VertexDescriptor& vertex , int iHorizontalPosition);
- //Barrycenter Weight
- //double dBarryCenter;
-
- /**
- This function writes barry center of vertex in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param dBarryCenter
- barry center of vertex in integer
- @return none
- @throw none
- */
- void setVertexBarryCenter(VertexDescriptor& vertex, SubGraph& subgraph , double dBarryCenter);
- /**
- This function writes vertex barry center value in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param dBarryCenter
- value of the barry center.
- @return none
- @throw none
- */
- void setVertexBarryCenter(VertexDescriptor& vertex , double dBarryCenter);
-
- void setVertexTreeLeftX(VertexDescriptor& vertex, SubGraph& subgraph , int iTreeLeftX);
- void setVertexTreeLeftX(VertexDescriptor& vertex , int iTreeLeftX);
- //Node type
- //NodeType enVertexType;
-
- /**
- This function writes type of vertex in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param enVertexType
- type of vertex
- @return none
- @throw none
- */
- void setVertexType(VertexDescriptor& vertex , SubGraph& subgraph , LayoutEnum::NodeType enVertexType);
- /**
- This function writes vertex type in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param enVertexType
- type of vertex from available types
- @return none
- @throw none
- */
- void setVertexType(VertexDescriptor& vertex , LayoutEnum::NodeType enVertexType);
-
- void setVertexVisited(VertexDescriptor& vertex , SubGraph& subgraph , bool bVisited);
- void setVertexVisited(VertexDescriptor& vertex , bool bVisited);
-
- /**
- This function writes topological order of vertex in the vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @param iTopologicalOrder
- topological order of vertex in integer
- @return none
- @throw none
- */
- void setVertexTopologicalOrder(int iTopologicalOrder , VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function writes vertex topological order in the vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @param iTopologicalOrder
- topological order of vertex in integer
- @return none
- @throw none
- */
- void setVertexTopologicalOrder(int iTopologicalOrder , VertexDescriptor& vertex);
-
- /**
- This function writes id of edge in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @param sId
- id of edge
- @return none
- @throw none
- */
- void setEdgeId(EdgeDescriptor& edge, SubGraph& subgraph, QString sId);
- /**
- This function writes edge id in the edge property of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @param sId
- id of edge
- @return none
- @throw none
- */
- void setEdgeId(EdgeDescriptor& edge , QString sId);
-
- void setEdgeIndex(EdgeDescriptor& edge, SubGraph& subgraph, std::size_t iEdgeIndex);
- void setEdgeIndex(EdgeDescriptor& edge , std::size_t iEdgeIndex);
- /**
- This function writes type of edge direction in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @param bBidirectional
- type of edge direction
- @return none
- @throw none
- */
- void setEdgeBidirectional(EdgeDescriptor& edge, SubGraph& subgraph , bool bBidirectional);
- /**
- This function writes type of edge direction in the edge property of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @param bBidirectional
- type of edge direction
- @return none
- @throw none
- */
- void setEdgeBidirectional(EdgeDescriptor& edge , bool bBidirectional);
- /**
- This function writes type of edge invisible in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @param bIsInvisible
- type of edge invisible
- @return none
- @throw none
- */
- void setEdgeIsInvisible(EdgeDescriptor& edge, SubGraph& subgraph , bool bIsInvisible);
- /**
- This function writes type of edge invisible in the edge property of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @param bIsInvisible
- type of edge invisible
- @return none
- @throw none
- */
- void setEdgeIsInvisible(EdgeDescriptor& edge , bool bIsInvisible);
-
- void setEdgeVisited(EdgeDescriptor& edge , SubGraph& subgraph , bool bVisited);
- void setEdgeVisited(EdgeDescriptor& edge , bool bVisited);
- //Edge Type
- void setEdgeType(EdgeDescriptor eEdge, SubGraph &subgraph, LayoutEnum::EdgeType enEdgeType);
- void setEdgeType(EdgeDescriptor eEdge, LayoutEnum::EdgeType enEdgeType);
- /**
- This function writes type of edge reversed in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @param bReversed
- type of edge reversed
- @return none
- @throw none
- */
- void setEdgeReversed(EdgeDescriptor& edge , SubGraph& subgraph , bool bReversed);
- /**
- This function writes type of edge reversed in the edge property of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @param bReversed
- type of edge reversed
- @return none
- @throw none
- */
- void setEdgeReversed(EdgeDescriptor& edge , bool bReversed);
- /**
- This function writes if edge is conflicted/crossing with another edge in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @param bIsConflicted
- writes if edge is conflicted/crossing with another edge or not
- @return none
- @throw none
- */
- void setEdgeIsConflicted(EdgeDescriptor& edge, SubGraph& subgraph , bool bIsConflicted);
- /**
- This function writes if edge is conflicted/crossing with another edge in the edge property of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @param bIsConflicted
- if edge is conflicted/crossing with another edge or not
- @return none
- @throw none
- */
- void setEdgeIsConflicted(EdgeDescriptor& edge , bool bIsConflicted);
-
- //Bend points
- /**
- This function prepares list of bend points objects into edge properties of provided graph.
- *
- * @pre
- * -# gGraph != NULL
- *
- * @param bendPointRef
- * reference to bendpoints containing x and y coordinate
- *
- * @return none
- *
- * @throw none
- */
- void addBendPoint(BendPoints* bendPointRef , EdgeDescriptor eEdge , SubGraph& gGraph);
- /**
- This function sets id to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- * -# sId should not be empty.
- *
- * @param gSubgraph
- * reference to graph
- *
- * @param sId
- * id of a graph
- *
- * @return none
- *
- * @throw none
- */
- void setGraphId(QString sId , SubGraph& gSubgraph);
- /**
- This function sets id to wrapper member graph
- *
- * @pre
- * -# sId should not be empty.
- *
- * @param sId
- * id of a graph
- *
- * @return none
- *
- * @throw none
- */
- void setGraphId(QString sId);
- /**
- This function sets index of this provided graph.
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to graph
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDummyNodeIndex(std::size_t iDummyNodeIndex , SubGraph& gSubgraph);
- /**
- This function sets index of this wrapper member graph.
- *
- * @pre none
- *
- * @param iDummyNodeIndex
- * value of index to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDummyNodeIndex(std::size_t iDummyNodeIndex);
-
- /**
- This function sets left x coordinate to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iLeftCoordX
- * value of left coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLeftTopCoordX(int iLeftTopCoordX , SubGraph& gSubgraph);
- /**
- This function sets left x coordinate to wrapper member graph
- *
- * @pre none
- *
- * @param iLeftCoordX
- * value of left coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLeftTopCoordX(int iLeftTopCoordX);
-
- /**
- This function sets top y coordinate to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iLeftCoordX
- * value of left coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLeftTopCoordY(int iLeftTopCoordY , SubGraph& gSubgraph);
- /**
- This function sets top y coordinate to wrapper member graph
- *
- * @pre none
- *
- * @param iLeftCoordY
- * value of left y coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLeftTopCoordY(int iLeftTopCoordY);
-
- /**
- This function sets center x coordinate to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iCenterCoordX
- * value of center x coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphCenterCoordX(int iCenterCoordX , SubGraph& gSubgraph);
- /**
- This function sets center x coordinate to wrapper member graph
- *
- * @pre none
- *
- * @param iCenterCoordX
- * value of center x coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphCenterCoordX(int iCenterCoordX);
- /**
- This function sets center y coordinate to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iCenterCoordY
- * value of center y coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphCenterCoordY(int iCenterCoordY , SubGraph& gSubgraph);
- /**
- This function sets center y coordinate to wrapper member graph
- *
- * @pre none
- *
- * @param iCenterCoordY
- * value of center y coordinate to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphCenterCoordY(int iCenterCoordY);
- /**
- This function sets radius to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param dRadius
- * value of radius to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphRadius(double dRadius, SubGraph& gSubgraph);
- /**
- This function sets radius to wrapper member graph
- *
- * @pre none
- *
- * @param dRadius
- * value of radius to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphRadius(double dRadius);
- /**
- This function sets height to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iHeight
- * value of height to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphHeight(int iHeight , SubGraph& gSubgraph);
- /**
- This function sets height to wrapper member graph
- *
- * @pre none
- *
- * @param iHeight
- * value of height to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphHeight(int iHeight);
-
- /**
- This function sets width to provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iWidth
- * value of width to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphWidth(int iWidth , SubGraph& gSubgraph);
- /**
- This function sets width to wrapper member graph
- *
- * @pre none
- *
- * @param iWidth
- * value of width to be set
- *
- * @return none
- *
- * @throw none
- */
- void setGraphWidth(int iWidth);
-
- void setGraphCoordX(int iCoordX , SubGraph& gSubgraph);
- void setGraphCoordX(int iCoordX);
- void setGraphCoordY(int iCoordY , SubGraph& gSubgraph);
- void setGraphCoordY(int iCoordY);
- /**
- This function sets distance between centroid of graph and center x coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iDistanceCoordX
- * distance between centroid of graph and center x coordinate
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDistanceBetweenCentoidAndCenterCoordX(int iDistanceCoordX , SubGraph& gSubgraph);
- /**
- This function sets distance between centroid of graph and center x coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param iDistanceCoordX
- * distance between centroid of graph and center x coordinate
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDistanceBetweenCentoidAndCenterCoordX(int iDistanceCoordX);
- /**
- This function sets distance between y coordinate centroid of graph and center y coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @param iDistanceCoordY
- * distance between centroid of graph and center y coordinate
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDistanceBetweenCentoidAndCenterCoordY(int iDistanceCoordY , SubGraph& gSubgraph);
- /**
- This function sets distance between y coordinate centroid of graph and center y coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param iDistanceCoordY
- * distance between centroid of graph and center y coordinate
- *
- * @return none
- *
- * @throw none
- */
- void setGraphDistanceBetweenCentoidAndCenterCoordY(int iDistanceCoordY);
- //Own Vertices
- //QVectorUInt vectOwnVertices;
- /**
- This function sets provided vertex as a own vertex property for the provided graph.
- *
- * @pre none
- *
- * @param vVertex
- * value of the vertex
- *
- * @return none
- *
- * @throw none
- */
- void setAsOwnVertex(VertexDescriptor vVertex , SubGraph &gGraph);
-
- /**
- This function sets the upper border value of provided graph property.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- *@param vUpperBorderVertex
- * value of upper border vertex
- *
- * @return none
- *
- * @throw none
- */
- void setGraphUpperBorderVertex(std::size_t vUpperBorderVertex , SubGraph& gGraph);
- /**
- This function sets the upper border value of wrapper member graph property.
- *
- * @pre none
- *
- *@param vUpperBorderVertex
- * value of upper border vertex
- *
- * @return none
- *
- * @throw none
- */
- void setGraphUpperBorderVertex(std::size_t vUpperBorderVertex);
-
- /**
- This function sets the lower border value of provided graph property.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- *@param vLowerBorderVertex
- * value of lower border vertex
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLowerBorderVertex(std::size_t vLowerBorderVertex , SubGraph& gGraph);
- /**
- This function sets the lower border value of wrapper member graph property.
- *
- * @pre none
- *
- *@param vLowerBorderVertex
- * value of lower border vertex
- *
- * @return none
- *
- * @throw none
- */
- void setGraphLowerBorderVertex(std::size_t vLowerBorderVertex);
-
- //Swap vertex order in 'graph' as well as 'mapOrderVertex'
- /**
- This function swaps vertex's provided orders in 'graph' as well as 'mapOrderVertex'
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param order1
- * value of first order
- *
- * @param order2
- * value of second order
- *
- * @param mapOrderVertex
- * reference to order vertex map
- *
- * @param mapVertexOrder
- * reference to vertex order map
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void swapVertexOrderByOrder(std::size_t order1, std::size_t order2,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //check
- //mapOrderVertex is a valid MapOrderVertex type map
- //order1 and order2 are valid keys with valid values
- LAYOUT_ASSERT(((order1 > 0) && (order2 > 0)),
- LayoutException(__FUNCTION__,
- LayoutExceptionEnum::INVALID_PARAMETER,
- NEGATIVE_ORDER,ORDER_VALUE));
- /* Swapping 'order' value in mapOrderVertex by
- exchanging the vertex desciptors among the order1 and order2 */
- VertexDescriptor vertex1 = mapOrderVertex[order1];
- mapOrderVertex.insert(order1, mapOrderVertex[order2]);
- mapOrderVertex.insert(order2, vertex1);
- //Swapping actual 'order' property values
- PGL_SWAP_VERTEX_ORDER(mapOrderVertex[order1],mapOrderVertex[order2],mapVertexOrder);
- }
- /**
- This function swaps vertex's orders provided vertices in 'graph' as well as 'mapOrderVertex'
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param v1
- * reference to first vertex
- *
- * @param v2
- reference to second vertex
- *
- * @param mapOrderVertex
- * reference to order vertex map
- *
- * @param mapVertexOrder
- * reference to vertex order map
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void swapVertexOrderByVertex(VertexDescriptor& v1 , VertexDescriptor& v2,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //check
- //mapOrderVertex is a valid MapOrderVertex type map
- //v1 and v2 are valid values in mapOrderVertex
- std::size_t order1 = mapOrderVertex.key(v1);
- std::size_t order2 = mapOrderVertex.key(v2);
- swapVertexOrderByOrder(order1,order2,mapOrderVertex,mapVertexOrder);
- }
- //***Left Shift****
- //LeftShift
- /**
- This function shifts the order of vertex provided order of vartex.
- *
- * @pre none
- *
- * @param iOrderSource
- * value of order to be shifted
- *
- * @param mapOrderVertex
- * reference to order vertex map
- *
- * @param enDirection
- * direction of shifting
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void leftShiftVertexByOrder(std::size_t iOrderSource,MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //ToDo : check iOrderSource is valid for mapVertexOrder
- //Check iOrder1 is valid key in mapOrderVertex
- LAYOUT_ASSERT(mapOrderVertex.contains(iOrderSource),LayoutException(__FUNCTION__
- , LayoutExceptionEnum::NOT_FOUND_IN_CONTAINER
- , "mapOrderVertex"
- , "iOrderSource"));
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- 1,LeftDirection);
- }
- /**
- This function shifts the order of vertex provided vartex.
- *
- * @pre none
- *
- * @param vSource
- * value of vertex
- *
- * @param mapOrderVertex
- * reference to order vertex map
- *
- * @param enDirection
- * direction of shifting
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void leftShiftVertexByVertex(VertexDescriptor& vSource,MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //ToDo : check vOrderSource is valid value from mapVertexOrder
- //Get key for vSource
- std::size_t iOrderSource = mapOrderVertex.key(vSource);
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- 1,LeftDirection);
- }
- /**
- * Function to shift vertex order value to left by using order values
- *
- * @param iOrderSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- * @param iShiftBy
- *
- * @return none
- *
- * @throw none
- */
- //LeftShift by N
- template <typename MapVertexOrder>
- void leftShiftVertexByOrder(std::size_t iOrderSource,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder,
- int iShiftBy)
- {
- //ToDo : check iOrderSource is valid for mapVertexOrder
- LAYOUT_ASSERT(iShiftBy>0,LayoutException(__FUNCTION__
- , LayoutExceptionEnum::INVALID_PARAMETER
- , "must be greater than zero"
- , "iShiftBy"));
- //Check iOrder1 is valid key in mapOrderVertex
- LAYOUT_ASSERT(mapOrderVertex.contains(iOrderSource),LayoutException(__FUNCTION__
- , LayoutExceptionEnum::NOT_FOUND_IN_CONTAINER
- , "mapOrderVertex"
- , "iOrderSource"));
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- iShiftBy,LeftDirection);
- }
- /**
- * Function to shift vertex order value to left by using vertices
- *
- * @param vSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- * @param iShiftBy
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void leftShiftVertexByVertex(VertexDescriptor& vSource,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder,
- int iShiftBy)
- {
- //ToDo : check vOrderSource is valid value from mapVertexOrder
- LAYOUT_ASSERT(iShiftBy>0,LayoutException(__FUNCTION__
- , LayoutExceptionEnum::INVALID_PARAMETER
- , "must be greater than zero"
- , "iShiftBy"));
- //Get key for vSource
- std::size_t iOrderSource = mapOrderVertex.key(vSource);
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- iShiftBy,LeftDirection);
- }
- //***Rigth Shift****
- //RightShiftS
- /**
- * Function to shift vertex order value to right by using order
- *
- * @param iOrderSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void rightShiftVertexByOrder(std::size_t iOrderSource,MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //check : iOrderSource is valid for both maps: mapOrderVertex and mapVertexOrder
- //Check iOrder1 is valid key in mapOrderVertex
- LAYOUT_ASSERT(mapOrderVertex.contains(iOrderSource),LayoutException(__FUNCTION__
- , LayoutExceptionEnum::NOT_FOUND_IN_CONTAINER
- , "mapOrderVertex"
- , "iOrderSource"));
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- 1,RightDirection);
- }
- /**
- * Function to shift vertex order value to right by using vertex
- * @param vSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- *
- * @return none
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- void rightShiftVertexByVertex(VertexDescriptor& vSource,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder)
- {
- //ToDo : check vOrderSource is valid value from mapVertexOrder
- //Get key for vSource
- std::size_t iOrderSource = mapOrderVertex.key(vSource);
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- 1,RightDirection);
- }
- //RightShift by N
- /**
- * Function to shift vertex order value to right by using order values
- *
- * @param iOrderSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- * @param iShiftBy
- */
- template <typename MapVertexOrder>
- void rightShiftVertexByOrder(std::size_t iOrderSource,MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder, int iShiftBy)
- {
- //check : iOrderSource is valid for both maps: mapOrderVertex and mapVertexOrder
- //Check iOrder1 is valid key in mapOrderVertex
- LAYOUT_ASSERT(mapOrderVertex.contains(iOrderSource),LayoutException(__FUNCTION__
- , LayoutExceptionEnum::NOT_FOUND_IN_CONTAINER
- , "mapOrderVertex"
- , "iOrderSource"));
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- iShiftBy,RightDirection);
- }
- /**
- * Function to shift vertex order value to right by using vertex
- *
- * @param vSource
- * @param mapOrderVertex
- * @param mapVertexOrder
- * @param iShiftBy
- */
- template <typename MapVertexOrder>
- void rightShiftVertexByVertex(VertexDescriptor& vSource,
- MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder,
- int iShiftBy)
- {
- //ToDo : check vOrderSource is valid value from mapVertexOrder
- LAYOUT_ASSERT(iShiftBy>0,LayoutException(__FUNCTION__
- , LayoutExceptionEnum::INVALID_PARAMETER
- , "must be greater than zero"
- , "iShiftBy"));
- //Get key for vSource
- std::size_t iOrderSource = mapOrderVertex.key(vSource);
- shiftVertexByOrder(iOrderSource,mapOrderVertex,mapVertexOrder,
- iShiftBy,RightDirection);
- }
-
- //************************* Ordering Criteria Components***************
- /**
- This function orders the vertices of the graph ion the basis of connected components.
- @pre
- -# gGraph != NULL
- -# !mapOrderVertex.empty()
- @param gGraph
- reference to input graph.
- @param mapOrderVertex
- map containing order for vertices.
- @return none
- @throw none
- */
- void applyConnectedComponent(SubGraph &gGraph,MapOrderVertex& mapOrderVertex);
- /**
- This function orders the vertices of the graph in topological manner.
- @pre
- -# gGraph != NULL
- -# !mapOrderVertex.empty()
- @param gGraph
- reference to input graph.
- @param mapOrderVertex
- map containing order for vertices.
- @return none
- @throw none
- */
- void applyTopologicalVertexOrdering(SubGraph &gGraph,MapOrderVertex& mapOrderVertex);
- //************************* Ordering Criteria Components END***********
- //*************************Ordering ***************
- /**
- This function sorts the vertices of the graph in orderly manner.
- @pre
- -# gGraph != NULL
- -# !vecVertexOrder.empty()
- @param gGraph
- reference to input graph.
- @param vecVertexOrder
- map containing vertices for order.
- @return none
- @throw none
- */
- void sortVerticesByOrderList(VectorVertexOrder vecVertexOrder, SubGraph& gGraph);
- //*************************Ordering END***********
- //initialize vertex order values equals to the vertex_index
- /**
- This function initializes the all vertex order values to its index from provided graph.
- @pre
- -# gSubgraph != NULL
- @param gSubgraph
- reference to graph.
- @return none
- @throw none
- */
- void initGraphVertexOrderValues(SubGraph& subgraph);
-
- /**
- This function adds dummy nodes coresponding to each subgraph in the graph
- @pre
- -# gParentGraph != NULL
- -# gChildGraph != NULL
- @param gParentGraph
- referecne to parent graph
- @param gChildGraph
- reference to child graph
- @return vertex descriptor for dummy NodeType
- @throw none
- */
- VertexDescriptor addDummyVertexForChildGraph(SubGraph& gParentGraph, SubGraph& gChildGraph);
-
- // Force Directed Props Getter and Setter
- // TO DO - Complete documentation
- void setVertXDisp(double iDispX,VertexDescriptor verDis,SubGraph &l_graph);
- void setVertYDisp(double iDispY,VertexDescriptor verDis,SubGraph &l_graph);
- void setVertexLock(VertexDescriptor verDis, SubGraph &l_graph);
- void setGraphClusterID(int iClusterID, SubGraph& gSubgraph);
- void setVertexClusterID(int iClusterID, VertexDescriptor vDisc, SubGraph& gSubgraph );
- bool setIsVirtualNode(VertexDescriptor vertex, SubGraph& subgraph);
- void setClusterXDisplacement(SubGraph& gSubgraph,int iDisp);
- void setClusterYDisplacement(SubGraph& gSubgraph,int iDisp);
- //@}
- /** @name Queries
- * The methods under this section are responsible for accessing
- * an instance of type BoostGraphWrapper.
- */
- //@{
- //Print Graph with SubGraph
- //for m_Graph
- /**
- This function prints wrapper member graph.
- @pre none
- @param none
- @return none
- @throw none
- */
- void printGraph();
- //for any graph
- /**
- This function prints provided graph.
- @pre none
- @param subgraph
- reference to subgraph
- @return none
- @throw none
- */
- void printGraph(SubGraph& subgraph);
- //Total Vertex Count
- //for m_Graph
- /**
- This function returns total number of vertices present in wrapper member graph.
- @pre none
- @param none
- @return number of vertices
- @throw none
- */
- int numVertices();
- /**
- This function returns total number of vertices present in provided graph.
- @pre none
- @param gSubgraph
- reference to gSubgraph
- @return number of vertices
- @throw none
- */
- int numVertices(SubGraph &gSubgraph);
- /**
- This function returns index for provided vertex present in wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return number of vertices
- @throw none
- */
- int getVertexIndex(VertexDescriptor& vertex);
-
- /**
- This function returns graph from wrapper member graph.
- @pre
- -# subgraph != NULL
- @param none
- @return reference to subgraph
- @throw none
- */
- SubGraph& getGraph();
-
- //vertex order
- //QString sId;
- /**
- This function returns vertex id of provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return id of provided vertex
- @throw none
- */
- QString getVertexId(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns vertex id of provided vertex from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return id of provided vertex
- @throw none
- */
- QString getVertexId(VertexDescriptor& vertex);
-
- /**
- This function returns height for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return height of vertex
- @throw none
- */
- int getVertexHeight(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns height for provided vertex from vertex property of wrapper member graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @return height of vertex
- @throw none
- */
- int getVertexHeight(VertexDescriptor& vertex);
-
- //int iWidth;
- /**
- This function returns width for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return width of vertex
- @throw none
- */
- int getVertexWidth(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns width for provided vertex from vertex property of wrapper member graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @return width of vertex
- @throw none
- */
- int getVertexWidth(VertexDescriptor& vertex);
-
- /**
- This function returns left x coordinate for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return left coordinate X of vertex
- @throw none
- */
- int getVertexLeftCoordX(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns left x coordinate for provided vertex from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return left coordinate X of vertex
- @throw none
- */
- int getVertexLeftCoordX(VertexDescriptor& vertex);
-
- //int iCoord_Y;
- /**
- This function returns left y coordinate for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return left coordinate Y of vertex
- @throw none
- */
- int getVertexLeftCoordY(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns left y coordinate for provided vertex from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return left coordinate of vertex
- @throw none
- */
- int getVertexLeftCoordY(VertexDescriptor& vertex);
-
- /**
- This function returns center x coordinate for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return center coordinate x of vertex
- @throw none
- */
- int getVertexCenterCoordX(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns center x coordinate for provided vertex from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return center x coordinate of vertex
- @throw none
- */
- int getVertexCenterCoordX(VertexDescriptor& vertex);
-
- /**
- This function returns center y coordinate for provided vertex from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return center coordinate y of vertex
- @throw none
- */
- int getVertexCenterCoordY(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns center y coordinate for provided vertex from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return center y coordinate of vertex
- @throw none
- */
- int getVertexCenterCoordY(VertexDescriptor& vertex);
-
- /**
- This function returns whether provided vertex is invisible or not from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return true or false whether the vertex is visible or not
- @throw none
- */
- bool getVertexIsInvisible(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns whether provided vertex is invisible or not from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return true or false whether the vertex is visible or not
- @throw none
- */
- bool getVertexIsInvisible(VertexDescriptor& vertex);
-
- /**
- This function returns whether provided vertex is expandable or not from vertex property of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return true or false whether the vertex is expandable or not
- @throw none
- */
- bool getVertexExpandable(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns whether provided vertex is expandable or not from vertex property of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return true or false whether the vertex is visible or not
- @throw none
- */
- bool getVertexExpandable(VertexDescriptor& vertex);
-
- /**
- This function returns treewidth of vertex.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return treewidth in integer
- @throw none
- */
- int getVertexTreeWidth(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns treewidth of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return treewidth in interger
- @throw none
- */
- int getVertexTreeWidth(VertexDescriptor& vertex);
-
- /**
- This function returns distance of vertex from root saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return distance from root in integer
- @throw none
- */
- int getVertexDistanceFromRoot(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns distance from root of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return distance from root in interger
- @throw none
- */
- int getVertexDistanceFromRoot(VertexDescriptor& vertex);
-
- /**
- This function returns rank of vertex saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return rank of vertex in integer
- @throw none
- */
- int getVertexRank(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns rank of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return rank of vertex in interger
- @throw none
- */
- int getVertexRank(VertexDescriptor& vertex);
-
- /**
- This function returns horizontal position of vertex saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return horizontal position of vertex in integer
- @throw none
- */
- int getVertexHorizontalPosition(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns horizontal position of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return horizontal position of vertex in interger
- @throw none
- */
- int getVertexHorizontalPosition(VertexDescriptor &vertex);
-
- /**
- This function returns barry center of vertex saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return barry center of vertex in integer
- @throw none
- */
- double getVertexBarryCenter(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns barry center of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return barry center of vertex in interger
- @throw none
- */
- double getVertexBarryCenter(VertexDescriptor &vertex);
-
- //int iTreeLeftX;
- int getVertexTreeLeftX(VertexDescriptor& vertex, SubGraph& subgraph);
- int getVertexTreeLeftX(VertexDescriptor& vertex);
-
- /**
- This function returns type of vertex saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return type of vertex
- @throw none
- */
- LayoutEnum::NodeType getVertexType(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns type of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return type of vertex
- @throw none
- */
- LayoutEnum::NodeType getVertexType(VertexDescriptor& vertex);
-
- bool getVertexVisited(VertexDescriptor& vertex, SubGraph& subgraph);
- bool getVertexVisited(VertexDescriptor& vertex);
-
- /**
- This function returns topological order of vertex saved in the vertexproperty of provided graph.
- @pre
- -# subgraph != NULL
- @param vertex
- reference to vertex
- @param subgraph
- reference to subgraph
- @return topological order of vertex
- @throw none
- */
- int getVertexTopologicalOrder(VertexDescriptor& vertex, SubGraph& subgraph);
- /**
- This function returns topological order of vertex of wrapper member graph.
- @pre none
- @param vertex
- reference to vertex
- @return topological order of vertex
- @throw none
- */
- int getVertexTopologicalOrder(VertexDescriptor& vertex);
-
- /**
- This function returns id of edge saved in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @return id of edge
- @throw none
- */
- QString getEdgeId(EdgeDescriptor& edge, SubGraph& subgraph);
- /**
- This function returns id of edge of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @return id of edge
- @throw none
- */
- QString getEdgeId(EdgeDescriptor& edge);
-
- std::size_t getEdgeIndex(EdgeDescriptor& edge, SubGraph& subgraph);
- std::size_t getEdgeIndex(EdgeDescriptor& edge);
-
- /**
- This function returns type of edge direction saved in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @return type of edge direction
- @throw none
- */
- bool getEdgeBidirectional(EdgeDescriptor& edge, SubGraph& subgraph);
- /**
- This function returns type of edge direction of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @return type of edge direction
- @throw none
- */
- bool getEdgeBidirectional(EdgeDescriptor& edge);
-
- /**
- This function returns type of edge invisible saved in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @return type of edge invisible
- @throw none
- */
- bool getEdgeIsInvisible(EdgeDescriptor& edge, SubGraph& subgraph);
- /**
- This function returns type of edge invisible of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @return type of edge invisible
- @throw none
- */
- bool getEdgeIsInvisible(EdgeDescriptor& edge);
-
- bool getEdgeVisited(EdgeDescriptor& edge, SubGraph& subgraph);
- bool getEdgeVisited(EdgeDescriptor& edge);
-
- /**
- This function returns type of edge reversed saved in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @return type of edge reversed
- @throw none
- */
- bool getEdgeReversed(EdgeDescriptor& edge, SubGraph& subgraph);
- /**
- This function returns type of edge reversed of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @return type of edge reversed
- @throw none
- */
- bool getEdgeReversed(EdgeDescriptor& edge);
-
- /**
- This function returns if edge is conflicted/crossing with another edge saved in the edge property of provided graph.
- @pre
- -# subgraph != NULL
- @param edge
- reference to edge
- @param subgraph
- reference to subgraph
- @return if edge is conflicted/crossing with another edge or not
- @throw none
- */
- bool getEdgeIsConflicted(EdgeDescriptor& edge, SubGraph& subgraph);
- /**
- This function returns if edge is conflicted/crossing with another edge of wrapper member graph.
- @pre none
- @param edge
- reference to edge
- @return if edge is conflicted/crossing with another edge or not
- @throw none
- */
- bool getEdgeIsConflicted(EdgeDescriptor& edge);
-
- LayoutEnum::EdgeType getEdgeType(EdgeDescriptor eEdge , SubGraph &gGraph);
- LayoutEnum::EdgeType getEdgeType(EdgeDescriptor eEdge);
-
- /**
- This function iterates the bend points list of the edge.
- * @brief edgeBendPointsIter
- *
- * @param eEdge
- * graph should contain this edge.
- *
- * @param gSubgraph
- * -# gSubgraph != NULL
- *
- * @return none
- *
- * @throw none
- */
- std::pair<IteratorQVectorBendPoints, IteratorQVectorBendPoints> edgeBendPointsIter(EdgeDescriptor& eEdge, SubGraph& gSubgraph);
-
- /**
- This function returns id of a provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to graph
- *
- * @return none
- *
- * @throw none
- */
- QString getGraphId(SubGraph& gSubgraph);
- /**
- This function returns id of a wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return id of graph
- *
- * @throw none
- */
- QString getGraphId();
-
- //Index of vertex reperesenting this subgraph - Dummy Node
- //size_t iDummyNodeIndex;
- /**
- This function returns index of this provided graph.
- *
- * @pre
- * -# gSubgraph != NULL
- * -# sId should not be empty
- *
- * @param gSubgraph
- * reference to graph
- *
- * @return index for this graph's node
- *
- * @throw none
- */
- std::size_t getGraphDummyNodeIndex(SubGraph& gSubgraph);
- /**
- This function returns index of this wrapper member graph.
- *
- * @pre none
- *
- * @param none
- *
- * @return index for this graph's node
- *
- * @throw none
- */
- std::size_t getGraphDummyNodeIndex();
-
- /**
- This function returns left x coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return graph's x left coordinate
- *
- * @throw none
- */
- int getGraphLeftTopCoordX(SubGraph& gSubgraph);
- /**
- This function returns left x coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return graph's left x coordinate
- *
- * @throw none
- */
- int getGraphLeftTopCoordX();
-
- /**
- This function returns top y coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return graph's y top coordinate
- *
- * @throw none
- */
- int getGraphLeftTopCoordY(SubGraph& gSubgraph);
- /**
- This function returns top y coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return graph's top y coordinate
- *
- * @throw none
- */
- int getGraphLeftTopCoordY();
-
- /**
- This function returns center coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return graph's center x coordinate
- *
- * @throw none
- */
- int getGraphCenterCoordX(SubGraph& gSubgraph);
- /**
- This function returns center x coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return graph's center x coordinate
- *
- * @throw none
- */
- int getGraphCenterCoordX();
-
- /**
- This function returns center coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return graph's center y coordinate
- *
- * @throw none
- */
- int getGraphCenterCoordY(SubGraph& gSubgraph);
- /**
- This function returns center y coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return graph's center y coordinate
- *
- * @throw none
- */
- int getGraphCenterCoordY();
-
- /**
- This function returns radius of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return radius of graph
- *
- * @throw none
- */
- double getGraphRadius(SubGraph& gSubgraph);
- /**
- This function returns radius of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return radius of graph
- *
- * @throw none
- */
- double getGraphRadius();
-
- /**
- This function returns height of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return height of graph
- *
- * @throw none
- */
- int getGraphHeight(SubGraph& gSubgraph);
- /**
- This function returns height from wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return height of graph
- *
- * @throw none
- */
- int getGraphHeight();
-
- /**
- This function returns width of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return width of graph
- *
- * @throw none
- */
- int getGraphWidth(SubGraph& gSubgraph);
- /**
- This function returns width from wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return width of graph
- *
- * @throw none
- */
- int getGraphWidth();
-
- int getGraphCoordX(SubGraph& gSubgraph);
- int getGraphCoordX();
-
- int getGraphCoordY(SubGraph& gSubgraph);
- int getGraphCoordY();
-
- /**
- This function returns distance between centroid of graph and center x coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return distance between centroid of graph and center x coordinate
- *
- * @throw none
- */
- int getGraphDistanceBetweenCentoidAndCenterCoordX(SubGraph& gSubgraph);
- /**
- This function returns distance between centroid of graph and center x coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return distance between centroid of graph and center x coordinate
- *
- * @throw none
- */
- int getGraphDistanceBetweenCentoidAndCenterCoordX();
-
- /**
- This function returns distance between y coordinate centroid of graph and center y coordinate of provided graph
- *
- * @pre
- * -# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return distance between y coorcinate centroid of graph and center y coordinate
- *
- * @throw none
- */
- int getGraphDistanceBetweenCentoidAndCenterCoordY(SubGraph& gSubgraph);
- /**
- This function returns distance between y coordinate centroid of graph and center y coordinate of wrapper member graph
- *
- * @pre none
- *
- * @param none
- *
- * @return distance between centroid of graph and center y coordinate
- *
- * @throw none
- */
- int getGraphDistanceBetweenCentoidAndCenterCoordY();
-
- /**
- This function checks whether provided vertex is own vertex of provided graph.
- *
- * @pre none
- *
- * @param vVertex
- * value of the vertex
- *
- * @return none
- *
- * @throw none
- */
- bool isOwnVertex(VertexDescriptor vVertex , SubGraph &gGraph);
- /**
- This function iterates the ownvertex list of a provided graph
- *
- * @pre none
- *
- * @param gGraph
- * reference to graph
- *
- * @return pair of iterators of vector of int type
- *
- * @throw none
- */
- std::pair<IteratorQVectorUInt , IteratorQVectorUInt> ownVerticesIter(SubGraph &gGraph);
- /**
- This function returns the total number of own vertices of the provided graph.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @return number of own vertices
- *
- * @throw none
- */
- int getCountOfOwnVertices(SubGraph &gGraph);
- //Upper Border Vertex
- //std::size_t vUpperBorderVertex;
- //int iCoordX;
- /**
- This function returns the value of the upper border vertex with respect to provided graph.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @return value of the upper border vertex
- *
- * @throw none
- */
- std::size_t getGraphUpperBorderVertex(SubGraph& gGraph);
- /**
- This function returns the value of the upper border vertex with respect to wrapper member graph.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @return value of the upper border vertex
- *
- * @throw none
- */
- std::size_t getGraphUpperBorderVertex();
-
- /**
- This function returns the value of the lower border vertex with respect to provided graph.
- *
- * @pre
- * -# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @return value of the lower border vertex
- *
- * @throw none
- */
- std::size_t getGraphLowerBorderVertex(SubGraph& gGraph);
- /**
- This function returns the value of the lower border vertex with respect to wrapper member graph.
- *
- * @pre
- *-# gGraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @return value of the lower border vertex
- *
- * @throw none
- */
- std::size_t getGraphLowerBorderVertex();
-
- /**
- This function returns the source vertex of provided edge
- *
- * @pre
- * -# subgraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @param edge
- * edge from the graph
- *
- * @return none
- *
- * @throw none
- */
- VertexDescriptor getEdgeTarget(EdgeDescriptor edge , SubGraph& subgraph);
- /**
- This function returns the target vertex of provided egde from wrapper member graph.
- *
- * @pre none
- *
- *@param edge
- * value of edge from wrapper member graph
- *
- * @return none
- *
- * @throw none
- */
- VertexDescriptor getEdgeTarget(EdgeDescriptor edge);
- /**
- This function returns the target vertex of provided edge
- *
- * @pre
- *-# subgraph !- NULL
- *
- * @param gGraph
- * reference to graph
- *
- * @param edge
- * edge from the graph
- *
- * @return none
- *
- * @throw none
- */
- VertexDescriptor getEdgeSource(EdgeDescriptor edge , SubGraph& subgraph);
- /**
- This function returns the source vertex of provided egde.
- *
- * @pre none
- *
- *@param edge
- * value of edge from wrapper member graph
- *
- * @return none
- *
- * @throw none
- */
- VertexDescriptor getEdgeSource(EdgeDescriptor edge);
-
- /**
- This function returns the vertices in the pair of vertex iterators form of wrapper member graph.
- *
- * @pre none
- *
- * @return none
- *
- * @throw none
- */
- VertexIterPair getVertices();
- /**
- This function returns the vertices in the pair of vertex iterators form of provided graph.
- *
- * @pre
- * -# subgraph != NULL
- *
- * @param subgraph
- * reference to subgraph
- *
- * @return pair of vertex iterators
- *
- * @throw none
- */
- VertexIterPair getVertices(SubGraph& subgraph);
- //Children Iterator
- //for m_Graph
- /**
- This function returns pair of children iteartors for getting children of wrapper member graph.
- *
- * @pre none
- *
- * @param none
- *
- * @return pair of children iterators
- *
- * @throw none
- */
- ChildrenIterPair getChildren();
- /**
- This function returns pair of children iteartors for getting children of provided graph.
- *
- * @pre none
- *
- * @param subgraph
- * reference to graph
- *
- * @return pair of children iterators
- *
- * @throw none
- */
- ChildrenIterPair getChildren(SubGraph& subgraph);
- //in_edges iterator
- /**
- This function returns inedges coming at the vertex provided from wrapper member graph.
- *
- * @pre none
- *
- * @param vertex
- * reference to vertex
- *
- * @return pair of inedge iterators
- *
- * @throw none
- */
- InEdgeIterPair getInEdges(VertexDescriptor &vertex);
- /**
- This function returns inedges coming at the vertex provided from provided graph.
- *
- * @pre none
- *
- * @param vertex
- * reference to vertex
- *
- * @param subgraph
- * reference tosubgraph
- *
- * @return pair of inedge iterators
- *
- * @throw none
- */
- InEdgeIterPair getInEdges(VertexDescriptor &vertex,SubGraph& subgraph);
- //out_edges iterator
- /**
- This function returns outedges coming at the vertex provided from wrapper member graph.
- *
- * @pre none
- *
- * @param vertex
- * reference to vertex
- *
- * @return pair of outedges iterators
- *
- * @throw none
- */
- OutEdgeIterPair getOutEdges(VertexDescriptor &vertex);
- /**
- This function returns outedges coming at the vertex provided from provided graph.
- *
- * @pre none
- *
- * @param vertex
- * reference to vertex
- *
- * @param subgraph
- * reference tosubgraph
- *
- * @return pair of outedges iterators
- *
- * @throw none
- */
- OutEdgeIterPair getOutEdges(VertexDescriptor &vertex,SubGraph& subgraph);
- /**
- This function returns children subgraphs of provided graph.
- *
- * @pre
- *-# gSubgraph != NULL
- *
- * @param gSubgraph
- * reference to subgraph
- *
- * @return none
- *
- * @throw none
- */
- void getChildrenVector(SubGraph &gSubgraph, VectorSubgraphRefs &vecChildSubgraphs);
-
- /**
- This function returns map of vertices ordered by their 'order' property value.
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param subgraph
- * reference to subgraph
- * @param mapVertexOrder
- * reference to vertex order map.
- *
- * @return order vertex map
- *
- * @throw none
- */
- template <typename MapVertexOrder>
- MapOrderVertex getMapOrderedVertices(SubGraph& subgraph,MapVertexOrder& mapVertexOrder)
- {
- //To Do: assert for mapVertexOrder
- MapOrderVertex mapOrderVertex;
- //iterate all vertices
- std::size_t order;
- BGL_FORALL_VERTICES(vertex, subgraph , SubGraph)
- {
- order = mapVertexOrder[vertex];
- // //cout<<"order: "<<order <<" - "<<PGL_VERTEX_INDEX(vertex , subgraph)<<endl;
- //add elements (order,vertex)
- mapOrderVertex.insert(order , vertex);
- }
- return mapOrderVertex;
- }
- /**
- This function checks the provided order is valid or not.
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param order
- * order value
- *
- * @return valid order or not
- *
- * @throw none
- */
- bool isValidOrder(std::size_t order);
- /**
- This function returns the order of provided vertex.
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param vertex
- * reference to vertex
- *
- * @return order value
- *
- * @throw none
- */
- int getVertexOrder(VertexDescriptor& vertex , SubGraph& subgraph);
-
- /**
- This function checks whether the shifting of orders of vertices is valid or not.
- *
- * @pre
- *-# subgraph != NULL
- *
- * @param iOrderSource
- * value of order to be shifted
- *
- * @param iShiftBy
- * shift by value
- *
- * @param mapOrderVertex
- * reference to order vertex map
- *
- * @param enDirection
- * direction of shifting
- *
- * @return whether valid shift or not
- *
- * @throw none
- */
- bool isValidShift(std::size_t iOrderSource,MapOrderVertex& mapOrderVertex,
- int iShiftBy, ShiftDirection enDirection);
-
- /**
- This function returns souce vertex x coordinate of provided edge of provided graph.
- @pre
- -# subGraph != NULL
- @param eEdge
- edge value
- @param subGraph
- reference to input graph.
- @return x coordinate of source vertex of edge
- @throw none
- */
- int getEdgeSourceX(EdgeDescriptor eEdge, SubGraph &subGraph);
- /**
- This function returns souce vertex y coordinate of provided edge of provided graph.
- @pre
- -# subGraph != NULL
- @param eEdge
- edge value
- @param subGraph
- reference to input graph.
- @return y coordinate of source vertex of edge
- @throw none
- */
- int getEdgeSourceY(EdgeDescriptor eEdge, SubGraph &subGraph);
- /**
- This function returns target vertex x coordinate of provided edge of provided graph.
- @pre
- -# subGraph != NULL
- @param eEdge
- edge value
- @param subGraph
- reference to input graph.
- @return x coordinate of source vertex of edge
- @throw none
- */
- int getEdgeTargetX(EdgeDescriptor eEdge, SubGraph &subGraph);
- /**
- This function returns target vertex y coordinate of provided edge of provided graph.
- @pre
- -# subGraph != NULL
- @param eEdge
- edge value
- @param subGraph
- reference to input graph.
- @return y coordinate of source vertex of edge
- @throw none
- */
- int getEdgeTargetY(EdgeDescriptor eEdge, SubGraph &subGraph);
- /**
- This function returns count of crossings f edges.
- @pre
- -# subGraph != NULL
- @param gGraph
- reference to input graph.
- @return count of crossings of edges from graph
- @throw none
- */
- int getEdgeCrossingCount(SubGraph & gGraph);
-
- /**
- This function calculates the minimum and maximun numbered vertices from the graph.
- @pre
- -# gSubgraph != NULL
- @param gSubgraph
- reference to graph.
- @param iMaxVertex
- value for maximum ordered vertex.
- @param iMinVertex
- value for minimum ordered vertex.
- @return none
- @throw none
- */
- void getMinMaxVertexOrder(SubGraph& gSubgraph, int& iMinVertexOrder, int& iMaxVertexOrder);
- /**
- This function provides the lower index vertex and higher index vertex.
- @pre
- -# gSubgraph != NULL
- @param gSubgraph
- reference to graph
- @return none
- @throw none
- */
- void getMinMaxVertices(SubGraph& gSubgraph, VertexDescriptor& vMinVertex, VertexDescriptor& vMaxVertex);
-
- //Convert Boost Edge to QString
- QString edgeToQString(EdgeDescriptor eEdge, SubGraph gGraph);
-
- int getVertXDisp(VertexDescriptor verDis,SubGraph &l_graph );
- int getVertYDisp(VertexDescriptor verDis,SubGraph &l_graph);
-
- bool getIsVertexLocked(VertexDescriptor verDis, SubGraph &l_graph);
-
- int getGraphClusterID(SubGraph& gSubgraph);
- int getVertexClusterID(VertexDescriptor vertex, SubGraph& subgraph);
- bool getIsVirtualNode(VertexDescriptor vertex, SubGraph& subgraph);
-
- int getClusterXDisplacement(SubGraph& gSubgraph);
-
- int getClusterYDisplacement(SubGraph& gSubgraph);
- //@}
- private:
- //initialize vertex order for newly inserted vertex
- /**
- This function initializes the new inserted vertex order values to its index from provided graph.
- @pre
- -# gSubgraph != NULL
- @param vertex
- reference to vertex
- @param gSubgraph
- reference to graph.
- @return none
- @throw none
- */
- void initVertexOrderValue(VertexDescriptor& vertex,SubGraph& subgraph);
- //***shift vertex order***
- /**
- This function shifts the vertices by its orderin the order vertex map
- @pre
- -# iShiftBy != 0
- -# mapOrderVertex.contains(iOrderSource)
- @param iOrderSource
- value of order in the map
- @param mapOrerVertex
- order to vertex map
- @param mapVertexOrder
- vertex to order map
- @param iShiftBy
- integer value to shift position in map
- @param enDirection
- value for direction left or right
- @return none
- @throw none
- */
- template <typename MapVertexOrder>
- void shiftVertexByOrder(std::size_t iOrderSource, MapOrderVertex& mapOrderVertex,
- MapVertexOrder& mapVertexOrder, int iShiftBy,
- ShiftDirection enDirection)
- {
- //Check iShift>0
- LAYOUT_ASSERT(iShiftBy>0,LayoutException(__FUNCTION__
- , LayoutExceptionEnum::INVALID_PARAMETER
- , "must be greater than zero"
- , "iShiftBy"));
- LAYOUT_ASSERT(mapOrderVertex.contains(iOrderSource),LayoutException(__FUNCTION__
- , LayoutExceptionEnum::NOT_FOUND_IN_CONTAINER
- , "mapOrderVertex"
- , "iOrderSource"));
- //Check iOrder1 is valid key in mapOrderVertex
- if(mapOrderVertex.contains(iOrderSource))
- {
- //Check shifting is valid or not
- bool isValidShiftValue = isValidShift(iOrderSource,mapOrderVertex
- ,iShiftBy,enDirection);
- if(isValidShiftValue)
- {
- //shift in enDirection by 1
- MapOrderVertex::iterator iterMapOrderVertex;
- iterMapOrderVertex = mapOrderVertex.find(iOrderSource);
- if(enDirection==LeftDirection)
- {
- iterMapOrderVertex--;
- }
- else if(enDirection==RightDirection)
- {
- iterMapOrderVertex++;
- }
- std::size_t iOrderDestination = iterMapOrderVertex.key();
- //Swapping the source with destinition
- swapVertexOrderByOrder(iOrderSource,iOrderDestination,
- mapOrderVertex,mapVertexOrder);
- //call shifting again pass: iShiftBy reduced by 1
- iShiftBy--;
- if(iShiftBy>0)
- {
- //Now iOrderDestinition is the iOrderSource
- shiftVertexByOrder(iOrderDestination,mapOrderVertex,mapVertexOrder,
- iShiftBy,enDirection);
- }
- }
- else
- {
- cout<<directionEnumString(enDirection).toStdString();
- //cout<<" shift not possible. Invalid shift value:"<<iShiftBy<<"."<<endl;
- }
- }
- else
- {
- //Warning iOrderSource is not a valid order value in map 'mapOrderVertex'
- cout << directionEnumString(enDirection).toStdString();
- //cout<< " shift not possible. Invalid order: "<<iOrderSource<<"."<<endl;
- }
- }
- //Return string for enum ShiftDirection
- /**
- This function returns the direction for the shifting of order.
- @pre
- -# enDirection should be valid direction
- @param enDirection
- value for the direction.
- @return direction in string
- @throw none
- */
- QString directionEnumString(ShiftDirection enDirection);
- };
- #endif // BOOSTGRAPHWRAPPER_H
|