pptxjs.js 546 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194
  1. /**
  2. * pptxjs.js
  3. * Ver. : 1.10.4
  4. * last update: 14/05/2020
  5. * Author: meshesha , https://github.com/meshesha
  6. * LICENSE: MIT
  7. * url:https://meshesha.github.io/pptxjs
  8. * New:
  9. * - fixed security issue
  10. * - new divs2slides (v.1.3.2)
  11. * - fixed div width issue
  12. */
  13. (function ($) {
  14. $.fn.pptxToHtml = function (options) {
  15. //var worker;
  16. var $result = $(this);
  17. var divId = $result.attr("id");
  18. var isDone = false;
  19. var MsgQueue = new Array();
  20. var themeContent = null;
  21. var slideLayoutClrOvride = "";
  22. var chartID = 0;
  23. var _order = 1;
  24. var titleFontSize = 42;
  25. var bodyFontSize = 20;
  26. var otherFontSize = 16;
  27. var isSlideMode = false;
  28. var styleTable = {};
  29. var settings = $.extend(true, {
  30. // These are the defaults.
  31. pptxFileUrl: "",
  32. fileInputId: "",
  33. slidesScale: "", //Change Slides scale by percent
  34. slideMode: false, /** true,false*/
  35. keyBoardShortCut: false, /** true,false ,condition: slideMode: true XXXXX - need to remove - this is doublcated*/
  36. mediaProcess: true, /** true,false: if true then process video and audio files */
  37. jsZipV2: false,
  38. slideModeConfig: {
  39. first: 1,
  40. nav: true, /** true,false : show or not nav buttons*/
  41. navTxtColor: "black", /** color */
  42. keyBoardShortCut: true, /** true,false ,condition: */
  43. showSlideNum: true, /** true,false */
  44. showTotalSlideNum: true, /** true,false */
  45. autoSlide: true, /** false or seconds , F8 to active ,keyBoardShortCut: true */
  46. randomAutoSlide: false, /** true,false ,autoSlide:true */
  47. loop: false, /** true,false */
  48. background: false, /** false or color*/
  49. transition: "default", /** transition type: "slid","fade","default","random" , to show transition efects :transitionTime > 0.5 */
  50. transitionTime: 1 /** transition time between slides in seconds */
  51. }
  52. }, options);
  53. //
  54. $("#" + divId).prepend(
  55. $("<span></span>").attr({
  56. "class": "slides-loadnig-msg",
  57. "style": "display:block; color:#e0e0e0; font-size:20px; width:50%; margin:0 auto;"
  58. }).html("Loading...")
  59. );
  60. if (settings.slideMode) {
  61. if (!jQuery().divs2slides) {
  62. jQuery.getScript('./js/divs2slides.js');
  63. }
  64. }
  65. if (settings.jsZipV2 !== false) {
  66. jQuery.getScript(settings.jsZipV2);
  67. if (localStorage.getItem('isPPTXjsReLoaded') !== 'yes') {
  68. localStorage.setItem('isPPTXjsReLoaded', 'yes');
  69. location.reload();
  70. }
  71. }
  72. if (settings.keyBoardShortCut) {
  73. $(document).bind("keydown", function (event) {
  74. event.preventDefault();
  75. var key = event.keyCode;
  76. console.log(key, isDone)
  77. if (key == 116 && !isSlideMode) { //F5
  78. isSlideMode = true;
  79. $("#" + divId + " .slide").hide();
  80. setTimeout(function () {
  81. //if(isDone){
  82. var slideConf = settings.slideModeConfig;
  83. //console.log(key,isDone,slideConf)
  84. $(".slides-loadnig-msg").remove()
  85. $("#" + divId).divs2slides({
  86. first: slideConf.first,
  87. nav: slideConf.nav,
  88. showPlayPauseBtn: settings.showPlayPauseBtn,
  89. navTxtColor: slideConf.navTxtColor,
  90. keyBoardShortCut: slideConf.keyBoardShortCut,
  91. showSlideNum: slideConf.showSlideNum,
  92. showTotalSlideNum: slideConf.showTotalSlideNum,
  93. autoSlide: slideConf.autoSlide,
  94. randomAutoSlide: slideConf.randomAutoSlide,
  95. loop: slideConf.loop,
  96. background: slideConf.background,
  97. transition: slideConf.transition,
  98. transitionTime: slideConf.transitionTime
  99. });
  100. //}
  101. var sScale = settings.slidesScale;
  102. var trnsfrmScl = "";
  103. if (sScale != "") {
  104. var numsScale = parseInt(sScale);
  105. var scaleVal = numsScale / 100;
  106. trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top';
  107. }
  108. var numOfSlides = 1;
  109. var sScaleVal = (sScale != "") ? scaleVal : 1;
  110. var slidesHeight = $("#" + divId + " .slide").height();
  111. //console.log(slidesHeight);
  112. $("#all_slides_warpper").attr({
  113. style: trnsfrmScl /*+ ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px"*/
  114. })
  115. }, 1500);
  116. } else if (key == 116 && isSlideMode) {
  117. //exit slide mode - TODO
  118. }
  119. });
  120. }
  121. if (settings.pptxFileUrl != "") {
  122. JSZipUtils.getBinaryContent(settings.pptxFileUrl, function (err, content) {
  123. var blob = new Blob([content]);
  124. var file_name = settings.pptxFileUrl;
  125. var fArry = file_name.split(".");
  126. fArry.pop();
  127. blob.name = fArry[0];
  128. FileReaderJS.setupBlob(blob, {
  129. readAsDefault: "ArrayBuffer",
  130. on: {
  131. load: function (e, file) {
  132. //console.log(e.target.result);
  133. convertToHtml(e.target.result);
  134. }
  135. }
  136. });
  137. });
  138. } else {
  139. $(".slides-loadnig-msg").remove()
  140. }
  141. if (settings.fileInputId != "") {
  142. $("#" + settings.fileInputId).on("change", function (evt) {
  143. $result.html("");
  144. var file = evt.target.files[0];
  145. // var fileName = file[0].name;
  146. //var fileSize = file[0].size;
  147. var fileType = file.type;
  148. if (fileType == "application/vnd.openxmlformats-officedocument.presentationml.presentation") {
  149. FileReaderJS.setupBlob(file, {
  150. readAsDefault: "ArrayBuffer",
  151. on: {
  152. load: function (e, file) {
  153. //console.log(e.target.result);
  154. convertToHtml(e.target.result);
  155. }
  156. }
  157. });
  158. } else {
  159. alert("This is not pptx file");
  160. }
  161. });
  162. }
  163. function convertToHtml(file) {
  164. //'use strict';
  165. var zip = new JSZip(), s;
  166. //if (typeof file === 'string') { // Load
  167. zip = zip.load(file); //zip.load(file, { base64: true });
  168. var rslt_ary = processPPTX(zip);
  169. //s = readXmlFile(zip, 'ppt/tableStyles.xml');
  170. var slidesHeight = $("#" + divId + " .slide").height();
  171. for (var i = 0; i < rslt_ary.length; i++) {
  172. switch (rslt_ary[i]["type"]) {
  173. case "slide":
  174. $result.append(rslt_ary[i]["data"]);
  175. break;
  176. case "pptx-thumb":
  177. //$("#pptx-thumb").attr("src", "data:image/jpeg;base64," +rslt_ary[i]["data"]);
  178. break;
  179. case "slideSize":
  180. /*
  181. var slideWidth = rslt_ary[i]["data"].width;
  182. var slideHeight = rslt_ary[i]["data"].height;
  183. $("#"+divId).css({
  184. 'width': slideWidth + 80,
  185. 'height': slideHeight + 60
  186. });
  187. */
  188. break;
  189. case "globalCSS":
  190. $result.append("<style>" + rslt_ary[i]["data"] + "</style>");
  191. break;
  192. case "ExecutionTime":
  193. // $result.prepend("<div id='presentation_toolbar'></div>");
  194. processMsgQueue(MsgQueue);
  195. setNumericBullets($(".block"));
  196. setNumericBullets($("table td"));
  197. isDone = true;
  198. if (settings.slideMode && !isSlideMode) {
  199. isSlideMode = true;
  200. $("#" + divId + " .slide").hide();
  201. setTimeout(function () {
  202. var slideConf = settings.slideModeConfig;
  203. $(".slides-loadnig-msg").remove();
  204. $("#" + divId).divs2slides({
  205. first: slideConf.first,
  206. nav: slideConf.nav,
  207. showPlayPauseBtn: settings.showPlayPauseBtn,
  208. navTxtColor: slideConf.navTxtColor,
  209. keyBoardShortCut: slideConf.keyBoardShortCut,
  210. showSlideNum: slideConf.showSlideNum,
  211. showTotalSlideNum: slideConf.showTotalSlideNum,
  212. autoSlide: slideConf.autoSlide,
  213. randomAutoSlide: slideConf.randomAutoSlide,
  214. loop: slideConf.loop,
  215. background: slideConf.background,
  216. transition: slideConf.transition,
  217. transitionTime: slideConf.transitionTime
  218. });
  219. var sScale = settings.slidesScale;
  220. var trnsfrmScl = "";
  221. if (sScale != "") {
  222. var numsScale = parseInt(sScale);
  223. var scaleVal = numsScale / 100;
  224. trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top';
  225. }
  226. var numOfSlides = 1;
  227. var sScaleVal = (sScale != "") ? scaleVal : 1;
  228. //console.log(slidesHeight);
  229. $("#all_slides_warpper").attr({
  230. style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px"
  231. })
  232. }, 1500);
  233. } else if (!settings.slideMode) {
  234. $(".slides-loadnig-msg").remove();
  235. }
  236. break;
  237. default:
  238. }
  239. }
  240. if (!settings.slideMode) {
  241. if (document.getElementById("all_slides_warpper") === null) {
  242. $("#" + divId + " .slide").wrapAll("<div id='all_slides_warpper'></div>");
  243. }
  244. }
  245. var sScale = settings.slidesScale;
  246. var trnsfrmScl = "";
  247. if (sScale != "") {
  248. var numsScale = parseInt(sScale);
  249. var scaleVal = numsScale / 100;
  250. trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top';
  251. }
  252. var slidesHeight = $("#" + divId + " .slide").height();
  253. var numOfSlides = $("#" + divId + " .slide").length;
  254. var sScaleVal = (sScale != "") ? scaleVal : 1;
  255. //console.log("slidesHeight: " + slidesHeight + "\nnumOfSlides: " + numOfSlides + "\nScale: " + sScaleVal)
  256. $("#all_slides_warpper").attr({
  257. style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px"
  258. })
  259. //}
  260. }
  261. function processPPTX(zip) {
  262. var post_ary = [];
  263. var dateBefore = new Date();
  264. if (zip.file("docProps/thumbnail.jpeg") !== null) {
  265. var pptxThumbImg = base64ArrayBuffer(zip.file("docProps/thumbnail.jpeg").asArrayBuffer());
  266. post_ary.push({
  267. "type": "pptx-thumb",
  268. "data": pptxThumbImg
  269. });
  270. }
  271. var filesInfo = getContentTypes(zip);
  272. var slideSize = getSlideSize(zip);
  273. themeContent = loadTheme(zip);
  274. tableStyles = readXmlFile(zip, "ppt/tableStyles.xml");
  275. post_ary.push({
  276. "type": "slideSize",
  277. "data": slideSize
  278. });
  279. var numOfSlides = filesInfo["slides"].length;
  280. for (var i = 0; i < numOfSlides; i++) {
  281. var filename = filesInfo["slides"][i];
  282. var slideHtml = processSingleSlide(zip, filename, i, slideSize);
  283. post_ary.push({
  284. "type": "slide",
  285. "data": slideHtml
  286. });
  287. post_ary.push({
  288. "type": "progress-update",
  289. "data": (i + 1) * 100 / numOfSlides
  290. });
  291. }
  292. post_ary.push({
  293. "type": "globalCSS",
  294. "data": genGlobalCSS()
  295. });
  296. var dateAfter = new Date();
  297. post_ary.push({
  298. "type": "ExecutionTime",
  299. "data": dateAfter - dateBefore
  300. });
  301. return post_ary;
  302. }
  303. function readXmlFile(zip, filename) {
  304. var xmlData = tXml(zip.file(filename).asText(), { simplify: 1 });
  305. if (xmlData["?xml"] !== undefined) {
  306. return xmlData["?xml"];
  307. } else {
  308. return xmlData;
  309. }
  310. }
  311. function getContentTypes(zip) {
  312. var ContentTypesJson = readXmlFile(zip, "[Content_Types].xml");
  313. var subObj = ContentTypesJson["Types"]["Override"];
  314. var slidesLocArray = [];
  315. var slideLayoutsLocArray = [];
  316. for (var i = 0; i < subObj.length; i++) {
  317. switch (subObj[i]["attrs"]["ContentType"]) {
  318. case "application/vnd.openxmlformats-officedocument.presentationml.slide+xml":
  319. slidesLocArray.push(subObj[i]["attrs"]["PartName"].substr(1));
  320. break;
  321. case "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml":
  322. slideLayoutsLocArray.push(subObj[i]["attrs"]["PartName"].substr(1));
  323. break;
  324. default:
  325. }
  326. }
  327. return {
  328. "slides": slidesLocArray,
  329. "slideLayouts": slideLayoutsLocArray
  330. };
  331. }
  332. function getSlideSize(zip) {
  333. // Pixel = EMUs * Resolution / 914400; (Resolution = 96)
  334. var rtenObj = {};
  335. var content = readXmlFile(zip, "ppt/presentation.xml");
  336. var sldSzAttrs = content["p:presentation"]["p:sldSz"]["attrs"];
  337. //var cWidth = settings.width,
  338. // cHeight = settings.height;
  339. //if(cWidth === false && cHeight === false){
  340. rtenObj = {
  341. "width": parseInt(sldSzAttrs["cx"]) * 96 / 914400,
  342. "height": parseInt(sldSzAttrs["cy"]) * 96 / 914400
  343. };
  344. /*
  345. }else if(cWidth !== false && cHeight === false){
  346. rtenObj = {
  347. "width": cWidth,
  348. "height": parseInt(sldSzAttrs["cy"]) * 96 / 914400
  349. };
  350. }else if(cWidth === false && cHeight !== false){
  351. rtenObj = {
  352. "width": parseInt(sldSzAttrs["cx"]) * 96 / 914400,
  353. "height": cHeight
  354. };
  355. }else{
  356. rtenObj = {
  357. "width": cWidth,
  358. "height": cHeight
  359. };
  360. }*/
  361. return rtenObj;
  362. }
  363. function loadTheme(zip) {
  364. var preResContent = readXmlFile(zip, "ppt/_rels/presentation.xml.rels");
  365. var relationshipArray = preResContent["Relationships"]["Relationship"];
  366. var themeURI = undefined;
  367. if (relationshipArray.constructor === Array) {
  368. for (var i = 0; i < relationshipArray.length; i++) {
  369. if (relationshipArray[i]["attrs"]["Type"] === "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme") {
  370. themeURI = relationshipArray[i]["attrs"]["Target"];
  371. break;
  372. }
  373. }
  374. } else if (relationshipArray["attrs"]["Type"] === "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme") {
  375. themeURI = relationshipArray["attrs"]["Target"];
  376. }
  377. if (themeURI === undefined) {
  378. throw Error("Can't open theme file.");
  379. }
  380. return readXmlFile(zip, "ppt/" + themeURI);
  381. }
  382. function processSingleSlide(zip, sldFileName, index, slideSize) {
  383. /*
  384. self.postMessage({
  385. "type": "INFO",
  386. "data": "Processing slide" + (index + 1)
  387. });
  388. */
  389. // =====< Step 1 >=====
  390. // Read relationship filename of the slide (Get slideLayoutXX.xml)
  391. // @sldFileName: ppt/slides/slide1.xml
  392. // @resName: ppt/slides/_rels/slide1.xml.rels
  393. var resName = sldFileName.replace("slides/slide", "slides/_rels/slide") + ".rels";
  394. var resContent = readXmlFile(zip, resName);
  395. var RelationshipArray = resContent["Relationships"]["Relationship"];
  396. var layoutFilename = "";
  397. var slideResObj = {};
  398. if (RelationshipArray.constructor === Array) {
  399. for (var i = 0; i < RelationshipArray.length; i++) {
  400. switch (RelationshipArray[i]["attrs"]["Type"]) {
  401. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout":
  402. layoutFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  403. break;
  404. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide":
  405. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image":
  406. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart":
  407. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink":
  408. default:
  409. slideResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  410. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  411. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  412. };
  413. }
  414. }
  415. } else {
  416. layoutFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  417. }
  418. //console.log(slideResObj);
  419. // Open slideLayoutXX.xml
  420. var slideLayoutContent = readXmlFile(zip, layoutFilename);
  421. var slideLayoutTables = indexNodes(slideLayoutContent);
  422. var sldLayoutClrOvr = slideLayoutContent["p:sldLayout"]["p:clrMapOvr"]["a:overrideClrMapping"];
  423. //console.log(slideLayoutClrOvride);
  424. if (sldLayoutClrOvr !== undefined) {
  425. slideLayoutClrOvride = sldLayoutClrOvr["attrs"];
  426. }
  427. // =====< Step 2 >=====
  428. // Read slide master filename of the slidelayout (Get slideMasterXX.xml)
  429. // @resName: ppt/slideLayouts/slideLayout1.xml
  430. // @masterName: ppt/slideLayouts/_rels/slideLayout1.xml.rels
  431. var slideLayoutResFilename = layoutFilename.replace("slideLayouts/slideLayout", "slideLayouts/_rels/slideLayout") + ".rels";
  432. var slideLayoutResContent = readXmlFile(zip, slideLayoutResFilename);
  433. RelationshipArray = slideLayoutResContent["Relationships"]["Relationship"];
  434. var masterFilename = "";
  435. var layoutResObj = {};
  436. if (RelationshipArray.constructor === Array) {
  437. for (var i = 0; i < RelationshipArray.length; i++) {
  438. switch (RelationshipArray[i]["attrs"]["Type"]) {
  439. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster":
  440. masterFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  441. break;
  442. default:
  443. layoutResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  444. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  445. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  446. };
  447. }
  448. }
  449. } else {
  450. masterFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  451. }
  452. // Open slideMasterXX.xml
  453. var slideMasterContent = readXmlFile(zip, masterFilename);
  454. var slideMasterTextStyles = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:txStyles"]);
  455. var slideMasterTables = indexNodes(slideMasterContent);
  456. /////////////////Amir/////////////
  457. //Open slideMasterXX.xml.rels
  458. var slideMasterResFilename = masterFilename.replace("slideMasters/slideMaster", "slideMasters/_rels/slideMaster") + ".rels";
  459. var slideMasterResContent = readXmlFile(zip, slideMasterResFilename);
  460. RelationshipArray = slideMasterResContent["Relationships"]["Relationship"];
  461. var themeFilename = "";
  462. var masterResObj = {};
  463. if (RelationshipArray.constructor === Array) {
  464. for (var i = 0; i < RelationshipArray.length; i++) {
  465. switch (RelationshipArray[i]["attrs"]["Type"]) {
  466. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme":
  467. themeFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  468. break;
  469. default:
  470. masterResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  471. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  472. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  473. };
  474. }
  475. }
  476. } else {
  477. themeFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  478. }
  479. //console.log(themeFilename)
  480. //Load Theme file
  481. if (themeFilename !== undefined) {
  482. themeContent = readXmlFile(zip, themeFilename);
  483. }
  484. // =====< Step 3 >=====
  485. var slideContent = readXmlFile(zip, sldFileName);
  486. var nodes = slideContent["p:sld"]["p:cSld"]["p:spTree"];
  487. var warpObj = {
  488. "zip": zip,
  489. "slideLayoutTables": slideLayoutTables,
  490. "slideMasterTables": slideMasterTables,
  491. "slideResObj": slideResObj,
  492. "slideMasterTextStyles": slideMasterTextStyles,
  493. "layoutResObj": layoutResObj,
  494. "masterResObj": masterResObj
  495. };
  496. var bgColor = getSlideBackgroundFill(slideContent, slideLayoutContent, slideMasterContent, warpObj);
  497. var result = "<div class='slide' style='width:" + slideSize.width + "px; height:" + slideSize.height + "px;" + bgColor + "'>"
  498. //result += "<div>"+getBackgroundShapes(slideContent, slideLayoutContent, slideMasterContent,warpObj) + "</div>" - TODO
  499. for (var nodeKey in nodes) {
  500. if (nodes[nodeKey].constructor === Array) {
  501. for (var i = 0; i < nodes[nodeKey].length; i++) {
  502. result += processNodesInSlide(nodeKey, nodes[nodeKey][i], warpObj);
  503. }
  504. } else {
  505. result += processNodesInSlide(nodeKey, nodes[nodeKey], warpObj);
  506. }
  507. }
  508. return result + "</div>";
  509. }
  510. function indexNodes(content) {
  511. var keys = Object.keys(content);
  512. var spTreeNode = content[keys[0]]["p:cSld"]["p:spTree"];
  513. var idTable = {};
  514. var idxTable = {};
  515. var typeTable = {};
  516. for (var key in spTreeNode) {
  517. if (key == "p:nvGrpSpPr" || key == "p:grpSpPr") {
  518. continue;
  519. }
  520. var targetNode = spTreeNode[key];
  521. if (targetNode.constructor === Array) {
  522. for (var i = 0; i < targetNode.length; i++) {
  523. var nvSpPrNode = targetNode[i]["p:nvSpPr"];
  524. var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]);
  525. var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]);
  526. var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]);
  527. if (id !== undefined) {
  528. idTable[id] = targetNode[i];
  529. }
  530. if (idx !== undefined) {
  531. idxTable[idx] = targetNode[i];
  532. }
  533. if (type !== undefined) {
  534. typeTable[type] = targetNode[i];
  535. }
  536. }
  537. } else {
  538. var nvSpPrNode = targetNode["p:nvSpPr"];
  539. var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]);
  540. var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]);
  541. var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]);
  542. if (id !== undefined) {
  543. idTable[id] = targetNode;
  544. }
  545. if (idx !== undefined) {
  546. idxTable[idx] = targetNode;
  547. }
  548. if (type !== undefined) {
  549. typeTable[type] = targetNode;
  550. }
  551. }
  552. }
  553. return { "idTable": idTable, "idxTable": idxTable, "typeTable": typeTable };
  554. }
  555. function processNodesInSlide(nodeKey, nodeValue, warpObj) {
  556. var result = "";
  557. switch (nodeKey) {
  558. case "p:sp": // Shape, Text
  559. result = processSpNode(nodeValue, warpObj);
  560. break;
  561. case "p:cxnSp": // Shape, Text (with connection)
  562. result = processCxnSpNode(nodeValue, warpObj);
  563. break;
  564. case "p:pic": // Picture
  565. result = processPicNode(nodeValue, warpObj);
  566. break;
  567. case "p:graphicFrame": // Chart, Diagram, Table
  568. result = processGraphicFrameNode(nodeValue, warpObj);
  569. break;
  570. case "p:grpSp":
  571. result = processGroupSpNode(nodeValue, warpObj);
  572. break;
  573. case "mc:AlternateContent": //Equations and formulas as Image
  574. var mcFallbackNode = getTextByPathList(nodeValue, ["mc:Fallback", "p:sp"]);
  575. result = processSpNode(mcFallbackNode, warpObj);
  576. break;
  577. default:
  578. }
  579. return result;
  580. }
  581. function processGroupSpNode(node, warpObj) {
  582. var factor = 96 / 914400;
  583. var xfrmNode = node["p:grpSpPr"]["a:xfrm"];
  584. var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) * factor;
  585. var y = parseInt(xfrmNode["a:off"]["attrs"]["y"]) * factor;
  586. var chx = parseInt(xfrmNode["a:chOff"]["attrs"]["x"]) * factor;
  587. var chy = parseInt(xfrmNode["a:chOff"]["attrs"]["y"]) * factor;
  588. var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * factor;
  589. var cy = parseInt(xfrmNode["a:ext"]["attrs"]["cy"]) * factor;
  590. var chcx = parseInt(xfrmNode["a:chExt"]["attrs"]["cx"]) * factor;
  591. var chcy = parseInt(xfrmNode["a:chExt"]["attrs"]["cy"]) * factor;
  592. var order = node["attrs"]["order"];
  593. var result = "<div class='block group' style='z-index: " + order + "; top: " + (y - chy) + "px; left: " + (x - chx) + "px; width: " + (cx - chcx) + "px; height: " + (cy - chcy) + "px;'>";
  594. // Procsee all child nodes
  595. for (var nodeKey in node) {
  596. if (node[nodeKey].constructor === Array) {
  597. for (var i = 0; i < node[nodeKey].length; i++) {
  598. result += processNodesInSlide(nodeKey, node[nodeKey][i], warpObj);
  599. }
  600. } else {
  601. result += processNodesInSlide(nodeKey, node[nodeKey], warpObj);
  602. }
  603. }
  604. result += "</div>";
  605. return result;
  606. }
  607. function processSpNode(node, warpObj) {
  608. /*
  609. * 958 <xsd:complexType name="CT_GvmlShape">
  610. * 959 <xsd:sequence>
  611. * 960 <xsd:element name="nvSpPr" type="CT_GvmlShapeNonVisual" minOccurs="1" maxOccurs="1"/>
  612. * 961 <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
  613. * 962 <xsd:element name="txSp" type="CT_GvmlTextShape" minOccurs="0" maxOccurs="1"/>
  614. * 963 <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
  615. * 964 <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
  616. * 965 </xsd:sequence>
  617. * 966 </xsd:complexType>
  618. */
  619. var id = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "id"]);
  620. var name = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "name"]);
  621. var idx = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "idx"]);
  622. var type = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  623. var order = getTextByPathList(node, ["attrs", "order"]);
  624. var slideLayoutSpNode = undefined;
  625. var slideMasterSpNode = undefined;
  626. if (type !== undefined) {
  627. if (idx !== undefined) {
  628. slideLayoutSpNode = warpObj["slideLayoutTables"]["typeTable"][type];
  629. slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type];
  630. } else {
  631. slideLayoutSpNode = warpObj["slideLayoutTables"]["typeTable"][type];
  632. slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type];
  633. }
  634. } else {
  635. if (idx !== undefined) {
  636. slideLayoutSpNode = warpObj["slideLayoutTables"]["idxTable"][idx];
  637. slideMasterSpNode = warpObj["slideMasterTables"]["idxTable"][idx];
  638. } else {
  639. // Nothing
  640. }
  641. }
  642. if (type === undefined) {
  643. type = getTextByPathList(slideLayoutSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  644. if (type === undefined) {
  645. type = getTextByPathList(slideMasterSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  646. }
  647. }
  648. return genShape(node, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj);
  649. }
  650. function processCxnSpNode(node, warpObj) {
  651. var id = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["id"];
  652. var name = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["name"];
  653. //var idx = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["idx"];
  654. //var type = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["type"];
  655. //<p:cNvCxnSpPr>(<p:cNvCxnSpPr>, <a:endCxn>)
  656. var order = node["attrs"]["order"];
  657. return genShape(node, undefined, undefined, id, name, undefined, undefined, order, warpObj);
  658. }
  659. function genShape(node, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj) {
  660. var xfrmList = ["p:spPr", "a:xfrm"];
  661. var slideXfrmNode = getTextByPathList(node, xfrmList);
  662. var slideLayoutXfrmNode = getTextByPathList(slideLayoutSpNode, xfrmList);
  663. var slideMasterXfrmNode = getTextByPathList(slideMasterSpNode, xfrmList);
  664. var result = "";
  665. var shpId = getTextByPathList(node, ["attrs", "order"]);
  666. //console.log("shpId: ",shpId)
  667. var shapType = getTextByPathList(node, ["p:spPr", "a:prstGeom", "attrs", "prst"]);
  668. //custGeom - Amir
  669. var custShapType = getTextByPathList(node, ["p:spPr", "a:custGeom"]);
  670. var isFlipV = false;
  671. if (getTextByPathList(slideXfrmNode, ["attrs", "flipV"]) === "1" || getTextByPathList(slideXfrmNode, ["attrs", "flipH"]) === "1") {
  672. isFlipV = true;
  673. }
  674. /////////////////////////Amir////////////////////////
  675. //rotate
  676. var rotate = angleToDegrees(getTextByPathList(slideXfrmNode, ["attrs", "rot"]));
  677. //console.log("rotate: "+rotate);
  678. var txtRotate;
  679. var txtXframeNode = getTextByPathList(node, ["p:txXfrm"]);
  680. if (txtXframeNode !== undefined) {
  681. var txtXframeRot = getTextByPathList(txtXframeNode, ["attrs", "rot"]);
  682. if (txtXframeRot !== undefined) {
  683. txtRotate = angleToDegrees(txtXframeRot) + 90;
  684. }
  685. } else {
  686. txtRotate = rotate;
  687. }
  688. //////////////////////////////////////////////////
  689. if (shapType !== undefined || custShapType !== undefined) {
  690. var off = getTextByPathList(slideXfrmNode, ["a:off", "attrs"]);
  691. var x = parseInt(off["x"]) * 96 / 914400;
  692. var y = parseInt(off["y"]) * 96 / 914400;
  693. var ext = getTextByPathList(slideXfrmNode, ["a:ext", "attrs"]);
  694. var w = parseInt(ext["cx"]) * 96 / 914400;
  695. var h = parseInt(ext["cy"]) * 96 / 914400;
  696. result += "<svg class='drawing' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  697. "' style='" +
  698. getPosition(slideXfrmNode, undefined, undefined) +
  699. getSize(slideXfrmNode, undefined, undefined) +
  700. " z-index: " + order + ";" +
  701. "transform: rotate(" + rotate + "deg);" +
  702. "'>";
  703. result += '<defs>'
  704. // Fill Color
  705. var fillColor = getShapeFill(node, true, warpObj);
  706. var grndFillFlg = false;
  707. var imgFillFlg = false;
  708. var clrFillType = getFillType(getTextByPathList(node, ["p:spPr"]));
  709. /////////////////////////////////////////
  710. if (clrFillType == "GRADIENT_FILL") {
  711. grndFillFlg = true;
  712. var color_arry = fillColor.color;
  713. var angl = fillColor.rot;
  714. var svgGrdnt = getSvgGradient(w, h, angl, color_arry, shpId);
  715. //fill="url(#linGrd)"
  716. result += svgGrdnt;
  717. } else if (clrFillType == "PIC_FILL") {
  718. imgFillFlg = true;
  719. var svgBgImg = getSvgImagePattern(fillColor, shpId);
  720. //fill="url(#imgPtrn)"
  721. //console.log(svgBgImg)
  722. result += svgBgImg;
  723. } else {
  724. if (clrFillType != "SOLID_FILL" && clrFillType != "PATTERN_FILL" &&
  725. (shapType == "arc" ||
  726. shapType == "bracketPair" ||
  727. shapType == "bracePair" ||
  728. shapType == "leftBracket" ||
  729. shapType == "leftBrace" ||
  730. shapType == "rightBrace" ||
  731. shapType == "rightBracket")) { //Temp. solution - TODO
  732. fillColor = "none";
  733. }
  734. }
  735. // Border Color
  736. var border = getBorder(node, true, "shape");
  737. var headEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:headEnd", "attrs"]);
  738. var tailEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:tailEnd", "attrs"]);
  739. // type: none, triangle, stealth, diamond, oval, arrow
  740. if ((headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) ||
  741. (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow"))) {
  742. var triangleMarker = "<marker id='markerTriangle_" + shpId + "' viewBox='0 0 10 10' refX='1' refY='5' markerWidth='5' markerHeight='5' stroke='" + border.color + "' fill='" + border.color +
  743. "' orient='auto-start-reverse' markerUnits='strokeWidth'><path d='M 0 0 L 10 5 L 0 10 z' /></marker>";
  744. result += triangleMarker;
  745. }
  746. result += '</defs>'
  747. }
  748. if (shapType !== undefined && custShapType === undefined) {
  749. switch (shapType) {
  750. case "rect":
  751. case "flowChartProcess":
  752. case "flowChartPredefinedProcess":
  753. case "flowChartInternalStorage":
  754. case "actionButtonBlank":
  755. result += "<rect x='0' y='0' width='" + w + "' height='" + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  756. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  757. if (shapType == "flowChartPredefinedProcess") {
  758. result += "<rect x='" + w * (1 / 8) + "' y='0' width='" + w * (6 / 8) + "' height='" + h + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  759. } else if (shapType == "flowChartInternalStorage") {
  760. result += " <polyline points='" + w * (1 / 8) + " 0," + w * (1 / 8) + " " + h + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  761. result += " <polyline points='0 " + h * (1 / 8) + "," + w + " " + h * (1 / 8) + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  762. }
  763. break;
  764. case "flowChartCollate":
  765. var d = "M 0,0" +
  766. " L" + w + "," + 0 +
  767. " L" + 0 + "," + h +
  768. " L" + w + "," + h +
  769. " z";
  770. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  771. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  772. break;
  773. case "flowChartDocument":
  774. var y1, y2, y3, x1;
  775. x1 = w * 10800 / 21600;
  776. y1 = h * 17322 / 21600;
  777. y2 = h * 20172 / 21600;
  778. y3 = h * 23922 / 21600;
  779. var d = "M" + 0 + "," + 0 +
  780. " L" + w + "," + 0 +
  781. " L" + w + "," + y1 +
  782. " C" + x1 + "," + y1 + " " + x1 + "," + y3 + " " + 0 + "," + y2 +
  783. " z";
  784. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  785. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  786. break;
  787. case "flowChartMultidocument":
  788. var y1, y2, y3, y4, y5, y6, y7, y8, y9, x1, x2, x3, x4, x5, x6, x7;
  789. y1 = h * 18022 / 21600;
  790. y2 = h * 3675 / 21600;
  791. y3 = h * 23542 / 21600;
  792. y4 = h * 1815 / 21600;
  793. y5 = h * 16252 / 21600;
  794. y6 = h * 16352 / 21600;
  795. y7 = h * 14392 / 21600;
  796. y8 = h * 20782 / 21600;
  797. y9 = h * 14467 / 21600;
  798. x1 = w * 1532 / 21600;
  799. x2 = w * 20000 / 21600;
  800. x3 = w * 9298 / 21600;
  801. x4 = w * 19298 / 21600;
  802. x5 = w * 18595 / 21600;
  803. x6 = w * 2972 / 21600;
  804. x7 = w * 20800 / 21600;
  805. var d = "M" + 0 + "," + y2 +
  806. " L" + x5 + "," + y2 +
  807. " L" + x5 + "," + y1 +
  808. " C" + x3 + "," + y1 + " " + x3 + "," + y3 + " " + 0 + "," + y8 +
  809. " z" +
  810. "M" + x1 + "," + y2 +
  811. " L" + x1 + "," + y4 +
  812. " L" + x2 + "," + y4 +
  813. " L" + x2 + "," + y5 +
  814. " C" + x4 + "," + y5 + " " + x5 + "," + y6 + " " + x5 + "," + y6 +
  815. "M" + x6 + "," + y4 +
  816. " L" + x6 + "," + 0 +
  817. " L" + w + "," + 0 +
  818. " L" + w + "," + y7 +
  819. " C" + x7 + "," + y7 + " " + x2 + "," + y9 + " " + x2 + "," + y9;
  820. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  821. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  822. break;
  823. case "actionButtonBackPrevious":
  824. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  825. var dx2, g9, g10, g11, g12;
  826. dx2 = ss * 3 / 8;
  827. g9 = vc - dx2;
  828. g10 = vc + dx2;
  829. g11 = hc - dx2;
  830. g12 = hc + dx2;
  831. var d = "M" + 0 + "," + 0 +
  832. " L" + w + "," + 0 +
  833. " L" + w + "," + h +
  834. " L" + 0 + "," + h +
  835. " z" +
  836. "M" + g11 + "," + vc +
  837. " L" + g12 + "," + g9 +
  838. " L" + g12 + "," + g10 +
  839. " z";
  840. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  841. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  842. break;
  843. case "actionButtonBeginning":
  844. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  845. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17;
  846. dx2 = ss * 3 / 8;
  847. g9 = vc - dx2;
  848. g10 = vc + dx2;
  849. g11 = hc - dx2;
  850. g12 = hc + dx2;
  851. g13 = ss * 3 / 4;
  852. g14 = g13 / 8;
  853. g15 = g13 / 4;
  854. g16 = g11 + g14;
  855. g17 = g11 + g15;
  856. var d = "M" + 0 + "," + 0 +
  857. " L" + w + "," + 0 +
  858. " L" + w + "," + h +
  859. " L" + 0 + "," + h +
  860. " z" +
  861. "M" + g17 + "," + vc +
  862. " L" + g12 + "," + g9 +
  863. " L" + g12 + "," + g10 +
  864. " z" +
  865. "M" + g16 + "," + g9 +
  866. " L" + g11 + "," + g9 +
  867. " L" + g11 + "," + g10 +
  868. " L" + g16 + "," + g10 +
  869. " z";
  870. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  871. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  872. break;
  873. case "actionButtonDocument":
  874. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  875. var dx2, g9, g10, dx1, g11, g12, g13, g14, g15;
  876. dx2 = ss * 3 / 8;
  877. g9 = vc - dx2;
  878. g10 = vc + dx2;
  879. dx1 = ss * 9 / 32;
  880. g11 = hc - dx1;
  881. g12 = hc + dx1;
  882. g13 = ss * 3 / 16;
  883. g14 = g12 - g13;
  884. g15 = g9 + g13;
  885. var d = "M" + 0 + "," + 0 +
  886. " L" + w + "," + 0 +
  887. " L" + w + "," + h +
  888. " L" + 0 + "," + h +
  889. " z" +
  890. "M" + g11 + "," + g9 +
  891. " L" + g14 + "," + g9 +
  892. " L" + g12 + "," + g15 +
  893. " L" + g12 + "," + g10 +
  894. " L" + g11 + "," + g10 +
  895. " z" +
  896. "M" + g14 + "," + g9 +
  897. " L" + g14 + "," + g15 +
  898. " L" + g12 + "," + g15 +
  899. " z";
  900. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  901. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  902. break;
  903. case "actionButtonEnd":
  904. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  905. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17;
  906. dx2 = ss * 3 / 8;
  907. g9 = vc - dx2;
  908. g10 = vc + dx2;
  909. g11 = hc - dx2;
  910. g12 = hc + dx2;
  911. g13 = ss * 3 / 4;
  912. g14 = g13 * 3 / 4;
  913. g15 = g13 * 7 / 8;
  914. g16 = g11 + g14;
  915. g17 = g11 + g15;
  916. var d = "M" + 0 + "," + h +
  917. " L" + w + "," + h +
  918. " L" + w + "," + 0 +
  919. " L" + 0 + "," + 0 +
  920. " z" +
  921. " M" + g17 + "," + g9 +
  922. " L" + g12 + "," + g9 +
  923. " L" + g12 + "," + g10 +
  924. " L" + g17 + "," + g10 +
  925. " z" +
  926. " M" + g16 + "," + vc +
  927. " L" + g11 + "," + g9 +
  928. " L" + g11 + "," + g10 +
  929. " z";
  930. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  931. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  932. break;
  933. case "actionButtonForwardNext":
  934. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  935. var dx2, g9, g10, g11, g12;
  936. dx2 = ss * 3 / 8;
  937. g9 = vc - dx2;
  938. g10 = vc + dx2;
  939. g11 = hc - dx2;
  940. g12 = hc + dx2;
  941. var d = "M" + 0 + "," + h +
  942. " L" + w + "," + h +
  943. " L" + w + "," + 0 +
  944. " L" + 0 + "," + 0 +
  945. " z" +
  946. " M" + g12 + "," + vc +
  947. " L" + g11 + "," + g9 +
  948. " L" + g11 + "," + g10 +
  949. " z";
  950. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  951. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  952. break;
  953. case "actionButtonHelp":
  954. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  955. var dx2, g9, g11, g13, g14, g15, g16, g19, g20, g21, g23, g24, g27, g29, g30, g31, g33, g36, g37, g41, g42;
  956. dx2 = ss * 3 / 8;
  957. g9 = vc - dx2;
  958. g11 = hc - dx2;
  959. g13 = ss * 3 / 4;
  960. g14 = g13 / 7;
  961. g15 = g13 * 3 / 14;
  962. g16 = g13 * 2 / 7;
  963. g19 = g13 * 3 / 7;
  964. g20 = g13 * 4 / 7;
  965. g21 = g13 * 17 / 28;
  966. g23 = g13 * 21 / 28;
  967. g24 = g13 * 11 / 14;
  968. g27 = g9 + g16;
  969. g29 = g9 + g21;
  970. g30 = g9 + g23;
  971. g31 = g9 + g24;
  972. g33 = g11 + g15;
  973. g36 = g11 + g19;
  974. g37 = g11 + g20;
  975. g41 = g13 / 14;
  976. g42 = g13 * 3 / 28;
  977. var cX1 = g33 + g16;
  978. var cX2 = g36 + g14;
  979. var cY3 = g31 + g42;
  980. var cX4 = (g37 + g36 + g16) / 2;
  981. var d = "M" + 0 + "," + 0 +
  982. " L" + w + "," + 0 +
  983. " L" + w + "," + h +
  984. " L" + 0 + "," + h +
  985. " z" +
  986. "M" + g33 + "," + g27 +
  987. shapeArc(cX1, g27, g16, g16, 180, 360, false).replace("M", "L") +
  988. shapeArc(cX4, g27, g14, g15, 0, 90, false).replace("M", "L") +
  989. shapeArc(cX4, g29, g41, g42, 270, 180, false).replace("M", "L") +
  990. " L" + g37 + "," + g30 +
  991. " L" + g36 + "," + g30 +
  992. " L" + g36 + "," + g29 +
  993. shapeArc(cX2, g29, g14, g15, 180, 270, false).replace("M", "L") +
  994. shapeArc(g37, g27, g41, g42, 90, 0, false).replace("M", "L") +
  995. shapeArc(cX1, g27, g14, g14, 0, -180, false).replace("M", "L") +
  996. " z" +
  997. "M" + hc + "," + g31 +
  998. shapeArc(hc, cY3, g42, g42, 270, 630, false).replace("M", "L") +
  999. " z";
  1000. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1001. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1002. break;
  1003. case "actionButtonHome":
  1004. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1005. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27, g28, g29, g30, g31, g32, g33;
  1006. dx2 = ss * 3 / 8;
  1007. g9 = vc - dx2;
  1008. g10 = vc + dx2;
  1009. g11 = hc - dx2;
  1010. g12 = hc + dx2;
  1011. g13 = ss * 3 / 4;
  1012. g14 = g13 / 16;
  1013. g15 = g13 / 8;
  1014. g16 = g13 * 3 / 16;
  1015. g17 = g13 * 5 / 16;
  1016. g18 = g13 * 7 / 16;
  1017. g19 = g13 * 9 / 16;
  1018. g20 = g13 * 11 / 16;
  1019. g21 = g13 * 3 / 4;
  1020. g22 = g13 * 13 / 16;
  1021. g23 = g13 * 7 / 8;
  1022. g24 = g9 + g14;
  1023. g25 = g9 + g16;
  1024. g26 = g9 + g17;
  1025. g27 = g9 + g21;
  1026. g28 = g11 + g15;
  1027. g29 = g11 + g18;
  1028. g30 = g11 + g19;
  1029. g31 = g11 + g20;
  1030. g32 = g11 + g22;
  1031. g33 = g11 + g23;
  1032. var d = "M" + 0 + "," + 0 +
  1033. " L" + w + "," + 0 +
  1034. " L" + w + "," + h +
  1035. " L" + 0 + "," + h +
  1036. " z" +
  1037. " M" + hc + "," + g9 +
  1038. " L" + g11 + "," + vc +
  1039. " L" + g28 + "," + vc +
  1040. " L" + g28 + "," + g10 +
  1041. " L" + g33 + "," + g10 +
  1042. " L" + g33 + "," + vc +
  1043. " L" + g12 + "," + vc +
  1044. " L" + g32 + "," + g26 +
  1045. " L" + g32 + "," + g24 +
  1046. " L" + g31 + "," + g24 +
  1047. " L" + g31 + "," + g25 +
  1048. " z" +
  1049. " M" + g29 + "," + g27 +
  1050. " L" + g30 + "," + g27 +
  1051. " L" + g30 + "," + g10 +
  1052. " L" + g29 + "," + g10 +
  1053. " z";
  1054. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1055. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1056. break;
  1057. case "actionButtonInformation":
  1058. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1059. var dx2, g9, g11, g13, g14, g17, g18, g19, g20, g22, g23, g24, g25, g28, g29, g30, g31, g32, g34, g35, g37, g38;
  1060. dx2 = ss * 3 / 8;
  1061. g9 = vc - dx2;
  1062. g11 = hc - dx2;
  1063. g13 = ss * 3 / 4;
  1064. g14 = g13 / 32;
  1065. g17 = g13 * 5 / 16;
  1066. g18 = g13 * 3 / 8;
  1067. g19 = g13 * 13 / 32;
  1068. g20 = g13 * 19 / 32;
  1069. g22 = g13 * 11 / 16;
  1070. g23 = g13 * 13 / 16;
  1071. g24 = g13 * 7 / 8;
  1072. g25 = g9 + g14;
  1073. g28 = g9 + g17;
  1074. g29 = g9 + g18;
  1075. g30 = g9 + g23;
  1076. g31 = g9 + g24;
  1077. g32 = g11 + g17;
  1078. g34 = g11 + g19;
  1079. g35 = g11 + g20;
  1080. g37 = g11 + g22;
  1081. g38 = g13 * 3 / 32;
  1082. var cY1 = g9 + dx2;
  1083. var cY2 = g25 + g38;
  1084. var d = "M" + 0 + "," + 0 +
  1085. " L" + w + "," + 0 +
  1086. " L" + w + "," + h +
  1087. " L" + 0 + "," + h +
  1088. " z" +
  1089. "M" + hc + "," + g9 +
  1090. shapeArc(hc, cY1, dx2, dx2, 270, 630, false).replace("M", "L") +
  1091. " z" +
  1092. "M" + hc + "," + g25 +
  1093. shapeArc(hc, cY2, g38, g38, 270, 630, false).replace("M", "L") +
  1094. "M" + g32 + "," + g28 +
  1095. " L" + g35 + "," + g28 +
  1096. " L" + g35 + "," + g30 +
  1097. " L" + g37 + "," + g30 +
  1098. " L" + g37 + "," + g31 +
  1099. " L" + g32 + "," + g31 +
  1100. " L" + g32 + "," + g30 +
  1101. " L" + g34 + "," + g30 +
  1102. " L" + g34 + "," + g29 +
  1103. " L" + g32 + "," + g29 +
  1104. " z";
  1105. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1106. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1107. break;
  1108. case "actionButtonMovie":
  1109. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1110. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27,
  1111. g28, g29, g30, g31, g32, g33, g34, g35, g36, g37, g38, g39, g40, g41, g42, g43, g44, g45, g46, g47, g48;
  1112. dx2 = ss * 3 / 8;
  1113. g9 = vc - dx2;
  1114. g10 = vc + dx2;
  1115. g11 = hc - dx2;
  1116. g12 = hc + dx2;
  1117. g13 = ss * 3 / 4;
  1118. g14 = g13 * 1455 / 21600;
  1119. g15 = g13 * 1905 / 21600;
  1120. g16 = g13 * 2325 / 21600;
  1121. g17 = g13 * 16155 / 21600;
  1122. g18 = g13 * 17010 / 21600;
  1123. g19 = g13 * 19335 / 21600;
  1124. g20 = g13 * 19725 / 21600;
  1125. g21 = g13 * 20595 / 21600;
  1126. g22 = g13 * 5280 / 21600;
  1127. g23 = g13 * 5730 / 21600;
  1128. g24 = g13 * 6630 / 21600;
  1129. g25 = g13 * 7492 / 21600;
  1130. g26 = g13 * 9067 / 21600;
  1131. g27 = g13 * 9555 / 21600;
  1132. g28 = g13 * 13342 / 21600;
  1133. g29 = g13 * 14580 / 21600;
  1134. g30 = g13 * 15592 / 21600;
  1135. g31 = g11 + g14;
  1136. g32 = g11 + g15;
  1137. g33 = g11 + g16;
  1138. g34 = g11 + g17;
  1139. g35 = g11 + g18;
  1140. g36 = g11 + g19;
  1141. g37 = g11 + g20;
  1142. g38 = g11 + g21;
  1143. g39 = g9 + g22;
  1144. g40 = g9 + g23;
  1145. g41 = g9 + g24;
  1146. g42 = g9 + g25;
  1147. g43 = g9 + g26;
  1148. g44 = g9 + g27;
  1149. g45 = g9 + g28;
  1150. g46 = g9 + g29;
  1151. g47 = g9 + g30;
  1152. g48 = g9 + g31;
  1153. var d = "M" + 0 + "," + h +
  1154. " L" + w + "," + h +
  1155. " L" + w + "," + 0 +
  1156. " L" + 0 + "," + 0 +
  1157. " z" +
  1158. "M" + g11 + "," + g39 +
  1159. " L" + g11 + "," + g44 +
  1160. " L" + g31 + "," + g44 +
  1161. " L" + g32 + "," + g43 +
  1162. " L" + g33 + "," + g43 +
  1163. " L" + g33 + "," + g47 +
  1164. " L" + g35 + "," + g47 +
  1165. " L" + g35 + "," + g45 +
  1166. " L" + g36 + "," + g45 +
  1167. " L" + g38 + "," + g46 +
  1168. " L" + g12 + "," + g46 +
  1169. " L" + g12 + "," + g41 +
  1170. " L" + g38 + "," + g41 +
  1171. " L" + g37 + "," + g42 +
  1172. " L" + g35 + "," + g42 +
  1173. " L" + g35 + "," + g41 +
  1174. " L" + g34 + "," + g40 +
  1175. " L" + g32 + "," + g40 +
  1176. " L" + g31 + "," + g39 +
  1177. " z";
  1178. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1179. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1180. break;
  1181. case "actionButtonReturn":
  1182. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1183. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27;
  1184. dx2 = ss * 3 / 8;
  1185. g9 = vc - dx2;
  1186. g10 = vc + dx2;
  1187. g11 = hc - dx2;
  1188. g12 = hc + dx2;
  1189. g13 = ss * 3 / 4;
  1190. g14 = g13 * 7 / 8;
  1191. g15 = g13 * 3 / 4;
  1192. g16 = g13 * 5 / 8;
  1193. g17 = g13 * 3 / 8;
  1194. g18 = g13 / 4;
  1195. g19 = g9 + g15;
  1196. g20 = g9 + g16;
  1197. g21 = g9 + g18;
  1198. g22 = g11 + g14;
  1199. g23 = g11 + g15;
  1200. g24 = g11 + g16;
  1201. g25 = g11 + g17;
  1202. g26 = g11 + g18;
  1203. g27 = g13 / 8;
  1204. var cX1 = g24 - g27;
  1205. var cY2 = g19 - g27;
  1206. var cX3 = g11 + g17;
  1207. var cY4 = g10 - g17;
  1208. var d = "M" + 0 + "," + h +
  1209. " L" + w + "," + h +
  1210. " L" + w + "," + 0 +
  1211. " L" + 0 + "," + 0 +
  1212. " z" +
  1213. " M" + g12 + "," + g21 +
  1214. " L" + g23 + "," + g9 +
  1215. " L" + hc + "," + g21 +
  1216. " L" + g24 + "," + g21 +
  1217. " L" + g24 + "," + g20 +
  1218. shapeArc(cX1, g20, g27, g27, 0, 90, false).replace("M", "L") +
  1219. " L" + g25 + "," + g19 +
  1220. shapeArc(g25, cY2, g27, g27, 90, 180, false).replace("M", "L") +
  1221. " L" + g26 + "," + g21 +
  1222. " L" + g11 + "," + g21 +
  1223. " L" + g11 + "," + g20 +
  1224. shapeArc(cX3, g20, g17, g17, 180, 90, false).replace("M", "L") +
  1225. " L" + hc + "," + g10 +
  1226. shapeArc(hc, cY4, g17, g17, 90, 0, false).replace("M", "L") +
  1227. " L" + g22 + "," + g21 +
  1228. " z";
  1229. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1230. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1231. break;
  1232. case "actionButtonSound":
  1233. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1234. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26;
  1235. dx2 = ss * 3 / 8;
  1236. g9 = vc - dx2;
  1237. g10 = vc + dx2;
  1238. g11 = hc - dx2;
  1239. g12 = hc + dx2;
  1240. g13 = ss * 3 / 4;
  1241. g14 = g13 / 8;
  1242. g15 = g13 * 5 / 16;
  1243. g16 = g13 * 5 / 8;
  1244. g17 = g13 * 11 / 16;
  1245. g18 = g13 * 3 / 4;
  1246. g19 = g13 * 7 / 8;
  1247. g20 = g9 + g14;
  1248. g21 = g9 + g15;
  1249. g22 = g9 + g17;
  1250. g23 = g9 + g19;
  1251. g24 = g11 + g15;
  1252. g25 = g11 + g16;
  1253. g26 = g11 + g18;
  1254. var d = "M" + 0 + "," + 0 +
  1255. " L" + w + "," + 0 +
  1256. " L" + w + "," + h +
  1257. " L" + 0 + "," + h +
  1258. " z" +
  1259. " M" + g11 + "," + g21 +
  1260. " L" + g24 + "," + g21 +
  1261. " L" + g25 + "," + g9 +
  1262. " L" + g25 + "," + g10 +
  1263. " L" + g24 + "," + g22 +
  1264. " L" + g11 + "," + g22 +
  1265. " z" +
  1266. " M" + g26 + "," + g21 +
  1267. " L" + g12 + "," + g20 +
  1268. " M" + g26 + "," + vc +
  1269. " L" + g12 + "," + vc +
  1270. " M" + g26 + "," + g22 +
  1271. " L" + g12 + "," + g23;
  1272. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1273. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1274. break;
  1275. case "irregularSeal1":
  1276. case "irregularSeal2":
  1277. if (shapType == "irregularSeal1") {
  1278. var d = "M" + w * 10800 / 21600 + "," + h * 5800 / 21600 +
  1279. " L" + w * 14522 / 21600 + "," + 0 +
  1280. " L" + w * 14155 / 21600 + "," + h * 5325 / 21600 +
  1281. " L" + w * 18380 / 21600 + "," + h * 4457 / 21600 +
  1282. " L" + w * 16702 / 21600 + "," + h * 7315 / 21600 +
  1283. " L" + w * 21097 / 21600 + "," + h * 8137 / 21600 +
  1284. " L" + w * 17607 / 21600 + "," + h * 10475 / 21600 +
  1285. " L" + w + "," + h * 13290 / 21600 +
  1286. " L" + w * 16837 / 21600 + "," + h * 12942 / 21600 +
  1287. " L" + w * 18145 / 21600 + "," + h * 18095 / 21600 +
  1288. " L" + w * 14020 / 21600 + "," + h * 14457 / 21600 +
  1289. " L" + w * 13247 / 21600 + "," + h * 19737 / 21600 +
  1290. " L" + w * 10532 / 21600 + "," + h * 14935 / 21600 +
  1291. " L" + w * 8485 / 21600 + "," + h +
  1292. " L" + w * 7715 / 21600 + "," + h * 15627 / 21600 +
  1293. " L" + w * 4762 / 21600 + "," + h * 17617 / 21600 +
  1294. " L" + w * 5667 / 21600 + "," + h * 13937 / 21600 +
  1295. " L" + w * 135 / 21600 + "," + h * 14587 / 21600 +
  1296. " L" + w * 3722 / 21600 + "," + h * 11775 / 21600 +
  1297. " L" + 0 + "," + h * 8615 / 21600 +
  1298. " L" + w * 4627 / 21600 + "," + h * 7617 / 21600 +
  1299. " L" + w * 370 / 21600 + "," + h * 2295 / 21600 +
  1300. " L" + w * 7312 / 21600 + "," + h * 6320 / 21600 +
  1301. " L" + w * 8352 / 21600 + "," + h * 2295 / 21600 +
  1302. " z";
  1303. } else if (shapType == "irregularSeal2") {
  1304. var d = "M" + w * 11462 / 21600 + "," + h * 4342 / 21600 +
  1305. " L" + w * 14790 / 21600 + "," + 0 +
  1306. " L" + w * 14525 / 21600 + "," + h * 5777 / 21600 +
  1307. " L" + w * 18007 / 21600 + "," + h * 3172 / 21600 +
  1308. " L" + w * 16380 / 21600 + "," + h * 6532 / 21600 +
  1309. " L" + w + "," + h * 6645 / 21600 +
  1310. " L" + w * 16985 / 21600 + "," + h * 9402 / 21600 +
  1311. " L" + w * 18270 / 21600 + "," + h * 11290 / 21600 +
  1312. " L" + w * 16380 / 21600 + "," + h * 12310 / 21600 +
  1313. " L" + w * 18877 / 21600 + "," + h * 15632 / 21600 +
  1314. " L" + w * 14640 / 21600 + "," + h * 14350 / 21600 +
  1315. " L" + w * 14942 / 21600 + "," + h * 17370 / 21600 +
  1316. " L" + w * 12180 / 21600 + "," + h * 15935 / 21600 +
  1317. " L" + w * 11612 / 21600 + "," + h * 18842 / 21600 +
  1318. " L" + w * 9872 / 21600 + "," + h * 17370 / 21600 +
  1319. " L" + w * 8700 / 21600 + "," + h * 19712 / 21600 +
  1320. " L" + w * 7527 / 21600 + "," + h * 18125 / 21600 +
  1321. " L" + w * 4917 / 21600 + "," + h +
  1322. " L" + w * 4805 / 21600 + "," + h * 18240 / 21600 +
  1323. " L" + w * 1285 / 21600 + "," + h * 17825 / 21600 +
  1324. " L" + w * 3330 / 21600 + "," + h * 15370 / 21600 +
  1325. " L" + 0 + "," + h * 12877 / 21600 +
  1326. " L" + w * 3935 / 21600 + "," + h * 11592 / 21600 +
  1327. " L" + w * 1172 / 21600 + "," + h * 8270 / 21600 +
  1328. " L" + w * 5372 / 21600 + "," + h * 7817 / 21600 +
  1329. " L" + w * 4502 / 21600 + "," + h * 3625 / 21600 +
  1330. " L" + w * 8550 / 21600 + "," + h * 6382 / 21600 +
  1331. " L" + w * 9722 / 21600 + "," + h * 1887 / 21600 +
  1332. " z";
  1333. }
  1334. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1335. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1336. break;
  1337. case "flowChartTerminator":
  1338. var x1, x2, y1, cd2 = 180, cd4 = 90, c3d4 = 270;
  1339. x1 = w * 3475 / 21600;
  1340. x2 = w * 18125 / 21600;
  1341. y1 = h * 10800 / 21600;
  1342. //path attrs: w = 21600; h = 21600;
  1343. var d = "M" + x1 + "," + 0 +
  1344. " L" + x2 + "," + 0 +
  1345. shapeArc(x2, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1346. " L" + x1 + "," + h +
  1347. shapeArc(x1, h / 2, x1, y1, cd4, cd4 + cd2, false).replace("M", "L") +
  1348. " z";
  1349. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1350. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1351. break;
  1352. case "flowChartPunchedTape":
  1353. var x1, x1, y1, y2, cd2 = 180;
  1354. x1 = w * 5 / 20;
  1355. y1 = h * 2 / 20;
  1356. y2 = h * 18 / 20;
  1357. var d = "M" + 0 + "," + y1 +
  1358. shapeArc(x1, y1, x1, y1, cd2, 0, false).replace("M", "L") +
  1359. shapeArc(w * (3 / 4), y1, x1, y1, cd2, 360, false).replace("M", "L") +
  1360. " L" + w + "," + y2 +
  1361. shapeArc(w * (3 / 4), y2, x1, y1, 0, -cd2, false).replace("M", "L") +
  1362. shapeArc(x1, y2, x1, y1, 0, cd2, false).replace("M", "L") +
  1363. " z";
  1364. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1365. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1366. break;
  1367. case "flowChartOnlineStorage":
  1368. var x1, y1, c3d4 = 270, cd4 = 90;
  1369. x1 = w * 1 / 6;
  1370. y1 = h * 3 / 6;
  1371. var d = "M" + x1 + "," + 0 +
  1372. " L" + w + "," + 0 +
  1373. shapeArc(w, h / 2, x1, y1, c3d4, 90, false).replace("M", "L") +
  1374. " L" + x1 + "," + h +
  1375. shapeArc(x1, h / 2, x1, y1, cd4, 270, false).replace("M", "L") +
  1376. " z";
  1377. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1378. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1379. break;
  1380. case "flowChartDisplay":
  1381. var x1, x2, y1, c3d4 = 270, cd2 = 180;
  1382. x1 = w * 1 / 6;
  1383. x2 = w * 5 / 6;
  1384. y1 = h * 3 / 6;
  1385. //path attrs: w = 6; h = 6;
  1386. var d = "M" + 0 + "," + y1 +
  1387. " L" + x1 + "," + 0 +
  1388. " L" + x2 + "," + 0 +
  1389. shapeArc(w, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1390. " L" + x1 + "," + h +
  1391. " z";
  1392. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1393. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1394. break;
  1395. case "flowChartDelay":
  1396. var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90;
  1397. var d = "M" + 0 + "," + 0 +
  1398. " L" + wd2 + "," + 0 +
  1399. shapeArc(wd2, hd2, wd2, hd2, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1400. " L" + 0 + "," + h +
  1401. " z";
  1402. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1403. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1404. break;
  1405. case "flowChartMagneticTape":
  1406. var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90;
  1407. var idy, ib, ang1;
  1408. idy = hd2 * Math.sin(Math.PI / 4);
  1409. ib = hd2 + idy;
  1410. ang1 = Math.atan(h / w);
  1411. var ang1Dg = ang1 * 180 / Math.PI;
  1412. var d = "M" + wd2 + "," + h +
  1413. shapeArc(wd2, hd2, wd2, hd2, cd4, cd2, false).replace("M", "L") +
  1414. shapeArc(wd2, hd2, wd2, hd2, cd2, c3d4, false).replace("M", "L") +
  1415. shapeArc(wd2, hd2, wd2, hd2, c3d4, 360, false).replace("M", "L") +
  1416. shapeArc(wd2, hd2, wd2, hd2, 0, ang1Dg, false).replace("M", "L") +
  1417. " L" + w + "," + ib +
  1418. " L" + w + "," + h +
  1419. " z";
  1420. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1421. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1422. break;
  1423. case "ellipse":
  1424. case "flowChartConnector":
  1425. case "flowChartSummingJunction":
  1426. case "flowChartOr":
  1427. result += "<ellipse cx='" + (w / 2) + "' cy='" + (h / 2) + "' rx='" + (w / 2) + "' ry='" + (h / 2) + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1428. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1429. if (shapType == "flowChartOr") {
  1430. result += " <polyline points='" + w / 2 + " " + 0 + "," + w / 2 + " " + h + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1431. result += " <polyline points='" + 0 + " " + h / 2 + "," + w + " " + h / 2 + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1432. } else if (shapType == "flowChartSummingJunction") {
  1433. var idx, idy, il, ir, it, ib, hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  1434. var angVal = Math.PI / 4;
  1435. idx = wd2 * Math.cos(angVal);
  1436. idy = hd2 * Math.sin(angVal);
  1437. il = hc - idx;
  1438. ir = hc + idx;
  1439. it = vc - idy;
  1440. ib = vc + idy;
  1441. result += " <polyline points='" + il + " " + it + "," + ir + " " + ib + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1442. result += " <polyline points='" + ir + " " + it + "," + il + " " + ib + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1443. }
  1444. break;
  1445. case "roundRect":
  1446. case "round1Rect":
  1447. case "round2DiagRect":
  1448. case "round2SameRect":
  1449. case "snip1Rect":
  1450. case "snip2DiagRect":
  1451. case "snip2SameRect":
  1452. case "flowChartAlternateProcess":
  1453. case "flowChartPunchedCard":
  1454. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1455. var sAdj1, sAdj1_val;// = 0.33334;
  1456. var sAdj2, sAdj2_val;// = 0.33334;
  1457. var shpTyp, adjTyp;
  1458. if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor === Array) {
  1459. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1460. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1461. if (sAdj_name == "adj1") {
  1462. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1463. sAdj1_val = parseInt(sAdj1.substr(4)) / 50000;
  1464. } else if (sAdj_name == "adj2") {
  1465. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1466. sAdj2_val = parseInt(sAdj2.substr(4)) / 50000;
  1467. }
  1468. }
  1469. } else if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor !== Array) {
  1470. var sAdj = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]);
  1471. sAdj1_val = parseInt(sAdj.substr(4)) / 50000;
  1472. sAdj2_val = 0;
  1473. }
  1474. //console.log("shapType: ",shapType,",node: ",node )
  1475. var tranglRott = "";
  1476. switch (shapType) {
  1477. case "roundRect":
  1478. case "flowChartAlternateProcess":
  1479. shpTyp = "round";
  1480. adjTyp = "cornrAll";
  1481. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1482. sAdj2_val = 0;
  1483. break;
  1484. case "round1Rect":
  1485. shpTyp = "round";
  1486. adjTyp = "cornr1";
  1487. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1488. sAdj2_val = 0;
  1489. break;
  1490. case "round2DiagRect":
  1491. shpTyp = "round";
  1492. adjTyp = "diag";
  1493. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1494. if (sAdj2_val === undefined) sAdj2_val = 0;
  1495. break;
  1496. case "round2SameRect":
  1497. shpTyp = "round";
  1498. adjTyp = "cornr2";
  1499. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1500. if (sAdj2_val === undefined) sAdj2_val = 0;
  1501. break;
  1502. case "snip1Rect":
  1503. case "flowChartPunchedCard":
  1504. shpTyp = "snip";
  1505. adjTyp = "cornr1";
  1506. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1507. sAdj2_val = 0;
  1508. if (shapType == "flowChartPunchedCard") {
  1509. tranglRott = "transform='translate(" + w + ",0) scale(-1,1)'";
  1510. }
  1511. break;
  1512. case "snip2DiagRect":
  1513. shpTyp = "snip";
  1514. adjTyp = "diag";
  1515. if (sAdj1_val === undefined) sAdj1_val = 0;
  1516. if (sAdj2_val === undefined) sAdj2_val = 0.33334;
  1517. break;
  1518. case "snip2SameRect":
  1519. shpTyp = "snip";
  1520. adjTyp = "cornr2";
  1521. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1522. if (sAdj2_val === undefined) sAdj2_val = 0;
  1523. break;
  1524. }
  1525. var d_val = shapeSnipRoundRect(w, h, sAdj1_val, sAdj2_val, shpTyp, adjTyp);
  1526. result += "<path " + tranglRott + " d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1527. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1528. break;
  1529. case "snipRoundRect":
  1530. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1531. var sAdj1, sAdj1_val = 0.33334;
  1532. var sAdj2, sAdj2_val = 0.33334;
  1533. if (shapAdjst_ary !== undefined) {
  1534. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1535. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1536. if (sAdj_name == "adj1") {
  1537. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1538. sAdj1_val = parseInt(sAdj1.substr(4)) / 50000;
  1539. } else if (sAdj_name == "adj2") {
  1540. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1541. sAdj2_val = parseInt(sAdj2.substr(4)) / 50000;
  1542. }
  1543. }
  1544. }
  1545. var d_val = "M0," + h + " L" + w + "," + h + " L" + w + "," + (h / 2) * sAdj2_val +
  1546. " L" + (w / 2 + (w / 2) * (1 - sAdj2_val)) + ",0 L" + (w / 2) * sAdj1_val + ",0 Q0,0 0," + (h / 2) * sAdj1_val + " z";
  1547. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1548. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1549. break;
  1550. case "bentConnector2":
  1551. var d = "";
  1552. if (isFlipV) {
  1553. d = "M 0 " + w + " L " + h + " " + w + " L " + h + " 0";
  1554. } else {
  1555. d = "M " + w + " 0 L " + w + " " + h + " L 0 " + h;
  1556. }
  1557. result += "<path d='" + d + "' stroke='" + border.color +
  1558. "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' fill='none' ";
  1559. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  1560. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  1561. }
  1562. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  1563. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  1564. }
  1565. result += "/>";
  1566. break;
  1567. case "rtTriangle":
  1568. result += " <polygon points='0 0,0 " + h + "," + w + " " + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1569. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1570. break;
  1571. case "triangle":
  1572. case "flowChartExtract":
  1573. case "flowChartMerge":
  1574. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1575. var shapAdjst_val = 0.5;
  1576. if (shapAdjst !== undefined) {
  1577. shapAdjst_val = parseInt(shapAdjst.substr(4)) * 96 / 9144000;
  1578. //console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nshapAdjst_val: "+shapAdjst_val);
  1579. }
  1580. var tranglRott = "";
  1581. if (shapType == "flowChartMerge") {
  1582. tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'";
  1583. }
  1584. result += " <polygon " + tranglRott + " points='" + (w * shapAdjst_val) + " 0,0 " + h + "," + w + " " + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1585. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1586. break;
  1587. case "diamond":
  1588. case "flowChartDecision":
  1589. case "flowChartSort":
  1590. result += " <polygon points='" + (w / 2) + " 0,0 " + (h / 2) + "," + (w / 2) + " " + h + "," + w + " " + (h / 2) + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1591. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1592. if (shapType == "flowChartSort") {
  1593. result += " <polyline points='0 " + h / 2 + "," + w + " " + h / 2 + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1594. }
  1595. break;
  1596. case "trapezoid":
  1597. case "flowChartManualOperation":
  1598. case "flowChartManualInput":
  1599. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1600. var adjst_val = 0.2;
  1601. var max_adj_const = 0.7407;
  1602. if (shapAdjst !== undefined) {
  1603. var adjst = parseInt(shapAdjst.substr(4)) * 96 / 9144000;
  1604. adjst_val = (adjst * 0.5) / max_adj_const;
  1605. // console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nadjst_val: "+adjst_val);
  1606. }
  1607. var cnstVal = 0;
  1608. var tranglRott = "";
  1609. if (shapType == "flowChartManualOperation") {
  1610. tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'";
  1611. }
  1612. if (shapType == "flowChartManualInput") {
  1613. adjst_val = 0;
  1614. cnstVal = h / 5;
  1615. }
  1616. result += " <polygon " + tranglRott + " points='" + (w * adjst_val) + " " + cnstVal + ",0 " + h + "," + w + " " + h + "," + (1 - adjst_val) * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1617. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1618. break;
  1619. case "parallelogram":
  1620. case "flowChartInputOutput":
  1621. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1622. var adjst_val = 0.25;
  1623. var max_adj_const;
  1624. if (w > h) {
  1625. max_adj_const = w / h;
  1626. } else {
  1627. max_adj_const = h / w;
  1628. }
  1629. if (shapAdjst !== undefined) {
  1630. var adjst = parseInt(shapAdjst.substr(4)) / 100000;
  1631. adjst_val = adjst / max_adj_const;
  1632. //console.log("w: "+w+"\nh: "+h+"\nadjst: "+adjst_val+"\nmax_adj_const: "+max_adj_const);
  1633. }
  1634. result += " <polygon points='" + adjst_val * w + " 0,0 " + h + "," + (1 - adjst_val) * w + " " + h + "," + w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1635. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1636. break;
  1637. break;
  1638. case "pentagon":
  1639. result += " <polygon points='" + (0.5 * w) + " 0,0 " + (0.375 * h) + "," + (0.15 * w) + " " + h + "," + 0.85 * w + " " + h + "," + w + " " + 0.375 * h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1640. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1641. break;
  1642. case "hexagon":
  1643. case "flowChartPreparation":
  1644. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1645. var adj = 25000 * 96 / 914400;
  1646. var vf = 115470 * 96 / 914400;;
  1647. var cnstVal1 = 50000 * 96 / 914400;
  1648. var cnstVal2 = 100000 * 96 / 914400;
  1649. var angVal1 = 60 * Math.PI / 180;
  1650. if (shapAdjst !== undefined) {
  1651. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  1652. }
  1653. var maxAdj, a, shd2, x1, x2, dy1, y1, y2, vc = h / 2, hd2 = h / 2;
  1654. var ss = Math.min(w, h);
  1655. maxAdj = cnstVal1 * w / ss;
  1656. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  1657. shd2 = hd2 * vf / cnstVal2;
  1658. x1 = ss * a / cnstVal2;
  1659. x2 = w - x1;
  1660. dy1 = shd2 * Math.sin(angVal1);
  1661. y1 = vc - dy1;
  1662. y2 = vc + dy1;
  1663. var d = "M" + 0 + "," + vc +
  1664. " L" + x1 + "," + y1 +
  1665. " L" + x2 + "," + y1 +
  1666. " L" + w + "," + vc +
  1667. " L" + x2 + "," + y2 +
  1668. " L" + x1 + "," + y2 +
  1669. " z";
  1670. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1671. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1672. break;
  1673. case "heptagon":
  1674. result += " <polygon points='" + (0.5 * w) + " 0," + w / 8 + " " + h / 4 + ",0 " + (5 / 8) * h + "," + w / 4 + " " + h + "," + (3 / 4) * w + " " + h + "," +
  1675. w + " " + (5 / 8) * h + "," + (7 / 8) * w + " " + h / 4 + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1676. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1677. break;
  1678. case "octagon":
  1679. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1680. var adj1 = 0.25;
  1681. if (shapAdjst !== undefined) {
  1682. adj1 = parseInt(shapAdjst.substr(4)) / 100000;
  1683. }
  1684. var adj2 = (1 - adj1);
  1685. //console.log("adj1: "+adj1+"\nadj2: "+adj2);
  1686. result += " <polygon points='" + adj1 * w + " 0,0 " + adj1 * h + ",0 " + adj2 * h + "," + adj1 * w + " " + h + "," + adj2 * w + " " + h + "," +
  1687. w + " " + adj2 * h + "," + w + " " + adj1 * h + "," + adj2 * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1688. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1689. break;
  1690. case "decagon":
  1691. result += " <polygon points='" + (3 / 8) * w + " 0," + w / 8 + " " + h / 8 + ",0 " + h / 2 + "," + w / 8 + " " + (7 / 8) * h + "," + (3 / 8) * w + " " + h + "," +
  1692. (5 / 8) * w + " " + h + "," + (7 / 8) * w + " " + (7 / 8) * h + "," + w + " " + h / 2 + "," + (7 / 8) * w + " " + h / 8 + "," + (5 / 8) * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1693. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1694. break;
  1695. case "dodecagon":
  1696. result += " <polygon points='" + (3 / 8) * w + " 0," + w / 8 + " " + h / 8 + ",0 " + (3 / 8) * h + ",0 " + (5 / 8) * h + "," + w / 8 + " " + (7 / 8) * h + "," + (3 / 8) * w + " " + h + "," +
  1697. (5 / 8) * w + " " + h + "," + (7 / 8) * w + " " + (7 / 8) * h + "," + w + " " + (5 / 8) * h + "," + w + " " + (3 / 8) * h + "," + (7 / 8) * w + " " + h / 8 + "," + (5 / 8) * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1698. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1699. break;
  1700. case "star4":
  1701. case "star5":
  1702. case "star6":
  1703. case "star7":
  1704. case "star8":
  1705. case "star10":
  1706. case "star12":
  1707. case "star16":
  1708. case "star24":
  1709. case "star32":
  1710. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  1711. var starNum = shapType.substr(4);
  1712. var shapAdjst1, adj;
  1713. switch (starNum) {
  1714. case "4":
  1715. adj = 30;
  1716. break;
  1717. case "5":
  1718. adj = 40;
  1719. break;
  1720. case "6":
  1721. adj = 60;
  1722. break;
  1723. case "7":
  1724. adj = 70;
  1725. break;
  1726. case "8":
  1727. adj = 77;
  1728. break;
  1729. case "10":
  1730. adj = 86;
  1731. break;
  1732. case "12":
  1733. case "16":
  1734. case "24":
  1735. case "32":
  1736. adj = 75;
  1737. break;
  1738. }
  1739. if (shapAdjst !== undefined) {
  1740. shapAdjst1 = getTextByPathList(shapAdjst, ["attrs", "fmla"]);
  1741. if (shapAdjst1 === undefined) {
  1742. shapAdjst1 = shapAdjst[0]["attrs"]["fmla"];
  1743. }
  1744. if (shapAdjst1 !== undefined) {
  1745. adj = 2 * parseInt(shapAdjst1.substr(4)) / 1000;
  1746. }
  1747. }
  1748. var points = shapeStar(adj, starNum);
  1749. result += " <polygon points='" + points + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1750. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1751. break;
  1752. case "pie":
  1753. case "pieWedge":
  1754. case "arc":
  1755. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1756. var adj1, adj2, H, shapAdjst1, shapAdjst2, isClose;
  1757. if (shapType == "pie") {
  1758. adj1 = 0;
  1759. adj2 = 270;
  1760. H = h;
  1761. isClose = true;
  1762. } else if (shapType == "pieWedge") {
  1763. adj1 = 180;
  1764. adj2 = 270;
  1765. H = 2 * h;
  1766. isClose = true;
  1767. } else if (shapType == "arc") {
  1768. adj1 = 270;
  1769. adj2 = 0;
  1770. H = h;
  1771. isClose = false;
  1772. }
  1773. if (shapAdjst !== undefined) {
  1774. shapAdjst1 = getTextByPathList(shapAdjst, ["attrs", "fmla"]);
  1775. shapAdjst2 = shapAdjst1;
  1776. if (shapAdjst1 === undefined) {
  1777. shapAdjst1 = shapAdjst[0]["attrs"]["fmla"];
  1778. shapAdjst2 = shapAdjst[1]["attrs"]["fmla"];
  1779. }
  1780. if (shapAdjst1 !== undefined) {
  1781. adj1 = parseInt(shapAdjst1.substr(4)) / 60000;
  1782. }
  1783. if (shapAdjst2 !== undefined) {
  1784. adj2 = parseInt(shapAdjst2.substr(4)) / 60000;
  1785. }
  1786. }
  1787. var pieVals = shapePie(H, w, adj1, adj2, isClose);
  1788. //console.log("shapType: ",shapType,"\nimgFillFlg: ",imgFillFlg,"\ngrndFillFlg: ",grndFillFlg,"\nshpId: ",shpId,"\nfillColor: ",fillColor);
  1789. result += "<path d='" + pieVals[0] + "' transform='" + pieVals[1] + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1790. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1791. break;
  1792. case "chord":
  1793. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1794. var sAdj1, sAdj1_val = 45;
  1795. var sAdj2, sAdj2_val = 270;
  1796. if (shapAdjst_ary !== undefined) {
  1797. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1798. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1799. if (sAdj_name == "adj1") {
  1800. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1801. sAdj1_val = parseInt(sAdj1.substr(4)) / 60000;
  1802. } else if (sAdj_name == "adj2") {
  1803. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1804. sAdj2_val = parseInt(sAdj2.substr(4)) / 60000;
  1805. }
  1806. }
  1807. }
  1808. var hR = h / 2;
  1809. var wR = w / 2;
  1810. var d_val = shapeArc(wR, hR, wR, hR, sAdj1_val, sAdj2_val, true);
  1811. //console.log("shapType: ",shapType,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val)
  1812. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1813. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1814. break;
  1815. case "frame":
  1816. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1817. var adj1 = 12500 * 96 / 914400;
  1818. var cnstVal1 = 50000 * 96 / 914400;
  1819. var cnstVal2 = 100000 * 96 / 914400;
  1820. if (shapAdjst !== undefined) {
  1821. adj1 = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  1822. }
  1823. var a1, x1, x4, y4;
  1824. if (adj1 < 0) a1 = 0
  1825. else if (adj1 > cnstVal1) a1 = cnstVal1
  1826. else a1 = adj1
  1827. x1 = Math.min(w, h) * a1 / cnstVal2;
  1828. x4 = w - x1;
  1829. y4 = h - x1;
  1830. var d = "M" + 0 + "," + 0 +
  1831. " L" + w + "," + 0 +
  1832. " L" + w + "," + h +
  1833. " L" + 0 + "," + h +
  1834. " z" +
  1835. "M" + x1 + "," + x1 +
  1836. " L" + x1 + "," + y4 +
  1837. " L" + x4 + "," + y4 +
  1838. " L" + x4 + "," + x1 +
  1839. " z";
  1840. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1841. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1842. break;
  1843. case "donut":
  1844. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1845. var adj = 25000 * 96 / 914400;
  1846. var cnstVal1 = 50000 * 96 / 914400;
  1847. var cnstVal2 = 100000 * 96 / 914400;
  1848. if (shapAdjst !== undefined) {
  1849. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  1850. }
  1851. var a, dr, iwd2, ihd2;
  1852. if (adj < 0) a = 0
  1853. else if (adj > cnstVal1) a = cnstVal1
  1854. else a = adj
  1855. dr = Math.min(w, h) * a / cnstVal2;
  1856. iwd2 = w / 2 - dr;
  1857. ihd2 = h / 2 - dr;
  1858. var d = "M" + 0 + "," + h / 2 +
  1859. shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") +
  1860. shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") +
  1861. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  1862. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") +
  1863. " z" +
  1864. "M" + dr + "," + h / 2 +
  1865. shapeArc(w / 2, h / 2, iwd2, ihd2, 180, 90, false).replace("M", "L") +
  1866. shapeArc(w / 2, h / 2, iwd2, ihd2, 90, 0, false).replace("M", "L") +
  1867. shapeArc(w / 2, h / 2, iwd2, ihd2, 0, -90, false).replace("M", "L") +
  1868. shapeArc(w / 2, h / 2, iwd2, ihd2, 270, 180, false).replace("M", "L") +
  1869. " z";
  1870. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1871. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1872. break;
  1873. case "noSmoking":
  1874. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1875. var adj = 18750 * 96 / 914400;
  1876. var cnstVal1 = 50000 * 96 / 914400;
  1877. var cnstVal2 = 100000 * 96 / 914400;
  1878. if (shapAdjst !== undefined) {
  1879. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  1880. }
  1881. var a, dr, iwd2, ihd2, ang, ang2rad, ct, st, m, n, drd2, dang, dang2, swAng, t3, stAng1, stAng2;
  1882. if (adj < 0) a = 0
  1883. else if (adj > cnstVal1) a = cnstVal1
  1884. else a = adj
  1885. dr = Math.min(w, h) * a / cnstVal2;
  1886. iwd2 = w / 2 - dr;
  1887. ihd2 = h / 2 - dr;
  1888. ang = Math.atan(h / w);
  1889. //ang2rad = ang*Math.PI/180;
  1890. ct = ihd2 * Math.cos(ang);
  1891. st = iwd2 * Math.sin(ang);
  1892. m = Math.sqrt(ct * ct + st * st); //"mod ct st 0"
  1893. n = iwd2 * ihd2 / m;
  1894. drd2 = dr / 2;
  1895. dang = Math.atan(drd2 / n);
  1896. dang2 = dang * 2;
  1897. swAng = -Math.PI + dang2;
  1898. //t3 = Math.atan(h/w);
  1899. stAng1 = ang - dang;
  1900. stAng2 = stAng1 - Math.PI;
  1901. var ct1, st1, m1, n1, dx1, dy1, x1, y1, y1, y2;
  1902. ct1 = ihd2 * Math.cos(stAng1);
  1903. st1 = iwd2 * Math.sin(stAng1);
  1904. m1 = Math.sqrt(ct1 * ct1 + st1 * st1); //"mod ct1 st1 0"
  1905. n1 = iwd2 * ihd2 / m1;
  1906. dx1 = n1 * Math.cos(stAng1);
  1907. dy1 = n1 * Math.sin(stAng1);
  1908. x1 = w / 2 + dx1;
  1909. y1 = h / 2 + dy1;
  1910. x2 = w / 2 - dx1;
  1911. y2 = h / 2 - dy1;
  1912. var stAng1deg = stAng1 * 180 / Math.PI;
  1913. var stAng2deg = stAng2 * 180 / Math.PI;
  1914. var swAng2deg = swAng * 180 / Math.PI;
  1915. var d = "M" + 0 + "," + h / 2 +
  1916. shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") +
  1917. shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") +
  1918. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  1919. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") +
  1920. " z" +
  1921. "M" + x1 + "," + y1 +
  1922. shapeArc(w / 2, h / 2, iwd2, ihd2, stAng1deg, (stAng1deg + swAng2deg), false).replace("M", "L") +
  1923. " z" +
  1924. "M" + x2 + "," + y2 +
  1925. shapeArc(w / 2, h / 2, iwd2, ihd2, stAng2deg, (stAng2deg + swAng2deg), false).replace("M", "L") +
  1926. " z";
  1927. //console.log("adj: ",adj,"x1:",x1,",y1:",y1," x2:",x2,",y2:",y2,",stAng1:",stAng1,",stAng1deg:",stAng1deg,",stAng2:",stAng2,",stAng2deg:",stAng2deg,",swAng:",swAng,",swAng2deg:",swAng2deg)
  1928. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1929. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1930. break;
  1931. case "halfFrame":
  1932. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1933. var sAdj1, sAdj1_val = 3.5;
  1934. var sAdj2, sAdj2_val = 3.5;
  1935. var cnsVal = 100000 * 96 / 914400;
  1936. if (shapAdjst_ary !== undefined) {
  1937. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1938. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1939. if (sAdj_name == "adj1") {
  1940. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1941. sAdj1_val = parseInt(sAdj1.substr(4)) * 96 / 914400;
  1942. } else if (sAdj_name == "adj2") {
  1943. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1944. sAdj2_val = parseInt(sAdj2.substr(4)) * 96 / 914400;
  1945. }
  1946. }
  1947. }
  1948. var minWH = Math.min(w, h);
  1949. var maxAdj2 = (cnsVal * w) / minWH;
  1950. var a1, a2;
  1951. if (sAdj2_val < 0) a2 = 0
  1952. else if (sAdj2_val > maxAdj2) a2 = maxAdj2
  1953. else a2 = sAdj2_val
  1954. var x1 = (minWH * a2) / cnsVal;
  1955. var g1 = h * x1 / w;
  1956. var g2 = h - g1;
  1957. var maxAdj1 = (cnsVal * g2) / minWH;
  1958. if (sAdj1_val < 0) a1 = 0
  1959. else if (sAdj1_val > maxAdj1) a1 = maxAdj1
  1960. else a1 = sAdj1_val
  1961. var y1 = minWH * a1 / cnsVal;
  1962. var dx2 = y1 * w / h;
  1963. var x2 = w - dx2;
  1964. var dy2 = x1 * h / w;
  1965. var y2 = h - dy2;
  1966. var d = "M0,0" +
  1967. " L" + w + "," + 0 +
  1968. " L" + x2 + "," + y1 +
  1969. " L" + x1 + "," + y1 +
  1970. " L" + x1 + "," + y2 +
  1971. " L0," + h + " z";
  1972. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1973. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1974. //console.log("w: ",w,", h: ",h,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val,",maxAdj1: ",maxAdj1,",maxAdj2: ",maxAdj2)
  1975. break;
  1976. case "blockArc":
  1977. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1978. var sAdj1, adj1 = 180;
  1979. var sAdj2, adj2 = 0;
  1980. var sAdj3, adj3 = 25000 * 96 / 914400;
  1981. var cnstVal1 = 50000 * 96 / 914400;
  1982. var cnstVal2 = 100000 * 96 / 914400;
  1983. if (shapAdjst_ary !== undefined) {
  1984. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1985. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1986. if (sAdj_name == "adj1") {
  1987. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1988. adj1 = parseInt(sAdj1.substr(4)) / 60000;
  1989. } else if (sAdj_name == "adj2") {
  1990. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1991. adj2 = parseInt(sAdj2.substr(4)) / 60000;
  1992. } else if (sAdj_name == "adj3") {
  1993. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1994. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  1995. }
  1996. }
  1997. }
  1998. var stAng, istAng, a3, sw11, sw12, swAng, iswAng;
  1999. var cd1 = 360;
  2000. if (adj1 < 0) stAng = 0
  2001. else if (adj1 > cd1) stAng = cd1
  2002. else stAng = adj1 //180
  2003. if (adj2 < 0) istAng = 0
  2004. else if (adj2 > cd1) istAng = cd1
  2005. else istAng = adj2 //0
  2006. if (adj3 < 0) a3 = 0
  2007. else if (adj3 > cnstVal1) a3 = cnstVal1
  2008. else a3 = adj3
  2009. sw11 = istAng - stAng; // -180
  2010. sw12 = sw11 + cd1; //180
  2011. swAng = (sw11 > 0) ? sw11 : sw12; //180
  2012. iswAng = -swAng; //-180
  2013. var endAng = stAng + swAng;
  2014. var iendAng = istAng + iswAng;
  2015. var wt1, ht1, dx1, dy1, x1, y1, stRd, istRd, wd2, hd2, hc, vc;
  2016. stRd = stAng * (Math.PI) / 180;
  2017. istRd = istAng * (Math.PI) / 180;
  2018. wd2 = w / 2;
  2019. hd2 = h / 2;
  2020. hc = w / 2;
  2021. vc = h / 2;
  2022. if (stAng > 90 && stAng < 270) {
  2023. wt1 = wd2 * (Math.sin((Math.PI) / 2 - stRd));
  2024. ht1 = hd2 * (Math.cos((Math.PI) / 2 - stRd));
  2025. dx1 = wd2 * (Math.cos(Math.atan(ht1 / wt1)));
  2026. dy1 = hd2 * (Math.sin(Math.atan(ht1 / wt1)));
  2027. x1 = hc - dx1;
  2028. y1 = vc - dy1;
  2029. } else {
  2030. wt1 = wd2 * (Math.sin(stRd));
  2031. ht1 = hd2 * (Math.cos(stRd));
  2032. dx1 = wd2 * (Math.cos(Math.atan(wt1 / ht1)));
  2033. dy1 = hd2 * (Math.sin(Math.atan(wt1 / ht1)));
  2034. x1 = hc + dx1;
  2035. y1 = vc + dy1;
  2036. }
  2037. var dr, iwd2, ihd2, wt2, ht2, dx2, dy2, x2, y2;
  2038. dr = Math.min(w, h) * a3 / cnstVal2;
  2039. iwd2 = wd2 - dr;
  2040. ihd2 = hd2 - dr;
  2041. //console.log("stAng: ",stAng," swAng: ",swAng ," endAng:",endAng)
  2042. if ((endAng <= 450 && endAng > 270) || ((endAng >= 630 && endAng < 720))) {
  2043. wt2 = iwd2 * (Math.sin(istRd));
  2044. ht2 = ihd2 * (Math.cos(istRd));
  2045. dx2 = iwd2 * (Math.cos(Math.atan(wt2 / ht2)));
  2046. dy2 = ihd2 * (Math.sin(Math.atan(wt2 / ht2)));
  2047. x2 = hc + dx2;
  2048. y2 = vc + dy2;
  2049. } else {
  2050. wt2 = iwd2 * (Math.sin((Math.PI) / 2 - istRd));
  2051. ht2 = ihd2 * (Math.cos((Math.PI) / 2 - istRd));
  2052. dx2 = iwd2 * (Math.cos(Math.atan(ht2 / wt2)));
  2053. dy2 = ihd2 * (Math.sin(Math.atan(ht2 / wt2)));
  2054. x2 = hc - dx2;
  2055. y2 = vc - dy2;
  2056. }
  2057. var d = "M" + x1 + "," + y1 +
  2058. shapeArc(wd2, hd2, wd2, hd2, stAng, endAng, false).replace("M", "L") +
  2059. " L" + x2 + "," + y2 +
  2060. shapeArc(wd2, hd2, iwd2, ihd2, istAng, iendAng, false).replace("M", "L") +
  2061. " z";
  2062. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2063. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2064. break;
  2065. case "bracePair":
  2066. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2067. var adj = 8333 * 96 / 914400;
  2068. var cnstVal1 = 25000 * 96 / 914400;
  2069. var cnstVal2 = 50000 * 96 / 914400;
  2070. var cnstVal3 = 100000 * 96 / 914400;
  2071. if (shapAdjst !== undefined) {
  2072. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2073. }
  2074. var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, x3, x4, y2, y3, y4;
  2075. if (adj < 0) a = 0
  2076. else if (adj > cnstVal1) a = cnstVal1
  2077. else a = adj
  2078. var minWH = Math.min(w, h);
  2079. x1 = minWH * a / cnstVal3;
  2080. x2 = minWH * a / cnstVal2;
  2081. x3 = w - x2;
  2082. x4 = w - x1;
  2083. y2 = vc - x1;
  2084. y3 = vc + x1;
  2085. y4 = h - x1;
  2086. //console.log("w:",w," h:",h," x1:",x1," x2:",x2," x3:",x3," x4:",x4," y2:",y2," y3:",y3," y4:",y4)
  2087. var d = "M" + x2 + "," + h +
  2088. shapeArc(x2, y4, x1, x1, cd4, cd2, false).replace("M", "L") +
  2089. " L" + x1 + "," + y3 +
  2090. shapeArc(0, y3, x1, x1, 0, (-cd4), false).replace("M", "L") +
  2091. shapeArc(0, y2, x1, x1, cd4, 0, false).replace("M", "L") +
  2092. " L" + x1 + "," + x1 +
  2093. shapeArc(x2, x1, x1, x1, cd2, c3d4, false).replace("M", "L") +
  2094. " M" + x3 + "," + 0 +
  2095. shapeArc(x3, x1, x1, x1, c3d4, cd, false).replace("M", "L") +
  2096. " L" + x4 + "," + y2 +
  2097. shapeArc(w, y2, x1, x1, cd2, cd4, false).replace("M", "L") +
  2098. shapeArc(w, y3, x1, x1, c3d4, cd2, false).replace("M", "L") +
  2099. " L" + x4 + "," + y4 +
  2100. shapeArc(x3, y4, x1, x1, 0, cd4, false).replace("M", "L");
  2101. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2102. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2103. break;
  2104. case "leftBrace":
  2105. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2106. var sAdj1, adj1 = 8333 * 96 / 914400;
  2107. var sAdj2, adj2 = 50000 * 96 / 914400;
  2108. var cnstVal2 = 100000 * 96 / 914400;
  2109. if (shapAdjst_ary !== undefined) {
  2110. for (var i = 0; i < shapAdjst_ary.length; i++) {
  2111. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  2112. if (sAdj_name == "adj1") {
  2113. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2114. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  2115. } else if (sAdj_name == "adj2") {
  2116. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2117. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  2118. }
  2119. }
  2120. }
  2121. var vc = h / 2, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4;
  2122. if (adj2 < 0) a2 = 0
  2123. else if (adj2 > cnstVal2) a2 = cnstVal2
  2124. else a2 = adj2
  2125. var minWH = Math.min(w, h);
  2126. q1 = cnstVal2 - a2;
  2127. if (q1 < a2) q2 = q1
  2128. else q2 = a2
  2129. q3 = q2 / 2;
  2130. var maxAdj1 = q3 * h / minWH;
  2131. if (adj1 < 0) a1 = 0
  2132. else if (adj1 > maxAdj1) a1 = maxAdj1
  2133. else a1 = adj1
  2134. y1 = minWH * a1 / cnstVal2;
  2135. y3 = h * a2 / cnstVal2;
  2136. y2 = y3 - y1;
  2137. y4 = y3 + y1;
  2138. //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y3:",y3," y4:",y4," maxAdj1:",maxAdj1)
  2139. var d = "M" + w + "," + h +
  2140. shapeArc(w, h - y1, w / 2, y1, cd4, cd2, false).replace("M", "L") +
  2141. " L" + w / 2 + "," + y4 +
  2142. shapeArc(0, y4, w / 2, y1, 0, (-cd4), false).replace("M", "L") +
  2143. shapeArc(0, y2, w / 2, y1, cd4, 0, false).replace("M", "L") +
  2144. " L" + w / 2 + "," + y1 +
  2145. shapeArc(w, y1, w / 2, y1, cd2, c3d4, false).replace("M", "L");
  2146. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2147. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2148. break;
  2149. case "rightBrace":
  2150. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2151. var sAdj1, adj1 = 8333 * 96 / 914400;
  2152. var sAdj2, adj2 = 50000 * 96 / 914400;
  2153. var cnstVal2 = 100000 * 96 / 914400;
  2154. if (shapAdjst_ary !== undefined) {
  2155. for (var i = 0; i < shapAdjst_ary.length; i++) {
  2156. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  2157. if (sAdj_name == "adj1") {
  2158. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2159. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  2160. } else if (sAdj_name == "adj2") {
  2161. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2162. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  2163. }
  2164. }
  2165. }
  2166. var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4;
  2167. if (adj2 < 0) a2 = 0
  2168. else if (adj2 > cnstVal2) a2 = cnstVal2
  2169. else a2 = adj2
  2170. var minWH = Math.min(w, h);
  2171. q1 = cnstVal2 - a2;
  2172. if (q1 < a2) q2 = q1
  2173. else q2 = a2
  2174. q3 = q2 / 2;
  2175. var maxAdj1 = q3 * h / minWH;
  2176. if (adj1 < 0) a1 = 0
  2177. else if (adj1 > maxAdj1) a1 = maxAdj1
  2178. else a1 = adj1
  2179. y1 = minWH * a1 / cnstVal2;
  2180. y3 = h * a2 / cnstVal2;
  2181. y2 = y3 - y1;
  2182. y4 = h - y1;
  2183. //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y2:",y2," y3:",y3," y4:",y4," maxAdj1:",maxAdj1)
  2184. var d = "M" + 0 + "," + 0 +
  2185. shapeArc(0, y1, w / 2, y1, c3d4, cd, false).replace("M", "L") +
  2186. " L" + w / 2 + "," + y2 +
  2187. shapeArc(w, y2, w / 2, y1, cd2, cd4, false).replace("M", "L") +
  2188. shapeArc(w, y3 + y1, w / 2, y1, c3d4, cd2, false).replace("M", "L") +
  2189. " L" + w / 2 + "," + y4 +
  2190. shapeArc(0, y4, w / 2, y1, 0, cd4, false).replace("M", "L");
  2191. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2192. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2193. break;
  2194. case "bracketPair":
  2195. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2196. var adj = 16667 * 96 / 914400;
  2197. var cnstVal1 = 50000 * 96 / 914400;
  2198. var cnstVal2 = 100000 * 96 / 914400;
  2199. if (shapAdjst !== undefined) {
  2200. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2201. }
  2202. var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, y2;
  2203. if (adj < 0) a = 0
  2204. else if (adj > cnstVal1) a = cnstVal1
  2205. else a = adj
  2206. x1 = Math.min(w, h) * a / cnstVal2;
  2207. x2 = r - x1;
  2208. y2 = b - x1;
  2209. //console.log("w:",w," h:",h," x1:",x1," x2:",x2," y2:",y2)
  2210. var d = shapeArc(x1, x1, x1, x1, c3d4, cd2, false) +
  2211. shapeArc(x1, y2, x1, x1, cd2, cd4, false).replace("M", "L") +
  2212. shapeArc(x2, x1, x1, x1, c3d4, (c3d4 + cd4), false) +
  2213. shapeArc(x2, y2, x1, x1, 0, cd4, false).replace("M", "L");
  2214. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2215. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2216. break;
  2217. case "leftBracket":
  2218. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2219. var adj = 8333 * 96 / 914400;
  2220. var cnstVal1 = 50000 * 96 / 914400;
  2221. var cnstVal2 = 100000 * 96 / 914400;
  2222. var maxAdj = cnstVal1 * h / Math.min(w, h);
  2223. if (shapAdjst !== undefined) {
  2224. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2225. }
  2226. var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2;
  2227. if (adj < 0) a = 0
  2228. else if (adj > maxAdj) a = maxAdj
  2229. else a = adj
  2230. y1 = Math.min(w, h) * a / cnstVal2;
  2231. if (y1 > w) y1 = w;
  2232. y2 = b - y1;
  2233. var d = "M" + r + "," + b +
  2234. shapeArc(y1, y2, y1, y1, cd4, cd2, false).replace("M", "L") +
  2235. " L" + 0 + "," + y1 +
  2236. shapeArc(y1, y1, y1, y1, cd2, c3d4, false).replace("M", "L") +
  2237. " L" + r + "," + 0
  2238. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2239. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2240. break;
  2241. case "rightBracket":
  2242. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2243. var adj = 8333 * 96 / 914400;
  2244. var cnstVal1 = 50000 * 96 / 914400;
  2245. var cnstVal2 = 100000 * 96 / 914400;
  2246. var maxAdj = cnstVal1 * h / Math.min(w, h);
  2247. if (shapAdjst !== undefined) {
  2248. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2249. }
  2250. var cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2, y3;
  2251. if (adj < 0) a = 0
  2252. else if (adj > maxAdj) a = maxAdj
  2253. else a = adj
  2254. y1 = Math.min(w, h) * a / cnstVal2;
  2255. y2 = h - y1;
  2256. y3 = w - y1;
  2257. //console.log("w:",w," h:",h," y1:",y1," y2:",y2," y3:",y3)
  2258. var d = "M" + 0 + "," + h +
  2259. shapeArc(y3, y2, y1, y1, cd4, 0, false).replace("M", "L") +
  2260. //" L"+ r + "," + y2 +
  2261. " L" + w + "," + h / 2 +
  2262. shapeArc(y3, y1, y1, y1, cd, c3d4, false).replace("M", "L") +
  2263. " L" + 0 + "," + 0
  2264. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2265. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2266. break;
  2267. case "moon":
  2268. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2269. var adj = 0.5;
  2270. if (shapAdjst !== undefined) {
  2271. adj = parseInt(shapAdjst.substr(4)) / 100000;//*96/914400;;
  2272. }
  2273. var hd2, cd2, cd4;
  2274. hd2 = h / 2;
  2275. cd2 = 180;
  2276. cd4 = 90;
  2277. var adj2 = (1 - adj) * w;
  2278. var d = "M" + w + "," + h +
  2279. shapeArc(w, hd2, w, hd2, cd4, (cd4 + cd2), false).replace("M", "L") +
  2280. shapeArc(w, hd2, adj2, hd2, (cd4 + cd2), cd4, false).replace("M", "L") +
  2281. " z";
  2282. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2283. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2284. break;
  2285. case "corner":
  2286. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2287. var sAdj1, sAdj1_val = 50000 * 96 / 914400;
  2288. var sAdj2, sAdj2_val = 50000 * 96 / 914400;
  2289. var cnsVal = 100000 * 96 / 914400;
  2290. if (shapAdjst_ary !== undefined) {
  2291. for (var i = 0; i < shapAdjst_ary.length; i++) {
  2292. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  2293. if (sAdj_name == "adj1") {
  2294. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2295. sAdj1_val = parseInt(sAdj1.substr(4)) * 96 / 914400;
  2296. } else if (sAdj_name == "adj2") {
  2297. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2298. sAdj2_val = parseInt(sAdj2.substr(4)) * 96 / 914400;
  2299. }
  2300. }
  2301. }
  2302. var minWH = Math.min(w, h);
  2303. var maxAdj1 = cnsVal * h / minWH;
  2304. var maxAdj2 = cnsVal * w / minWH;
  2305. var a1, a2, x1, dy1, y1;
  2306. if (sAdj1_val < 0) a1 = 0
  2307. else if (sAdj1_val > maxAdj1) a1 = maxAdj1
  2308. else a1 = sAdj1_val
  2309. if (sAdj2_val < 0) a2 = 0
  2310. else if (sAdj2_val > maxAdj2) a2 = maxAdj2
  2311. else a2 = sAdj2_val
  2312. x1 = minWH * a2 / cnsVal;
  2313. dy1 = minWH * a1 / cnsVal;
  2314. y1 = h - dy1;
  2315. var d = "M0,0" +
  2316. " L" + x1 + "," + 0 +
  2317. " L" + x1 + "," + y1 +
  2318. " L" + w + "," + y1 +
  2319. " L" + w + "," + h +
  2320. " L0," + h + " z";
  2321. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2322. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2323. break;
  2324. case "diagStripe":
  2325. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2326. var sAdj1_val = 50000 * 96 / 914400;
  2327. var cnsVal = 100000 * 96 / 914400;
  2328. if (shapAdjst !== undefined) {
  2329. sAdj1_val = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2330. }
  2331. var a1, x2, y2;
  2332. if (sAdj1_val < 0) a1 = 0
  2333. else if (sAdj1_val > cnsVal) a1 = cnsVal
  2334. else a1 = sAdj1_val
  2335. x2 = w * a1 / cnsVal;
  2336. y2 = h * a1 / cnsVal;
  2337. var d = "M" + 0 + "," + y2 +
  2338. " L" + x2 + "," + 0 +
  2339. " L" + w + "," + 0 +
  2340. " L" + 0 + "," + h + " z";
  2341. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2342. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2343. break;
  2344. case "gear6":
  2345. case "gear9":
  2346. txtRotate = 0;
  2347. var gearNum = shapType.substr(4), d;
  2348. if (gearNum == "6") {
  2349. d = shapeGear(w, h / 3.5, parseInt(gearNum));
  2350. } else { //gearNum=="9"
  2351. d = shapeGear(w, h / 3.5, parseInt(gearNum));
  2352. }
  2353. result += "<path d='" + d + "' transform='rotate(20," + (3 / 7) * h + "," + (3 / 7) * h + ")' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2354. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2355. break;
  2356. case "bentConnector3":
  2357. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2358. var shapAdjst_val = 0.5;
  2359. if (shapAdjst !== undefined) {
  2360. shapAdjst_val = parseInt(shapAdjst.substr(4)) / 100000;
  2361. if (isFlipV) {
  2362. result += " <polyline points='" + w + " 0," + ((1 - shapAdjst_val) * w) + " 0," + ((1 - shapAdjst_val) * w) + " " + h + ",0 " + h + "' fill='transparent'" +
  2363. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  2364. } else {
  2365. result += " <polyline points='0 0," + (shapAdjst_val) * w + " 0," + (shapAdjst_val) * w + " " + h + "," + w + " " + h + "' fill='transparent'" +
  2366. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  2367. }
  2368. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  2369. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  2370. }
  2371. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  2372. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  2373. }
  2374. result += "/>";
  2375. }
  2376. break;
  2377. case "plus":
  2378. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2379. var adj1 = 0.25;
  2380. if (shapAdjst !== undefined) {
  2381. adj1 = parseInt(shapAdjst.substr(4)) / 100000;
  2382. }
  2383. var adj2 = (1 - adj1);
  2384. result += " <polygon points='" + adj1 * w + " 0," + adj1 * w + " " + adj1 * h + ",0 " + adj1 * h + ",0 " + adj2 * h + "," +
  2385. adj1 * w + " " + adj2 * h + "," + adj1 * w + " " + h + "," + adj2 * w + " " + h + "," + adj2 * w + " " + adj2 * h + "," + w + " " + adj2 * h + "," +
  2386. +w + " " + adj1 * h + "," + adj2 * w + " " + adj1 * h + "," + adj2 * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2387. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2388. break;
  2389. case "teardrop":
  2390. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2391. var adj1 = 100000 * 96 / 914400;
  2392. var cnsVal1 = adj1;
  2393. var cnsVal2 = 200000 * 96 / 914400;
  2394. if (shapAdjst !== undefined) {
  2395. adj1 = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2396. }
  2397. var a1, r2, tw, th, sw, sh, dx1, dy1, x1, y1, x2, y2, rd45;
  2398. if (adj1 < 0) a1 = 0
  2399. else if (adj1 > cnsVal2) a1 = cnsVal2
  2400. else a1 = adj1
  2401. r2 = Math.sqrt(2);
  2402. tw = r2 * (w / 2);
  2403. th = r2 * (h / 2);
  2404. sw = (tw * a1) / cnsVal1;
  2405. sh = (th * a1) / cnsVal1;
  2406. rd45 = (45 * (Math.PI) / 180);
  2407. dx1 = sw * (Math.cos(rd45));
  2408. dy1 = sh * (Math.cos(rd45));
  2409. x1 = (w / 2) + dx1;
  2410. y1 = (h / 2) - dy1;
  2411. x2 = ((w / 2) + x1) / 2;
  2412. y2 = ((h / 2) + y1) / 2;
  2413. var d_val = shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false) +
  2414. "Q " + x2 + ",0 " + x1 + "," + y1 +
  2415. "Q " + w + "," + y2 + " " + w + "," + h / 2 +
  2416. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  2417. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") + " z";
  2418. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2419. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2420. // console.log("shapAdjst: ",shapAdjst,", adj1: ",adj1);
  2421. break;
  2422. case "plaque":
  2423. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2424. var adj1 = 16667 * 96 / 914400;
  2425. var cnsVal1 = 50000 * 96 / 914400;
  2426. var cnsVal2 = 100000 * 96 / 914400;
  2427. if (shapAdjst !== undefined) {
  2428. adj1 = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  2429. }
  2430. var a1, x1, x2, y2;
  2431. if (adj1 < 0) a1 = 0
  2432. else if (adj1 > cnsVal1) a1 = cnsVal1
  2433. else a1 = adj1
  2434. x1 = a1 * (Math.min(w, h)) / cnsVal2;
  2435. x2 = w - x1;
  2436. y2 = h - x1;
  2437. var d_val = "M0," + x1 +
  2438. shapeArc(0, 0, x1, x1, 90, 0, false).replace("M", "L") +
  2439. " L" + x2 + "," + 0 +
  2440. shapeArc(w, 0, x1, x1, 180, 90, false).replace("M", "L") +
  2441. " L" + w + "," + y2 +
  2442. shapeArc(w, h, x1, x1, 270, 180, false).replace("M", "L") +
  2443. " L" + x1 + "," + h +
  2444. shapeArc(0, h, x1, x1, 0, -90, false).replace("M", "L") + " z";
  2445. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2446. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2447. break;
  2448. case "sun":
  2449. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2450. var refr = 96 / 914400;
  2451. var adj1 = 25000 * refr;
  2452. var cnstVal1 = 12500 * refr;
  2453. var cnstVal2 = 46875 * refr;
  2454. if (shapAdjst !== undefined) {
  2455. adj1 = parseInt(shapAdjst.substr(4)) * refr;
  2456. }
  2457. var a1;
  2458. if (adj1 < cnstVal1) a1 = cnstVal1
  2459. else if (adj1 > cnstVal2) a1 = cnstVal2
  2460. else a1 = adj1
  2461. var cnstVa3 = 50000 * refr;
  2462. var cnstVa4 = 100000 * refr;
  2463. var g0 = cnstVa3 - a1,
  2464. g1 = g0 * (30274 * refr) / (32768 * refr),
  2465. g2 = g0 * (12540 * refr) / (32768 * refr),
  2466. g3 = g1 + cnstVa3,
  2467. g4 = g2 + cnstVa3,
  2468. g5 = cnstVa3 - g1,
  2469. g6 = cnstVa3 - g2,
  2470. g7 = g0 * (23170 * refr) / (32768 * refr),
  2471. g8 = cnstVa3 + g7,
  2472. g9 = cnstVa3 - g7,
  2473. g10 = g5 * 3 / 4,
  2474. g11 = g6 * 3 / 4,
  2475. g12 = g10 + 3662 * refr,
  2476. g13 = g11 + 36620 * refr,
  2477. g14 = g11 + 12500 * refr,
  2478. g15 = cnstVa4 - g10,
  2479. g16 = cnstVa4 - g12,
  2480. g17 = cnstVa4 - g13,
  2481. g18 = cnstVa4 - g14,
  2482. ox1 = w * (18436 * refr) / (21600 * refr),
  2483. oy1 = h * (3163 * refr) / (21600 * refr),
  2484. ox2 = w * (3163 * refr) / (21600 * refr),
  2485. oy2 = h * (18436 * refr) / (21600 * refr),
  2486. x8 = w * g8 / cnstVa4,
  2487. x9 = w * g9 / cnstVa4,
  2488. x10 = w * g10 / cnstVa4,
  2489. x12 = w * g12 / cnstVa4,
  2490. x13 = w * g13 / cnstVa4,
  2491. x14 = w * g14 / cnstVa4,
  2492. x15 = w * g15 / cnstVa4,
  2493. x16 = w * g16 / cnstVa4,
  2494. x17 = w * g17 / cnstVa4,
  2495. x18 = w * g18 / cnstVa4,
  2496. x19 = w * a1 / cnstVa4,
  2497. wR = w * g0 / cnstVa4,
  2498. hR = h * g0 / cnstVa4,
  2499. y8 = h * g8 / cnstVa4,
  2500. y9 = h * g9 / cnstVa4,
  2501. y10 = h * g10 / cnstVa4,
  2502. y12 = h * g12 / cnstVa4,
  2503. y13 = h * g13 / cnstVa4,
  2504. y14 = h * g14 / cnstVa4,
  2505. y15 = h * g15 / cnstVa4,
  2506. y16 = h * g16 / cnstVa4,
  2507. y17 = h * g17 / cnstVa4,
  2508. y18 = h * g18 / cnstVa4;
  2509. var d_val = "M" + w + "," + h / 2 +
  2510. " L" + x15 + "," + y18 +
  2511. " L" + x15 + "," + y14 +
  2512. "z" +
  2513. " M" + ox1 + "," + oy1 +
  2514. " L" + x16 + "," + y17 +
  2515. " L" + x13 + "," + y12 +
  2516. "z" +
  2517. " M" + w / 2 + "," + 0 +
  2518. " L" + x18 + "," + y10 +
  2519. " L" + x14 + "," + y10 +
  2520. "z" +
  2521. " M" + ox2 + "," + oy1 +
  2522. " L" + x17 + "," + y12 +
  2523. " L" + x12 + "," + y17 +
  2524. "z" +
  2525. " M" + 0 + "," + h / 2 +
  2526. " L" + x10 + "," + y14 +
  2527. " L" + x10 + "," + y18 +
  2528. "z" +
  2529. " M" + ox2 + "," + oy2 +
  2530. " L" + x12 + "," + y13 +
  2531. " L" + x17 + "," + y16 +
  2532. "z" +
  2533. " M" + w / 2 + "," + h +
  2534. " L" + x14 + "," + y15 +
  2535. " L" + x18 + "," + y15 +
  2536. "z" +
  2537. " M" + ox1 + "," + oy2 +
  2538. " L" + x13 + "," + y16 +
  2539. " L" + x16 + "," + y13 +
  2540. " z" +
  2541. " M" + x19 + "," + h / 2 +
  2542. shapeArc(w / 2, h / 2, wR, hR, 180, 540, false).replace("M", "L") +
  2543. " z";
  2544. //console.log("adj1: ",adj1,d_val);
  2545. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2546. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2547. break;
  2548. case "heart":
  2549. var dx1, dx2, x1, x2, x3, x4, y1;
  2550. dx1 = w * 49 / 48;
  2551. dx2 = w * 10 / 48
  2552. x1 = w / 2 - dx1
  2553. x2 = w / 2 - dx2
  2554. x3 = w / 2 + dx2
  2555. x4 = w / 2 + dx1
  2556. y1 = -h / 3;
  2557. var d_val = "M" + w / 2 + "," + h / 4 +
  2558. "C" + x3 + "," + y1 + " " + x4 + "," + h / 4 + " " + w / 2 + "," + h +
  2559. "C" + x1 + "," + h / 4 + " " + x2 + "," + y1 + " " + w / 2 + "," + h / 4 + " z";
  2560. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2561. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2562. break;
  2563. case "lightningBolt":
  2564. var x1 = w * 5022 / 21600,
  2565. x2 = w * 11050 / 21600,
  2566. x3 = w * 8472 / 21600,
  2567. x4 = w * 8757 / 21600,
  2568. x5 = w * 10012 / 21600,
  2569. x6 = w * 14767 / 21600,
  2570. x7 = w * 12222 / 21600,
  2571. x8 = w * 12860 / 21600,
  2572. x9 = w * 13917 / 21600,
  2573. x10 = w * 7602 / 21600,
  2574. x11 = w * 16577 / 21600,
  2575. y1 = h * 3890 / 21600,
  2576. y2 = h * 6080 / 21600,
  2577. y3 = h * 6797 / 21600,
  2578. y4 = h * 7437 / 21600,
  2579. y5 = h * 12877 / 21600,
  2580. y6 = h * 9705 / 21600,
  2581. y7 = h * 12007 / 21600,
  2582. y8 = h * 13987 / 21600,
  2583. y9 = h * 8382 / 21600,
  2584. y10 = h * 14277 / 21600,
  2585. y11 = h * 14915 / 21600;
  2586. var d_val = "M" + x3 + "," + 0 +
  2587. " L" + x8 + "," + y2 +
  2588. " L" + x2 + "," + y3 +
  2589. " L" + x11 + "," + y7 +
  2590. " L" + x6 + "," + y5 +
  2591. " L" + w + "," + h +
  2592. " L" + x5 + "," + y11 +
  2593. " L" + x7 + "," + y8 +
  2594. " L" + x1 + "," + y6 +
  2595. " L" + x10 + "," + y9 +
  2596. " L" + 0 + "," + y1 + " z";
  2597. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2598. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2599. break;
  2600. case "cube":
  2601. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2602. var refr = 96 / 914400;
  2603. var adj = 25000 * refr;
  2604. if (shapAdjst !== undefined) {
  2605. adj = parseInt(shapAdjst.substr(4)) * refr;
  2606. }
  2607. var d_val;
  2608. var cnstVal2 = 100000 * refr;
  2609. var ss = Math.min(w, h);
  2610. var a, y1, y4, x4;
  2611. a = (adj < 0) ? 0 : (adj > cnstVal2) ? cnstVal2 : adj;
  2612. y1 = ss * a / cnstVal2;
  2613. y4 = h - y1;
  2614. x4 = w - y1;
  2615. d_val = "M" + 0 + "," + y1 +
  2616. " L" + y1 + "," + 0 +
  2617. " L" + w + "," + 0 +
  2618. " L" + w + "," + y4 +
  2619. " L" + x4 + "," + h +
  2620. " L" + 0 + "," + h +
  2621. " z" +
  2622. "M" + 0 + "," + y1 +
  2623. " L" + x4 + "," + y1 +
  2624. " M" + x4 + "," + y1 +
  2625. " L" + w + "," + 0 +
  2626. "M" + x4 + "," + y1 +
  2627. " L" + x4 + "," + h;
  2628. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2629. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2630. break;
  2631. case "bevel":
  2632. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2633. var refr = 96 / 914400;
  2634. var adj = 12500 * refr;
  2635. if (shapAdjst !== undefined) {
  2636. adj = parseInt(shapAdjst.substr(4)) * refr;
  2637. }
  2638. var d_val;
  2639. var cnstVal1 = 50000 * refr;
  2640. var cnstVal2 = 100000 * refr;
  2641. var ss = Math.min(w, h);
  2642. var a, x1, x2, y2;
  2643. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  2644. x1 = ss * a / cnstVal2;
  2645. x2 = w - x1;
  2646. y2 = h - x1;
  2647. d_val = "M" + 0 + "," + 0 +
  2648. " L" + w + "," + 0 +
  2649. " L" + w + "," + h +
  2650. " L" + 0 + "," + h +
  2651. " z" +
  2652. " M" + x1 + "," + x1 +
  2653. " L" + x2 + "," + x1 +
  2654. " L" + x2 + "," + y2 +
  2655. " L" + x1 + "," + y2 +
  2656. " z" +
  2657. " M" + 0 + "," + 0 +
  2658. " L" + x1 + "," + x1 +
  2659. " M" + 0 + "," + h +
  2660. " L" + x1 + "," + y2 +
  2661. " M" + w + "," + 0 +
  2662. " L" + x2 + "," + x1 +
  2663. " M" + w + "," + h +
  2664. " L" + x2 + "," + y2;
  2665. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2666. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2667. break;
  2668. case "foldedCorner":
  2669. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2670. var refr = 96 / 914400;
  2671. var adj = 16667 * refr;
  2672. if (shapAdjst !== undefined) {
  2673. adj = parseInt(shapAdjst.substr(4)) * refr;
  2674. }
  2675. var d_val;
  2676. var cnstVal1 = 50000 * refr;
  2677. var cnstVal2 = 100000 * refr;
  2678. var ss = Math.min(w, h);
  2679. var a, dy2, dy1, x1, x2, y2, y1;
  2680. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  2681. dy2 = ss * a / cnstVal2;
  2682. dy1 = dy2 / 5;
  2683. x1 = w - dy2;
  2684. x2 = x1 + dy1;
  2685. y2 = h - dy2;
  2686. y1 = y2 + dy1;
  2687. d_val = "M" + x1 + "," + h +
  2688. " L" + x2 + "," + y1 +
  2689. " L" + w + "," + y2 +
  2690. " L" + x1 + "," + h +
  2691. " L" + 0 + "," + h +
  2692. " L" + 0 + "," + 0 +
  2693. " L" + w + "," + 0 +
  2694. " L" + w + "," + y2;
  2695. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2696. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2697. break;
  2698. case "cloud":
  2699. case "cloudCallout":
  2700. var x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11,
  2701. rx1, rx2, rx3, rx4, rx5, rx6, rx7, rx8, rx9, rx10, rx11, ry1, ry2, ry3, ry4, ry5, ry6, ry7, ry8, ry9, ry10, ry11;
  2702. x0 = w * 3900 / 43200;;
  2703. x1 = w * 4693 / 43200;
  2704. x2 = w * 6928 / 43200;
  2705. x3 = w * 16478 / 43200;
  2706. x4 = w * 28827 / 43200;
  2707. x5 = w * 34129 / 43200;
  2708. x6 = w * 41798 / 43200;
  2709. x7 = w * 38324 / 43200;
  2710. x8 = w * 29078 / 43200;
  2711. x9 = w * 22141 / 43200;
  2712. x10 = w * 14000 / 43200;
  2713. x11 = w * 4127 / 43200;
  2714. y0 = h * 14370 / 43200;
  2715. y1 = h * 26177 / 43200;
  2716. y2 = h * 34899 / 43200;
  2717. y3 = h * 39090 / 43200;
  2718. y4 = h * 34751 / 43200;
  2719. y5 = h * 22954 / 43200;
  2720. y6 = h * 15354 / 43200;
  2721. y7 = h * 5426 / 43200;
  2722. y8 = h * 3952 / 43200;
  2723. y9 = h * 4720 / 43200;
  2724. y10 = h * 5192 / 43200;
  2725. y11 = h * 15789 / 43200;
  2726. //Path:
  2727. //(path attrs: w = 43200; h = 43200; )
  2728. var rX1 = w * 6753 / 43200, rY1 = h * 9190 / 43200, rX2 = w * 5333 / 43200, rY2 = h * 7267 / 43200, rX3 = w * 4365 / 43200,
  2729. rY3 = h * 5945 / 43200, rX4 = w * 4857 / 43200, rY4 = h * 6595 / 43200, rY5 = h * 7273 / 43200, rX6 = w * 6775 / 43200,
  2730. rY6 = h * 9220 / 43200, rX7 = w * 5785 / 43200, rY7 = h * 7867 / 43200, rX8 = w * 6752 / 43200, rY8 = h * 9215 / 43200,
  2731. rX9 = w * 7720 / 43200, rY9 = h * 10543 / 43200, rX10 = w * 4360 / 43200, rY10 = h * 5918 / 43200, rX11 = w * 4345 / 43200;
  2732. var sA1 = -11429249 / 60000, wA1 = 7426832 / 60000, sA2 = -8646143 / 60000, wA2 = 5396714 / 60000, sA3 = -8748475 / 60000,
  2733. wA3 = 5983381 / 60000, sA4 = -7859164 / 60000, wA4 = 7034504 / 60000, sA5 = -4722533 / 60000, wA5 = 6541615 / 60000,
  2734. sA6 = -2776035 / 60000, wA6 = 7816140 / 60000, sA7 = 37501 / 60000, wA7 = 6842000 / 60000, sA8 = 1347096 / 60000,
  2735. wA8 = 6910353 / 60000, sA9 = 3974558 / 60000, wA9 = 4542661 / 60000, sA10 = -16496525 / 60000, wA10 = 8804134 / 60000,
  2736. sA11 = -14809710 / 60000, wA11 = 9151131 / 60000;
  2737. var cX0, cX1, cX2, cX3, cX4, cX5, cX6, cX7, cX8, cX9, cX10, cY0, cY1, cY2, cY3, cY4, cY5, cY6, cY7, cY8, cY9, cY10;
  2738. var arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11;
  2739. var lxy1, lxy2, lxy3, lxy4, lxy5, lxy6, lxy7, lxy8, lxy9, lxy10;
  2740. cX0 = x0 - rX1 * Math.cos(sA1 * Math.PI / 180);
  2741. cY0 = y0 - rY1 * Math.sin(sA1 * Math.PI / 180);
  2742. arc1 = shapeArc(cX0, cY0, rX1, rY1, sA1, sA1 + wA1, false).replace("M", "L");
  2743. lxy1 = arc1.substr(arc1.lastIndexOf("L") + 1).split(" ");
  2744. cX1 = parseInt(lxy1[0]) - rX2 * Math.cos(sA2 * Math.PI / 180);
  2745. cY1 = parseInt(lxy1[1]) - rY2 * Math.sin(sA2 * Math.PI / 180);
  2746. arc2 = shapeArc(cX1, cY1, rX2, rY2, sA2, sA2 + wA2, false).replace("M", "L");
  2747. lxy2 = arc2.substr(arc2.lastIndexOf("L") + 1).split(" ");
  2748. cX2 = parseInt(lxy2[0]) - rX3 * Math.cos(sA3 * Math.PI / 180);
  2749. cY2 = parseInt(lxy2[1]) - rY3 * Math.sin(sA3 * Math.PI / 180);
  2750. arc3 = shapeArc(cX2, cY2, rX3, rY3, sA3, sA3 + wA3, false).replace("M", "L");
  2751. lxy3 = arc3.substr(arc3.lastIndexOf("L") + 1).split(" ");
  2752. cX3 = parseInt(lxy3[0]) - rX4 * Math.cos(sA4 * Math.PI / 180);
  2753. cY3 = parseInt(lxy3[1]) - rY4 * Math.sin(sA4 * Math.PI / 180);
  2754. arc4 = shapeArc(cX3, cY3, rX4, rY4, sA4, sA4 + wA4, false).replace("M", "L");
  2755. lxy4 = arc4.substr(arc4.lastIndexOf("L") + 1).split(" ");
  2756. cX4 = parseInt(lxy4[0]) - rX2 * Math.cos(sA5 * Math.PI / 180);
  2757. cY4 = parseInt(lxy4[1]) - rY5 * Math.sin(sA5 * Math.PI / 180);
  2758. arc5 = shapeArc(cX4, cY4, rX2, rY5, sA5, sA5 + wA5, false).replace("M", "L");
  2759. lxy5 = arc5.substr(arc5.lastIndexOf("L") + 1).split(" ");
  2760. cX5 = parseInt(lxy5[0]) - rX6 * Math.cos(sA6 * Math.PI / 180);
  2761. cY5 = parseInt(lxy5[1]) - rY6 * Math.sin(sA6 * Math.PI / 180);
  2762. arc6 = shapeArc(cX5, cY5, rX6, rY6, sA6, sA6 + wA6, false).replace("M", "L");
  2763. lxy6 = arc6.substr(arc6.lastIndexOf("L") + 1).split(" ");
  2764. cX6 = parseInt(lxy6[0]) - rX7 * Math.cos(sA7 * Math.PI / 180);
  2765. cY6 = parseInt(lxy6[1]) - rY7 * Math.sin(sA7 * Math.PI / 180);
  2766. arc7 = shapeArc(cX6, cY6, rX7, rY7, sA7, sA7 + wA7, false).replace("M", "L");
  2767. lxy7 = arc7.substr(arc7.lastIndexOf("L") + 1).split(" ");
  2768. cX7 = parseInt(lxy7[0]) - rX8 * Math.cos(sA8 * Math.PI / 180);
  2769. cY7 = parseInt(lxy7[1]) - rY8 * Math.sin(sA8 * Math.PI / 180);
  2770. arc8 = shapeArc(cX7, cY7, rX8, rY8, sA8, sA8 + wA8, false).replace("M", "L");
  2771. lxy8 = arc8.substr(arc8.lastIndexOf("L") + 1).split(" ");
  2772. cX8 = parseInt(lxy8[0]) - rX9 * Math.cos(sA9 * Math.PI / 180);
  2773. cY8 = parseInt(lxy8[1]) - rY9 * Math.sin(sA9 * Math.PI / 180);
  2774. arc9 = shapeArc(cX8, cY8, rX9, rY9, sA9, sA9 + wA9, false).replace("M", "L");
  2775. lxy9 = arc9.substr(arc9.lastIndexOf("L") + 1).split(" ");
  2776. cX9 = parseInt(lxy9[0]) - rX10 * Math.cos(sA10 * Math.PI / 180);
  2777. cY9 = parseInt(lxy9[1]) - rY10 * Math.sin(sA10 * Math.PI / 180);
  2778. arc10 = shapeArc(cX9, cY9, rX10, rY10, sA10, sA10 + wA10, false).replace("M", "L");
  2779. lxy10 = arc10.substr(arc10.lastIndexOf("L") + 1).split(" ");
  2780. cX10 = parseInt(lxy10[0]) - rX11 * Math.cos(sA11 * Math.PI / 180);
  2781. cY10 = parseInt(lxy10[1]) - rY3 * Math.sin(sA11 * Math.PI / 180);
  2782. arc11 = shapeArc(cX10, cY10, rX11, rY3, sA11, sA11 + wA11, false).replace("M", "L");
  2783. var d1 = "M" + x0 + "," + y0 +
  2784. arc1 +
  2785. arc2 +
  2786. arc3 +
  2787. arc4 +
  2788. arc5 +
  2789. arc6 +
  2790. arc7 +
  2791. arc8 +
  2792. arc9 +
  2793. arc10 +
  2794. arc11 +
  2795. " z";
  2796. if (shapType == "cloudCallout") {
  2797. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2798. var refr = 96 / 914400;
  2799. var sAdj1, adj1 = -20833 * refr;
  2800. var sAdj2, adj2 = 62500 * refr;
  2801. if (shapAdjst_ary !== undefined) {
  2802. for (var i = 0; i < shapAdjst_ary.length; i++) {
  2803. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  2804. if (sAdj_name == "adj1") {
  2805. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2806. adj1 = parseInt(sAdj1.substr(4)) * refr;
  2807. } else if (sAdj_name == "adj2") {
  2808. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2809. adj2 = parseInt(sAdj2.substr(4)) * refr;
  2810. }
  2811. }
  2812. }
  2813. var d_val;
  2814. var cnstVal2 = 100000 * refr;
  2815. var ss = Math.min(w, h);
  2816. var wd2 = w / 2, hd2 = h / 2;
  2817. var dxPos, dyPos, xPos, yPos, ht, wt, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15, g16,
  2818. g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, x23, x24, x25;
  2819. dxPos = w * adj1 / cnstVal2;
  2820. dyPos = h * adj2 / cnstVal2;
  2821. xPos = wd2 + dxPos;
  2822. yPos = hd2 + dyPos;
  2823. ht = hd2 * Math.cos(Math.atan(dyPos / dxPos));
  2824. wt = wd2 * Math.sin(Math.atan(dyPos / dxPos));
  2825. g2 = wd2 * Math.cos(Math.atan(wt / ht));
  2826. g3 = hd2 * Math.sin(Math.atan(wt / ht));
  2827. //console.log("adj1: ",adj1,"adj2: ",adj2)
  2828. if (adj1 >= 0) {
  2829. g4 = wd2 + g2;
  2830. g5 = hd2 + g3;
  2831. } else {
  2832. g4 = wd2 - g2;
  2833. g5 = hd2 - g3;
  2834. }
  2835. g6 = g4 - xPos;
  2836. g7 = g5 - yPos;
  2837. g8 = Math.sqrt(g6 * g6 + g7 * g7);
  2838. g9 = ss * 6600 / 21600;
  2839. g10 = g8 - g9;
  2840. g11 = g10 / 3;
  2841. g12 = ss * 1800 / 21600;
  2842. g13 = g11 + g12;
  2843. g14 = g13 * g6 / g8;
  2844. g15 = g13 * g7 / g8;
  2845. g16 = g14 + xPos;
  2846. g17 = g15 + yPos;
  2847. g18 = ss * 4800 / 21600;
  2848. g19 = g11 * 2;
  2849. g20 = g18 + g19;
  2850. g21 = g20 * g6 / g8;
  2851. g22 = g20 * g7 / g8;
  2852. g23 = g21 + xPos;
  2853. g24 = g22 + yPos;
  2854. g25 = ss * 1200 / 21600;
  2855. g26 = ss * 600 / 21600;
  2856. x23 = xPos + g26;
  2857. x24 = g16 + g25;
  2858. x25 = g23 + g12;
  2859. d_val = //" M" + x23 + "," + yPos +
  2860. shapeArc(x23 - g26, yPos, g26, g26, 0, 360, false) + //.replace("M","L") +
  2861. " z" +
  2862. " M" + x24 + "," + g17 +
  2863. shapeArc(x24 - g25, g17, g25, g25, 0, 360, false).replace("M", "L") +
  2864. " z" +
  2865. " M" + x25 + "," + g24 +
  2866. shapeArc(x25 - g12, g24, g12, g12, 0, 360, false).replace("M", "L") +
  2867. " z";
  2868. d1 += d_val;
  2869. }
  2870. result += "<path d='" + d1 + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2871. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2872. break;
  2873. case "smileyFace":
  2874. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2875. var refr = 96 / 914400;
  2876. var adj = 4653 * refr;
  2877. if (shapAdjst !== undefined) {
  2878. adj = parseInt(shapAdjst.substr(4)) * refr;
  2879. }
  2880. var d_val;
  2881. var cnstVal1 = 50000 * refr;
  2882. var cnstVal2 = 100000 * refr;
  2883. var cnstVal3 = 4653 * refr;
  2884. var ss = Math.min(w, h);
  2885. var a, x1, x2, x3, x4, y1, y3, dy2, y2, y4, dy3, y5, wR, hR, wd2, hd2;
  2886. wd2 = w / 2;
  2887. hd2 = h / 2;
  2888. a = (adj < -cnstVal3) ? -cnstVal3 : (adj > cnstVal3) ? cnstVal3 : adj;
  2889. x1 = w * 4969 / 21699;
  2890. x2 = w * 6215 / 21600;
  2891. x3 = w * 13135 / 21600;
  2892. x4 = w * 16640 / 21600;
  2893. y1 = h * 7570 / 21600;
  2894. y3 = h * 16515 / 21600;
  2895. dy2 = h * a / cnstVal2;
  2896. y2 = y3 - dy2;
  2897. y4 = y3 + dy2;
  2898. dy3 = h * a / cnstVal1;
  2899. y5 = y4 + dy3;
  2900. wR = w * 1125 / 21600;
  2901. hR = h * 1125 / 21600;
  2902. var cX1 = x2 - wR * Math.cos(Math.PI);
  2903. var cY1 = y1 - hR * Math.sin(Math.PI);
  2904. var cX2 = x3 - wR * Math.cos(Math.PI);
  2905. d_val = //eyes
  2906. shapeArc(cX1, cY1, wR, hR, 180, 540, false) +
  2907. shapeArc(cX2, cY1, wR, hR, 180, 540, false) +
  2908. //mouth
  2909. " M" + x1 + "," + y2 +
  2910. " Q" + wd2 + "," + y5 + " " + x4 + "," + y2 +
  2911. " Q" + wd2 + "," + y5 + " " + x1 + "," + y2 +
  2912. //head
  2913. " M" + 0 + "," + hd2 +
  2914. shapeArc(wd2, hd2, wd2, hd2, 180, 540, false).replace("M", "L") +
  2915. " z";
  2916. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2917. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2918. break;
  2919. case "verticalScroll":
  2920. case "horizontalScroll":
  2921. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2922. var refr = 96 / 914400;
  2923. var adj = 12500 * refr;
  2924. if (shapAdjst !== undefined) {
  2925. adj = parseInt(shapAdjst.substr(4)) * refr;
  2926. }
  2927. var d_val;
  2928. var cnstVal1 = 25000 * refr;
  2929. var cnstVal2 = 100000 * refr;
  2930. var ss = Math.min(w, h);
  2931. var t = 0, l = 0, b = h, r = w;
  2932. var a, ch, ch2, ch4;
  2933. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  2934. ch = ss * a / cnstVal2;
  2935. ch2 = ch / 2;
  2936. ch4 = ch / 4;
  2937. if (shapType == "verticalScroll") {
  2938. var x3, x4, x6, x7, x5, y3, y4;
  2939. x3 = ch + ch2;
  2940. x4 = ch + ch;
  2941. x6 = r - ch;
  2942. x7 = r - ch2;
  2943. x5 = x6 - ch2;
  2944. y3 = b - ch;
  2945. y4 = b - ch2;
  2946. d_val = "M" + ch + "," + y3 +
  2947. " L" + ch + "," + ch2 +
  2948. shapeArc(x3, ch2, ch2, ch2, 180, 270, false).replace("M", "L") +
  2949. " L" + x7 + "," + t +
  2950. shapeArc(x7, ch2, ch2, ch2, 270, 450, false).replace("M", "L") +
  2951. " L" + x6 + "," + ch +
  2952. " L" + x6 + "," + y4 +
  2953. shapeArc(x5, y4, ch2, ch2, 0, 90, false).replace("M", "L") +
  2954. " L" + ch2 + "," + b +
  2955. shapeArc(ch2, y4, ch2, ch2, 90, 270, false).replace("M", "L") +
  2956. " z" +
  2957. " M" + x3 + "," + t +
  2958. shapeArc(x3, ch2, ch2, ch2, 270, 450, false).replace("M", "L") +
  2959. shapeArc(x3, x3 / 2, ch4, ch4, 90, 270, false).replace("M", "L") +
  2960. " L" + x4 + "," + ch2 +
  2961. " M" + x6 + "," + ch +
  2962. " L" + x3 + "," + ch +
  2963. " M" + ch + "," + y4 +
  2964. shapeArc(ch2, y4, ch2, ch2, 0, 270, false).replace("M", "L") +
  2965. shapeArc(ch2, (y4 + y3) / 2, ch4, ch4, 270, 450, false).replace("M", "L") +
  2966. " z" +
  2967. " M" + ch + "," + y4 +
  2968. " L" + ch + "," + y3;
  2969. } else if (shapType == "horizontalScroll") {
  2970. var y3, y4, y6, y7, y5, x3, x4;
  2971. y3 = ch + ch2;
  2972. y4 = ch + ch;
  2973. y6 = b - ch;
  2974. y7 = b - ch2;
  2975. y5 = y6 - ch2;
  2976. x3 = r - ch;
  2977. x4 = r - ch2;
  2978. d_val = "M" + l + "," + y3 +
  2979. shapeArc(ch2, y3, ch2, ch2, 180, 270, false).replace("M", "L") +
  2980. " L" + x3 + "," + ch +
  2981. " L" + x3 + "," + ch2 +
  2982. shapeArc(x4, ch2, ch2, ch2, 180, 360, false).replace("M", "L") +
  2983. " L" + r + "," + y5 +
  2984. shapeArc(x4, y5, ch2, ch2, 0, 90, false).replace("M", "L") +
  2985. " L" + ch + "," + y6 +
  2986. " L" + ch + "," + y7 +
  2987. shapeArc(ch2, y7, ch2, ch2, 0, 180, false).replace("M", "L") +
  2988. " z" +
  2989. "M" + x4 + "," + ch +
  2990. shapeArc(x4, ch2, ch2, ch2, 90, -180, false).replace("M", "L") +
  2991. shapeArc((x3 + x4) / 2, ch2, ch4, ch4, 180, 0, false).replace("M", "L") +
  2992. " z" +
  2993. " M" + x4 + "," + ch +
  2994. " L" + x3 + "," + ch +
  2995. " M" + ch2 + "," + y4 +
  2996. " L" + ch2 + "," + y3 +
  2997. shapeArc(y3 / 2, y3, ch4, ch4, 180, 360, false).replace("M", "L") +
  2998. shapeArc(ch2, y3, ch2, ch2, 0, 180, false).replace("M", "L") +
  2999. " M" + ch + "," + y3 +
  3000. " L" + ch + "," + y6;
  3001. }
  3002. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3003. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3004. break;
  3005. case "wedgeEllipseCallout":
  3006. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3007. var refr = 96 / 914400;
  3008. var sAdj1, adj1 = -20833 * refr;
  3009. var sAdj2, adj2 = 62500 * refr;
  3010. if (shapAdjst_ary !== undefined) {
  3011. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3012. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3013. if (sAdj_name == "adj1") {
  3014. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3015. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3016. } else if (sAdj_name == "adj2") {
  3017. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3018. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3019. }
  3020. }
  3021. }
  3022. var d_val;
  3023. var cnstVal1 = 100000 * 96 / 914400;
  3024. var angVal1 = 11 * Math.PI / 180;
  3025. var ss = Math.min(w, h);
  3026. var dxPos, dyPos, xPos, yPos, sdx, sdy, pang, stAng, enAng, dx1, dy1, x1, y1, dx2, dy2,
  3027. x2, y2, stAng1, enAng1, swAng1, swAng2, swAng,
  3028. vc = h / 2, hc = w / 2;
  3029. dxPos = w * adj1 / cnstVal1;
  3030. dyPos = h * adj2 / cnstVal1;
  3031. xPos = hc + dxPos;
  3032. yPos = vc + dyPos;
  3033. sdx = dxPos * h;
  3034. sdy = dyPos * w;
  3035. pang = Math.atan(sdy / sdx);
  3036. stAng = pang + angVal1;
  3037. enAng = pang - angVal1;
  3038. console.log("dxPos: ", dxPos, "dyPos: ", dyPos)
  3039. dx1 = hc * Math.cos(stAng);
  3040. dy1 = vc * Math.sin(stAng);
  3041. dx2 = hc * Math.cos(enAng);
  3042. dy2 = vc * Math.sin(enAng);
  3043. if (dxPos >= 0) {
  3044. x1 = hc + dx1;
  3045. y1 = vc + dy1;
  3046. x2 = hc + dx2;
  3047. y2 = vc + dy2;
  3048. } else {
  3049. x1 = hc - dx1;
  3050. y1 = vc - dy1;
  3051. x2 = hc - dx2;
  3052. y2 = vc - dy2;
  3053. }
  3054. /*
  3055. //stAng = pang+angVal1;
  3056. //enAng = pang-angVal1;
  3057. //dx1 = hc*Math.cos(stAng);
  3058. //dy1 = vc*Math.sin(stAng);
  3059. x1 = hc+dx1;
  3060. y1 = vc+dy1;
  3061. dx2 = hc*Math.cos(enAng);
  3062. dy2 = vc*Math.sin(enAng);
  3063. x2 = hc+dx2;
  3064. y2 = vc+dy2;
  3065. stAng1 = Math.atan(dy1/dx1);
  3066. enAng1 = Math.atan(dy2/dx2);
  3067. swAng1 = enAng1-stAng1;
  3068. swAng2 = swAng1+2*Math.PI;
  3069. swAng = (swAng1 > 0)?swAng1:swAng2;
  3070. var stAng1Dg = stAng1*180/Math.PI;
  3071. var swAngDg = swAng*180/Math.PI;
  3072. var endAng = stAng1Dg + swAngDg;
  3073. */
  3074. d_val = "M" + x1 + "," + y1 +
  3075. " L" + xPos + "," + yPos +
  3076. " L" + x2 + "," + y2 +
  3077. //" z" +
  3078. shapeArc(hc, vc, hc, vc, 0, 360, true);// +
  3079. //shapeArc(hc,vc,hc,vc,stAng1Dg,stAng1Dg+swAngDg,false).replace("M","L") +
  3080. //" z";
  3081. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3082. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3083. break;
  3084. case "wedgeRectCallout":
  3085. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3086. var refr = 96 / 914400;
  3087. var sAdj1, adj1 = -20833 * refr;
  3088. var sAdj2, adj2 = 62500 * refr;
  3089. if (shapAdjst_ary !== undefined) {
  3090. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3091. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3092. if (sAdj_name == "adj1") {
  3093. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3094. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3095. } else if (sAdj_name == "adj2") {
  3096. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3097. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3098. }
  3099. }
  3100. }
  3101. var d_val;
  3102. var cnstVal1 = 100000 * 96 / 914400;
  3103. var dxPos, dyPos, xPos, yPos, dx, dy, dq, ady, adq, dz, xg1, xg2, x1, x2,
  3104. yg1, yg2, y1, y2, t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb,
  3105. vc = h / 2, hc = w / 2;
  3106. dxPos = w * adj1 / cnstVal1;
  3107. dyPos = h * adj2 / cnstVal1;
  3108. xPos = hc + dxPos;
  3109. yPos = vc + dyPos;
  3110. dx = xPos - hc;
  3111. dy = yPos - vc;
  3112. dq = dxPos * h / w;
  3113. ady = Math.abs(dyPos);
  3114. adq = Math.abs(dq);
  3115. dz = ady - adq;
  3116. xg1 = (dxPos > 0) ? 7 : 2;
  3117. xg2 = (dxPos > 0) ? 10 : 5;
  3118. x1 = w * xg1 / 12;
  3119. x2 = w * xg2 / 12;
  3120. yg1 = (dyPos > 0) ? 7 : 2;
  3121. yg2 = (dyPos > 0) ? 10 : 5;
  3122. y1 = h * yg1 / 12;
  3123. y2 = h * yg2 / 12;
  3124. t1 = (dxPos > 0) ? 0 : xPos;
  3125. xl = (dz > 0) ? 0 : t1;
  3126. t2 = (dyPos > 0) ? x1 : xPos;
  3127. xt = (dz > 0) ? t2 : x1;
  3128. t3 = (dxPos > 0) ? xPos : w;
  3129. xr = (dz > 0) ? w : t3;
  3130. t4 = (dyPos > 0) ? xPos : x1;
  3131. xb = (dz > 0) ? t4 : x1;
  3132. t5 = (dxPos > 0) ? y1 : yPos;
  3133. yl = (dz > 0) ? y1 : t5;
  3134. t6 = (dyPos > 0) ? 0 : yPos;
  3135. yt = (dz > 0) ? t6 : 0;
  3136. t7 = (dxPos > 0) ? yPos : y1;
  3137. yr = (dz > 0) ? y1 : t7;
  3138. t8 = (dyPos > 0) ? yPos : h;
  3139. yb = (dz > 0) ? t8 : h;
  3140. d_val = "M" + 0 + "," + 0 +
  3141. " L" + x1 + "," + 0 +
  3142. " L" + xt + "," + yt +
  3143. " L" + x2 + "," + 0 +
  3144. " L" + w + "," + 0 +
  3145. " L" + w + "," + y1 +
  3146. " L" + xr + "," + yr +
  3147. " L" + w + "," + y2 +
  3148. " L" + w + "," + h +
  3149. " L" + x2 + "," + h +
  3150. " L" + xb + "," + yb +
  3151. " L" + x1 + "," + h +
  3152. " L" + 0 + "," + h +
  3153. " L" + 0 + "," + y2 +
  3154. " L" + xl + "," + yl +
  3155. " L" + 0 + "," + y1 +
  3156. " z";
  3157. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3158. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3159. break;
  3160. case "wedgeRoundRectCallout":
  3161. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3162. var refr = 96 / 914400;
  3163. var sAdj1, adj1 = -20833 * refr;
  3164. var sAdj2, adj2 = 62500 * refr;
  3165. var sAdj3, adj3 = 16667 * refr;
  3166. if (shapAdjst_ary !== undefined) {
  3167. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3168. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3169. if (sAdj_name == "adj1") {
  3170. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3171. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3172. } else if (sAdj_name == "adj2") {
  3173. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3174. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3175. } else if (sAdj_name == "adj3") {
  3176. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3177. adj3 = parseInt(sAdj3.substr(4)) * refr;
  3178. }
  3179. }
  3180. }
  3181. var d_val;
  3182. var cnstVal1 = 100000 * 96 / 914400;
  3183. var ss = Math.min(w, h);
  3184. var dxPos, dyPos, xPos, yPos, dq, ady, adq, dz, xg1, xg2, x1, x2, yg1, yg2, y1, y2,
  3185. t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb, u1, u2, v2,
  3186. vc = h / 2, hc = w / 2;
  3187. dxPos = w * adj1 / cnstVal1;
  3188. dyPos = h * adj2 / cnstVal1;
  3189. xPos = hc + dxPos;
  3190. yPos = vc + dyPos;
  3191. dq = dxPos * h / w;
  3192. ady = Math.abs(dyPos);
  3193. adq = Math.abs(dq);
  3194. dz = ady - adq;
  3195. xg1 = (dxPos > 0) ? 7 : 2;
  3196. xg2 = (dxPos > 0) ? 10 : 5;
  3197. x1 = w * xg1 / 12;
  3198. x2 = w * xg2 / 12;
  3199. yg1 = (dyPos > 0) ? 7 : 2;
  3200. yg2 = (dyPos > 0) ? 10 : 5;
  3201. y1 = h * yg1 / 12;
  3202. y2 = h * yg2 / 12;
  3203. t1 = (dxPos > 0) ? 0 : xPos;
  3204. xl = (dz > 0) ? 0 : t1;
  3205. t2 = (dyPos > 0) ? x1 : xPos;
  3206. xt = (dz > 0) ? t2 : x1;
  3207. t3 = (dxPos > 0) ? xPos : w;
  3208. xr = (dz > 0) ? w : t3;
  3209. t4 = (dyPos > 0) ? xPos : x1;
  3210. xb = (dz > 0) ? t4 : x1;
  3211. t5 = (dxPos > 0) ? y1 : yPos;
  3212. yl = (dz > 0) ? y1 : t5;
  3213. t6 = (dyPos > 0) ? 0 : yPos;
  3214. yt = (dz > 0) ? t6 : 0;
  3215. t7 = (dxPos > 0) ? yPos : y1;
  3216. yr = (dz > 0) ? y1 : t7;
  3217. t8 = (dyPos > 0) ? yPos : h;
  3218. yb = (dz > 0) ? t8 : h;
  3219. u1 = ss * adj3 / cnstVal1;
  3220. u2 = w - u1;
  3221. v2 = h - u1;
  3222. d_val = "M" + 0 + "," + u1 +
  3223. shapeArc(u1, u1, u1, u1, 180, 270, false).replace("M", "L") +
  3224. " L" + x1 + "," + 0 +
  3225. " L" + xt + "," + yt +
  3226. " L" + x2 + "," + 0 +
  3227. " L" + u2 + "," + 0 +
  3228. shapeArc(u2, u1, u1, u1, 270, 360, false).replace("M", "L") +
  3229. " L" + w + "," + y1 +
  3230. " L" + xr + "," + yr +
  3231. " L" + w + "," + y2 +
  3232. " L" + w + "," + v2 +
  3233. shapeArc(u2, v2, u1, u1, 0, 90, false).replace("M", "L") +
  3234. " L" + x2 + "," + h +
  3235. " L" + xb + "," + yb +
  3236. " L" + x1 + "," + h +
  3237. " L" + u1 + "," + h +
  3238. shapeArc(u1, v2, u1, u1, 90, 180, false).replace("M", "L") +
  3239. " L" + 0 + "," + y2 +
  3240. " L" + xl + "," + yl +
  3241. " L" + 0 + "," + y1 +
  3242. " z";
  3243. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3244. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3245. break;
  3246. case "accentBorderCallout1":
  3247. case "accentBorderCallout2":
  3248. case "accentBorderCallout3":
  3249. case "borderCallout1":
  3250. case "borderCallout2":
  3251. case "borderCallout3":
  3252. case "accentCallout1":
  3253. case "accentCallout2":
  3254. case "accentCallout3":
  3255. case "callout1":
  3256. case "callout2":
  3257. case "callout3":
  3258. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3259. var refr = 96 / 914400;
  3260. var sAdj1, adj1 = 18750 * refr;
  3261. var sAdj2, adj2 = -8333 * refr;
  3262. var sAdj3, adj3 = 18750 * refr;
  3263. var sAdj4, adj4 = -16667 * refr;
  3264. var sAdj5, adj5 = 100000 * refr;
  3265. var sAdj6, adj6 = -16667 * refr;
  3266. var sAdj7, adj7 = 112963 * refr;
  3267. var sAdj8, adj8 = -8333 * refr;
  3268. if (shapAdjst_ary !== undefined) {
  3269. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3270. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3271. if (sAdj_name == "adj1") {
  3272. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3273. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3274. } else if (sAdj_name == "adj2") {
  3275. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3276. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3277. } else if (sAdj_name == "adj3") {
  3278. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3279. adj3 = parseInt(sAdj3.substr(4)) * refr;
  3280. } else if (sAdj_name == "adj4") {
  3281. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3282. adj4 = parseInt(sAdj4.substr(4)) * refr;
  3283. } else if (sAdj_name == "adj5") {
  3284. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3285. adj5 = parseInt(sAdj5.substr(4)) * refr;
  3286. } else if (sAdj_name == "adj6") {
  3287. sAdj6 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3288. adj6 = parseInt(sAdj6.substr(4)) * refr;
  3289. } else if (sAdj_name == "adj7") {
  3290. sAdj7 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3291. adj7 = parseInt(sAdj7.substr(4)) * refr;
  3292. } else if (sAdj_name == "adj8") {
  3293. sAdj8 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3294. adj8 = parseInt(sAdj8.substr(4)) * refr;
  3295. }
  3296. }
  3297. }
  3298. var d_val;
  3299. var cnstVal1 = 100000 * refr;
  3300. var isBorder = true;
  3301. switch (shapType) {
  3302. case "borderCallout1":
  3303. case "callout1":
  3304. if (shapType == "borderCallout1") {
  3305. isBorder = true;
  3306. } else {
  3307. isBorder = false;
  3308. }
  3309. if (shapAdjst_ary === undefined) {
  3310. adj1 = 18750 * refr;
  3311. adj2 = -8333 * refr;
  3312. adj3 = 112500 * refr;
  3313. adj4 = -38333 * refr;
  3314. }
  3315. var y1, x1, y2, x2;
  3316. y1 = h * adj1 / cnstVal1;
  3317. x1 = w * adj2 / cnstVal1;
  3318. y2 = h * adj3 / cnstVal1;
  3319. x2 = w * adj4 / cnstVal1;
  3320. d_val = "M" + 0 + "," + 0 +
  3321. " L" + w + "," + 0 +
  3322. " L" + w + "," + h +
  3323. " L" + 0 + "," + h +
  3324. " z" +
  3325. " M" + x1 + "," + y1 +
  3326. " L" + x2 + "," + y2;
  3327. break;
  3328. case "borderCallout2":
  3329. case "callout2":
  3330. if (shapType == "borderCallout2") {
  3331. isBorder = true;
  3332. } else {
  3333. isBorder = false;
  3334. }
  3335. if (shapAdjst_ary === undefined) {
  3336. adj1 = 18750 * refr;
  3337. adj2 = -8333 * refr;
  3338. adj3 = 18750 * refr;
  3339. adj4 = -16667 * refr;
  3340. adj5 = 112500 * refr;
  3341. adj6 = -46667 * refr;
  3342. }
  3343. var y1, x1, y2, x2, y3, x3;
  3344. y1 = h * adj1 / cnstVal1;
  3345. x1 = w * adj2 / cnstVal1;
  3346. y2 = h * adj3 / cnstVal1;
  3347. x2 = w * adj4 / cnstVal1;
  3348. y3 = h * adj5 / cnstVal1;
  3349. x3 = w * adj6 / cnstVal1;
  3350. d_val = "M" + 0 + "," + 0 +
  3351. " L" + w + "," + 0 +
  3352. " L" + w + "," + h +
  3353. " L" + 0 + "," + h +
  3354. " z" +
  3355. " M" + x1 + "," + y1 +
  3356. " L" + x2 + "," + y2 +
  3357. " L" + x3 + "," + y3 +
  3358. " L" + x2 + "," + y2;
  3359. break;
  3360. case "borderCallout3":
  3361. case "callout3":
  3362. if (shapType == "borderCallout3") {
  3363. isBorder = true;
  3364. } else {
  3365. isBorder = false;
  3366. }
  3367. if (shapAdjst_ary === undefined) {
  3368. adj1 = 18750 * refr;
  3369. adj2 = -8333 * refr;
  3370. adj3 = 18750 * refr;
  3371. adj4 = -16667 * refr;
  3372. adj5 = 100000 * refr;
  3373. adj6 = -16667 * refr;
  3374. adj7 = 112963 * refr;
  3375. adj8 = -8333 * refr;
  3376. }
  3377. var y1, x1, y2, x2, y3, x3, y4, x4;
  3378. y1 = h * adj1 / cnstVal1;
  3379. x1 = w * adj2 / cnstVal1;
  3380. y2 = h * adj3 / cnstVal1;
  3381. x2 = w * adj4 / cnstVal1;
  3382. y3 = h * adj5 / cnstVal1;
  3383. x3 = w * adj6 / cnstVal1;
  3384. y4 = h * adj7 / cnstVal1;
  3385. x4 = w * adj8 / cnstVal1;
  3386. d_val = "M" + 0 + "," + 0 +
  3387. " L" + w + "," + 0 +
  3388. " L" + w + "," + h +
  3389. " L" + 0 + "," + h +
  3390. " z" +
  3391. " M" + x1 + "," + y1 +
  3392. " L" + x2 + "," + y2 +
  3393. " L" + x3 + "," + y3 +
  3394. " L" + x4 + "," + y4 +
  3395. " L" + x3 + "," + y3 +
  3396. " L" + x2 + "," + y2;
  3397. break;
  3398. case "accentBorderCallout1":
  3399. case "accentCallout1":
  3400. if (shapType == "accentBorderCallout1") {
  3401. isBorder = true;
  3402. } else {
  3403. isBorder = false;
  3404. }
  3405. if (shapAdjst_ary === undefined) {
  3406. adj1 = 18750 * refr;
  3407. adj2 = -8333 * refr;
  3408. adj3 = 112500 * refr;
  3409. adj4 = -38333 * refr;
  3410. }
  3411. var y1, x1, y2, x2;
  3412. y1 = h * adj1 / cnstVal1;
  3413. x1 = w * adj2 / cnstVal1;
  3414. y2 = h * adj3 / cnstVal1;
  3415. x2 = w * adj4 / cnstVal1;
  3416. d_val = "M" + 0 + "," + 0 +
  3417. " L" + w + "," + 0 +
  3418. " L" + w + "," + h +
  3419. " L" + 0 + "," + h +
  3420. " z" +
  3421. " M" + x1 + "," + y1 +
  3422. " L" + x2 + "," + y2 +
  3423. " M" + x1 + "," + 0 +
  3424. " L" + x1 + "," + h;
  3425. break;
  3426. case "accentBorderCallout2":
  3427. case "accentCallout2":
  3428. if (shapType == "accentBorderCallout2") {
  3429. isBorder = true;
  3430. } else {
  3431. isBorder = false;
  3432. }
  3433. if (shapAdjst_ary === undefined) {
  3434. adj1 = 18750 * refr;
  3435. adj2 = -8333 * refr;
  3436. adj3 = 18750 * refr;
  3437. adj4 = -16667 * refr;
  3438. adj5 = 112500 * refr;
  3439. adj6 = -46667 * refr;
  3440. }
  3441. var y1, x1, y2, x2, y3, x3;
  3442. y1 = h * adj1 / cnstVal1;
  3443. x1 = w * adj2 / cnstVal1;
  3444. y2 = h * adj3 / cnstVal1;
  3445. x2 = w * adj4 / cnstVal1;
  3446. y3 = h * adj5 / cnstVal1;
  3447. x3 = w * adj6 / cnstVal1;
  3448. d_val = "M" + 0 + "," + 0 +
  3449. " L" + w + "," + 0 +
  3450. " L" + w + "," + h +
  3451. " L" + 0 + "," + h +
  3452. " z" +
  3453. " M" + x1 + "," + y1 +
  3454. " L" + x2 + "," + y2 +
  3455. " L" + x3 + "," + y3 +
  3456. " L" + x2 + "," + y2 +
  3457. " M" + x1 + "," + 0 +
  3458. " L" + x1 + "," + h;
  3459. break;
  3460. case "accentBorderCallout3":
  3461. case "accentCallout3":
  3462. if (shapType == "accentBorderCallout3") {
  3463. isBorder = true;
  3464. } else {
  3465. isBorder = false;
  3466. }
  3467. isBorder = true;
  3468. if (shapAdjst_ary === undefined) {
  3469. adj1 = 18750 * refr;
  3470. adj2 = -8333 * refr;
  3471. adj3 = 18750 * refr;
  3472. adj4 = -16667 * refr;
  3473. adj5 = 100000 * refr;
  3474. adj6 = -16667 * refr;
  3475. adj7 = 112963 * refr;
  3476. adj8 = -8333 * refr;
  3477. }
  3478. var y1, x1, y2, x2, y3, x3, y4, x4;
  3479. y1 = h * adj1 / cnstVal1;
  3480. x1 = w * adj2 / cnstVal1;
  3481. y2 = h * adj3 / cnstVal1;
  3482. x2 = w * adj4 / cnstVal1;
  3483. y3 = h * adj5 / cnstVal1;
  3484. x3 = w * adj6 / cnstVal1;
  3485. y4 = h * adj7 / cnstVal1;
  3486. x4 = w * adj8 / cnstVal1;
  3487. d_val = "M" + 0 + "," + 0 +
  3488. " L" + w + "," + 0 +
  3489. " L" + w + "," + h +
  3490. " L" + 0 + "," + h +
  3491. " z" +
  3492. " M" + x1 + "," + y1 +
  3493. " L" + x2 + "," + y2 +
  3494. " L" + x3 + "," + y3 +
  3495. " L" + x4 + "," + y4 +
  3496. " L" + x3 + "," + y3 +
  3497. " L" + x2 + "," + y2 +
  3498. " M" + x1 + "," + 0 +
  3499. " L" + x1 + "," + h;
  3500. break;
  3501. }
  3502. console.log("shapType: ", shapType, ",isBorder:", isBorder)
  3503. //if(isBorder){
  3504. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3505. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3506. //}else{
  3507. // result += "<path d='"+d_val+"' fill='" + (!imgFillFlg?(grndFillFlg?"url(#linGrd_"+shpId+")":fillColor):"url(#imgPtrn_"+shpId+")") +
  3508. // "' stroke='none' />";
  3509. //}
  3510. break;
  3511. case "leftRightRibbon":
  3512. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3513. var refr = 96 / 914400;
  3514. var sAdj1, adj1 = 50000 * refr;
  3515. var sAdj2, adj2 = 50000 * refr;
  3516. var sAdj3, adj3 = 16667 * refr;
  3517. if (shapAdjst_ary !== undefined) {
  3518. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3519. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3520. if (sAdj_name == "adj1") {
  3521. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3522. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3523. } else if (sAdj_name == "adj2") {
  3524. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3525. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3526. } else if (sAdj_name == "adj3") {
  3527. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3528. adj3 = parseInt(sAdj3.substr(4)) * refr;
  3529. }
  3530. }
  3531. }
  3532. var d_val;
  3533. var cnstVal1 = 33333 * refr;
  3534. var cnstVal2 = 100000 * refr;
  3535. var cnstVal3 = 200000 * refr;
  3536. var cnstVal4 = 400000 * refr;
  3537. var ss = Math.min(w, h);
  3538. var a3, maxAdj1, a1, w1, maxAdj2, a2, x1, x4, dy1, dy2, ly1, ry4, ly2, ry3, ly4, ry1,
  3539. ly3, ry2, hR, x2, x3, y1, y2, wd32 = w / 32, vc = h / 2, hc = w / 2;
  3540. a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3;
  3541. maxAdj1 = cnstVal2 - a3;
  3542. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  3543. w1 = hc - wd32;
  3544. maxAdj2 = cnstVal2 * w1 / ss;
  3545. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  3546. x1 = ss * a2 / cnstVal2;
  3547. x4 = w - x1;
  3548. dy1 = h * a1 / cnstVal3;
  3549. dy2 = h * a3 / -cnstVal3;
  3550. ly1 = vc + dy2 - dy1;
  3551. ry4 = vc + dy1 - dy2;
  3552. ly2 = ly1 + dy1;
  3553. ry3 = h - ly2;
  3554. ly4 = ly2 * 2;
  3555. ry1 = h - ly4;
  3556. ly3 = ly4 - ly1;
  3557. ry2 = h - ly3;
  3558. hR = a3 * ss / cnstVal4;
  3559. x2 = hc - wd32;
  3560. x3 = hc + wd32;
  3561. y1 = ly1 + hR;
  3562. y2 = ry2 - hR;
  3563. d_val = "M" + 0 + "," + ly2 +
  3564. "L" + x1 + "," + 0 +
  3565. "L" + x1 + "," + ly1 +
  3566. "L" + hc + "," + ly1 +
  3567. shapeArc(hc, y1, wd32, hR, 270, 450, false).replace("M", "L") +
  3568. shapeArc(hc, y2, wd32, hR, 270, 90, false).replace("M", "L") +
  3569. "L" + x4 + "," + ry2 +
  3570. "L" + x4 + "," + ry1 +
  3571. "L" + w + "," + ry3 +
  3572. "L" + x4 + "," + h +
  3573. "L" + x4 + "," + ry4 +
  3574. "L" + hc + "," + ry4 +
  3575. shapeArc(hc, ry4 - hR, wd32, hR, 90, 180, false).replace("M", "L") +
  3576. "L" + x2 + "," + ly3 +
  3577. "L" + x1 + "," + ly3 +
  3578. "L" + x1 + "," + ly4 +
  3579. " z" +
  3580. "M" + x3 + "," + y1 +
  3581. "L" + x3 + "," + ry2 +
  3582. "M" + x2 + "," + y2 +
  3583. "L" + x2 + "," + ly3;
  3584. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3585. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3586. break;
  3587. case "ribbon":
  3588. case "ribbon2":
  3589. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3590. var sAdj1, adj1 = 16667 * 96 / 914400;
  3591. var sAdj2, adj2 = 50000 * 96 / 914400;
  3592. if (shapAdjst_ary !== undefined) {
  3593. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3594. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3595. if (sAdj_name == "adj1") {
  3596. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3597. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  3598. } else if (sAdj_name == "adj2") {
  3599. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3600. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  3601. }
  3602. }
  3603. }
  3604. var d_val;
  3605. var cnstVal1 = 25000 * 96 / 914400;
  3606. var cnstVal2 = 33333 * 96 / 914400;
  3607. var cnstVal3 = 75000 * 96 / 914400;
  3608. var cnstVal4 = 100000 * 96 / 914400;
  3609. var cnstVal5 = 200000 * 96 / 914400;
  3610. var cnstVal6 = 400000 * 96 / 914400;
  3611. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32;
  3612. var a1, a2, x10, dx2, x2, x9, x3, x8, x5, x6, x4, x7, y1, y2, y4, y3, hR, y6;
  3613. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  3614. a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2;
  3615. x10 = r - wd8;
  3616. dx2 = w * a2 / cnstVal5;
  3617. x2 = hc - dx2;
  3618. x9 = hc + dx2;
  3619. x3 = x2 + wd32;
  3620. x8 = x9 - wd32;
  3621. x5 = x2 + wd8;
  3622. x6 = x9 - wd8;
  3623. x4 = x5 - wd32;
  3624. x7 = x6 + wd32;
  3625. hR = h * a1 / cnstVal6;
  3626. if (shapType == "ribbon2") {
  3627. var dy1, dy2, y7;
  3628. dy1 = h * a1 / cnstVal5;
  3629. y1 = b - dy1;
  3630. dy2 = h * a1 / cnstVal4;
  3631. y2 = b - dy2;
  3632. y4 = t + dy2;
  3633. y3 = (y4 + b) / 2;
  3634. y6 = b - hR;///////////////////
  3635. y7 = y1 - hR;
  3636. d_val = "M" + l + "," + b +
  3637. " L" + wd8 + "," + y3 +
  3638. " L" + l + "," + y4 +
  3639. " L" + x2 + "," + y4 +
  3640. " L" + x2 + "," + hR +
  3641. shapeArc(x3, hR, wd32, hR, 180, 270, false).replace("M", "L") +
  3642. " L" + x8 + "," + t +
  3643. shapeArc(x8, hR, wd32, hR, 270, 360, false).replace("M", "L") +
  3644. " L" + x9 + "," + y4 +
  3645. " L" + x9 + "," + y4 +
  3646. " L" + r + "," + y4 +
  3647. " L" + x10 + "," + y3 +
  3648. " L" + r + "," + b +
  3649. " L" + x7 + "," + b +
  3650. shapeArc(x7, y6, wd32, hR, 90, 270, false).replace("M", "L") +
  3651. " L" + x8 + "," + y1 +
  3652. shapeArc(x8, y7, wd32, hR, 90, -90, false).replace("M", "L") +
  3653. " L" + x3 + "," + y2 +
  3654. shapeArc(x3, y7, wd32, hR, 270, 90, false).replace("M", "L") +
  3655. " L" + x4 + "," + y1 +
  3656. shapeArc(x4, y6, wd32, hR, 270, 450, false).replace("M", "L") +
  3657. " z" +
  3658. " M" + x5 + "," + y2 +
  3659. " L" + x5 + "," + y6 +
  3660. "M" + x6 + "," + y6 +
  3661. " L" + x6 + "," + y2 +
  3662. "M" + x2 + "," + y7 +
  3663. " L" + x2 + "," + y4 +
  3664. "M" + x9 + "," + y4 +
  3665. " L" + x9 + "," + y7;
  3666. } else if (shapType == "ribbon") {
  3667. var y5;
  3668. y1 = h * a1 / cnstVal5;
  3669. y2 = h * a1 / cnstVal4;
  3670. y4 = b - y2;
  3671. y3 = y4 / 2;
  3672. y5 = b - hR; ///////////////////////
  3673. y6 = y2 - hR;
  3674. d_val = "M" + l + "," + t +
  3675. " L" + x4 + "," + t +
  3676. shapeArc(x4, hR, wd32, hR, 270, 450, false).replace("M", "L") +
  3677. " L" + x3 + "," + y1 +
  3678. shapeArc(x3, y6, wd32, hR, 270, 90, false).replace("M", "L") +
  3679. " L" + x8 + "," + y2 +
  3680. shapeArc(x8, y6, wd32, hR, 90, -90, false).replace("M", "L") +
  3681. " L" + x7 + "," + y1 +
  3682. shapeArc(x7, hR, wd32, hR, 90, 270, false).replace("M", "L") +
  3683. " L" + r + "," + t +
  3684. " L" + x10 + "," + y3 +
  3685. " L" + r + "," + y4 +
  3686. " L" + x9 + "," + y4 +
  3687. " L" + x9 + "," + y5 +
  3688. shapeArc(x8, y5, wd32, hR, 0, 90, false).replace("M", "L") +
  3689. " L" + x3 + "," + b +
  3690. shapeArc(x3, y5, wd32, hR, 90, 180, false).replace("M", "L") +
  3691. " L" + x2 + "," + y4 +
  3692. " L" + l + "," + y4 +
  3693. " L" + wd8 + "," + y3 +
  3694. " z" +
  3695. " M" + x5 + "," + hR +
  3696. " L" + x5 + "," + y2 +
  3697. "M" + x6 + "," + y2 +
  3698. " L" + x6 + "," + hR +
  3699. "M" + x2 + "," + y4 +
  3700. " L" + x2 + "," + y6 +
  3701. "M" + x9 + "," + y6 +
  3702. " L" + x9 + "," + y4;
  3703. }
  3704. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3705. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3706. break;
  3707. case "doubleWave":
  3708. case "wave":
  3709. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3710. var sAdj1, adj1 = (shapType == "doubleWave") ? 6250 * 96 / 914400 : 12500 * 96 / 914400;
  3711. var sAdj2, adj2 = 0;
  3712. if (shapAdjst_ary !== undefined) {
  3713. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3714. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3715. if (sAdj_name == "adj1") {
  3716. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3717. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  3718. } else if (sAdj_name == "adj2") {
  3719. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3720. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  3721. }
  3722. }
  3723. }
  3724. var d_val;
  3725. var cnstVal2 = -10000 * 96 / 914400;
  3726. var cnstVal3 = 50000 * 96 / 914400;
  3727. var cnstVal4 = 100000 * 96 / 914400;
  3728. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32;
  3729. if (shapType == "doubleWave") {
  3730. var cnstVal1 = 12500 * 96 / 914400;
  3731. var a1, a2, y1, dy2, y2, y3, y4, y5, y6, of2, dx2, x2, dx8, x8, dx3, x3, dx4, x4, x5, x6, x7, x9, x15, x10, x11, x12, x13, x14;
  3732. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1;
  3733. a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2;
  3734. y1 = h * a1 / cnstVal4;
  3735. dy2 = y1 * 10 / 3;
  3736. y2 = y1 - dy2;
  3737. y3 = y1 + dy2;
  3738. y4 = b - y1;
  3739. y5 = y4 - dy2;
  3740. y6 = y4 + dy2;
  3741. of2 = w * a2 / cnstVal3;
  3742. dx2 = (of2 > 0) ? 0 : of2;
  3743. x2 = l - dx2;
  3744. dx8 = (of2 > 0) ? of2 : 0;
  3745. x8 = r - dx8;
  3746. dx3 = (dx2 + x8) / 6;
  3747. x3 = x2 + dx3;
  3748. dx4 = (dx2 + x8) / 3;
  3749. x4 = x2 + dx4;
  3750. x5 = (x2 + x8) / 2;
  3751. x6 = x5 + dx3;
  3752. x7 = (x6 + x8) / 2;
  3753. x9 = l + dx8;
  3754. x15 = r + dx2;
  3755. x10 = x9 + dx3;
  3756. x11 = x9 + dx4;
  3757. x12 = (x9 + x15) / 2;
  3758. x13 = x12 + dx3;
  3759. x14 = (x13 + x15) / 2;
  3760. d_val = "M" + x2 + "," + y1 +
  3761. " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 +
  3762. " C" + x6 + "," + y2 + " " + x7 + "," + y3 + " " + x8 + "," + y1 +
  3763. " L" + x15 + "," + y4 +
  3764. " C" + x14 + "," + y6 + " " + x13 + "," + y5 + " " + x12 + "," + y4 +
  3765. " C" + x11 + "," + y6 + " " + x10 + "," + y5 + " " + x9 + "," + y4 +
  3766. " z";
  3767. } else if (shapType == "wave") {
  3768. var cnstVal5 = 20000 * 96 / 914400;
  3769. var a1, a2, y1, dy2, y2, y3, y4, y5, y6, of2, dx2, x2, dx5, x5, dx3, x3, x4, x6, x10, x7, x8;
  3770. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  3771. a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2;
  3772. y1 = h * a1 / cnstVal4;
  3773. dy2 = y1 * 10 / 3;
  3774. y2 = y1 - dy2;
  3775. y3 = y1 + dy2;
  3776. y4 = b - y1;
  3777. y5 = y4 - dy2;
  3778. y6 = y4 + dy2;
  3779. of2 = w * a2 / cnstVal3;
  3780. dx2 = (of2 > 0) ? 0 : of2;
  3781. x2 = l - dx2;
  3782. dx5 = (of2 > 0) ? of2 : 0;
  3783. x5 = r - dx5;
  3784. dx3 = (dx2 + x5) / 3;
  3785. x3 = x2 + dx3;
  3786. x4 = (x3 + x5) / 2;
  3787. x6 = l + dx5;
  3788. x10 = r + dx2;
  3789. x7 = x6 + dx3;
  3790. x8 = (x7 + x10) / 2;
  3791. d_val = "M" + x2 + "," + y1 +
  3792. " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 +
  3793. " L" + x10 + "," + y4 +
  3794. " C" + x8 + "," + y6 + " " + x7 + "," + y5 + " " + x6 + "," + y4 +
  3795. " z";
  3796. }
  3797. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3798. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3799. break;
  3800. case "ellipseRibbon":
  3801. case "ellipseRibbon2":
  3802. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3803. var sAdj1, adj1 = 25000 * 96 / 914400;
  3804. var sAdj2, adj2 = 50000 * 96 / 914400;
  3805. var sAdj3, adj3 = 12500 * 96 / 914400;
  3806. if (shapAdjst_ary !== undefined) {
  3807. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3808. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3809. if (sAdj_name == "adj1") {
  3810. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3811. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  3812. } else if (sAdj_name == "adj2") {
  3813. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3814. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  3815. } else if (sAdj_name == "adj3") {
  3816. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3817. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  3818. }
  3819. }
  3820. }
  3821. var d_val;
  3822. var cnstVal1 = 25000 * 96 / 914400;
  3823. var cnstVal3 = 75000 * 96 / 914400;
  3824. var cnstVal4 = 100000 * 96 / 914400;
  3825. var cnstVal5 = 200000 * 96 / 914400;
  3826. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8;
  3827. var a1, a2, q10, q11, q12, minAdj3, a3, dx2, x2, x3, x4, x5, x6, dy1, f1, q1, q2,
  3828. cx1, cx2, q1, dy3, q3, q4, q5, rh, q8, cx4, q9, cx5;
  3829. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal4) ? cnstVal4 : adj1;
  3830. a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2;
  3831. q10 = cnstVal4 - a1;
  3832. q11 = q10 / 2;
  3833. q12 = a1 - q11;
  3834. minAdj3 = (0 > q12) ? 0 : q12;
  3835. a3 = (adj3 < minAdj3) ? minAdj3 : (adj3 > a1) ? a1 : adj3;
  3836. dx2 = w * a2 / cnstVal5;
  3837. x2 = hc - dx2;
  3838. x3 = x2 + wd8;
  3839. x4 = r - x3;
  3840. x5 = r - x2;
  3841. x6 = r - wd8;
  3842. dy1 = h * a3 / cnstVal4;
  3843. f1 = 4 * dy1 / w;
  3844. q1 = x3 * x3 / w;
  3845. q2 = x3 - q1;
  3846. cx1 = x3 / 2;
  3847. cx2 = r - cx1;
  3848. q1 = h * a1 / cnstVal4;
  3849. dy3 = q1 - dy1;
  3850. q3 = x2 * x2 / w;
  3851. q4 = x2 - q3;
  3852. q5 = f1 * q4;
  3853. rh = b - q1;
  3854. q8 = dy1 * 14 / 16;
  3855. cx4 = x2 / 2;
  3856. q9 = f1 * cx4;
  3857. cx5 = r - cx4;
  3858. if (shapType == "ellipseRibbon") {
  3859. var y1, cy1, y3, q6, q7, cy3, y2, y5, y6,
  3860. cy4, cy6, y7, cy7, y8;
  3861. y1 = f1 * q2;
  3862. cy1 = f1 * cx1;
  3863. y3 = q5 + dy3;
  3864. q6 = dy1 + dy3 - y3;
  3865. q7 = q6 + dy1;
  3866. cy3 = q7 + dy3;
  3867. y2 = (q8 + rh) / 2;
  3868. y5 = q5 + rh;
  3869. y6 = y3 + rh;
  3870. cy4 = q9 + rh;
  3871. cy6 = cy3 + rh;
  3872. y7 = y1 + dy3;
  3873. cy7 = q1 + q1 - y7;
  3874. y8 = b - dy1;
  3875. //
  3876. d_val = "M" + l + "," + t +
  3877. " Q" + cx1 + "," + cy1 + " " + x3 + "," + y1 +
  3878. " L" + x2 + "," + y3 +
  3879. " Q" + hc + "," + cy3 + " " + x5 + "," + y3 +
  3880. " L" + x4 + "," + y1 +
  3881. " Q" + cx2 + "," + cy1 + " " + r + "," + t +
  3882. " L" + x6 + "," + y2 +
  3883. " L" + r + "," + rh +
  3884. " Q" + cx5 + "," + cy4 + " " + x5 + "," + y5 +
  3885. " L" + x5 + "," + y6 +
  3886. " Q" + hc + "," + cy6 + " " + x2 + "," + y6 +
  3887. " L" + x2 + "," + y5 +
  3888. " Q" + cx4 + "," + cy4 + " " + l + "," + rh +
  3889. " L" + wd8 + "," + y2 +
  3890. " z" +
  3891. "M" + x2 + "," + y5 +
  3892. " L" + x2 + "," + y3 +
  3893. "M" + x5 + "," + y3 +
  3894. " L" + x5 + "," + y5 +
  3895. "M" + x3 + "," + y1 +
  3896. " L" + x3 + "," + y7 +
  3897. "M" + x4 + "," + y7 +
  3898. " L" + x4 + "," + y1;
  3899. } else if (shapType == "ellipseRibbon2") {
  3900. var u1, y1, cu1, cy1, q3, q5, u3, y3, q6, q7, cu3, cy3, rh, q8, u2, y2,
  3901. u5, y5, u6, y6, cu4, cy4, cu6, cy6, u7, y7, cu7, cy7;
  3902. u1 = f1 * q2;
  3903. y1 = b - u1;
  3904. cu1 = f1 * cx1;
  3905. cy1 = b - cu1;
  3906. u3 = q5 + dy3;
  3907. y3 = b - u3;
  3908. q6 = dy1 + dy3 - u3;
  3909. q7 = q6 + dy1;
  3910. cu3 = q7 + dy3;
  3911. cy3 = b - cu3;
  3912. u2 = (q8 + rh) / 2;
  3913. y2 = b - u2;
  3914. u5 = q5 + rh;
  3915. y5 = b - u5;
  3916. u6 = u3 + rh;
  3917. y6 = b - u6;
  3918. cu4 = q9 + rh;
  3919. cy4 = b - cu4;
  3920. cu6 = cu3 + rh;
  3921. cy6 = b - cu6;
  3922. u7 = u1 + dy3;
  3923. y7 = b - u7;
  3924. cu7 = q1 + q1 - u7;
  3925. cy7 = b - cu7;
  3926. //
  3927. d_val = "M" + l + "," + b +
  3928. " L" + wd8 + "," + y2 +
  3929. " L" + l + "," + q1 +
  3930. " Q" + cx4 + "," + cy4 + " " + x2 + "," + y5 +
  3931. " L" + x2 + "," + y6 +
  3932. " Q" + hc + "," + cy6 + " " + x5 + "," + y6 +
  3933. " L" + x5 + "," + y5 +
  3934. " Q" + cx5 + "," + cy4 + " " + r + "," + q1 +
  3935. " L" + x6 + "," + y2 +
  3936. " L" + r + "," + b +
  3937. " Q" + cx2 + "," + cy1 + " " + x4 + "," + y1 +
  3938. " L" + x5 + "," + y3 +
  3939. " Q" + hc + "," + cy3 + " " + x2 + "," + y3 +
  3940. " L" + x3 + "," + y1 +
  3941. " Q" + cx1 + "," + cy1 + " " + l + "," + b +
  3942. " z" +
  3943. "M" + x2 + "," + y3 +
  3944. " L" + x2 + "," + y5 +
  3945. "M" + x5 + "," + y5 +
  3946. " L" + x5 + "," + y3 +
  3947. "M" + x3 + "," + y7 +
  3948. " L" + x3 + "," + y1 +
  3949. "M" + x4 + "," + y1 +
  3950. " L" + x4 + "," + y7;
  3951. }
  3952. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3953. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3954. break;
  3955. case "line":
  3956. case "straightConnector1":
  3957. case "bentConnector4":
  3958. case "bentConnector5":
  3959. case "curvedConnector2":
  3960. case "curvedConnector3":
  3961. case "curvedConnector4":
  3962. case "curvedConnector5":
  3963. if (isFlipV) {
  3964. result += "<line x1='" + w + "' y1='0' x2='0' y2='" + h + "' stroke='" + border.color +
  3965. "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  3966. } else {
  3967. result += "<line x1='0' y1='0' x2='" + w + "' y2='" + h + "' stroke='" + border.color +
  3968. "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  3969. }
  3970. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  3971. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  3972. }
  3973. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  3974. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  3975. }
  3976. result += "/>";
  3977. break;
  3978. case "rightArrow":
  3979. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3980. var sAdj1, sAdj1_val = 0.25;//0.5;
  3981. var sAdj2, sAdj2_val = 0.5;
  3982. var max_sAdj2_const = w / h;
  3983. if (shapAdjst_ary !== undefined) {
  3984. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3985. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3986. if (sAdj_name == "adj1") {
  3987. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3988. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  3989. } else if (sAdj_name == "adj2") {
  3990. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3991. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  3992. sAdj2_val = 1 - ((sAdj2_val2) / max_sAdj2_const);
  3993. }
  3994. }
  3995. }
  3996. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  3997. result += " <polygon points='" + w + " " + h / 2 + "," + sAdj2_val * w + " 0," + sAdj2_val * w + " " + sAdj1_val * h + ",0 " + sAdj1_val * h +
  3998. ",0 " + (1 - sAdj1_val) * h + "," + sAdj2_val * w + " " + (1 - sAdj1_val) * h + ", " + sAdj2_val * w + " " + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3999. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4000. break;
  4001. case "leftArrow":
  4002. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4003. var sAdj1, sAdj1_val = 0.25;//0.5;
  4004. var sAdj2, sAdj2_val = 0.5;
  4005. var max_sAdj2_const = w / h;
  4006. if (shapAdjst_ary !== undefined) {
  4007. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4008. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4009. if (sAdj_name == "adj1") {
  4010. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4011. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  4012. } else if (sAdj_name == "adj2") {
  4013. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4014. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  4015. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  4016. }
  4017. }
  4018. }
  4019. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  4020. result += " <polygon points='0 " + h / 2 + "," + sAdj2_val * w + " " + h + "," + sAdj2_val * w + " " + (1 - sAdj1_val) * h + "," + w + " " + (1 - sAdj1_val) * h +
  4021. "," + w + " " + sAdj1_val * h + "," + sAdj2_val * w + " " + sAdj1_val * h + ", " + sAdj2_val * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4022. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4023. break;
  4024. case "downArrow":
  4025. case "flowChartOffpageConnector":
  4026. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4027. var sAdj1, sAdj1_val = 0.25;//0.5;
  4028. var sAdj2, sAdj2_val = 0.5;
  4029. var max_sAdj2_const = h / w;
  4030. if (shapAdjst_ary !== undefined) {
  4031. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4032. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4033. if (sAdj_name == "adj1") {
  4034. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4035. sAdj1_val = parseInt(sAdj1.substr(4)) / 200000;
  4036. } else if (sAdj_name == "adj2") {
  4037. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4038. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  4039. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  4040. }
  4041. }
  4042. }
  4043. if (shapType == "flowChartOffpageConnector") {
  4044. sAdj1_val = 0.5;
  4045. sAdj2_val = 0.212;
  4046. }
  4047. result += " <polygon points='" + (0.5 - sAdj1_val) * w + " 0," + (0.5 - sAdj1_val) * w + " " + (1 - sAdj2_val) * h + ",0 " + (1 - sAdj2_val) * h + "," + (w / 2) + " " + h +
  4048. "," + w + " " + (1 - sAdj2_val) * h + "," + (0.5 + sAdj1_val) * w + " " + (1 - sAdj2_val) * h + ", " + (0.5 + sAdj1_val) * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4049. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4050. break;
  4051. case "upArrow":
  4052. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4053. var sAdj1, sAdj1_val = 0.25;//0.5;
  4054. var sAdj2, sAdj2_val = 0.5;
  4055. var max_sAdj2_const = h / w;
  4056. if (shapAdjst_ary !== undefined) {
  4057. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4058. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4059. if (sAdj_name == "adj1") {
  4060. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4061. sAdj1_val = parseInt(sAdj1.substr(4)) / 200000;
  4062. } else if (sAdj_name == "adj2") {
  4063. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4064. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  4065. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  4066. }
  4067. }
  4068. }
  4069. result += " <polygon points='" + (w / 2) + " 0,0 " + sAdj2_val * h + "," + (0.5 - sAdj1_val) * w + " " + sAdj2_val * h + "," + (0.5 - sAdj1_val) * w + " " + h +
  4070. "," + (0.5 + sAdj1_val) * w + " " + h + "," + (0.5 + sAdj1_val) * w + " " + sAdj2_val * h + ", " + w + " " + sAdj2_val * h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4071. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4072. break;
  4073. case "leftRightArrow":
  4074. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4075. var sAdj1, sAdj1_val = 0.25;
  4076. var sAdj2, sAdj2_val = 0.25;
  4077. var max_sAdj2_const = w / h;
  4078. if (shapAdjst_ary !== undefined) {
  4079. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4080. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4081. if (sAdj_name == "adj1") {
  4082. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4083. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  4084. } else if (sAdj_name == "adj2") {
  4085. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4086. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  4087. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  4088. }
  4089. }
  4090. }
  4091. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  4092. result += " <polygon points='0 " + h / 2 + "," + sAdj2_val * w + " " + h + "," + sAdj2_val * w + " " + (1 - sAdj1_val) * h + "," + (1 - sAdj2_val) * w + " " + (1 - sAdj1_val) * h +
  4093. "," + (1 - sAdj2_val) * w + " " + h + "," + w + " " + h / 2 + ", " + (1 - sAdj2_val) * w + " 0," + (1 - sAdj2_val) * w + " " + sAdj1_val * h + "," +
  4094. sAdj2_val * w + " " + sAdj1_val * h + "," + sAdj2_val * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4095. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4096. break;
  4097. case "upDownArrow":
  4098. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4099. var sAdj1, sAdj1_val = 0.25;
  4100. var sAdj2, sAdj2_val = 0.25;
  4101. var max_sAdj2_const = h / w;
  4102. if (shapAdjst_ary !== undefined) {
  4103. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4104. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4105. if (sAdj_name == "adj1") {
  4106. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4107. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  4108. } else if (sAdj_name == "adj2") {
  4109. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4110. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  4111. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  4112. }
  4113. }
  4114. }
  4115. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  4116. result += " <polygon points='" + w / 2 + " 0,0 " + sAdj2_val * h + "," + sAdj1_val * w + " " + sAdj2_val * h + "," + sAdj1_val * w + " " + (1 - sAdj2_val) * h +
  4117. ",0 " + (1 - sAdj2_val) * h + "," + w / 2 + " " + h + ", " + w + " " + (1 - sAdj2_val) * h + "," + (1 - sAdj1_val) * w + " " + (1 - sAdj2_val) * h + "," +
  4118. (1 - sAdj1_val) * w + " " + sAdj2_val * h + "," + w + " " + sAdj2_val * h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4119. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4120. break;
  4121. case "quadArrow":
  4122. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4123. var sAdj1, adj1 = 22500 * 96 / 914400;
  4124. var sAdj2, adj2 = 22500 * 96 / 914400;
  4125. var sAdj3, adj3 = 22500 * 96 / 914400;
  4126. var cnstVal1 = 50000 * 96 / 914400;
  4127. var cnstVal2 = 100000 * 96 / 914400;
  4128. var cnstVal3 = 200000 * 96 / 914400;
  4129. if (shapAdjst_ary !== undefined) {
  4130. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4131. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4132. if (sAdj_name == "adj1") {
  4133. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4134. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4135. } else if (sAdj_name == "adj2") {
  4136. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4137. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4138. } else if (sAdj_name == "adj3") {
  4139. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4140. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4141. }
  4142. }
  4143. }
  4144. var vc = h / 2, hc = w / 2, a1, a2, a3, q1, x1, x2, dx2, x3, dx3, x4, x5, x6, y2, y3, y4, y5, y6, maxAdj1, maxAdj3;
  4145. var minWH = Math.min(w, h);
  4146. if (adj2 < 0) a2 = 0
  4147. else if (adj2 > cnstVal1) a2 = cnstVal1
  4148. else a2 = adj2
  4149. maxAdj1 = 2 * a2;
  4150. if (adj1 < 0) a1 = 0
  4151. else if (adj1 > maxAdj1) a1 = maxAdj1
  4152. else a1 = adj1
  4153. q1 = cnstVal2 - maxAdj1;
  4154. maxAdj3 = q1 / 2;
  4155. if (adj3 < 0) a3 = 0
  4156. else if (adj3 > maxAdj3) a3 = maxAdj3
  4157. else a3 = adj3
  4158. x1 = minWH * a3 / cnstVal2;
  4159. dx2 = minWH * a2 / cnstVal2;
  4160. x2 = hc - dx2;
  4161. x5 = hc + dx2;
  4162. dx3 = minWH * a1 / cnstVal3;
  4163. x3 = hc - dx3;
  4164. x4 = hc + dx3;
  4165. x6 = w - x1;
  4166. y2 = vc - dx2;
  4167. y5 = vc + dx2;
  4168. y3 = vc - dx3;
  4169. y4 = vc + dx3;
  4170. y6 = h - x1;
  4171. var d_val = "M" + 0 + "," + vc +
  4172. " L" + x1 + "," + y2 +
  4173. " L" + x1 + "," + y3 +
  4174. " L" + x3 + "," + y3 +
  4175. " L" + x3 + "," + x1 +
  4176. " L" + x2 + "," + x1 +
  4177. " L" + hc + "," + 0 +
  4178. " L" + x5 + "," + x1 +
  4179. " L" + x4 + "," + x1 +
  4180. " L" + x4 + "," + y3 +
  4181. " L" + x6 + "," + y3 +
  4182. " L" + x6 + "," + y2 +
  4183. " L" + w + "," + vc +
  4184. " L" + x6 + "," + y5 +
  4185. " L" + x6 + "," + y4 +
  4186. " L" + x4 + "," + y4 +
  4187. " L" + x4 + "," + y6 +
  4188. " L" + x5 + "," + y6 +
  4189. " L" + hc + "," + h +
  4190. " L" + x2 + "," + y6 +
  4191. " L" + x3 + "," + y6 +
  4192. " L" + x3 + "," + y4 +
  4193. " L" + x1 + "," + y4 +
  4194. " L" + x1 + "," + y5 + " z";
  4195. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4196. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4197. break;
  4198. case "leftRightUpArrow":
  4199. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4200. var sAdj1, adj1 = 25000 * 96 / 914400;
  4201. var sAdj2, adj2 = 25000 * 96 / 914400;
  4202. var sAdj3, adj3 = 25000 * 96 / 914400;
  4203. var cnstVal1 = 50000 * 96 / 914400;
  4204. var cnstVal2 = 100000 * 96 / 914400;
  4205. var cnstVal3 = 200000 * 96 / 914400;
  4206. if (shapAdjst_ary !== undefined) {
  4207. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4208. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4209. if (sAdj_name == "adj1") {
  4210. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4211. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4212. } else if (sAdj_name == "adj2") {
  4213. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4214. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4215. } else if (sAdj_name == "adj3") {
  4216. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4217. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4218. }
  4219. }
  4220. }
  4221. var vc = h / 2, hc = w / 2, a1, a2, a3, q1, x1, x2, dx2, x3, dx3, x4, x5, x6, y2, dy2, y3, y4, y5, maxAdj1, maxAdj3;
  4222. var minWH = Math.min(w, h);
  4223. if (adj2 < 0) a2 = 0
  4224. else if (adj2 > cnstVal1) a2 = cnstVal1
  4225. else a2 = adj2
  4226. maxAdj1 = 2 * a2;
  4227. if (adj1 < 0) a1 = 0
  4228. else if (adj1 > maxAdj1) a1 = maxAdj1
  4229. else a1 = adj1
  4230. q1 = cnstVal2 - maxAdj1;
  4231. maxAdj3 = q1 / 2;
  4232. if (adj3 < 0) a3 = 0
  4233. else if (adj3 > maxAdj3) a3 = maxAdj3
  4234. else a3 = adj3
  4235. x1 = minWH * a3 / cnstVal2;
  4236. dx2 = minWH * a2 / cnstVal2;
  4237. x2 = hc - dx2;
  4238. x5 = hc + dx2;
  4239. dx3 = minWH * a1 / cnstVal3;
  4240. x3 = hc - dx3;
  4241. x4 = hc + dx3;
  4242. x6 = w - x1;
  4243. dy2 = minWH * a2 / cnstVal1;
  4244. y2 = h - dy2;
  4245. y4 = h - dx2;
  4246. y3 = y4 - dx3;
  4247. y5 = y4 + dx3;
  4248. var d_val = "M" + 0 + "," + y4 +
  4249. " L" + x1 + "," + y2 +
  4250. " L" + x1 + "," + y3 +
  4251. " L" + x3 + "," + y3 +
  4252. " L" + x3 + "," + x1 +
  4253. " L" + x2 + "," + x1 +
  4254. " L" + hc + "," + 0 +
  4255. " L" + x5 + "," + x1 +
  4256. " L" + x4 + "," + x1 +
  4257. " L" + x4 + "," + y3 +
  4258. " L" + x6 + "," + y3 +
  4259. " L" + x6 + "," + y2 +
  4260. " L" + w + "," + y4 +
  4261. " L" + x6 + "," + h +
  4262. " L" + x6 + "," + y5 +
  4263. " L" + x1 + "," + y5 +
  4264. " L" + x1 + "," + h + " z";
  4265. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4266. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4267. break;
  4268. case "leftUpArrow":
  4269. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4270. var sAdj1, adj1 = 25000 * 96 / 914400;
  4271. var sAdj2, adj2 = 25000 * 96 / 914400;
  4272. var sAdj3, adj3 = 25000 * 96 / 914400;
  4273. var cnstVal1 = 50000 * 96 / 914400;
  4274. var cnstVal2 = 100000 * 96 / 914400;
  4275. var cnstVal3 = 200000 * 96 / 914400;
  4276. if (shapAdjst_ary !== undefined) {
  4277. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4278. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4279. if (sAdj_name == "adj1") {
  4280. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4281. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4282. } else if (sAdj_name == "adj2") {
  4283. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4284. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4285. } else if (sAdj_name == "adj3") {
  4286. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4287. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4288. }
  4289. }
  4290. }
  4291. var vc = h / 2, hc = w / 2, a1, a2, a3, x1, x2, dx4, dx3, x3, x4, x5, y2, y3, y4, y5, maxAdj1, maxAdj3;
  4292. var minWH = Math.min(w, h);
  4293. if (adj2 < 0) a2 = 0
  4294. else if (adj2 > cnstVal1) a2 = cnstVal1
  4295. else a2 = adj2
  4296. maxAdj1 = 2 * a2;
  4297. if (adj1 < 0) a1 = 0
  4298. else if (adj1 > maxAdj1) a1 = maxAdj1
  4299. else a1 = adj1
  4300. maxAdj3 = cnstVal2 - maxAdj1;
  4301. if (adj3 < 0) a3 = 0
  4302. else if (adj3 > maxAdj3) a3 = maxAdj3
  4303. else a3 = adj3
  4304. x1 = minWH * a3 / cnstVal2;
  4305. dx2 = minWH * a2 / cnstVal1;
  4306. x2 = w - dx2;
  4307. y2 = h - dx2;
  4308. dx4 = minWH * a2 / cnstVal2;
  4309. x4 = w - dx4;
  4310. y4 = h - dx4;
  4311. dx3 = minWH * a1 / cnstVal3;
  4312. x3 = x4 - dx3;
  4313. x5 = x4 + dx3;
  4314. y3 = y4 - dx3;
  4315. y5 = y4 + dx3;
  4316. var d_val = "M" + 0 + "," + y4 +
  4317. " L" + x1 + "," + y2 +
  4318. " L" + x1 + "," + y3 +
  4319. " L" + x3 + "," + y3 +
  4320. " L" + x3 + "," + x1 +
  4321. " L" + x2 + "," + x1 +
  4322. " L" + x4 + "," + 0 +
  4323. " L" + w + "," + x1 +
  4324. " L" + x5 + "," + x1 +
  4325. " L" + x5 + "," + y5 +
  4326. " L" + x1 + "," + y5 +
  4327. " L" + x1 + "," + h + " z";
  4328. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4329. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4330. break;
  4331. case "bentUpArrow":
  4332. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4333. var sAdj1, adj1 = 25000 * 96 / 914400;
  4334. var sAdj2, adj2 = 25000 * 96 / 914400;
  4335. var sAdj3, adj3 = 25000 * 96 / 914400;
  4336. var cnstVal1 = 50000 * 96 / 914400;
  4337. var cnstVal2 = 100000 * 96 / 914400;
  4338. var cnstVal3 = 200000 * 96 / 914400;
  4339. if (shapAdjst_ary !== undefined) {
  4340. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4341. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4342. if (sAdj_name == "adj1") {
  4343. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4344. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4345. } else if (sAdj_name == "adj2") {
  4346. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4347. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4348. } else if (sAdj_name == "adj3") {
  4349. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4350. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4351. }
  4352. }
  4353. }
  4354. var vc = h / 2, hc = w / 2, a1, a2, a3, dx1, x1, dx2, x2, dx3, x3, x4, y1, y2, dy2;
  4355. var minWH = Math.min(w, h);
  4356. if (adj1 < 0) a1 = 0
  4357. else if (adj1 > cnstVal1) a1 = cnstVal1
  4358. else a1 = adj1
  4359. if (adj2 < 0) a2 = 0
  4360. else if (adj2 > cnstVal1) a2 = cnstVal1
  4361. else a2 = adj2
  4362. if (adj3 < 0) a3 = 0
  4363. else if (adj3 > maxAdj3) a3 = maxAdj3
  4364. else a3 = adj3
  4365. y1 = minWH * a3 / cnstVal2;
  4366. dx1 = minWH * a2 / cnstVal1;
  4367. x1 = w - dx1;
  4368. dx3 = minWH * a2 / cnstVal2;
  4369. x3 = w - dx3;
  4370. dx2 = minWH * a1 / cnstVal3;
  4371. x2 = x3 - dx2;
  4372. x4 = x3 + dx2;
  4373. dy2 = minWH * a1 / cnstVal2;
  4374. y2 = h - dy2;
  4375. var d_val = "M" + 0 + "," + y2 +
  4376. " L" + x2 + "," + y2 +
  4377. " L" + x2 + "," + y1 +
  4378. " L" + x1 + "," + y1 +
  4379. " L" + x3 + "," + 0 +
  4380. " L" + w + "," + y1 +
  4381. " L" + x4 + "," + y1 +
  4382. " L" + x4 + "," + h +
  4383. " L" + 0 + "," + h + " z";
  4384. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4385. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4386. break;
  4387. case "bentArrow":
  4388. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4389. var sAdj1, adj1 = 25000 * 96 / 914400;
  4390. var sAdj2, adj2 = 25000 * 96 / 914400;
  4391. var sAdj3, adj3 = 25000 * 96 / 914400;
  4392. var sAdj4, adj4 = 43750 * 96 / 914400;
  4393. var cnstVal1 = 50000 * 96 / 914400;
  4394. var cnstVal2 = 100000 * 96 / 914400;
  4395. if (shapAdjst_ary !== undefined) {
  4396. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4397. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4398. if (sAdj_name == "adj1") {
  4399. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4400. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4401. } else if (sAdj_name == "adj2") {
  4402. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4403. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4404. } else if (sAdj_name == "adj3") {
  4405. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4406. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4407. } else if (sAdj_name == "adj4") {
  4408. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4409. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4410. }
  4411. }
  4412. }
  4413. var a1, a2, a3, a4, x3, x4, y3, y4, y5, y6, maxAdj1, maxAdj4;
  4414. var minWH = Math.min(w, h);
  4415. if (adj2 < 0) a2 = 0
  4416. else if (adj2 > cnstVal1) a2 = cnstVal1
  4417. else a2 = adj2
  4418. maxAdj1 = 2 * a2;
  4419. if (adj1 < 0) a1 = 0
  4420. else if (adj1 > maxAdj1) a1 = maxAdj1
  4421. else a1 = adj1
  4422. if (adj3 < 0) a3 = 0
  4423. else if (adj3 > cnstVal1) a3 = cnstVal1
  4424. else a3 = adj3
  4425. var th, aw2, th2, dh2, ah, bw, bh, bs, bd, bd3, bd2,
  4426. th = minWH * a1 / cnstVal2;
  4427. aw2 = minWH * a2 / cnstVal2;
  4428. th2 = th / 2;
  4429. dh2 = aw2 - th2;
  4430. ah = minWH * a3 / cnstVal2;
  4431. bw = w - ah;
  4432. bh = h - dh2;
  4433. bs = (bw < bh) ? bw : bh;
  4434. maxAdj4 = cnstVal2 * bs / minWH;
  4435. if (adj4 < 0) a4 = 0
  4436. else if (adj4 > maxAdj4) a4 = maxAdj4
  4437. else a4 = adj4
  4438. bd = minWH * a4 / cnstVal2;
  4439. bd3 = bd - th;
  4440. bd2 = (bd3 > 0) ? bd3 : 0;
  4441. x3 = th + bd2;
  4442. x4 = w - ah;
  4443. y3 = dh2 + th;
  4444. y4 = y3 + dh2;
  4445. y5 = dh2 + bd;
  4446. y6 = y3 + bd2;
  4447. var d_val = "M" + 0 + "," + h +
  4448. " L" + 0 + "," + y5 +
  4449. shapeArc(bd, y5, bd, bd, 180, 270, false).replace("M", "L") +
  4450. " L" + x4 + "," + dh2 +
  4451. " L" + x4 + "," + 0 +
  4452. " L" + w + "," + aw2 +
  4453. " L" + x4 + "," + y4 +
  4454. " L" + x4 + "," + y3 +
  4455. " L" + x3 + "," + y3 +
  4456. shapeArc(x3, y6, bd2, bd2, 270, 180, false).replace("M", "L") +
  4457. " L" + th + "," + h + " z";
  4458. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4459. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4460. break;
  4461. case "uturnArrow":
  4462. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4463. var sAdj1, adj1 = 25000 * 96 / 914400;
  4464. var sAdj2, adj2 = 25000 * 96 / 914400;
  4465. var sAdj3, adj3 = 25000 * 96 / 914400;
  4466. var sAdj4, adj4 = 43750 * 96 / 914400;
  4467. var sAdj5, adj5 = 75000 * 96 / 914400;
  4468. var cnstVal1 = 25000 * 96 / 914400;
  4469. var cnstVal2 = 100000 * 96 / 914400;
  4470. if (shapAdjst_ary !== undefined) {
  4471. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4472. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4473. if (sAdj_name == "adj1") {
  4474. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4475. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4476. } else if (sAdj_name == "adj2") {
  4477. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4478. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4479. } else if (sAdj_name == "adj3") {
  4480. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4481. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4482. } else if (sAdj_name == "adj4") {
  4483. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4484. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4485. } else if (sAdj_name == "adj5") {
  4486. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4487. adj5 = parseInt(sAdj5.substr(4)) * 96 / 914400;
  4488. }
  4489. }
  4490. }
  4491. var a1, a2, a3, a4, a5, q1, q2, q3, x3, x4, x5, x6, x7, x8, x9, y4, y5, minAdj5, maxAdj1, maxAdj3, maxAdj4;
  4492. var minWH = Math.min(w, h);
  4493. if (adj2 < 0) a2 = 0
  4494. else if (adj2 > cnstVal1) a2 = cnstVal1
  4495. else a2 = adj2
  4496. maxAdj1 = 2 * a2;
  4497. if (adj1 < 0) a1 = 0
  4498. else if (adj1 > maxAdj1) a1 = maxAdj1
  4499. else a1 = adj1
  4500. q2 = a1 * minWH / h;
  4501. q3 = cnstVal2 - q2;
  4502. maxAdj3 = q3 * h / minWH;
  4503. if (adj3 < 0) a3 = 0
  4504. else if (adj3 > maxAdj3) a3 = maxAdj3
  4505. else a3 = adj3
  4506. q1 = a3 + a1;
  4507. minAdj5 = q1 * minWH / h;
  4508. if (adj5 < minAdj5) a5 = minAdj5
  4509. else if (adj5 > cnstVal2) a5 = cnstVal2
  4510. else a5 = adj5
  4511. var th, aw2, th2, dh2, ah, bw, bs, bd, bd3, bd2,
  4512. th = minWH * a1 / cnstVal2;
  4513. aw2 = minWH * a2 / cnstVal2;
  4514. th2 = th / 2;
  4515. dh2 = aw2 - th2;
  4516. y5 = h * a5 / cnstVal2;
  4517. ah = minWH * a3 / cnstVal2;
  4518. y4 = y5 - ah;
  4519. x9 = w - dh2;
  4520. bw = x9 / 2;
  4521. bs = (bw < y4) ? bw : y4;
  4522. maxAdj4 = cnstVal2 * bs / minWH;
  4523. if (adj4 < 0) a4 = 0
  4524. else if (adj4 > maxAdj4) a4 = maxAdj4
  4525. else a4 = adj4
  4526. bd = minWH * a4 / cnstVal2;
  4527. bd3 = bd - th;
  4528. bd2 = (bd3 > 0) ? bd3 : 0;
  4529. x3 = th + bd2;
  4530. x8 = w - aw2;
  4531. x6 = x8 - aw2;
  4532. x7 = x6 + dh2;
  4533. x4 = x9 - bd;
  4534. x5 = x7 - bd2;
  4535. cx = (th + x7) / 2
  4536. var cy = (y4 + th) / 2
  4537. var d_val = "M" + 0 + "," + h +
  4538. " L" + 0 + "," + bd +
  4539. shapeArc(bd, bd, bd, bd, 180, 270, false).replace("M", "L") +
  4540. " L" + x4 + "," + 0 +
  4541. shapeArc(x4, bd, bd, bd, 270, 360, false).replace("M", "L") +
  4542. " L" + x9 + "," + y4 +
  4543. " L" + w + "," + y4 +
  4544. " L" + x8 + "," + y5 +
  4545. " L" + x6 + "," + y4 +
  4546. " L" + x7 + "," + y4 +
  4547. " L" + x7 + "," + x3 +
  4548. shapeArc(x5, x3, bd2, bd2, 0, -90, false).replace("M", "L") +
  4549. " L" + x3 + "," + th +
  4550. shapeArc(x3, x3, bd2, bd2, 270, 180, false).replace("M", "L") +
  4551. " L" + th + "," + h + " z";
  4552. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4553. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4554. break;
  4555. case "stripedRightArrow":
  4556. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4557. var sAdj1, adj1 = 50000 * 96 / 914400;
  4558. var sAdj2, adj2 = 50000 * 96 / 914400;
  4559. var cnstVal1 = 100000 * 96 / 914400;
  4560. var cnstVal2 = 200000 * 96 / 914400;
  4561. var cnstVal3 = 84375 * 96 / 914400;
  4562. if (shapAdjst_ary !== undefined) {
  4563. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4564. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4565. if (sAdj_name == "adj1") {
  4566. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4567. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4568. } else if (sAdj_name == "adj2") {
  4569. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4570. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4571. }
  4572. }
  4573. }
  4574. var a1, a2, x4, x5, dx5, x6, dx6, y1, dy1, y2, maxAdj2, vc = h / 2;
  4575. var minWH = Math.min(w, h);
  4576. maxAdj2 = cnstVal3 * w / minWH;
  4577. if (adj1 < 0) a1 = 0
  4578. else if (adj1 > cnstVal1) a1 = cnstVal1
  4579. else a1 = adj1
  4580. if (adj2 < 0) a2 = 0
  4581. else if (adj2 > maxAdj2) a2 = maxAdj2
  4582. else a2 = adj2
  4583. x4 = minWH * 5 / 32;
  4584. dx5 = minWH * a2 / cnstVal1;
  4585. x5 = w - dx5;
  4586. dy1 = h * a1 / cnstVal2;
  4587. y1 = vc - dy1;
  4588. y2 = vc + dy1;
  4589. //dx6 = dy1*dx5/hd2;
  4590. //x6 = w-dx6;
  4591. var ssd8 = minWH / 8,
  4592. ssd16 = minWH / 16,
  4593. ssd32 = minWH / 32;
  4594. var d_val = "M" + 0 + "," + y1 +
  4595. " L" + ssd32 + "," + y1 +
  4596. " L" + ssd32 + "," + y2 +
  4597. " L" + 0 + "," + y2 + " z" +
  4598. " M" + ssd16 + "," + y1 +
  4599. " L" + ssd8 + "," + y1 +
  4600. " L" + ssd8 + "," + y2 +
  4601. " L" + ssd16 + "," + y2 + " z" +
  4602. " M" + x4 + "," + y1 +
  4603. " L" + x5 + "," + y1 +
  4604. " L" + x5 + "," + 0 +
  4605. " L" + w + "," + vc +
  4606. " L" + x5 + "," + h +
  4607. " L" + x5 + "," + y2 +
  4608. " L" + x4 + "," + y2 + " z";
  4609. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4610. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4611. break;
  4612. case "notchedRightArrow":
  4613. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4614. var sAdj1, adj1 = 50000 * 96 / 914400;
  4615. var sAdj2, adj2 = 50000 * 96 / 914400;
  4616. var cnstVal1 = 100000 * 96 / 914400;
  4617. var cnstVal2 = 200000 * 96 / 914400;
  4618. if (shapAdjst_ary !== undefined) {
  4619. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4620. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4621. if (sAdj_name == "adj1") {
  4622. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4623. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4624. } else if (sAdj_name == "adj2") {
  4625. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4626. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4627. }
  4628. }
  4629. }
  4630. var a1, a2, x1, x2, dx2, y1, dy1, y2, maxAdj2, vc = h / 2, hd2 = vc;
  4631. var minWH = Math.min(w, h);
  4632. maxAdj2 = cnstVal1 * w / minWH;
  4633. if (adj1 < 0) a1 = 0
  4634. else if (adj1 > cnstVal1) a1 = cnstVal1
  4635. else a1 = adj1
  4636. if (adj2 < 0) a2 = 0
  4637. else if (adj2 > maxAdj2) a2 = maxAdj2
  4638. else a2 = adj2
  4639. dx2 = minWH * a2 / cnstVal1;
  4640. x2 = w - dx2;
  4641. dy1 = h * a1 / cnstVal2;
  4642. y1 = vc - dy1;
  4643. y2 = vc + dy1;
  4644. x1 = dy1 * dx2 / hd2;
  4645. var d_val = "M" + 0 + "," + y1 +
  4646. " L" + x2 + "," + y1 +
  4647. " L" + x2 + "," + 0 +
  4648. " L" + w + "," + vc +
  4649. " L" + x2 + "," + h +
  4650. " L" + x2 + "," + y2 +
  4651. " L" + 0 + "," + y2 +
  4652. " L" + x1 + "," + vc + " z";
  4653. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4654. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4655. break;
  4656. case "homePlate":
  4657. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  4658. var adj = 50000 * 96 / 914400;
  4659. var cnstVal1 = 100000 * 96 / 914400;
  4660. if (shapAdjst !== undefined) {
  4661. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  4662. }
  4663. var a, x1, dx1, maxAdj, vc = h / 2;
  4664. var minWH = Math.min(w, h);
  4665. maxAdj = cnstVal1 * w / minWH;
  4666. if (adj < 0) a = 0
  4667. else if (adj > maxAdj) a = maxAdj
  4668. else a = adj
  4669. dx1 = minWH * a / cnstVal1;
  4670. x1 = w - dx1;
  4671. var d_val = "M" + 0 + "," + 0 +
  4672. " L" + x1 + "," + 0 +
  4673. " L" + w + "," + vc +
  4674. " L" + x1 + "," + h +
  4675. " L" + 0 + "," + h + " z";
  4676. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4677. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4678. break;
  4679. case "chevron":
  4680. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  4681. var adj = 50000 * 96 / 914400;
  4682. var cnstVal1 = 100000 * 96 / 914400;
  4683. if (shapAdjst !== undefined) {
  4684. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  4685. }
  4686. var a, x1, dx1, x2, maxAdj, vc = h / 2;
  4687. var minWH = Math.min(w, h);
  4688. maxAdj = cnstVal1 * w / minWH;
  4689. if (adj < 0) a = 0
  4690. else if (adj > maxAdj) a = maxAdj
  4691. else a = adj
  4692. x1 = minWH * a / cnstVal1;
  4693. x2 = w - x1;
  4694. var d_val = "M" + 0 + "," + 0 +
  4695. " L" + x2 + "," + 0 +
  4696. " L" + w + "," + vc +
  4697. " L" + x2 + "," + h +
  4698. " L" + 0 + "," + h +
  4699. " L" + x1 + "," + vc + " z";
  4700. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4701. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4702. break;
  4703. case "rightArrowCallout":
  4704. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4705. var sAdj1, adj1 = 25000 * 96 / 914400;
  4706. var sAdj2, adj2 = 25000 * 96 / 914400;
  4707. var sAdj3, adj3 = 25000 * 96 / 914400;
  4708. var sAdj4, adj4 = 64977 * 96 / 914400;
  4709. var cnstVal1 = 50000 * 96 / 914400;
  4710. var cnstVal2 = 100000 * 96 / 914400;
  4711. var cnstVal3 = 200000 * 96 / 914400;
  4712. if (shapAdjst_ary !== undefined) {
  4713. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4714. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4715. if (sAdj_name == "adj1") {
  4716. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4717. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4718. } else if (sAdj_name == "adj2") {
  4719. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4720. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4721. } else if (sAdj_name == "adj3") {
  4722. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4723. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4724. } else if (sAdj_name == "adj4") {
  4725. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4726. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4727. }
  4728. }
  4729. }
  4730. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, dx3, x3, x2, x1;
  4731. var vc = h / 2, r = w, b = h, l = 0, t = 0;
  4732. var ss = Math.min(w, h);
  4733. maxAdj2 = cnstVal1 * h / ss;
  4734. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4735. maxAdj1 = a2 * 2;
  4736. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4737. maxAdj3 = cnstVal2 * w / ss;
  4738. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  4739. q2 = a3 * ss / w;
  4740. maxAdj4 = cnstVal - q2;
  4741. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  4742. dy1 = ss * a2 / cnstVal2;
  4743. dy2 = ss * a1 / cnstVal3;
  4744. y1 = vc - dy1;
  4745. y2 = vc - dy2;
  4746. y3 = vc + dy2;
  4747. y4 = vc + dy1;
  4748. dx3 = ss * a3 / cnstVal2;
  4749. x3 = r - dx3;
  4750. x2 = w * a4 / cnstVal2;
  4751. x1 = x2 / 2;
  4752. var d_val = "M" + l + "," + t +
  4753. " L" + x2 + "," + t +
  4754. " L" + x2 + "," + y2 +
  4755. " L" + x3 + "," + y2 +
  4756. " L" + x3 + "," + y1 +
  4757. " L" + r + "," + vc +
  4758. " L" + x3 + "," + y4 +
  4759. " L" + x3 + "," + y3 +
  4760. " L" + x2 + "," + y3 +
  4761. " L" + x2 + "," + b +
  4762. " L" + l + "," + b +
  4763. " z";
  4764. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4765. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4766. break;
  4767. case "downArrowCallout":
  4768. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4769. var sAdj1, adj1 = 25000 * 96 / 914400;
  4770. var sAdj2, adj2 = 25000 * 96 / 914400;
  4771. var sAdj3, adj3 = 25000 * 96 / 914400;
  4772. var sAdj4, adj4 = 64977 * 96 / 914400;
  4773. var cnstVal1 = 50000 * 96 / 914400;
  4774. var cnstVal2 = 100000 * 96 / 914400;
  4775. var cnstVal3 = 200000 * 96 / 914400;
  4776. if (shapAdjst_ary !== undefined) {
  4777. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4778. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4779. if (sAdj_name == "adj1") {
  4780. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4781. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4782. } else if (sAdj_name == "adj2") {
  4783. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4784. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4785. } else if (sAdj_name == "adj3") {
  4786. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4787. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4788. } else if (sAdj_name == "adj4") {
  4789. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4790. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4791. }
  4792. }
  4793. }
  4794. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, dy3, y3, y2, y1;
  4795. var hc = w / 2, r = w, b = h, l = 0, t = 0;
  4796. var ss = Math.min(w, h);
  4797. maxAdj2 = cnstVal1 * w / ss;
  4798. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4799. maxAdj1 = a2 * 2;
  4800. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4801. maxAdj3 = cnstVal2 * h / ss;
  4802. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  4803. q2 = a3 * ss / h;
  4804. maxAdj4 = cnstVal2 - q2;
  4805. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  4806. dx1 = ss * a2 / cnstVal2;
  4807. dx2 = ss * a1 / cnstVal3;
  4808. x1 = hc - dx1;
  4809. x2 = hc - dx2;
  4810. x3 = hc + dx2;
  4811. x4 = hc + dx1;
  4812. dy3 = ss * a3 / cnstVal2;
  4813. y3 = b - dy3;
  4814. y2 = h * a4 / cnstVal2;
  4815. y1 = y2 / 2;
  4816. var d_val = "M" + l + "," + t +
  4817. " L" + r + "," + t +
  4818. " L" + r + "," + y2 +
  4819. " L" + x3 + "," + y2 +
  4820. " L" + x3 + "," + y3 +
  4821. " L" + x4 + "," + y3 +
  4822. " L" + hc + "," + b +
  4823. " L" + x1 + "," + y3 +
  4824. " L" + x2 + "," + y3 +
  4825. " L" + x2 + "," + y2 +
  4826. " L" + l + "," + y2 +
  4827. " z";
  4828. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4829. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4830. break;
  4831. case "leftArrowCallout":
  4832. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4833. var sAdj1, adj1 = 25000 * 96 / 914400;
  4834. var sAdj2, adj2 = 25000 * 96 / 914400;
  4835. var sAdj3, adj3 = 25000 * 96 / 914400;
  4836. var sAdj4, adj4 = 64977 * 96 / 914400;
  4837. var cnstVal1 = 50000 * 96 / 914400;
  4838. var cnstVal2 = 100000 * 96 / 914400;
  4839. var cnstVal3 = 200000 * 96 / 914400;
  4840. if (shapAdjst_ary !== undefined) {
  4841. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4842. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4843. if (sAdj_name == "adj1") {
  4844. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4845. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4846. } else if (sAdj_name == "adj2") {
  4847. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4848. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4849. } else if (sAdj_name == "adj3") {
  4850. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4851. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4852. } else if (sAdj_name == "adj4") {
  4853. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4854. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4855. }
  4856. }
  4857. }
  4858. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, dx2, x2, x3;
  4859. var vc = h / 2, r = w, b = h, l = 0, t = 0;
  4860. var ss = Math.min(w, h);
  4861. maxAdj2 = cnstVal1 * h / ss;
  4862. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4863. maxAdj1 = a2 * 2;
  4864. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4865. maxAdj3 = cnstVal2 * w / ss;
  4866. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  4867. q2 = a3 * ss / w;
  4868. maxAdj4 = cnstVal2 - q2;
  4869. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  4870. dy1 = ss * a2 / cnstVal2;
  4871. dy2 = ss * a1 / cnstVal3;
  4872. y1 = vc - dy1;
  4873. y2 = vc - dy2;
  4874. y3 = vc + dy2;
  4875. y4 = vc + dy1;
  4876. x1 = ss * a3 / cnstVal2;
  4877. dx2 = w * a4 / cnstVal2;
  4878. x2 = r - dx2;
  4879. x3 = (x2 + r) / 2;
  4880. var d_val = "M" + l + "," + vc +
  4881. " L" + x1 + "," + y1 +
  4882. " L" + x1 + "," + y2 +
  4883. " L" + x2 + "," + y2 +
  4884. " L" + x2 + "," + t +
  4885. " L" + r + "," + t +
  4886. " L" + r + "," + b +
  4887. " L" + x2 + "," + b +
  4888. " L" + x2 + "," + y3 +
  4889. " L" + x1 + "," + y3 +
  4890. " L" + x1 + "," + y4 +
  4891. " z";
  4892. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4893. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4894. break;
  4895. case "upArrowCallout":
  4896. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4897. var sAdj1, adj1 = 25000 * 96 / 914400;
  4898. var sAdj2, adj2 = 25000 * 96 / 914400;
  4899. var sAdj3, adj3 = 25000 * 96 / 914400;
  4900. var sAdj4, adj4 = 64977 * 96 / 914400;
  4901. var cnstVal1 = 50000 * 96 / 914400;
  4902. var cnstVal2 = 100000 * 96 / 914400;
  4903. var cnstVal3 = 200000 * 96 / 914400;
  4904. if (shapAdjst_ary !== undefined) {
  4905. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4906. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4907. if (sAdj_name == "adj1") {
  4908. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4909. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4910. } else if (sAdj_name == "adj2") {
  4911. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4912. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4913. } else if (sAdj_name == "adj3") {
  4914. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4915. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4916. } else if (sAdj_name == "adj4") {
  4917. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4918. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4919. }
  4920. }
  4921. }
  4922. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, y1, dy2, y2, y3;
  4923. var hc = w / 2, r = w, b = h, l = 0, t = 0;
  4924. var ss = Math.min(w, h);
  4925. maxAdj2 = cnstVal1 * w / ss;
  4926. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4927. maxAdj1 = a2 * 2;
  4928. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4929. maxAdj3 = cnstVal2 * h / ss;
  4930. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  4931. q2 = a3 * ss / h;
  4932. maxAdj4 = cnstVal2 - q2;
  4933. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  4934. dx1 = ss * a2 / cnstVal2;
  4935. dx2 = ss * a1 / cnstVal3;
  4936. x1 = hc - dx1;
  4937. x2 = hc - dx2;
  4938. x3 = hc + dx2;
  4939. x4 = hc + dx1;
  4940. y1 = ss * a3 / cnstVal2;
  4941. dy2 = h * a4 / cnstVal2;
  4942. y2 = b - dy2;
  4943. y3 = (y2 + b) / 2;
  4944. var d_val = "M" + l + "," + y2 +
  4945. " L" + x2 + "," + y2 +
  4946. " L" + x2 + "," + y1 +
  4947. " L" + x1 + "," + y1 +
  4948. " L" + hc + "," + t +
  4949. " L" + x4 + "," + y1 +
  4950. " L" + x3 + "," + y1 +
  4951. " L" + x3 + "," + y2 +
  4952. " L" + r + "," + y2 +
  4953. " L" + r + "," + b +
  4954. " L" + l + "," + b +
  4955. " z";
  4956. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4957. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4958. break;
  4959. case "leftRightArrowCallout":
  4960. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4961. var sAdj1, adj1 = 25000 * 96 / 914400;
  4962. var sAdj2, adj2 = 25000 * 96 / 914400;
  4963. var sAdj3, adj3 = 25000 * 96 / 914400;
  4964. var sAdj4, adj4 = 48123 * 96 / 914400;
  4965. var cnstVal1 = 50000 * 96 / 914400;
  4966. var cnstVal2 = 100000 * 96 / 914400;
  4967. var cnstVal3 = 200000 * 96 / 914400;
  4968. if (shapAdjst_ary !== undefined) {
  4969. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4970. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4971. if (sAdj_name == "adj1") {
  4972. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4973. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  4974. } else if (sAdj_name == "adj2") {
  4975. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4976. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  4977. } else if (sAdj_name == "adj3") {
  4978. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4979. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  4980. } else if (sAdj_name == "adj4") {
  4981. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4982. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  4983. }
  4984. }
  4985. }
  4986. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, x4, dx2, x2, x3;
  4987. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0;
  4988. var ss = Math.min(w, h);
  4989. maxAdj2 = cnstVal1 * h / ss;
  4990. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4991. maxAdj1 = a2 * 2;
  4992. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4993. maxAdj3 = cnstVal1 * w / ss;
  4994. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  4995. q2 = a3 * ss / wd2;
  4996. maxAdj4 = cnstVal2 - q2;
  4997. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  4998. dy1 = ss * a2 / cnstVal2;
  4999. dy2 = ss * a1 / cnstVal3;
  5000. y1 = vc - dy1;
  5001. y2 = vc - dy2;
  5002. y3 = vc + dy2;
  5003. y4 = vc + dy1;
  5004. x1 = ss * a3 / cnstVal2;
  5005. x4 = r - x1;
  5006. dx2 = w * a4 / cnstVal3;
  5007. x2 = hc - dx2;
  5008. x3 = hc + dx2;
  5009. var d_val = "M" + l + "," + vc +
  5010. " L" + x1 + "," + y1 +
  5011. " L" + x1 + "," + y2 +
  5012. " L" + x2 + "," + y2 +
  5013. " L" + x2 + "," + t +
  5014. " L" + x3 + "," + t +
  5015. " L" + x3 + "," + y2 +
  5016. " L" + x4 + "," + y2 +
  5017. " L" + x4 + "," + y1 +
  5018. " L" + r + "," + vc +
  5019. " L" + x4 + "," + y4 +
  5020. " L" + x4 + "," + y3 +
  5021. " L" + x3 + "," + y3 +
  5022. " L" + x3 + "," + b +
  5023. " L" + x2 + "," + b +
  5024. " L" + x2 + "," + y3 +
  5025. " L" + x1 + "," + y3 +
  5026. " L" + x1 + "," + y4 +
  5027. " z";
  5028. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5029. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5030. break;
  5031. case "quadArrowCallout":
  5032. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5033. var sAdj1, adj1 = 18515 * 96 / 914400;
  5034. var sAdj2, adj2 = 18515 * 96 / 914400;
  5035. var sAdj3, adj3 = 18515 * 96 / 914400;
  5036. var sAdj4, adj4 = 48123 * 96 / 914400;
  5037. var cnstVal1 = 50000 * 96 / 914400;
  5038. var cnstVal2 = 100000 * 96 / 914400;
  5039. var cnstVal3 = 200000 * 96 / 914400;
  5040. if (shapAdjst_ary !== undefined) {
  5041. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5042. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5043. if (sAdj_name == "adj1") {
  5044. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5045. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5046. } else if (sAdj_name == "adj2") {
  5047. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5048. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  5049. } else if (sAdj_name == "adj3") {
  5050. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5051. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  5052. } else if (sAdj_name == "adj4") {
  5053. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5054. adj4 = parseInt(sAdj4.substr(4)) * 96 / 914400;
  5055. }
  5056. }
  5057. }
  5058. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0;
  5059. var ss = Math.min(w, h);
  5060. var a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx2, dx3, ah, dx1, dy1, x8, x2, x7, x3, x6, x4, x5, y8, y2, y7, y3, y6, y4, y5;
  5061. a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2;
  5062. maxAdj1 = a2 * 2;
  5063. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  5064. maxAdj3 = cnstVal1 - a2;
  5065. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5066. q2 = a3 * 2;
  5067. maxAdj4 = cnstVal2 - q2;
  5068. a4 = (adj4 < a1) ? a1 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  5069. dx2 = ss * a2 / cnstVal2;
  5070. dx3 = ss * a1 / cnstVal3;
  5071. ah = ss * a3 / cnstVal2;
  5072. dx1 = w * a4 / cnstVal3;
  5073. dy1 = h * a4 / cnstVal3;
  5074. x8 = r - ah;
  5075. x2 = hc - dx1;
  5076. x7 = hc + dx1;
  5077. x3 = hc - dx2;
  5078. x6 = hc + dx2;
  5079. x4 = hc - dx3;
  5080. x5 = hc + dx3;
  5081. y8 = b - ah;
  5082. y2 = vc - dy1;
  5083. y7 = vc + dy1;
  5084. y3 = vc - dx2;
  5085. y6 = vc + dx2;
  5086. y4 = vc - dx3;
  5087. y5 = vc + dx3;
  5088. var d_val = "M" + l + "," + vc +
  5089. " L" + ah + "," + y3 +
  5090. " L" + ah + "," + y4 +
  5091. " L" + x2 + "," + y4 +
  5092. " L" + x2 + "," + y2 +
  5093. " L" + x4 + "," + y2 +
  5094. " L" + x4 + "," + ah +
  5095. " L" + x3 + "," + ah +
  5096. " L" + hc + "," + t +
  5097. " L" + x6 + "," + ah +
  5098. " L" + x5 + "," + ah +
  5099. " L" + x5 + "," + y2 +
  5100. " L" + x7 + "," + y2 +
  5101. " L" + x7 + "," + y4 +
  5102. " L" + x8 + "," + y4 +
  5103. " L" + x8 + "," + y3 +
  5104. " L" + r + "," + vc +
  5105. " L" + x8 + "," + y6 +
  5106. " L" + x8 + "," + y5 +
  5107. " L" + x7 + "," + y5 +
  5108. " L" + x7 + "," + y7 +
  5109. " L" + x5 + "," + y7 +
  5110. " L" + x5 + "," + y8 +
  5111. " L" + x6 + "," + y8 +
  5112. " L" + hc + "," + b +
  5113. " L" + x3 + "," + y8 +
  5114. " L" + x4 + "," + y8 +
  5115. " L" + x4 + "," + y7 +
  5116. " L" + x2 + "," + y7 +
  5117. " L" + x2 + "," + y5 +
  5118. " L" + ah + "," + y5 +
  5119. " L" + ah + "," + y6 +
  5120. " z";
  5121. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5122. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5123. break;
  5124. case "curvedDownArrow":
  5125. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5126. var sAdj1, adj1 = 25000 * 96 / 914400;
  5127. var sAdj2, adj2 = 50000 * 96 / 914400;
  5128. var sAdj3, adj3 = 25000 * 96 / 914400;
  5129. var cnstVal1 = 50000 * 96 / 914400;
  5130. var cnstVal2 = 100000 * 96 / 914400;
  5131. if (shapAdjst_ary !== undefined) {
  5132. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5133. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5134. if (sAdj_name == "adj1") {
  5135. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5136. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5137. } else if (sAdj_name == "adj2") {
  5138. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5139. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  5140. } else if (sAdj_name == "adj3") {
  5141. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5142. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  5143. }
  5144. }
  5145. }
  5146. var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  5147. var ss = Math.min(w, h);
  5148. var maxAdj2, a2, a1, th, aw, q1, wR, q7, q8, q9, q10, q11, idy, maxAdj3, a3, ah, x3, q2, q3, q4, q5, dx, x5, x7, q6, dh, x4, x8, aw2, x6, y1, swAng, mswAng, iy, ix, q12, dang2, stAng, stAng2, swAng2, swAng3;
  5149. maxAdj2 = cnstVal1 * w / ss;
  5150. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5151. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  5152. th = ss * a1 / cnstVal2;
  5153. aw = ss * a2 / cnstVal2;
  5154. q1 = (th + aw) / 4;
  5155. wR = wd2 - q1;
  5156. q7 = wR * 2;
  5157. q8 = q7 * q7;
  5158. q9 = th * th;
  5159. q10 = q8 - q9;
  5160. q11 = Math.sqrt(q10);
  5161. idy = q11 * h / q7;
  5162. maxAdj3 = cnstVal2 * idy / ss;
  5163. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5164. ah = ss * adj3 / cnstVal2;
  5165. x3 = wR + th;
  5166. q2 = h * h;
  5167. q3 = ah * ah;
  5168. q4 = q2 - q3;
  5169. q5 = Math.sqrt(q4);
  5170. dx = q5 * wR / h;
  5171. x5 = wR + dx;
  5172. x7 = x3 + dx;
  5173. q6 = aw - th;
  5174. dh = q6 / 2;
  5175. x4 = x5 - dh;
  5176. x8 = x7 + dh;
  5177. aw2 = aw / 2;
  5178. x6 = r - aw2;
  5179. y1 = b - ah;
  5180. swAng = Math.atan(dx / ah);
  5181. var swAngDeg = swAng * 180 / Math.PI;
  5182. mswAng = -swAngDeg;
  5183. iy = b - idy;
  5184. ix = (wR + x3) / 2;
  5185. q12 = th / 2;
  5186. dang2 = Math.atan(q12 / idy);
  5187. var dang2Deg = dang2 * 180 / Math.PI;
  5188. stAng = c3d4 + swAngDeg;
  5189. stAng2 = c3d4 - dang2Deg;
  5190. swAng2 = dang2Deg - cd4;
  5191. swAng3 = cd4 + dang2Deg;
  5192. //var cX = x5 - Math.cos(stAng*Math.PI/180) * wR;
  5193. //var cY = y1 - Math.sin(stAng*Math.PI/180) * h;
  5194. var d_val = "M" + x6 + "," + b +
  5195. " L" + x4 + "," + y1 +
  5196. " L" + x5 + "," + y1 +
  5197. shapeArc(wR, h, wR, h, stAng, (stAng + mswAng), false).replace("M", "L") +
  5198. " L" + x3 + "," + t +
  5199. shapeArc(x3, h, wR, h, c3d4, (c3d4 + swAngDeg), false).replace("M", "L") +
  5200. " L" + (x5 + th) + "," + y1 +
  5201. " L" + x8 + "," + y1 +
  5202. " z" +
  5203. "M" + x3 + "," + t +
  5204. shapeArc(x3, h, wR, h, stAng2, (stAng2 + swAng2), false).replace("M", "L") +
  5205. shapeArc(wR, h, wR, h, cd2, (cd2 + swAng3), false).replace("M", "L");
  5206. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5207. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5208. break;
  5209. case "curvedLeftArrow":
  5210. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5211. var sAdj1, adj1 = 25000 * 96 / 914400;
  5212. var sAdj2, adj2 = 50000 * 96 / 914400;
  5213. var sAdj3, adj3 = 25000 * 96 / 914400;
  5214. var cnstVal1 = 50000 * 96 / 914400;
  5215. var cnstVal2 = 100000 * 96 / 914400;
  5216. if (shapAdjst_ary !== undefined) {
  5217. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5218. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5219. if (sAdj_name == "adj1") {
  5220. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5221. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5222. } else if (sAdj_name == "adj2") {
  5223. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5224. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  5225. } else if (sAdj_name == "adj3") {
  5226. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5227. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  5228. }
  5229. }
  5230. }
  5231. var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  5232. var ss = Math.min(w, h);
  5233. var maxAdj2, a2, a1, th, aw, q1, hR, q7, q8, q9, q10, q11, idx, maxAdj3, a3, ah, y3, q2, q3, q4, q5, dy, y5, y7, q6, dh, y4, y8, aw2, y6, x1, swAng, mswAng, ix, iy, q12, dang2, swAng2, swAng3, stAng3;
  5234. maxAdj2 = cnstVal1 * h / ss;
  5235. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5236. a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1;
  5237. th = ss * a1 / cnstVal2;
  5238. aw = ss * a2 / cnstVal2;
  5239. q1 = (th + aw) / 4;
  5240. hR = hd2 - q1;
  5241. q7 = hR * 2;
  5242. q8 = q7 * q7;
  5243. q9 = th * th;
  5244. q10 = q8 - q9;
  5245. q11 = Math.sqrt(q10);
  5246. idx = q11 * w / q7;
  5247. maxAdj3 = cnstVal2 * idx / ss;
  5248. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5249. ah = ss * a3 / cnstVal2;
  5250. y3 = hR + th;
  5251. q2 = w * w;
  5252. q3 = ah * ah;
  5253. q4 = q2 - q3;
  5254. q5 = Math.sqrt(q4);
  5255. dy = q5 * hR / w;
  5256. y5 = hR + dy;
  5257. y7 = y3 + dy;
  5258. q6 = aw - th;
  5259. dh = q6 / 2;
  5260. y4 = y5 - dh;
  5261. y8 = y7 + dh;
  5262. aw2 = aw / 2;
  5263. y6 = b - aw2;
  5264. x1 = l + ah;
  5265. swAng = Math.atan(dy / ah);
  5266. mswAng = -swAng;
  5267. ix = l + idx;
  5268. iy = (hR + y3) / 2;
  5269. q12 = th / 2;
  5270. dang2 = Math.atan(q12 / idx);
  5271. swAng2 = dang2 - swAng;
  5272. swAng3 = swAng + dang2;
  5273. stAng3 = -dang2;
  5274. var swAngDg, swAng2Dg, swAng3Dg, stAng3dg;
  5275. swAngDg = swAng * 180 / Math.PI;
  5276. swAng2Dg = swAng2 * 180 / Math.PI;
  5277. swAng3Dg = swAng3 * 180 / Math.PI;
  5278. stAng3dg = stAng3 * 180 / Math.PI;
  5279. var d_val = "M" + r + "," + y3 +
  5280. shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") +
  5281. " L" + l + "," + t +
  5282. shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L") +
  5283. " L" + r + "," + y3 +
  5284. shapeArc(l, y3, w, hR, 0, swAngDg, false).replace("M", "L") +
  5285. " L" + x1 + "," + y7 +
  5286. " L" + x1 + "," + y8 +
  5287. " L" + l + "," + y6 +
  5288. " L" + x1 + "," + y4 +
  5289. " L" + x1 + "," + y5 +
  5290. shapeArc(l, hR, w, hR, swAngDg, (swAngDg + swAng2Dg), false).replace("M", "L") +
  5291. shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") +
  5292. shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L");
  5293. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5294. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5295. break;
  5296. case "curvedRightArrow":
  5297. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5298. var sAdj1, adj1 = 25000 * 96 / 914400;
  5299. var sAdj2, adj2 = 50000 * 96 / 914400;
  5300. var sAdj3, adj3 = 25000 * 96 / 914400;
  5301. var cnstVal1 = 50000 * 96 / 914400;
  5302. var cnstVal2 = 100000 * 96 / 914400;
  5303. if (shapAdjst_ary !== undefined) {
  5304. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5305. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5306. if (sAdj_name == "adj1") {
  5307. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5308. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5309. } else if (sAdj_name == "adj2") {
  5310. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5311. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  5312. } else if (sAdj_name == "adj3") {
  5313. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5314. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  5315. }
  5316. }
  5317. }
  5318. var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  5319. var ss = Math.min(w, h);
  5320. var maxAdj2, a2, a1, th, aw, q1, hR, q7, q8, q9, q10, q11, idx, maxAdj3, a3, ah, y3, q2, q3, q4, q5, dy, y5, y7, q6, dh, y4, y8, aw2, y6, x1, swAng, stAng, mswAng, ix, iy, q12, dang2, swAng2, swAng3, stAng3;
  5321. maxAdj2 = cnstVal1 * h / ss;
  5322. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5323. a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1;
  5324. th = ss * a1 / cnstVal2;
  5325. aw = ss * a2 / cnstVal2;
  5326. q1 = (th + aw) / 4;
  5327. hR = hd2 - q1;
  5328. q7 = hR * 2;
  5329. q8 = q7 * q7;
  5330. q9 = th * th;
  5331. q10 = q8 - q9;
  5332. q11 = Math.sqrt(q10);
  5333. idx = q11 * w / q7;
  5334. maxAdj3 = cnstVal2 * idx / ss;
  5335. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5336. ah = ss * a3 / cnstVal2;
  5337. y3 = hR + th;
  5338. q2 = w * w;
  5339. q3 = ah * ah;
  5340. q4 = q2 - q3;
  5341. q5 = Math.sqrt(q4);
  5342. dy = q5 * hR / w;
  5343. y5 = hR + dy;
  5344. y7 = y3 + dy;
  5345. q6 = aw - th;
  5346. dh = q6 / 2;
  5347. y4 = y5 - dh;
  5348. y8 = y7 + dh;
  5349. aw2 = aw / 2;
  5350. y6 = b - aw2;
  5351. x1 = r - ah;
  5352. swAng = Math.atan(dy / ah);
  5353. stAng = Math.PI + 0 - swAng;
  5354. mswAng = -swAng;
  5355. ix = r - idx;
  5356. iy = (hR + y3) / 2;
  5357. q12 = th / 2;
  5358. dang2 = Math.atan(q12 / idx);
  5359. swAng2 = dang2 - Math.PI / 2;
  5360. swAng3 = Math.PI / 2 + dang2;
  5361. stAng3 = Math.PI - dang2;
  5362. var stAngDg, mswAngDg, swAngDg, swAng2dg;
  5363. stAngDg = stAng * 180 / Math.PI;
  5364. mswAngDg = mswAng * 180 / Math.PI;
  5365. swAngDg = swAng * 180 / Math.PI;
  5366. swAng2dg = swAng2 * 180 / Math.PI;
  5367. var d_val = "M" + l + "," + hR +
  5368. shapeArc(w, hR, w, hR, cd2, cd2 + mswAngDg, false).replace("M", "L") +
  5369. " L" + x1 + "," + y5 +
  5370. " L" + x1 + "," + y4 +
  5371. " L" + r + "," + y6 +
  5372. " L" + x1 + "," + y8 +
  5373. " L" + x1 + "," + y7 +
  5374. shapeArc(w, y3, w, hR, stAngDg, stAngDg + swAngDg, false).replace("M", "L") +
  5375. " L" + l + "," + hR +
  5376. shapeArc(w, hR, w, hR, cd2, cd2 + cd4, false).replace("M", "L") +
  5377. " L" + r + "," + th +
  5378. shapeArc(w, y3, w, hR, c3d4, c3d4 + swAng2dg, false).replace("M", "L")
  5379. "";
  5380. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5381. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5382. break;
  5383. case "curvedUpArrow":
  5384. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5385. var sAdj1, adj1 = 25000 * 96 / 914400;
  5386. var sAdj2, adj2 = 50000 * 96 / 914400;
  5387. var sAdj3, adj3 = 25000 * 96 / 914400;
  5388. var cnstVal1 = 50000 * 96 / 914400;
  5389. var cnstVal2 = 100000 * 96 / 914400;
  5390. if (shapAdjst_ary !== undefined) {
  5391. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5392. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5393. if (sAdj_name == "adj1") {
  5394. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5395. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5396. } else if (sAdj_name == "adj2") {
  5397. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5398. adj2 = parseInt(sAdj2.substr(4)) * 96 / 914400;
  5399. } else if (sAdj_name == "adj3") {
  5400. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5401. adj3 = parseInt(sAdj3.substr(4)) * 96 / 914400;
  5402. }
  5403. }
  5404. }
  5405. var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  5406. var ss = Math.min(w, h);
  5407. var maxAdj2, a2, a1, th, aw, q1, wR, q7, q8, q9, q10, q11, idy, maxAdj3, a3, ah, x3, q2, q3, q4, q5, dx, x5, x7, q6, dh, x4, x8, aw2, x6, y1, swAng, mswAng, iy, ix, q12, dang2, swAng2, mswAng2, stAng3, swAng3, stAng2;
  5408. maxAdj2 = cnstVal1 * w / ss;
  5409. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5410. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  5411. th = ss * a1 / cnstVal2;
  5412. aw = ss * a2 / cnstVal2;
  5413. q1 = (th + aw) / 4;
  5414. wR = wd2 - q1;
  5415. q7 = wR * 2;
  5416. q8 = q7 * q7;
  5417. q9 = th * th;
  5418. q10 = q8 - q9;
  5419. q11 = Math.sqrt(q10);
  5420. idy = q11 * h / q7;
  5421. maxAdj3 = cnstVal2 * idy / ss;
  5422. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5423. ah = ss * adj3 / cnstVal2;
  5424. x3 = wR + th;
  5425. q2 = h * h;
  5426. q3 = ah * ah;
  5427. q4 = q2 - q3;
  5428. q5 = Math.sqrt(q4);
  5429. dx = q5 * wR / h;
  5430. x5 = wR + dx;
  5431. x7 = x3 + dx;
  5432. q6 = aw - th;
  5433. dh = q6 / 2;
  5434. x4 = x5 - dh;
  5435. x8 = x7 + dh;
  5436. aw2 = aw / 2;
  5437. x6 = r - aw2;
  5438. y1 = t + ah;
  5439. swAng = Math.atan(dx / ah);
  5440. mswAng = -swAng;
  5441. iy = t + idy;
  5442. ix = (wR + x3) / 2;
  5443. q12 = th / 2;
  5444. dang2 = Math.atan(q12 / idy);
  5445. swAng2 = dang2 - swAng;
  5446. mswAng2 = -swAng2;
  5447. stAng3 = Math.PI / 2 - swAng;
  5448. swAng3 = swAng + dang2;
  5449. stAng2 = Math.PI / 2 - dang2;
  5450. var stAng2dg, swAng2dg, swAngDg, swAng2dg;
  5451. stAng2dg = stAng2 * 180 / Math.PI;
  5452. swAng2dg = swAng2 * 180 / Math.PI;
  5453. stAng3dg = stAng3 * 180 / Math.PI;
  5454. swAngDg = swAng * 180 / Math.PI;
  5455. var d_val = //"M" + ix + "," +iy +
  5456. shapeArc(wR, 0, wR, h, stAng2dg, stAng2dg + swAng2dg, false) + //.replace("M","L") +
  5457. " L" + x5 + "," + y1 +
  5458. " L" + x4 + "," + y1 +
  5459. " L" + x6 + "," + t +
  5460. " L" + x8 + "," + y1 +
  5461. " L" + x7 + "," + y1 +
  5462. shapeArc(x3, 0, wR, h, stAng3dg, stAng3dg + swAngDg, false).replace("M", "L") +
  5463. " L" + wR + "," + b +
  5464. shapeArc(wR, 0, wR, h, cd4, cd2, false).replace("M", "L") +
  5465. " L" + th + "," + t +
  5466. shapeArc(x3, 0, wR, h, cd2, cd4, false).replace("M", "L") +
  5467. "";
  5468. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5469. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5470. break;
  5471. case "mathDivide":
  5472. case "mathEqual":
  5473. case "mathMinus":
  5474. case "mathMultiply":
  5475. case "mathNotEqual":
  5476. case "mathPlus":
  5477. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5478. var sAdj1, adj1;
  5479. var sAdj2, adj2;
  5480. var sAdj3, adj3;
  5481. if (shapAdjst_ary !== undefined) {
  5482. if (shapAdjst_ary.constructor === Array) {
  5483. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5484. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5485. if (sAdj_name == "adj1") {
  5486. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5487. adj1 = parseInt(sAdj1.substr(4));
  5488. } else if (sAdj_name == "adj2") {
  5489. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5490. adj2 = parseInt(sAdj2.substr(4));
  5491. } else if (sAdj_name == "adj3") {
  5492. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5493. adj3 = parseInt(sAdj3.substr(4));
  5494. }
  5495. }
  5496. } else {
  5497. sAdj1 = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]);
  5498. adj1 = parseInt(sAdj1.substr(4));
  5499. }
  5500. }
  5501. var cnstVal1 = 50000 * 96 / 914400;
  5502. var cnstVal2 = 100000 * 96 / 914400;
  5503. var cnstVal3 = 200000 * 96 / 914400;
  5504. var dVal;
  5505. var hc = w / 2, vc = h / 2, hd2 = h / 2;
  5506. if (shapType == "mathNotEqual") {
  5507. if (shapAdjst_ary === undefined) {
  5508. adj1 = 23520 * 96 / 914400;
  5509. adj2 = 110 * Math.PI / 180;
  5510. adj3 = 11760 * 96 / 914400;
  5511. } else {
  5512. adj1 = adj1 * 96 / 914400;
  5513. adj2 = (adj2 / 60000) * Math.PI / 180;
  5514. adj3 = adj3 * 96 / 914400;
  5515. }
  5516. var a1, crAng, a2a1, maxAdj3, a3, dy1, dy2, dx1, x1, x8, y2, y3, y1, y4,
  5517. cadj2, xadj2, len, bhw, bhw2, x7, dx67, x6, dx57, x5, dx47, x4, dx37,
  5518. x3, dx27, x2, rx7, rx6, rx5, rx4, rx3, rx2, dx7, rxt, lxt, rx, lx,
  5519. dy3, dy4, ry, ly, dlx, drx, dly, dry, xC1, xC2, yC1, yC2, yC3, yC4;
  5520. var angVal1 = 70 * Math.PI / 180, angVal2 = 110 * Math.PI / 180;
  5521. var cnstVal4 = 73490 * 96 / 914400;
  5522. //var cd4 = 90;
  5523. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1;
  5524. crAng = (adj2 < angVal1) ? angVal1 : (adj2 > angVal2) ? angVal2 : adj2;
  5525. a2a1 = a1 * 2;
  5526. maxAdj3 = cnstVal2 - a2a1;
  5527. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5528. dy1 = h * a1 / cnstVal2;
  5529. dy2 = h * a3 / cnstVal3;
  5530. dx1 = w * cnstVal4 / cnstVal3;
  5531. x1 = hc - dx1;
  5532. x8 = hc + dx1;
  5533. y2 = vc - dy2;
  5534. y3 = vc + dy2;
  5535. y1 = y2 - dy1;
  5536. y4 = y3 + dy1;
  5537. cadj2 = crAng - Math.PI / 2;
  5538. xadj2 = hd2 * Math.tan(cadj2);
  5539. len = Math.sqrt(xadj2 * xadj2 + hd2 * hd2);
  5540. bhw = len * dy1 / hd2;
  5541. bhw2 = bhw / 2;
  5542. x7 = hc + xadj2 - bhw2;
  5543. dx67 = xadj2 * y1 / hd2;
  5544. x6 = x7 - dx67;
  5545. dx57 = xadj2 * y2 / hd2;
  5546. x5 = x7 - dx57;
  5547. dx47 = xadj2 * y3 / hd2;
  5548. x4 = x7 - dx47;
  5549. dx37 = xadj2 * y4 / hd2;
  5550. x3 = x7 - dx37;
  5551. dx27 = xadj2 * 2;
  5552. x2 = x7 - dx27;
  5553. rx7 = x7 + bhw;
  5554. rx6 = x6 + bhw;
  5555. rx5 = x5 + bhw;
  5556. rx4 = x4 + bhw;
  5557. rx3 = x3 + bhw;
  5558. rx2 = x2 + bhw;
  5559. dx7 = dy1 * hd2 / len;
  5560. rxt = x7 + dx7;
  5561. lxt = rx7 - dx7;
  5562. rx = (cadj2 > 0) ? rxt : rx7;
  5563. lx = (cadj2 > 0) ? x7 : lxt;
  5564. dy3 = dy1 * xadj2 / len;
  5565. dy4 = -dy3;
  5566. ry = (cadj2 > 0) ? dy3 : 0;
  5567. ly = (cadj2 > 0) ? 0 : dy4;
  5568. dlx = w - rx;
  5569. drx = w - lx;
  5570. dly = h - ry;
  5571. dry = h - ly;
  5572. xC1 = (rx + lx) / 2;
  5573. xC2 = (drx + dlx) / 2;
  5574. yC1 = (ry + ly) / 2;
  5575. yC2 = (y1 + y2) / 2;
  5576. yC3 = (y3 + y4) / 2;
  5577. yC4 = (dry + dly) / 2;
  5578. dVal = "M" + x1 + "," + y1 +
  5579. " L" + x6 + "," + y1 +
  5580. " L" + lx + "," + ly +
  5581. " L" + rx + "," + ry +
  5582. " L" + rx6 + "," + y1 +
  5583. " L" + x8 + "," + y1 +
  5584. " L" + x8 + "," + y2 +
  5585. " L" + rx5 + "," + y2 +
  5586. " L" + rx4 + "," + y3 +
  5587. " L" + x8 + "," + y3 +
  5588. " L" + x8 + "," + y4 +
  5589. " L" + rx3 + "," + y4 +
  5590. " L" + drx + "," + dry +
  5591. " L" + dlx + "," + dly +
  5592. " L" + x3 + "," + y4 +
  5593. " L" + x1 + "," + y4 +
  5594. " L" + x1 + "," + y3 +
  5595. " L" + x4 + "," + y3 +
  5596. " L" + x5 + "," + y2 +
  5597. " L" + x1 + "," + y2 +
  5598. " z";
  5599. } else if (shapType == "mathDivide") {
  5600. if (shapAdjst_ary === undefined) {
  5601. adj1 = 23520 * 96 / 914400;
  5602. adj2 = 5880 * 96 / 914400;
  5603. adj3 = 11760 * 96 / 914400;
  5604. } else {
  5605. adj1 = adj1 * 96 / 914400;
  5606. adj2 = adj2 * 96 / 914400;
  5607. adj3 = adj3 * 96 / 914400;
  5608. }
  5609. var a1, ma1, ma3h, ma3w, maxAdj3, a3, m4a3, maxAdj2, a2, dy1, yg, rad, dx1,
  5610. y3, y4, a, y2, y1, y5, x1, x3, x2;
  5611. var cnstVal4 = 1000 * 96 / 914400;
  5612. var cnstVal5 = 36745 * 96 / 914400;
  5613. var cnstVal6 = 73490 * 96 / 914400;
  5614. a1 = (adj1 < cnstVal4) ? cnstVal4 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  5615. ma1 = -a1;
  5616. ma3h = (cnstVal6 + ma1) / 4;
  5617. ma3w = cnstVal5 * w / h;
  5618. maxAdj3 = (ma3h < ma3w) ? ma3h : ma3w;
  5619. a3 = (adj3 < cnstVal4) ? cnstVal4 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5620. m4a3 = -4 * a3;
  5621. maxAdj2 = cnstVal6 + m4a3 - a1;
  5622. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5623. dy1 = h * a1 / cnstVal3;
  5624. yg = h * a2 / cnstVal2;
  5625. rad = h * a3 / cnstVal2;
  5626. dx1 = w * cnstVal6 / cnstVal3;
  5627. y3 = vc - dy1;
  5628. y4 = vc + dy1;
  5629. a = yg + rad;
  5630. y2 = y3 - a;
  5631. y1 = y2 - rad;
  5632. y5 = h - y1;
  5633. x1 = hc - dx1;
  5634. x3 = hc + dx1;
  5635. x2 = hc - rad;
  5636. var cd4 = 90, c3d4 = 270;
  5637. var cX1 = hc - Math.cos(c3d4 * Math.PI / 180) * rad;
  5638. var cY1 = y1 - Math.sin(c3d4 * Math.PI / 180) * rad;
  5639. var cX2 = hc - Math.cos(Math.PI / 2) * rad;
  5640. var cY2 = y5 - Math.sin(Math.PI / 2) * rad;
  5641. dVal = "M" + hc + "," + y1 +
  5642. shapeArc(cX1, cY1, rad, rad, c3d4, c3d4 + 360, false).replace("M", "L") +
  5643. " z" +
  5644. " M" + hc + "," + y5 +
  5645. shapeArc(cX2, cY2, rad, rad, cd4, cd4 + 360, false).replace("M", "L") +
  5646. " z" +
  5647. " M" + x1 + "," + y3 +
  5648. " L" + x3 + "," + y3 +
  5649. " L" + x3 + "," + y4 +
  5650. " L" + x1 + "," + y4 +
  5651. " z";
  5652. } else if (shapType == "mathEqual") {
  5653. if (shapAdjst_ary === undefined) {
  5654. adj1 = 23520 * 96 / 914400;
  5655. adj2 = 11760 * 96 / 914400;
  5656. } else {
  5657. adj1 = adj1 * 96 / 914400;
  5658. adj2 = adj2 * 96 / 914400;
  5659. }
  5660. var cnstVal5 = 36745 * 96 / 914400;
  5661. var cnstVal6 = 73490 * 96 / 914400;
  5662. var a1, a2a1, mAdj2, a2, dy1, dy2, dx1, y2, y3, y1, y4, x1, x2, yC1, yC2;
  5663. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  5664. a2a1 = a1 * 2;
  5665. mAdj2 = cnstVal2 - a2a1;
  5666. a2 = (adj2 < 0) ? 0 : (adj2 > mAdj2) ? mAdj2 : adj2;
  5667. dy1 = h * a1 / cnstVal2;
  5668. dy2 = h * a2 / cnstVal3;
  5669. dx1 = w * cnstVal6 / cnstVal3;
  5670. y2 = vc - dy2;
  5671. y3 = vc + dy2;
  5672. y1 = y2 - dy1;
  5673. y4 = y3 + dy1;
  5674. x1 = hc - dx1;
  5675. x2 = hc + dx1;
  5676. yC1 = (y1 + y2) / 2;
  5677. yC2 = (y3 + y4) / 2;
  5678. dVal = "M" + x1 + "," + y1 +
  5679. " L" + x2 + "," + y1 +
  5680. " L" + x2 + "," + y2 +
  5681. " L" + x1 + "," + y2 +
  5682. " z" +
  5683. "M" + x1 + "," + y3 +
  5684. " L" + x2 + "," + y3 +
  5685. " L" + x2 + "," + y4 +
  5686. " L" + x1 + "," + y4 +
  5687. " z";
  5688. } else if (shapType == "mathMinus") {
  5689. if (shapAdjst_ary === undefined) {
  5690. adj1 = 23520 * 96 / 914400;
  5691. } else {
  5692. adj1 = adj1 * 96 / 914400;
  5693. }
  5694. var cnstVal6 = 73490 * 96 / 914400;
  5695. var a1, dy1, dx1, y1, y2, x1, x2;
  5696. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  5697. dy1 = h * a1 / cnstVal3;
  5698. dx1 = w * cnstVal6 / cnstVal3;
  5699. y1 = vc - dy1;
  5700. y2 = vc + dy1;
  5701. x1 = hc - dx1;
  5702. x2 = hc + dx1;
  5703. dVal = "M" + x1 + "," + y1 +
  5704. " L" + x2 + "," + y1 +
  5705. " L" + x2 + "," + y2 +
  5706. " L" + x1 + "," + y2 +
  5707. " z";
  5708. } else if (shapType == "mathMultiply") {
  5709. if (shapAdjst_ary === undefined) {
  5710. adj1 = 23520 * 96 / 914400;
  5711. } else {
  5712. adj1 = adj1 * 96 / 914400;
  5713. }
  5714. var cnstVal6 = 51965 * 96 / 914400;
  5715. var a1, th, a, sa, ca, ta, dl, rw, lM, xM, yM, dxAM, dyAM,
  5716. xA, yA, xB, yB, xBC, yBC, yC, xD, xE, yFE, xFE, xF, xL, yG, yH, yI, xC2, yC3;
  5717. var ss = Math.min(w, h);
  5718. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1;
  5719. th = ss * a1 / cnstVal2;
  5720. a = Math.atan(h / w);
  5721. sa = 1 * Math.sin(a);
  5722. ca = 1 * Math.cos(a);
  5723. ta = 1 * Math.tan(a);
  5724. dl = Math.sqrt(w * w + h * h);
  5725. rw = dl * cnstVal6 / cnstVal2;
  5726. lM = dl - rw;
  5727. xM = ca * lM / 2;
  5728. yM = sa * lM / 2;
  5729. dxAM = sa * th / 2;
  5730. dyAM = ca * th / 2;
  5731. xA = xM - dxAM;
  5732. yA = yM + dyAM;
  5733. xB = xM + dxAM;
  5734. yB = yM - dyAM;
  5735. xBC = hc - xB;
  5736. yBC = xBC * ta;
  5737. yC = yBC + yB;
  5738. xD = w - xB;
  5739. xE = w - xA;
  5740. yFE = vc - yA;
  5741. xFE = yFE / ta;
  5742. xF = xE - xFE;
  5743. xL = xA + xFE;
  5744. yG = h - yA;
  5745. yH = h - yB;
  5746. yI = h - yC;
  5747. xC2 = w - xM;
  5748. yC3 = h - yM;
  5749. dVal = "M" + xA + "," + yA +
  5750. " L" + xB + "," + yB +
  5751. " L" + hc + "," + yC +
  5752. " L" + xD + "," + yB +
  5753. " L" + xE + "," + yA +
  5754. " L" + xF + "," + vc +
  5755. " L" + xE + "," + yG +
  5756. " L" + xD + "," + yH +
  5757. " L" + hc + "," + yI +
  5758. " L" + xB + "," + yH +
  5759. " L" + xA + "," + yG +
  5760. " L" + xL + "," + vc +
  5761. " z";
  5762. } else if (shapType == "mathPlus") {
  5763. if (shapAdjst_ary === undefined) {
  5764. adj1 = 23520 * 96 / 914400;
  5765. } else {
  5766. adj1 = adj1 * 96 / 914400;
  5767. }
  5768. var cnstVal6 = 73490 * 96 / 914400;
  5769. var ss = Math.min(w, h);
  5770. var a1, dx1, dy1, dx2, x1, x2, x3, x4, y1, y2, y3, y4;
  5771. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1;
  5772. dx1 = w * cnstVal6 / cnstVal3;
  5773. dy1 = h * cnstVal6 / cnstVal3;
  5774. dx2 = ss * a1 / cnstVal3;
  5775. x1 = hc - dx1;
  5776. x2 = hc - dx2;
  5777. x3 = hc + dx2;
  5778. x4 = hc + dx1;
  5779. y1 = vc - dy1;
  5780. y2 = vc - dx2;
  5781. y3 = vc + dx2;
  5782. y4 = vc + dy1;
  5783. dVal = "M" + x1 + "," + y2 +
  5784. " L" + x2 + "," + y2 +
  5785. " L" + x2 + "," + y1 +
  5786. " L" + x3 + "," + y1 +
  5787. " L" + x3 + "," + y2 +
  5788. " L" + x4 + "," + y2 +
  5789. " L" + x4 + "," + y3 +
  5790. " L" + x3 + "," + y3 +
  5791. " L" + x3 + "," + y4 +
  5792. " L" + x2 + "," + y4 +
  5793. " L" + x2 + "," + y3 +
  5794. " L" + x1 + "," + y3 +
  5795. " z";
  5796. }
  5797. result += "<path d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5798. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5799. //console.log(shapType);
  5800. break;
  5801. case "can":
  5802. case "flowChartMagneticDisk":
  5803. case "flowChartMagneticDrum":
  5804. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  5805. var adj = 25000 * 96 / 914400;
  5806. var cnstVal1 = 50000 * 96 / 914400;
  5807. var cnstVal2 = 200000 * 96 / 914400;
  5808. if (shapAdjst !== undefined) {
  5809. adj = parseInt(shapAdjst.substr(4)) * 96 / 914400;
  5810. }
  5811. var ss = Math.min(w, h);
  5812. var maxAdj, a, y1, y2, y3, dVal;
  5813. if (shapType == "flowChartMagneticDisk" || shapType == "flowChartMagneticDrum") {
  5814. adj = 50000 * 96 / 914400;
  5815. }
  5816. maxAdj = cnstVal1 * h / ss;
  5817. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  5818. y1 = ss * a / cnstVal2;
  5819. y2 = y1 + y1;
  5820. y3 = h - y1;
  5821. var cd2 = 180, wd2 = w / 2;
  5822. var tranglRott = "";
  5823. if (shapType == "flowChartMagneticDrum") {
  5824. tranglRott = "transform='rotate(90 " + w / 2 + "," + h / 2 + ")'";
  5825. }
  5826. dVal = shapeArc(wd2, y1, wd2, y1, 0, cd2, false) +
  5827. shapeArc(wd2, y1, wd2, y1, cd2, cd2 + cd2, false).replace("M", "L") +
  5828. " L" + w + "," + y3 +
  5829. shapeArc(wd2, y3, wd2, y1, 0, cd2, false).replace("M", "L") +
  5830. " L" + 0 + "," + y1;
  5831. result += "<path " + tranglRott + " d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5832. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5833. break;
  5834. case "swooshArrow":
  5835. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5836. var refr = 96 / 914400;
  5837. var sAdj1, adj1 = 25000 * refr;
  5838. var sAdj2, adj2 = 16667 * refr;
  5839. if (shapAdjst_ary !== undefined) {
  5840. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5841. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5842. if (sAdj_name == "adj1") {
  5843. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5844. adj1 = parseInt(sAdj1.substr(4)) * refr;
  5845. } else if (sAdj_name == "adj2") {
  5846. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5847. adj2 = parseInt(sAdj2.substr(4)) * refr;
  5848. }
  5849. }
  5850. }
  5851. var cnstVal1 = 1 * refr;
  5852. var cnstVal2 = 70000 * refr;
  5853. var cnstVal3 = 75000 * refr;
  5854. var cnstVal4 = 100000 * refr;
  5855. var ss = Math.min(w, h);
  5856. var ssd8 = ss / 8;
  5857. var hd6 = h / 6;
  5858. var a1, maxAdj2, a2, ad1, ad2, xB, yB, alfa, dx0, xC, dx1, yF, xF, xE, yE, dy2, dy22, dy3, yD, dy4, yP1, xP1, dy5, yP2, xP2;
  5859. a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal3) ? cnstVal3 : adj1;
  5860. maxAdj2 = cnstVal2 * w / ss;
  5861. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5862. ad1 = h * a1 / cnstVal4;
  5863. ad2 = ss * a2 / cnstVal4;
  5864. xB = w - ad2;
  5865. yB = ssd8;
  5866. alfa = (Math.PI / 2) / 14;
  5867. dx0 = ssd8 * Math.tan(alfa);
  5868. xC = xB - dx0;
  5869. dx1 = ad1 * Math.tan(alfa);
  5870. yF = yB + ad1;
  5871. xF = xB + dx1;
  5872. xE = xF + dx0;
  5873. yE = yF + ssd8;
  5874. dy2 = yE - 0;
  5875. dy22 = dy2 / 2;
  5876. dy3 = h / 20;
  5877. yD = dy22 - dy3;
  5878. dy4 = hd6;
  5879. yP1 = hd6 + dy4;
  5880. xP1 = w / 6;
  5881. dy5 = hd6 / 2;
  5882. yP2 = yF + dy5;
  5883. xP2 = w / 4;
  5884. var dVal = "M" + 0 + "," + h +
  5885. " Q" + xP1 + "," + yP1 + " " + xB + "," + yB +
  5886. " L" + xC + "," + 0 +
  5887. " L" + w + "," + yD +
  5888. " L" + xE + "," + yE +
  5889. " L" + xF + "," + yF +
  5890. " Q" + xP2 + "," + yP2 + " " + 0 + "," + h +
  5891. " z";
  5892. result += "<path d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5893. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5894. break;
  5895. case "circularArrow":
  5896. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5897. var sAdj1, adj1 = 12500 * 96 / 914400;
  5898. var sAdj2, adj2 = (1142319 / 60000) * Math.PI / 180;
  5899. var sAdj3, adj3 = (20457681 / 60000) * Math.PI / 180;
  5900. var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180;
  5901. var sAdj5, adj5 = 12500 * 96 / 914400;
  5902. if (shapAdjst_ary !== undefined) {
  5903. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5904. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5905. if (sAdj_name == "adj1") {
  5906. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5907. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  5908. } else if (sAdj_name == "adj2") {
  5909. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5910. adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180;
  5911. } else if (sAdj_name == "adj3") {
  5912. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5913. adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180;
  5914. } else if (sAdj_name == "adj4") {
  5915. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5916. adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180;
  5917. } else if (sAdj_name == "adj5") {
  5918. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5919. adj5 = parseInt(sAdj5.substr(4)) * 96 / 914400;
  5920. }
  5921. }
  5922. }
  5923. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2;
  5924. var ss = Math.min(w, h);
  5925. var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH,
  5926. dyH, xH, yH, rI, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17,
  5927. u18, u19, u20, u21, maxAng, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE,
  5928. dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO,
  5929. q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO,
  5930. q13, q14, dyF1, q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF,
  5931. x1I, y1I, x2I, y2I, dxI, dyI, dI, v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11,
  5932. dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16, v17, v18, v19, v20, v21, v22, dxC, dyC,
  5933. sdxC, sdyC, xC, yC, ist0, ist1, istAng, isw1, isw2, iswAng, p1, p2, p3, p4, p5, xGp, yGp,
  5934. xBp, yBp, en0, en1, en2, sw0, sw1, swAng;
  5935. var cnstVal1 = 25000 * 96 / 914400;
  5936. var cnstVal2 = 100000 * 96 / 914400;
  5937. var rdAngVal1 = (1 / 60000) * Math.PI / 180;
  5938. var rdAngVal2 = (21599999 / 60000) * Math.PI / 180;
  5939. var rdAngVal3 = 2 * Math.PI;
  5940. a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5;
  5941. maxAdj1 = a5 * 2;
  5942. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  5943. enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3;
  5944. stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4; //////////////////////////////////////////
  5945. th = ss * a1 / cnstVal2;
  5946. thh = ss * a5 / cnstVal2;
  5947. th2 = th / 2;
  5948. rw1 = wd2 + th2 - thh;
  5949. rh1 = hd2 + th2 - thh;
  5950. rw2 = rw1 - th;
  5951. rh2 = rh1 - th;
  5952. rw3 = rw2 + th2;
  5953. rh3 = rh2 + th2;
  5954. wtH = rw3 * Math.sin(enAng);
  5955. htH = rh3 * Math.cos(enAng);
  5956. //dxH = rw3*Math.cos(Math.atan(wtH/htH));
  5957. //dyH = rh3*Math.sin(Math.atan(wtH/htH));
  5958. dxH = rw3 * Math.cos(Math.atan2(wtH, htH));
  5959. dyH = rh3 * Math.sin(Math.atan2(wtH, htH));
  5960. xH = hc + dxH;
  5961. yH = vc + dyH;
  5962. rI = (rw2 < rh2) ? rw2 : rh2;
  5963. u1 = dxH * dxH;
  5964. u2 = dyH * dyH;
  5965. u3 = rI * rI;
  5966. u4 = u1 - u3;
  5967. u5 = u2 - u3;
  5968. u6 = u4 * u5 / u1;
  5969. u7 = u6 / u2;
  5970. u8 = 1 - u7;
  5971. u9 = Math.sqrt(u8);
  5972. u10 = u4 / dxH;
  5973. u11 = u10 / dyH;
  5974. u12 = (1 + u9) / u11;
  5975. //u13 = Math.atan(u12/1);
  5976. u13 = Math.atan2(u12, 1);
  5977. u14 = u13 + rdAngVal3;
  5978. u15 = (u13 > 0) ? u13 : u14;
  5979. u16 = u15 - enAng;
  5980. u17 = u16 + rdAngVal3;
  5981. u18 = (u16 > 0) ? u16 : u17;
  5982. u19 = u18 - cd2;
  5983. u20 = u18 - rdAngVal3;
  5984. u21 = (u19 > 0) ? u20 : u18;
  5985. maxAng = Math.abs(u21);
  5986. aAng = (adj2 < 0) ? 0 : (adj2 > maxAng) ? maxAng : adj2;
  5987. ptAng = enAng + aAng;
  5988. wtA = rw3 * Math.sin(ptAng);
  5989. htA = rh3 * Math.cos(ptAng);
  5990. //dxA = rw3*Math.cos(Math.atan(wtA/htA));
  5991. //dyA = rh3*Math.sin(Math.atan(wtA/htA));
  5992. dxA = rw3 * Math.cos(Math.atan2(wtA, htA));
  5993. dyA = rh3 * Math.sin(Math.atan2(wtA, htA));
  5994. xA = hc + dxA;
  5995. yA = vc + dyA;
  5996. wtE = rw1 * Math.sin(stAng);
  5997. htE = rh1 * Math.cos(stAng);
  5998. //dxE = rw1*Math.cos(Math.atan(wtE/htE));
  5999. //dyE = rh1*Math.sin(Math.atan(wtE/htE));
  6000. dxE = rw1 * Math.cos(Math.atan2(wtE, htE));
  6001. dyE = rh1 * Math.sin(Math.atan2(wtE, htE));
  6002. xE = hc + dxE;
  6003. yE = vc + dyE;
  6004. dxG = thh * Math.cos(ptAng);
  6005. dyG = thh * Math.sin(ptAng);
  6006. xG = xH + dxG;
  6007. yG = yH + dyG;
  6008. dxB = thh * Math.cos(ptAng);
  6009. dyB = thh * Math.sin(ptAng);
  6010. xB = xH - dxB;
  6011. yB = yH - dyB;
  6012. sx1 = xB - hc;
  6013. sy1 = yB - vc;
  6014. sx2 = xG - hc;
  6015. sy2 = yG - vc;
  6016. rO = (rw1 < rh1) ? rw1 : rh1;
  6017. x1O = sx1 * rO / rw1;
  6018. y1O = sy1 * rO / rh1;
  6019. x2O = sx2 * rO / rw1;
  6020. y2O = sy2 * rO / rh1;
  6021. dxO = x2O - x1O;
  6022. dyO = y2O - y1O;
  6023. dO = Math.sqrt(dxO * dxO + dyO * dyO);
  6024. q1 = x1O * y2O;
  6025. q2 = x2O * y1O;
  6026. DO = q1 - q2;
  6027. q3 = rO * rO;
  6028. q4 = dO * dO;
  6029. q5 = q3 * q4;
  6030. q6 = DO * DO;
  6031. q7 = q5 - q6;
  6032. q8 = (q7 > 0) ? q7 : 0;
  6033. sdelO = Math.sqrt(q8);
  6034. ndyO = dyO * -1;
  6035. sdyO = (ndyO > 0) ? -1 : 1;
  6036. q9 = sdyO * dxO;
  6037. q10 = q9 * sdelO;
  6038. q11 = DO * dyO;
  6039. dxF1 = (q11 + q10) / q4;
  6040. q12 = q11 - q10;
  6041. dxF2 = q12 / q4;
  6042. adyO = Math.abs(dyO);
  6043. q13 = adyO * sdelO;
  6044. q14 = DO * dxO / -1;
  6045. dyF1 = (q14 + q13) / q4;
  6046. q15 = q14 - q13;
  6047. dyF2 = q15 / q4;
  6048. q16 = x2O - dxF1;
  6049. q17 = x2O - dxF2;
  6050. q18 = y2O - dyF1;
  6051. q19 = y2O - dyF2;
  6052. q20 = Math.sqrt(q16 * q16 + q18 * q18);
  6053. q21 = Math.sqrt(q17 * q17 + q19 * q19);
  6054. q22 = q21 - q20;
  6055. dxF = (q22 > 0) ? dxF1 : dxF2;
  6056. dyF = (q22 > 0) ? dyF1 : dyF2;
  6057. sdxF = dxF * rw1 / rO;
  6058. sdyF = dyF * rh1 / rO;
  6059. xF = hc + sdxF;
  6060. yF = vc + sdyF;
  6061. x1I = sx1 * rI / rw2;
  6062. y1I = sy1 * rI / rh2;
  6063. x2I = sx2 * rI / rw2;
  6064. y2I = sy2 * rI / rh2;
  6065. dxI = x2I - x1I;
  6066. dyI = y2I - y1I;
  6067. dI = Math.sqrt(dxI * dxI + dyI * dyI);
  6068. v1 = x1I * y2I;
  6069. v2 = x2I * y1I;
  6070. DI = v1 - v2;
  6071. v3 = rI * rI;
  6072. v4 = dI * dI;
  6073. v5 = v3 * v4;
  6074. v6 = DI * DI;
  6075. v7 = v5 - v6;
  6076. v8 = (v7 > 0) ? v7 : 0;
  6077. sdelI = Math.sqrt(v8);
  6078. v9 = sdyO * dxI;
  6079. v10 = v9 * sdelI;
  6080. v11 = DI * dyI;
  6081. dxC1 = (v11 + v10) / v4;
  6082. v12 = v11 - v10;
  6083. dxC2 = v12 / v4;
  6084. adyI = Math.abs(dyI);
  6085. v13 = adyI * sdelI;
  6086. v14 = DI * dxI / -1;
  6087. dyC1 = (v14 + v13) / v4;
  6088. v15 = v14 - v13;
  6089. dyC2 = v15 / v4;
  6090. v16 = x1I - dxC1;
  6091. v17 = x1I - dxC2;
  6092. v18 = y1I - dyC1;
  6093. v19 = y1I - dyC2;
  6094. v20 = Math.sqrt(v16 * v16 + v18 * v18);
  6095. v21 = Math.sqrt(v17 * v17 + v19 * v19);
  6096. v22 = v21 - v20;
  6097. dxC = (v22 > 0) ? dxC1 : dxC2;
  6098. dyC = (v22 > 0) ? dyC1 : dyC2;
  6099. sdxC = dxC * rw2 / rI;
  6100. sdyC = dyC * rh2 / rI;
  6101. xC = hc + sdxC;
  6102. yC = vc + sdyC;
  6103. //ist0 = Math.atan(sdyC/sdxC);
  6104. ist0 = Math.atan2(sdyC, sdxC);
  6105. ist1 = ist0 + rdAngVal3;
  6106. istAng = (ist0 > 0) ? ist0 : ist1;
  6107. isw1 = stAng - istAng;
  6108. isw2 = isw1 - rdAngVal3;
  6109. iswAng = (isw1 > 0) ? isw2 : isw1;
  6110. p1 = xF - xC;
  6111. p2 = yF - yC;
  6112. p3 = Math.sqrt(p1 * p1 + p2 * p2);
  6113. p4 = p3 / 2;
  6114. p5 = p4 - thh;
  6115. xGp = (p5 > 0) ? xF : xG;
  6116. yGp = (p5 > 0) ? yF : yG;
  6117. xBp = (p5 > 0) ? xC : xB;
  6118. yBp = (p5 > 0) ? yC : yB;
  6119. //en0 = Math.atan(sdyF/sdxF);
  6120. en0 = Math.atan2(sdyF, sdxF);
  6121. en1 = en0 + rdAngVal3;
  6122. en2 = (en0 > 0) ? en0 : en1;
  6123. sw0 = en2 - stAng;
  6124. sw1 = sw0 + rdAngVal3;
  6125. swAng = (sw0 > 0) ? sw0 : sw1;
  6126. var strtAng = stAng * 180 / Math.PI
  6127. var endAng = strtAng + (swAng * 180 / Math.PI);
  6128. var stiAng = istAng * 180 / Math.PI;
  6129. var swiAng = iswAng * 180 / Math.PI;
  6130. var ediAng = stiAng + swiAng;
  6131. var d_val = shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false) +
  6132. " L" + xGp + "," + yGp +
  6133. " L" + xA + "," + yA +
  6134. " L" + xBp + "," + yBp +
  6135. " L" + xC + "," + yC +
  6136. shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") +
  6137. " z";
  6138. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6139. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6140. break;
  6141. case "leftCircularArrow":
  6142. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6143. var sAdj1, adj1 = 12500 * 96 / 914400;
  6144. var sAdj2, adj2 = (-1142319 / 60000) * Math.PI / 180;
  6145. var sAdj3, adj3 = (1142319 / 60000) * Math.PI / 180;
  6146. var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180;
  6147. var sAdj5, adj5 = 12500 * 96 / 914400;
  6148. if (shapAdjst_ary !== undefined) {
  6149. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6150. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6151. if (sAdj_name == "adj1") {
  6152. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6153. adj1 = parseInt(sAdj1.substr(4)) * 96 / 914400;
  6154. } else if (sAdj_name == "adj2") {
  6155. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6156. adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180;
  6157. } else if (sAdj_name == "adj3") {
  6158. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6159. adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180;
  6160. } else if (sAdj_name == "adj4") {
  6161. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6162. adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180;
  6163. } else if (sAdj_name == "adj5") {
  6164. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6165. adj5 = parseInt(sAdj5.substr(4)) * 96 / 914400;
  6166. }
  6167. }
  6168. }
  6169. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2;
  6170. var ss = Math.min(w, h);
  6171. var cnstVal1 = 25000 * 96 / 914400;
  6172. var cnstVal2 = 100000 * 96 / 914400;
  6173. var rdAngVal1 = (1 / 60000) * Math.PI / 180;
  6174. var rdAngVal2 = (21599999 / 60000) * Math.PI / 180;
  6175. var rdAngVal3 = 2 * Math.PI;
  6176. var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH, dyH, xH, yH, rI,
  6177. u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20, u21, u22,
  6178. minAng, u23, a2, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE, wtD, htD, dxD, dyD,
  6179. xD, yD, dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO,
  6180. q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO, q13, q14, dyF1,
  6181. q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF, x1I, y1I, x2I, y2I, dxI, dyI, dI,
  6182. v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11, dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16,
  6183. v17, v18, v19, v20, v21, v22, dxC, dyC, sdxC, sdyC, xC, yC, ist0, ist1, istAng0, isw1, isw2, iswAng0, istAng,
  6184. iswAng, p1, p2, p3, p4, p5, xGp, yGp, xBp, yBp, en0, en1, en2, sw0, sw1, swAng, stAng0;
  6185. a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5;
  6186. maxAdj1 = a5 * 2;
  6187. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  6188. enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3;
  6189. stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4;
  6190. th = ss * a1 / cnstVal2;
  6191. thh = ss * a5 / cnstVal2;
  6192. th2 = th / 2;
  6193. rw1 = wd2 + th2 - thh;
  6194. rh1 = hd2 + th2 - thh;
  6195. rw2 = rw1 - th;
  6196. rh2 = rh1 - th;
  6197. rw3 = rw2 + th2;
  6198. rh3 = rh2 + th2;
  6199. wtH = rw3 * Math.sin(enAng);
  6200. htH = rh3 * Math.cos(enAng);
  6201. dxH = rw3 * Math.cos(Math.atan2(wtH, htH));
  6202. dyH = rh3 * Math.sin(Math.atan2(wtH, htH));
  6203. xH = hc + dxH;
  6204. yH = vc + dyH;
  6205. rI = (rw2 < rh2) ? rw2 : rh2;
  6206. u1 = dxH * dxH;
  6207. u2 = dyH * dyH;
  6208. u3 = rI * rI;
  6209. u4 = u1 - u3;
  6210. u5 = u2 - u3;
  6211. u6 = u4 * u5 / u1;
  6212. u7 = u6 / u2;
  6213. u8 = 1 - u7;
  6214. u9 = Math.sqrt(u8);
  6215. u10 = u4 / dxH;
  6216. u11 = u10 / dyH;
  6217. u12 = (1 + u9) / u11;
  6218. u13 = Math.atan2(u12, 1);
  6219. u14 = u13 + rdAngVal3;
  6220. u15 = (u13 > 0) ? u13 : u14;
  6221. u16 = u15 - enAng;
  6222. u17 = u16 + rdAngVal3;
  6223. u18 = (u16 > 0) ? u16 : u17;
  6224. u19 = u18 - cd2;
  6225. u20 = u18 - rdAngVal3;
  6226. u21 = (u19 > 0) ? u20 : u18;
  6227. u22 = Math.abs(u21);
  6228. minAng = u22 * -1;
  6229. u23 = Math.abs(adj2);
  6230. a2 = u23 * -1;
  6231. aAng = (a2 < minAng) ? minAng : (a2 > 0) ? 0 : a2;
  6232. ptAng = enAng + aAng;
  6233. wtA = rw3 * Math.sin(ptAng);
  6234. htA = rh3 * Math.cos(ptAng);
  6235. dxA = rw3 * Math.cos(Math.atan2(wtA, htA));
  6236. dyA = rh3 * Math.sin(Math.atan2(wtA, htA));
  6237. xA = hc + dxA;
  6238. yA = vc + dyA;
  6239. wtE = rw1 * Math.sin(stAng);
  6240. htE = rh1 * Math.cos(stAng);
  6241. dxE = rw1 * Math.cos(Math.atan2(wtE, htE));
  6242. dyE = rh1 * Math.sin(Math.atan2(wtE, htE));
  6243. xE = hc + dxE;
  6244. yE = vc + dyE;
  6245. wtD = rw2 * Math.sin(stAng);
  6246. htD = rh2 * Math.cos(stAng);
  6247. dxD = rw2 * Math.cos(Math.atan2(wtD, htD));
  6248. dyD = rh2 * Math.sin(Math.atan2(wtD, htD));
  6249. xD = hc + dxD;
  6250. yD = vc + dyD;
  6251. dxG = thh * Math.cos(ptAng);
  6252. dyG = thh * Math.sin(ptAng);
  6253. xG = xH + dxG;
  6254. yG = yH + dyG;
  6255. dxB = thh * Math.cos(ptAng);
  6256. dyB = thh * Math.sin(ptAng);
  6257. xB = xH - dxB;
  6258. yB = yH - dyB;
  6259. sx1 = xB - hc;
  6260. sy1 = yB - vc;
  6261. sx2 = xG - hc;
  6262. sy2 = yG - vc;
  6263. rO = (rw1 < rh1) ? rw1 : rh1;
  6264. x1O = sx1 * rO / rw1;
  6265. y1O = sy1 * rO / rh1;
  6266. x2O = sx2 * rO / rw1;
  6267. y2O = sy2 * rO / rh1;
  6268. dxO = x2O - x1O;
  6269. dyO = y2O - y1O;
  6270. dO = Math.sqrt(dxO * dxO + dyO * dyO);
  6271. q1 = x1O * y2O;
  6272. q2 = x2O * y1O;
  6273. DO = q1 - q2;
  6274. q3 = rO * rO;
  6275. q4 = dO * dO;
  6276. q5 = q3 * q4;
  6277. q6 = DO * DO;
  6278. q7 = q5 - q6;
  6279. q8 = (q7 > 0) ? q7 : 0;
  6280. sdelO = Math.sqrt(q8);
  6281. ndyO = dyO * -1;
  6282. sdyO = (ndyO > 0) ? -1 : 1;
  6283. q9 = sdyO * dxO;
  6284. q10 = q9 * sdelO;
  6285. q11 = DO * dyO;
  6286. dxF1 = (q11 + q10) / q4;
  6287. q12 = q11 - q10;
  6288. dxF2 = q12 / q4;
  6289. adyO = Math.abs(dyO);
  6290. q13 = adyO * sdelO;
  6291. q14 = DO * dxO / -1;
  6292. dyF1 = (q14 + q13) / q4;
  6293. q15 = q14 - q13;
  6294. dyF2 = q15 / q4;
  6295. q16 = x2O - dxF1;
  6296. q17 = x2O - dxF2;
  6297. q18 = y2O - dyF1;
  6298. q19 = y2O - dyF2;
  6299. q20 = Math.sqrt(q16 * q16 + q18 * q18);
  6300. q21 = Math.sqrt(q17 * q17 + q19 * q19);
  6301. q22 = q21 - q20;
  6302. dxF = (q22 > 0) ? dxF1 : dxF2;
  6303. dyF = (q22 > 0) ? dyF1 : dyF2;
  6304. sdxF = dxF * rw1 / rO;
  6305. sdyF = dyF * rh1 / rO;
  6306. xF = hc + sdxF;
  6307. yF = vc + sdyF;
  6308. x1I = sx1 * rI / rw2;
  6309. y1I = sy1 * rI / rh2;
  6310. x2I = sx2 * rI / rw2;
  6311. y2I = sy2 * rI / rh2;
  6312. dxI = x2I - x1I;
  6313. dyI = y2I - y1I;
  6314. dI = Math.sqrt(dxI * dxI + dyI * dyI);
  6315. v1 = x1I * y2I;
  6316. v2 = x2I * y1I;
  6317. DI = v1 - v2;
  6318. v3 = rI * rI;
  6319. v4 = dI * dI;
  6320. v5 = v3 * v4;
  6321. v6 = DI * DI;
  6322. v7 = v5 - v6;
  6323. v8 = (v7 > 0) ? v7 : 0;
  6324. sdelI = Math.sqrt(v8);
  6325. v9 = sdyO * dxI;
  6326. v10 = v9 * sdelI;
  6327. v11 = DI * dyI;
  6328. dxC1 = (v11 + v10) / v4;
  6329. v12 = v11 - v10;
  6330. dxC2 = v12 / v4;
  6331. adyI = Math.abs(dyI);
  6332. v13 = adyI * sdelI;
  6333. v14 = DI * dxI / -1;
  6334. dyC1 = (v14 + v13) / v4;
  6335. v15 = v14 - v13;
  6336. dyC2 = v15 / v4;
  6337. v16 = x1I - dxC1;
  6338. v17 = x1I - dxC2;
  6339. v18 = y1I - dyC1;
  6340. v19 = y1I - dyC2;
  6341. v20 = Math.sqrt(v16 * v16 + v18 * v18);
  6342. v21 = Math.sqrt(v17 * v17 + v19 * v19);
  6343. v22 = v21 - v20;
  6344. dxC = (v22 > 0) ? dxC1 : dxC2;
  6345. dyC = (v22 > 0) ? dyC1 : dyC2;
  6346. sdxC = dxC * rw2 / rI;
  6347. sdyC = dyC * rh2 / rI;
  6348. xC = hc + sdxC;
  6349. yC = vc + sdyC;
  6350. ist0 = Math.atan2(sdyC, sdxC);
  6351. ist1 = ist0 + rdAngVal3;
  6352. istAng0 = (ist0 > 0) ? ist0 : ist1;
  6353. isw1 = stAng - istAng0;
  6354. isw2 = isw1 + rdAngVal3;
  6355. iswAng0 = (isw1 > 0) ? isw1 : isw2;
  6356. istAng = istAng0 + iswAng0;
  6357. iswAng = -iswAng0;
  6358. p1 = xF - xC;
  6359. p2 = yF - yC;
  6360. p3 = Math.sqrt(p1 * p1 + p2 * p2);
  6361. p4 = p3 / 2;
  6362. p5 = p4 - thh;
  6363. xGp = (p5 > 0) ? xF : xG;
  6364. yGp = (p5 > 0) ? yF : yG;
  6365. xBp = (p5 > 0) ? xC : xB;
  6366. yBp = (p5 > 0) ? yC : yB;
  6367. en0 = Math.atan2(sdyF, sdxF);
  6368. en1 = en0 + rdAngVal3;
  6369. en2 = (en0 > 0) ? en0 : en1;
  6370. sw0 = en2 - stAng;
  6371. sw1 = sw0 - rdAngVal3;
  6372. swAng = (sw0 > 0) ? sw1 : sw0;
  6373. stAng0 = stAng + swAng;
  6374. var strtAng = stAng0 * 180 / Math.PI;
  6375. var endAng = stAng * 180 / Math.PI;
  6376. var stiAng = istAng * 180 / Math.PI;
  6377. var swiAng = iswAng * 180 / Math.PI;
  6378. var ediAng = stiAng + swiAng;
  6379. var d_val = "M" + xE + "," + yE +
  6380. " L" + xD + "," + yD +
  6381. shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") +
  6382. " L" + xBp + "," + yBp +
  6383. " L" + xA + "," + yA +
  6384. " L" + xGp + "," + yGp +
  6385. " L" + xF + "," + yF +
  6386. shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false).replace("M", "L") +
  6387. " z";
  6388. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6389. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6390. break;
  6391. case "leftRightCircularArrow":
  6392. case "chartPlus":
  6393. case "chartStar":
  6394. case "chartX":
  6395. case "cornerTabs":
  6396. case "flowChartOfflineStorage":
  6397. case "folderCorner":
  6398. case "funnel":
  6399. case "lineInv":
  6400. case "nonIsoscelesTrapezoid":
  6401. case "plaqueTabs":
  6402. case "squareTabs":
  6403. case "upDownArrowCallout":
  6404. console.log(shapType, " -unsupported shape type.");
  6405. break;
  6406. case undefined:
  6407. default:
  6408. console.warn("Undefine shape type.(" + shapType + ")");
  6409. }
  6410. result += "</svg>";
  6411. result += "<div class='block content " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) +
  6412. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  6413. "' style='" +
  6414. getPosition(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6415. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6416. " z-index: " + order + ";" +
  6417. "transform: rotate(" + txtRotate + "deg);" +
  6418. "'>";
  6419. // TextBody
  6420. if (node["p:txBody"] !== undefined) {
  6421. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6422. }
  6423. result += "</div>";
  6424. } else if (custShapType !== undefined) {
  6425. //custGeom here - Amir ///////////////////////////////////////////////////////
  6426. //http://officeopenxml.com/drwSp-custGeom.php
  6427. var pathLstNode = getTextByPathList(custShapType, ["a:pathLst"]);
  6428. var pathNode = getTextByPathList(pathLstNode, ["a:path", "attrs"]);
  6429. var maxX = parseInt(pathNode["w"]) * 96 / 914400;
  6430. var maxY = parseInt(pathNode["h"]) * 96 / 914400;
  6431. //console.log("w = "+w+"\nh = "+h+"\nmaxX = "+maxX +"\nmaxY = " + maxY);
  6432. //cheke if it is close shape
  6433. var closeNode = getTextByPathList(pathLstNode, ["a:path", "a:close"]);
  6434. var startPoint = getTextByPathList(pathLstNode, ["a:path", "a:moveTo", "a:pt", "attrs"]);
  6435. var spX = parseInt(startPoint["x"]) * 96 / 914400;
  6436. var spY = parseInt(startPoint["y"]) * 96 / 914400;
  6437. var d = "M" + spX + "," + spY;
  6438. var pathNodes = getTextByPathList(pathLstNode, ["a:path"]);
  6439. var lnToNodes = pathNodes["a:lnTo"];
  6440. var cubicBezToNodes = pathNodes["a:cubicBezTo"];
  6441. var arcToNodes = pathNodes["a:arcTo"];
  6442. var sortblAry = [];
  6443. if (lnToNodes !== undefined) {
  6444. Object.keys(lnToNodes).forEach(function (key) {
  6445. var lnToPtNode = lnToNodes[key]["a:pt"];
  6446. if (lnToPtNode !== undefined) {
  6447. Object.keys(lnToPtNode).forEach(function (key2) {
  6448. var ptObj = {};
  6449. var lnToNoPt = lnToPtNode[key2];
  6450. var ptX = lnToNoPt["attrs", "x"];
  6451. var ptY = lnToNoPt["attrs", "y"];
  6452. var ptOrdr = lnToNoPt["attrs", "order"];
  6453. ptObj.type = "lnto";
  6454. ptObj.order = ptOrdr;
  6455. ptObj.x = ptX;
  6456. ptObj.y = ptY;
  6457. sortblAry.push(ptObj);
  6458. //console.log(key2, lnToNoPt);
  6459. });
  6460. }
  6461. });
  6462. }
  6463. if (cubicBezToNodes !== undefined) {
  6464. Object.keys(cubicBezToNodes).forEach(function (key) {
  6465. //console.log("cubicBezTo["+key+"]:");
  6466. var cubicBezToPtNodes = cubicBezToNodes[key]["a:pt"];
  6467. if (cubicBezToPtNodes !== undefined) {
  6468. Object.keys(cubicBezToPtNodes).forEach(function (key2) {
  6469. //console.log("cubicBezTo["+key+"]pt["+key2+"]:");
  6470. var cubBzPts = cubicBezToPtNodes[key2];
  6471. Object.keys(cubBzPts).forEach(function (key3) {
  6472. //console.log(key3, cubBzPts[key3]);
  6473. var ptObj = {};
  6474. var cubBzPt = cubBzPts[key3];
  6475. var ptX = cubBzPt["attrs", "x"];
  6476. var ptY = cubBzPt["attrs", "y"];
  6477. var ptOrdr = cubBzPt["attrs", "order"];
  6478. ptObj.type = "cubicBezTo";
  6479. ptObj.order = ptOrdr;
  6480. ptObj.x = ptX;
  6481. ptObj.y = ptY;
  6482. sortblAry.push(ptObj);
  6483. });
  6484. });
  6485. }
  6486. });
  6487. }
  6488. if (arcToNodes !== undefined) {
  6489. var arcToNodesAttrs = arcToNodes["attrs"];
  6490. var arcOrder = arcToNodesAttrs["order"];
  6491. var hR = arcToNodesAttrs["hR"];
  6492. var wR = arcToNodesAttrs["wR"];
  6493. var stAng = arcToNodesAttrs["stAng"];
  6494. var swAng = arcToNodesAttrs["swAng"];
  6495. var shftX = 0;
  6496. var shftY = 0;
  6497. var arcToPtNode = getTextByPathList(arcToNodes, ["a:pt", "attrs"]);
  6498. if (arcToPtNode !== undefined) {
  6499. shftX = arcToPtNode["x"];
  6500. shftY = arcToPtNode["y"];
  6501. //console.log("shftX: ",shftX," shftY: ",shftY)
  6502. }
  6503. var ptObj = {};
  6504. ptObj.type = "arcTo";
  6505. ptObj.order = arcOrder;
  6506. ptObj.hR = hR;
  6507. ptObj.wR = wR;
  6508. ptObj.stAng = stAng;
  6509. ptObj.swAng = swAng;
  6510. ptObj.shftX = shftX;
  6511. ptObj.shftY = shftY;
  6512. sortblAry.push(ptObj);
  6513. }
  6514. var sortByOrder = sortblAry.slice(0);
  6515. sortByOrder.sort(function (a, b) {
  6516. return a.order - b.order;
  6517. });
  6518. //console.log(sortByOrder);
  6519. var k = 0;
  6520. while (k < sortByOrder.length) {
  6521. if (sortByOrder[k].type == "lnto") {
  6522. var Lx = parseInt(sortByOrder[k].x) * 96 / 914400;
  6523. var Ly = parseInt(sortByOrder[k].y) * 96 / 914400;
  6524. d += "L" + Lx + "," + Ly;
  6525. k++;
  6526. } else if (sortByOrder[k].type == "cubicBezTo") {
  6527. var Cx1 = parseInt(sortByOrder[k].x) * 96 / 914400;
  6528. var Cy1 = parseInt(sortByOrder[k].y) * 96 / 914400;
  6529. var Cx2 = parseInt(sortByOrder[k + 1].x) * 96 / 914400;
  6530. var Cy2 = parseInt(sortByOrder[k + 1].y) * 96 / 914400;
  6531. var Cx3 = parseInt(sortByOrder[k + 2].x) * 96 / 914400;
  6532. var Cy3 = parseInt(sortByOrder[k + 2].y) * 96 / 914400;
  6533. d += "C" + Cx1 + "," + Cy1 + " " + Cx2 + "," + Cy2 + " " + Cx3 + "," + Cy3;
  6534. k += 3;
  6535. } else if (sortByOrder[k].type == "arcTo") {
  6536. var hR = parseInt(sortByOrder[k].hR) * 96 / 914400;
  6537. var wR = parseInt(sortByOrder[k].wR) * 96 / 914400;
  6538. var stAng = parseInt(sortByOrder[k].stAng) / 60000;
  6539. var swAng = parseInt(sortByOrder[k].swAng) / 60000;
  6540. //var shftX = parseInt(sortByOrder[k].shftX) * 96 / 914400;
  6541. //var shftY = parseInt(sortByOrder[k].shftY) * 96 / 914400;
  6542. var endAng = stAng + swAng;
  6543. d += shapeArc(wR, hR, wR, hR, stAng, endAng, false);
  6544. k++;
  6545. }
  6546. }
  6547. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6548. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  6549. if (closeNode !== undefined) {
  6550. //console.log("Close shape");
  6551. result += "/>";
  6552. } else {
  6553. //console.log("Open shape");
  6554. //check and add "marker-start" and "marker-end"
  6555. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  6556. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  6557. }
  6558. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  6559. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  6560. }
  6561. result += "/>";
  6562. }
  6563. result += "</svg>";
  6564. result += "<div class='block content " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) +
  6565. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  6566. "' style='" +
  6567. getPosition(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6568. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6569. " z-index: " + order + ";" +
  6570. "transform: rotate(" + txtRotate + "deg);" +
  6571. "'>";
  6572. // TextBody
  6573. if (node["p:txBody"] !== undefined) {
  6574. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6575. }
  6576. result += "</div>";
  6577. // result = "";
  6578. } else {
  6579. result += "<div class='block content " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) +
  6580. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  6581. "' style='" +
  6582. getPosition(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6583. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  6584. getBorder(node, false, "shape") +
  6585. getShapeFill(node, false, warpObj) +
  6586. " z-index: " + order + ";" +
  6587. "transform: rotate(" + txtRotate + "deg);" +
  6588. "'>";
  6589. // TextBody
  6590. if (node["p:txBody"] !== undefined) {
  6591. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6592. }
  6593. result += "</div>";
  6594. }
  6595. return result;
  6596. }
  6597. function shapeStar(adj, starNum) {
  6598. var innerRadius = adj; /*1-100*/
  6599. var outerRadius = 100;//star.outerRadius;
  6600. var numPoints = starNum;/*1-100*/
  6601. var center = Math.max(innerRadius, outerRadius);
  6602. var angle = Math.PI / numPoints;
  6603. var points = [];
  6604. for (var i = 0; i < numPoints * 2; i++) {
  6605. var radius = i & 1 ? innerRadius : outerRadius;
  6606. points.push(center + radius * Math.sin(i * angle));
  6607. points.push(center - radius * Math.cos(i * angle));
  6608. }
  6609. return points;
  6610. }
  6611. function shapePie(H, w, adj1, adj2, isClose) {
  6612. var pieVal = parseInt(adj2);
  6613. var piAngle = parseInt(adj1);
  6614. var size = parseInt(H),
  6615. radius = (size / 2),
  6616. value = pieVal - piAngle;
  6617. if (value < 0) {
  6618. value = 360 + value;
  6619. }
  6620. //console.log("value: ",value)
  6621. value = Math.min(Math.max(value, 0), 360);
  6622. //calculate x,y coordinates of the point on the circle to draw the arc to.
  6623. var x = Math.cos((2 * Math.PI) / (360 / value));
  6624. var y = Math.sin((2 * Math.PI) / (360 / value));
  6625. //d is a string that describes the path of the slice.
  6626. var longArc, d, rot;
  6627. if (isClose) {
  6628. longArc = (value <= 180) ? 0 : 1;
  6629. d = "M" + radius + "," + radius + " L" + radius + "," + 0 + " A" + radius + "," + radius + " 0 " + longArc + ",1 " + (radius + y * radius) + "," + (radius - x * radius) + " z";
  6630. rot = "rotate(" + (piAngle - 270) + ", " + radius + ", " + radius + ")";
  6631. } else {
  6632. longArc = (value <= 180) ? 0 : 1;
  6633. var radius1 = radius;
  6634. var radius2 = w / 2;
  6635. d = "M" + radius1 + "," + 0 + " A" + radius2 + "," + radius1 + " 0 " + longArc + ",1 " + (radius2 + y * radius2) + "," + (radius1 - x * radius1);
  6636. rot = "rotate(" + (piAngle + 90) + ", " + radius + ", " + radius + ")";
  6637. }
  6638. return [d, rot];
  6639. }
  6640. function shapeGear(w, h, points) {
  6641. var innerRadius = h;//gear.innerRadius;
  6642. var outerRadius = 1.5 * innerRadius;
  6643. var cx = outerRadius;//Math.max(innerRadius, outerRadius), // center x
  6644. cy = outerRadius;//Math.max(innerRadius, outerRadius), // center y
  6645. notches = points,//gear.points, // num. of notches
  6646. radiusO = outerRadius, // outer radius
  6647. radiusI = innerRadius, // inner radius
  6648. taperO = 50, // outer taper %
  6649. taperI = 35, // inner taper %
  6650. // pre-calculate values for loop
  6651. pi2 = 2 * Math.PI, // cache 2xPI (360deg)
  6652. angle = pi2 / (notches * 2), // angle between notches
  6653. taperAI = angle * taperI * 0.005, // inner taper offset (100% = half notch)
  6654. taperAO = angle * taperO * 0.005, // outer taper offset
  6655. a = angle, // iterator (angle)
  6656. toggle = false;
  6657. // move to starting point
  6658. var d = " M" + (cx + radiusO * Math.cos(taperAO)) + " " + (cy + radiusO * Math.sin(taperAO));
  6659. // loop
  6660. for (; a <= pi2 + angle; a += angle) {
  6661. // draw inner to outer line
  6662. if (toggle) {
  6663. d += " L" + (cx + radiusI * Math.cos(a - taperAI)) + "," + (cy + radiusI * Math.sin(a - taperAI));
  6664. d += " L" + (cx + radiusO * Math.cos(a + taperAO)) + "," + (cy + radiusO * Math.sin(a + taperAO));
  6665. } else { // draw outer to inner line
  6666. d += " L" + (cx + radiusO * Math.cos(a - taperAO)) + "," + (cy + radiusO * Math.sin(a - taperAO)); // outer line
  6667. d += " L" + (cx + radiusI * Math.cos(a + taperAI)) + "," + (cy + radiusI * Math.sin(a + taperAI));// inner line
  6668. }
  6669. // switch level
  6670. toggle = !toggle;
  6671. }
  6672. // close the final line
  6673. d += " ";
  6674. return d;
  6675. }
  6676. function shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {
  6677. var dData;
  6678. var angle = stAng;
  6679. if (endAng >= stAng) {
  6680. while (angle <= endAng) {
  6681. var radians = angle * (Math.PI / 180); // convert degree to radians
  6682. var x = cX + Math.cos(radians) * rX;
  6683. var y = cY + Math.sin(radians) * rY;
  6684. if (angle == stAng) {
  6685. dData = " M" + x + " " + y;
  6686. }
  6687. dData += " L" + x + " " + y;
  6688. angle++;
  6689. }
  6690. } else {
  6691. while (angle > endAng) {
  6692. var radians = angle * (Math.PI / 180); // convert degree to radians
  6693. var x = cX + Math.cos(radians) * rX;
  6694. var y = cY + Math.sin(radians) * rY;
  6695. if (angle == stAng) {
  6696. dData = " M " + x + " " + y;
  6697. }
  6698. dData += " L " + x + " " + y;
  6699. angle--;
  6700. }
  6701. }
  6702. dData += (isClose ? " z" : "");
  6703. return dData;
  6704. }
  6705. function shapeSnipRoundRect(w, h, adj1, adj2, shapeType, adjType) {
  6706. /*
  6707. shapeType: snip,round
  6708. adjType: cornr1,cornr2,cornrAll,diag
  6709. */
  6710. var adjA, adjB, adjC, adjD;
  6711. if (adjType == "cornr1") {
  6712. adjA = 0;
  6713. adjB = 0;
  6714. adjC = 0;
  6715. adjD = adj1;
  6716. } else if (adjType == "cornr2") {
  6717. adjA = adj1;
  6718. adjB = adj2;
  6719. adjC = adj2;
  6720. adjD = adj1;
  6721. } else if (adjType == "cornrAll") {
  6722. adjA = adj1;
  6723. adjB = adj1;
  6724. adjC = adj1;
  6725. adjD = adj1;
  6726. } else if (adjType == "diag") {
  6727. adjA = adj1;
  6728. adjB = adj2;
  6729. adjC = adj1;
  6730. adjD = adj2;
  6731. }
  6732. //d is a string that describes the path of the slice.
  6733. var d;
  6734. if (shapeType == "round") {
  6735. d = "M0" + "," + (h / 2 + (1 - adjB) * (h / 2)) + " Q" + 0 + "," + h + " " + adjB * (w / 2) + "," + h + " L" + (w / 2 + (1 - adjC) * (w / 2)) + "," + h +
  6736. " Q" + w + "," + h + " " + w + "," + (h / 2 + (h / 2) * (1 - adjC)) + "L" + w + "," + (h / 2) * adjD +
  6737. " Q" + w + "," + 0 + " " + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + (w / 2) * adjA + ",0" +
  6738. " Q" + 0 + "," + 0 + " 0," + (h / 2) * (adjA) + " z";
  6739. } else if (shapeType == "snip") {
  6740. d = "M0" + "," + adjA * (h / 2) + " L0" + "," + (h / 2 + (h / 2) * (1 - adjB)) + "L" + adjB * (w / 2) + "," + h +
  6741. " L" + (w / 2 + (w / 2) * (1 - adjC)) + "," + h + "L" + w + "," + (h / 2 + (h / 2) * (1 - adjC)) +
  6742. " L" + w + "," + adjD * (h / 2) + "L" + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + ((w / 2) * adjA) + ",0 z";
  6743. }
  6744. return d;
  6745. }
  6746. /*
  6747. function shapePolygon(sidesNum) {
  6748. var sides = sidesNum;
  6749. var radius = 100;
  6750. var angle = 2 * Math.PI / sides;
  6751. var points = [];
  6752. for (var i = 0; i < sides; i++) {
  6753. points.push(radius + radius * Math.sin(i * angle));
  6754. points.push(radius - radius * Math.cos(i * angle));
  6755. }
  6756. return points;
  6757. }
  6758. */
  6759. function processPicNode(node, warpObj) {
  6760. var rtrnData = "";
  6761. var mediaPicFlag = false;
  6762. var order = node["attrs"]["order"];
  6763. var rid = node["p:blipFill"]["a:blip"]["attrs"]["r:embed"];
  6764. var imgName = warpObj["slideResObj"][rid]["target"];
  6765. var imgFileExt = extractFileExtension(imgName).toLowerCase();
  6766. var zip = warpObj["zip"];
  6767. var imgArrayBuffer = zip.file(imgName).asArrayBuffer();
  6768. var mimeType = "";
  6769. var xfrmNode = node["p:spPr"]["a:xfrm"];
  6770. ///////////////////////////////////////Amir//////////////////////////////
  6771. var rotate = 0;
  6772. var rotateNode = getTextByPathList(node, ["p:spPr", "a:xfrm", "attrs", "rot"]);
  6773. if (rotateNode !== undefined) {
  6774. rotate = angleToDegrees(rotateNode);
  6775. }
  6776. //video
  6777. var vdoNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:videoFile"]);
  6778. var vdoRid, vdoFile, vdoFileExt, vdoMimeType, uInt8Array, blob, vdoBlob, mediaSupportFlag = false;
  6779. var mediaProcess = settings.mediaProcess;
  6780. if (vdoNode !== undefined & mediaProcess) {
  6781. vdoRid = vdoNode["attrs"]["r:link"];
  6782. vdoFile = warpObj["slideResObj"][vdoRid]["target"];
  6783. uInt8Array = zip.file(vdoFile).asArrayBuffer();
  6784. vdoFileExt = extractFileExtension(vdoFile).toLowerCase();
  6785. if (vdoFileExt == "mp4" || vdoFileExt == "webm" || vdoFileExt == "ogg") {
  6786. vdoMimeType = getMimeType(vdoFileExt);
  6787. blob = new Blob([uInt8Array], {
  6788. type: vdoMimeType
  6789. });
  6790. vdoBlob = URL.createObjectURL(blob);
  6791. mediaSupportFlag = true;
  6792. mediaPicFlag = true;
  6793. }
  6794. }
  6795. //Audio
  6796. var audioNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:audioFile"]);
  6797. var audioRid, audioFile, audioFileExt, audioMimeType, uInt8ArrayAudio, blobAudio, audioBlob;
  6798. var audioPlayerFlag = false;
  6799. var audioObjc;
  6800. if (audioNode !== undefined & mediaProcess) {
  6801. audioRid = audioNode["attrs"]["r:link"];
  6802. audioFile = warpObj["slideResObj"][audioRid]["target"];
  6803. audioFileExt = extractFileExtension(audioFile).toLowerCase();
  6804. if (audioFileExt == "mp3" || audioFileExt == "wav" || audioFileExt == "ogg") {
  6805. uInt8ArrayAudio = zip.file(audioFile).asArrayBuffer();
  6806. blobAudio = new Blob([uInt8ArrayAudio]);
  6807. audioBlob = URL.createObjectURL(blobAudio);
  6808. var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * 20;
  6809. var cy = xfrmNode["a:ext"]["attrs"]["cy"];
  6810. var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) / 2.5;
  6811. var y = xfrmNode["a:off"]["attrs"]["y"];
  6812. audioObjc = {
  6813. "a:ext": {
  6814. "attrs": {
  6815. "cx": cx,
  6816. "cy": cy
  6817. }
  6818. },
  6819. "a:off": {
  6820. "attrs": {
  6821. "x": x,
  6822. "y": y
  6823. }
  6824. }
  6825. }
  6826. audioPlayerFlag = true;
  6827. mediaSupportFlag = true;
  6828. mediaPicFlag = true;
  6829. }
  6830. }
  6831. //console.log(node)
  6832. //////////////////////////////////////////////////////////////////////////
  6833. mimeType = getMimeType(imgFileExt);
  6834. rtrnData = "<div class='block content' style='" +
  6835. ((mediaProcess && audioPlayerFlag) ? getPosition(audioObjc, undefined, undefined) : getPosition(xfrmNode, undefined, undefined)) +
  6836. ((mediaProcess && audioPlayerFlag) ? getSize(audioObjc, undefined, undefined) : getSize(xfrmNode, undefined, undefined)) +
  6837. " z-index: " + order + ";" +
  6838. "transform: rotate(" + rotate + "deg);'>";
  6839. if ((vdoNode === undefined && audioNode === undefined) || !mediaProcess || !mediaSupportFlag) {
  6840. rtrnData += "<img src='data:" + mimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer) + "' style='width: 100%; height: 100%'/>";
  6841. } else if ((vdoNode !== undefined || audioNode !== undefined) && mediaProcess && mediaSupportFlag) {
  6842. if (vdoNode !== undefined) {
  6843. rtrnData += "<video src='" + vdoBlob + "' controls style='width: 100%; height: 100%'>Your browser does not support the video tag.</video>";
  6844. }
  6845. if (audioNode !== undefined) {
  6846. rtrnData += '<audio id="audio_player" controls ><source src="' + audioBlob + '"></audio>';
  6847. //'<button onclick="audio_player.play()">Play</button>'+
  6848. //'<button onclick="audio_player.pause()">Pause</button>';
  6849. }
  6850. }
  6851. if (!mediaSupportFlag && mediaPicFlag) {
  6852. rtrnData += "<span style='color:red;font-size:40px;position: absolute;'>This media file Not supported by HTML5</span>";
  6853. }
  6854. if ((vdoNode !== undefined || audioNode !== undefined) && !mediaProcess && mediaSupportFlag) {
  6855. console.log("Founded supported media file but media process disabled (mediaProcess=false)");
  6856. }
  6857. rtrnData += "</div>";
  6858. //console.log(rtrnData)
  6859. return rtrnData;
  6860. }
  6861. function processGraphicFrameNode(node, warpObj) {
  6862. var result = "";
  6863. var graphicTypeUri = getTextByPathList(node, ["a:graphic", "a:graphicData", "attrs", "uri"]);
  6864. switch (graphicTypeUri) {
  6865. case "http://schemas.openxmlformats.org/drawingml/2006/table":
  6866. result = genTable(node, warpObj);
  6867. break;
  6868. case "http://schemas.openxmlformats.org/drawingml/2006/chart":
  6869. result = genChart(node, warpObj);
  6870. break;
  6871. case "http://schemas.openxmlformats.org/drawingml/2006/diagram":
  6872. result = genDiagram(node, warpObj);
  6873. break;
  6874. default:
  6875. }
  6876. return result;
  6877. }
  6878. function processSpPrNode(node, warpObj) {
  6879. /*
  6880. * 2241 <xsd:complexType name="CT_ShapeProperties">
  6881. * 2242 <xsd:sequence>
  6882. * 2243 <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="0" maxOccurs="1"/>
  6883. * 2244 <xsd:group ref="EG_Geometry" minOccurs="0" maxOccurs="1"/>
  6884. * 2245 <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
  6885. * 2246 <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
  6886. * 2247 <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
  6887. * 2248 <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
  6888. * 2249 <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/>
  6889. * 2250 <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
  6890. * 2251 </xsd:sequence>
  6891. * 2252 <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/>
  6892. * 2253 </xsd:complexType>
  6893. */
  6894. // TODO:
  6895. }
  6896. function genTextBody(textBodyNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj) {
  6897. var text = "";
  6898. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  6899. if (textBodyNode === undefined) {
  6900. return text;
  6901. }
  6902. //rtl : <p:txBody>
  6903. // <a:bodyPr wrap="square" rtlCol="1">
  6904. //var rtlStr = "";
  6905. if (textBodyNode["a:p"].constructor === Array) {
  6906. // multi p
  6907. for (var i = 0; i < textBodyNode["a:p"].length; i++) {
  6908. var pNode = textBodyNode["a:p"][i];
  6909. var rNode = pNode["a:r"];
  6910. //var isRTL = getTextDirection(pNode, type, slideMasterTextStyles);
  6911. //rtlStr = "";//"dir='"+isRTL+"'";
  6912. text += "<div class='" + getHorizontalAlign(pNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) + "'>";
  6913. text += genBuChar(pNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6914. if (rNode === undefined) {
  6915. // without r
  6916. text += genSpanElement(pNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6917. } else if (rNode.constructor === Array) {
  6918. // with multi r
  6919. for (var j = 0; j < rNode.length; j++) {
  6920. text += genSpanElement(rNode[j], spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6921. //////////////////Amir////////////
  6922. if (pNode["a:br"] !== undefined) {
  6923. text += "<br>";
  6924. }
  6925. //////////////////////////////////
  6926. }
  6927. } else {
  6928. // with one r
  6929. text += genSpanElement(rNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6930. }
  6931. text += "</div>";
  6932. }
  6933. } else {
  6934. // one p
  6935. var pNode = textBodyNode["a:p"];
  6936. var rNode = pNode["a:r"];
  6937. //var isRTL = getTextDirection(pNode, type, slideMasterTextStyles);
  6938. //rtlStr = "";//"dir='"+isRTL+"'";
  6939. text += "<div class='slide-prgrph " + getHorizontalAlign(pNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) + "'>";
  6940. text += genBuChar(pNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6941. if (rNode === undefined) {
  6942. // without r
  6943. text += genSpanElement(pNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6944. } else if (rNode.constructor === Array) {
  6945. // with multi r
  6946. for (var j = 0; j < rNode.length; j++) {
  6947. text += genSpanElement(rNode[j], spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6948. //////////////////Amir////////////
  6949. if (pNode["a:br"] !== undefined) {
  6950. text += "<br>";
  6951. }
  6952. //////////////////////////////////
  6953. }
  6954. } else {
  6955. // with one r
  6956. text += genSpanElement(rNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
  6957. }
  6958. text += "</div>";
  6959. }
  6960. return text;
  6961. }
  6962. function genBuChar(node, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj) {
  6963. ///////////////////////////////////////Amir///////////////////////////////
  6964. var sldMstrTxtStyles = warpObj["slideMasterTextStyles"];
  6965. var rNode = getTextByPathList(node, ["a:r"]);
  6966. if (rNode !== undefined && rNode.constructor === Array) {
  6967. rNode = rNode[0];
  6968. }
  6969. var dfltBultColor, dfltBultSize, bultColor, bultSize;
  6970. if (rNode !== undefined) {
  6971. dfltBultColor = getFontColorPr(rNode, spNode, type, sldMstrTxtStyles)[0];
  6972. dfltBultSize = getFontSize(rNode, slideLayoutSpNode, slideMasterSpNode, type, sldMstrTxtStyles);
  6973. } else {
  6974. dfltBultColor = getFontColorPr(node, spNode, type, sldMstrTxtStyles)[0];
  6975. dfltBultSize = getFontSize(node, slideLayoutSpNode, slideMasterSpNode, type, sldMstrTxtStyles);
  6976. }
  6977. //console.log("Bullet Size: " + bultSize);
  6978. var bullet = "";
  6979. /////////////////////////////////////////////////////////////////
  6980. var pPrNode = node["a:pPr"];
  6981. //////////////////cheke if is rtl ///Amir ////////////////////////////////////
  6982. var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"])
  6983. var isRTL = false;
  6984. if (getRtlVal !== undefined && getRtlVal == "1") {
  6985. isRTL = true;
  6986. }
  6987. ////////////////////////////////////////////////////////////
  6988. var lvl = parseInt(getTextByPathList(pPrNode, ["attrs", "lvl"]));
  6989. if (isNaN(lvl)) {
  6990. lvl = 0;
  6991. }
  6992. var buChar = getTextByPathList(pPrNode, ["a:buChar", "attrs", "char"]);
  6993. /////////////////////////////////Amir///////////////////////////////////
  6994. var buType = "TYPE_NONE";
  6995. var buNum = getTextByPathList(pPrNode, ["a:buAutoNum", "attrs", "type"]);
  6996. var buPic = getTextByPathList(pPrNode, ["a:buBlip"]);
  6997. if (buChar !== undefined) {
  6998. buType = "TYPE_BULLET";
  6999. // console.log("Bullet Chr to code: " + buChar.charCodeAt(0));
  7000. }
  7001. if (buNum !== undefined) {
  7002. buType = "TYPE_NUMERIC";
  7003. }
  7004. if (buPic !== undefined) {
  7005. buType = "TYPE_BULPIC";
  7006. }
  7007. if (buType != "TYPE_NONE") {
  7008. var buFontAttrs = getTextByPathList(pPrNode, ["a:buFont", "attrs"]);
  7009. }
  7010. //console.log("Bullet Type: " + buType);
  7011. //console.log("NumericTypr: " + buNum);
  7012. //console.log("buChar: " + (buChar === undefined?'':buChar.charCodeAt(0)));
  7013. //get definde bullet COLOR
  7014. var buClrNode = getTextByPathList(pPrNode, ["a:buClr"]);
  7015. var defBultColor = "NoNe";
  7016. if (buClrNode !== undefined) {
  7017. defBultColor = getSolidFill(buClrNode);
  7018. } else {
  7019. // console.log("buClrNode: " + buClrNode);
  7020. }
  7021. if (defBultColor == "NoNe") {
  7022. bultColor = dfltBultColor;
  7023. } else {
  7024. bultColor = "#" + defBultColor;
  7025. }
  7026. //get definde bullet SIZE
  7027. var buFontSize;
  7028. buFontSize = getTextByPathList(pPrNode, ["a:buSzPts", "attrs", "val"]); //pt
  7029. if (buFontSize !== undefined) {
  7030. bultSize = parseInt(buFontSize) / 100 + "pt";
  7031. } else {
  7032. buFontSize = getTextByPathList(pPrNode, ["a:buSzPct", "attrs", "val"]);
  7033. if (buFontSize !== undefined) {
  7034. var prcnt = parseInt(buFontSize) / 100000;
  7035. //dfltBultSize = XXpt
  7036. var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2);
  7037. bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "pt";
  7038. } else {
  7039. bultSize = dfltBultSize;
  7040. }
  7041. }
  7042. ////////////////////////////////////////////////////////////////////////
  7043. if (buType == "TYPE_BULLET") {
  7044. //var buFontAttrs = getTextByPathList(pPrNode, ["a:buFont", "attrs"]);
  7045. if (buFontAttrs !== undefined) {
  7046. var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * 96 / 914400;
  7047. var marginRight = parseInt(buFontAttrs["pitchFamily"]);
  7048. if (isNaN(marginLeft)) {
  7049. marginLeft = 328600 * 96 / 914400;
  7050. }
  7051. if (isNaN(marginRight)) {
  7052. marginRight = 0;
  7053. }
  7054. var typeface = buFontAttrs["typeface"];
  7055. bullet = "<span style='font-family: " + typeface +
  7056. "; margin-left: " + marginLeft * lvl + "px" +
  7057. "; margin-right: " + marginRight + "px" +
  7058. ";color:" + bultColor +
  7059. ";font-size:" + bultSize + ";";
  7060. if (isRTL) {
  7061. bullet += " float: right; direction:rtl";
  7062. }
  7063. bullet += "'>" + buChar + "</span>";
  7064. } else {
  7065. marginLeft = 328600 * 96 / 914400 * lvl;
  7066. bullet = "<span style='margin-left: " + marginLeft + "px;'>" + buChar + "</span>";
  7067. }
  7068. } else if (buType == "TYPE_NUMERIC") { ///////////Amir///////////////////////////////
  7069. if (buFontAttrs !== undefined) {
  7070. var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * 96 / 914400;
  7071. var marginRight = parseInt(buFontAttrs["pitchFamily"]);
  7072. if (isNaN(marginLeft)) {
  7073. marginLeft = 328600 * 96 / 914400;
  7074. }
  7075. if (isNaN(marginRight)) {
  7076. marginRight = 0;
  7077. }
  7078. //var typeface = buFontAttrs["typeface"];
  7079. bullet = "<span style='margin-left: " + marginLeft * lvl + "px" +
  7080. "; margin-right: " + marginRight + "px" +
  7081. ";color:" + bultColor +
  7082. ";font-size:" + bultSize + ";";
  7083. if (isRTL) {
  7084. bullet += " float: right; direction:rtl;";
  7085. } else {
  7086. bullet += " float: left; direction:ltr;";
  7087. }
  7088. bullet += "' data-bulltname = '" + buNum + "' data-bulltlvl = '" + lvl + "' class='numeric-bullet-style'></span>";
  7089. } else {
  7090. marginLeft = 328600 * 96 / 914400 * lvl;
  7091. bullet = "<span style='margin-left: " + marginLeft + "px;";
  7092. if (isRTL) {
  7093. bullet += " float: right; direction:rtl;";
  7094. } else {
  7095. bullet += " float: left; direction:ltr;";
  7096. }
  7097. bullet += "' data-bulltname = '" + buNum + "' data-bulltlvl = '" + lvl + "' class='numeric-bullet-style'></span>";
  7098. }
  7099. } else if (buType == "TYPE_BULPIC") { //PIC BULLET
  7100. var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * 96 / 914400;
  7101. var marginRight = parseInt(getTextByPathList(pPrNode, ["attrs", "marR"])) * 96 / 914400;
  7102. if (isNaN(marginRight)) {
  7103. marginRight = 0;
  7104. }
  7105. //console.log("marginRight: "+marginRight)
  7106. //buPic
  7107. if (isNaN(marginLeft)) {
  7108. marginLeft = 328600 * 96 / 914400;
  7109. } else {
  7110. marginLeft = 0;
  7111. }
  7112. //var buPicId = getTextByPathList(buPic, ["a:blip","a:extLst","a:ext","asvg:svgBlip" , "attrs", "r:embed"]);
  7113. var buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]);
  7114. var svgPicPath = "";
  7115. var buImg;
  7116. if (buPicId !== undefined) {
  7117. //svgPicPath = warpObj["slideResObj"][buPicId]["target"];
  7118. //buImg = warpObj["zip"].file(svgPicPath).asText();
  7119. //}else{
  7120. //buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]);
  7121. var imgPath = warpObj["slideResObj"][buPicId]["target"];
  7122. //console.log("imgPath: ", imgPath);
  7123. var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer();
  7124. var imgExt = imgPath.split(".").pop();
  7125. var imgMimeType = getMimeType(imgExt);
  7126. buImg = "<img src='data:" + imgMimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer) + "' style='width: 100%; height: 100%'/>"
  7127. //console.log("imgPath: "+imgPath+"\nimgMimeType: "+imgMimeType)
  7128. }
  7129. if (buPicId === undefined) {
  7130. buImg = "&#8227;";
  7131. }
  7132. bullet = "<span style='margin-left: " + marginLeft * lvl + "px" +
  7133. "; margin-right: " + marginRight + "px" +
  7134. ";width:" + bultSize + ";display: inline-block; ";
  7135. if (isRTL) {
  7136. bullet += " float: right;direction:rtl";
  7137. }
  7138. bullet += "'>" + buImg + " </span>";
  7139. //////////////////////////////////////////////////////////////////////////////////////
  7140. } else {
  7141. bullet = "<span style='margin-left: " + 328600 * 96 / 914400 * lvl + "px" +
  7142. "; margin-right: " + 0 + "px;'></span>";
  7143. }
  7144. return bullet;
  7145. }
  7146. function genSpanElement(node, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj) {
  7147. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  7148. var text = node["a:t"];
  7149. if (typeof text !== 'string') {
  7150. text = getTextByPathList(node, ["a:fld", "a:t"]);
  7151. if (typeof text !== 'string') {
  7152. text = "&nbsp;";
  7153. }
  7154. }
  7155. //console.log("genSpanElement: ",node)
  7156. //getFontColor
  7157. var fontClrPr = getFontColorPr(node, spNode, type, slideMasterTextStyles);
  7158. var styleText =
  7159. "color:" + fontClrPr[0] + ";" +
  7160. "text-shadow:" + fontClrPr[1] + ";" +
  7161. "font-size:" + getFontSize(node, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) + ";" +
  7162. "font-family:" + getFontType(node, type, slideMasterTextStyles) + ";" +
  7163. "font-weight:" + getFontBold(node, type, slideMasterTextStyles) + ";" +
  7164. "font-style:" + getFontItalic(node, type, slideMasterTextStyles) + ";" +
  7165. "text-decoration:" + getFontDecoration(node, type, slideMasterTextStyles) + ";" +
  7166. "text-align:" + getTextHorizontalAlign(node, type, slideMasterTextStyles) + ";" +
  7167. "vertical-align:" + getTextVerticalAlign(node, type, slideMasterTextStyles) + ";";
  7168. //////////////////Amir///////////////
  7169. var highlight = getTextByPathList(node, ["a:rPr", "a:highlight"]);
  7170. if (highlight !== undefined) {
  7171. styleText += "background-color:#" + getSolidFill(highlight) + ";";
  7172. styleText += "Opacity:" + getColorOpacity(highlight) + ";";
  7173. }
  7174. ///////////////////////////////////////////
  7175. var cssName = "";
  7176. if (styleText in styleTable) {
  7177. cssName = styleTable[styleText]["name"];
  7178. } else {
  7179. cssName = "_css_" + (Object.keys(styleTable).length + 1);
  7180. styleTable[styleText] = {
  7181. "name": cssName,
  7182. "text": styleText
  7183. };
  7184. }
  7185. var linkID = getTextByPathList(node, ["a:rPr", "a:hlinkClick", "attrs", "r:id"]);
  7186. //get link colors : TODO
  7187. if (linkID !== undefined) {
  7188. var linkURL = warpObj["slideResObj"][linkID]["target"];
  7189. linkURL = escapeHtml(linkURL);
  7190. return "<span class='text-block " + cssName + "'><a href='" + linkURL + "' target='_blank'>" + text.replace(/\s/i, "&nbsp;") + "</a></span>";
  7191. } else {
  7192. return "<span class='text-block " + cssName + "'>" + text.replace(/\s/i, "&nbsp;") + "</span>";
  7193. }
  7194. }
  7195. function genGlobalCSS() {
  7196. var cssText = "";
  7197. for (var key in styleTable) {
  7198. cssText += "div ." + styleTable[key]["name"] + "{" + styleTable[key]["text"] + "}\n"; //section > div
  7199. }
  7200. return cssText;
  7201. }
  7202. function genTable(node, warpObj) {
  7203. var order = node["attrs"]["order"];
  7204. var tableNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl"]);
  7205. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  7206. /////////////////////////////////////////Amir////////////////////////////////////////////////
  7207. var getTblPr = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblPr"]);
  7208. var getColsGrid = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblGrid", "a:gridCol"]);
  7209. var tblDir = "";
  7210. if (getTblPr !== undefined) {
  7211. var isRTL = getTblPr["attrs"]["rtl"];
  7212. tblDir = (isRTL == 1 ? "dir=rtl" : "dir=ltr");
  7213. }
  7214. var firstRowAttr = getTblPr["attrs"]["firstRow"]; //associated element <a:firstRow> in the table styles
  7215. var firstColAttr = getTblPr["attrs"]["firstCol"]; //associated element <a:firstCol> in the table styles
  7216. var lastRowAttr = getTblPr["attrs"]["lastRow"]; //associated element <a:lastRow> in the table styles
  7217. var lastColAttr = getTblPr["attrs"]["lastCol"]; //associated element <a:lastCol> in the table styles
  7218. var bandRowAttr = getTblPr["attrs"]["bandRow"]; //associated element <a:band1H>, <a:band2H> in the table styles
  7219. var bandColAttr = getTblPr["attrs"]["bandCol"]; //associated element <a:band1V>, <a:band2V> in the table styles
  7220. //console.log(firstColAttr);
  7221. ////////////////////////////////////////////////////////////////////////////////////////////
  7222. var tableHtml = "<table " + tblDir + " style='border-collapse: collapse;" + getPosition(xfrmNode, undefined, undefined) + getSize(xfrmNode, undefined, undefined) + " z-index: " + order + ";'>";
  7223. var trNodes = tableNode["a:tr"];
  7224. if (trNodes.constructor === Array) {
  7225. for (var i = 0; i < trNodes.length; i++) {
  7226. //////////////rows Style ////////////Amir
  7227. var rowHeightParam = trNodes[i]["attrs"]["h"];
  7228. var rowHeight = 0;
  7229. var rowsStyl = "";
  7230. if (rowHeightParam !== undefined) {
  7231. rowHeight = parseInt(rowHeightParam) * 96 / 914400;
  7232. rowsStyl += "height:" + rowHeight + "px;";
  7233. //tableHtml += "<tr style='height:"+rowHeight+"px;'>";
  7234. }
  7235. //get from Theme (tableStyles.xml) TODO
  7236. //get tableStyleId = a:tbl => a:tblPr => a:tableStyleId
  7237. var thisTblStyle;
  7238. var tbleStyleId = getTblPr["a:tableStyleId"];
  7239. if (tbleStyleId !== undefined) {
  7240. //get Style from tableStyles.xml by {var tbleStyleId}
  7241. //table style object : tableStyles
  7242. var tbleStylList = tableStyles["a:tblStyleLst"]["a:tblStyle"];
  7243. if (tbleStylList.constructor === Array) {
  7244. for (var k = 0; k < tbleStylList.length; k++) {
  7245. if (tbleStylList[k]["attrs"]["styleId"] == tbleStyleId) {
  7246. thisTblStyle = tbleStylList[k];
  7247. }
  7248. }
  7249. } else {
  7250. if (tbleStylList["attrs"]["styleId"] == tbleStyleId) {
  7251. thisTblStyle = tbleStylList;
  7252. }
  7253. }
  7254. }
  7255. //console.log(thisTblStyle);
  7256. if (i == 0 && firstRowAttr !== undefined) {
  7257. var fillColor = "fff";
  7258. var colorOpacity = 1;
  7259. if (thisTblStyle["a:firstRow"] !== undefined) {
  7260. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:fill", "a:solidFill"]);
  7261. if (bgFillschemeClr !== undefined) {
  7262. fillColor = getSolidFill(bgFillschemeClr);
  7263. colorOpacity = getColorOpacity(bgFillschemeClr);
  7264. }
  7265. //console.log(thisTblStyle["a:firstRow"])
  7266. //borders color
  7267. //borders Width
  7268. var borderStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:tcBdr"]);
  7269. if (borderStyl !== undefined) {
  7270. var row_borders = getTableBorders(borderStyl);
  7271. rowsStyl += row_borders;
  7272. }
  7273. //console.log(thisTblStyle["a:firstRow"])
  7274. //Text Style - TODO
  7275. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcTxStyle"]);
  7276. if (rowTxtStyl !== undefined) {
  7277. /*
  7278. var fontClrPr = getFontColorPr(node, spNode, type, slideMasterTextStyles);
  7279. var styleText =
  7280. "color:" + fontClrPr[0] + ";" +
  7281. "text-shadow:" + fontClrPr[1] + ";" +
  7282. "font-size:" + getFontSize(node, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) + ";" +
  7283. "font-family:" + getFontType(node, type, slideMasterTextStyles) + ";" +
  7284. "font-weight:" + getFontBold(node, type, slideMasterTextStyles) + ";" +
  7285. "font-style:" + getFontItalic(node, type, slideMasterTextStyles) + ";" +
  7286. "text-decoration:" + getFontDecoration(node, type, slideMasterTextStyles) + ";" +
  7287. "text-align:" + getTextHorizontalAlign(node, type, slideMasterTextStyles) + ";" +
  7288. "vertical-align:" + getTextVerticalAlign(node, type, slideMasterTextStyles) + ";";
  7289. */
  7290. }
  7291. }
  7292. rowsStyl += " background-color:#" + fillColor + ";" +
  7293. " opacity:" + colorOpacity + ";";
  7294. } else if (i > 0 && bandRowAttr !== undefined) {
  7295. var fillColor = "fff";
  7296. var colorOpacity = 1;
  7297. if ((i % 2) == 0) {
  7298. if (thisTblStyle["a:band2H"] !== undefined) {
  7299. //console.log(thisTblStyle["a:band2H"]);
  7300. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:fill", "a:solidFill"]);
  7301. if (bgFillschemeClr !== undefined) {
  7302. fillColor = getSolidFill(bgFillschemeClr);
  7303. colorOpacity = getColorOpacity(bgFillschemeClr);
  7304. }
  7305. //borders color
  7306. //borders Width
  7307. var borderStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:tcBdr"]);
  7308. if (borderStyl !== undefined) {
  7309. var row_borders = getTableBorders(borderStyl);
  7310. rowsStyl += row_borders;
  7311. }
  7312. //console.log(thisTblStyle["a:band2H"])
  7313. //Text Style - TODO
  7314. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcTxStyle"]);
  7315. if (rowTxtStyl !== undefined) {
  7316. }
  7317. //console.log(i,thisTblStyle)
  7318. }/*else{
  7319. var bgFillschemeClr = thisTblStyle["a:wholeTbl"]["a:tcStyle"]["a:fill"]["a:solidFill"];
  7320. if(bgFillschemeClr !==undefined){
  7321. fillColor = getSolidFill(bgFillschemeClr);
  7322. colorOpacity = getColorOpacity(bgFillschemeClr);
  7323. }
  7324. //borders color
  7325. //borders Width
  7326. var borderStyl = thisTblStyle["a:wholeTbl"]["a:tcStyle"]["a:tcBdr"];
  7327. if(borderStyl !== undefined){
  7328. var row_borders = getTableBorders(borderStyl);
  7329. rowsStyl += row_borders;
  7330. }
  7331. //console.log(thisTblStyle["a:wholeTbl"])
  7332. //Text Style - TODO
  7333. var rowTxtStyl = thisTblStyle["a:wholeTbl"]["a:tcTxStyle"];
  7334. if(rowTxtStyl !== undefined){
  7335. }
  7336. }*/
  7337. } else {
  7338. if (thisTblStyle["a:band1H"] !== undefined) {
  7339. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:fill", "a:solidFill"]);
  7340. if (bgFillschemeClr !== undefined) {
  7341. fillColor = getSolidFill(bgFillschemeClr);
  7342. colorOpacity = getColorOpacity(bgFillschemeClr);
  7343. }
  7344. //borders color
  7345. //borders Width
  7346. var borderStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:tcBdr"]);
  7347. if (borderStyl !== undefined) {
  7348. var row_borders = getTableBorders(borderStyl);
  7349. rowsStyl += row_borders;
  7350. }
  7351. //console.log(thisTblStyle["a:band1H"])
  7352. //Text Style - TODO
  7353. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcTxStyle"]);
  7354. if (rowTxtStyl !== undefined) {
  7355. }
  7356. }
  7357. }
  7358. rowsStyl += " background-color:#" + fillColor + ";" +
  7359. " opacity:" + colorOpacity + ";";
  7360. }
  7361. tableHtml += "<tr style='" + rowsStyl + "'>";
  7362. ////////////////////////////////////////////////
  7363. var tcNodes = trNodes[i]["a:tc"];
  7364. if (tcNodes.constructor === Array) {
  7365. for (var j = 0; j < tcNodes.length; j++) {
  7366. var text = genTextBody(tcNodes[j]["a:txBody"], node, undefined, undefined, undefined, warpObj);
  7367. var rowSpan = getTextByPathList(tcNodes[j], ["attrs", "rowSpan"]);
  7368. var colSpan = getTextByPathList(tcNodes[j], ["attrs", "gridSpan"]);
  7369. var vMerge = getTextByPathList(tcNodes[j], ["attrs", "vMerge"]);
  7370. var hMerge = getTextByPathList(tcNodes[j], ["attrs", "hMerge"]);
  7371. //Cells Style : TODO /////////////Amir
  7372. //console.log(tcNodes[j]);
  7373. //if(j==0 && ())
  7374. var colWidthParam = getColsGrid[j]["attrs"]["w"];
  7375. var colStyl = "";
  7376. if (colWidthParam !== undefined) {
  7377. var colWidth = parseInt(colWidthParam) * 96 / 914400;
  7378. colStyl += "width:" + colWidth + "px;"
  7379. }
  7380. var getFill = tcNodes[j]["a:tcPr"]["a:solidFill"];
  7381. var fillColor = "";
  7382. var colorOpacity = 1;
  7383. if (getFill !== undefined) {
  7384. //console.log(getFill);
  7385. fillColor = getSolidFill(getFill);
  7386. colorOpacity = getColorOpacity(getFill);
  7387. } else {
  7388. //get from Theme (tableStyles.xml) TODO
  7389. //get tableStyleId = a:tbl => a:tblPr => a:tableStyleId
  7390. var tbleStyleId = getTblPr["a:tableStyleId"];
  7391. if (tbleStyleId !== undefined) {
  7392. //get Style from tableStyles.xml by {var tbleStyleId}
  7393. //table style object : tableStyles
  7394. var tbleStylList = tableStyles["a:tblStyleLst"]["a:tblStyle"];
  7395. for (var k = 0; k < tbleStylList.length; k++) {
  7396. if (tbleStylList[k]["attrs"]["styleId"] == tbleStyleId) {
  7397. //console.log(tbleStylList[k]);
  7398. }
  7399. }
  7400. }
  7401. //console.log(tbleStyleId);
  7402. }
  7403. if (fillColor != "") {
  7404. colStyl += " background-color:#" + fillColor + ";";
  7405. colStyl += " opacity" + colorOpacity + ";";
  7406. }
  7407. //console.log(fillColor);
  7408. ////////////////////////////////////
  7409. if (rowSpan !== undefined) {
  7410. tableHtml += "<td rowspan='" + parseInt(rowSpan) + "' style='" + colStyl + "'>" + text + "</td>";
  7411. } else if (colSpan !== undefined) {
  7412. tableHtml += "<td colspan='" + parseInt(colSpan) + "' style='" + colStyl + "'>" + text + "</td>";
  7413. } else if (vMerge === undefined && hMerge === undefined) {
  7414. tableHtml += "<td style='" + colStyl + "'>" + text + "</td>";
  7415. }
  7416. }
  7417. } else {
  7418. var text = genTextBody(tcNodes["a:txBody"]);
  7419. //Cells Style : TODO /////////////Amir
  7420. var colWidthParam = getColsGrid[0]["attrs"]["w"];
  7421. var colStyl = "";
  7422. if (colWidthParam !== undefined) {
  7423. var colWidth = parseInt(colWidthParam) * 96 / 914400;
  7424. colStyl += "width:" + colWidth + "px;"
  7425. }
  7426. var getFill = tcNodes["a:tcPr"]["a:solidFill"];
  7427. var fillColor = "";
  7428. var colorOpacity = 1;
  7429. if (getFill !== undefined) {
  7430. //console.log(getFill);
  7431. fillColor = getSolidFill(getFill);
  7432. colorOpacity = getColorOpacity(getFill);
  7433. } else {
  7434. //get from Theme TODO
  7435. }
  7436. if (fillColor != "") {
  7437. colStyl += " background-color:#" + fillColor + ";"
  7438. colStyl += " opacity" + colorOpacity + ";";
  7439. }
  7440. ////////////////////////////////////
  7441. tableHtml += "<td style='" + colStyl + "'>" + text + "</td>";
  7442. }
  7443. tableHtml += "</tr>";
  7444. }
  7445. } else {
  7446. //////////////row height ////////////Amir
  7447. var rowHeightParam = trNodes["attrs"]["h"];
  7448. var rowHeight = 0;
  7449. if (rowHeightParam !== undefined) {
  7450. rowHeight = parseInt(rowHeightParam) * 96 / 914400;
  7451. tableHtml += "<tr style='height:" + rowHeight + "px;'>";
  7452. } else {
  7453. tableHtml += "<tr>";
  7454. }
  7455. ////////////////////////////////////////////////
  7456. var tcNodes = trNodes["a:tc"];
  7457. if (tcNodes.constructor === Array) {
  7458. for (var j = 0; j < tcNodes.length; j++) {
  7459. var text = genTextBody(tcNodes[j]["a:txBody"]);
  7460. //Cells Style : TODO /////////////Amir
  7461. var colWidthParam = getColsGrid[j]["attrs"]["w"];
  7462. var colStyl = "";
  7463. if (colWidthParam !== undefined) {
  7464. var colWidth = parseInt(colWidthParam) * 96 / 914400;
  7465. colStyl += "width:" + colWidth + "px;"
  7466. }
  7467. var getFill = tcNodes[j]["a:tcPr"]["a:solidFill"];
  7468. var fillColor = "";
  7469. var colorOpacity = 1;
  7470. if (getFill !== undefined) {
  7471. fillColor = getSolidFill(getFill);
  7472. colorOpacity = getColorOpacity(getFill);
  7473. } else {
  7474. //get from Theme TODO
  7475. //get tableStyleId
  7476. // a:tbl => a:tblPr => a:tableStyleId
  7477. }
  7478. if (fillColor != "") {
  7479. colStyl += " background-color:#" + fillColor + ";"
  7480. colStyl += " opacity" + colorOpacity + ";";
  7481. }
  7482. ////////////////////////////////////
  7483. tableHtml += "<td style='" + colStyl + "'>" + text + "</td>";
  7484. }
  7485. } else {
  7486. var text = genTextBody(tcNodes["a:txBody"]);
  7487. //Cells Style : TODO /////////////Amir
  7488. var colWidthParam = getColsGrid[0]["attrs"]["w"];
  7489. var colStyl = "";
  7490. if (colWidthParam !== undefined) {
  7491. var colWidth = parseInt(colWidthParam) * 96 / 914400;
  7492. colStyl += "width:" + colWidth + "px;"
  7493. }
  7494. var getFill = tcNodes[j]["a:tcPr"]["a:solidFill"];
  7495. var fillColor = "";
  7496. var colorOpacity = 1;
  7497. if (getFill !== undefined) {
  7498. //console.log(getFill);
  7499. fillColor = getSolidFill(getFill);
  7500. colorOpacity = getColorOpacity(getFill);
  7501. } else {
  7502. //get from Theme TODO
  7503. }
  7504. if (fillColor != "") {
  7505. colStyl += " background-color:#" + fillColor + ";"
  7506. colStyl += " opacity" + colorOpacity + ";";
  7507. }
  7508. ////////////////////////////////////
  7509. tableHtml += "<td style='" + colStyl + "'>" + text + "</td>";
  7510. }
  7511. tableHtml += "</tr>";
  7512. }
  7513. return tableHtml;
  7514. }
  7515. function genChart(node, warpObj) {
  7516. var order = node["attrs"]["order"];
  7517. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  7518. var result = "<div id='chart" + chartID + "' class='block content' style='" +
  7519. getPosition(xfrmNode, undefined, undefined) + getSize(xfrmNode, undefined, undefined) +
  7520. " z-index: " + order + ";'></div>";
  7521. var rid = node["a:graphic"]["a:graphicData"]["c:chart"]["attrs"]["r:id"];
  7522. var refName = warpObj["slideResObj"][rid]["target"];
  7523. var content = readXmlFile(warpObj["zip"], refName);
  7524. var plotArea = getTextByPathList(content, ["c:chartSpace", "c:chart", "c:plotArea"]);
  7525. var chartData = null;
  7526. for (var key in plotArea) {
  7527. switch (key) {
  7528. case "c:lineChart":
  7529. chartData = {
  7530. "type": "createChart",
  7531. "data": {
  7532. "chartID": "chart" + chartID,
  7533. "chartType": "lineChart",
  7534. "chartData": extractChartData(plotArea[key]["c:ser"])
  7535. }
  7536. };
  7537. break;
  7538. case "c:barChart":
  7539. chartData = {
  7540. "type": "createChart",
  7541. "data": {
  7542. "chartID": "chart" + chartID,
  7543. "chartType": "barChart",
  7544. "chartData": extractChartData(plotArea[key]["c:ser"])
  7545. }
  7546. };
  7547. break;
  7548. case "c:pieChart":
  7549. chartData = {
  7550. "type": "createChart",
  7551. "data": {
  7552. "chartID": "chart" + chartID,
  7553. "chartType": "pieChart",
  7554. "chartData": extractChartData(plotArea[key]["c:ser"])
  7555. }
  7556. };
  7557. break;
  7558. case "c:pie3DChart":
  7559. chartData = {
  7560. "type": "createChart",
  7561. "data": {
  7562. "chartID": "chart" + chartID,
  7563. "chartType": "pie3DChart",
  7564. "chartData": extractChartData(plotArea[key]["c:ser"])
  7565. }
  7566. };
  7567. break;
  7568. case "c:areaChart":
  7569. chartData = {
  7570. "type": "createChart",
  7571. "data": {
  7572. "chartID": "chart" + chartID,
  7573. "chartType": "areaChart",
  7574. "chartData": extractChartData(plotArea[key]["c:ser"])
  7575. }
  7576. };
  7577. break;
  7578. case "c:scatterChart":
  7579. chartData = {
  7580. "type": "createChart",
  7581. "data": {
  7582. "chartID": "chart" + chartID,
  7583. "chartType": "scatterChart",
  7584. "chartData": extractChartData(plotArea[key]["c:ser"])
  7585. }
  7586. };
  7587. break;
  7588. case "c:catAx":
  7589. break;
  7590. case "c:valAx":
  7591. break;
  7592. default:
  7593. }
  7594. }
  7595. if (chartData !== null) {
  7596. MsgQueue.push(chartData);
  7597. }
  7598. chartID++;
  7599. return result;
  7600. }
  7601. function genDiagram(node, warpObj) {
  7602. //console.log(warpObj)
  7603. //readXmlFile(zip, sldFileName)
  7604. /**files define the diagram:
  7605. * 1-colors#.xml,
  7606. * 2-data#.xml,
  7607. * 3-layout#.xml,
  7608. * 4-quickStyle#.xml.
  7609. * 5-drawing#.xml, which Microsoft added as an extension for persisting diagram layout information.
  7610. */
  7611. ///get colors#.xml, data#.xml , layout#.xml , quickStyle#.xml
  7612. var order = node["attrs"]["order"];
  7613. var zip = warpObj["zip"];
  7614. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  7615. var dgmRelIds = getTextByPathList(node, ["a:graphic", "a:graphicData", "dgm:relIds", "attrs"]);
  7616. //console.log(dgmRelIds)
  7617. var dgmClrFileId = dgmRelIds["r:cs"];
  7618. var dgmDataFileId = dgmRelIds["r:dm"];
  7619. var dgmLayoutFileId = dgmRelIds["r:lo"];
  7620. var dgmQuickStyleFileId = dgmRelIds["r:qs"];
  7621. var dgmClrFileName = warpObj["slideResObj"][dgmClrFileId].target,
  7622. dgmDataFileName = warpObj["slideResObj"][dgmDataFileId].target,
  7623. dgmLayoutFileName = warpObj["slideResObj"][dgmLayoutFileId].target;
  7624. dgmQuickStyleFileName = warpObj["slideResObj"][dgmQuickStyleFileId].target;
  7625. //console.log(dgmClrFileName,"\n",dgmDataFileName,"\n",dgmLayoutFileName,"\n",dgmQuickStyleFileName);
  7626. var dgmClr = readXmlFile(zip, dgmClrFileName);
  7627. var dgmData = readXmlFile(zip, dgmDataFileName);
  7628. var dgmLayout = readXmlFile(zip, dgmLayoutFileName);
  7629. var dgmQuickStyle = readXmlFile(zip, dgmQuickStyleFileName);
  7630. //console.log(dgmClr,dgmData,dgmLayout,dgmQuickStyle)
  7631. ///get drawing#.xml
  7632. var dgmDrwFileName = "";
  7633. var dataModelExt = getTextByPathList(dgmData, ["dgm:dataModel", "dgm:extLst", "a:ext", "dsp:dataModelExt", "attrs"]);
  7634. if (dataModelExt !== undefined) {
  7635. var dgmDrwFileId = dataModelExt["relId"];
  7636. dgmDrwFileName = warpObj["slideResObj"][dgmDrwFileId]["target"];
  7637. }
  7638. //console.log("dgmDrwFileName: ",dgmDrwFileName);
  7639. var dgmDrwFile = "";
  7640. if (dgmDrwFileName != "") {
  7641. dgmDrwFile = readXmlFile(zip, dgmDrwFileName);
  7642. }
  7643. //console.log("dgmDrwFile: ",dgmDrwFile);
  7644. //processSpNode(node, warpObj)
  7645. var dgmDrwSpArray = getTextByPathList(dgmDrwFile, ["dsp:drawing", "dsp:spTree", "dsp:sp"]);
  7646. var rslt = "";
  7647. if (dgmDrwSpArray !== undefined) {
  7648. var dgmDrwSpArrayLen = dgmDrwSpArray.length;
  7649. for (var i = 0; i < dgmDrwSpArrayLen; i++) {
  7650. var dspSp = dgmDrwSpArray[i];
  7651. var dspSpObjToStr = JSON.stringify(dspSp);
  7652. var pSpStr = dspSpObjToStr.replace(/dsp:/g, "p:");
  7653. var pSpStrToObj = JSON.parse(pSpStr);
  7654. //console.log("pSpStrToObj["+i+"]: ",pSpStrToObj);
  7655. rslt += processSpNode(pSpStrToObj, warpObj)
  7656. //console.log("rslt["+i+"]: ",rslt);
  7657. }
  7658. // dgmDrwFile: "dsp:"-> "p:"
  7659. }
  7660. return "<div class='block content' style='" +
  7661. getPosition(xfrmNode, undefined, undefined) +
  7662. getSize(xfrmNode, undefined, undefined) +
  7663. "'>" + rslt + "</div>";
  7664. }
  7665. function getPosition(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {
  7666. var off = undefined;
  7667. var x = -1, y = -1;
  7668. if (slideSpNode !== undefined) {
  7669. off = slideSpNode["a:off"]["attrs"];
  7670. } else if (slideLayoutSpNode !== undefined) {
  7671. off = slideLayoutSpNode["a:off"]["attrs"];
  7672. } else if (slideMasterSpNode !== undefined) {
  7673. off = slideMasterSpNode["a:off"]["attrs"];
  7674. }
  7675. if (off === undefined) {
  7676. return "";
  7677. } else {
  7678. x = parseInt(off["x"]) * 96 / 914400;
  7679. y = parseInt(off["y"]) * 96 / 914400;
  7680. return (isNaN(x) || isNaN(y)) ? "" : "top:" + y + "px; left:" + x + "px;";
  7681. }
  7682. }
  7683. function getSize(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {
  7684. var ext = undefined;
  7685. var w = -1, h = -1;
  7686. if (slideSpNode !== undefined) {
  7687. ext = slideSpNode["a:ext"]["attrs"];
  7688. } else if (slideLayoutSpNode !== undefined) {
  7689. ext = slideLayoutSpNode["a:ext"]["attrs"];
  7690. } else if (slideMasterSpNode !== undefined) {
  7691. ext = slideMasterSpNode["a:ext"]["attrs"];
  7692. }
  7693. if (ext === undefined) {
  7694. return "";
  7695. } else {
  7696. w = parseInt(ext["cx"]) * 96 / 914400;
  7697. h = parseInt(ext["cy"]) * 96 / 914400;
  7698. return (isNaN(w) || isNaN(h)) ? "" : "width:" + w + "px; height:" + h + "px;";
  7699. }
  7700. }
  7701. function getHorizontalAlign(node, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) {
  7702. var algn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]);
  7703. if (algn === undefined) {
  7704. algn = getTextByPathList(slideLayoutSpNode, ["p:txBody", "a:p", "a:pPr", "attrs", "algn"]);
  7705. if (algn === undefined) {
  7706. algn = getTextByPathList(slideMasterSpNode, ["p:txBody", "a:p", "a:pPr", "attrs", "algn"]);
  7707. if (algn === undefined) {
  7708. switch (type) {
  7709. case "title":
  7710. case "subTitle":
  7711. case "ctrTitle":
  7712. algn = getTextByPathList(slideMasterTextStyles, ["p:titleStyle", "a:lvl1pPr", "attrs", "alng"]);
  7713. break;
  7714. default:
  7715. algn = getTextByPathList(slideMasterTextStyles, ["p:otherStyle", "a:lvl1pPr", "attrs", "alng"]);
  7716. }
  7717. }
  7718. }
  7719. }
  7720. // TODO:
  7721. if (algn === undefined) {
  7722. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  7723. return "h-mid";
  7724. } else if (type == "sldNum") {
  7725. return "h-right";
  7726. }
  7727. }
  7728. return algn === "ctr" ? "h-mid" : algn === "r" ? "h-right" : "h-left";
  7729. }
  7730. function getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) {
  7731. // 上中下對齊: X, <a:bodyPr anchor="ctr">, <a:bodyPr anchor="b">
  7732. var anchor = getTextByPathList(node, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  7733. if (anchor === undefined) {
  7734. anchor = getTextByPathList(slideLayoutSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  7735. if (anchor === undefined) {
  7736. anchor = getTextByPathList(slideMasterSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  7737. }
  7738. }
  7739. return anchor === "ctr" ? "v-mid" : anchor === "b" ? "v-down" : "v-up";
  7740. }
  7741. function getFontType(node, type, slideMasterTextStyles) {
  7742. var typeface = getTextByPathList(node, ["a:rPr", "a:latin", "attrs", "typeface"]);
  7743. if (typeface === undefined) {
  7744. var fontSchemeNode = getTextByPathList(themeContent, ["a:theme", "a:themeElements", "a:fontScheme"]);
  7745. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  7746. typeface = getTextByPathList(fontSchemeNode, ["a:majorFont", "a:latin", "attrs", "typeface"]);
  7747. } else if (type == "body") {
  7748. typeface = getTextByPathList(fontSchemeNode, ["a:minorFont", "a:latin", "attrs", "typeface"]);
  7749. } else {
  7750. typeface = getTextByPathList(fontSchemeNode, ["a:minorFont", "a:latin", "attrs", "typeface"]);
  7751. }
  7752. }
  7753. return (typeface === undefined) ? "inherit" : typeface;
  7754. }
  7755. function getFontColorPr(node, spNode, type, slideMasterTextStyles) {
  7756. //text border using: text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
  7757. //{getFontColor(..) return color} -> getFontColorPr(..) return array[color,textBordr/shadow]
  7758. //https://stackoverflow.com/questions/2570972/css-font-border
  7759. //https://www.w3schools.com/cssref/css3_pr_text-shadow.asp
  7760. //console.log(node)
  7761. var rPrNode = getTextByPathList(node, ["a:rPr"]);
  7762. var filTyp, color, textBordr;
  7763. if (rPrNode !== undefined) {
  7764. filTyp = getFillType(rPrNode);
  7765. if (filTyp == "SOLID_FILL") {
  7766. var solidFillNode = getTextByPathList(node, ["a:rPr", "a:solidFill"]);
  7767. color = getSolidFill(solidFillNode);
  7768. } else if (filTyp == "PATTERN_FILL") {
  7769. var pattFill = getTextByPathList(node, ["a:rPr", "a:pattFill"]);
  7770. color = getPatternFill(pattFill);
  7771. } else {
  7772. var sPstyle = getTextByPathList(spNode, ["p:style", "a:fontRef"]);
  7773. if (sPstyle !== undefined) {
  7774. color = getSolidFill(sPstyle);
  7775. }
  7776. }
  7777. //console.log(node,filTyp,color)
  7778. }
  7779. if (color === undefined || color === "FFF") {
  7780. color = "#000";
  7781. } else {
  7782. color = "#" + color;
  7783. }
  7784. //textBordr
  7785. var txtBrdrNode = getTextByPathList(node, ["a:rPr", "a:ln"]);
  7786. if (txtBrdrNode !== undefined) {
  7787. var txBrd = getBorder(node, false, "text");
  7788. var txBrdAry = txBrd.split(" ");
  7789. var brdSize = (parseInt(txBrdAry[0].substring(0, txBrdAry[0].indexOf("pt"))) * (4 / 3)) + "px";
  7790. var brdClr = txBrdAry[2];
  7791. //var brdTyp = txBrdAry[1]; //not in use
  7792. textBordr = "-" + brdSize + " 0 " + brdClr + ", 0 " + brdSize + " " + brdClr + ", " + brdSize + " 0 " + brdClr + ", 0 -" + brdSize + " " + brdClr + ";"
  7793. //console.log(node,"txBrd: ",textBordr);
  7794. } else {
  7795. textBordr = "none";
  7796. }
  7797. return [color, textBordr];
  7798. }
  7799. function getFontSize(node, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles) {
  7800. var fontSize = undefined;
  7801. if (node["a:rPr"] !== undefined) {
  7802. fontSize = parseInt(node["a:rPr"]["attrs"]["sz"]) / 100;
  7803. }
  7804. if ((isNaN(fontSize) || fontSize === undefined)) {
  7805. var sz = getTextByPathList(slideLayoutSpNode, ["p:txBody", "a:lstStyle", "a:lvl1pPr", "a:defRPr", "attrs", "sz"]);
  7806. fontSize = parseInt(sz) / 100;
  7807. }
  7808. if (isNaN(fontSize) || fontSize === undefined) {
  7809. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  7810. var sz = getTextByPathList(slideMasterTextStyles, ["p:titleStyle", "a:lvl1pPr", "a:defRPr", "attrs", "sz"]);
  7811. } else if (type == "body") {
  7812. var sz = getTextByPathList(slideMasterTextStyles, ["p:bodyStyle", "a:lvl1pPr", "a:defRPr", "attrs", "sz"]);
  7813. } else if (type == "dt" || type == "sldNum") {
  7814. var sz = "1200";
  7815. } else if (type === undefined) {
  7816. var sz = getTextByPathList(slideMasterTextStyles, ["p:otherStyle", "a:lvl1pPr", "a:defRPr", "attrs", "sz"]);
  7817. }
  7818. fontSize = parseInt(sz) / 100;
  7819. }
  7820. var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]);
  7821. if (baseline !== undefined && !isNaN(fontSize)) {
  7822. fontSize -= 10;
  7823. }
  7824. return isNaN(fontSize) ? "inherit" : (fontSize + "pt");
  7825. }
  7826. function getFontBold(node, type, slideMasterTextStyles) {
  7827. return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["b"] === "1") ? "bold" : "initial";
  7828. }
  7829. function getFontItalic(node, type, slideMasterTextStyles) {
  7830. return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["i"] === "1") ? "italic" : "normal";
  7831. }
  7832. function getFontDecoration(node, type, slideMasterTextStyles) {
  7833. ///////////////////////////////Amir///////////////////////////////
  7834. if (node["a:rPr"] !== undefined) {
  7835. var underLine = node["a:rPr"]["attrs"]["u"] !== undefined ? node["a:rPr"]["attrs"]["u"] : "none";
  7836. var strikethrough = node["a:rPr"]["attrs"]["strike"] !== undefined ? node["a:rPr"]["attrs"]["strike"] : 'noStrike';
  7837. //console.log("strikethrough: "+strikethrough);
  7838. if (underLine != "none" && strikethrough == "noStrike") {
  7839. return "underline";
  7840. } else if (underLine == "none" && strikethrough != "noStrike") {
  7841. return "line-through";
  7842. } else if (underLine != "none" && strikethrough != "noStrike") {
  7843. return "underline line-through";
  7844. } else {
  7845. return "initial";
  7846. }
  7847. } else {
  7848. return "initial";
  7849. }
  7850. /////////////////////////////////////////////////////////////////
  7851. //return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["u"] === "sng") ? "underline" : "initial";
  7852. }
  7853. ////////////////////////////////////Amir/////////////////////////////////////
  7854. function getTextHorizontalAlign(node, type, slideMasterTextStyles) {
  7855. var getAlgn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]);
  7856. var align = "initial";
  7857. if (getAlgn !== undefined) {
  7858. switch (getAlgn) {
  7859. case "l":
  7860. align = "left";
  7861. break;
  7862. case "r":
  7863. align = "right";
  7864. break;
  7865. case "ctr":
  7866. align = "center";
  7867. break;
  7868. case "just":
  7869. align = "justify";
  7870. break;
  7871. case "dist":
  7872. align = "justify";
  7873. break;
  7874. default:
  7875. align = "initial";
  7876. }
  7877. }
  7878. return align;
  7879. }
  7880. /////////////////////////////////////////////////////////////////////
  7881. function getTextVerticalAlign(node, type, slideMasterTextStyles) {
  7882. var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]);
  7883. return baseline === undefined ? "baseline" : (parseInt(baseline) / 1000) + "%";
  7884. }
  7885. ///////////////////////////////////Amir/////////////////////////////
  7886. function getTextDirection(node, type, slideMasterTextStyles) {
  7887. //get lvl
  7888. var pprLvl = getTextByPathList(node, ["a:pPr", "attrs", "lvl"]);
  7889. var pprLvlNum = pprLvl === undefined ? 1 : Number(pprLvl) + 1;
  7890. var lvlNode = "a:lvl" + pprLvlNum + "pPr";
  7891. var pprAlgn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]);
  7892. var isDir = getTextByPathList(slideMasterTextStyles, ["p:bodyStyle", lvlNode, "attrs", "rtl"]);
  7893. //var tmp = getTextByPathList(node, ["a:r", "a:t"]);
  7894. var dir = "";
  7895. if (isDir !== undefined) {
  7896. if (isDir == "1" && (pprAlgn === undefined || pprAlgn == "r")) {
  7897. dir = "rtl";
  7898. } else { //isDir =="0"
  7899. dir = "ltr";
  7900. }
  7901. }
  7902. //console.log(tmp,isDir,pprAlgn,dir)
  7903. return dir;
  7904. }
  7905. function getTableBorders(node) {
  7906. var borderStyle = "";
  7907. if (node["a:bottom"] !== undefined) {
  7908. var obj = {
  7909. "p:spPr": {
  7910. "a:ln": node["a:bottom"]["a:ln"]
  7911. }
  7912. }
  7913. var borders = getBorder(obj, false, "shape");
  7914. borderStyle += borders.replace("border", "border-bottom");
  7915. }
  7916. if (node["a:top"] !== undefined) {
  7917. var obj = {
  7918. "p:spPr": {
  7919. "a:ln": node["a:top"]["a:ln"]
  7920. }
  7921. }
  7922. var borders = getBorder(obj, false, "shape");
  7923. borderStyle += borders.replace("border", "border-top");
  7924. }
  7925. if (node["a:right"] !== undefined) {
  7926. var obj = {
  7927. "p:spPr": {
  7928. "a:ln": node["a:right"]["a:ln"]
  7929. }
  7930. }
  7931. var borders = getBorder(obj, false, "shape");
  7932. borderStyle += borders.replace("border", "border-right");
  7933. }
  7934. if (node["a:left"] !== undefined) {
  7935. var obj = {
  7936. "p:spPr": {
  7937. "a:ln": node["a:left"]["a:ln"]
  7938. }
  7939. }
  7940. var borders = getBorder(obj, false, "shape");
  7941. borderStyle += borders.replace("border", "border-left");
  7942. }
  7943. return borderStyle;
  7944. }
  7945. //////////////////////////////////////////////////////////////////
  7946. function getBorder(node, isSvgMode, bType) {
  7947. var cssText, lineNode;
  7948. if (bType == "shape") {
  7949. cssText = "border: ";
  7950. lineNode = node["p:spPr"]["a:ln"];
  7951. } else if (bType == "text") {
  7952. cssText = "";
  7953. lineNode = node["a:rPr"]["a:ln"];
  7954. }
  7955. // Border width: 1pt = 12700, default = 0.75pt
  7956. var borderWidth = parseInt(getTextByPathList(lineNode, ["attrs", "w"])) / 12700;
  7957. if (isNaN(borderWidth) || borderWidth < 1) {
  7958. cssText += "1pt ";
  7959. } else {
  7960. cssText += borderWidth + "pt ";
  7961. }
  7962. // Border type
  7963. var borderType = getTextByPathList(lineNode, ["a:prstDash", "attrs", "val"]);
  7964. var strokeDasharray = "0";
  7965. switch (borderType) {
  7966. case "solid":
  7967. cssText += "solid";
  7968. strokeDasharray = "0";
  7969. break;
  7970. case "dash":
  7971. cssText += "dashed";
  7972. strokeDasharray = "5";
  7973. break;
  7974. case "dashDot":
  7975. cssText += "dashed";
  7976. strokeDasharray = "5, 5, 1, 5";
  7977. break;
  7978. case "dot":
  7979. cssText += "dotted";
  7980. strokeDasharray = "1, 5";
  7981. break;
  7982. case "lgDash":
  7983. cssText += "dashed";
  7984. strokeDasharray = "10, 5";
  7985. break;
  7986. case "lgDashDotDot":
  7987. cssText += "dashed";
  7988. strokeDasharray = "10, 5, 1, 5, 1, 5";
  7989. break;
  7990. case "sysDash":
  7991. cssText += "dashed";
  7992. strokeDasharray = "5, 2";
  7993. break;
  7994. case "sysDashDot":
  7995. cssText += "dashed";
  7996. strokeDasharray = "5, 2, 1, 5";
  7997. break;
  7998. case "sysDashDotDot":
  7999. cssText += "dashed";
  8000. strokeDasharray = "5, 2, 1, 5, 1, 5";
  8001. break;
  8002. case "sysDot":
  8003. cssText += "dotted";
  8004. strokeDasharray = "2, 5";
  8005. break;
  8006. case undefined:
  8007. //console.log(borderType);
  8008. default:
  8009. cssText += "solid";
  8010. strokeDasharray = "0";
  8011. }
  8012. // Border color
  8013. var borderColor = getTextByPathList(lineNode, ["a:solidFill", "a:srgbClr", "attrs", "val"]);
  8014. if (borderColor === undefined) {
  8015. var schemeClrNode = getTextByPathList(lineNode, ["a:solidFill", "a:schemeClr"]);
  8016. if (schemeClrNode !== undefined) {
  8017. var schemeClr = "a:" + getTextByPathList(schemeClrNode, ["attrs", "val"]);
  8018. var borderColor = getSchemeColorFromTheme(schemeClr, undefined);
  8019. }
  8020. }
  8021. // 2. drawingML namespace
  8022. if (borderColor === undefined) {
  8023. var schemeClrNode = getTextByPathList(node, ["p:style", "a:lnRef", "a:schemeClr"]);
  8024. if (schemeClrNode !== undefined) {
  8025. var schemeClr = "a:" + getTextByPathList(schemeClrNode, ["attrs", "val"]);
  8026. var borderColor = getSchemeColorFromTheme(schemeClr, undefined);
  8027. }
  8028. if (borderColor !== undefined) {
  8029. var shade = getTextByPathList(schemeClrNode, ["a:shade", "attrs", "val"]);
  8030. if (shade !== undefined) {
  8031. shade = parseInt(shade) / 100000;
  8032. var color = new colz.Color("#" + borderColor);
  8033. color.setLum(color.hsl.l * shade);
  8034. borderColor = color.hex.replace("#", "");
  8035. }
  8036. }
  8037. }
  8038. if (borderColor === undefined) {
  8039. if (isSvgMode) {
  8040. borderColor = "none";
  8041. } else {
  8042. borderColor = "#000";
  8043. }
  8044. } else {
  8045. borderColor = "#" + borderColor;
  8046. }
  8047. cssText += " " + borderColor + " ";
  8048. if (isSvgMode) {
  8049. return { "color": borderColor, "width": borderWidth, "type": borderType, "strokeDasharray": strokeDasharray };
  8050. } else {
  8051. return cssText + ";";
  8052. }
  8053. }
  8054. function getSlideBackgroundFill(slideContent, slideLayoutContent, slideMasterContent, warpObj) {
  8055. //console.log(slideContent)
  8056. //getFillType(node)
  8057. var bgPr = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgPr"]);
  8058. var bgRef = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgRef"]);
  8059. var bgcolor;
  8060. if (bgPr !== undefined) {
  8061. //bgcolor = "background-color: blue;";
  8062. var bgFillTyp = getFillType(bgPr);
  8063. if (bgFillTyp == "SOLID_FILL") {
  8064. var sldFill = bgPr["a:solidFill"];
  8065. var bgColor = getSolidFill(sldFill);
  8066. var sldTint = getColorOpacity(sldFill);
  8067. bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  8068. } else if (bgFillTyp == "GRADIENT_FILL") {
  8069. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent);
  8070. } else if (bgFillTyp == "PIC_FILL") {
  8071. bgcolor = getBgPicFill(bgPr, "slideBg", warpObj);
  8072. }
  8073. //console.log(slideContent,slideMasterContent,color_ary,tint_ary,rot,bgcolor)
  8074. } else if (bgRef !== undefined) {
  8075. //console.log("slideContent",bgRef)
  8076. var phClr;
  8077. if (bgRef["a:srgbClr"] !== undefined) {
  8078. phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#...
  8079. } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr
  8080. var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]);
  8081. phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent); //#...
  8082. //console.log("schemeClr",schemeClr,"phClr=",phClr)
  8083. }
  8084. var idx = Number(bgRef["attrs"]["idx"]);
  8085. if (idx == 0 || idx == 1000) {
  8086. //no background
  8087. } else if (idx > 0 && idx < 1000) {
  8088. //fillStyleLst in themeContent
  8089. //themeContent["a:fmtScheme"]["a:fillStyleLst"]
  8090. //bgcolor = "background: red;";
  8091. } else if (idx > 1000) {
  8092. //bgFillStyleLst in themeContent
  8093. //themeContent["a:fmtScheme"]["a:bgFillStyleLst"]
  8094. var trueIdx = idx - 1000;
  8095. var bgFillLst = themeContent["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  8096. var sortblAry = [];
  8097. Object.keys(bgFillLst).forEach(function (key) {
  8098. var bgFillLstTyp = bgFillLst[key];
  8099. if (key != "attrs") {
  8100. if (bgFillLstTyp.constructor === Array) {
  8101. for (var i = 0; i < bgFillLstTyp.length; i++) {
  8102. var obj = {};
  8103. obj[key] = bgFillLstTyp[i];
  8104. obj["idex"] = bgFillLstTyp[i]["attrs"]["order"];
  8105. sortblAry.push(obj)
  8106. }
  8107. } else {
  8108. var obj = {};
  8109. obj[key] = bgFillLstTyp;
  8110. obj["idex"] = bgFillLstTyp["attrs"]["order"];
  8111. sortblAry.push(obj)
  8112. }
  8113. }
  8114. });
  8115. var sortByOrder = sortblAry.slice(0);
  8116. sortByOrder.sort(function (a, b) {
  8117. return a.idex - b.idex;
  8118. });
  8119. var bgFillLstIdx = sortByOrder[trueIdx - 1];
  8120. var bgFillTyp = getFillType(bgFillLstIdx);
  8121. if (bgFillTyp == "SOLID_FILL") {
  8122. var sldFill = bgFillLstIdx["a:solidFill"];
  8123. //var sldBgColor = getSolidFill(sldFill);
  8124. var sldTint = getColorOpacity(sldFill);
  8125. bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");";
  8126. //console.log("slideMasterContent - sldFill",sldFill)
  8127. } else if (bgFillTyp == "GRADIENT_FILL") {
  8128. bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent);
  8129. }
  8130. }
  8131. } else {
  8132. bgPr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgPr"]);
  8133. bgRef = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgRef"]);
  8134. //console.log("slideLayoutContent",bgPr,bgRef)
  8135. if (bgPr !== undefined) {
  8136. var bgFillTyp = getFillType(bgPr);
  8137. if (bgFillTyp == "SOLID_FILL") {
  8138. var sldFill = bgPr["a:solidFill"];
  8139. var bgColor = getSolidFill(sldFill);
  8140. var sldTint = getColorOpacity(sldFill);
  8141. bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  8142. } else if (bgFillTyp == "GRADIENT_FILL") {
  8143. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent);
  8144. } else if (bgFillTyp == "PIC_FILL") {
  8145. bgcolor = getBgPicFill(bgPr, "layoutBg", warpObj);
  8146. }
  8147. //console.log("slideLayoutContent",bgcolor)
  8148. } else if (bgRef !== undefined) {
  8149. bgcolor = "background: red;";
  8150. } else {
  8151. bgPr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgPr"]);
  8152. bgRef = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgRef"]);
  8153. //console.log("bgRef",bgRef["a:schemeClr"]["attrs"]["val"])
  8154. if (bgPr !== undefined) {
  8155. var bgFillTyp = getFillType(bgPr);
  8156. if (bgFillTyp == "SOLID_FILL") {
  8157. var sldFill = bgPr["a:solidFill"];
  8158. var bgColor = getSolidFill(sldFill);
  8159. var sldTint = getColorOpacity(sldFill);
  8160. bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  8161. } else if (bgFillTyp == "GRADIENT_FILL") {
  8162. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent);
  8163. } else if (bgFillTyp == "PIC_FILL") {
  8164. bgcolor = getBgPicFill(bgPr, "masterBg", warpObj);
  8165. }
  8166. } else if (bgRef !== undefined) {
  8167. //var obj={
  8168. // "a:solidFill": bgRef
  8169. //}
  8170. //var phClr = getSolidFill(bgRef);
  8171. var phClr;
  8172. if (bgRef["a:srgbClr"] !== undefined) {
  8173. phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#...
  8174. } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr
  8175. var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]);
  8176. phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent); //#...
  8177. //console.log("phClr",phClr)
  8178. }
  8179. var idx = Number(bgRef["attrs"]["idx"]);
  8180. //console.log("phClr=",phClr,"idx=",idx)
  8181. if (idx == 0 || idx == 1000) {
  8182. //no background
  8183. } else if (idx > 0 && idx < 1000) {
  8184. //fillStyleLst in themeContent
  8185. //themeContent["a:fmtScheme"]["a:fillStyleLst"]
  8186. //bgcolor = "background: red;";
  8187. } else if (idx > 1000) {
  8188. //bgFillStyleLst in themeContent
  8189. //themeContent["a:fmtScheme"]["a:bgFillStyleLst"]
  8190. var trueIdx = idx - 1000;
  8191. var bgFillLst = themeContent["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  8192. var sortblAry = [];
  8193. Object.keys(bgFillLst).forEach(function (key) {
  8194. //console.log("cubicBezTo["+key+"]:");
  8195. var bgFillLstTyp = bgFillLst[key];
  8196. if (key != "attrs") {
  8197. if (bgFillLstTyp.constructor === Array) {
  8198. for (var i = 0; i < bgFillLstTyp.length; i++) {
  8199. var obj = {};
  8200. obj[key] = bgFillLstTyp[i];
  8201. obj["idex"] = bgFillLstTyp[i]["attrs"]["order"];
  8202. sortblAry.push(obj)
  8203. }
  8204. } else {
  8205. var obj = {};
  8206. obj[key] = bgFillLstTyp;
  8207. obj["idex"] = bgFillLstTyp["attrs"]["order"];
  8208. sortblAry.push(obj)
  8209. }
  8210. }
  8211. });
  8212. var sortByOrder = sortblAry.slice(0);
  8213. sortByOrder.sort(function (a, b) {
  8214. return a.idex - b.idex;
  8215. });
  8216. var bgFillLstIdx = sortByOrder[trueIdx - 1];
  8217. var bgFillTyp = getFillType(bgFillLstIdx);
  8218. //console.log("bgFillLstIdx",bgFillLstIdx);
  8219. if (bgFillTyp == "SOLID_FILL") {
  8220. var sldFill = bgFillLstIdx["a:solidFill"];
  8221. var sldTint = getColorOpacity(sldFill);
  8222. bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");";
  8223. } else if (bgFillTyp == "GRADIENT_FILL") {
  8224. bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent);
  8225. } else {
  8226. console.log(bgFillTyp)
  8227. }
  8228. }
  8229. }
  8230. }
  8231. }
  8232. //console.log("bgcolor: ",bgcolor)
  8233. return bgcolor;
  8234. }
  8235. function getBgGradientFill(bgPr, phClr, slideMasterContent) {
  8236. var bgcolor = "";
  8237. if (bgPr !== undefined) {
  8238. var grdFill = bgPr["a:gradFill"];
  8239. var gsLst = grdFill["a:gsLst"]["a:gs"];
  8240. var startColorNode, endColorNode;
  8241. var color_ary = [];
  8242. var tint_ary = [];
  8243. for (var i = 0; i < gsLst.length; i++) {
  8244. var lo_tint;
  8245. var lo_color = "";
  8246. if (gsLst[i]["a:srgbClr"] !== undefined) {
  8247. if (phClr === undefined) {
  8248. lo_color = getTextByPathList(gsLst[i], ["a:srgbClr", "attrs", "val"]); //#...
  8249. }
  8250. lo_tint = getTextByPathList(gsLst[i], ["a:srgbClr", "a:tint", "attrs", "val"]);
  8251. } else if (gsLst[i]["a:schemeClr"] !== undefined) { //a:schemeClr
  8252. if (phClr === undefined) {
  8253. var schemeClr = getTextByPathList(gsLst[i], ["a:schemeClr", "attrs", "val"]);
  8254. lo_color = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent); //#...
  8255. }
  8256. lo_tint = getTextByPathList(gsLst[i], ["a:schemeClr", "a:tint", "attrs", "val"]);
  8257. //console.log("schemeClr",schemeClr,slideMasterContent)
  8258. }
  8259. //console.log("lo_color",lo_color)
  8260. color_ary[i] = lo_color;
  8261. tint_ary[i] = (lo_tint !== undefined) ? parseInt(lo_tint) / 100000 : 1;
  8262. }
  8263. //get rot
  8264. var lin = grdFill["a:lin"];
  8265. var rot = 90;
  8266. if (lin !== undefined) {
  8267. rot = angleToDegrees(lin["attrs"]["ang"]) + 90;
  8268. }
  8269. bgcolor = "background: linear-gradient(" + rot + "deg,";
  8270. for (var i = 0; i < gsLst.length; i++) {
  8271. if (i == gsLst.length - 1) {
  8272. if (phClr === undefined) {
  8273. bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ");";
  8274. } else {
  8275. bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ");";
  8276. }
  8277. } else {
  8278. if (phClr === undefined) {
  8279. bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ", ";
  8280. } else {
  8281. bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ", ";
  8282. }
  8283. }
  8284. }
  8285. } else {
  8286. if (phClr === undefined) {
  8287. bgcolor = "rgba(" + hexToRgbNew(phClr) + ",0);";
  8288. }
  8289. }
  8290. return bgcolor;
  8291. }
  8292. function getBgPicFill(bgPr, sorce, warpObj) {
  8293. var bgcolor;
  8294. var picFillBase64 = getPicFill(sorce, bgPr["a:blipFill"], warpObj);
  8295. var ordr = bgPr["attrs"]["order"];
  8296. //a:srcRect
  8297. //a:stretch => a:fillRect =>attrs (l:-17000, r:-17000)
  8298. bgcolor = "background-image: url(" + picFillBase64 + "); z-index: " + ordr + ";";
  8299. return bgcolor;
  8300. }
  8301. function hexToRgbNew(hex) {
  8302. var arrBuff = new ArrayBuffer(4);
  8303. var vw = new DataView(arrBuff);
  8304. vw.setUint32(0, parseInt(hex, 16), false);
  8305. var arrByte = new Uint8Array(arrBuff);
  8306. return arrByte[1] + "," + arrByte[2] + "," + arrByte[3];
  8307. }
  8308. function getShapeFill(node, isSvgMode, warpObj) {
  8309. // 1. presentationML
  8310. // p:spPr/ [a:noFill, solidFill, gradFill, blipFill, pattFill, grpFill]
  8311. // From slide
  8312. //Fill Type:
  8313. //console.log("ShapeFill: ", node)
  8314. var fillType = getFillType(getTextByPathList(node, ["p:spPr"]));
  8315. var fillColor;
  8316. if (fillType == "NO_FILL") {
  8317. return isSvgMode ? "none" : "background-color: initial;";
  8318. } else if (fillType == "SOLID_FILL") {
  8319. var shpFill = node["p:spPr"]["a:solidFill"];
  8320. fillColor = getSolidFill(shpFill);
  8321. } else if (fillType == "GRADIENT_FILL") {
  8322. var shpFill = node["p:spPr"]["a:gradFill"];
  8323. // fillColor = getSolidFill(shpFill);
  8324. fillColor = getGradientFill(shpFill);
  8325. //console.log("shpFill",shpFill,grndColor.color)
  8326. } else if (fillType == "PATTERN_FILL") {
  8327. var shpFill = node["p:spPr"]["a:pattFill"];
  8328. fillColor = getPatternFill(shpFill);
  8329. } else if (fillType == "PIC_FILL") {
  8330. var shpFill = node["p:spPr"]["a:blipFill"];
  8331. fillColor = getPicFill("slideBg", shpFill, warpObj);
  8332. }
  8333. // 2. drawingML namespace
  8334. if (fillColor === undefined) {
  8335. var clrName = getTextByPathList(node, ["p:style", "a:fillRef"]);
  8336. fillColor = getSolidFill(clrName);
  8337. }
  8338. if (fillColor !== undefined) {
  8339. if (fillType == "GRADIENT_FILL") {
  8340. if (isSvgMode) {
  8341. // console.log("GRADIENT_FILL color", fillColor.color[0])
  8342. return fillColor;
  8343. } else {
  8344. var colorAry = fillColor.color;
  8345. var rot = fillColor.rot;
  8346. var bgcolor = "background: linear-gradient(" + rot + "deg,";
  8347. for (var i = 0; i < colorAry.length; i++) {
  8348. if (i == colorAry.length - 1) {
  8349. bgcolor += colorAry[i] + ");";
  8350. } else {
  8351. bgcolor += colorAry[i] + ", ";
  8352. }
  8353. }
  8354. return bgcolor;
  8355. }
  8356. } else if (fillType == "PIC_FILL") {
  8357. if (isSvgMode) {
  8358. return fillColor;
  8359. } else {
  8360. return "background-image:url(" + fillColor + ");";
  8361. }
  8362. } else {
  8363. if (isSvgMode) {
  8364. var color = new colz.Color(fillColor);
  8365. fillColor = color.rgb.toString();
  8366. return fillColor;
  8367. } else {
  8368. //console.log(node,"fillColor: ",fillColor,"fillType: ",fillType,"isSvgMode: ",isSvgMode)
  8369. return "background-color: #" + fillColor + ";";
  8370. }
  8371. }
  8372. } else {
  8373. if (isSvgMode) {
  8374. return "none";
  8375. } else {
  8376. return "background-color: initial;";
  8377. }
  8378. }
  8379. }
  8380. ///////////////////////Amir//////////////////////////////
  8381. function getFillType(node) {
  8382. //Need to test/////////////////////////////////////////////
  8383. //SOLID_FILL
  8384. //PIC_FILL
  8385. //GRADIENT_FILL
  8386. //PATTERN_FILL
  8387. //NO_FILL
  8388. var fillType = "";
  8389. if (node["a:noFill"] !== undefined) {
  8390. fillType = "NO_FILL";
  8391. }
  8392. if (node["a:solidFill"] !== undefined) {
  8393. fillType = "SOLID_FILL";
  8394. }
  8395. if (node["a:gradFill"] !== undefined) {
  8396. fillType = "GRADIENT_FILL";
  8397. }
  8398. if (node["a:pattFill"] !== undefined) {
  8399. fillType = "PATTERN_FILL";
  8400. }
  8401. if (node["a:blipFill"] !== undefined) {
  8402. fillType = "PIC_FILL";
  8403. }
  8404. return fillType;
  8405. }
  8406. function getGradientFill(node) {
  8407. var gsLst = node["a:gsLst"]["a:gs"];
  8408. //get start color
  8409. var color_ary = [];
  8410. var tint_ary = [];
  8411. for (var i = 0; i < gsLst.length; i++) {
  8412. var lo_tint;
  8413. var lo_color = getSolidFill(gsLst[i]);
  8414. if (gsLst[i]["a:srgbClr"] !== undefined) {
  8415. var lumMod = parseInt(getTextByPathList(node, ["a:srgbClr", "a:lumMod", "attrs", "val"])) / 100000;
  8416. var lumOff = parseInt(getTextByPathList(node, ["a:srgbClr", "a:lumOff", "attrs", "val"])) / 100000;
  8417. if (isNaN(lumMod)) {
  8418. lumMod = 1.0;
  8419. }
  8420. if (isNaN(lumOff)) {
  8421. lumOff = 0;
  8422. }
  8423. //console.log([lumMod, lumOff]);
  8424. lo_color = applyLumModify(lo_color, lumMod, lumOff);
  8425. } else if (gsLst[i]["a:schemeClr"] !== undefined) { //a:schemeClr
  8426. var lumMod = parseInt(getTextByPathList(gsLst[i], ["a:schemeClr", "a:lumMod", "attrs", "val"])) / 100000;
  8427. var lumOff = parseInt(getTextByPathList(gsLst[i], ["a:schemeClr", "a:lumOff", "attrs", "val"])) / 100000;
  8428. if (isNaN(lumMod)) {
  8429. lumMod = 1.0;
  8430. }
  8431. if (isNaN(lumOff)) {
  8432. lumOff = 0;
  8433. }
  8434. //console.log([lumMod, lumOff]);
  8435. lo_color = applyLumModify(lo_color, lumMod, lumOff);
  8436. }
  8437. //console.log("lo_color",lo_color)
  8438. color_ary[i] = lo_color;
  8439. }
  8440. //get rot
  8441. var lin = node["a:lin"];
  8442. var rot = 0;
  8443. if (lin !== undefined) {
  8444. rot = angleToDegrees(lin["attrs"]["ang"]) + 90;
  8445. }
  8446. return {
  8447. "color": color_ary,
  8448. "rot": rot
  8449. }
  8450. }
  8451. function getPicFill(type, node, warpObj) {
  8452. //Need to test/////////////////////////////////////////////
  8453. //rId
  8454. //TODO - Image Properties - Tile, Stretch, or Display Portion of Image
  8455. //(http://officeopenxml.com/drwPic-tile.php)
  8456. var img;
  8457. var rId = node["a:blip"]["attrs"]["r:embed"];
  8458. var imgPath;
  8459. if (type == "slideBg") {
  8460. imgPath = getTextByPathList(warpObj, ["slideResObj", rId, "target"]);
  8461. } else if (type == "layoutBg") {
  8462. imgPath = getTextByPathList(warpObj, ["layoutResObj", rId, "target"]);
  8463. } else if (type == "masterBg") {
  8464. imgPath = getTextByPathList(warpObj, ["masterResObj", rId, "target"]);
  8465. }
  8466. imgPath = escapeHtml(imgPath);
  8467. if (imgPath === undefined) {
  8468. return undefined;
  8469. }
  8470. var imgExt = imgPath.split(".").pop();
  8471. if (imgExt == "xml") {
  8472. return undefined;
  8473. }
  8474. var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer();
  8475. var imgMimeType = getMimeType(imgExt);
  8476. img = "data:" + imgMimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer);
  8477. return img;
  8478. }
  8479. function getPatternFill(node) {
  8480. var color = "";
  8481. var fgClr = node["a:fgClr"];
  8482. color = getSolidFill(fgClr);
  8483. return color;
  8484. }
  8485. function getSolidFill(node) {
  8486. if (node === undefined) {
  8487. return undefined;
  8488. }
  8489. var color = "FFF";
  8490. if (node["a:srgbClr"] !== undefined) {
  8491. color = getTextByPathList(node, ["a:srgbClr", "attrs", "val"]); //#...
  8492. } else if (node["a:schemeClr"] !== undefined) { //a:schemeClr
  8493. var schemeClr = getTextByPathList(node, ["a:schemeClr", "attrs", "val"]);
  8494. //console.log(schemeClr)
  8495. color = getSchemeColorFromTheme("a:" + schemeClr, undefined); //#...
  8496. } else if (node["a:scrgbClr"] !== undefined) {
  8497. //<a:scrgbClr r="50%" g="50%" b="50%"/> //Need to test/////////////////////////////////////////////
  8498. var defBultColorVals = node["a:scrgbClr"]["attrs"];
  8499. var red = (defBultColorVals["r"].indexOf("%") != -1) ? defBultColorVals["r"].split("%").shift() : defBultColorVals["r"];
  8500. var green = (defBultColorVals["g"].indexOf("%") != -1) ? defBultColorVals["g"].split("%").shift() : defBultColorVals["g"];
  8501. var blue = (defBultColorVals["b"].indexOf("%") != -1) ? defBultColorVals["b"].split("%").shift() : defBultColorVals["b"];
  8502. var scrgbClr = red + "," + green + "," + blue;
  8503. color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100));
  8504. //console.log("scrgbClr: " + scrgbClr);
  8505. } else if (node["a:prstClr"] !== undefined) {
  8506. //<a:prstClr val="black"/> //Need to test/////////////////////////////////////////////
  8507. var prstClr = node["a:prstClr"]["attrs"]["val"];
  8508. color = getColorName2Hex(prstClr);
  8509. //console.log("prstClr: " + prstClr+" => hexClr: "+color);
  8510. } else if (node["a:hslClr"] !== undefined) {
  8511. //<a:hslClr hue="14400000" sat="100%" lum="50%"/> //Need to test/////////////////////////////////////////////
  8512. var defBultColorVals = node["a:hslClr"]["attrs"];
  8513. var hue = Number(defBultColorVals["hue"]) / 100000;
  8514. var sat = Number((defBultColorVals["sat"].indexOf("%") != -1) ? defBultColorVals["sat"].split("%").shift() : defBultColorVals["sat"]) / 100;
  8515. var lum = Number((defBultColorVals["lum"].indexOf("%") != -1) ? defBultColorVals["lum"].split("%").shift() : defBultColorVals["lum"]) / 100;
  8516. var hslClr = defBultColorVals["hue"] + "," + defBultColorVals["sat"] + "," + defBultColorVals["lum"];
  8517. var hsl2rgb = hslToRgb(hue, sat, lum);
  8518. color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b);
  8519. //defBultColor = cnvrtHslColor2Hex(hslClr); //TODO
  8520. // console.log("hslClr: " + hslClr);
  8521. } else if (node["a:sysClr"] !== undefined) {
  8522. //<a:sysClr val="windowText" lastClr="000000"/> //Need to test/////////////////////////////////////////////
  8523. var sysClr = getTextByPathList(node, ["a:sysClr", "attrs", "lastClr"]);
  8524. if (sysClr !== undefined) {
  8525. color = sysClr;
  8526. }
  8527. }
  8528. return color;
  8529. }
  8530. function toHex(n) {
  8531. var hex = n.toString(16);
  8532. while (hex.length < 2) { hex = "0" + hex; }
  8533. return hex;
  8534. }
  8535. function hslToRgb(hue, sat, light) {
  8536. var t1, t2, r, g, b;
  8537. hue = hue / 60;
  8538. if (light <= 0.5) {
  8539. t2 = light * (sat + 1);
  8540. } else {
  8541. t2 = light + sat - (light * sat);
  8542. }
  8543. t1 = light * 2 - t2;
  8544. r = hueToRgb(t1, t2, hue + 2) * 255;
  8545. g = hueToRgb(t1, t2, hue) * 255;
  8546. b = hueToRgb(t1, t2, hue - 2) * 255;
  8547. return { r: r, g: g, b: b };
  8548. }
  8549. function hueToRgb(t1, t2, hue) {
  8550. if (hue < 0) hue += 6;
  8551. if (hue >= 6) hue -= 6;
  8552. if (hue < 1) return (t2 - t1) * hue + t1;
  8553. else if (hue < 3) return t2;
  8554. else if (hue < 4) return (t2 - t1) * (4 - hue) + t1;
  8555. else return t1;
  8556. }
  8557. function getColorName2Hex(name) {
  8558. var hex;
  8559. var colorName = ['AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'Black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', 'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue', 'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan', 'DarkGoldenRod', 'DarkGray', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon', 'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue', 'SlateGray', 'SlateGrey', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen'];
  8560. var colorHex = ['f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32'];
  8561. var findIndx = colorName.indexOf(name);
  8562. if (findIndx != -1) {
  8563. hex = colorHex[findIndx];
  8564. }
  8565. return hex;
  8566. }
  8567. function getColorOpacity(solidFill) {
  8568. if (solidFill === undefined) {
  8569. return undefined;
  8570. }
  8571. var opcity = 1;
  8572. if (solidFill["a:srgbClr"] !== undefined) {
  8573. var tint = getTextByPathList(solidFill, ["a:srgbClr", "a:tint", "attrs", "val"]);
  8574. if (tint !== undefined) {
  8575. opcity = parseInt(tint) / 100000;
  8576. }
  8577. } else if (solidFill["a:schemeClr"] !== undefined) {
  8578. var tint = getTextByPathList(solidFill, ["a:schemeClr", "a:tint", "attrs", "val"]);
  8579. if (tint !== undefined) {
  8580. opcity = parseInt(tint) / 100000;
  8581. }
  8582. } else if (solidFill["a:scrgbClr"] !== undefined) {
  8583. var tint = getTextByPathList(solidFill, ["a:scrgbClr", "a:tint", "attrs", "val"]);
  8584. if (tint !== undefined) {
  8585. opcity = parseInt(tint) / 100000;
  8586. }
  8587. } else if (solidFill["a:prstClr"] !== undefined) {
  8588. var tint = getTextByPathList(solidFill, ["a:prstClr", "a:tint", "attrs", "val"]);
  8589. if (tint !== undefined) {
  8590. opcity = parseInt(tint) / 100000;
  8591. }
  8592. } else if (solidFill["a:hslClr"] !== undefined) {
  8593. var tint = getTextByPathList(solidFill, ["a:hslClr", "a:tint", "attrs", "val"]);
  8594. if (tint !== undefined) {
  8595. opcity = parseInt(tint) / 100000;
  8596. }
  8597. } else if (solidFill["a:sysClr"] !== undefined) {
  8598. var tint = getTextByPathList(solidFill, ["a:sysClr", "a:tint", "attrs", "val"]);
  8599. if (tint !== undefined) {
  8600. opcity = parseInt(tint) / 100000;
  8601. }
  8602. }
  8603. return opcity;
  8604. }
  8605. function getSchemeColorFromTheme(schemeClr, sldMasterNode) {
  8606. //<p:clrMap ...> in slide master
  8607. // e.g. tx2="dk2" bg2="lt2" tx1="dk1" bg1="lt1" slideLayoutClrOvride
  8608. if (slideLayoutClrOvride == "" || slideLayoutClrOvride === undefined) {
  8609. slideLayoutClrOvride = getTextByPathList(sldMasterNode, ["p:sldMaster", "p:clrMap", "attrs"])
  8610. }
  8611. //console.log(slideLayoutClrOvride);
  8612. var schmClrName = schemeClr.substr(2);
  8613. if (slideLayoutClrOvride !== undefined) {
  8614. switch (schmClrName) {
  8615. case "tx1":
  8616. case "tx2":
  8617. case "bg1":
  8618. case "bg2":
  8619. schemeClr = "a:" + slideLayoutClrOvride[schmClrName];
  8620. //console.log(schmClrName+ "=> "+schemeClr);
  8621. break;
  8622. }
  8623. } else {
  8624. switch (schmClrName) {
  8625. case "tx1":
  8626. schemeClr = "a:dk1";
  8627. break;
  8628. case "tx2":
  8629. schemeClr = "a:dk2";
  8630. break;
  8631. case "bg1":
  8632. schemeClr = "a:lt1";
  8633. break;
  8634. case "bg2":
  8635. schemeClr = "a:lt2";
  8636. break;
  8637. }
  8638. }
  8639. var refNode = getTextByPathList(themeContent, ["a:theme", "a:themeElements", "a:clrScheme", schemeClr]);
  8640. var color = getTextByPathList(refNode, ["a:srgbClr", "attrs", "val"]);
  8641. if (color === undefined && refNode !== undefined) {
  8642. color = getTextByPathList(refNode, ["a:sysClr", "attrs", "lastClr"]);
  8643. }
  8644. //console.log(color)
  8645. return color;
  8646. }
  8647. function extractChartData(serNode) {
  8648. var dataMat = new Array();
  8649. if (serNode === undefined) {
  8650. return dataMat;
  8651. }
  8652. if (serNode["c:xVal"] !== undefined) {
  8653. var dataRow = new Array();
  8654. eachElement(serNode["c:xVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  8655. dataRow.push(parseFloat(innerNode["c:v"]));
  8656. return "";
  8657. });
  8658. dataMat.push(dataRow);
  8659. dataRow = new Array();
  8660. eachElement(serNode["c:yVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  8661. dataRow.push(parseFloat(innerNode["c:v"]));
  8662. return "";
  8663. });
  8664. dataMat.push(dataRow);
  8665. } else {
  8666. eachElement(serNode, function (innerNode, index) {
  8667. var dataRow = new Array();
  8668. var colName = getTextByPathList(innerNode, ["c:tx", "c:strRef", "c:strCache", "c:pt", "c:v"]) || index;
  8669. // Category (string or number)
  8670. var rowNames = {};
  8671. if (getTextByPathList(innerNode, ["c:cat", "c:strRef", "c:strCache", "c:pt"]) !== undefined) {
  8672. eachElement(innerNode["c:cat"]["c:strRef"]["c:strCache"]["c:pt"], function (innerNode, index) {
  8673. rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"];
  8674. return "";
  8675. });
  8676. } else if (getTextByPathList(innerNode, ["c:cat", "c:numRef", "c:numCache", "c:pt"]) !== undefined) {
  8677. eachElement(innerNode["c:cat"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  8678. rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"];
  8679. return "";
  8680. });
  8681. }
  8682. // Value
  8683. if (getTextByPathList(innerNode, ["c:val", "c:numRef", "c:numCache", "c:pt"]) !== undefined) {
  8684. eachElement(innerNode["c:val"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  8685. dataRow.push({ x: innerNode["attrs"]["idx"], y: parseFloat(innerNode["c:v"]) });
  8686. return "";
  8687. });
  8688. }
  8689. dataMat.push({ key: colName, values: dataRow, xlabels: rowNames });
  8690. return "";
  8691. });
  8692. }
  8693. return dataMat;
  8694. }
  8695. // ===== Node functions =====
  8696. /**
  8697. * getTextByPathStr
  8698. * @param {Object} node
  8699. * @param {string} pathStr
  8700. */
  8701. function getTextByPathStr(node, pathStr) {
  8702. return getTextByPathList(node, pathStr.trim().split(/\s+/));
  8703. }
  8704. /**
  8705. * getTextByPathList
  8706. * @param {Object} node
  8707. * @param {string Array} path
  8708. */
  8709. function getTextByPathList(node, path) {
  8710. if (path.constructor !== Array) {
  8711. throw Error("Error of path type! path is not array.");
  8712. }
  8713. if (node === undefined) {
  8714. return undefined;
  8715. }
  8716. var l = path.length;
  8717. for (var i = 0; i < l; i++) {
  8718. node = node[path[i]];
  8719. if (node === undefined) {
  8720. return undefined;
  8721. }
  8722. }
  8723. return node;
  8724. }
  8725. /**
  8726. * eachElement
  8727. * @param {Object} node
  8728. * @param {function} doFunction
  8729. */
  8730. function eachElement(node, doFunction) {
  8731. if (node === undefined) {
  8732. return;
  8733. }
  8734. var result = "";
  8735. if (node.constructor === Array) {
  8736. var l = node.length;
  8737. for (var i = 0; i < l; i++) {
  8738. result += doFunction(node[i], i);
  8739. }
  8740. } else {
  8741. result += doFunction(node, 0);
  8742. }
  8743. return result;
  8744. }
  8745. // ===== Color functions =====
  8746. /**
  8747. * applyShade
  8748. * @param {string} rgbStr
  8749. * @param {number} shadeValue
  8750. */
  8751. function applyShade(rgbStr, shadeValue) {
  8752. var color = new colz.Color(rgbStr);
  8753. color.setLum(color.hsl.l * shadeValue);
  8754. return color.rgb.toString();
  8755. }
  8756. /**
  8757. * applyTint
  8758. * @param {string} rgbStr
  8759. * @param {number} tintValue
  8760. */
  8761. function applyTint(rgbStr, tintValue) {
  8762. var color = new colz.Color(rgbStr);
  8763. color.setLum(color.hsl.l * tintValue + (1 - tintValue));
  8764. return color.rgb.toString();
  8765. }
  8766. /**
  8767. * applyLumModify
  8768. * @param {string} rgbStr
  8769. * @param {number} factor
  8770. * @param {number} offset
  8771. */
  8772. function applyLumModify(rgbStr, factor, offset) {
  8773. var color = new colz.Color(rgbStr);
  8774. //color.setLum(color.hsl.l * factor);
  8775. color.setLum(color.hsl.l * (1 + offset));
  8776. return color.rgb.toString();
  8777. }
  8778. ///////////////////////Amir////////////////
  8779. function angleToDegrees(angle) {
  8780. if (angle == "" || angle == null) {
  8781. return 0;
  8782. }
  8783. return Math.round(angle / 60000);
  8784. }
  8785. function getMimeType(imgFileExt) {
  8786. var mimeType = "";
  8787. //console.log(imgFileExt)
  8788. switch (imgFileExt.toLowerCase()) {
  8789. case "jpg":
  8790. case "jpeg":
  8791. mimeType = "image/jpeg";
  8792. break;
  8793. case "png":
  8794. mimeType = "image/png";
  8795. break;
  8796. case "gif":
  8797. mimeType = "image/gif";
  8798. break;
  8799. case "emf": // Not native support
  8800. mimeType = "image/x-emf";
  8801. break;
  8802. case "wmf": // Not native support
  8803. mimeType = "image/x-wmf";
  8804. break;
  8805. case "svg":
  8806. mimeType = "image/svg+xml";
  8807. break;
  8808. case "mp4":
  8809. mimeType = "video/mp4";
  8810. break;
  8811. case "webm":
  8812. mimeType = "video/webm";
  8813. break;
  8814. case "ogg":
  8815. mimeType = "video/ogg";
  8816. break;
  8817. case "avi":
  8818. mimeType = "video/avi";
  8819. break;
  8820. case "mpg":
  8821. mimeType = "video/mpg";
  8822. break;
  8823. case "wmv":
  8824. mimeType = "video/wmv";
  8825. break;
  8826. case "mp3":
  8827. mimeType = "audio/mpeg";
  8828. break;
  8829. case "wav":
  8830. mimeType = "audio/wav";
  8831. break;
  8832. }
  8833. return mimeType;
  8834. }
  8835. function getSvgGradient(w, h, angl, color_arry, shpId) {
  8836. var stopsArray = getMiddleStops(color_arry.length - 2);
  8837. var svgAngle = '',
  8838. svgHeight = h,
  8839. svgWidth = w,
  8840. svg = '',
  8841. xy_ary = SVGangle(angl, svgHeight, svgWidth),
  8842. x1 = xy_ary[0],
  8843. y1 = xy_ary[1],
  8844. x2 = xy_ary[2],
  8845. y2 = xy_ary[3];
  8846. var sal = stopsArray.length,
  8847. sr = sal < 20 ? 100 : 1000;
  8848. svgAngle = ' gradientUnits="userSpaceOnUse" x1="' + x1 + '%" y1="' + y1 + '%" x2="' + x2 + '%" y2="' + y2 + '%"';
  8849. svgAngle = '<linearGradient id="linGrd_' + shpId + '"' + svgAngle + '>\n';
  8850. svg += svgAngle;
  8851. for (var i = 0; i < sal; i++) {
  8852. svg += '<stop offset="' + Math.round(parseFloat(stopsArray[i]) / 100 * sr) / sr + '" stop-color="' + color_arry[i] + '"';
  8853. svg += '/>\n'
  8854. }
  8855. svg += '</linearGradient>\n' + '';
  8856. return svg
  8857. }
  8858. function getMiddleStops(s) {
  8859. var sArry = ['0%', '100%'];
  8860. if (s == 0) {
  8861. return true
  8862. } else {
  8863. var i = s;
  8864. while (i--) {
  8865. var middleStop = 100 - ((100 / (s + 1)) * (i + 1)), // AM: Ex - For 3 middle stops, progression will be 25%, 50%, and 75%, plus 0% and 100% at the ends.
  8866. middleStopString = middleStop + "%";
  8867. sArry.splice(-1, 0, middleStopString);
  8868. } // AM: add into stopsArray before 100%
  8869. }
  8870. return sArry
  8871. }
  8872. function SVGangle(deg, svgHeight, svgWidth) {
  8873. var w = parseFloat(svgWidth),
  8874. h = parseFloat(svgHeight),
  8875. ang = parseFloat(deg),
  8876. o = 2,
  8877. n = 2,
  8878. wc = w / 2,
  8879. hc = h / 2,
  8880. tx1 = 2,
  8881. ty1 = 2,
  8882. tx2 = 2,
  8883. ty2 = 2,
  8884. k = (((ang % 360) + 360) % 360),
  8885. j = (360 - k) * Math.PI / 180,
  8886. i = Math.tan(j),
  8887. l = hc - i * wc;
  8888. if (k == 0) {
  8889. tx1 = w,
  8890. ty1 = hc,
  8891. tx2 = 0,
  8892. ty2 = hc
  8893. } else if (k < 90) {
  8894. n = w,
  8895. o = 0
  8896. } else if (k == 90) {
  8897. tx1 = wc,
  8898. ty1 = 0,
  8899. tx2 = wc,
  8900. ty2 = h
  8901. } else if (k < 180) {
  8902. n = 0,
  8903. o = 0
  8904. } else if (k == 180) {
  8905. tx1 = 0,
  8906. ty1 = hc,
  8907. tx2 = w,
  8908. ty2 = hc
  8909. } else if (k < 270) {
  8910. n = 0,
  8911. o = h
  8912. } else if (k == 270) {
  8913. tx1 = wc,
  8914. ty1 = h,
  8915. tx2 = wc,
  8916. ty2 = 0
  8917. } else {
  8918. n = w,
  8919. o = h;
  8920. }
  8921. // AM: I could not quite figure out what m, n, and o are supposed to represent from the original code on visualcsstools.com.
  8922. var m = o + (n / i),
  8923. tx1 = tx1 == 2 ? i * (m - l) / (Math.pow(i, 2) + 1) : tx1,
  8924. ty1 = ty1 == 2 ? i * tx1 + l : ty1,
  8925. tx2 = tx2 == 2 ? w - tx1 : tx2,
  8926. ty2 = ty2 == 2 ? h - ty1 : ty2,
  8927. x1 = Math.round(tx2 / w * 100 * 100) / 100,
  8928. y1 = Math.round(ty2 / h * 100 * 100) / 100,
  8929. x2 = Math.round(tx1 / w * 100 * 100) / 100,
  8930. y2 = Math.round(ty1 / h * 100 * 100) / 100;
  8931. return [x1, y1, x2, y2];
  8932. }
  8933. function getSvgImagePattern(fillColor, shpId) {
  8934. var ptrn = '<pattern id="imgPtrn_' + shpId + '" patternContentUnits="objectBoundingBox" width="1" height="1">';
  8935. //console.log("fillColor: ", fillColor)
  8936. fillColor = escapeHtml(fillColor);
  8937. ptrn += '<image xlink:href="' + fillColor + '" preserveAspectRatio="none" width="1" height="1"></image>';
  8938. ptrn += '</pattern>';
  8939. return ptrn;
  8940. }
  8941. function processMsgQueue(queue) {
  8942. for (var i = 0; i < queue.length; i++) {
  8943. processSingleMsg(queue[i].data);
  8944. }
  8945. }
  8946. function processSingleMsg(d) {
  8947. var chartID = d.chartID;
  8948. var chartType = d.chartType;
  8949. var chartData = d.chartData;
  8950. var data = [];
  8951. var chart = null;
  8952. switch (chartType) {
  8953. case "lineChart":
  8954. data = chartData;
  8955. chart = nv.models.lineChart()
  8956. .useInteractiveGuideline(true);
  8957. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  8958. break;
  8959. case "barChart":
  8960. data = chartData;
  8961. chart = nv.models.multiBarChart();
  8962. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  8963. break;
  8964. case "pieChart":
  8965. case "pie3DChart":
  8966. data = chartData[0].values;
  8967. chart = nv.models.pieChart();
  8968. break;
  8969. case "areaChart":
  8970. data = chartData;
  8971. chart = nv.models.stackedAreaChart()
  8972. .clipEdge(true)
  8973. .useInteractiveGuideline(true);
  8974. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  8975. break;
  8976. case "scatterChart":
  8977. for (var i = 0; i < chartData.length; i++) {
  8978. var arr = [];
  8979. for (var j = 0; j < chartData[i].length; j++) {
  8980. arr.push({ x: j, y: chartData[i][j] });
  8981. }
  8982. data.push({ key: 'data' + (i + 1), values: arr });
  8983. }
  8984. //data = chartData;
  8985. chart = nv.models.scatterChart()
  8986. .showDistX(true)
  8987. .showDistY(true)
  8988. .color(d3.scale.category10().range());
  8989. chart.xAxis.axisLabel('X').tickFormat(d3.format('.02f'));
  8990. chart.yAxis.axisLabel('Y').tickFormat(d3.format('.02f'));
  8991. break;
  8992. default:
  8993. }
  8994. if (chart !== null) {
  8995. d3.select("#" + chartID)
  8996. .append("svg")
  8997. .datum(data)
  8998. .transition().duration(500)
  8999. .call(chart);
  9000. nv.utils.windowResize(chart.update);
  9001. isDone = true;
  9002. }
  9003. }
  9004. function setNumericBullets(elem) {
  9005. var prgrphs_arry = elem;
  9006. for (var i = 0; i < prgrphs_arry.length; i++) {
  9007. var buSpan = $(prgrphs_arry[i]).find('.numeric-bullet-style');
  9008. if (buSpan.length > 0) {
  9009. //console.log("DIV-"+i+":");
  9010. var prevBultTyp = "";
  9011. var prevBultLvl = "";
  9012. var buletIndex = 0;
  9013. var tmpArry = new Array();
  9014. var tmpArryIndx = 0;
  9015. var buletTypSrry = new Array();
  9016. for (var j = 0; j < buSpan.length; j++) {
  9017. var bult_typ = $(buSpan[j]).data("bulltname");
  9018. var bult_lvl = $(buSpan[j]).data("bulltlvl");
  9019. //console.log(j+" - "+bult_typ+" lvl: "+bult_lvl );
  9020. if (buletIndex == 0) {
  9021. prevBultTyp = bult_typ;
  9022. prevBultLvl = bult_lvl;
  9023. tmpArry[tmpArryIndx] = buletIndex;
  9024. buletTypSrry[tmpArryIndx] = bult_typ;
  9025. buletIndex++;
  9026. } else {
  9027. if (bult_typ == prevBultTyp && bult_lvl == prevBultLvl) {
  9028. prevBultTyp = bult_typ;
  9029. prevBultLvl = bult_lvl;
  9030. buletIndex++;
  9031. tmpArry[tmpArryIndx] = buletIndex;
  9032. buletTypSrry[tmpArryIndx] = bult_typ;
  9033. } else if (bult_typ != prevBultTyp && bult_lvl == prevBultLvl) {
  9034. prevBultTyp = bult_typ;
  9035. prevBultLvl = bult_lvl;
  9036. tmpArryIndx++;
  9037. tmpArry[tmpArryIndx] = buletIndex;
  9038. buletTypSrry[tmpArryIndx] = bult_typ;
  9039. buletIndex = 1;
  9040. } else if (bult_typ != prevBultTyp && Number(bult_lvl) > Number(prevBultLvl)) {
  9041. prevBultTyp = bult_typ;
  9042. prevBultLvl = bult_lvl;
  9043. tmpArryIndx++;
  9044. tmpArry[tmpArryIndx] = buletIndex;
  9045. buletTypSrry[tmpArryIndx] = bult_typ;
  9046. buletIndex = 1;
  9047. } else if (bult_typ != prevBultTyp && Number(bult_lvl) < Number(prevBultLvl)) {
  9048. prevBultTyp = bult_typ;
  9049. prevBultLvl = bult_lvl;
  9050. tmpArryIndx--;
  9051. buletIndex = tmpArry[tmpArryIndx] + 1;
  9052. }
  9053. }
  9054. //console.log(buletTypSrry[tmpArryIndx]+" - "+buletIndex);
  9055. var numIdx = getNumTypeNum(buletTypSrry[tmpArryIndx], buletIndex);
  9056. $(buSpan[j]).html(numIdx);
  9057. }
  9058. }
  9059. }
  9060. }
  9061. function getNumTypeNum(numTyp, num) {
  9062. var rtrnNum = "";
  9063. switch (numTyp) {
  9064. case "arabicPeriod":
  9065. rtrnNum = num + ". ";
  9066. break;
  9067. case "arabicParenR":
  9068. rtrnNum = num + ") ";
  9069. break;
  9070. case "alphaLcParenR":
  9071. rtrnNum = alphaNumeric(num, "lowerCase") + ") ";
  9072. break;
  9073. case "alphaLcPeriod":
  9074. rtrnNum = alphaNumeric(num, "lowerCase") + ". ";
  9075. break;
  9076. case "alphaUcParenR":
  9077. rtrnNum = alphaNumeric(num, "upperCase") + ") ";
  9078. break;
  9079. case "alphaUcPeriod":
  9080. rtrnNum = alphaNumeric(num, "upperCase") + ". ";
  9081. break;
  9082. case "romanUcPeriod":
  9083. rtrnNum = romanize(num) + ". ";
  9084. break;
  9085. case "romanLcParenR":
  9086. rtrnNum = romanize(num) + ") ";
  9087. break;
  9088. case "hebrew2Minus":
  9089. rtrnNum = hebrew2Minus.format(num) + "-";
  9090. break;
  9091. default:
  9092. rtrnNum = num;
  9093. }
  9094. return rtrnNum;
  9095. }
  9096. function romanize(num) {
  9097. if (!+num)
  9098. return false;
  9099. var digits = String(+num).split(""),
  9100. key = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM",
  9101. "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC",
  9102. "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
  9103. roman = "",
  9104. i = 3;
  9105. while (i--)
  9106. roman = (key[+digits.pop() + (i * 10)] || "") + roman;
  9107. return Array(+digits.join("") + 1).join("M") + roman;
  9108. }
  9109. var hebrew2Minus = archaicNumbers([
  9110. [1000, ''],
  9111. [400, 'ת'],
  9112. [300, 'ש'],
  9113. [200, 'ר'],
  9114. [100, 'ק'],
  9115. [90, 'צ'],
  9116. [80, 'פ'],
  9117. [70, 'ע'],
  9118. [60, 'ס'],
  9119. [50, 'נ'],
  9120. [40, 'מ'],
  9121. [30, 'ל'],
  9122. [20, 'כ'],
  9123. [10, 'י'],
  9124. [9, 'ט'],
  9125. [8, 'ח'],
  9126. [7, 'ז'],
  9127. [6, 'ו'],
  9128. [5, 'ה'],
  9129. [4, 'ד'],
  9130. [3, 'ג'],
  9131. [2, 'ב'],
  9132. [1, 'א'],
  9133. [/יה/, 'ט״ו'],
  9134. [/יו/, 'ט״ז'],
  9135. [/([א-ת])([א-ת])$/, '$1״$2'],
  9136. [/^([א-ת])$/, "$1׳"]
  9137. ]);
  9138. function archaicNumbers(arr) {
  9139. var arrParse = arr.slice().sort(function (a, b) { return b[1].length - a[1].length });
  9140. return {
  9141. format: function (n) {
  9142. var ret = '';
  9143. jQuery.each(arr, function () {
  9144. var num = this[0];
  9145. if (parseInt(num) > 0) {
  9146. for (; n >= num; n -= num) ret += this[1];
  9147. } else {
  9148. ret = ret.replace(num, this[1]);
  9149. }
  9150. });
  9151. return ret;
  9152. }
  9153. }
  9154. }
  9155. function alphaNumeric(num, upperLower) {
  9156. num = Number(num) - 1;
  9157. var aNum = "";
  9158. if (upperLower == "upperCase") {
  9159. aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toUpperCase();
  9160. } else if (upperLower == "lowerCase") {
  9161. aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toLowerCase();
  9162. }
  9163. return aNum;
  9164. }
  9165. function base64ArrayBuffer(arrayBuffer) {
  9166. var base64 = '';
  9167. var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  9168. var bytes = new Uint8Array(arrayBuffer);
  9169. var byteLength = bytes.byteLength;
  9170. var byteRemainder = byteLength % 3;
  9171. var mainLength = byteLength - byteRemainder;
  9172. var a, b, c, d;
  9173. var chunk;
  9174. for (var i = 0; i < mainLength; i = i + 3) {
  9175. chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
  9176. a = (chunk & 16515072) >> 18;
  9177. b = (chunk & 258048) >> 12;
  9178. c = (chunk & 4032) >> 6;
  9179. d = chunk & 63;
  9180. base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];
  9181. }
  9182. if (byteRemainder == 1) {
  9183. chunk = bytes[mainLength];
  9184. a = (chunk & 252) >> 2;
  9185. b = (chunk & 3) << 4;
  9186. base64 += encodings[a] + encodings[b] + '==';
  9187. } else if (byteRemainder == 2) {
  9188. chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];
  9189. a = (chunk & 64512) >> 10;
  9190. b = (chunk & 1008) >> 4;
  9191. c = (chunk & 15) << 2;
  9192. base64 += encodings[a] + encodings[b] + encodings[c] + '=';
  9193. }
  9194. return base64;
  9195. }
  9196. function extractFileExtension(filename) {
  9197. return filename.substr((~-filename.lastIndexOf(".") >>> 0) + 2);
  9198. }
  9199. function escapeHtml(text) {
  9200. var map = {
  9201. '&': '&amp;',
  9202. '<': '&lt;',
  9203. '>': '&gt;',
  9204. '"': '&quot;',
  9205. "'": '&#039;'
  9206. };
  9207. return text.replace(/[&<>"']/g, function (m) { return map[m]; });
  9208. }
  9209. /////////////////////////////////////tXml///////////////////////////
  9210. /*
  9211. This is my custom tXml.js file
  9212. */
  9213. function tXml(t, r) { "use strict"; function e() { for (var r = []; t[l];)if (t.charCodeAt(l) == s) { if (t.charCodeAt(l + 1) === h) return l = t.indexOf(u, l), l + 1 && (l += 1), r; if (t.charCodeAt(l + 1) === v) { if (t.charCodeAt(l + 2) == m) { for (; -1 !== l && (t.charCodeAt(l) !== d || t.charCodeAt(l - 1) != m || t.charCodeAt(l - 2) != m || -1 == l);)l = t.indexOf(u, l + 1); -1 === l && (l = t.length) } else for (l += 2; t.charCodeAt(l) !== d && t[l];)l++; l++; continue } var e = a(); r.push(e) } else { var i = n(); i.trim().length > 0 && r.push(i), l++ } return r } function n() { var r = l; return l = t.indexOf(c, l) - 1, -2 === l && (l = t.length), t.slice(r, l + 1) } function i() { for (var r = l; -1 === A.indexOf(t[l]) && t[l];)l++; return t.slice(r, l) } function a() { var r = {}; l++, r.tagName = i(); for (var n = !1; t.charCodeAt(l) !== d && t[l];) { var a = t.charCodeAt(l); if (a > 64 && 91 > a || a > 96 && 123 > a) { for (var f = i(), c = t.charCodeAt(l); c && c !== p && c !== g && !(c > 64 && 91 > c || c > 96 && 123 > c) && c !== d;)l++, c = t.charCodeAt(l); if (n || (r.attributes = {}, n = !0), c === p || c === g) { var s = o(); if (-1 === l) return r } else s = null, l--; r.attributes[f] = s } l++ } if (t.charCodeAt(l - 1) !== h) if ("script" == r.tagName) { var u = l + 1; l = t.indexOf("</script>", l), r.children = [t.slice(u, l - 1)], l += 8 } else if ("style" == r.tagName) { var u = l + 1; l = t.indexOf("</style>", l), r.children = [t.slice(u, l - 1)], l += 7 } else -1 == C.indexOf(r.tagName) && (l++, r.children = e(f)); else l++; return r } function o() { var r = t[l], e = ++l; return l = t.indexOf(r, e), t.slice(e, l) } function f() { var e = new RegExp("\\s" + r.attrName + "\\s*=['\"]" + r.attrValue + "['\"]").exec(t); return e ? e.index : -1 } r = r || {}; var l = r.pos || 0, c = "<", s = "<".charCodeAt(0), u = ">", d = ">".charCodeAt(0), m = "-".charCodeAt(0), h = "/".charCodeAt(0), v = "!".charCodeAt(0), p = "'".charCodeAt(0), g = '"'.charCodeAt(0), A = "\n >/= ", C = ["img", "br", "input", "meta", "link"], y = null; if (void 0 !== r.attrValue) { r.attrName = r.attrName || "id"; for (var y = []; -1 !== (l = f());)l = t.lastIndexOf("<", l), -1 !== l && y.push(a()), t = t.substr(l), l = 0 } else y = r.parseNode ? a() : e(); return r.filter && (y = tXml.filter(y, r.filter)), r.simplify && (y = tXml.simplify(y)), y.pos = l, y } var _order = 1; tXml.simplify = function (t) { var r = {}; if (void 0 === t) return {}; if (1 === t.length && "string" == typeof t[0]) return t[0]; t.forEach(function (t) { if ("object" == typeof t) { r[t.tagName] || (r[t.tagName] = []); var e = tXml.simplify(t.children || []); r[t.tagName].push(e), t.attributes && (e.attrs = t.attributes), void 0 === e.attrs ? e.attrs = { order: _order } : e.attrs.order = _order, _order++ } }); for (var e in r) 1 == r[e].length && (r[e] = r[e][0]); return r }, tXml.filter = function (t, r) { var e = []; return t.forEach(function (t) { if ("object" == typeof t && r(t) && e.push(t), t.children) { var n = tXml.filter(t.children, r); e = e.concat(n) } }), e }, tXml.stringify = function (t) { function r(t) { if (t) for (var r = 0; r < t.length; r++)"string" == typeof t[r] ? n += t[r].trim() : e(t[r]) } function e(t) { n += "<" + t.tagName; for (var e in t.attributes) n += null === t.attributes[e] ? " " + e : -1 === t.attributes[e].indexOf('"') ? " " + e + '="' + t.attributes[e].trim() + '"' : " " + e + "='" + t.attributes[e].trim() + "'"; n += ">", r(t.children), n += "</" + t.tagName + ">" } var n = ""; return r(t), n }, tXml.toContentString = function (t) { if (Array.isArray(t)) { var r = ""; return t.forEach(function (t) { r += " " + tXml.toContentString(t), r = r.trim() }), r } return "object" == typeof t ? tXml.toContentString(t.children) : " " + t }, tXml.getElementById = function (t, r, e) { var n = tXml(t, { attrValue: r, simplify: e }); return e ? n : n[0] }, tXml.getElementsByClassName = function (t, r, e) { return tXml(t, { attrName: "class", attrValue: "[a-zA-Z0-9-s ]*" + r + "[a-zA-Z0-9-s ]*", simplify: e }) }, tXml.parseStream = function (t, r) { if ("function" == typeof r && (cb = r, r = 0), "string" == typeof r && (r = r.length + 2), "string" == typeof t) { var e = require("fs"); t = e.createReadStream(t, { start: r }), r = 0 } var n = r, i = "", a = 0; return t.on("data", function (r) { a++, i += r; for (var e = 0; ;) { n = i.indexOf("<", n) + 1; var o = tXml(i, { pos: n, parseNode: !0 }); if (n = o.pos, n > i.length - 1 || e > n) return void (e && (i = i.slice(e), n = 0, e = 0)); t.emit("xml", o), e = n } i = i.slice(n), n = 0 }), t.on("end", function () { console.log("end") }), t }, "object" == typeof module && (module.exports = tXml);
  9214. };
  9215. /*!
  9216. JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
  9217. <http://stuk.github.io/jszip-utils>
  9218. (c) 2014 Stuart Knightley, David Duponchel
  9219. Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
  9220. */
  9221. !function (a) { "object" == typeof exports ? module.exports = a() : "function" == typeof define && define.amd ? define(a) : "undefined" != typeof window ? window.JSZipUtils = a() : "undefined" != typeof global ? global.JSZipUtils = a() : "undefined" != typeof self && (self.JSZipUtils = a()) }(function () { return function a(b, c, d) { function e(g, h) { if (!c[g]) { if (!b[g]) { var i = "function" == typeof require && require; if (!h && i) return i(g, !0); if (f) return f(g, !0); throw new Error("Cannot find module '" + g + "'") } var j = c[g] = { exports: {} }; b[g][0].call(j.exports, function (a) { var c = b[g][1][a]; return e(c ? c : a) }, j, j.exports, a, b, c, d) } return c[g].exports } for (var f = "function" == typeof require && require, g = 0; g < d.length; g++)e(d[g]); return e }({ 1: [function (a, b) { "use strict"; function c() { try { return new window.XMLHttpRequest } catch (a) { } } function d() { try { return new window.ActiveXObject("Microsoft.XMLHTTP") } catch (a) { } } var e = {}; e._getBinaryFromXHR = function (a) { return a.response || a.responseText }; var f = window.ActiveXObject ? function () { return c() || d() } : c; e.getBinaryContent = function (a, b) { try { var c = f(); c.open("GET", a, !0), "responseType" in c && (c.responseType = "arraybuffer"), c.overrideMimeType && c.overrideMimeType("text/plain; charset=x-user-defined"), c.onreadystatechange = function () { var d, f; if (4 === c.readyState) if (200 === c.status || 0 === c.status) { d = null, f = null; try { d = e._getBinaryFromXHR(c) } catch (g) { f = new Error(g) } b(f, d) } else b(new Error("Ajax error for " + a + " : " + this.status + " " + this.statusText), null) }, c.send() } catch (d) { b(new Error(d), null) } }, b.exports = e }, {}] }, {}, [1])(1) });
  9222. /**
  9223. * Colorz (or Colz) is a Javascript "library" to help
  9224. * in color conversion between the usual color-spaces
  9225. * Hex - Rgb - Hsl / Hsv - Hsb
  9226. *
  9227. * It provides some helpers to output Canvas / CSS
  9228. * color strings.
  9229. *
  9230. * by Carlos Cabo 2013
  9231. * http://carloscabo.com
  9232. *
  9233. * Some formulas borrowed from Wikipedia or other authors.
  9234. */
  9235. (function (name, definition) {
  9236. if (typeof define === "function") {
  9237. define(definition);
  9238. } else if (typeof module !== "undefined" && module.exports) {
  9239. module.exports = definition();
  9240. } else {
  9241. var theModule = definition(),
  9242. global = this,
  9243. old = global[name];
  9244. theModule.noConflict = function () {
  9245. global[name] = old;
  9246. return theModule;
  9247. };
  9248. global[name] = theModule;
  9249. }
  9250. })("colz", function () {
  9251. var round = Math.round,
  9252. toString = "toString",
  9253. colz = colz || {},
  9254. Rgb,
  9255. Rgba,
  9256. Hsl,
  9257. Hsla,
  9258. Color,
  9259. ColorScheme,
  9260. hexToRgb,
  9261. componentToHex,
  9262. rgbToHex,
  9263. rgbToHsl,
  9264. hue2rgb,
  9265. hslToRgb,
  9266. rgbToHsb,
  9267. hsbToRgb,
  9268. hsbToHsl,
  9269. hsvToHsl,
  9270. hsvToRgb,
  9271. randomColor;
  9272. Rgb = colz.Rgb = function (col) {
  9273. this.r = col[0];
  9274. this.g = col[1];
  9275. this.b = col[2];
  9276. };
  9277. Rgb.prototype[toString] = function () {
  9278. return "rgb(" + this.r + "," + this.g + "," + this.b + ")";
  9279. };
  9280. Rgba = colz.Rgba = function (col) {
  9281. this.r = col[0];
  9282. this.g = col[1];
  9283. this.b = col[2];
  9284. this.a = col[3];
  9285. };
  9286. Rgba.prototype[toString] = function () {
  9287. return (
  9288. "rgba(" + this.r + "," + this.g + "," + this.b + "," + this.a + ")"
  9289. );
  9290. };
  9291. Hsl = colz.Hsl = function (col) {
  9292. this.h = col[0];
  9293. this.s = col[1];
  9294. this.l = col[2];
  9295. };
  9296. Hsl.prototype[toString] = function () {
  9297. return "hsl(" + this.h + "," + this.s + "%," + this.l + "%)";
  9298. };
  9299. Hsla = colz.Hsla = function (col) {
  9300. this.h = col[0];
  9301. this.s = col[1];
  9302. this.l = col[2];
  9303. this.a = col[3];
  9304. };
  9305. Hsla.prototype[toString] = function () {
  9306. return (
  9307. "hsla(" + this.h + "," + this.s + "%," + this.l + "%," + this.a + ")"
  9308. );
  9309. };
  9310. Color = colz.Color = function () {
  9311. this.hex = this.r = this.g = this.b = this.h = this.s = this.l = this.a = this.hsl = this.hsla = this.rgb = this.rgba = null;
  9312. this.init(arguments);
  9313. };
  9314. var colorPrototype = Color.prototype;
  9315. colorPrototype.init = function (arg) {
  9316. var _this = this;
  9317. if (typeof arg[0] === "string") {
  9318. if (arg[0].charAt(0) !== "#") {
  9319. arg[0] = "#" + arg[0];
  9320. }
  9321. if (arg[0].length < 7) {
  9322. arg[0] =
  9323. "#" +
  9324. arg[0][1] +
  9325. arg[0][1] +
  9326. arg[0][2] +
  9327. arg[0][2] +
  9328. arg[0][3] +
  9329. arg[0][3];
  9330. }
  9331. _this.hex = arg[0].toLowerCase();
  9332. _this.rgb = new Rgb(hexToRgb(_this.hex));
  9333. _this.r = _this.rgb.r;
  9334. _this.g = _this.rgb.g;
  9335. _this.b = _this.rgb.b;
  9336. _this.a = 1;
  9337. _this.rgba = new Rgba([_this.r, _this.g, _this.b, _this.a]);
  9338. }
  9339. if (typeof arg[0] === "number") {
  9340. _this.r = arg[0];
  9341. _this.g = arg[1];
  9342. _this.b = arg[2];
  9343. if (typeof arg[3] === "undefined") {
  9344. _this.a = 1;
  9345. } else {
  9346. _this.a = arg[3];
  9347. }
  9348. _this.rgb = new Rgb([_this.r, _this.g, _this.b]);
  9349. _this.rgba = new Rgba([_this.r, _this.g, _this.b, _this.a]);
  9350. _this.hex = rgbToHex([_this.r, _this.g, _this.b]);
  9351. }
  9352. if (arg[0] instanceof Array) {
  9353. _this.r = arg[0][0];
  9354. _this.g = arg[0][1];
  9355. _this.b = arg[0][2];
  9356. if (typeof arg[0][3] === "undefined") {
  9357. _this.a = 1;
  9358. } else {
  9359. _this.a = arg[0][3];
  9360. }
  9361. _this.rgb = new Rgb([_this.r, _this.g, _this.b]);
  9362. _this.rgba = new Rgba([_this.r, _this.g, _this.b, _this.a]);
  9363. _this.hex = rgbToHex([_this.r, _this.g, _this.b]);
  9364. }
  9365. _this.hsl = new Hsl(colz.rgbToHsl([_this.r, _this.g, _this.b]));
  9366. _this.h = _this.hsl.h;
  9367. _this.s = _this.hsl.s;
  9368. _this.l = _this.hsl.l;
  9369. _this.hsla = new Hsla([_this.h, _this.s, _this.l, _this.a]);
  9370. };
  9371. colorPrototype.setHue = function (newhue) {
  9372. var _this = this;
  9373. _this.h = newhue;
  9374. _this.hsl.h = newhue;
  9375. _this.hsla.h = newhue;
  9376. _this.updateFromHsl();
  9377. };
  9378. colorPrototype.setSat = function (newsat) {
  9379. var _this = this;
  9380. _this.s = newsat;
  9381. _this.hsl.s = newsat;
  9382. _this.hsla.s = newsat;
  9383. _this.updateFromHsl();
  9384. };
  9385. colorPrototype.setLum = function (newlum) {
  9386. var _this = this;
  9387. _this.l = newlum;
  9388. _this.hsl.l = newlum;
  9389. _this.hsla.l = newlum;
  9390. _this.updateFromHsl();
  9391. };
  9392. colorPrototype.setAlpha = function (newalpha) {
  9393. this.a = newalpha;
  9394. this.hsla.a = newalpha;
  9395. this.rgba.a = newalpha;
  9396. };
  9397. colorPrototype.updateFromHsl = function () {
  9398. this.rgb = null;
  9399. this.rgb = new Rgb(colz.hslToRgb([this.h, this.s, this.l]));
  9400. this.r = this.rgb.r;
  9401. this.g = this.rgb.g;
  9402. this.b = this.rgb.b;
  9403. this.rgba.r = this.rgb.r;
  9404. this.rgba.g = this.rgb.g;
  9405. this.rgba.b = this.rgb.b;
  9406. this.hex = null;
  9407. this.hex = rgbToHex([this.r, this.g, this.b]);
  9408. };
  9409. randomColor = colz.randomColor = function () {
  9410. var r = "#" + Math.random().toString(16).slice(2, 8);
  9411. return new Color(r);
  9412. };
  9413. hexToRgb = colz.hexToRgb = function (hex) {
  9414. var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  9415. return result
  9416. ? [
  9417. parseInt(result[1], 16),
  9418. parseInt(result[2], 16),
  9419. parseInt(result[3], 16)
  9420. ]
  9421. : null;
  9422. };
  9423. componentToHex = colz.componentToHex = function (c) {
  9424. var hex = c.toString(16);
  9425. return hex.length === 1 ? "0" + hex : hex;
  9426. };
  9427. rgbToHex = colz.rgbToHex = function () {
  9428. var arg, r, g, b;
  9429. arg = arguments;
  9430. if (arg.length > 1) {
  9431. r = arg[0];
  9432. g = arg[1];
  9433. b = arg[2];
  9434. } else {
  9435. r = arg[0][0];
  9436. g = arg[0][1];
  9437. b = arg[0][2];
  9438. }
  9439. return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
  9440. };
  9441. rgbToHsl = colz.rgbToHsl = function () {
  9442. var arg, r, g, b, h, s, l, d, max, min;
  9443. arg = arguments;
  9444. if (typeof arg[0] === "number") {
  9445. r = arg[0];
  9446. g = arg[1];
  9447. b = arg[2];
  9448. } else {
  9449. r = arg[0][0];
  9450. g = arg[0][1];
  9451. b = arg[0][2];
  9452. }
  9453. r /= 255;
  9454. g /= 255;
  9455. b /= 255;
  9456. max = Math.max(r, g, b);
  9457. min = Math.min(r, g, b);
  9458. l = (max + min) / 2;
  9459. if (max === min) {
  9460. h = s = 0;
  9461. } else {
  9462. d = max - min;
  9463. s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
  9464. switch (max) {
  9465. case r:
  9466. h = (g - b) / d + (g < b ? 6 : 0);
  9467. break;
  9468. case g:
  9469. h = (b - r) / d + 2;
  9470. break;
  9471. case b:
  9472. h = (r - g) / d + 4;
  9473. break;
  9474. }
  9475. h /= 6;
  9476. }
  9477. h = round(h * 360);
  9478. s = round(s * 100);
  9479. l = round(l * 100);
  9480. return [h, s, l];
  9481. };
  9482. hue2rgb = colz.hue2rgb = function (p, q, t) {
  9483. if (t < 0) {
  9484. t += 1;
  9485. }
  9486. if (t > 1) {
  9487. t -= 1;
  9488. }
  9489. if (t < 1 / 6) {
  9490. return p + (q - p) * 6 * t;
  9491. }
  9492. if (t < 1 / 2) {
  9493. return q;
  9494. }
  9495. if (t < 2 / 3) {
  9496. return p + (q - p) * (2 / 3 - t) * 6;
  9497. }
  9498. return p;
  9499. };
  9500. hslToRgb = colz.hslToRgb = function () {
  9501. var arg, r, g, b, h, s, l, q, p;
  9502. arg = arguments;
  9503. if (typeof arg[0] === "number") {
  9504. h = arg[0] / 360;
  9505. s = arg[1] / 100;
  9506. l = arg[2] / 100;
  9507. } else {
  9508. h = arg[0][0] / 360;
  9509. s = arg[0][1] / 100;
  9510. l = arg[0][2] / 100;
  9511. }
  9512. if (s === 0) {
  9513. r = g = b = l;
  9514. } else {
  9515. q = l < 0.5 ? l * (1 + s) : l + s - l * s;
  9516. p = 2 * l - q;
  9517. r = colz.hue2rgb(p, q, h + 1 / 3);
  9518. g = colz.hue2rgb(p, q, h);
  9519. b = colz.hue2rgb(p, q, h - 1 / 3);
  9520. }
  9521. return [round(r * 255), round(g * 255), round(b * 255)];
  9522. };
  9523. rgbToHsb = colz.rgbToHsb = function (r, g, b) {
  9524. var max, min, h, s, v, d;
  9525. r = r / 255;
  9526. g = g / 255;
  9527. b = b / 255;
  9528. max = Math.max(r, g, b);
  9529. min = Math.min(r, g, b);
  9530. v = max;
  9531. d = max - min;
  9532. s = max === 0 ? 0 : d / max;
  9533. if (max === min) {
  9534. h = 0;
  9535. } else {
  9536. switch (max) {
  9537. case r:
  9538. h = (g - b) / d + (g < b ? 6 : 0);
  9539. break;
  9540. case g:
  9541. h = (b - r) / d + 2;
  9542. break;
  9543. case b:
  9544. h = (r - g) / d + 4;
  9545. break;
  9546. }
  9547. h /= 6;
  9548. }
  9549. h = round(h * 360);
  9550. s = round(s * 100);
  9551. v = round(v * 100);
  9552. return [h, s, v];
  9553. };
  9554. hsbToRgb = colz.hsbToRgb = function (h, s, v) {
  9555. var r, g, b, i, f, p, q, t;
  9556. if (v === 0) {
  9557. return [0, 0, 0];
  9558. }
  9559. s = s / 100;
  9560. v = v / 100;
  9561. h = h / 60;
  9562. i = Math.floor(h);
  9563. f = h - i;
  9564. p = v * (1 - s);
  9565. q = v * (1 - s * f);
  9566. t = v * (1 - s * (1 - f));
  9567. if (i === 0) {
  9568. r = v;
  9569. g = t;
  9570. b = p;
  9571. } else if (i === 1) {
  9572. r = q;
  9573. g = v;
  9574. b = p;
  9575. } else if (i === 2) {
  9576. r = p;
  9577. g = v;
  9578. b = t;
  9579. } else if (i === 3) {
  9580. r = p;
  9581. g = q;
  9582. b = v;
  9583. } else if (i === 4) {
  9584. r = t;
  9585. g = p;
  9586. b = v;
  9587. } else if (i === 5) {
  9588. r = v;
  9589. g = p;
  9590. b = q;
  9591. }
  9592. r = Math.floor(r * 255);
  9593. g = Math.floor(g * 255);
  9594. b = Math.floor(b * 255);
  9595. return [r, g, b];
  9596. };
  9597. hsbToHsl = colz.hsbToHsl = function (h, s, b) {
  9598. return colz.rgbToHsl(colz.hsbToRgb(h, s, b));
  9599. };
  9600. hsvToHsl = colz.hsvToHsl = colz.hsbToHsl;
  9601. hsvToRgb = colz.hsvToRgb = colz.hsbToRgb;
  9602. ColorScheme = colz.ColorScheme = function (color_val, angle_array) {
  9603. this.palette = [];
  9604. if (angle_array === undefined && color_val instanceof Array) {
  9605. this.createFromColors(color_val);
  9606. } else {
  9607. this.createFromAngles(color_val, angle_array);
  9608. }
  9609. };
  9610. var colorSchemePrototype = ColorScheme.prototype;
  9611. colorSchemePrototype.createFromColors = function (color_val) {
  9612. for (var i in color_val) {
  9613. if (color_val.hasOwnProperty(i)) {
  9614. this.palette.push(new Color(color_val[i]));
  9615. }
  9616. }
  9617. return this.palette;
  9618. };
  9619. colorSchemePrototype.createFromAngles = function (color_val, angle_array) {
  9620. this.palette.push(new Color(color_val));
  9621. for (var i in angle_array) {
  9622. if (angle_array.hasOwnProperty(i)) {
  9623. var tempHue = (this.palette[0].h + angle_array[i]) % 360;
  9624. this.palette.push(
  9625. new Color(
  9626. colz.hslToRgb([tempHue, this.palette[0].s, this.palette[0].l])
  9627. )
  9628. );
  9629. }
  9630. }
  9631. return this.palette;
  9632. };
  9633. ColorScheme.Compl = function (color_val) {
  9634. return new ColorScheme(color_val, [180]);
  9635. };
  9636. ColorScheme.Triad = function (color_val) {
  9637. return new ColorScheme(color_val, [120, 240]);
  9638. };
  9639. ColorScheme.Tetrad = function (color_val) {
  9640. return new ColorScheme(color_val, [60, 180, 240]);
  9641. };
  9642. ColorScheme.Analog = function (color_val) {
  9643. return new ColorScheme(color_val, [-45, 45]);
  9644. };
  9645. ColorScheme.Split = function (color_val) {
  9646. return new ColorScheme(color_val, [150, 210]);
  9647. };
  9648. ColorScheme.Accent = function (color_val) {
  9649. return new ColorScheme(color_val, [-45, 45, 180]);
  9650. };
  9651. return colz;
  9652. });
  9653. }(jQuery));