pptxjs.js 794 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104
  1. /**
  2. * pptxjs.js
  3. * Ver. : 1.21.1
  4. * last update: 16/11/2021
  5. * Author: meshesha , https://github.com/meshesha
  6. * LICENSE: MIT
  7. * url:https://pptx.js.org/
  8. * fix issues:
  9. * [#16](https://github.com/meshesha/PPTXjs/issues/16)
  10. */
  11. (function ($) {
  12. $.fn.pptxToHtml = function (options) {
  13. //var worker;
  14. var $result = $(this);
  15. var divId = $result.attr("id");
  16. var isDone = false;
  17. var MsgQueue = new Array();
  18. //var slideLayoutClrOvride = "";
  19. var defaultTextStyle = null;
  20. var chartID = 0;
  21. var _order = 1;
  22. var app_verssion ;
  23. var rtl_langs_array = ["he-IL", "ar-AE", "ar-SA", "dv-MV", "fa-IR","ur-PK"]
  24. var slideFactor = 96 / 914400;
  25. var fontSizeFactor = 4 / 3.2;
  26. //////////////////////
  27. var slideWidth = 0;
  28. var slideHeight = 0;
  29. var isSlideMode = false;
  30. var processFullTheme = true;
  31. var styleTable = {};
  32. var settings = $.extend(true, {
  33. // These are the defaults.
  34. pptxFileUrl: "",
  35. fileInputId: "",
  36. slidesScale: "", //Change Slides scale by percent
  37. slideMode: false, /** true,false*/
  38. slideType: "divs2slidesjs", /*'divs2slidesjs' (default) , 'revealjs'(https://revealjs.com) -TODO*/
  39. revealjsPath: "", /*path to js file of revealjs - TODO*/
  40. keyBoardShortCut: false, /** true,false ,condition: slideMode: true XXXXX - need to remove - this is doublcated*/
  41. mediaProcess: true, /** true,false: if true then process video and audio files */
  42. jsZipV2: false,
  43. themeProcess: true, /*true (default) , false, "colorsAndImageOnly"*/
  44. incSlide:{
  45. width: 0,
  46. height: 0
  47. },
  48. slideModeConfig: {
  49. first: 1,
  50. nav: true, /** true,false : show or not nav buttons*/
  51. navTxtColor: "black", /** color */
  52. keyBoardShortCut: true, /** true,false ,condition: */
  53. showSlideNum: true, /** true,false */
  54. showTotalSlideNum: true, /** true,false */
  55. autoSlide: true, /** false or seconds , F8 to active ,keyBoardShortCut: true */
  56. randomAutoSlide: false, /** true,false ,autoSlide:true */
  57. loop: false, /** true,false */
  58. background: false, /** false or color*/
  59. transition: "default", /** transition type: "slid","fade","default","random" , to show transition efects :transitionTime > 0.5 */
  60. transitionTime: 1 /** transition time between slides in seconds */
  61. },
  62. revealjsConfig: {}
  63. }, options);
  64. processFullTheme = settings.themeProcess;
  65. $("#" + divId).prepend(
  66. $("<div></div>").attr({
  67. "class": "slides-loadnig-msg",
  68. "style": "display:block; width:100%; color:white; background-color: #ddd;"
  69. })/*.html("Loading...")*/
  70. .html($("<div></div>").attr({
  71. "class": "slides-loading-progress-bar",
  72. "style": "width: 1%; background-color: #4775d1;"
  73. }).html("<span style='text-align: center;'>1%</span>"))
  74. );
  75. if (settings.slideMode) {
  76. if (!jQuery().divs2slides) {
  77. jQuery.getScript('./pptxjs/divs2slides.js');
  78. }
  79. }
  80. if (settings.jsZipV2 !== false) {
  81. jQuery.getScript(settings.jsZipV2);
  82. if (localStorage.getItem('isPPTXjsReLoaded') !== 'yes') {
  83. localStorage.setItem('isPPTXjsReLoaded', 'yes');
  84. location.reload();
  85. }
  86. }
  87. if (settings.keyBoardShortCut) {
  88. $(document).bind("keydown", function (event) {
  89. event.preventDefault();
  90. var key = event.keyCode;
  91. console.log(key, isDone)
  92. if (key == 116 && !isSlideMode) { //F5
  93. isSlideMode = true;
  94. initSlideMode(divId, settings);
  95. } else if (key == 116 && isSlideMode) {
  96. //exit slide mode - TODO
  97. }
  98. });
  99. }
  100. FileReaderJS.setSync(false);
  101. if (settings.pptxFileUrl != "") {
  102. try{
  103. JSZipUtils.getBinaryContent(settings.pptxFileUrl, function (err, content) {
  104. var blob = new Blob([content]);
  105. var file_name = settings.pptxFileUrl;
  106. var fArry = file_name.split(".");
  107. fArry.pop();
  108. blob.name = fArry[0];
  109. FileReaderJS.setupBlob(blob, {
  110. readAsDefault: "ArrayBuffer",
  111. on: {
  112. load: function (e, file) {
  113. //console.log(e.target.result);
  114. convertToHtml(e.target.result);
  115. }
  116. }
  117. });
  118. });
  119. }catch(e){
  120. console.error("file url error (" + settings.pptxFileUrl+ "0)")
  121. $(".slides-loadnig-msg").remove();
  122. }
  123. } else {
  124. $(".slides-loadnig-msg").remove()
  125. }
  126. if (settings.fileInputId != "") {
  127. $("#" + settings.fileInputId).on("change", function (evt) {
  128. $result.html("");
  129. var file = evt.target.files[0];
  130. // var fileName = file[0].name;
  131. //var fileSize = file[0].size;
  132. var fileType = file.type;
  133. if (fileType == "application/vnd.openxmlformats-officedocument.presentationml.presentation") {
  134. FileReaderJS.setupBlob(file, {
  135. readAsDefault: "ArrayBuffer",
  136. on: {
  137. load: function (e, file) {
  138. //console.log(e.target.result);
  139. convertToHtml(e.target.result);
  140. }
  141. }
  142. });
  143. } else {
  144. alert("This is not pptx file");
  145. }
  146. });
  147. }
  148. function updateProgressBar(percent) {
  149. //console.log("percent: ", percent)
  150. var progressBarElemtnt = $(".slides-loading-progress-bar")
  151. progressBarElemtnt.width(percent + "%")
  152. progressBarElemtnt.html("<span style='text-align: center;'>Loading...(" + percent + "%)</span>");
  153. }
  154. function convertToHtml(file) {
  155. //'use strict';
  156. //console.log("file", file, "size:", file.byteLength);
  157. if (file.byteLength < 10){
  158. console.error("file url error (" + settings.pptxFileUrl + "0)")
  159. $(".slides-loadnig-msg").remove();
  160. return;
  161. }
  162. var zip = new JSZip(), s;
  163. //if (typeof file === 'string') { // Load
  164. zip = zip.load(file); //zip.load(file, { base64: true });
  165. var rslt_ary = processPPTX(zip);
  166. //s = readXmlFile(zip, 'ppt/tableStyles.xml');
  167. //var slidesHeight = $("#" + divId + " .slide").height();
  168. for (var i = 0; i < rslt_ary.length; i++) {
  169. switch (rslt_ary[i]["type"]) {
  170. case "slide":
  171. $result.append(rslt_ary[i]["data"]);
  172. break;
  173. case "pptx-thumb":
  174. //$("#pptx-thumb").attr("src", "data:image/jpeg;base64," +rslt_ary[i]["data"]);
  175. break;
  176. case "slideSize":
  177. slideWidth = rslt_ary[i]["data"].width;
  178. slideHeight = rslt_ary[i]["data"].height;
  179. /*
  180. $("#"+divId).css({
  181. 'width': slideWidth + 80,
  182. 'height': slideHeight + 60
  183. });
  184. */
  185. break;
  186. case "globalCSS":
  187. //console.log(rslt_ary[i]["data"])
  188. $result.append("<style>" + rslt_ary[i]["data"] + "</style>");
  189. break;
  190. case "ExecutionTime":
  191. processMsgQueue(MsgQueue);
  192. setNumericBullets($(".block"));
  193. setNumericBullets($("table td"));
  194. isDone = true;
  195. if (settings.slideMode && !isSlideMode) {
  196. isSlideMode = true;
  197. initSlideMode(divId, settings);
  198. } else if (!settings.slideMode) {
  199. $(".slides-loadnig-msg").remove();
  200. }
  201. break;
  202. case "progress-update":
  203. //console.log(rslt_ary[i]["data"]); //update progress bar - TODO
  204. updateProgressBar(rslt_ary[i]["data"])
  205. break;
  206. default:
  207. }
  208. }
  209. if (!settings.slideMode || (settings.slideMode && settings.slideType == "revealjs")) {
  210. if (document.getElementById("all_slides_warpper") === null) {
  211. $("#" + divId + " .slide").wrapAll("<div id='all_slides_warpper' class='slides'></div>");
  212. //$("#" + divId + " .slides").wrap("<div class='reveal'></div>");
  213. }
  214. if (settings.slideMode && settings.slideType == "revealjs") {
  215. $("#" + divId).addClass("reveal")
  216. }
  217. }
  218. var sScale = settings.slidesScale;
  219. var trnsfrmScl = "";
  220. if (sScale != "") {
  221. var numsScale = parseInt(sScale);
  222. var scaleVal = numsScale / 100;
  223. if (settings.slideMode && settings.slideType != "revealjs") {
  224. trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top';
  225. }
  226. }
  227. var slidesHeight = $("#" + divId + " .slide").height();
  228. var numOfSlides = $("#" + divId + " .slide").length;
  229. var sScaleVal = (sScale != "") ? scaleVal : 1;
  230. //console.log("slidesHeight: " + slidesHeight + "\nnumOfSlides: " + numOfSlides + "\nScale: " + sScaleVal)
  231. $("#all_slides_warpper").attr({
  232. style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px"
  233. })
  234. //}
  235. }
  236. function initSlideMode(divId, settings) {
  237. //console.log(settings.slideType)
  238. if (settings.slideType == "" || settings.slideType == "divs2slidesjs") {
  239. var slidesHeight = $("#" + divId + " .slide").height();
  240. $("#" + divId + " .slide").hide();
  241. setTimeout(function () {
  242. var slideConf = settings.slideModeConfig;
  243. $(".slides-loadnig-msg").remove();
  244. $("#" + divId).divs2slides({
  245. first: slideConf.first,
  246. nav: slideConf.nav,
  247. showPlayPauseBtn: settings.showPlayPauseBtn,
  248. navTxtColor: slideConf.navTxtColor,
  249. keyBoardShortCut: slideConf.keyBoardShortCut,
  250. showSlideNum: slideConf.showSlideNum,
  251. showTotalSlideNum: slideConf.showTotalSlideNum,
  252. autoSlide: slideConf.autoSlide,
  253. randomAutoSlide: slideConf.randomAutoSlide,
  254. loop: slideConf.loop,
  255. background: slideConf.background,
  256. transition: slideConf.transition,
  257. transitionTime: slideConf.transitionTime
  258. });
  259. var sScale = settings.slidesScale;
  260. var trnsfrmScl = "";
  261. if (sScale != "") {
  262. var numsScale = parseInt(sScale);
  263. var scaleVal = numsScale / 100;
  264. trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top';
  265. }
  266. var numOfSlides = 1;
  267. var sScaleVal = (sScale != "") ? scaleVal : 1;
  268. //console.log(slidesHeight);
  269. $("#all_slides_warpper").attr({
  270. style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px"
  271. })
  272. }, 1500);
  273. } else if (settings.slideType == "revealjs") {
  274. $(".slides-loadnig-msg").remove();
  275. var revealjsPath = "";
  276. if (settings.revealjsPath != "") {
  277. revealjsPath = settings.revealjsPath;
  278. } else {
  279. revealjsPath = "./revealjs/reveal.js";
  280. }
  281. $.getScript(revealjsPath, function (response, status) {
  282. if (status == "success") {
  283. // $("section").removeClass("slide");
  284. Reveal.initialize(settings.revealjsConfig); //revealjsConfig - TODO
  285. }
  286. });
  287. }
  288. }
  289. function processPPTX(zip) {
  290. var post_ary = [];
  291. var dateBefore = new Date();
  292. if (zip.file("docProps/thumbnail.jpeg") !== null) {
  293. var pptxThumbImg = base64ArrayBuffer(zip.file("docProps/thumbnail.jpeg").asArrayBuffer());
  294. post_ary.push({
  295. "type": "pptx-thumb",
  296. "data": pptxThumbImg,
  297. "slide_num": -1
  298. });
  299. }
  300. var filesInfo = getContentTypes(zip);
  301. var slideSize = getSlideSizeAndSetDefaultTextStyle(zip);
  302. tableStyles = readXmlFile(zip, "ppt/tableStyles.xml");
  303. //console.log("slideSize: ", slideSize)
  304. post_ary.push({
  305. "type": "slideSize",
  306. "data": slideSize,
  307. "slide_num": 0
  308. });
  309. var numOfSlides = filesInfo["slides"].length;
  310. for (var i = 0; i < numOfSlides; i++) {
  311. var filename = filesInfo["slides"][i];
  312. var filename_no_path = "";
  313. var filename_no_path_ary = [];
  314. if (filename.indexOf("/") != -1) {
  315. filename_no_path_ary = filename.split("/");
  316. filename_no_path = filename_no_path_ary.pop();
  317. } else {
  318. filename_no_path = filename;
  319. }
  320. var filename_no_path_no_ext = "";
  321. if (filename_no_path.indexOf(".") != -1) {
  322. var filename_no_path_no_ext_ary = filename_no_path.split(".");
  323. var slide_ext = filename_no_path_no_ext_ary.pop();
  324. filename_no_path_no_ext = filename_no_path_no_ext_ary.join(".");
  325. }
  326. var slide_number = 1;
  327. if (filename_no_path_no_ext != "" && filename_no_path.indexOf("slide") != -1) {
  328. slide_number = Number(filename_no_path_no_ext.substr(5));
  329. }
  330. var slideHtml = processSingleSlide(zip, filename, i, slideSize);
  331. post_ary.push({
  332. "type": "slide",
  333. "data": slideHtml,
  334. "slide_num": slide_number,
  335. "file_name": filename_no_path_no_ext
  336. });
  337. post_ary.push({
  338. "type": "progress-update",
  339. "slide_num": (numOfSlides + i + 1),
  340. "data": (i + 1) * 100 / numOfSlides
  341. });
  342. }
  343. post_ary.sort(function (a, b) {
  344. return a.slide_num - b.slide_num;
  345. });
  346. post_ary.push({
  347. "type": "globalCSS",
  348. "data": genGlobalCSS()
  349. });
  350. var dateAfter = new Date();
  351. post_ary.push({
  352. "type": "ExecutionTime",
  353. "data": dateAfter - dateBefore
  354. });
  355. return post_ary;
  356. }
  357. function readXmlFile(zip, filename, isSlideContent) {
  358. try {
  359. var fileContent = zip.file(filename).asText();
  360. if (isSlideContent && app_verssion <= 12) {
  361. //< office2007
  362. //remove "<![CDATA[ ... ]]>" tag
  363. fileContent = fileContent.replace(/<!\[CDATA\[(.*?)\]\]>/g, '$1');
  364. }
  365. var xmlData = tXml(fileContent, { simplify: 1 });
  366. if (xmlData["?xml"] !== undefined) {
  367. return xmlData["?xml"];
  368. } else {
  369. return xmlData;
  370. }
  371. } catch (e) {
  372. //console.log("error readXmlFile: the file '", filename, "' not exit")
  373. return null;
  374. }
  375. }
  376. function getContentTypes(zip) {
  377. var ContentTypesJson = readXmlFile(zip, "[Content_Types].xml");
  378. var subObj = ContentTypesJson["Types"]["Override"];
  379. var slidesLocArray = [];
  380. var slideLayoutsLocArray = [];
  381. for (var i = 0; i < subObj.length; i++) {
  382. switch (subObj[i]["attrs"]["ContentType"]) {
  383. case "application/vnd.openxmlformats-officedocument.presentationml.slide+xml":
  384. slidesLocArray.push(subObj[i]["attrs"]["PartName"].substr(1));
  385. break;
  386. case "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml":
  387. slideLayoutsLocArray.push(subObj[i]["attrs"]["PartName"].substr(1));
  388. break;
  389. default:
  390. }
  391. }
  392. return {
  393. "slides": slidesLocArray,
  394. "slideLayouts": slideLayoutsLocArray
  395. };
  396. }
  397. function getSlideSizeAndSetDefaultTextStyle(zip) {
  398. //get app version
  399. var app = readXmlFile(zip, "docProps/app.xml");
  400. var app_verssion_str = app["Properties"]["AppVersion"]
  401. app_verssion = parseInt(app_verssion_str);
  402. console.log("create by Office PowerPoint app verssion: ", app_verssion_str)
  403. //get slide dimensions
  404. var rtenObj = {};
  405. var content = readXmlFile(zip, "ppt/presentation.xml");
  406. var sldSzAttrs = content["p:presentation"]["p:sldSz"]["attrs"];
  407. var sldSzWidth = parseInt(sldSzAttrs["cx"]);
  408. var sldSzHeight = parseInt(sldSzAttrs["cy"]);
  409. var sldSzType = sldSzAttrs["type"];
  410. console.log("Presentation size type: ", sldSzType)
  411. //1 inches = 96px = 2.54cm
  412. // 1 EMU = 1 / 914400 inch
  413. // Pixel = EMUs * Resolution / 914400; (Resolution = 96)
  414. //var standardHeight = 6858000;
  415. //console.log("slideFactor: ", slideFactor, "standardHeight:", standardHeight, (standardHeight - sldSzHeight) / standardHeight)
  416. //slideFactor = (96 * (1 + ((standardHeight - sldSzHeight) / standardHeight))) / 914400 ;
  417. //slideFactor = slideFactor + sldSzHeight*((standardHeight - sldSzHeight) / standardHeight) ;
  418. //var ration = sldSzWidth / sldSzHeight;
  419. //Scale
  420. // var viewProps = readXmlFile(zip, "ppt/viewProps.xml");
  421. // var scaleLoc = getTextByPathList(viewProps, ["p:viewPr", "p:slideViewPr", "p:cSldViewPr", "p:cViewPr","p:scale"]);
  422. // var scaleXnodes, scaleX = 1, scaleYnode, scaleY = 1;
  423. // if (scaleLoc !== undefined){
  424. // scaleXnodes = scaleLoc["a:sx"]["attrs"];
  425. // var scaleXnodesN = scaleXnodes["n"];
  426. // var scaleXnodesD = scaleXnodes["d"];
  427. // if (scaleXnodesN !== undefined && scaleXnodesD !== undefined && scaleXnodesN != 0){
  428. // scaleX = parseInt(scaleXnodesD)/parseInt(scaleXnodesN);
  429. // }
  430. // scaleYnode = scaleLoc["a:sy"]["attrs"];
  431. // var scaleYnodeN = scaleYnode["n"];
  432. // var scaleYnodeD = scaleYnode["d"];
  433. // if (scaleYnodeN !== undefined && scaleYnodeD !== undefined && scaleYnodeN != 0) {
  434. // scaleY = parseInt(scaleYnodeD) / parseInt(scaleYnodeN) ;
  435. // }
  436. // }
  437. //console.log("scaleX: ", scaleX, "scaleY:", scaleY)
  438. //slideFactor = slideFactor * scaleX;
  439. defaultTextStyle = content["p:presentation"]["p:defaultTextStyle"];
  440. slideWidth = sldSzWidth * slideFactor + settings.incSlide.width|0;// * scaleX;//parseInt(sldSzAttrs["cx"]) * 96 / 914400;
  441. slideHeight = sldSzHeight * slideFactor + settings.incSlide.height|0;// * scaleY;//parseInt(sldSzAttrs["cy"]) * 96 / 914400;
  442. rtenObj = {
  443. "width": slideWidth,
  444. "height": slideHeight
  445. };
  446. return rtenObj;
  447. }
  448. function processSingleSlide(zip, sldFileName, index, slideSize) {
  449. /*
  450. self.postMessage({
  451. "type": "INFO",
  452. "data": "Processing slide" + (index + 1)
  453. });
  454. */
  455. // =====< Step 1 >=====
  456. // Read relationship filename of the slide (Get slideLayoutXX.xml)
  457. // @sldFileName: ppt/slides/slide1.xml
  458. // @resName: ppt/slides/_rels/slide1.xml.rels
  459. var resName = sldFileName.replace("slides/slide", "slides/_rels/slide") + ".rels";
  460. var resContent = readXmlFile(zip, resName);
  461. var RelationshipArray = resContent["Relationships"]["Relationship"];
  462. //console.log("RelationshipArray: " , RelationshipArray)
  463. var layoutFilename = "";
  464. var diagramFilename = "";
  465. var slideResObj = {};
  466. if (RelationshipArray.constructor === Array) {
  467. for (var i = 0; i < RelationshipArray.length; i++) {
  468. switch (RelationshipArray[i]["attrs"]["Type"]) {
  469. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout":
  470. layoutFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  471. break;
  472. case "http://schemas.microsoft.com/office/2007/relationships/diagramDrawing":
  473. diagramFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  474. slideResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  475. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  476. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  477. };
  478. break;
  479. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide":
  480. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image":
  481. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart":
  482. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink":
  483. default:
  484. slideResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  485. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  486. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  487. };
  488. }
  489. }
  490. } else {
  491. layoutFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  492. }
  493. //console.log(slideResObj);
  494. // Open slideLayoutXX.xml
  495. var slideLayoutContent = readXmlFile(zip, layoutFilename);
  496. var slideLayoutTables = indexNodes(slideLayoutContent);
  497. var sldLayoutClrOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping"]);
  498. //console.log(slideLayoutClrOvride);
  499. if (sldLayoutClrOvr !== undefined) {
  500. slideLayoutClrOvride = sldLayoutClrOvr["attrs"];
  501. }
  502. // =====< Step 2 >=====
  503. // Read slide master filename of the slidelayout (Get slideMasterXX.xml)
  504. // @resName: ppt/slideLayouts/slideLayout1.xml
  505. // @masterName: ppt/slideLayouts/_rels/slideLayout1.xml.rels
  506. var slideLayoutResFilename = layoutFilename.replace("slideLayouts/slideLayout", "slideLayouts/_rels/slideLayout") + ".rels";
  507. var slideLayoutResContent = readXmlFile(zip, slideLayoutResFilename);
  508. RelationshipArray = slideLayoutResContent["Relationships"]["Relationship"];
  509. var masterFilename = "";
  510. var layoutResObj = {};
  511. if (RelationshipArray.constructor === Array) {
  512. for (var i = 0; i < RelationshipArray.length; i++) {
  513. switch (RelationshipArray[i]["attrs"]["Type"]) {
  514. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster":
  515. masterFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  516. break;
  517. default:
  518. layoutResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  519. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  520. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  521. };
  522. }
  523. }
  524. } else {
  525. masterFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  526. }
  527. // Open slideMasterXX.xml
  528. var slideMasterContent = readXmlFile(zip, masterFilename);
  529. var slideMasterTextStyles = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:txStyles"]);
  530. var slideMasterTables = indexNodes(slideMasterContent);
  531. /////////////////Amir/////////////
  532. //Open slideMasterXX.xml.rels
  533. var slideMasterResFilename = masterFilename.replace("slideMasters/slideMaster", "slideMasters/_rels/slideMaster") + ".rels";
  534. var slideMasterResContent = readXmlFile(zip, slideMasterResFilename);
  535. RelationshipArray = slideMasterResContent["Relationships"]["Relationship"];
  536. var themeFilename = "";
  537. var masterResObj = {};
  538. if (RelationshipArray.constructor === Array) {
  539. for (var i = 0; i < RelationshipArray.length; i++) {
  540. switch (RelationshipArray[i]["attrs"]["Type"]) {
  541. case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme":
  542. themeFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/");
  543. break;
  544. default:
  545. masterResObj[RelationshipArray[i]["attrs"]["Id"]] = {
  546. "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  547. "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  548. };
  549. }
  550. }
  551. } else {
  552. themeFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/");
  553. }
  554. //console.log(themeFilename)
  555. //Load Theme file
  556. var themeResObj = {};
  557. if (themeFilename !== undefined) {
  558. var themeName = themeFilename.split("/").pop();
  559. var themeResFileName = themeFilename.replace(themeName, "_rels/" + themeName) + ".rels";
  560. //console.log("themeFilename: ", themeFilename, ", themeName: ", themeName, ", themeResFileName: ", themeResFileName)
  561. var themeContent = readXmlFile(zip, themeFilename);
  562. var themeResContent = readXmlFile(zip, themeResFileName);
  563. if (themeResContent !== null) {
  564. var relationshipArray = themeResContent["Relationships"]["Relationship"];
  565. if (relationshipArray !== undefined){
  566. var themeFilename = "";
  567. if (relationshipArray.constructor === Array) {
  568. for (var i = 0; i < relationshipArray.length; i++) {
  569. themeResObj[relationshipArray[i]["attrs"]["Id"]] = {
  570. "type": relationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  571. "target": relationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  572. };
  573. }
  574. } else {
  575. //console.log("theme relationshipArray : ", relationshipArray)
  576. themeResObj[relationshipArray["attrs"]["Id"]] = {
  577. "type": relationshipArray["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  578. "target": relationshipArray["attrs"]["Target"].replace("../", "ppt/")
  579. };
  580. }
  581. }
  582. }
  583. }
  584. //Load diagram file
  585. var diagramResObj = {};
  586. var digramFileContent = {};
  587. if (diagramFilename !== undefined) {
  588. var diagName = diagramFilename.split("/").pop();
  589. var diagramResFileName = diagramFilename.replace(diagName, "_rels/" + diagName) + ".rels";
  590. //console.log("diagramFilename: ", diagramFilename, ", themeName: ", themeName, ", diagramResFileName: ", diagramResFileName)
  591. digramFileContent = readXmlFile(zip, diagramFilename);
  592. if (digramFileContent !== null && digramFileContent !== undefined && digramFileContent != "") {
  593. var digramFileContentObjToStr = JSON.stringify(digramFileContent);
  594. digramFileContentObjToStr = digramFileContentObjToStr.replace(/dsp:/g, "p:");
  595. digramFileContent = JSON.parse(digramFileContentObjToStr);
  596. }
  597. var digramResContent = readXmlFile(zip, diagramResFileName);
  598. if (digramResContent !== null) {
  599. var relationshipArray = digramResContent["Relationships"]["Relationship"];
  600. var themeFilename = "";
  601. if (relationshipArray.constructor === Array) {
  602. for (var i = 0; i < relationshipArray.length; i++) {
  603. diagramResObj[relationshipArray[i]["attrs"]["Id"]] = {
  604. "type": relationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  605. "target": relationshipArray[i]["attrs"]["Target"].replace("../", "ppt/")
  606. };
  607. }
  608. } else {
  609. //console.log("theme relationshipArray : ", relationshipArray)
  610. diagramResObj[relationshipArray["attrs"]["Id"]] = {
  611. "type": relationshipArray["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""),
  612. "target": relationshipArray["attrs"]["Target"].replace("../", "ppt/")
  613. };
  614. }
  615. }
  616. }
  617. //console.log("diagramResObj: " , diagramResObj)
  618. // =====< Step 3 >=====
  619. var slideContent = readXmlFile(zip, sldFileName , true);
  620. var nodes = slideContent["p:sld"]["p:cSld"]["p:spTree"];
  621. var warpObj = {
  622. "zip": zip,
  623. "slideLayoutContent": slideLayoutContent,
  624. "slideLayoutTables": slideLayoutTables,
  625. "slideMasterContent": slideMasterContent,
  626. "slideMasterTables": slideMasterTables,
  627. "slideContent": slideContent,
  628. "slideResObj": slideResObj,
  629. "slideMasterTextStyles": slideMasterTextStyles,
  630. "layoutResObj": layoutResObj,
  631. "masterResObj": masterResObj,
  632. "themeContent": themeContent,
  633. "themeResObj": themeResObj,
  634. "digramFileContent": digramFileContent,
  635. "diagramResObj": diagramResObj,
  636. "defaultTextStyle": defaultTextStyle
  637. };
  638. var bgResult = "";
  639. if (processFullTheme === true) {
  640. bgResult = getBackground(warpObj, slideSize, index);
  641. }
  642. var bgColor = "";
  643. if (processFullTheme == "colorsAndImageOnly") {
  644. bgColor = getSlideBackgroundFill(warpObj, index);
  645. }
  646. if (settings.slideMode && settings.slideType == "revealjs") {
  647. var result = "<section class='slide' style='width:" + slideSize.width + "px; height:" + slideSize.height + "px;" + bgColor + "'>"
  648. } else {
  649. var result = "<div class='slide' style='width:" + slideSize.width + "px; height:" + slideSize.height + "px;" + bgColor + "'>"
  650. }
  651. result += bgResult;
  652. for (var nodeKey in nodes) {
  653. if (nodes[nodeKey].constructor === Array) {
  654. for (var i = 0; i < nodes[nodeKey].length; i++) {
  655. result += processNodesInSlide(nodeKey, nodes[nodeKey][i], nodes, warpObj, "slide");
  656. }
  657. } else {
  658. result += processNodesInSlide(nodeKey, nodes[nodeKey], nodes, warpObj, "slide");
  659. }
  660. }
  661. if (settings.slideMode && settings.slideType == "revealjs") {
  662. return result + "</div></section>";
  663. } else {
  664. return result + "</div></div>";
  665. }
  666. }
  667. function indexNodes(content) {
  668. var keys = Object.keys(content);
  669. var spTreeNode = content[keys[0]]["p:cSld"]["p:spTree"];
  670. var idTable = {};
  671. var idxTable = {};
  672. var typeTable = {};
  673. for (var key in spTreeNode) {
  674. if (key == "p:nvGrpSpPr" || key == "p:grpSpPr") {
  675. continue;
  676. }
  677. var targetNode = spTreeNode[key];
  678. if (targetNode.constructor === Array) {
  679. for (var i = 0; i < targetNode.length; i++) {
  680. var nvSpPrNode = targetNode[i]["p:nvSpPr"];
  681. var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]);
  682. var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]);
  683. var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]);
  684. if (id !== undefined) {
  685. idTable[id] = targetNode[i];
  686. }
  687. if (idx !== undefined) {
  688. idxTable[idx] = targetNode[i];
  689. }
  690. if (type !== undefined) {
  691. typeTable[type] = targetNode[i];
  692. }
  693. }
  694. } else {
  695. var nvSpPrNode = targetNode["p:nvSpPr"];
  696. var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]);
  697. var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]);
  698. var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]);
  699. if (id !== undefined) {
  700. idTable[id] = targetNode;
  701. }
  702. if (idx !== undefined) {
  703. idxTable[idx] = targetNode;
  704. }
  705. if (type !== undefined) {
  706. typeTable[type] = targetNode;
  707. }
  708. }
  709. }
  710. return { "idTable": idTable, "idxTable": idxTable, "typeTable": typeTable };
  711. }
  712. function processNodesInSlide(nodeKey, nodeValue, nodes, warpObj, source, sType) {
  713. var result = "";
  714. switch (nodeKey) {
  715. case "p:sp": // Shape, Text
  716. result = processSpNode(nodeValue, nodes, warpObj, source, sType);
  717. break;
  718. case "p:cxnSp": // Shape, Text (with connection)
  719. result = processCxnSpNode(nodeValue, nodes, warpObj, source, sType);
  720. break;
  721. case "p:pic": // Picture
  722. result = processPicNode(nodeValue, warpObj, source, sType);
  723. break;
  724. case "p:graphicFrame": // Chart, Diagram, Table
  725. result = processGraphicFrameNode(nodeValue, warpObj, source, sType);
  726. break;
  727. case "p:grpSp":
  728. result = processGroupSpNode(nodeValue, warpObj, source);
  729. break;
  730. case "mc:AlternateContent": //Equations and formulas as Image
  731. //console.log("mc:AlternateContent nodeValue:" , nodeValue , "nodes:",nodes, "sType:",sType)
  732. var mcFallbackNode = getTextByPathList(nodeValue, ["mc:Fallback"]);
  733. result = processGroupSpNode(mcFallbackNode, warpObj, source);
  734. break;
  735. default:
  736. //console.log("nodeKey: ", nodeKey)
  737. }
  738. return result;
  739. }
  740. function processGroupSpNode(node, warpObj, source) {
  741. //console.log("processGroupSpNode: node: ", node)
  742. var xfrmNode = getTextByPathList(node, ["p:grpSpPr", "a:xfrm"]);
  743. if (xfrmNode !== undefined) {
  744. var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) * slideFactor;
  745. var y = parseInt(xfrmNode["a:off"]["attrs"]["y"]) * slideFactor;
  746. var chx = parseInt(xfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor;
  747. var chy = parseInt(xfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor;
  748. var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * slideFactor;
  749. var cy = parseInt(xfrmNode["a:ext"]["attrs"]["cy"]) * slideFactor;
  750. var chcx = parseInt(xfrmNode["a:chExt"]["attrs"]["cx"]) * slideFactor;
  751. var chcy = parseInt(xfrmNode["a:chExt"]["attrs"]["cy"]) * slideFactor;
  752. var rotate = parseInt(xfrmNode["attrs"]["rot"])
  753. var rotStr = ""//;" border: 3px solid black;";
  754. // angleToDegrees(getTextByPathList(slideXfrmNode, ["attrs", "rot"]));
  755. // var rotX = 0;
  756. // var rotY = 0;
  757. var top = y - chy,
  758. left = x - chx,
  759. width = cx - chcx,
  760. height = cy - chcy;
  761. var sType = "group";
  762. if (!isNaN(rotate)) {
  763. rotate = angleToDegrees(rotate);
  764. rotStr += "transform: rotate(" + rotate + "deg) ; transform-origin: center;";
  765. // var cLin = Math.sqrt(Math.pow((chy), 2) + Math.pow((chx), 2));
  766. // var rdian = degreesToRadians(rotate);
  767. // rotX = cLin * Math.cos(rdian);
  768. // rotY = cLin * Math.sin(rdian);
  769. if (rotate != 0) {
  770. top = y;
  771. left = x;
  772. width = cx;
  773. height = cy;
  774. sType = "group-rotate";
  775. }
  776. }
  777. }
  778. var grpStyle = "";
  779. if (rotStr !== undefined && rotStr != "") {
  780. grpStyle += rotStr;
  781. }
  782. if (top !== undefined) {
  783. grpStyle += "top: " + top + "px;";
  784. }
  785. if (left !== undefined) {
  786. grpStyle += "left: " + left + "px;";
  787. }
  788. if (width !== undefined) {
  789. grpStyle += "width:" + width + "px;";
  790. }
  791. if (height !== undefined) {
  792. grpStyle += "height: " + height + "px;";
  793. }
  794. var order = node["attrs"]["order"];
  795. var result = "<div class='block group' style='z-index: " + order + ";" + grpStyle + " border:1px solid red;'>";
  796. // Procsee all child nodes
  797. for (var nodeKey in node) {
  798. if (node[nodeKey].constructor === Array) {
  799. for (var i = 0; i < node[nodeKey].length; i++) {
  800. result += processNodesInSlide(nodeKey, node[nodeKey][i], node, warpObj, source, sType);
  801. }
  802. } else {
  803. result += processNodesInSlide(nodeKey, node[nodeKey], node, warpObj, source, sType);
  804. }
  805. }
  806. result += "</div>";
  807. return result;
  808. }
  809. function processSpNode(node, pNode, warpObj, source, sType) {
  810. /*
  811. * 958 <xsd:complexType name="CT_GvmlShape">
  812. * 959 <xsd:sequence>
  813. * 960 <xsd:element name="nvSpPr" type="CT_GvmlShapeNonVisual" minOccurs="1" maxOccurs="1"/>
  814. * 961 <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
  815. * 962 <xsd:element name="txSp" type="CT_GvmlTextShape" minOccurs="0" maxOccurs="1"/>
  816. * 963 <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
  817. * 964 <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
  818. * 965 </xsd:sequence>
  819. * 966 </xsd:complexType>
  820. */
  821. var id = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "id"]);
  822. var name = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "name"]);
  823. var idx = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "idx"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "idx"]);
  824. var type = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  825. var order = getTextByPathList(node, ["attrs", "order"]);
  826. var isUserDrawnBg;
  827. if (source == "slideLayoutBg" || source == "slideMasterBg") {
  828. var userDrawn = getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "attrs", "userDrawn"]);
  829. if (userDrawn == "1") {
  830. isUserDrawnBg = true;
  831. } else {
  832. isUserDrawnBg = false;
  833. }
  834. }
  835. var slideLayoutSpNode = undefined;
  836. var slideMasterSpNode = undefined;
  837. if (idx !== undefined) {
  838. slideLayoutSpNode = warpObj["slideLayoutTables"]["idxTable"][idx];
  839. if (type !== undefined) {
  840. slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type];
  841. } else {
  842. slideMasterSpNode = warpObj["slideMasterTables"]["idxTable"][idx];
  843. }
  844. } else {
  845. if (type !== undefined) {
  846. slideLayoutSpNode = warpObj["slideLayoutTables"]["typeTable"][type];
  847. slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type];
  848. }
  849. }
  850. if (type === undefined) {
  851. txBoxVal = getTextByPathList(node, ["p:nvSpPr", "p:cNvSpPr", "attrs", "txBox"]);
  852. if (txBoxVal == "1") {
  853. type = "textBox";
  854. }
  855. }
  856. if (type === undefined) {
  857. type = getTextByPathList(slideLayoutSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  858. if (type === undefined) {
  859. //type = getTextByPathList(slideMasterSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  860. if (source == "diagramBg") {
  861. type = "diagram";
  862. } else {
  863. type = "obj"; //default type
  864. }
  865. }
  866. }
  867. //console.log("processSpNode type:", type, "idx:", idx);
  868. return genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj, isUserDrawnBg, sType, source);
  869. }
  870. function processCxnSpNode(node, pNode, warpObj, source, sType) {
  871. var id = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["id"];
  872. var name = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["name"];
  873. var idx = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["idx"];
  874. var type = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["type"];
  875. //<p:cNvCxnSpPr>(<p:cNvCxnSpPr>, <a:endCxn>)
  876. var order = node["attrs"]["order"];
  877. return genShape(node, pNode, undefined, undefined, id, name, idx, type, order, warpObj, undefined, sType, source);
  878. }
  879. function genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj, isUserDrawnBg, sType, source) {
  880. //var dltX = 0;
  881. //var dltY = 0;
  882. var xfrmList = ["p:spPr", "a:xfrm"];
  883. var slideXfrmNode = getTextByPathList(node, xfrmList);
  884. var slideLayoutXfrmNode = getTextByPathList(slideLayoutSpNode, xfrmList);
  885. var slideMasterXfrmNode = getTextByPathList(slideMasterSpNode, xfrmList);
  886. var result = "";
  887. var shpId = getTextByPathList(node, ["attrs", "order"]);
  888. //console.log("shpId: ",shpId)
  889. var shapType = getTextByPathList(node, ["p:spPr", "a:prstGeom", "attrs", "prst"]);
  890. //custGeom - Amir
  891. var custShapType = getTextByPathList(node, ["p:spPr", "a:custGeom"]);
  892. var isFlipV = false;
  893. var isFlipH = false;
  894. var flip = "";
  895. if (getTextByPathList(slideXfrmNode, ["attrs", "flipV"]) === "1") {
  896. isFlipV = true;
  897. }
  898. if (getTextByPathList(slideXfrmNode, ["attrs", "flipH"]) === "1") {
  899. isFlipH = true;
  900. }
  901. if (isFlipH && !isFlipV) {
  902. flip = " scale(-1,1)"
  903. } else if (!isFlipH && isFlipV) {
  904. flip = " scale(1,-1)"
  905. } else if (isFlipH && isFlipV) {
  906. flip = " scale(-1,-1)"
  907. }
  908. /////////////////////////Amir////////////////////////
  909. //rotate
  910. var rotate = angleToDegrees(getTextByPathList(slideXfrmNode, ["attrs", "rot"]));
  911. //console.log("genShape rotate: " + rotate);
  912. var txtRotate;
  913. var txtXframeNode = getTextByPathList(node, ["p:txXfrm"]);
  914. if (txtXframeNode !== undefined) {
  915. var txtXframeRot = getTextByPathList(txtXframeNode, ["attrs", "rot"]);
  916. if (txtXframeRot !== undefined) {
  917. txtRotate = angleToDegrees(txtXframeRot) + 90;
  918. }
  919. } else {
  920. txtRotate = rotate;
  921. }
  922. //////////////////////////////////////////////////
  923. if (shapType !== undefined || custShapType !== undefined /*&& slideXfrmNode !== undefined*/) {
  924. var off = getTextByPathList(slideXfrmNode, ["a:off", "attrs"]);
  925. var x = parseInt(off["x"]) * slideFactor;
  926. var y = parseInt(off["y"]) * slideFactor;
  927. var ext = getTextByPathList(slideXfrmNode, ["a:ext", "attrs"]);
  928. var w = parseInt(ext["cx"]) * slideFactor;
  929. var h = parseInt(ext["cy"]) * slideFactor;
  930. var svgCssName = "_svg_css_" + (Object.keys(styleTable).length + 1) + "_" + Math.floor(Math.random() * 1001);
  931. //console.log("name:", name, "svgCssName: ", svgCssName)
  932. var effectsClassName = svgCssName + "_effects";
  933. result += "<svg class='drawing " + svgCssName + " " + effectsClassName + " ' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name + "'" +
  934. "' style='" +
  935. getPosition(slideXfrmNode, pNode, undefined, undefined, sType) +
  936. getSize(slideXfrmNode, undefined, undefined) +
  937. " z-index: " + order + ";" +
  938. "transform: rotate(" + ((rotate !== undefined) ? rotate : 0) + "deg)" + flip + ";" +
  939. "'>";
  940. result += '<defs>'
  941. // Fill Color
  942. var fillColor = getShapeFill(node, pNode, true, warpObj, source);
  943. //console.log("genShape: fillColor: ", fillColor)
  944. var grndFillFlg = false;
  945. var imgFillFlg = false;
  946. var clrFillType = getFillType(getTextByPathList(node, ["p:spPr"]));
  947. if (clrFillType == "GROUP_FILL") {
  948. clrFillType = getFillType(getTextByPathList(pNode, ["p:grpSpPr"]));
  949. }
  950. // if (clrFillType == "") {
  951. // var clrFillType = getFillType(getTextByPathList(node, ["p:style","a:fillRef"]));
  952. // }
  953. //console.log("genShape: fillColor: ", fillColor, ", clrFillType: ", clrFillType, ", node: ", node)
  954. /////////////////////////////////////////
  955. if (clrFillType == "GRADIENT_FILL") {
  956. grndFillFlg = true;
  957. var color_arry = fillColor.color;
  958. var angl = fillColor.rot + 90;
  959. var svgGrdnt = getSvgGradient(w, h, angl, color_arry, shpId);
  960. //fill="url(#linGrd)"
  961. //console.log("genShape: svgGrdnt: ", svgGrdnt)
  962. result += svgGrdnt;
  963. } else if (clrFillType == "PIC_FILL") {
  964. imgFillFlg = true;
  965. var svgBgImg = getSvgImagePattern(node, fillColor, shpId, warpObj);
  966. //fill="url(#imgPtrn)"
  967. //console.log(svgBgImg)
  968. result += svgBgImg;
  969. } else if (clrFillType == "PATTERN_FILL") {
  970. var styleText = fillColor;
  971. if (styleText in styleTable) {
  972. styleText += "do-nothing: " + svgCssName +";";
  973. }
  974. styleTable[styleText] = {
  975. "name": svgCssName,
  976. "text": styleText
  977. };
  978. //}
  979. fillColor = "none";
  980. } else {
  981. if (clrFillType != "SOLID_FILL" && clrFillType != "PATTERN_FILL" &&
  982. (shapType == "arc" ||
  983. shapType == "bracketPair" ||
  984. shapType == "bracePair" ||
  985. shapType == "leftBracket" ||
  986. shapType == "leftBrace" ||
  987. shapType == "rightBrace" ||
  988. shapType == "rightBracket")) { //Temp. solution - TODO
  989. fillColor = "none";
  990. }
  991. }
  992. // Border Color
  993. var border = getBorder(node, pNode, true, "shape", warpObj);
  994. var headEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:headEnd", "attrs"]);
  995. var tailEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:tailEnd", "attrs"]);
  996. // type: none, triangle, stealth, diamond, oval, arrow
  997. ////////////////////effects/////////////////////////////////////////////////////
  998. //p:spPr => a:effectLst =>
  999. //"a:blur"
  1000. //"a:fillOverlay"
  1001. //"a:glow"
  1002. //"a:innerShdw"
  1003. //"a:outerShdw"
  1004. //"a:prstShdw"
  1005. //"a:reflection"
  1006. //"a:softEdge"
  1007. //p:spPr => a:scene3d
  1008. //"a:camera"
  1009. //"a:lightRig"
  1010. //"a:backdrop"
  1011. //"a:extLst"?
  1012. //p:spPr => a:sp3d
  1013. //"a:bevelT"
  1014. //"a:bevelB"
  1015. //"a:extrusionClr"
  1016. //"a:contourClr"
  1017. //"a:extLst"?
  1018. //////////////////////////////outerShdw///////////////////////////////////////////
  1019. //not support sizing the shadow
  1020. var outerShdwNode = getTextByPathList(node, ["p:spPr", "a:effectLst", "a:outerShdw"]);
  1021. var oShadowSvgUrlStr = ""
  1022. if (outerShdwNode !== undefined) {
  1023. var chdwClrNode = getSolidFill(outerShdwNode, undefined, undefined, warpObj);
  1024. var outerShdwAttrs = outerShdwNode["attrs"];
  1025. //var algn = outerShdwAttrs["algn"];
  1026. var dir = (outerShdwAttrs["dir"]) ? (parseInt(outerShdwAttrs["dir"]) / 60000) : 0;
  1027. var dist = parseInt(outerShdwAttrs["dist"]) * slideFactor;//(px) //* (3 / 4); //(pt)
  1028. //var rotWithShape = outerShdwAttrs["rotWithShape"];
  1029. var blurRad = (outerShdwAttrs["blurRad"]) ? (parseInt(outerShdwAttrs["blurRad"]) * slideFactor) : ""; //+ "px"
  1030. //var sx = (outerShdwAttrs["sx"]) ? (parseInt(outerShdwAttrs["sx"]) / 100000) : 1;
  1031. //var sy = (outerShdwAttrs["sy"]) ? (parseInt(outerShdwAttrs["sy"]) / 100000) : 1;
  1032. var vx = dist * Math.sin(dir * Math.PI / 180);
  1033. var hx = dist * Math.cos(dir * Math.PI / 180);
  1034. //SVG
  1035. //var oShadowId = "outerhadow_" + shpId;
  1036. //oShadowSvgUrlStr = "filter='url(#" + oShadowId+")'";
  1037. //var shadowFilterStr = '<filter id="' + oShadowId + '" x="0" y="0" width="' + w * (6 / 8) + '" height="' + h + '">';
  1038. //1:
  1039. //shadowFilterStr += '<feDropShadow dx="' + vx + '" dy="' + hx + '" stdDeviation="' + blurRad * (3 / 4) + '" flood-color="#' + chdwClrNode +'" flood-opacity="1" />'
  1040. //2:
  1041. //shadowFilterStr += '<feFlood result="floodColor" flood-color="red" flood-opacity="0.5" width="' + w * (6 / 8) + '" height="' + h + '" />'; //#' + chdwClrNode +'
  1042. //shadowFilterStr += '<feOffset result="offOut" in="SourceGraph ccfsdf-+ic" dx="' + vx + '" dy="' + hx + '"/>'; //how much to offset
  1043. //shadowFilterStr += '<feGaussianBlur result="blurOut" in="offOut" stdDeviation="' + blurRad*(3/4) +'"/>'; //tdDeviation is how much to blur
  1044. //shadowFilterStr += '<feComponentTransfer><feFuncA type="linear" slope="0.5"/></feComponentTransfer>'; //slope is the opacity of the shadow
  1045. //shadowFilterStr += '<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />'; //this contains the element that the filter is applied to
  1046. //shadowFilterStr += '</filter>';
  1047. //result += shadowFilterStr;
  1048. //css:
  1049. var svg_css_shadow = "filter:drop-shadow(" + hx + "px " + vx + "px " + blurRad + "px #" + chdwClrNode + ");";
  1050. if (svg_css_shadow in styleTable) {
  1051. svg_css_shadow += "do-nothing: " + svgCssName + ";";
  1052. }
  1053. styleTable[svg_css_shadow] = {
  1054. "name": effectsClassName,
  1055. "text": svg_css_shadow
  1056. };
  1057. }
  1058. ////////////////////////////////////////////////////////////////////////////////////////
  1059. if ((headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) ||
  1060. (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow"))) {
  1061. 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 +
  1062. "' orient='auto-start-reverse' markerUnits='strokeWidth'><path d='M 0 0 L 10 5 L 0 10 z' /></marker>";
  1063. result += triangleMarker;
  1064. }
  1065. result += '</defs>'
  1066. }
  1067. if (shapType !== undefined && custShapType === undefined) {
  1068. //console.log("shapType: ", shapType)
  1069. switch (shapType) {
  1070. case "rect":
  1071. case "flowChartProcess":
  1072. case "flowChartPredefinedProcess":
  1073. case "flowChartInternalStorage":
  1074. case "actionButtonBlank":
  1075. result += "<rect x='0' y='0' width='" + w + "' height='" + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1076. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' " + oShadowSvgUrlStr + " />";
  1077. if (shapType == "flowChartPredefinedProcess") {
  1078. 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 + "' />";
  1079. } else if (shapType == "flowChartInternalStorage") {
  1080. result += " <polyline points='" + w * (1 / 8) + " 0," + w * (1 / 8) + " " + h + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1081. result += " <polyline points='0 " + h * (1 / 8) + "," + w + " " + h * (1 / 8) + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1082. }
  1083. break;
  1084. case "flowChartCollate":
  1085. var d = "M 0,0" +
  1086. " L" + w + "," + 0 +
  1087. " L" + 0 + "," + h +
  1088. " L" + w + "," + h +
  1089. " z";
  1090. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1091. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1092. break;
  1093. case "flowChartDocument":
  1094. var y1, y2, y3, x1;
  1095. x1 = w * 10800 / 21600;
  1096. y1 = h * 17322 / 21600;
  1097. y2 = h * 20172 / 21600;
  1098. y3 = h * 23922 / 21600;
  1099. var d = "M" + 0 + "," + 0 +
  1100. " L" + w + "," + 0 +
  1101. " L" + w + "," + y1 +
  1102. " C" + x1 + "," + y1 + " " + x1 + "," + y3 + " " + 0 + "," + y2 +
  1103. " z";
  1104. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1105. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1106. break;
  1107. case "flowChartMultidocument":
  1108. var y1, y2, y3, y4, y5, y6, y7, y8, y9, x1, x2, x3, x4, x5, x6, x7;
  1109. y1 = h * 18022 / 21600;
  1110. y2 = h * 3675 / 21600;
  1111. y3 = h * 23542 / 21600;
  1112. y4 = h * 1815 / 21600;
  1113. y5 = h * 16252 / 21600;
  1114. y6 = h * 16352 / 21600;
  1115. y7 = h * 14392 / 21600;
  1116. y8 = h * 20782 / 21600;
  1117. y9 = h * 14467 / 21600;
  1118. x1 = w * 1532 / 21600;
  1119. x2 = w * 20000 / 21600;
  1120. x3 = w * 9298 / 21600;
  1121. x4 = w * 19298 / 21600;
  1122. x5 = w * 18595 / 21600;
  1123. x6 = w * 2972 / 21600;
  1124. x7 = w * 20800 / 21600;
  1125. var d = "M" + 0 + "," + y2 +
  1126. " L" + x5 + "," + y2 +
  1127. " L" + x5 + "," + y1 +
  1128. " C" + x3 + "," + y1 + " " + x3 + "," + y3 + " " + 0 + "," + y8 +
  1129. " z" +
  1130. "M" + x1 + "," + y2 +
  1131. " L" + x1 + "," + y4 +
  1132. " L" + x2 + "," + y4 +
  1133. " L" + x2 + "," + y5 +
  1134. " C" + x4 + "," + y5 + " " + x5 + "," + y6 + " " + x5 + "," + y6 +
  1135. "M" + x6 + "," + y4 +
  1136. " L" + x6 + "," + 0 +
  1137. " L" + w + "," + 0 +
  1138. " L" + w + "," + y7 +
  1139. " C" + x7 + "," + y7 + " " + x2 + "," + y9 + " " + x2 + "," + y9;
  1140. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1141. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1142. break;
  1143. case "actionButtonBackPrevious":
  1144. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1145. var dx2, g9, g10, g11, g12;
  1146. dx2 = ss * 3 / 8;
  1147. g9 = vc - dx2;
  1148. g10 = vc + dx2;
  1149. g11 = hc - dx2;
  1150. g12 = hc + dx2;
  1151. var d = "M" + 0 + "," + 0 +
  1152. " L" + w + "," + 0 +
  1153. " L" + w + "," + h +
  1154. " L" + 0 + "," + h +
  1155. " z" +
  1156. "M" + g11 + "," + vc +
  1157. " L" + g12 + "," + g9 +
  1158. " L" + g12 + "," + g10 +
  1159. " z";
  1160. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1161. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1162. break;
  1163. case "actionButtonBeginning":
  1164. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1165. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17;
  1166. dx2 = ss * 3 / 8;
  1167. g9 = vc - dx2;
  1168. g10 = vc + dx2;
  1169. g11 = hc - dx2;
  1170. g12 = hc + dx2;
  1171. g13 = ss * 3 / 4;
  1172. g14 = g13 / 8;
  1173. g15 = g13 / 4;
  1174. g16 = g11 + g14;
  1175. g17 = g11 + g15;
  1176. var d = "M" + 0 + "," + 0 +
  1177. " L" + w + "," + 0 +
  1178. " L" + w + "," + h +
  1179. " L" + 0 + "," + h +
  1180. " z" +
  1181. "M" + g17 + "," + vc +
  1182. " L" + g12 + "," + g9 +
  1183. " L" + g12 + "," + g10 +
  1184. " z" +
  1185. "M" + g16 + "," + g9 +
  1186. " L" + g11 + "," + g9 +
  1187. " L" + g11 + "," + g10 +
  1188. " L" + g16 + "," + g10 +
  1189. " z";
  1190. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1191. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1192. break;
  1193. case "actionButtonDocument":
  1194. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1195. var dx2, g9, g10, dx1, g11, g12, g13, g14, g15;
  1196. dx2 = ss * 3 / 8;
  1197. g9 = vc - dx2;
  1198. g10 = vc + dx2;
  1199. dx1 = ss * 9 / 32;
  1200. g11 = hc - dx1;
  1201. g12 = hc + dx1;
  1202. g13 = ss * 3 / 16;
  1203. g14 = g12 - g13;
  1204. g15 = g9 + g13;
  1205. var d = "M" + 0 + "," + 0 +
  1206. " L" + w + "," + 0 +
  1207. " L" + w + "," + h +
  1208. " L" + 0 + "," + h +
  1209. " z" +
  1210. "M" + g11 + "," + g9 +
  1211. " L" + g14 + "," + g9 +
  1212. " L" + g12 + "," + g15 +
  1213. " L" + g12 + "," + g10 +
  1214. " L" + g11 + "," + g10 +
  1215. " z" +
  1216. "M" + g14 + "," + g9 +
  1217. " L" + g14 + "," + g15 +
  1218. " L" + g12 + "," + g15 +
  1219. " z";
  1220. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1221. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1222. break;
  1223. case "actionButtonEnd":
  1224. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1225. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17;
  1226. dx2 = ss * 3 / 8;
  1227. g9 = vc - dx2;
  1228. g10 = vc + dx2;
  1229. g11 = hc - dx2;
  1230. g12 = hc + dx2;
  1231. g13 = ss * 3 / 4;
  1232. g14 = g13 * 3 / 4;
  1233. g15 = g13 * 7 / 8;
  1234. g16 = g11 + g14;
  1235. g17 = g11 + g15;
  1236. var d = "M" + 0 + "," + h +
  1237. " L" + w + "," + h +
  1238. " L" + w + "," + 0 +
  1239. " L" + 0 + "," + 0 +
  1240. " z" +
  1241. " M" + g17 + "," + g9 +
  1242. " L" + g12 + "," + g9 +
  1243. " L" + g12 + "," + g10 +
  1244. " L" + g17 + "," + g10 +
  1245. " z" +
  1246. " M" + g16 + "," + vc +
  1247. " L" + g11 + "," + g9 +
  1248. " L" + g11 + "," + g10 +
  1249. " z";
  1250. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1251. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1252. break;
  1253. case "actionButtonForwardNext":
  1254. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1255. var dx2, g9, g10, g11, g12;
  1256. dx2 = ss * 3 / 8;
  1257. g9 = vc - dx2;
  1258. g10 = vc + dx2;
  1259. g11 = hc - dx2;
  1260. g12 = hc + dx2;
  1261. var d = "M" + 0 + "," + h +
  1262. " L" + w + "," + h +
  1263. " L" + w + "," + 0 +
  1264. " L" + 0 + "," + 0 +
  1265. " z" +
  1266. " M" + g12 + "," + vc +
  1267. " L" + g11 + "," + g9 +
  1268. " L" + g11 + "," + g10 +
  1269. " z";
  1270. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1271. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1272. break;
  1273. case "actionButtonHelp":
  1274. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1275. var dx2, g9, g11, g13, g14, g15, g16, g19, g20, g21, g23, g24, g27, g29, g30, g31, g33, g36, g37, g41, g42;
  1276. dx2 = ss * 3 / 8;
  1277. g9 = vc - dx2;
  1278. g11 = hc - dx2;
  1279. g13 = ss * 3 / 4;
  1280. g14 = g13 / 7;
  1281. g15 = g13 * 3 / 14;
  1282. g16 = g13 * 2 / 7;
  1283. g19 = g13 * 3 / 7;
  1284. g20 = g13 * 4 / 7;
  1285. g21 = g13 * 17 / 28;
  1286. g23 = g13 * 21 / 28;
  1287. g24 = g13 * 11 / 14;
  1288. g27 = g9 + g16;
  1289. g29 = g9 + g21;
  1290. g30 = g9 + g23;
  1291. g31 = g9 + g24;
  1292. g33 = g11 + g15;
  1293. g36 = g11 + g19;
  1294. g37 = g11 + g20;
  1295. g41 = g13 / 14;
  1296. g42 = g13 * 3 / 28;
  1297. var cX1 = g33 + g16;
  1298. var cX2 = g36 + g14;
  1299. var cY3 = g31 + g42;
  1300. var cX4 = (g37 + g36 + g16) / 2;
  1301. var d = "M" + 0 + "," + 0 +
  1302. " L" + w + "," + 0 +
  1303. " L" + w + "," + h +
  1304. " L" + 0 + "," + h +
  1305. " z" +
  1306. "M" + g33 + "," + g27 +
  1307. shapeArc(cX1, g27, g16, g16, 180, 360, false).replace("M", "L") +
  1308. shapeArc(cX4, g27, g14, g15, 0, 90, false).replace("M", "L") +
  1309. shapeArc(cX4, g29, g41, g42, 270, 180, false).replace("M", "L") +
  1310. " L" + g37 + "," + g30 +
  1311. " L" + g36 + "," + g30 +
  1312. " L" + g36 + "," + g29 +
  1313. shapeArc(cX2, g29, g14, g15, 180, 270, false).replace("M", "L") +
  1314. shapeArc(g37, g27, g41, g42, 90, 0, false).replace("M", "L") +
  1315. shapeArc(cX1, g27, g14, g14, 0, -180, false).replace("M", "L") +
  1316. " z" +
  1317. "M" + hc + "," + g31 +
  1318. shapeArc(hc, cY3, g42, g42, 270, 630, false).replace("M", "L") +
  1319. " z";
  1320. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1321. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1322. break;
  1323. case "actionButtonHome":
  1324. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1325. 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;
  1326. dx2 = ss * 3 / 8;
  1327. g9 = vc - dx2;
  1328. g10 = vc + dx2;
  1329. g11 = hc - dx2;
  1330. g12 = hc + dx2;
  1331. g13 = ss * 3 / 4;
  1332. g14 = g13 / 16;
  1333. g15 = g13 / 8;
  1334. g16 = g13 * 3 / 16;
  1335. g17 = g13 * 5 / 16;
  1336. g18 = g13 * 7 / 16;
  1337. g19 = g13 * 9 / 16;
  1338. g20 = g13 * 11 / 16;
  1339. g21 = g13 * 3 / 4;
  1340. g22 = g13 * 13 / 16;
  1341. g23 = g13 * 7 / 8;
  1342. g24 = g9 + g14;
  1343. g25 = g9 + g16;
  1344. g26 = g9 + g17;
  1345. g27 = g9 + g21;
  1346. g28 = g11 + g15;
  1347. g29 = g11 + g18;
  1348. g30 = g11 + g19;
  1349. g31 = g11 + g20;
  1350. g32 = g11 + g22;
  1351. g33 = g11 + g23;
  1352. var d = "M" + 0 + "," + 0 +
  1353. " L" + w + "," + 0 +
  1354. " L" + w + "," + h +
  1355. " L" + 0 + "," + h +
  1356. " z" +
  1357. " M" + hc + "," + g9 +
  1358. " L" + g11 + "," + vc +
  1359. " L" + g28 + "," + vc +
  1360. " L" + g28 + "," + g10 +
  1361. " L" + g33 + "," + g10 +
  1362. " L" + g33 + "," + vc +
  1363. " L" + g12 + "," + vc +
  1364. " L" + g32 + "," + g26 +
  1365. " L" + g32 + "," + g24 +
  1366. " L" + g31 + "," + g24 +
  1367. " L" + g31 + "," + g25 +
  1368. " z" +
  1369. " M" + g29 + "," + g27 +
  1370. " L" + g30 + "," + g27 +
  1371. " L" + g30 + "," + g10 +
  1372. " L" + g29 + "," + g10 +
  1373. " z";
  1374. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1375. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1376. break;
  1377. case "actionButtonInformation":
  1378. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1379. var dx2, g9, g11, g13, g14, g17, g18, g19, g20, g22, g23, g24, g25, g28, g29, g30, g31, g32, g34, g35, g37, g38;
  1380. dx2 = ss * 3 / 8;
  1381. g9 = vc - dx2;
  1382. g11 = hc - dx2;
  1383. g13 = ss * 3 / 4;
  1384. g14 = g13 / 32;
  1385. g17 = g13 * 5 / 16;
  1386. g18 = g13 * 3 / 8;
  1387. g19 = g13 * 13 / 32;
  1388. g20 = g13 * 19 / 32;
  1389. g22 = g13 * 11 / 16;
  1390. g23 = g13 * 13 / 16;
  1391. g24 = g13 * 7 / 8;
  1392. g25 = g9 + g14;
  1393. g28 = g9 + g17;
  1394. g29 = g9 + g18;
  1395. g30 = g9 + g23;
  1396. g31 = g9 + g24;
  1397. g32 = g11 + g17;
  1398. g34 = g11 + g19;
  1399. g35 = g11 + g20;
  1400. g37 = g11 + g22;
  1401. g38 = g13 * 3 / 32;
  1402. var cY1 = g9 + dx2;
  1403. var cY2 = g25 + g38;
  1404. var d = "M" + 0 + "," + 0 +
  1405. " L" + w + "," + 0 +
  1406. " L" + w + "," + h +
  1407. " L" + 0 + "," + h +
  1408. " z" +
  1409. "M" + hc + "," + g9 +
  1410. shapeArc(hc, cY1, dx2, dx2, 270, 630, false).replace("M", "L") +
  1411. " z" +
  1412. "M" + hc + "," + g25 +
  1413. shapeArc(hc, cY2, g38, g38, 270, 630, false).replace("M", "L") +
  1414. "M" + g32 + "," + g28 +
  1415. " L" + g35 + "," + g28 +
  1416. " L" + g35 + "," + g30 +
  1417. " L" + g37 + "," + g30 +
  1418. " L" + g37 + "," + g31 +
  1419. " L" + g32 + "," + g31 +
  1420. " L" + g32 + "," + g30 +
  1421. " L" + g34 + "," + g30 +
  1422. " L" + g34 + "," + g29 +
  1423. " L" + g32 + "," + g29 +
  1424. " z";
  1425. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1426. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1427. break;
  1428. case "actionButtonMovie":
  1429. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1430. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27,
  1431. g28, g29, g30, g31, g32, g33, g34, g35, g36, g37, g38, g39, g40, g41, g42, g43, g44, g45, g46, g47, g48;
  1432. dx2 = ss * 3 / 8;
  1433. g9 = vc - dx2;
  1434. g10 = vc + dx2;
  1435. g11 = hc - dx2;
  1436. g12 = hc + dx2;
  1437. g13 = ss * 3 / 4;
  1438. g14 = g13 * 1455 / 21600;
  1439. g15 = g13 * 1905 / 21600;
  1440. g16 = g13 * 2325 / 21600;
  1441. g17 = g13 * 16155 / 21600;
  1442. g18 = g13 * 17010 / 21600;
  1443. g19 = g13 * 19335 / 21600;
  1444. g20 = g13 * 19725 / 21600;
  1445. g21 = g13 * 20595 / 21600;
  1446. g22 = g13 * 5280 / 21600;
  1447. g23 = g13 * 5730 / 21600;
  1448. g24 = g13 * 6630 / 21600;
  1449. g25 = g13 * 7492 / 21600;
  1450. g26 = g13 * 9067 / 21600;
  1451. g27 = g13 * 9555 / 21600;
  1452. g28 = g13 * 13342 / 21600;
  1453. g29 = g13 * 14580 / 21600;
  1454. g30 = g13 * 15592 / 21600;
  1455. g31 = g11 + g14;
  1456. g32 = g11 + g15;
  1457. g33 = g11 + g16;
  1458. g34 = g11 + g17;
  1459. g35 = g11 + g18;
  1460. g36 = g11 + g19;
  1461. g37 = g11 + g20;
  1462. g38 = g11 + g21;
  1463. g39 = g9 + g22;
  1464. g40 = g9 + g23;
  1465. g41 = g9 + g24;
  1466. g42 = g9 + g25;
  1467. g43 = g9 + g26;
  1468. g44 = g9 + g27;
  1469. g45 = g9 + g28;
  1470. g46 = g9 + g29;
  1471. g47 = g9 + g30;
  1472. g48 = g9 + g31;
  1473. var d = "M" + 0 + "," + h +
  1474. " L" + w + "," + h +
  1475. " L" + w + "," + 0 +
  1476. " L" + 0 + "," + 0 +
  1477. " z" +
  1478. "M" + g11 + "," + g39 +
  1479. " L" + g11 + "," + g44 +
  1480. " L" + g31 + "," + g44 +
  1481. " L" + g32 + "," + g43 +
  1482. " L" + g33 + "," + g43 +
  1483. " L" + g33 + "," + g47 +
  1484. " L" + g35 + "," + g47 +
  1485. " L" + g35 + "," + g45 +
  1486. " L" + g36 + "," + g45 +
  1487. " L" + g38 + "," + g46 +
  1488. " L" + g12 + "," + g46 +
  1489. " L" + g12 + "," + g41 +
  1490. " L" + g38 + "," + g41 +
  1491. " L" + g37 + "," + g42 +
  1492. " L" + g35 + "," + g42 +
  1493. " L" + g35 + "," + g41 +
  1494. " L" + g34 + "," + g40 +
  1495. " L" + g32 + "," + g40 +
  1496. " L" + g31 + "," + g39 +
  1497. " z";
  1498. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1499. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1500. break;
  1501. case "actionButtonReturn":
  1502. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1503. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27;
  1504. dx2 = ss * 3 / 8;
  1505. g9 = vc - dx2;
  1506. g10 = vc + dx2;
  1507. g11 = hc - dx2;
  1508. g12 = hc + dx2;
  1509. g13 = ss * 3 / 4;
  1510. g14 = g13 * 7 / 8;
  1511. g15 = g13 * 3 / 4;
  1512. g16 = g13 * 5 / 8;
  1513. g17 = g13 * 3 / 8;
  1514. g18 = g13 / 4;
  1515. g19 = g9 + g15;
  1516. g20 = g9 + g16;
  1517. g21 = g9 + g18;
  1518. g22 = g11 + g14;
  1519. g23 = g11 + g15;
  1520. g24 = g11 + g16;
  1521. g25 = g11 + g17;
  1522. g26 = g11 + g18;
  1523. g27 = g13 / 8;
  1524. var cX1 = g24 - g27;
  1525. var cY2 = g19 - g27;
  1526. var cX3 = g11 + g17;
  1527. var cY4 = g10 - g17;
  1528. var d = "M" + 0 + "," + h +
  1529. " L" + w + "," + h +
  1530. " L" + w + "," + 0 +
  1531. " L" + 0 + "," + 0 +
  1532. " z" +
  1533. " M" + g12 + "," + g21 +
  1534. " L" + g23 + "," + g9 +
  1535. " L" + hc + "," + g21 +
  1536. " L" + g24 + "," + g21 +
  1537. " L" + g24 + "," + g20 +
  1538. shapeArc(cX1, g20, g27, g27, 0, 90, false).replace("M", "L") +
  1539. " L" + g25 + "," + g19 +
  1540. shapeArc(g25, cY2, g27, g27, 90, 180, false).replace("M", "L") +
  1541. " L" + g26 + "," + g21 +
  1542. " L" + g11 + "," + g21 +
  1543. " L" + g11 + "," + g20 +
  1544. shapeArc(cX3, g20, g17, g17, 180, 90, false).replace("M", "L") +
  1545. " L" + hc + "," + g10 +
  1546. shapeArc(hc, cY4, g17, g17, 90, 0, false).replace("M", "L") +
  1547. " L" + g22 + "," + g21 +
  1548. " z";
  1549. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1550. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1551. break;
  1552. case "actionButtonSound":
  1553. var hc = w / 2, vc = h / 2, ss = Math.min(w, h);
  1554. var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26;
  1555. dx2 = ss * 3 / 8;
  1556. g9 = vc - dx2;
  1557. g10 = vc + dx2;
  1558. g11 = hc - dx2;
  1559. g12 = hc + dx2;
  1560. g13 = ss * 3 / 4;
  1561. g14 = g13 / 8;
  1562. g15 = g13 * 5 / 16;
  1563. g16 = g13 * 5 / 8;
  1564. g17 = g13 * 11 / 16;
  1565. g18 = g13 * 3 / 4;
  1566. g19 = g13 * 7 / 8;
  1567. g20 = g9 + g14;
  1568. g21 = g9 + g15;
  1569. g22 = g9 + g17;
  1570. g23 = g9 + g19;
  1571. g24 = g11 + g15;
  1572. g25 = g11 + g16;
  1573. g26 = g11 + g18;
  1574. var d = "M" + 0 + "," + 0 +
  1575. " L" + w + "," + 0 +
  1576. " L" + w + "," + h +
  1577. " L" + 0 + "," + h +
  1578. " z" +
  1579. " M" + g11 + "," + g21 +
  1580. " L" + g24 + "," + g21 +
  1581. " L" + g25 + "," + g9 +
  1582. " L" + g25 + "," + g10 +
  1583. " L" + g24 + "," + g22 +
  1584. " L" + g11 + "," + g22 +
  1585. " z" +
  1586. " M" + g26 + "," + g21 +
  1587. " L" + g12 + "," + g20 +
  1588. " M" + g26 + "," + vc +
  1589. " L" + g12 + "," + vc +
  1590. " M" + g26 + "," + g22 +
  1591. " L" + g12 + "," + g23;
  1592. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1593. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1594. break;
  1595. case "irregularSeal1":
  1596. case "irregularSeal2":
  1597. if (shapType == "irregularSeal1") {
  1598. var d = "M" + w * 10800 / 21600 + "," + h * 5800 / 21600 +
  1599. " L" + w * 14522 / 21600 + "," + 0 +
  1600. " L" + w * 14155 / 21600 + "," + h * 5325 / 21600 +
  1601. " L" + w * 18380 / 21600 + "," + h * 4457 / 21600 +
  1602. " L" + w * 16702 / 21600 + "," + h * 7315 / 21600 +
  1603. " L" + w * 21097 / 21600 + "," + h * 8137 / 21600 +
  1604. " L" + w * 17607 / 21600 + "," + h * 10475 / 21600 +
  1605. " L" + w + "," + h * 13290 / 21600 +
  1606. " L" + w * 16837 / 21600 + "," + h * 12942 / 21600 +
  1607. " L" + w * 18145 / 21600 + "," + h * 18095 / 21600 +
  1608. " L" + w * 14020 / 21600 + "," + h * 14457 / 21600 +
  1609. " L" + w * 13247 / 21600 + "," + h * 19737 / 21600 +
  1610. " L" + w * 10532 / 21600 + "," + h * 14935 / 21600 +
  1611. " L" + w * 8485 / 21600 + "," + h +
  1612. " L" + w * 7715 / 21600 + "," + h * 15627 / 21600 +
  1613. " L" + w * 4762 / 21600 + "," + h * 17617 / 21600 +
  1614. " L" + w * 5667 / 21600 + "," + h * 13937 / 21600 +
  1615. " L" + w * 135 / 21600 + "," + h * 14587 / 21600 +
  1616. " L" + w * 3722 / 21600 + "," + h * 11775 / 21600 +
  1617. " L" + 0 + "," + h * 8615 / 21600 +
  1618. " L" + w * 4627 / 21600 + "," + h * 7617 / 21600 +
  1619. " L" + w * 370 / 21600 + "," + h * 2295 / 21600 +
  1620. " L" + w * 7312 / 21600 + "," + h * 6320 / 21600 +
  1621. " L" + w * 8352 / 21600 + "," + h * 2295 / 21600 +
  1622. " z";
  1623. } else if (shapType == "irregularSeal2") {
  1624. var d = "M" + w * 11462 / 21600 + "," + h * 4342 / 21600 +
  1625. " L" + w * 14790 / 21600 + "," + 0 +
  1626. " L" + w * 14525 / 21600 + "," + h * 5777 / 21600 +
  1627. " L" + w * 18007 / 21600 + "," + h * 3172 / 21600 +
  1628. " L" + w * 16380 / 21600 + "," + h * 6532 / 21600 +
  1629. " L" + w + "," + h * 6645 / 21600 +
  1630. " L" + w * 16985 / 21600 + "," + h * 9402 / 21600 +
  1631. " L" + w * 18270 / 21600 + "," + h * 11290 / 21600 +
  1632. " L" + w * 16380 / 21600 + "," + h * 12310 / 21600 +
  1633. " L" + w * 18877 / 21600 + "," + h * 15632 / 21600 +
  1634. " L" + w * 14640 / 21600 + "," + h * 14350 / 21600 +
  1635. " L" + w * 14942 / 21600 + "," + h * 17370 / 21600 +
  1636. " L" + w * 12180 / 21600 + "," + h * 15935 / 21600 +
  1637. " L" + w * 11612 / 21600 + "," + h * 18842 / 21600 +
  1638. " L" + w * 9872 / 21600 + "," + h * 17370 / 21600 +
  1639. " L" + w * 8700 / 21600 + "," + h * 19712 / 21600 +
  1640. " L" + w * 7527 / 21600 + "," + h * 18125 / 21600 +
  1641. " L" + w * 4917 / 21600 + "," + h +
  1642. " L" + w * 4805 / 21600 + "," + h * 18240 / 21600 +
  1643. " L" + w * 1285 / 21600 + "," + h * 17825 / 21600 +
  1644. " L" + w * 3330 / 21600 + "," + h * 15370 / 21600 +
  1645. " L" + 0 + "," + h * 12877 / 21600 +
  1646. " L" + w * 3935 / 21600 + "," + h * 11592 / 21600 +
  1647. " L" + w * 1172 / 21600 + "," + h * 8270 / 21600 +
  1648. " L" + w * 5372 / 21600 + "," + h * 7817 / 21600 +
  1649. " L" + w * 4502 / 21600 + "," + h * 3625 / 21600 +
  1650. " L" + w * 8550 / 21600 + "," + h * 6382 / 21600 +
  1651. " L" + w * 9722 / 21600 + "," + h * 1887 / 21600 +
  1652. " z";
  1653. }
  1654. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1655. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1656. break;
  1657. case "flowChartTerminator":
  1658. var x1, x2, y1, cd2 = 180, cd4 = 90, c3d4 = 270;
  1659. x1 = w * 3475 / 21600;
  1660. x2 = w * 18125 / 21600;
  1661. y1 = h * 10800 / 21600;
  1662. //path attrs: w = 21600; h = 21600;
  1663. var d = "M" + x1 + "," + 0 +
  1664. " L" + x2 + "," + 0 +
  1665. shapeArc(x2, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1666. " L" + x1 + "," + h +
  1667. shapeArc(x1, h / 2, x1, y1, cd4, cd4 + cd2, false).replace("M", "L") +
  1668. " z";
  1669. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1670. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1671. break;
  1672. case "flowChartPunchedTape":
  1673. var x1, x1, y1, y2, cd2 = 180;
  1674. x1 = w * 5 / 20;
  1675. y1 = h * 2 / 20;
  1676. y2 = h * 18 / 20;
  1677. var d = "M" + 0 + "," + y1 +
  1678. shapeArc(x1, y1, x1, y1, cd2, 0, false).replace("M", "L") +
  1679. shapeArc(w * (3 / 4), y1, x1, y1, cd2, 360, false).replace("M", "L") +
  1680. " L" + w + "," + y2 +
  1681. shapeArc(w * (3 / 4), y2, x1, y1, 0, -cd2, false).replace("M", "L") +
  1682. shapeArc(x1, y2, x1, y1, 0, cd2, false).replace("M", "L") +
  1683. " z";
  1684. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1685. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1686. break;
  1687. case "flowChartOnlineStorage":
  1688. var x1, y1, c3d4 = 270, cd4 = 90;
  1689. x1 = w * 1 / 6;
  1690. y1 = h * 3 / 6;
  1691. var d = "M" + x1 + "," + 0 +
  1692. " L" + w + "," + 0 +
  1693. shapeArc(w, h / 2, x1, y1, c3d4, 90, false).replace("M", "L") +
  1694. " L" + x1 + "," + h +
  1695. shapeArc(x1, h / 2, x1, y1, cd4, 270, false).replace("M", "L") +
  1696. " z";
  1697. result += "<path d='" + d + "' 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 "flowChartDisplay":
  1701. var x1, x2, y1, c3d4 = 270, cd2 = 180;
  1702. x1 = w * 1 / 6;
  1703. x2 = w * 5 / 6;
  1704. y1 = h * 3 / 6;
  1705. //path attrs: w = 6; h = 6;
  1706. var d = "M" + 0 + "," + y1 +
  1707. " L" + x1 + "," + 0 +
  1708. " L" + x2 + "," + 0 +
  1709. shapeArc(w, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1710. " L" + x1 + "," + h +
  1711. " z";
  1712. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1713. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1714. break;
  1715. case "flowChartDelay":
  1716. var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90;
  1717. var d = "M" + 0 + "," + 0 +
  1718. " L" + wd2 + "," + 0 +
  1719. shapeArc(wd2, hd2, wd2, hd2, c3d4, c3d4 + cd2, false).replace("M", "L") +
  1720. " L" + 0 + "," + h +
  1721. " z";
  1722. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1723. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1724. break;
  1725. case "flowChartMagneticTape":
  1726. var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90;
  1727. var idy, ib, ang1;
  1728. idy = hd2 * Math.sin(Math.PI / 4);
  1729. ib = hd2 + idy;
  1730. ang1 = Math.atan(h / w);
  1731. var ang1Dg = ang1 * 180 / Math.PI;
  1732. var d = "M" + wd2 + "," + h +
  1733. shapeArc(wd2, hd2, wd2, hd2, cd4, cd2, false).replace("M", "L") +
  1734. shapeArc(wd2, hd2, wd2, hd2, cd2, c3d4, false).replace("M", "L") +
  1735. shapeArc(wd2, hd2, wd2, hd2, c3d4, 360, false).replace("M", "L") +
  1736. shapeArc(wd2, hd2, wd2, hd2, 0, ang1Dg, false).replace("M", "L") +
  1737. " L" + w + "," + ib +
  1738. " L" + w + "," + h +
  1739. " z";
  1740. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1741. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1742. break;
  1743. case "ellipse":
  1744. case "flowChartConnector":
  1745. case "flowChartSummingJunction":
  1746. case "flowChartOr":
  1747. result += "<ellipse cx='" + (w / 2) + "' cy='" + (h / 2) + "' rx='" + (w / 2) + "' ry='" + (h / 2) + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1748. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1749. if (shapType == "flowChartOr") {
  1750. result += " <polyline points='" + w / 2 + " " + 0 + "," + w / 2 + " " + h + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1751. result += " <polyline points='" + 0 + " " + h / 2 + "," + w + " " + h / 2 + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1752. } else if (shapType == "flowChartSummingJunction") {
  1753. var iDx, idy, il, ir, it, ib, hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  1754. var angVal = Math.PI / 4;
  1755. iDx = wd2 * Math.cos(angVal);
  1756. idy = hd2 * Math.sin(angVal);
  1757. il = hc - iDx;
  1758. ir = hc + iDx;
  1759. it = vc - idy;
  1760. ib = vc + idy;
  1761. result += " <polyline points='" + il + " " + it + "," + ir + " " + ib + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1762. result += " <polyline points='" + ir + " " + it + "," + il + " " + ib + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1763. }
  1764. break;
  1765. case "roundRect":
  1766. case "round1Rect":
  1767. case "round2DiagRect":
  1768. case "round2SameRect":
  1769. case "snip1Rect":
  1770. case "snip2DiagRect":
  1771. case "snip2SameRect":
  1772. case "flowChartAlternateProcess":
  1773. case "flowChartPunchedCard":
  1774. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1775. var sAdj1, sAdj1_val;// = 0.33334;
  1776. var sAdj2, sAdj2_val;// = 0.33334;
  1777. var shpTyp, adjTyp;
  1778. if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor === Array) {
  1779. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1780. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1781. if (sAdj_name == "adj1") {
  1782. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1783. sAdj1_val = parseInt(sAdj1.substr(4)) / 50000;
  1784. } else if (sAdj_name == "adj2") {
  1785. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1786. sAdj2_val = parseInt(sAdj2.substr(4)) / 50000;
  1787. }
  1788. }
  1789. } else if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor !== Array) {
  1790. var sAdj = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]);
  1791. sAdj1_val = parseInt(sAdj.substr(4)) / 50000;
  1792. sAdj2_val = 0;
  1793. }
  1794. //console.log("shapType: ",shapType,",node: ",node )
  1795. var tranglRott = "";
  1796. switch (shapType) {
  1797. case "roundRect":
  1798. case "flowChartAlternateProcess":
  1799. shpTyp = "round";
  1800. adjTyp = "cornrAll";
  1801. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1802. sAdj2_val = 0;
  1803. break;
  1804. case "round1Rect":
  1805. shpTyp = "round";
  1806. adjTyp = "cornr1";
  1807. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1808. sAdj2_val = 0;
  1809. break;
  1810. case "round2DiagRect":
  1811. shpTyp = "round";
  1812. adjTyp = "diag";
  1813. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1814. if (sAdj2_val === undefined) sAdj2_val = 0;
  1815. break;
  1816. case "round2SameRect":
  1817. shpTyp = "round";
  1818. adjTyp = "cornr2";
  1819. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1820. if (sAdj2_val === undefined) sAdj2_val = 0;
  1821. break;
  1822. case "snip1Rect":
  1823. case "flowChartPunchedCard":
  1824. shpTyp = "snip";
  1825. adjTyp = "cornr1";
  1826. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1827. sAdj2_val = 0;
  1828. if (shapType == "flowChartPunchedCard") {
  1829. tranglRott = "transform='translate(" + w + ",0) scale(-1,1)'";
  1830. }
  1831. break;
  1832. case "snip2DiagRect":
  1833. shpTyp = "snip";
  1834. adjTyp = "diag";
  1835. if (sAdj1_val === undefined) sAdj1_val = 0;
  1836. if (sAdj2_val === undefined) sAdj2_val = 0.33334;
  1837. break;
  1838. case "snip2SameRect":
  1839. shpTyp = "snip";
  1840. adjTyp = "cornr2";
  1841. if (sAdj1_val === undefined) sAdj1_val = 0.33334;
  1842. if (sAdj2_val === undefined) sAdj2_val = 0;
  1843. break;
  1844. }
  1845. var d_val = shapeSnipRoundRect(w, h, sAdj1_val, sAdj2_val, shpTyp, adjTyp);
  1846. result += "<path " + tranglRott + " d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1847. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1848. break;
  1849. case "snipRoundRect":
  1850. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  1851. var sAdj1, sAdj1_val = 0.33334;
  1852. var sAdj2, sAdj2_val = 0.33334;
  1853. if (shapAdjst_ary !== undefined) {
  1854. for (var i = 0; i < shapAdjst_ary.length; i++) {
  1855. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  1856. if (sAdj_name == "adj1") {
  1857. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1858. sAdj1_val = parseInt(sAdj1.substr(4)) / 50000;
  1859. } else if (sAdj_name == "adj2") {
  1860. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  1861. sAdj2_val = parseInt(sAdj2.substr(4)) / 50000;
  1862. }
  1863. }
  1864. }
  1865. var d_val = "M0," + h + " L" + w + "," + h + " L" + w + "," + (h / 2) * sAdj2_val +
  1866. " L" + (w / 2 + (w / 2) * (1 - sAdj2_val)) + ",0 L" + (w / 2) * sAdj1_val + ",0 Q0,0 0," + (h / 2) * sAdj1_val + " z";
  1867. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1868. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1869. break;
  1870. case "bentConnector2":
  1871. var d = "";
  1872. // if (isFlipV) {
  1873. // d = "M 0 " + w + " L " + h + " " + w + " L " + h + " 0";
  1874. // } else {
  1875. d = "M " + w + " 0 L " + w + " " + h + " L 0 " + h;
  1876. //}
  1877. result += "<path d='" + d + "' stroke='" + border.color +
  1878. "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' fill='none' ";
  1879. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  1880. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  1881. }
  1882. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  1883. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  1884. }
  1885. result += "/>";
  1886. break;
  1887. case "rtTriangle":
  1888. result += " <polygon points='0 0,0 " + h + "," + w + " " + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1889. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1890. break;
  1891. case "triangle":
  1892. case "flowChartExtract":
  1893. case "flowChartMerge":
  1894. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1895. var shapAdjst_val = 0.5;
  1896. if (shapAdjst !== undefined) {
  1897. shapAdjst_val = parseInt(shapAdjst.substr(4)) * slideFactor;
  1898. //console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nshapAdjst_val: "+shapAdjst_val);
  1899. }
  1900. var tranglRott = "";
  1901. if (shapType == "flowChartMerge") {
  1902. tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'";
  1903. }
  1904. result += " <polygon " + tranglRott + " points='" + (w * shapAdjst_val) + " 0,0 " + h + "," + w + " " + h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1905. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1906. break;
  1907. case "diamond":
  1908. case "flowChartDecision":
  1909. case "flowChartSort":
  1910. 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 + ")") +
  1911. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1912. if (shapType == "flowChartSort") {
  1913. result += " <polyline points='0 " + h / 2 + "," + w + " " + h / 2 + "' fill='none' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1914. }
  1915. break;
  1916. case "trapezoid":
  1917. case "flowChartManualOperation":
  1918. case "flowChartManualInput":
  1919. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1920. var adjst_val = 0.2;
  1921. var max_adj_const = 0.7407;
  1922. if (shapAdjst !== undefined) {
  1923. var adjst = parseInt(shapAdjst.substr(4)) * slideFactor;
  1924. adjst_val = (adjst * 0.5) / max_adj_const;
  1925. // console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nadjst_val: "+adjst_val);
  1926. }
  1927. var cnstVal = 0;
  1928. var tranglRott = "";
  1929. if (shapType == "flowChartManualOperation") {
  1930. tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'";
  1931. }
  1932. if (shapType == "flowChartManualInput") {
  1933. adjst_val = 0;
  1934. cnstVal = h / 5;
  1935. }
  1936. 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 + ")") +
  1937. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1938. break;
  1939. case "parallelogram":
  1940. case "flowChartInputOutput":
  1941. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1942. var adjst_val = 0.25;
  1943. var max_adj_const;
  1944. if (w > h) {
  1945. max_adj_const = w / h;
  1946. } else {
  1947. max_adj_const = h / w;
  1948. }
  1949. if (shapAdjst !== undefined) {
  1950. var adjst = parseInt(shapAdjst.substr(4)) / 100000;
  1951. adjst_val = adjst / max_adj_const;
  1952. //console.log("w: "+w+"\nh: "+h+"\nadjst: "+adjst_val+"\nmax_adj_const: "+max_adj_const);
  1953. }
  1954. 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 + ")") +
  1955. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1956. break;
  1957. break;
  1958. case "pentagon":
  1959. 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 + ")") +
  1960. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1961. break;
  1962. case "hexagon":
  1963. case "flowChartPreparation":
  1964. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  1965. var adj = 25000 * slideFactor;
  1966. var vf = 115470 * slideFactor;;
  1967. var cnstVal1 = 50000 * slideFactor;
  1968. var cnstVal2 = 100000 * slideFactor;
  1969. var angVal1 = 60 * Math.PI / 180;
  1970. if (shapAdjst !== undefined) {
  1971. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  1972. }
  1973. var maxAdj, a, shd2, x1, x2, dy1, y1, y2, vc = h / 2, hd2 = h / 2;
  1974. var ss = Math.min(w, h);
  1975. maxAdj = cnstVal1 * w / ss;
  1976. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  1977. shd2 = hd2 * vf / cnstVal2;
  1978. x1 = ss * a / cnstVal2;
  1979. x2 = w - x1;
  1980. dy1 = shd2 * Math.sin(angVal1);
  1981. y1 = vc - dy1;
  1982. y2 = vc + dy1;
  1983. var d = "M" + 0 + "," + vc +
  1984. " L" + x1 + "," + y1 +
  1985. " L" + x2 + "," + y1 +
  1986. " L" + w + "," + vc +
  1987. " L" + x2 + "," + y2 +
  1988. " L" + x1 + "," + y2 +
  1989. " z";
  1990. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1991. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1992. break;
  1993. case "heptagon":
  1994. result += " <polygon points='" + (0.5 * w) + " 0," + w / 8 + " " + h / 4 + ",0 " + (5 / 8) * h + "," + w / 4 + " " + h + "," + (3 / 4) * w + " " + h + "," +
  1995. w + " " + (5 / 8) * h + "," + (7 / 8) * w + " " + h / 4 + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  1996. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  1997. break;
  1998. case "octagon":
  1999. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2000. var adj1 = 0.25;
  2001. if (shapAdjst !== undefined) {
  2002. adj1 = parseInt(shapAdjst.substr(4)) / 100000;
  2003. }
  2004. var adj2 = (1 - adj1);
  2005. //console.log("adj1: "+adj1+"\nadj2: "+adj2);
  2006. result += " <polygon points='" + adj1 * w + " 0,0 " + adj1 * h + ",0 " + adj2 * h + "," + adj1 * w + " " + h + "," + adj2 * w + " " + h + "," +
  2007. w + " " + adj2 * h + "," + w + " " + adj1 * h + "," + adj2 * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2008. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2009. break;
  2010. case "decagon":
  2011. result += " <polygon points='" + (3 / 8) * w + " 0," + w / 8 + " " + h / 8 + ",0 " + h / 2 + "," + w / 8 + " " + (7 / 8) * h + "," + (3 / 8) * w + " " + h + "," +
  2012. (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 + ")") +
  2013. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2014. break;
  2015. case "dodecagon":
  2016. 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 + "," +
  2017. (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 + ")") +
  2018. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2019. break;
  2020. case "star4":
  2021. var a, iwd2, ihd2, sdx, sdy, sx1, sx2, sy1, sy2, yAdj;
  2022. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2023. var adj = 19098 * slideFactor;
  2024. var cnstVal1 = 50000 * slideFactor;
  2025. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2026. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2027. if (shapAdjst !== undefined) {
  2028. var name = shapAdjst["attrs"]["name"];
  2029. if (name == "adj") {
  2030. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2031. //min = 0
  2032. //max = 50000
  2033. }
  2034. }
  2035. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  2036. iwd2 = wd2 * a / cnstVal1;
  2037. ihd2 = hd2 * a / cnstVal1;
  2038. sdx = iwd2 * Math.cos(0.7853981634); //cd8 = 2700000; (45°) =>
  2039. sdy = ihd2 * Math.sin(0.7853981634);
  2040. sx1 = hc - sdx;
  2041. sx2 = hc + sdx;
  2042. sy1 = vc - sdy;
  2043. sy2 = vc + sdy;
  2044. yAdj = vc - ihd2;
  2045. var d = "M0" + "," + vc +
  2046. " L" + sx1 + "," + sy1 +
  2047. " L" + hc + ",0" +
  2048. " L" + sx2 + "," + sy1 +
  2049. " L" + w + "," + vc +
  2050. " L" + sx2 + "," + sy2 +
  2051. " L" + hc + "," + h +
  2052. " L" + sx1 + "," + sy2 +
  2053. " z";
  2054. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2055. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2056. break;
  2057. case "star5":
  2058. var a, swd2, shd2, svc, dx1, dx2, dy1, dy2, x1, x2, x3, x4, y1, y2, iwd2, ihd2, sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sy1, sy2, sy3, yAdj;
  2059. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2060. var adj = 19098 * slideFactor;
  2061. var hf = 105146 * slideFactor;
  2062. var vf = 110557 * slideFactor;
  2063. var maxAdj = 50000 * slideFactor;
  2064. var cnstVal1 = 100000 * slideFactor;
  2065. //var radians = angle * (Math.PI / 180);
  2066. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2067. //console.log("star5 node: ", node, "shapAdjst:", shapAdjst)
  2068. if (shapAdjst !== undefined) {
  2069. Object.keys(shapAdjst).forEach(function (key) {
  2070. var name = shapAdjst[key]["attrs"]["name"];
  2071. if (name == "adj") {
  2072. adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2073. //min = 0
  2074. //max = 50000
  2075. } else if (name == "hf") {
  2076. hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2077. } else if (name == "vf") {
  2078. vf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2079. }
  2080. })
  2081. }
  2082. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2083. swd2 = wd2 * hf / cnstVal1;
  2084. shd2 = hd2 * vf / cnstVal1;
  2085. svc = vc * vf / cnstVal1;
  2086. dx1 = swd2 * Math.cos(0.31415926536); // 1080000
  2087. dx2 = swd2 * Math.cos(5.3407075111); // 18360000
  2088. dy1 = shd2 * Math.sin(0.31415926536); //1080000
  2089. dy2 = shd2 * Math.sin(5.3407075111);// 18360000
  2090. x1 = hc - dx1;
  2091. x2 = hc - dx2;
  2092. x3 = hc + dx2;
  2093. x4 = hc + dx1;
  2094. y1 = svc - dy1;
  2095. y2 = svc - dy2;
  2096. iwd2 = swd2 * a / maxAdj;
  2097. ihd2 = shd2 * a / maxAdj;
  2098. sdx1 = iwd2 * Math.cos(5.9690260418); // 20520000
  2099. sdx2 = iwd2 * Math.cos(0.94247779608); // 3240000
  2100. sdy1 = ihd2 * Math.sin(0.94247779608); // 3240000
  2101. sdy2 = ihd2 * Math.sin(5.9690260418); // 20520000
  2102. sx1 = hc - sdx1;
  2103. sx2 = hc - sdx2;
  2104. sx3 = hc + sdx2;
  2105. sx4 = hc + sdx1;
  2106. sy1 = svc - sdy1;
  2107. sy2 = svc - sdy2;
  2108. sy3 = svc + ihd2;
  2109. yAdj = svc - ihd2;
  2110. var d = "M" + x1 + "," + y1 +
  2111. " L" + sx2 + "," + sy1 +
  2112. " L" + hc + "," + 0 +
  2113. " L" + sx3 + "," + sy1 +
  2114. " L" + x4 + "," + y1 +
  2115. " L" + sx4 + "," + sy2 +
  2116. " L" + x3 + "," + y2 +
  2117. " L" + hc + "," + sy3 +
  2118. " L" + x2 + "," + y2 +
  2119. " L" + sx1 + "," + sy2 +
  2120. " z";
  2121. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2122. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2123. break;
  2124. case "star6":
  2125. var a, swd2, dx1, x1, x2, y2, iwd2, ihd2, sdx2, sx1, sx2, sx3, sx4, sdy1, sy1, sy2, yAdj;
  2126. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4;
  2127. var adj = 28868 * slideFactor;
  2128. var hf = 115470 * slideFactor;
  2129. var maxAdj = 50000 * slideFactor;
  2130. var cnstVal1 = 100000 * slideFactor;
  2131. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2132. //console.log("star5 node: ", node, "shapAdjst:", shapAdjst)
  2133. if (shapAdjst !== undefined) {
  2134. Object.keys(shapAdjst).forEach(function (key) {
  2135. var name = shapAdjst[key]["attrs"]["name"];
  2136. if (name == "adj") {
  2137. adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2138. //min = 0
  2139. //max = 50000
  2140. } else if (name == "hf") {
  2141. hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2142. }
  2143. })
  2144. }
  2145. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2146. swd2 = wd2 * hf / cnstVal1;
  2147. dx1 = swd2 * Math.cos(0.5235987756); //1800000->30 ->0.5235987756
  2148. x1 = hc - dx1;
  2149. x2 = hc + dx1;
  2150. y2 = vc + hd4;
  2151. iwd2 = swd2 * a / maxAdj;
  2152. ihd2 = hd2 * a / maxAdj;
  2153. sdx2 = iwd2 / 2;
  2154. sx1 = hc - iwd2;
  2155. sx2 = hc - sdx2;
  2156. sx3 = hc + sdx2;
  2157. sx4 = hc + iwd2;
  2158. sdy1 = ihd2 * Math.sin(1.0471975512); //3600000->60->1.0471975512
  2159. sy1 = vc - sdy1;
  2160. sy2 = vc + sdy1;
  2161. yAdj = vc - ihd2;
  2162. var d = "M" + x1 + "," + hd4 +
  2163. " L" + sx2 + "," + sy1 +
  2164. " L" + hc + ",0" +
  2165. " L" + sx3 + "," + sy1 +
  2166. " L" + x2 + "," + hd4 +
  2167. " L" + sx4 + "," + vc +
  2168. " L" + x2 + "," + y2 +
  2169. " L" + sx3 + "," + sy2 +
  2170. " L" + hc + "," + h +
  2171. " L" + sx2 + "," + sy2 +
  2172. " L" + x1 + "," + y2 +
  2173. " L" + sx1 + "," + vc +
  2174. " z";
  2175. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2176. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2177. break;
  2178. case "star7":
  2179. var a, swd2, shd2, svc, dx1, dx2, dx3, dy1, dy2, dy3, x1, x2, x3, x4, x5, x6, y1, y2, y3,
  2180. iwd2, ihd2, sdx1, sdx2, sdx3, sx1, sx2, sx3, sx4, sx5, sx6, sdy1, sdy2, sdy3, sy1, sy2, sy3, sy4, yAdj;
  2181. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2182. var adj = 34601 * slideFactor;
  2183. var hf = 102572 * slideFactor;
  2184. var vf = 105210 * slideFactor;
  2185. var maxAdj = 50000 * slideFactor;
  2186. var cnstVal1 = 100000 * slideFactor;
  2187. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2188. //console.log("star5 node: ", node, "shapAdjst:", shapAdjst)
  2189. if (shapAdjst !== undefined) {
  2190. Object.keys(shapAdjst).forEach(function (key) {
  2191. var name = shapAdjst[key]["attrs"]["name"];
  2192. if (name == "adj") {
  2193. adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2194. //min = 0
  2195. //max = 50000
  2196. } else if (name == "hf") {
  2197. hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2198. } else if (name == "vf") {
  2199. vf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2200. }
  2201. })
  2202. }
  2203. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2204. swd2 = wd2 * hf / cnstVal1;
  2205. shd2 = hd2 * vf / cnstVal1;
  2206. svc = vc * vf / cnstVal1;
  2207. dx1 = swd2 * 97493 / 100000;
  2208. dx2 = swd2 * 78183 / 100000;
  2209. dx3 = swd2 * 43388 / 100000;
  2210. dy1 = shd2 * 62349 / 100000;
  2211. dy2 = shd2 * 22252 / 100000;
  2212. dy3 = shd2 * 90097 / 100000;
  2213. x1 = hc - dx1;
  2214. x2 = hc - dx2;
  2215. x3 = hc - dx3;
  2216. x4 = hc + dx3;
  2217. x5 = hc + dx2;
  2218. x6 = hc + dx1;
  2219. y1 = svc - dy1;
  2220. y2 = svc + dy2;
  2221. y3 = svc + dy3;
  2222. iwd2 = swd2 * a / maxAdj;
  2223. ihd2 = shd2 * a / maxAdj;
  2224. sdx1 = iwd2 * 97493 / 100000;
  2225. sdx2 = iwd2 * 78183 / 100000;
  2226. sdx3 = iwd2 * 43388 / 100000;
  2227. sx1 = hc - sdx1;
  2228. sx2 = hc - sdx2;
  2229. sx3 = hc - sdx3;
  2230. sx4 = hc + sdx3;
  2231. sx5 = hc + sdx2;
  2232. sx6 = hc + sdx1;
  2233. sdy1 = ihd2 * 90097 / 100000;
  2234. sdy2 = ihd2 * 22252 / 100000;
  2235. sdy3 = ihd2 * 62349 / 100000;
  2236. sy1 = svc - sdy1;
  2237. sy2 = svc - sdy2;
  2238. sy3 = svc + sdy3;
  2239. sy4 = svc + ihd2;
  2240. yAdj = svc - ihd2;
  2241. var d = "M" + x1 + "," + y2 +
  2242. " L" + sx1 + "," + sy2 +
  2243. " L" + x2 + "," + y1 +
  2244. " L" + sx3 + "," + sy1 +
  2245. " L" + hc + ",0" +
  2246. " L" + sx4 + "," + sy1 +
  2247. " L" + x5 + "," + y1 +
  2248. " L" + sx6 + "," + sy2 +
  2249. " L" + x6 + "," + y2 +
  2250. " L" + sx5 + "," + sy3 +
  2251. " L" + x4 + "," + y3 +
  2252. " L" + hc + "," + sy4 +
  2253. " L" + x3 + "," + y3 +
  2254. " L" + sx2 + "," + sy3 +
  2255. " z";
  2256. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2257. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2258. break;
  2259. case "star8":
  2260. var a, dx1, x1, x2, dy1, y1, y2, iwd2, ihd2, sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sy1, sy2, sy3, sy4, yAdj;
  2261. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2262. var adj = 37500 * slideFactor;
  2263. var maxAdj = 50000 * slideFactor;
  2264. var cnstVal1 = 100000 * slideFactor;
  2265. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2266. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2267. if (shapAdjst !== undefined) {
  2268. var name = shapAdjst["attrs"]["name"];
  2269. if (name == "adj") {
  2270. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2271. //min = 0
  2272. //max = 50000
  2273. }
  2274. }
  2275. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2276. dx1 = wd2 * Math.cos(0.7853981634); //2700000
  2277. x1 = hc - dx1;
  2278. x2 = hc + dx1;
  2279. dy1 = hd2 * Math.sin(0.7853981634); //2700000
  2280. y1 = vc - dy1;
  2281. y2 = vc + dy1;
  2282. iwd2 = wd2 * a / maxAdj;
  2283. ihd2 = hd2 * a / maxAdj;
  2284. sdx1 = iwd2 * 92388 / 100000;
  2285. sdx2 = iwd2 * 38268 / 100000;
  2286. sdy1 = ihd2 * 92388 / 100000;
  2287. sdy2 = ihd2 * 38268 / 100000;
  2288. sx1 = hc - sdx1;
  2289. sx2 = hc - sdx2;
  2290. sx3 = hc + sdx2;
  2291. sx4 = hc + sdx1;
  2292. sy1 = vc - sdy1;
  2293. sy2 = vc - sdy2;
  2294. sy3 = vc + sdy2;
  2295. sy4 = vc + sdy1;
  2296. yAdj = vc - ihd2;
  2297. var d = "M0" + "," + vc +
  2298. " L" + sx1 + "," + sy2 +
  2299. " L" + x1 + "," + y1 +
  2300. " L" + sx2 + "," + sy1 +
  2301. " L" + hc + ",0" +
  2302. " L" + sx3 + "," + sy1 +
  2303. " L" + x2 + "," + y1 +
  2304. " L" + sx4 + "," + sy2 +
  2305. " L" + w + "," + vc +
  2306. " L" + sx4 + "," + sy3 +
  2307. " L" + x2 + "," + y2 +
  2308. " L" + sx3 + "," + sy4 +
  2309. " L" + hc + "," + h +
  2310. " L" + sx2 + "," + sy4 +
  2311. " L" + x1 + "," + y2 +
  2312. " L" + sx1 + "," + sy3 +
  2313. " z";
  2314. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2315. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2316. break;
  2317. case "star10":
  2318. var a, swd2, dx1, dx2, x1, x2, x3, x4, dy1, dy2, y1, y2, y3, y4, iwd2, ihd2,
  2319. sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sx5, sx6, sy1, sy2, sy3, sy4, yAdj;
  2320. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2321. var adj = 42533 * slideFactor;
  2322. var hf = 105146 * slideFactor;
  2323. var maxAdj = 50000 * slideFactor;
  2324. var cnstVal1 = 100000 * slideFactor;
  2325. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2326. //console.log("star5 node: ", node, "shapAdjst:", shapAdjst)
  2327. if (shapAdjst !== undefined) {
  2328. Object.keys(shapAdjst).forEach(function (key) {
  2329. var name = shapAdjst[key]["attrs"]["name"];
  2330. if (name == "adj") {
  2331. adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2332. //min = 0
  2333. //max = 50000
  2334. } else if (name == "hf") {
  2335. hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor;
  2336. }
  2337. })
  2338. }
  2339. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2340. swd2 = wd2 * hf / cnstVal1;
  2341. dx1 = swd2 * 95106 / 100000;
  2342. dx2 = swd2 * 58779 / 100000;
  2343. x1 = hc - dx1;
  2344. x2 = hc - dx2;
  2345. x3 = hc + dx2;
  2346. x4 = hc + dx1;
  2347. dy1 = hd2 * 80902 / 100000;
  2348. dy2 = hd2 * 30902 / 100000;
  2349. y1 = vc - dy1;
  2350. y2 = vc - dy2;
  2351. y3 = vc + dy2;
  2352. y4 = vc + dy1;
  2353. iwd2 = swd2 * a / maxAdj;
  2354. ihd2 = hd2 * a / maxAdj;
  2355. sdx1 = iwd2 * 80902 / 100000;
  2356. sdx2 = iwd2 * 30902 / 100000;
  2357. sdy1 = ihd2 * 95106 / 100000;
  2358. sdy2 = ihd2 * 58779 / 100000;
  2359. sx1 = hc - iwd2;
  2360. sx2 = hc - sdx1;
  2361. sx3 = hc - sdx2;
  2362. sx4 = hc + sdx2;
  2363. sx5 = hc + sdx1;
  2364. sx6 = hc + iwd2;
  2365. sy1 = vc - sdy1;
  2366. sy2 = vc - sdy2;
  2367. sy3 = vc + sdy2;
  2368. sy4 = vc + sdy1;
  2369. yAdj = vc - ihd2;
  2370. var d = "M" + x1 + "," + y2 +
  2371. " L" + sx2 + "," + sy2 +
  2372. " L" + x2 + "," + y1 +
  2373. " L" + sx3 + "," + sy1 +
  2374. " L" + hc + ",0" +
  2375. " L" + sx4 + "," + sy1 +
  2376. " L" + x3 + "," + y1 +
  2377. " L" + sx5 + "," + sy2 +
  2378. " L" + x4 + "," + y2 +
  2379. " L" + sx6 + "," + vc +
  2380. " L" + x4 + "," + y3 +
  2381. " L" + sx5 + "," + sy3 +
  2382. " L" + x3 + "," + y4 +
  2383. " L" + sx4 + "," + sy4 +
  2384. " L" + hc + "," + h +
  2385. " L" + sx3 + "," + sy4 +
  2386. " L" + x2 + "," + y4 +
  2387. " L" + sx2 + "," + sy3 +
  2388. " L" + x1 + "," + y3 +
  2389. " L" + sx1 + "," + vc +
  2390. " z";
  2391. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2392. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2393. break;
  2394. case "star12":
  2395. var a, dx1, dy1, x1, x3, x4, y1, y3, y4, iwd2, ihd2, sdx1, sdx2, sdx3, sdy1,
  2396. sdy2, sdy3, sx1, sx2, sx3, sx4, sx5, sx6, sy1, sy2, sy3, sy4, sy5, sy6, yAdj;
  2397. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4;
  2398. var adj = 37500 * slideFactor;
  2399. var maxAdj = 50000 * slideFactor;
  2400. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2401. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2402. if (shapAdjst !== undefined) {
  2403. var name = shapAdjst["attrs"]["name"];
  2404. if (name == "adj") {
  2405. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2406. //min = 0
  2407. //max = 50000
  2408. }
  2409. }
  2410. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2411. dx1 = wd2 * Math.cos(0.5235987756);
  2412. dy1 = hd2 * Math.sin(1.0471975512);
  2413. x1 = hc - dx1;
  2414. x3 = w * 3 / 4;
  2415. x4 = hc + dx1;
  2416. y1 = vc - dy1;
  2417. y3 = h * 3 / 4;
  2418. y4 = vc + dy1;
  2419. iwd2 = wd2 * a / maxAdj;
  2420. ihd2 = hd2 * a / maxAdj;
  2421. sdx1 = iwd2 * Math.cos(0.2617993878); //900000->15
  2422. sdx2 = iwd2 * Math.cos(0.7853981634);
  2423. sdx3 = iwd2 * Math.cos(1.308996939); //4500000->75
  2424. sdy1 = ihd2 * Math.sin(1.308996939);
  2425. sdy2 = ihd2 * Math.sin(0.7853981634);
  2426. sdy3 = ihd2 * Math.sin(0.2617993878);
  2427. sx1 = hc - sdx1;
  2428. sx2 = hc - sdx2;
  2429. sx3 = hc - sdx3;
  2430. sx4 = hc + sdx3;
  2431. sx5 = hc + sdx2;
  2432. sx6 = hc + sdx1;
  2433. sy1 = vc - sdy1;
  2434. sy2 = vc - sdy2;
  2435. sy3 = vc - sdy3;
  2436. sy4 = vc + sdy3;
  2437. sy5 = vc + sdy2;
  2438. sy6 = vc + sdy1;
  2439. yAdj = vc - ihd2;
  2440. var d = "M0" + "," + vc +
  2441. " L" + sx1 + "," + sy3 +
  2442. " L" + x1 + "," + hd4 +
  2443. " L" + sx2 + "," + sy2 +
  2444. " L" + wd4 + "," + y1 +
  2445. " L" + sx3 + "," + sy1 +
  2446. " L" + hc + ",0" +
  2447. " L" + sx4 + "," + sy1 +
  2448. " L" + x3 + "," + y1 +
  2449. " L" + sx5 + "," + sy2 +
  2450. " L" + x4 + "," + hd4 +
  2451. " L" + sx6 + "," + sy3 +
  2452. " L" + w + "," + vc +
  2453. " L" + sx6 + "," + sy4 +
  2454. " L" + x4 + "," + y3 +
  2455. " L" + sx5 + "," + sy5 +
  2456. " L" + x3 + "," + y4 +
  2457. " L" + sx4 + "," + sy6 +
  2458. " L" + hc + "," + h +
  2459. " L" + sx3 + "," + sy6 +
  2460. " L" + wd4 + "," + y4 +
  2461. " L" + sx2 + "," + sy5 +
  2462. " L" + x1 + "," + y3 +
  2463. " L" + sx1 + "," + sy4 +
  2464. " z";
  2465. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2466. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2467. break;
  2468. case "star16":
  2469. var a, dx1, dx2, dx3, dy1, dy2, dy3, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6,
  2470. iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdy1, sdy2, sdy3, sdy4, sx1, sx2, sx3, sx4,
  2471. sx5, sx6, sx7, sx8, sy1, sy2, sy3, sy4, sy5, sy6, sy7, sy8, iDx, idy, il, it, ir, ib, yAdj;
  2472. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2;
  2473. var adj = 37500 * slideFactor;
  2474. var maxAdj = 50000 * slideFactor;
  2475. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2476. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2477. if (shapAdjst !== undefined) {
  2478. var name = shapAdjst["attrs"]["name"];
  2479. if (name == "adj") {
  2480. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2481. //min = 0
  2482. //max = 50000
  2483. }
  2484. }
  2485. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2486. dx1 = wd2 * 92388 / 100000;
  2487. dx2 = wd2 * 70711 / 100000;
  2488. dx3 = wd2 * 38268 / 100000;
  2489. dy1 = hd2 * 92388 / 100000;
  2490. dy2 = hd2 * 70711 / 100000;
  2491. dy3 = hd2 * 38268 / 100000;
  2492. x1 = hc - dx1;
  2493. x2 = hc - dx2;
  2494. x3 = hc - dx3;
  2495. x4 = hc + dx3;
  2496. x5 = hc + dx2;
  2497. x6 = hc + dx1;
  2498. y1 = vc - dy1;
  2499. y2 = vc - dy2;
  2500. y3 = vc - dy3;
  2501. y4 = vc + dy3;
  2502. y5 = vc + dy2;
  2503. y6 = vc + dy1;
  2504. iwd2 = wd2 * a / maxAdj;
  2505. ihd2 = hd2 * a / maxAdj;
  2506. sdx1 = iwd2 * 98079 / 100000;
  2507. sdx2 = iwd2 * 83147 / 100000;
  2508. sdx3 = iwd2 * 55557 / 100000;
  2509. sdx4 = iwd2 * 19509 / 100000;
  2510. sdy1 = ihd2 * 98079 / 100000;
  2511. sdy2 = ihd2 * 83147 / 100000;
  2512. sdy3 = ihd2 * 55557 / 100000;
  2513. sdy4 = ihd2 * 19509 / 100000;
  2514. sx1 = hc - sdx1;
  2515. sx2 = hc - sdx2;
  2516. sx3 = hc - sdx3;
  2517. sx4 = hc - sdx4;
  2518. sx5 = hc + sdx4;
  2519. sx6 = hc + sdx3;
  2520. sx7 = hc + sdx2;
  2521. sx8 = hc + sdx1;
  2522. sy1 = vc - sdy1;
  2523. sy2 = vc - sdy2;
  2524. sy3 = vc - sdy3;
  2525. sy4 = vc - sdy4;
  2526. sy5 = vc + sdy4;
  2527. sy6 = vc + sdy3;
  2528. sy7 = vc + sdy2;
  2529. sy8 = vc + sdy1;
  2530. iDx = iwd2 * Math.cos(0.7853981634);
  2531. idy = ihd2 * Math.sin(0.7853981634);
  2532. il = hc - iDx;
  2533. it = vc - idy;
  2534. ir = hc + iDx;
  2535. ib = vc + idy;
  2536. yAdj = vc - ihd2;
  2537. var d = "M0" + "," + vc +
  2538. " L" + sx1 + "," + sy4 +
  2539. " L" + x1 + "," + y3 +
  2540. " L" + sx2 + "," + sy3 +
  2541. " L" + x2 + "," + y2 +
  2542. " L" + sx3 + "," + sy2 +
  2543. " L" + x3 + "," + y1 +
  2544. " L" + sx4 + "," + sy1 +
  2545. " L" + hc + ",0" +
  2546. " L" + sx5 + "," + sy1 +
  2547. " L" + x4 + "," + y1 +
  2548. " L" + sx6 + "," + sy2 +
  2549. " L" + x5 + "," + y2 +
  2550. " L" + sx7 + "," + sy3 +
  2551. " L" + x6 + "," + y3 +
  2552. " L" + sx8 + "," + sy4 +
  2553. " L" + w + "," + vc +
  2554. " L" + sx8 + "," + sy5 +
  2555. " L" + x6 + "," + y4 +
  2556. " L" + sx7 + "," + sy6 +
  2557. " L" + x5 + "," + y5 +
  2558. " L" + sx6 + "," + sy7 +
  2559. " L" + x4 + "," + y6 +
  2560. " L" + sx5 + "," + sy8 +
  2561. " L" + hc + "," + h +
  2562. " L" + sx4 + "," + sy8 +
  2563. " L" + x3 + "," + y6 +
  2564. " L" + sx3 + "," + sy7 +
  2565. " L" + x2 + "," + y5 +
  2566. " L" + sx2 + "," + sy6 +
  2567. " L" + x1 + "," + y4 +
  2568. " L" + sx1 + "," + sy5 +
  2569. " z";
  2570. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2571. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2572. break;
  2573. case "star24":
  2574. var a, dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, dy5, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
  2575. y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdx5, sdx6, sdy1,
  2576. sdy2, sdy3, sdy4, sdy5, sdy6, sx1, sx2, sx3, sx4, sx5, sx6, sx7, sx8, sx9, sx10, sx11, sx12,
  2577. sy1, sy2, sy3, sy4, sy5, sy6, sy7, sy8, sy9, sy10, sy11, sy12, iDx, idy, il, it, ir, ib, yAdj;
  2578. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4;
  2579. var adj = 37500 * slideFactor;
  2580. var maxAdj = 50000 * slideFactor;
  2581. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2582. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2583. if (shapAdjst !== undefined) {
  2584. var name = shapAdjst["attrs"]["name"];
  2585. if (name == "adj") {
  2586. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2587. }
  2588. }
  2589. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2590. dx1 = wd2 * Math.cos(0.2617993878);
  2591. dx2 = wd2 * Math.cos(0.5235987756);
  2592. dx3 = wd2 * Math.cos(0.7853981634);
  2593. dx4 = wd4
  2594. dx5 = wd2 * Math.cos(1.308996939);
  2595. dy1 = hd2 * Math.sin(1.308996939);
  2596. dy2 = hd2 * Math.sin(1.0471975512);
  2597. dy3 = hd2 * Math.sin(0.7853981634);
  2598. dy4 = hd4
  2599. dy5 = hd2 * Math.sin(0.2617993878);
  2600. x1 = hc - dx1;
  2601. x2 = hc - dx2;
  2602. x3 = hc - dx3;
  2603. x4 = hc - dx4;
  2604. x5 = hc - dx5;
  2605. x6 = hc + dx5;
  2606. x7 = hc + dx4;
  2607. x8 = hc + dx3;
  2608. x9 = hc + dx2;
  2609. x10 = hc + dx1;
  2610. y1 = vc - dy1;
  2611. y2 = vc - dy2;
  2612. y3 = vc - dy3;
  2613. y4 = vc - dy4;
  2614. y5 = vc - dy5;
  2615. y6 = vc + dy5;
  2616. y7 = vc + dy4;
  2617. y8 = vc + dy3;
  2618. y9 = vc + dy2;
  2619. y10 = vc + dy1;
  2620. iwd2 = wd2 * a / maxAdj;
  2621. ihd2 = hd2 * a / maxAdj;
  2622. sdx1 = iwd2 * 99144 / 100000;
  2623. sdx2 = iwd2 * 92388 / 100000;
  2624. sdx3 = iwd2 * 79335 / 100000;
  2625. sdx4 = iwd2 * 60876 / 100000;
  2626. sdx5 = iwd2 * 38268 / 100000;
  2627. sdx6 = iwd2 * 13053 / 100000;
  2628. sdy1 = ihd2 * 99144 / 100000;
  2629. sdy2 = ihd2 * 92388 / 100000;
  2630. sdy3 = ihd2 * 79335 / 100000;
  2631. sdy4 = ihd2 * 60876 / 100000;
  2632. sdy5 = ihd2 * 38268 / 100000;
  2633. sdy6 = ihd2 * 13053 / 100000;
  2634. sx1 = hc - sdx1;
  2635. sx2 = hc - sdx2;
  2636. sx3 = hc - sdx3;
  2637. sx4 = hc - sdx4;
  2638. sx5 = hc - sdx5;
  2639. sx6 = hc - sdx6;
  2640. sx7 = hc + sdx6;
  2641. sx8 = hc + sdx5;
  2642. sx9 = hc + sdx4;
  2643. sx10 = hc + sdx3;
  2644. sx11 = hc + sdx2;
  2645. sx12 = hc + sdx1;
  2646. sy1 = vc - sdy1;
  2647. sy2 = vc - sdy2;
  2648. sy3 = vc - sdy3;
  2649. sy4 = vc - sdy4;
  2650. sy5 = vc - sdy5;
  2651. sy6 = vc - sdy6;
  2652. sy7 = vc + sdy6;
  2653. sy8 = vc + sdy5;
  2654. sy9 = vc + sdy4;
  2655. sy10 = vc + sdy3;
  2656. sy11 = vc + sdy2;
  2657. sy12 = vc + sdy1;
  2658. iDx = iwd2 * Math.cos(0.7853981634);
  2659. idy = ihd2 * Math.sin(0.7853981634);
  2660. il = hc - iDx;
  2661. it = vc - idy;
  2662. ir = hc + iDx;
  2663. ib = vc + idy;
  2664. yAdj = vc - ihd2;
  2665. var d = "M0" + "," + vc +
  2666. " L" + sx1 + "," + sy6 +
  2667. " L" + x1 + "," + y5 +
  2668. " L" + sx2 + "," + sy5 +
  2669. " L" + x2 + "," + y4 +
  2670. " L" + sx3 + "," + sy4 +
  2671. " L" + x3 + "," + y3 +
  2672. " L" + sx4 + "," + sy3 +
  2673. " L" + x4 + "," + y2 +
  2674. " L" + sx5 + "," + sy2 +
  2675. " L" + x5 + "," + y1 +
  2676. " L" + sx6 + "," + sy1 +
  2677. " L" + hc + "," + 0 +
  2678. " L" + sx7 + "," + sy1 +
  2679. " L" + x6 + "," + y1 +
  2680. " L" + sx8 + "," + sy2 +
  2681. " L" + x7 + "," + y2 +
  2682. " L" + sx9 + "," + sy3 +
  2683. " L" + x8 + "," + y3 +
  2684. " L" + sx10 + "," + sy4 +
  2685. " L" + x9 + "," + y4 +
  2686. " L" + sx11 + "," + sy5 +
  2687. " L" + x10 + "," + y5 +
  2688. " L" + sx12 + "," + sy6 +
  2689. " L" + w + "," + vc +
  2690. " L" + sx12 + "," + sy7 +
  2691. " L" + x10 + "," + y6 +
  2692. " L" + sx11 + "," + sy8 +
  2693. " L" + x9 + "," + y7 +
  2694. " L" + sx10 + "," + sy9 +
  2695. " L" + x8 + "," + y8 +
  2696. " L" + sx9 + "," + sy10 +
  2697. " L" + x7 + "," + y9 +
  2698. " L" + sx8 + "," + sy11 +
  2699. " L" + x6 + "," + y10 +
  2700. " L" + sx7 + "," + sy12 +
  2701. " L" + hc + "," + h +
  2702. " L" + sx6 + "," + sy12 +
  2703. " L" + x5 + "," + y10 +
  2704. " L" + sx5 + "," + sy11 +
  2705. " L" + x4 + "," + y9 +
  2706. " L" + sx4 + "," + sy10 +
  2707. " L" + x3 + "," + y8 +
  2708. " L" + sx3 + "," + sy9 +
  2709. " L" + x2 + "," + y7 +
  2710. " L" + sx2 + "," + sy8 +
  2711. " L" + x1 + "," + y6 +
  2712. " L" + sx1 + "," + sy7 +
  2713. " z";
  2714. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2715. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2716. break;
  2717. case "star32":
  2718. var a, dx1, dx2, dx3, dx4, dx5, dx6, dx7, dy1, dy2, dy3, dy4, dy5, dy6, dy7, x1, x2, x3, x4, x5, x6,
  2719. x7, x8, x9, x10, x11, x12, x13, x14, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
  2720. iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdx5, sdx6, sdx7, sdx8, sdy1, sdy2, sdy3, sdy4, sdy5, sdy6, sdy7,
  2721. sdy8, sx1, sx2, sx3, sx4, sx5, sx6, sx7, sx8, sx9, sx10, sx11, sx12, sx13, sx14, sx15, sx16, sy1, sy2,
  2722. sy3, sy4, sy5, sy6, sy7, sy8, sy9, sy10, sy11, sy12, sy13, sy14, sy15, sy16, iDx, idy, il, it, ir, ib, yAdj;
  2723. var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4;
  2724. var adj = 37500 * slideFactor;
  2725. var maxAdj = 50000 * slideFactor;
  2726. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"];
  2727. //console.log("star4 node: ", node, "shapAdjst:", shapAdjst)
  2728. if (shapAdjst !== undefined) {
  2729. var name = shapAdjst["attrs"]["name"];
  2730. if (name == "adj") {
  2731. adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor;
  2732. }
  2733. }
  2734. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  2735. dx1 = wd2 * 98079 / 100000;
  2736. dx2 = wd2 * 92388 / 100000;
  2737. dx3 = wd2 * 83147 / 100000;
  2738. dx4 = wd2 * Math.cos(0.7853981634);
  2739. dx5 = wd2 * 55557 / 100000;
  2740. dx6 = wd2 * 38268 / 100000;
  2741. dx7 = wd2 * 19509 / 100000;
  2742. dy1 = hd2 * 98079 / 100000;
  2743. dy2 = hd2 * 92388 / 100000;
  2744. dy3 = hd2 * 83147 / 100000;
  2745. dy4 = hd2 * Math.sin(0.7853981634);
  2746. dy5 = hd2 * 55557 / 100000;
  2747. dy6 = hd2 * 38268 / 100000;
  2748. dy7 = hd2 * 19509 / 100000;
  2749. x1 = hc - dx1;
  2750. x2 = hc - dx2;
  2751. x3 = hc - dx3;
  2752. x4 = hc - dx4;
  2753. x5 = hc - dx5;
  2754. x6 = hc - dx6;
  2755. x7 = hc - dx7;
  2756. x8 = hc + dx7;
  2757. x9 = hc + dx6;
  2758. x10 = hc + dx5;
  2759. x11 = hc + dx4;
  2760. x12 = hc + dx3;
  2761. x13 = hc + dx2;
  2762. x14 = hc + dx1;
  2763. y1 = vc - dy1;
  2764. y2 = vc - dy2;
  2765. y3 = vc - dy3;
  2766. y4 = vc - dy4;
  2767. y5 = vc - dy5;
  2768. y6 = vc - dy6;
  2769. y7 = vc - dy7;
  2770. y8 = vc + dy7;
  2771. y9 = vc + dy6;
  2772. y10 = vc + dy5;
  2773. y11 = vc + dy4;
  2774. y12 = vc + dy3;
  2775. y13 = vc + dy2;
  2776. y14 = vc + dy1;
  2777. iwd2 = wd2 * a / maxAdj;
  2778. ihd2 = hd2 * a / maxAdj;
  2779. sdx1 = iwd2 * 99518 / 100000;
  2780. sdx2 = iwd2 * 95694 / 100000;
  2781. sdx3 = iwd2 * 88192 / 100000;
  2782. sdx4 = iwd2 * 77301 / 100000;
  2783. sdx5 = iwd2 * 63439 / 100000;
  2784. sdx6 = iwd2 * 47140 / 100000;
  2785. sdx7 = iwd2 * 29028 / 100000;
  2786. sdx8 = iwd2 * 9802 / 100000;
  2787. sdy1 = ihd2 * 99518 / 100000;
  2788. sdy2 = ihd2 * 95694 / 100000;
  2789. sdy3 = ihd2 * 88192 / 100000;
  2790. sdy4 = ihd2 * 77301 / 100000;
  2791. sdy5 = ihd2 * 63439 / 100000;
  2792. sdy6 = ihd2 * 47140 / 100000;
  2793. sdy7 = ihd2 * 29028 / 100000;
  2794. sdy8 = ihd2 * 9802 / 100000;
  2795. sx1 = hc - sdx1;
  2796. sx2 = hc - sdx2;
  2797. sx3 = hc - sdx3;
  2798. sx4 = hc - sdx4;
  2799. sx5 = hc - sdx5;
  2800. sx6 = hc - sdx6;
  2801. sx7 = hc - sdx7;
  2802. sx8 = hc - sdx8;
  2803. sx9 = hc + sdx8;
  2804. sx10 = hc + sdx7;
  2805. sx11 = hc + sdx6;
  2806. sx12 = hc + sdx5;
  2807. sx13 = hc + sdx4;
  2808. sx14 = hc + sdx3;
  2809. sx15 = hc + sdx2;
  2810. sx16 = hc + sdx1;
  2811. sy1 = vc - sdy1;
  2812. sy2 = vc - sdy2;
  2813. sy3 = vc - sdy3;
  2814. sy4 = vc - sdy4;
  2815. sy5 = vc - sdy5;
  2816. sy6 = vc - sdy6;
  2817. sy7 = vc - sdy7;
  2818. sy8 = vc - sdy8;
  2819. sy9 = vc + sdy8;
  2820. sy10 = vc + sdy7;
  2821. sy11 = vc + sdy6;
  2822. sy12 = vc + sdy5;
  2823. sy13 = vc + sdy4;
  2824. sy14 = vc + sdy3;
  2825. sy15 = vc + sdy2;
  2826. sy16 = vc + sdy1;
  2827. iDx = iwd2 * Math.cos(0.7853981634);
  2828. idy = ihd2 * Math.sin(0.7853981634);
  2829. il = hc - iDx;
  2830. it = vc - idy;
  2831. ir = hc + iDx;
  2832. ib = vc + idy;
  2833. yAdj = vc - ihd2;
  2834. var d = "M0" + "," + vc +
  2835. " L" + sx1 + "," + sy8 +
  2836. " L" + x1 + "," + y7 +
  2837. " L" + sx2 + "," + sy7 +
  2838. " L" + x2 + "," + y6 +
  2839. " L" + sx3 + "," + sy6 +
  2840. " L" + x3 + "," + y5 +
  2841. " L" + sx4 + "," + sy5 +
  2842. " L" + x4 + "," + y4 +
  2843. " L" + sx5 + "," + sy4 +
  2844. " L" + x5 + "," + y3 +
  2845. " L" + sx6 + "," + sy3 +
  2846. " L" + x6 + "," + y2 +
  2847. " L" + sx7 + "," + sy2 +
  2848. " L" + x7 + "," + y1 +
  2849. " L" + sx8 + "," + sy1 +
  2850. " L" + hc + "," + 0 +
  2851. " L" + sx9 + "," + sy1 +
  2852. " L" + x8 + "," + y1 +
  2853. " L" + sx10 + "," + sy2 +
  2854. " L" + x9 + "," + y2 +
  2855. " L" + sx11 + "," + sy3 +
  2856. " L" + x10 + "," + y3 +
  2857. " L" + sx12 + "," + sy4 +
  2858. " L" + x11 + "," + y4 +
  2859. " L" + sx13 + "," + sy5 +
  2860. " L" + x12 + "," + y5 +
  2861. " L" + sx14 + "," + sy6 +
  2862. " L" + x13 + "," + y6 +
  2863. " L" + sx15 + "," + sy7 +
  2864. " L" + x14 + "," + y7 +
  2865. " L" + sx16 + "," + sy8 +
  2866. " L" + w + "," + vc +
  2867. " L" + sx16 + "," + sy9 +
  2868. " L" + x14 + "," + y8 +
  2869. " L" + sx15 + "," + sy10 +
  2870. " L" + x13 + "," + y9 +
  2871. " L" + sx14 + "," + sy11 +
  2872. " L" + x12 + "," + y10 +
  2873. " L" + sx13 + "," + sy12 +
  2874. " L" + x11 + "," + y11 +
  2875. " L" + sx12 + "," + sy13 +
  2876. " L" + x10 + "," + y12 +
  2877. " L" + sx11 + "," + sy14 +
  2878. " L" + x9 + "," + y13 +
  2879. " L" + sx10 + "," + sy15 +
  2880. " L" + x8 + "," + y14 +
  2881. " L" + sx9 + "," + sy16 +
  2882. " L" + hc + "," + h +
  2883. " L" + sx8 + "," + sy16 +
  2884. " L" + x7 + "," + y14 +
  2885. " L" + sx7 + "," + sy15 +
  2886. " L" + x6 + "," + y13 +
  2887. " L" + sx6 + "," + sy14 +
  2888. " L" + x5 + "," + y12 +
  2889. " L" + sx5 + "," + sy13 +
  2890. " L" + x4 + "," + y11 +
  2891. " L" + sx4 + "," + sy12 +
  2892. " L" + x3 + "," + y10 +
  2893. " L" + sx3 + "," + sy11 +
  2894. " L" + x2 + "," + y9 +
  2895. " L" + sx2 + "," + sy10 +
  2896. " L" + x1 + "," + y8 +
  2897. " L" + sx1 + "," + sy9 +
  2898. " z";
  2899. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2900. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2901. break;
  2902. case "pie":
  2903. case "pieWedge":
  2904. case "arc":
  2905. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2906. var adj1, adj2, H, shapAdjst1, shapAdjst2, isClose;
  2907. if (shapType == "pie") {
  2908. adj1 = 0;
  2909. adj2 = 270;
  2910. H = h;
  2911. isClose = true;
  2912. } else if (shapType == "pieWedge") {
  2913. adj1 = 180;
  2914. adj2 = 270;
  2915. H = 2 * h;
  2916. isClose = true;
  2917. } else if (shapType == "arc") {
  2918. adj1 = 270;
  2919. adj2 = 0;
  2920. H = h;
  2921. isClose = false;
  2922. }
  2923. if (shapAdjst !== undefined) {
  2924. shapAdjst1 = getTextByPathList(shapAdjst, ["attrs", "fmla"]);
  2925. shapAdjst2 = shapAdjst1;
  2926. if (shapAdjst1 === undefined) {
  2927. shapAdjst1 = shapAdjst[0]["attrs"]["fmla"];
  2928. shapAdjst2 = shapAdjst[1]["attrs"]["fmla"];
  2929. }
  2930. if (shapAdjst1 !== undefined) {
  2931. adj1 = parseInt(shapAdjst1.substr(4)) / 60000;
  2932. }
  2933. if (shapAdjst2 !== undefined) {
  2934. adj2 = parseInt(shapAdjst2.substr(4)) / 60000;
  2935. }
  2936. }
  2937. var pieVals = shapePie(H, w, adj1, adj2, isClose);
  2938. //console.log("shapType: ",shapType,"\nimgFillFlg: ",imgFillFlg,"\ngrndFillFlg: ",grndFillFlg,"\nshpId: ",shpId,"\nfillColor: ",fillColor);
  2939. result += "<path d='" + pieVals[0] + "' transform='" + pieVals[1] + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2940. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2941. break;
  2942. case "chord":
  2943. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  2944. var sAdj1, sAdj1_val = 45;
  2945. var sAdj2, sAdj2_val = 270;
  2946. if (shapAdjst_ary !== undefined) {
  2947. for (var i = 0; i < shapAdjst_ary.length; i++) {
  2948. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  2949. if (sAdj_name == "adj1") {
  2950. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2951. sAdj1_val = parseInt(sAdj1.substr(4)) / 60000;
  2952. } else if (sAdj_name == "adj2") {
  2953. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  2954. sAdj2_val = parseInt(sAdj2.substr(4)) / 60000;
  2955. }
  2956. }
  2957. }
  2958. var hR = h / 2;
  2959. var wR = w / 2;
  2960. var d_val = shapeArc(wR, hR, wR, hR, sAdj1_val, sAdj2_val, true);
  2961. //console.log("shapType: ",shapType,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val)
  2962. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2963. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2964. break;
  2965. case "frame":
  2966. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2967. var adj1 = 12500 * slideFactor;
  2968. var cnstVal1 = 50000 * slideFactor;
  2969. var cnstVal2 = 100000 * slideFactor;
  2970. if (shapAdjst !== undefined) {
  2971. adj1 = parseInt(shapAdjst.substr(4)) * slideFactor;
  2972. }
  2973. var a1, x1, x4, y4;
  2974. if (adj1 < 0) a1 = 0
  2975. else if (adj1 > cnstVal1) a1 = cnstVal1
  2976. else a1 = adj1
  2977. x1 = Math.min(w, h) * a1 / cnstVal2;
  2978. x4 = w - x1;
  2979. y4 = h - x1;
  2980. var d = "M" + 0 + "," + 0 +
  2981. " L" + w + "," + 0 +
  2982. " L" + w + "," + h +
  2983. " L" + 0 + "," + h +
  2984. " z" +
  2985. "M" + x1 + "," + x1 +
  2986. " L" + x1 + "," + y4 +
  2987. " L" + x4 + "," + y4 +
  2988. " L" + x4 + "," + x1 +
  2989. " z";
  2990. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  2991. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  2992. break;
  2993. case "donut":
  2994. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  2995. var adj = 25000 * slideFactor;
  2996. var cnstVal1 = 50000 * slideFactor;
  2997. var cnstVal2 = 100000 * slideFactor;
  2998. if (shapAdjst !== undefined) {
  2999. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3000. }
  3001. var a, dr, iwd2, ihd2;
  3002. if (adj < 0) a = 0
  3003. else if (adj > cnstVal1) a = cnstVal1
  3004. else a = adj
  3005. dr = Math.min(w, h) * a / cnstVal2;
  3006. iwd2 = w / 2 - dr;
  3007. ihd2 = h / 2 - dr;
  3008. var d = "M" + 0 + "," + h / 2 +
  3009. shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") +
  3010. shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") +
  3011. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  3012. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") +
  3013. " z" +
  3014. "M" + dr + "," + h / 2 +
  3015. shapeArc(w / 2, h / 2, iwd2, ihd2, 180, 90, false).replace("M", "L") +
  3016. shapeArc(w / 2, h / 2, iwd2, ihd2, 90, 0, false).replace("M", "L") +
  3017. shapeArc(w / 2, h / 2, iwd2, ihd2, 0, -90, false).replace("M", "L") +
  3018. shapeArc(w / 2, h / 2, iwd2, ihd2, 270, 180, false).replace("M", "L") +
  3019. " z";
  3020. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3021. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3022. break;
  3023. case "noSmoking":
  3024. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3025. var adj = 18750 * slideFactor;
  3026. var cnstVal1 = 50000 * slideFactor;
  3027. var cnstVal2 = 100000 * slideFactor;
  3028. if (shapAdjst !== undefined) {
  3029. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3030. }
  3031. var a, dr, iwd2, ihd2, ang, ang2rad, ct, st, m, n, drd2, dang, dang2, swAng, t3, stAng1, stAng2;
  3032. if (adj < 0) a = 0
  3033. else if (adj > cnstVal1) a = cnstVal1
  3034. else a = adj
  3035. dr = Math.min(w, h) * a / cnstVal2;
  3036. iwd2 = w / 2 - dr;
  3037. ihd2 = h / 2 - dr;
  3038. ang = Math.atan(h / w);
  3039. //ang2rad = ang*Math.PI/180;
  3040. ct = ihd2 * Math.cos(ang);
  3041. st = iwd2 * Math.sin(ang);
  3042. m = Math.sqrt(ct * ct + st * st); //"mod ct st 0"
  3043. n = iwd2 * ihd2 / m;
  3044. drd2 = dr / 2;
  3045. dang = Math.atan(drd2 / n);
  3046. dang2 = dang * 2;
  3047. swAng = -Math.PI + dang2;
  3048. //t3 = Math.atan(h/w);
  3049. stAng1 = ang - dang;
  3050. stAng2 = stAng1 - Math.PI;
  3051. var ct1, st1, m1, n1, dx1, dy1, x1, y1, y1, y2;
  3052. ct1 = ihd2 * Math.cos(stAng1);
  3053. st1 = iwd2 * Math.sin(stAng1);
  3054. m1 = Math.sqrt(ct1 * ct1 + st1 * st1); //"mod ct1 st1 0"
  3055. n1 = iwd2 * ihd2 / m1;
  3056. dx1 = n1 * Math.cos(stAng1);
  3057. dy1 = n1 * Math.sin(stAng1);
  3058. x1 = w / 2 + dx1;
  3059. y1 = h / 2 + dy1;
  3060. x2 = w / 2 - dx1;
  3061. y2 = h / 2 - dy1;
  3062. var stAng1deg = stAng1 * 180 / Math.PI;
  3063. var stAng2deg = stAng2 * 180 / Math.PI;
  3064. var swAng2deg = swAng * 180 / Math.PI;
  3065. var d = "M" + 0 + "," + h / 2 +
  3066. shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") +
  3067. shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") +
  3068. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  3069. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") +
  3070. " z" +
  3071. "M" + x1 + "," + y1 +
  3072. shapeArc(w / 2, h / 2, iwd2, ihd2, stAng1deg, (stAng1deg + swAng2deg), false).replace("M", "L") +
  3073. " z" +
  3074. "M" + x2 + "," + y2 +
  3075. shapeArc(w / 2, h / 2, iwd2, ihd2, stAng2deg, (stAng2deg + swAng2deg), false).replace("M", "L") +
  3076. " z";
  3077. //console.log("adj: ",adj,"x1:",x1,",y1:",y1," x2:",x2,",y2:",y2,",stAng1:",stAng1,",stAng1deg:",stAng1deg,",stAng2:",stAng2,",stAng2deg:",stAng2deg,",swAng:",swAng,",swAng2deg:",swAng2deg)
  3078. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3079. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3080. break;
  3081. case "halfFrame":
  3082. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3083. var sAdj1, sAdj1_val = 3.5;
  3084. var sAdj2, sAdj2_val = 3.5;
  3085. var cnsVal = 100000 * slideFactor;
  3086. if (shapAdjst_ary !== undefined) {
  3087. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3088. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3089. if (sAdj_name == "adj1") {
  3090. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3091. sAdj1_val = parseInt(sAdj1.substr(4)) * slideFactor;
  3092. } else if (sAdj_name == "adj2") {
  3093. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3094. sAdj2_val = parseInt(sAdj2.substr(4)) * slideFactor;
  3095. }
  3096. }
  3097. }
  3098. var minWH = Math.min(w, h);
  3099. var maxAdj2 = (cnsVal * w) / minWH;
  3100. var a1, a2;
  3101. if (sAdj2_val < 0) a2 = 0
  3102. else if (sAdj2_val > maxAdj2) a2 = maxAdj2
  3103. else a2 = sAdj2_val
  3104. var x1 = (minWH * a2) / cnsVal;
  3105. var g1 = h * x1 / w;
  3106. var g2 = h - g1;
  3107. var maxAdj1 = (cnsVal * g2) / minWH;
  3108. if (sAdj1_val < 0) a1 = 0
  3109. else if (sAdj1_val > maxAdj1) a1 = maxAdj1
  3110. else a1 = sAdj1_val
  3111. var y1 = minWH * a1 / cnsVal;
  3112. var dx2 = y1 * w / h;
  3113. var x2 = w - dx2;
  3114. var dy2 = x1 * h / w;
  3115. var y2 = h - dy2;
  3116. var d = "M0,0" +
  3117. " L" + w + "," + 0 +
  3118. " L" + x2 + "," + y1 +
  3119. " L" + x1 + "," + y1 +
  3120. " L" + x1 + "," + y2 +
  3121. " L0," + h + " z";
  3122. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3123. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3124. //console.log("w: ",w,", h: ",h,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val,",maxAdj1: ",maxAdj1,",maxAdj2: ",maxAdj2)
  3125. break;
  3126. case "blockArc":
  3127. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3128. var sAdj1, adj1 = 180;
  3129. var sAdj2, adj2 = 0;
  3130. var sAdj3, adj3 = 25000 * slideFactor;
  3131. var cnstVal1 = 50000 * slideFactor;
  3132. var cnstVal2 = 100000 * slideFactor;
  3133. if (shapAdjst_ary !== undefined) {
  3134. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3135. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3136. if (sAdj_name == "adj1") {
  3137. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3138. adj1 = parseInt(sAdj1.substr(4)) / 60000;
  3139. } else if (sAdj_name == "adj2") {
  3140. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3141. adj2 = parseInt(sAdj2.substr(4)) / 60000;
  3142. } else if (sAdj_name == "adj3") {
  3143. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3144. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  3145. }
  3146. }
  3147. }
  3148. var stAng, istAng, a3, sw11, sw12, swAng, iswAng;
  3149. var cd1 = 360;
  3150. if (adj1 < 0) stAng = 0
  3151. else if (adj1 > cd1) stAng = cd1
  3152. else stAng = adj1 //180
  3153. if (adj2 < 0) istAng = 0
  3154. else if (adj2 > cd1) istAng = cd1
  3155. else istAng = adj2 //0
  3156. if (adj3 < 0) a3 = 0
  3157. else if (adj3 > cnstVal1) a3 = cnstVal1
  3158. else a3 = adj3
  3159. sw11 = istAng - stAng; // -180
  3160. sw12 = sw11 + cd1; //180
  3161. swAng = (sw11 > 0) ? sw11 : sw12; //180
  3162. iswAng = -swAng; //-180
  3163. var endAng = stAng + swAng;
  3164. var iendAng = istAng + iswAng;
  3165. var wt1, ht1, dx1, dy1, x1, y1, stRd, istRd, wd2, hd2, hc, vc;
  3166. stRd = stAng * (Math.PI) / 180;
  3167. istRd = istAng * (Math.PI) / 180;
  3168. wd2 = w / 2;
  3169. hd2 = h / 2;
  3170. hc = w / 2;
  3171. vc = h / 2;
  3172. if (stAng > 90 && stAng < 270) {
  3173. wt1 = wd2 * (Math.sin((Math.PI) / 2 - stRd));
  3174. ht1 = hd2 * (Math.cos((Math.PI) / 2 - stRd));
  3175. dx1 = wd2 * (Math.cos(Math.atan(ht1 / wt1)));
  3176. dy1 = hd2 * (Math.sin(Math.atan(ht1 / wt1)));
  3177. x1 = hc - dx1;
  3178. y1 = vc - dy1;
  3179. } else {
  3180. wt1 = wd2 * (Math.sin(stRd));
  3181. ht1 = hd2 * (Math.cos(stRd));
  3182. dx1 = wd2 * (Math.cos(Math.atan(wt1 / ht1)));
  3183. dy1 = hd2 * (Math.sin(Math.atan(wt1 / ht1)));
  3184. x1 = hc + dx1;
  3185. y1 = vc + dy1;
  3186. }
  3187. var dr, iwd2, ihd2, wt2, ht2, dx2, dy2, x2, y2;
  3188. dr = Math.min(w, h) * a3 / cnstVal2;
  3189. iwd2 = wd2 - dr;
  3190. ihd2 = hd2 - dr;
  3191. //console.log("stAng: ",stAng," swAng: ",swAng ," endAng:",endAng)
  3192. if ((endAng <= 450 && endAng > 270) || ((endAng >= 630 && endAng < 720))) {
  3193. wt2 = iwd2 * (Math.sin(istRd));
  3194. ht2 = ihd2 * (Math.cos(istRd));
  3195. dx2 = iwd2 * (Math.cos(Math.atan(wt2 / ht2)));
  3196. dy2 = ihd2 * (Math.sin(Math.atan(wt2 / ht2)));
  3197. x2 = hc + dx2;
  3198. y2 = vc + dy2;
  3199. } else {
  3200. wt2 = iwd2 * (Math.sin((Math.PI) / 2 - istRd));
  3201. ht2 = ihd2 * (Math.cos((Math.PI) / 2 - istRd));
  3202. dx2 = iwd2 * (Math.cos(Math.atan(ht2 / wt2)));
  3203. dy2 = ihd2 * (Math.sin(Math.atan(ht2 / wt2)));
  3204. x2 = hc - dx2;
  3205. y2 = vc - dy2;
  3206. }
  3207. var d = "M" + x1 + "," + y1 +
  3208. shapeArc(wd2, hd2, wd2, hd2, stAng, endAng, false).replace("M", "L") +
  3209. " L" + x2 + "," + y2 +
  3210. shapeArc(wd2, hd2, iwd2, ihd2, istAng, iendAng, false).replace("M", "L") +
  3211. " z";
  3212. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3213. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3214. break;
  3215. case "bracePair":
  3216. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3217. var adj = 8333 * slideFactor;
  3218. var cnstVal1 = 25000 * slideFactor;
  3219. var cnstVal2 = 50000 * slideFactor;
  3220. var cnstVal3 = 100000 * slideFactor;
  3221. if (shapAdjst !== undefined) {
  3222. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3223. }
  3224. var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, x3, x4, y2, y3, y4;
  3225. if (adj < 0) a = 0
  3226. else if (adj > cnstVal1) a = cnstVal1
  3227. else a = adj
  3228. var minWH = Math.min(w, h);
  3229. x1 = minWH * a / cnstVal3;
  3230. x2 = minWH * a / cnstVal2;
  3231. x3 = w - x2;
  3232. x4 = w - x1;
  3233. y2 = vc - x1;
  3234. y3 = vc + x1;
  3235. y4 = h - x1;
  3236. //console.log("w:",w," h:",h," x1:",x1," x2:",x2," x3:",x3," x4:",x4," y2:",y2," y3:",y3," y4:",y4)
  3237. var d = "M" + x2 + "," + h +
  3238. shapeArc(x2, y4, x1, x1, cd4, cd2, false).replace("M", "L") +
  3239. " L" + x1 + "," + y3 +
  3240. shapeArc(0, y3, x1, x1, 0, (-cd4), false).replace("M", "L") +
  3241. shapeArc(0, y2, x1, x1, cd4, 0, false).replace("M", "L") +
  3242. " L" + x1 + "," + x1 +
  3243. shapeArc(x2, x1, x1, x1, cd2, c3d4, false).replace("M", "L") +
  3244. " M" + x3 + "," + 0 +
  3245. shapeArc(x3, x1, x1, x1, c3d4, cd, false).replace("M", "L") +
  3246. " L" + x4 + "," + y2 +
  3247. shapeArc(w, y2, x1, x1, cd2, cd4, false).replace("M", "L") +
  3248. shapeArc(w, y3, x1, x1, c3d4, cd2, false).replace("M", "L") +
  3249. " L" + x4 + "," + y4 +
  3250. shapeArc(x3, y4, x1, x1, 0, cd4, false).replace("M", "L");
  3251. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3252. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3253. break;
  3254. case "leftBrace":
  3255. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3256. var sAdj1, adj1 = 8333 * slideFactor;
  3257. var sAdj2, adj2 = 50000 * slideFactor;
  3258. var cnstVal2 = 100000 * slideFactor;
  3259. if (shapAdjst_ary !== undefined) {
  3260. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3261. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3262. if (sAdj_name == "adj1") {
  3263. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3264. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  3265. } else if (sAdj_name == "adj2") {
  3266. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3267. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  3268. }
  3269. }
  3270. }
  3271. var vc = h / 2, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4;
  3272. if (adj2 < 0) a2 = 0
  3273. else if (adj2 > cnstVal2) a2 = cnstVal2
  3274. else a2 = adj2
  3275. var minWH = Math.min(w, h);
  3276. q1 = cnstVal2 - a2;
  3277. if (q1 < a2) q2 = q1
  3278. else q2 = a2
  3279. q3 = q2 / 2;
  3280. var maxAdj1 = q3 * h / minWH;
  3281. if (adj1 < 0) a1 = 0
  3282. else if (adj1 > maxAdj1) a1 = maxAdj1
  3283. else a1 = adj1
  3284. y1 = minWH * a1 / cnstVal2;
  3285. y3 = h * a2 / cnstVal2;
  3286. y2 = y3 - y1;
  3287. y4 = y3 + y1;
  3288. //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y3:",y3," y4:",y4," maxAdj1:",maxAdj1)
  3289. var d = "M" + w + "," + h +
  3290. shapeArc(w, h - y1, w / 2, y1, cd4, cd2, false).replace("M", "L") +
  3291. " L" + w / 2 + "," + y4 +
  3292. shapeArc(0, y4, w / 2, y1, 0, (-cd4), false).replace("M", "L") +
  3293. shapeArc(0, y2, w / 2, y1, cd4, 0, false).replace("M", "L") +
  3294. " L" + w / 2 + "," + y1 +
  3295. shapeArc(w, y1, w / 2, y1, cd2, c3d4, false).replace("M", "L");
  3296. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3297. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3298. break;
  3299. case "rightBrace":
  3300. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3301. var sAdj1, adj1 = 8333 * slideFactor;
  3302. var sAdj2, adj2 = 50000 * slideFactor;
  3303. var cnstVal2 = 100000 * slideFactor;
  3304. if (shapAdjst_ary !== undefined) {
  3305. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3306. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3307. if (sAdj_name == "adj1") {
  3308. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3309. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  3310. } else if (sAdj_name == "adj2") {
  3311. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3312. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  3313. }
  3314. }
  3315. }
  3316. var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4;
  3317. if (adj2 < 0) a2 = 0
  3318. else if (adj2 > cnstVal2) a2 = cnstVal2
  3319. else a2 = adj2
  3320. var minWH = Math.min(w, h);
  3321. q1 = cnstVal2 - a2;
  3322. if (q1 < a2) q2 = q1
  3323. else q2 = a2
  3324. q3 = q2 / 2;
  3325. var maxAdj1 = q3 * h / minWH;
  3326. if (adj1 < 0) a1 = 0
  3327. else if (adj1 > maxAdj1) a1 = maxAdj1
  3328. else a1 = adj1
  3329. y1 = minWH * a1 / cnstVal2;
  3330. y3 = h * a2 / cnstVal2;
  3331. y2 = y3 - y1;
  3332. y4 = h - y1;
  3333. //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y2:",y2," y3:",y3," y4:",y4," maxAdj1:",maxAdj1)
  3334. var d = "M" + 0 + "," + 0 +
  3335. shapeArc(0, y1, w / 2, y1, c3d4, cd, false).replace("M", "L") +
  3336. " L" + w / 2 + "," + y2 +
  3337. shapeArc(w, y2, w / 2, y1, cd2, cd4, false).replace("M", "L") +
  3338. shapeArc(w, y3 + y1, w / 2, y1, c3d4, cd2, false).replace("M", "L") +
  3339. " L" + w / 2 + "," + y4 +
  3340. shapeArc(0, y4, w / 2, y1, 0, cd4, false).replace("M", "L");
  3341. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3342. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3343. break;
  3344. case "bracketPair":
  3345. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3346. var adj = 16667 * slideFactor;
  3347. var cnstVal1 = 50000 * slideFactor;
  3348. var cnstVal2 = 100000 * slideFactor;
  3349. if (shapAdjst !== undefined) {
  3350. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3351. }
  3352. var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, y2;
  3353. if (adj < 0) a = 0
  3354. else if (adj > cnstVal1) a = cnstVal1
  3355. else a = adj
  3356. x1 = Math.min(w, h) * a / cnstVal2;
  3357. x2 = r - x1;
  3358. y2 = b - x1;
  3359. //console.log("w:",w," h:",h," x1:",x1," x2:",x2," y2:",y2)
  3360. var d = shapeArc(x1, x1, x1, x1, c3d4, cd2, false) +
  3361. shapeArc(x1, y2, x1, x1, cd2, cd4, false).replace("M", "L") +
  3362. shapeArc(x2, x1, x1, x1, c3d4, (c3d4 + cd4), false) +
  3363. shapeArc(x2, y2, x1, x1, 0, cd4, false).replace("M", "L");
  3364. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3365. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3366. break;
  3367. case "leftBracket":
  3368. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3369. var adj = 8333 * slideFactor;
  3370. var cnstVal1 = 50000 * slideFactor;
  3371. var cnstVal2 = 100000 * slideFactor;
  3372. var maxAdj = cnstVal1 * h / Math.min(w, h);
  3373. if (shapAdjst !== undefined) {
  3374. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3375. }
  3376. var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2;
  3377. if (adj < 0) a = 0
  3378. else if (adj > maxAdj) a = maxAdj
  3379. else a = adj
  3380. y1 = Math.min(w, h) * a / cnstVal2;
  3381. if (y1 > w) y1 = w;
  3382. y2 = b - y1;
  3383. var d = "M" + r + "," + b +
  3384. shapeArc(y1, y2, y1, y1, cd4, cd2, false).replace("M", "L") +
  3385. " L" + 0 + "," + y1 +
  3386. shapeArc(y1, y1, y1, y1, cd2, c3d4, false).replace("M", "L") +
  3387. " L" + r + "," + 0
  3388. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3389. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3390. break;
  3391. case "rightBracket":
  3392. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3393. var adj = 8333 * slideFactor;
  3394. var cnstVal1 = 50000 * slideFactor;
  3395. var cnstVal2 = 100000 * slideFactor;
  3396. var maxAdj = cnstVal1 * h / Math.min(w, h);
  3397. if (shapAdjst !== undefined) {
  3398. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  3399. }
  3400. var cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2, y3;
  3401. if (adj < 0) a = 0
  3402. else if (adj > maxAdj) a = maxAdj
  3403. else a = adj
  3404. y1 = Math.min(w, h) * a / cnstVal2;
  3405. y2 = h - y1;
  3406. y3 = w - y1;
  3407. //console.log("w:",w," h:",h," y1:",y1," y2:",y2," y3:",y3)
  3408. var d = "M" + 0 + "," + h +
  3409. shapeArc(y3, y2, y1, y1, cd4, 0, false).replace("M", "L") +
  3410. //" L"+ r + "," + y2 +
  3411. " L" + w + "," + h / 2 +
  3412. shapeArc(y3, y1, y1, y1, cd, c3d4, false).replace("M", "L") +
  3413. " L" + 0 + "," + 0
  3414. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3415. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3416. break;
  3417. case "moon":
  3418. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3419. var adj = 0.5;
  3420. if (shapAdjst !== undefined) {
  3421. adj = parseInt(shapAdjst.substr(4)) / 100000;//*96/914400;;
  3422. }
  3423. var hd2, cd2, cd4;
  3424. hd2 = h / 2;
  3425. cd2 = 180;
  3426. cd4 = 90;
  3427. var adj2 = (1 - adj) * w;
  3428. var d = "M" + w + "," + h +
  3429. shapeArc(w, hd2, w, hd2, cd4, (cd4 + cd2), false).replace("M", "L") +
  3430. shapeArc(w, hd2, adj2, hd2, (cd4 + cd2), cd4, false).replace("M", "L") +
  3431. " z";
  3432. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3433. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3434. break;
  3435. case "corner":
  3436. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3437. var sAdj1, sAdj1_val = 50000 * slideFactor;
  3438. var sAdj2, sAdj2_val = 50000 * slideFactor;
  3439. var cnsVal = 100000 * slideFactor;
  3440. if (shapAdjst_ary !== undefined) {
  3441. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3442. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3443. if (sAdj_name == "adj1") {
  3444. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3445. sAdj1_val = parseInt(sAdj1.substr(4)) * slideFactor;
  3446. } else if (sAdj_name == "adj2") {
  3447. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3448. sAdj2_val = parseInt(sAdj2.substr(4)) * slideFactor;
  3449. }
  3450. }
  3451. }
  3452. var minWH = Math.min(w, h);
  3453. var maxAdj1 = cnsVal * h / minWH;
  3454. var maxAdj2 = cnsVal * w / minWH;
  3455. var a1, a2, x1, dy1, y1;
  3456. if (sAdj1_val < 0) a1 = 0
  3457. else if (sAdj1_val > maxAdj1) a1 = maxAdj1
  3458. else a1 = sAdj1_val
  3459. if (sAdj2_val < 0) a2 = 0
  3460. else if (sAdj2_val > maxAdj2) a2 = maxAdj2
  3461. else a2 = sAdj2_val
  3462. x1 = minWH * a2 / cnsVal;
  3463. dy1 = minWH * a1 / cnsVal;
  3464. y1 = h - dy1;
  3465. var d = "M0,0" +
  3466. " L" + x1 + "," + 0 +
  3467. " L" + x1 + "," + y1 +
  3468. " L" + w + "," + y1 +
  3469. " L" + w + "," + h +
  3470. " L0," + h + " z";
  3471. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3472. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3473. break;
  3474. case "diagStripe":
  3475. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3476. var sAdj1_val = 50000 * slideFactor;
  3477. var cnsVal = 100000 * slideFactor;
  3478. if (shapAdjst !== undefined) {
  3479. sAdj1_val = parseInt(shapAdjst.substr(4)) * slideFactor;
  3480. }
  3481. var a1, x2, y2;
  3482. if (sAdj1_val < 0) a1 = 0
  3483. else if (sAdj1_val > cnsVal) a1 = cnsVal
  3484. else a1 = sAdj1_val
  3485. x2 = w * a1 / cnsVal;
  3486. y2 = h * a1 / cnsVal;
  3487. var d = "M" + 0 + "," + y2 +
  3488. " L" + x2 + "," + 0 +
  3489. " L" + w + "," + 0 +
  3490. " L" + 0 + "," + h + " z";
  3491. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3492. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3493. break;
  3494. case "gear6":
  3495. case "gear9":
  3496. txtRotate = 0;
  3497. var gearNum = shapType.substr(4), d;
  3498. if (gearNum == "6") {
  3499. d = shapeGear(w, h / 3.5, parseInt(gearNum));
  3500. } else { //gearNum=="9"
  3501. d = shapeGear(w, h / 3.5, parseInt(gearNum));
  3502. }
  3503. result += "<path d='" + d + "' transform='rotate(20," + (3 / 7) * h + "," + (3 / 7) * h + ")' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3504. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3505. break;
  3506. case "bentConnector3":
  3507. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3508. var shapAdjst_val = 0.5;
  3509. if (shapAdjst !== undefined) {
  3510. shapAdjst_val = parseInt(shapAdjst.substr(4)) / 100000;
  3511. // if (isFlipV) {
  3512. // result += " <polyline points='" + w + " 0," + ((1 - shapAdjst_val) * w) + " 0," + ((1 - shapAdjst_val) * w) + " " + h + ",0 " + h + "' fill='transparent'" +
  3513. // "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  3514. // } else {
  3515. result += " <polyline points='0 0," + (shapAdjst_val) * w + " 0," + (shapAdjst_val) * w + " " + h + "," + w + " " + h + "' fill='transparent'" +
  3516. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  3517. //}
  3518. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  3519. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  3520. }
  3521. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  3522. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  3523. }
  3524. result += "/>";
  3525. }
  3526. break;
  3527. case "plus":
  3528. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3529. var adj1 = 0.25;
  3530. if (shapAdjst !== undefined) {
  3531. adj1 = parseInt(shapAdjst.substr(4)) / 100000;
  3532. }
  3533. var adj2 = (1 - adj1);
  3534. result += " <polygon points='" + adj1 * w + " 0," + adj1 * w + " " + adj1 * h + ",0 " + adj1 * h + ",0 " + adj2 * h + "," +
  3535. adj1 * w + " " + adj2 * h + "," + adj1 * w + " " + h + "," + adj2 * w + " " + h + "," + adj2 * w + " " + adj2 * h + "," + w + " " + adj2 * h + "," +
  3536. +w + " " + adj1 * h + "," + adj2 * w + " " + adj1 * h + "," + adj2 * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3537. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3538. break;
  3539. case "teardrop":
  3540. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3541. var adj1 = 100000 * slideFactor;
  3542. var cnsVal1 = adj1;
  3543. var cnsVal2 = 200000 * slideFactor;
  3544. if (shapAdjst !== undefined) {
  3545. adj1 = parseInt(shapAdjst.substr(4)) * slideFactor;
  3546. }
  3547. var a1, r2, tw, th, sw, sh, dx1, dy1, x1, y1, x2, y2, rd45;
  3548. if (adj1 < 0) a1 = 0
  3549. else if (adj1 > cnsVal2) a1 = cnsVal2
  3550. else a1 = adj1
  3551. r2 = Math.sqrt(2);
  3552. tw = r2 * (w / 2);
  3553. th = r2 * (h / 2);
  3554. sw = (tw * a1) / cnsVal1;
  3555. sh = (th * a1) / cnsVal1;
  3556. rd45 = (45 * (Math.PI) / 180);
  3557. dx1 = sw * (Math.cos(rd45));
  3558. dy1 = sh * (Math.cos(rd45));
  3559. x1 = (w / 2) + dx1;
  3560. y1 = (h / 2) - dy1;
  3561. x2 = ((w / 2) + x1) / 2;
  3562. y2 = ((h / 2) + y1) / 2;
  3563. var d_val = shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false) +
  3564. "Q " + x2 + ",0 " + x1 + "," + y1 +
  3565. "Q " + w + "," + y2 + " " + w + "," + h / 2 +
  3566. shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") +
  3567. shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") + " z";
  3568. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3569. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3570. // console.log("shapAdjst: ",shapAdjst,", adj1: ",adj1);
  3571. break;
  3572. case "plaque":
  3573. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3574. var adj1 = 16667 * slideFactor;
  3575. var cnsVal1 = 50000 * slideFactor;
  3576. var cnsVal2 = 100000 * slideFactor;
  3577. if (shapAdjst !== undefined) {
  3578. adj1 = parseInt(shapAdjst.substr(4)) * slideFactor;
  3579. }
  3580. var a1, x1, x2, y2;
  3581. if (adj1 < 0) a1 = 0
  3582. else if (adj1 > cnsVal1) a1 = cnsVal1
  3583. else a1 = adj1
  3584. x1 = a1 * (Math.min(w, h)) / cnsVal2;
  3585. x2 = w - x1;
  3586. y2 = h - x1;
  3587. var d_val = "M0," + x1 +
  3588. shapeArc(0, 0, x1, x1, 90, 0, false).replace("M", "L") +
  3589. " L" + x2 + "," + 0 +
  3590. shapeArc(w, 0, x1, x1, 180, 90, false).replace("M", "L") +
  3591. " L" + w + "," + y2 +
  3592. shapeArc(w, h, x1, x1, 270, 180, false).replace("M", "L") +
  3593. " L" + x1 + "," + h +
  3594. shapeArc(0, h, x1, x1, 0, -90, false).replace("M", "L") + " z";
  3595. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3596. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3597. break;
  3598. case "sun":
  3599. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3600. var refr = slideFactor;
  3601. var adj1 = 25000 * refr;
  3602. var cnstVal1 = 12500 * refr;
  3603. var cnstVal2 = 46875 * refr;
  3604. if (shapAdjst !== undefined) {
  3605. adj1 = parseInt(shapAdjst.substr(4)) * refr;
  3606. }
  3607. var a1;
  3608. if (adj1 < cnstVal1) a1 = cnstVal1
  3609. else if (adj1 > cnstVal2) a1 = cnstVal2
  3610. else a1 = adj1
  3611. var cnstVa3 = 50000 * refr;
  3612. var cnstVa4 = 100000 * refr;
  3613. var g0 = cnstVa3 - a1,
  3614. g1 = g0 * (30274 * refr) / (32768 * refr),
  3615. g2 = g0 * (12540 * refr) / (32768 * refr),
  3616. g3 = g1 + cnstVa3,
  3617. g4 = g2 + cnstVa3,
  3618. g5 = cnstVa3 - g1,
  3619. g6 = cnstVa3 - g2,
  3620. g7 = g0 * (23170 * refr) / (32768 * refr),
  3621. g8 = cnstVa3 + g7,
  3622. g9 = cnstVa3 - g7,
  3623. g10 = g5 * 3 / 4,
  3624. g11 = g6 * 3 / 4,
  3625. g12 = g10 + 3662 * refr,
  3626. g13 = g11 + 36620 * refr,
  3627. g14 = g11 + 12500 * refr,
  3628. g15 = cnstVa4 - g10,
  3629. g16 = cnstVa4 - g12,
  3630. g17 = cnstVa4 - g13,
  3631. g18 = cnstVa4 - g14,
  3632. ox1 = w * (18436 * refr) / (21600 * refr),
  3633. oy1 = h * (3163 * refr) / (21600 * refr),
  3634. ox2 = w * (3163 * refr) / (21600 * refr),
  3635. oy2 = h * (18436 * refr) / (21600 * refr),
  3636. x8 = w * g8 / cnstVa4,
  3637. x9 = w * g9 / cnstVa4,
  3638. x10 = w * g10 / cnstVa4,
  3639. x12 = w * g12 / cnstVa4,
  3640. x13 = w * g13 / cnstVa4,
  3641. x14 = w * g14 / cnstVa4,
  3642. x15 = w * g15 / cnstVa4,
  3643. x16 = w * g16 / cnstVa4,
  3644. x17 = w * g17 / cnstVa4,
  3645. x18 = w * g18 / cnstVa4,
  3646. x19 = w * a1 / cnstVa4,
  3647. wR = w * g0 / cnstVa4,
  3648. hR = h * g0 / cnstVa4,
  3649. y8 = h * g8 / cnstVa4,
  3650. y9 = h * g9 / cnstVa4,
  3651. y10 = h * g10 / cnstVa4,
  3652. y12 = h * g12 / cnstVa4,
  3653. y13 = h * g13 / cnstVa4,
  3654. y14 = h * g14 / cnstVa4,
  3655. y15 = h * g15 / cnstVa4,
  3656. y16 = h * g16 / cnstVa4,
  3657. y17 = h * g17 / cnstVa4,
  3658. y18 = h * g18 / cnstVa4;
  3659. var d_val = "M" + w + "," + h / 2 +
  3660. " L" + x15 + "," + y18 +
  3661. " L" + x15 + "," + y14 +
  3662. "z" +
  3663. " M" + ox1 + "," + oy1 +
  3664. " L" + x16 + "," + y17 +
  3665. " L" + x13 + "," + y12 +
  3666. "z" +
  3667. " M" + w / 2 + "," + 0 +
  3668. " L" + x18 + "," + y10 +
  3669. " L" + x14 + "," + y10 +
  3670. "z" +
  3671. " M" + ox2 + "," + oy1 +
  3672. " L" + x17 + "," + y12 +
  3673. " L" + x12 + "," + y17 +
  3674. "z" +
  3675. " M" + 0 + "," + h / 2 +
  3676. " L" + x10 + "," + y14 +
  3677. " L" + x10 + "," + y18 +
  3678. "z" +
  3679. " M" + ox2 + "," + oy2 +
  3680. " L" + x12 + "," + y13 +
  3681. " L" + x17 + "," + y16 +
  3682. "z" +
  3683. " M" + w / 2 + "," + h +
  3684. " L" + x14 + "," + y15 +
  3685. " L" + x18 + "," + y15 +
  3686. "z" +
  3687. " M" + ox1 + "," + oy2 +
  3688. " L" + x13 + "," + y16 +
  3689. " L" + x16 + "," + y13 +
  3690. " z" +
  3691. " M" + x19 + "," + h / 2 +
  3692. shapeArc(w / 2, h / 2, wR, hR, 180, 540, false).replace("M", "L") +
  3693. " z";
  3694. //console.log("adj1: ",adj1,d_val);
  3695. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3696. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3697. break;
  3698. case "heart":
  3699. var dx1, dx2, x1, x2, x3, x4, y1;
  3700. dx1 = w * 49 / 48;
  3701. dx2 = w * 10 / 48
  3702. x1 = w / 2 - dx1
  3703. x2 = w / 2 - dx2
  3704. x3 = w / 2 + dx2
  3705. x4 = w / 2 + dx1
  3706. y1 = -h / 3;
  3707. var d_val = "M" + w / 2 + "," + h / 4 +
  3708. "C" + x3 + "," + y1 + " " + x4 + "," + h / 4 + " " + w / 2 + "," + h +
  3709. "C" + x1 + "," + h / 4 + " " + x2 + "," + y1 + " " + w / 2 + "," + h / 4 + " z";
  3710. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3711. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3712. break;
  3713. case "lightningBolt":
  3714. var x1 = w * 5022 / 21600,
  3715. x2 = w * 11050 / 21600,
  3716. x3 = w * 8472 / 21600,
  3717. x4 = w * 8757 / 21600,
  3718. x5 = w * 10012 / 21600,
  3719. x6 = w * 14767 / 21600,
  3720. x7 = w * 12222 / 21600,
  3721. x8 = w * 12860 / 21600,
  3722. x9 = w * 13917 / 21600,
  3723. x10 = w * 7602 / 21600,
  3724. x11 = w * 16577 / 21600,
  3725. y1 = h * 3890 / 21600,
  3726. y2 = h * 6080 / 21600,
  3727. y3 = h * 6797 / 21600,
  3728. y4 = h * 7437 / 21600,
  3729. y5 = h * 12877 / 21600,
  3730. y6 = h * 9705 / 21600,
  3731. y7 = h * 12007 / 21600,
  3732. y8 = h * 13987 / 21600,
  3733. y9 = h * 8382 / 21600,
  3734. y10 = h * 14277 / 21600,
  3735. y11 = h * 14915 / 21600;
  3736. var d_val = "M" + x3 + "," + 0 +
  3737. " L" + x8 + "," + y2 +
  3738. " L" + x2 + "," + y3 +
  3739. " L" + x11 + "," + y7 +
  3740. " L" + x6 + "," + y5 +
  3741. " L" + w + "," + h +
  3742. " L" + x5 + "," + y11 +
  3743. " L" + x7 + "," + y8 +
  3744. " L" + x1 + "," + y6 +
  3745. " L" + x10 + "," + y9 +
  3746. " L" + 0 + "," + y1 + " z";
  3747. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3748. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3749. break;
  3750. case "cube":
  3751. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3752. var refr = slideFactor;
  3753. var adj = 25000 * refr;
  3754. if (shapAdjst !== undefined) {
  3755. adj = parseInt(shapAdjst.substr(4)) * refr;
  3756. }
  3757. var d_val;
  3758. var cnstVal2 = 100000 * refr;
  3759. var ss = Math.min(w, h);
  3760. var a, y1, y4, x4;
  3761. a = (adj < 0) ? 0 : (adj > cnstVal2) ? cnstVal2 : adj;
  3762. y1 = ss * a / cnstVal2;
  3763. y4 = h - y1;
  3764. x4 = w - y1;
  3765. d_val = "M" + 0 + "," + y1 +
  3766. " L" + y1 + "," + 0 +
  3767. " L" + w + "," + 0 +
  3768. " L" + w + "," + y4 +
  3769. " L" + x4 + "," + h +
  3770. " L" + 0 + "," + h +
  3771. " z" +
  3772. "M" + 0 + "," + y1 +
  3773. " L" + x4 + "," + y1 +
  3774. " M" + x4 + "," + y1 +
  3775. " L" + w + "," + 0 +
  3776. "M" + x4 + "," + y1 +
  3777. " L" + x4 + "," + h;
  3778. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3779. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3780. break;
  3781. case "bevel":
  3782. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3783. var refr = slideFactor;
  3784. var adj = 12500 * refr;
  3785. if (shapAdjst !== undefined) {
  3786. adj = parseInt(shapAdjst.substr(4)) * refr;
  3787. }
  3788. var d_val;
  3789. var cnstVal1 = 50000 * refr;
  3790. var cnstVal2 = 100000 * refr;
  3791. var ss = Math.min(w, h);
  3792. var a, x1, x2, y2;
  3793. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  3794. x1 = ss * a / cnstVal2;
  3795. x2 = w - x1;
  3796. y2 = h - x1;
  3797. d_val = "M" + 0 + "," + 0 +
  3798. " L" + w + "," + 0 +
  3799. " L" + w + "," + h +
  3800. " L" + 0 + "," + h +
  3801. " z" +
  3802. " M" + x1 + "," + x1 +
  3803. " L" + x2 + "," + x1 +
  3804. " L" + x2 + "," + y2 +
  3805. " L" + x1 + "," + y2 +
  3806. " z" +
  3807. " M" + 0 + "," + 0 +
  3808. " L" + x1 + "," + x1 +
  3809. " M" + 0 + "," + h +
  3810. " L" + x1 + "," + y2 +
  3811. " M" + w + "," + 0 +
  3812. " L" + x2 + "," + x1 +
  3813. " M" + w + "," + h +
  3814. " L" + x2 + "," + y2;
  3815. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3816. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3817. break;
  3818. case "foldedCorner":
  3819. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  3820. var refr = slideFactor;
  3821. var adj = 16667 * refr;
  3822. if (shapAdjst !== undefined) {
  3823. adj = parseInt(shapAdjst.substr(4)) * refr;
  3824. }
  3825. var d_val;
  3826. var cnstVal1 = 50000 * refr;
  3827. var cnstVal2 = 100000 * refr;
  3828. var ss = Math.min(w, h);
  3829. var a, dy2, dy1, x1, x2, y2, y1;
  3830. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  3831. dy2 = ss * a / cnstVal2;
  3832. dy1 = dy2 / 5;
  3833. x1 = w - dy2;
  3834. x2 = x1 + dy1;
  3835. y2 = h - dy2;
  3836. y1 = y2 + dy1;
  3837. d_val = "M" + x1 + "," + h +
  3838. " L" + x2 + "," + y1 +
  3839. " L" + w + "," + y2 +
  3840. " L" + x1 + "," + h +
  3841. " L" + 0 + "," + h +
  3842. " L" + 0 + "," + 0 +
  3843. " L" + w + "," + 0 +
  3844. " L" + w + "," + y2;
  3845. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  3846. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  3847. break;
  3848. case "cloud":
  3849. case "cloudCallout":
  3850. 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,
  3851. rx1, rx2, rx3, rx4, rx5, rx6, rx7, rx8, rx9, rx10, rx11, ry1, ry2, ry3, ry4, ry5, ry6, ry7, ry8, ry9, ry10, ry11;
  3852. x0 = w * 3900 / 43200;;
  3853. x1 = w * 4693 / 43200;
  3854. x2 = w * 6928 / 43200;
  3855. x3 = w * 16478 / 43200;
  3856. x4 = w * 28827 / 43200;
  3857. x5 = w * 34129 / 43200;
  3858. x6 = w * 41798 / 43200;
  3859. x7 = w * 38324 / 43200;
  3860. x8 = w * 29078 / 43200;
  3861. x9 = w * 22141 / 43200;
  3862. x10 = w * 14000 / 43200;
  3863. x11 = w * 4127 / 43200;
  3864. y0 = h * 14370 / 43200;
  3865. y1 = h * 26177 / 43200;
  3866. y2 = h * 34899 / 43200;
  3867. y3 = h * 39090 / 43200;
  3868. y4 = h * 34751 / 43200;
  3869. y5 = h * 22954 / 43200;
  3870. y6 = h * 15354 / 43200;
  3871. y7 = h * 5426 / 43200;
  3872. y8 = h * 3952 / 43200;
  3873. y9 = h * 4720 / 43200;
  3874. y10 = h * 5192 / 43200;
  3875. y11 = h * 15789 / 43200;
  3876. //Path:
  3877. //(path attrs: w = 43200; h = 43200; )
  3878. var rX1 = w * 6753 / 43200, rY1 = h * 9190 / 43200, rX2 = w * 5333 / 43200, rY2 = h * 7267 / 43200, rX3 = w * 4365 / 43200,
  3879. rY3 = h * 5945 / 43200, rX4 = w * 4857 / 43200, rY4 = h * 6595 / 43200, rY5 = h * 7273 / 43200, rX6 = w * 6775 / 43200,
  3880. rY6 = h * 9220 / 43200, rX7 = w * 5785 / 43200, rY7 = h * 7867 / 43200, rX8 = w * 6752 / 43200, rY8 = h * 9215 / 43200,
  3881. rX9 = w * 7720 / 43200, rY9 = h * 10543 / 43200, rX10 = w * 4360 / 43200, rY10 = h * 5918 / 43200, rX11 = w * 4345 / 43200;
  3882. var sA1 = -11429249 / 60000, wA1 = 7426832 / 60000, sA2 = -8646143 / 60000, wA2 = 5396714 / 60000, sA3 = -8748475 / 60000,
  3883. wA3 = 5983381 / 60000, sA4 = -7859164 / 60000, wA4 = 7034504 / 60000, sA5 = -4722533 / 60000, wA5 = 6541615 / 60000,
  3884. sA6 = -2776035 / 60000, wA6 = 7816140 / 60000, sA7 = 37501 / 60000, wA7 = 6842000 / 60000, sA8 = 1347096 / 60000,
  3885. wA8 = 6910353 / 60000, sA9 = 3974558 / 60000, wA9 = 4542661 / 60000, sA10 = -16496525 / 60000, wA10 = 8804134 / 60000,
  3886. sA11 = -14809710 / 60000, wA11 = 9151131 / 60000;
  3887. var cX0, cX1, cX2, cX3, cX4, cX5, cX6, cX7, cX8, cX9, cX10, cY0, cY1, cY2, cY3, cY4, cY5, cY6, cY7, cY8, cY9, cY10;
  3888. var arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11;
  3889. var lxy1, lxy2, lxy3, lxy4, lxy5, lxy6, lxy7, lxy8, lxy9, lxy10;
  3890. cX0 = x0 - rX1 * Math.cos(sA1 * Math.PI / 180);
  3891. cY0 = y0 - rY1 * Math.sin(sA1 * Math.PI / 180);
  3892. arc1 = shapeArc(cX0, cY0, rX1, rY1, sA1, sA1 + wA1, false).replace("M", "L");
  3893. lxy1 = arc1.substr(arc1.lastIndexOf("L") + 1).split(" ");
  3894. cX1 = parseInt(lxy1[0]) - rX2 * Math.cos(sA2 * Math.PI / 180);
  3895. cY1 = parseInt(lxy1[1]) - rY2 * Math.sin(sA2 * Math.PI / 180);
  3896. arc2 = shapeArc(cX1, cY1, rX2, rY2, sA2, sA2 + wA2, false).replace("M", "L");
  3897. lxy2 = arc2.substr(arc2.lastIndexOf("L") + 1).split(" ");
  3898. cX2 = parseInt(lxy2[0]) - rX3 * Math.cos(sA3 * Math.PI / 180);
  3899. cY2 = parseInt(lxy2[1]) - rY3 * Math.sin(sA3 * Math.PI / 180);
  3900. arc3 = shapeArc(cX2, cY2, rX3, rY3, sA3, sA3 + wA3, false).replace("M", "L");
  3901. lxy3 = arc3.substr(arc3.lastIndexOf("L") + 1).split(" ");
  3902. cX3 = parseInt(lxy3[0]) - rX4 * Math.cos(sA4 * Math.PI / 180);
  3903. cY3 = parseInt(lxy3[1]) - rY4 * Math.sin(sA4 * Math.PI / 180);
  3904. arc4 = shapeArc(cX3, cY3, rX4, rY4, sA4, sA4 + wA4, false).replace("M", "L");
  3905. lxy4 = arc4.substr(arc4.lastIndexOf("L") + 1).split(" ");
  3906. cX4 = parseInt(lxy4[0]) - rX2 * Math.cos(sA5 * Math.PI / 180);
  3907. cY4 = parseInt(lxy4[1]) - rY5 * Math.sin(sA5 * Math.PI / 180);
  3908. arc5 = shapeArc(cX4, cY4, rX2, rY5, sA5, sA5 + wA5, false).replace("M", "L");
  3909. lxy5 = arc5.substr(arc5.lastIndexOf("L") + 1).split(" ");
  3910. cX5 = parseInt(lxy5[0]) - rX6 * Math.cos(sA6 * Math.PI / 180);
  3911. cY5 = parseInt(lxy5[1]) - rY6 * Math.sin(sA6 * Math.PI / 180);
  3912. arc6 = shapeArc(cX5, cY5, rX6, rY6, sA6, sA6 + wA6, false).replace("M", "L");
  3913. lxy6 = arc6.substr(arc6.lastIndexOf("L") + 1).split(" ");
  3914. cX6 = parseInt(lxy6[0]) - rX7 * Math.cos(sA7 * Math.PI / 180);
  3915. cY6 = parseInt(lxy6[1]) - rY7 * Math.sin(sA7 * Math.PI / 180);
  3916. arc7 = shapeArc(cX6, cY6, rX7, rY7, sA7, sA7 + wA7, false).replace("M", "L");
  3917. lxy7 = arc7.substr(arc7.lastIndexOf("L") + 1).split(" ");
  3918. cX7 = parseInt(lxy7[0]) - rX8 * Math.cos(sA8 * Math.PI / 180);
  3919. cY7 = parseInt(lxy7[1]) - rY8 * Math.sin(sA8 * Math.PI / 180);
  3920. arc8 = shapeArc(cX7, cY7, rX8, rY8, sA8, sA8 + wA8, false).replace("M", "L");
  3921. lxy8 = arc8.substr(arc8.lastIndexOf("L") + 1).split(" ");
  3922. cX8 = parseInt(lxy8[0]) - rX9 * Math.cos(sA9 * Math.PI / 180);
  3923. cY8 = parseInt(lxy8[1]) - rY9 * Math.sin(sA9 * Math.PI / 180);
  3924. arc9 = shapeArc(cX8, cY8, rX9, rY9, sA9, sA9 + wA9, false).replace("M", "L");
  3925. lxy9 = arc9.substr(arc9.lastIndexOf("L") + 1).split(" ");
  3926. cX9 = parseInt(lxy9[0]) - rX10 * Math.cos(sA10 * Math.PI / 180);
  3927. cY9 = parseInt(lxy9[1]) - rY10 * Math.sin(sA10 * Math.PI / 180);
  3928. arc10 = shapeArc(cX9, cY9, rX10, rY10, sA10, sA10 + wA10, false).replace("M", "L");
  3929. lxy10 = arc10.substr(arc10.lastIndexOf("L") + 1).split(" ");
  3930. cX10 = parseInt(lxy10[0]) - rX11 * Math.cos(sA11 * Math.PI / 180);
  3931. cY10 = parseInt(lxy10[1]) - rY3 * Math.sin(sA11 * Math.PI / 180);
  3932. arc11 = shapeArc(cX10, cY10, rX11, rY3, sA11, sA11 + wA11, false).replace("M", "L");
  3933. var d1 = "M" + x0 + "," + y0 +
  3934. arc1 +
  3935. arc2 +
  3936. arc3 +
  3937. arc4 +
  3938. arc5 +
  3939. arc6 +
  3940. arc7 +
  3941. arc8 +
  3942. arc9 +
  3943. arc10 +
  3944. arc11 +
  3945. " z";
  3946. if (shapType == "cloudCallout") {
  3947. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  3948. var refr = slideFactor;
  3949. var sAdj1, adj1 = -20833 * refr;
  3950. var sAdj2, adj2 = 62500 * refr;
  3951. if (shapAdjst_ary !== undefined) {
  3952. for (var i = 0; i < shapAdjst_ary.length; i++) {
  3953. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  3954. if (sAdj_name == "adj1") {
  3955. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3956. adj1 = parseInt(sAdj1.substr(4)) * refr;
  3957. } else if (sAdj_name == "adj2") {
  3958. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  3959. adj2 = parseInt(sAdj2.substr(4)) * refr;
  3960. }
  3961. }
  3962. }
  3963. var d_val;
  3964. var cnstVal2 = 100000 * refr;
  3965. var ss = Math.min(w, h);
  3966. var wd2 = w / 2, hd2 = h / 2;
  3967. var dxPos, dyPos, xPos, yPos, ht, wt, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15, g16,
  3968. g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, x23, x24, x25;
  3969. dxPos = w * adj1 / cnstVal2;
  3970. dyPos = h * adj2 / cnstVal2;
  3971. xPos = wd2 + dxPos;
  3972. yPos = hd2 + dyPos;
  3973. ht = hd2 * Math.cos(Math.atan(dyPos / dxPos));
  3974. wt = wd2 * Math.sin(Math.atan(dyPos / dxPos));
  3975. g2 = wd2 * Math.cos(Math.atan(wt / ht));
  3976. g3 = hd2 * Math.sin(Math.atan(wt / ht));
  3977. //console.log("adj1: ",adj1,"adj2: ",adj2)
  3978. if (adj1 >= 0) {
  3979. g4 = wd2 + g2;
  3980. g5 = hd2 + g3;
  3981. } else {
  3982. g4 = wd2 - g2;
  3983. g5 = hd2 - g3;
  3984. }
  3985. g6 = g4 - xPos;
  3986. g7 = g5 - yPos;
  3987. g8 = Math.sqrt(g6 * g6 + g7 * g7);
  3988. g9 = ss * 6600 / 21600;
  3989. g10 = g8 - g9;
  3990. g11 = g10 / 3;
  3991. g12 = ss * 1800 / 21600;
  3992. g13 = g11 + g12;
  3993. g14 = g13 * g6 / g8;
  3994. g15 = g13 * g7 / g8;
  3995. g16 = g14 + xPos;
  3996. g17 = g15 + yPos;
  3997. g18 = ss * 4800 / 21600;
  3998. g19 = g11 * 2;
  3999. g20 = g18 + g19;
  4000. g21 = g20 * g6 / g8;
  4001. g22 = g20 * g7 / g8;
  4002. g23 = g21 + xPos;
  4003. g24 = g22 + yPos;
  4004. g25 = ss * 1200 / 21600;
  4005. g26 = ss * 600 / 21600;
  4006. x23 = xPos + g26;
  4007. x24 = g16 + g25;
  4008. x25 = g23 + g12;
  4009. d_val = //" M" + x23 + "," + yPos +
  4010. shapeArc(x23 - g26, yPos, g26, g26, 0, 360, false) + //.replace("M","L") +
  4011. " z" +
  4012. " M" + x24 + "," + g17 +
  4013. shapeArc(x24 - g25, g17, g25, g25, 0, 360, false).replace("M", "L") +
  4014. " z" +
  4015. " M" + x25 + "," + g24 +
  4016. shapeArc(x25 - g12, g24, g12, g12, 0, 360, false).replace("M", "L") +
  4017. " z";
  4018. d1 += d_val;
  4019. }
  4020. result += "<path d='" + d1 + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4021. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4022. break;
  4023. case "smileyFace":
  4024. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  4025. var refr = slideFactor;
  4026. var adj = 4653 * refr;
  4027. if (shapAdjst !== undefined) {
  4028. adj = parseInt(shapAdjst.substr(4)) * refr;
  4029. }
  4030. var d_val;
  4031. var cnstVal1 = 50000 * refr;
  4032. var cnstVal2 = 100000 * refr;
  4033. var cnstVal3 = 4653 * refr;
  4034. var ss = Math.min(w, h);
  4035. var a, x1, x2, x3, x4, y1, y3, dy2, y2, y4, dy3, y5, wR, hR, wd2, hd2;
  4036. wd2 = w / 2;
  4037. hd2 = h / 2;
  4038. a = (adj < -cnstVal3) ? -cnstVal3 : (adj > cnstVal3) ? cnstVal3 : adj;
  4039. x1 = w * 4969 / 21699;
  4040. x2 = w * 6215 / 21600;
  4041. x3 = w * 13135 / 21600;
  4042. x4 = w * 16640 / 21600;
  4043. y1 = h * 7570 / 21600;
  4044. y3 = h * 16515 / 21600;
  4045. dy2 = h * a / cnstVal2;
  4046. y2 = y3 - dy2;
  4047. y4 = y3 + dy2;
  4048. dy3 = h * a / cnstVal1;
  4049. y5 = y4 + dy3;
  4050. wR = w * 1125 / 21600;
  4051. hR = h * 1125 / 21600;
  4052. var cX1 = x2 - wR * Math.cos(Math.PI);
  4053. var cY1 = y1 - hR * Math.sin(Math.PI);
  4054. var cX2 = x3 - wR * Math.cos(Math.PI);
  4055. d_val = //eyes
  4056. shapeArc(cX1, cY1, wR, hR, 180, 540, false) +
  4057. shapeArc(cX2, cY1, wR, hR, 180, 540, false) +
  4058. //mouth
  4059. " M" + x1 + "," + y2 +
  4060. " Q" + wd2 + "," + y5 + " " + x4 + "," + y2 +
  4061. " Q" + wd2 + "," + y5 + " " + x1 + "," + y2 +
  4062. //head
  4063. " M" + 0 + "," + hd2 +
  4064. shapeArc(wd2, hd2, wd2, hd2, 180, 540, false).replace("M", "L") +
  4065. " z";
  4066. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4067. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4068. break;
  4069. case "verticalScroll":
  4070. case "horizontalScroll":
  4071. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  4072. var refr = slideFactor;
  4073. var adj = 12500 * refr;
  4074. if (shapAdjst !== undefined) {
  4075. adj = parseInt(shapAdjst.substr(4)) * refr;
  4076. }
  4077. var d_val;
  4078. var cnstVal1 = 25000 * refr;
  4079. var cnstVal2 = 100000 * refr;
  4080. var ss = Math.min(w, h);
  4081. var t = 0, l = 0, b = h, r = w;
  4082. var a, ch, ch2, ch4;
  4083. a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj;
  4084. ch = ss * a / cnstVal2;
  4085. ch2 = ch / 2;
  4086. ch4 = ch / 4;
  4087. if (shapType == "verticalScroll") {
  4088. var x3, x4, x6, x7, x5, y3, y4;
  4089. x3 = ch + ch2;
  4090. x4 = ch + ch;
  4091. x6 = r - ch;
  4092. x7 = r - ch2;
  4093. x5 = x6 - ch2;
  4094. y3 = b - ch;
  4095. y4 = b - ch2;
  4096. d_val = "M" + ch + "," + y3 +
  4097. " L" + ch + "," + ch2 +
  4098. shapeArc(x3, ch2, ch2, ch2, 180, 270, false).replace("M", "L") +
  4099. " L" + x7 + "," + t +
  4100. shapeArc(x7, ch2, ch2, ch2, 270, 450, false).replace("M", "L") +
  4101. " L" + x6 + "," + ch +
  4102. " L" + x6 + "," + y4 +
  4103. shapeArc(x5, y4, ch2, ch2, 0, 90, false).replace("M", "L") +
  4104. " L" + ch2 + "," + b +
  4105. shapeArc(ch2, y4, ch2, ch2, 90, 270, false).replace("M", "L") +
  4106. " z" +
  4107. " M" + x3 + "," + t +
  4108. shapeArc(x3, ch2, ch2, ch2, 270, 450, false).replace("M", "L") +
  4109. shapeArc(x3, x3 / 2, ch4, ch4, 90, 270, false).replace("M", "L") +
  4110. " L" + x4 + "," + ch2 +
  4111. " M" + x6 + "," + ch +
  4112. " L" + x3 + "," + ch +
  4113. " M" + ch + "," + y4 +
  4114. shapeArc(ch2, y4, ch2, ch2, 0, 270, false).replace("M", "L") +
  4115. shapeArc(ch2, (y4 + y3) / 2, ch4, ch4, 270, 450, false).replace("M", "L") +
  4116. " z" +
  4117. " M" + ch + "," + y4 +
  4118. " L" + ch + "," + y3;
  4119. } else if (shapType == "horizontalScroll") {
  4120. var y3, y4, y6, y7, y5, x3, x4;
  4121. y3 = ch + ch2;
  4122. y4 = ch + ch;
  4123. y6 = b - ch;
  4124. y7 = b - ch2;
  4125. y5 = y6 - ch2;
  4126. x3 = r - ch;
  4127. x4 = r - ch2;
  4128. d_val = "M" + l + "," + y3 +
  4129. shapeArc(ch2, y3, ch2, ch2, 180, 270, false).replace("M", "L") +
  4130. " L" + x3 + "," + ch +
  4131. " L" + x3 + "," + ch2 +
  4132. shapeArc(x4, ch2, ch2, ch2, 180, 360, false).replace("M", "L") +
  4133. " L" + r + "," + y5 +
  4134. shapeArc(x4, y5, ch2, ch2, 0, 90, false).replace("M", "L") +
  4135. " L" + ch + "," + y6 +
  4136. " L" + ch + "," + y7 +
  4137. shapeArc(ch2, y7, ch2, ch2, 0, 180, false).replace("M", "L") +
  4138. " z" +
  4139. "M" + x4 + "," + ch +
  4140. shapeArc(x4, ch2, ch2, ch2, 90, -180, false).replace("M", "L") +
  4141. shapeArc((x3 + x4) / 2, ch2, ch4, ch4, 180, 0, false).replace("M", "L") +
  4142. " z" +
  4143. " M" + x4 + "," + ch +
  4144. " L" + x3 + "," + ch +
  4145. " M" + ch2 + "," + y4 +
  4146. " L" + ch2 + "," + y3 +
  4147. shapeArc(y3 / 2, y3, ch4, ch4, 180, 360, false).replace("M", "L") +
  4148. shapeArc(ch2, y3, ch2, ch2, 0, 180, false).replace("M", "L") +
  4149. " M" + ch + "," + y3 +
  4150. " L" + ch + "," + y6;
  4151. }
  4152. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4153. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4154. break;
  4155. case "wedgeEllipseCallout":
  4156. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4157. var refr = slideFactor;
  4158. var sAdj1, adj1 = -20833 * refr;
  4159. var sAdj2, adj2 = 62500 * refr;
  4160. if (shapAdjst_ary !== undefined) {
  4161. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4162. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4163. if (sAdj_name == "adj1") {
  4164. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4165. adj1 = parseInt(sAdj1.substr(4)) * refr;
  4166. } else if (sAdj_name == "adj2") {
  4167. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4168. adj2 = parseInt(sAdj2.substr(4)) * refr;
  4169. }
  4170. }
  4171. }
  4172. var d_val;
  4173. var cnstVal1 = 100000 * slideFactor;
  4174. var angVal1 = 11 * Math.PI / 180;
  4175. var ss = Math.min(w, h);
  4176. var dxPos, dyPos, xPos, yPos, sdx, sdy, pang, stAng, enAng, dx1, dy1, x1, y1, dx2, dy2,
  4177. x2, y2, stAng1, enAng1, swAng1, swAng2, swAng,
  4178. vc = h / 2, hc = w / 2;
  4179. dxPos = w * adj1 / cnstVal1;
  4180. dyPos = h * adj2 / cnstVal1;
  4181. xPos = hc + dxPos;
  4182. yPos = vc + dyPos;
  4183. sdx = dxPos * h;
  4184. sdy = dyPos * w;
  4185. pang = Math.atan(sdy / sdx);
  4186. stAng = pang + angVal1;
  4187. enAng = pang - angVal1;
  4188. console.log("dxPos: ", dxPos, "dyPos: ", dyPos)
  4189. dx1 = hc * Math.cos(stAng);
  4190. dy1 = vc * Math.sin(stAng);
  4191. dx2 = hc * Math.cos(enAng);
  4192. dy2 = vc * Math.sin(enAng);
  4193. if (dxPos >= 0) {
  4194. x1 = hc + dx1;
  4195. y1 = vc + dy1;
  4196. x2 = hc + dx2;
  4197. y2 = vc + dy2;
  4198. } else {
  4199. x1 = hc - dx1;
  4200. y1 = vc - dy1;
  4201. x2 = hc - dx2;
  4202. y2 = vc - dy2;
  4203. }
  4204. /*
  4205. //stAng = pang+angVal1;
  4206. //enAng = pang-angVal1;
  4207. //dx1 = hc*Math.cos(stAng);
  4208. //dy1 = vc*Math.sin(stAng);
  4209. x1 = hc+dx1;
  4210. y1 = vc+dy1;
  4211. dx2 = hc*Math.cos(enAng);
  4212. dy2 = vc*Math.sin(enAng);
  4213. x2 = hc+dx2;
  4214. y2 = vc+dy2;
  4215. stAng1 = Math.atan(dy1/dx1);
  4216. enAng1 = Math.atan(dy2/dx2);
  4217. swAng1 = enAng1-stAng1;
  4218. swAng2 = swAng1+2*Math.PI;
  4219. swAng = (swAng1 > 0)?swAng1:swAng2;
  4220. var stAng1Dg = stAng1*180/Math.PI;
  4221. var swAngDg = swAng*180/Math.PI;
  4222. var endAng = stAng1Dg + swAngDg;
  4223. */
  4224. d_val = "M" + x1 + "," + y1 +
  4225. " L" + xPos + "," + yPos +
  4226. " L" + x2 + "," + y2 +
  4227. //" z" +
  4228. shapeArc(hc, vc, hc, vc, 0, 360, true);// +
  4229. //shapeArc(hc,vc,hc,vc,stAng1Dg,stAng1Dg+swAngDg,false).replace("M","L") +
  4230. //" z";
  4231. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4232. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4233. break;
  4234. case "wedgeRectCallout":
  4235. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4236. var refr = slideFactor;
  4237. var sAdj1, adj1 = -20833 * refr;
  4238. var sAdj2, adj2 = 62500 * refr;
  4239. if (shapAdjst_ary !== undefined) {
  4240. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4241. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4242. if (sAdj_name == "adj1") {
  4243. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4244. adj1 = parseInt(sAdj1.substr(4)) * refr;
  4245. } else if (sAdj_name == "adj2") {
  4246. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4247. adj2 = parseInt(sAdj2.substr(4)) * refr;
  4248. }
  4249. }
  4250. }
  4251. var d_val;
  4252. var cnstVal1 = 100000 * slideFactor;
  4253. var dxPos, dyPos, xPos, yPos, dx, dy, dq, ady, adq, dz, xg1, xg2, x1, x2,
  4254. yg1, yg2, y1, y2, t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb,
  4255. vc = h / 2, hc = w / 2;
  4256. dxPos = w * adj1 / cnstVal1;
  4257. dyPos = h * adj2 / cnstVal1;
  4258. xPos = hc + dxPos;
  4259. yPos = vc + dyPos;
  4260. dx = xPos - hc;
  4261. dy = yPos - vc;
  4262. dq = dxPos * h / w;
  4263. ady = Math.abs(dyPos);
  4264. adq = Math.abs(dq);
  4265. dz = ady - adq;
  4266. xg1 = (dxPos > 0) ? 7 : 2;
  4267. xg2 = (dxPos > 0) ? 10 : 5;
  4268. x1 = w * xg1 / 12;
  4269. x2 = w * xg2 / 12;
  4270. yg1 = (dyPos > 0) ? 7 : 2;
  4271. yg2 = (dyPos > 0) ? 10 : 5;
  4272. y1 = h * yg1 / 12;
  4273. y2 = h * yg2 / 12;
  4274. t1 = (dxPos > 0) ? 0 : xPos;
  4275. xl = (dz > 0) ? 0 : t1;
  4276. t2 = (dyPos > 0) ? x1 : xPos;
  4277. xt = (dz > 0) ? t2 : x1;
  4278. t3 = (dxPos > 0) ? xPos : w;
  4279. xr = (dz > 0) ? w : t3;
  4280. t4 = (dyPos > 0) ? xPos : x1;
  4281. xb = (dz > 0) ? t4 : x1;
  4282. t5 = (dxPos > 0) ? y1 : yPos;
  4283. yl = (dz > 0) ? y1 : t5;
  4284. t6 = (dyPos > 0) ? 0 : yPos;
  4285. yt = (dz > 0) ? t6 : 0;
  4286. t7 = (dxPos > 0) ? yPos : y1;
  4287. yr = (dz > 0) ? y1 : t7;
  4288. t8 = (dyPos > 0) ? yPos : h;
  4289. yb = (dz > 0) ? t8 : h;
  4290. d_val = "M" + 0 + "," + 0 +
  4291. " L" + x1 + "," + 0 +
  4292. " L" + xt + "," + yt +
  4293. " L" + x2 + "," + 0 +
  4294. " L" + w + "," + 0 +
  4295. " L" + w + "," + y1 +
  4296. " L" + xr + "," + yr +
  4297. " L" + w + "," + y2 +
  4298. " L" + w + "," + h +
  4299. " L" + x2 + "," + h +
  4300. " L" + xb + "," + yb +
  4301. " L" + x1 + "," + h +
  4302. " L" + 0 + "," + h +
  4303. " L" + 0 + "," + y2 +
  4304. " L" + xl + "," + yl +
  4305. " L" + 0 + "," + y1 +
  4306. " z";
  4307. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4308. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4309. break;
  4310. case "wedgeRoundRectCallout":
  4311. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4312. var refr = slideFactor;
  4313. var sAdj1, adj1 = -20833 * refr;
  4314. var sAdj2, adj2 = 62500 * refr;
  4315. var sAdj3, adj3 = 16667 * refr;
  4316. if (shapAdjst_ary !== undefined) {
  4317. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4318. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4319. if (sAdj_name == "adj1") {
  4320. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4321. adj1 = parseInt(sAdj1.substr(4)) * refr;
  4322. } else if (sAdj_name == "adj2") {
  4323. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4324. adj2 = parseInt(sAdj2.substr(4)) * refr;
  4325. } else if (sAdj_name == "adj3") {
  4326. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4327. adj3 = parseInt(sAdj3.substr(4)) * refr;
  4328. }
  4329. }
  4330. }
  4331. var d_val;
  4332. var cnstVal1 = 100000 * slideFactor;
  4333. var ss = Math.min(w, h);
  4334. var dxPos, dyPos, xPos, yPos, dq, ady, adq, dz, xg1, xg2, x1, x2, yg1, yg2, y1, y2,
  4335. t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb, u1, u2, v2,
  4336. vc = h / 2, hc = w / 2;
  4337. dxPos = w * adj1 / cnstVal1;
  4338. dyPos = h * adj2 / cnstVal1;
  4339. xPos = hc + dxPos;
  4340. yPos = vc + dyPos;
  4341. dq = dxPos * h / w;
  4342. ady = Math.abs(dyPos);
  4343. adq = Math.abs(dq);
  4344. dz = ady - adq;
  4345. xg1 = (dxPos > 0) ? 7 : 2;
  4346. xg2 = (dxPos > 0) ? 10 : 5;
  4347. x1 = w * xg1 / 12;
  4348. x2 = w * xg2 / 12;
  4349. yg1 = (dyPos > 0) ? 7 : 2;
  4350. yg2 = (dyPos > 0) ? 10 : 5;
  4351. y1 = h * yg1 / 12;
  4352. y2 = h * yg2 / 12;
  4353. t1 = (dxPos > 0) ? 0 : xPos;
  4354. xl = (dz > 0) ? 0 : t1;
  4355. t2 = (dyPos > 0) ? x1 : xPos;
  4356. xt = (dz > 0) ? t2 : x1;
  4357. t3 = (dxPos > 0) ? xPos : w;
  4358. xr = (dz > 0) ? w : t3;
  4359. t4 = (dyPos > 0) ? xPos : x1;
  4360. xb = (dz > 0) ? t4 : x1;
  4361. t5 = (dxPos > 0) ? y1 : yPos;
  4362. yl = (dz > 0) ? y1 : t5;
  4363. t6 = (dyPos > 0) ? 0 : yPos;
  4364. yt = (dz > 0) ? t6 : 0;
  4365. t7 = (dxPos > 0) ? yPos : y1;
  4366. yr = (dz > 0) ? y1 : t7;
  4367. t8 = (dyPos > 0) ? yPos : h;
  4368. yb = (dz > 0) ? t8 : h;
  4369. u1 = ss * adj3 / cnstVal1;
  4370. u2 = w - u1;
  4371. v2 = h - u1;
  4372. d_val = "M" + 0 + "," + u1 +
  4373. shapeArc(u1, u1, u1, u1, 180, 270, false).replace("M", "L") +
  4374. " L" + x1 + "," + 0 +
  4375. " L" + xt + "," + yt +
  4376. " L" + x2 + "," + 0 +
  4377. " L" + u2 + "," + 0 +
  4378. shapeArc(u2, u1, u1, u1, 270, 360, false).replace("M", "L") +
  4379. " L" + w + "," + y1 +
  4380. " L" + xr + "," + yr +
  4381. " L" + w + "," + y2 +
  4382. " L" + w + "," + v2 +
  4383. shapeArc(u2, v2, u1, u1, 0, 90, false).replace("M", "L") +
  4384. " L" + x2 + "," + h +
  4385. " L" + xb + "," + yb +
  4386. " L" + x1 + "," + h +
  4387. " L" + u1 + "," + h +
  4388. shapeArc(u1, v2, u1, u1, 90, 180, false).replace("M", "L") +
  4389. " L" + 0 + "," + y2 +
  4390. " L" + xl + "," + yl +
  4391. " L" + 0 + "," + y1 +
  4392. " z";
  4393. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4394. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4395. break;
  4396. case "accentBorderCallout1":
  4397. case "accentBorderCallout2":
  4398. case "accentBorderCallout3":
  4399. case "borderCallout1":
  4400. case "borderCallout2":
  4401. case "borderCallout3":
  4402. case "accentCallout1":
  4403. case "accentCallout2":
  4404. case "accentCallout3":
  4405. case "callout1":
  4406. case "callout2":
  4407. case "callout3":
  4408. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4409. var refr = slideFactor;
  4410. var sAdj1, adj1 = 18750 * refr;
  4411. var sAdj2, adj2 = -8333 * refr;
  4412. var sAdj3, adj3 = 18750 * refr;
  4413. var sAdj4, adj4 = -16667 * refr;
  4414. var sAdj5, adj5 = 100000 * refr;
  4415. var sAdj6, adj6 = -16667 * refr;
  4416. var sAdj7, adj7 = 112963 * refr;
  4417. var sAdj8, adj8 = -8333 * refr;
  4418. if (shapAdjst_ary !== undefined) {
  4419. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4420. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4421. if (sAdj_name == "adj1") {
  4422. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4423. adj1 = parseInt(sAdj1.substr(4)) * refr;
  4424. } else if (sAdj_name == "adj2") {
  4425. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4426. adj2 = parseInt(sAdj2.substr(4)) * refr;
  4427. } else if (sAdj_name == "adj3") {
  4428. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4429. adj3 = parseInt(sAdj3.substr(4)) * refr;
  4430. } else if (sAdj_name == "adj4") {
  4431. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4432. adj4 = parseInt(sAdj4.substr(4)) * refr;
  4433. } else if (sAdj_name == "adj5") {
  4434. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4435. adj5 = parseInt(sAdj5.substr(4)) * refr;
  4436. } else if (sAdj_name == "adj6") {
  4437. sAdj6 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4438. adj6 = parseInt(sAdj6.substr(4)) * refr;
  4439. } else if (sAdj_name == "adj7") {
  4440. sAdj7 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4441. adj7 = parseInt(sAdj7.substr(4)) * refr;
  4442. } else if (sAdj_name == "adj8") {
  4443. sAdj8 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4444. adj8 = parseInt(sAdj8.substr(4)) * refr;
  4445. }
  4446. }
  4447. }
  4448. var d_val;
  4449. var cnstVal1 = 100000 * refr;
  4450. var isBorder = true;
  4451. switch (shapType) {
  4452. case "borderCallout1":
  4453. case "callout1":
  4454. if (shapType == "borderCallout1") {
  4455. isBorder = true;
  4456. } else {
  4457. isBorder = false;
  4458. }
  4459. if (shapAdjst_ary === undefined) {
  4460. adj1 = 18750 * refr;
  4461. adj2 = -8333 * refr;
  4462. adj3 = 112500 * refr;
  4463. adj4 = -38333 * refr;
  4464. }
  4465. var y1, x1, y2, x2;
  4466. y1 = h * adj1 / cnstVal1;
  4467. x1 = w * adj2 / cnstVal1;
  4468. y2 = h * adj3 / cnstVal1;
  4469. x2 = w * adj4 / cnstVal1;
  4470. d_val = "M" + 0 + "," + 0 +
  4471. " L" + w + "," + 0 +
  4472. " L" + w + "," + h +
  4473. " L" + 0 + "," + h +
  4474. " z" +
  4475. " M" + x1 + "," + y1 +
  4476. " L" + x2 + "," + y2;
  4477. break;
  4478. case "borderCallout2":
  4479. case "callout2":
  4480. if (shapType == "borderCallout2") {
  4481. isBorder = true;
  4482. } else {
  4483. isBorder = false;
  4484. }
  4485. if (shapAdjst_ary === undefined) {
  4486. adj1 = 18750 * refr;
  4487. adj2 = -8333 * refr;
  4488. adj3 = 18750 * refr;
  4489. adj4 = -16667 * refr;
  4490. adj5 = 112500 * refr;
  4491. adj6 = -46667 * refr;
  4492. }
  4493. var y1, x1, y2, x2, y3, x3;
  4494. y1 = h * adj1 / cnstVal1;
  4495. x1 = w * adj2 / cnstVal1;
  4496. y2 = h * adj3 / cnstVal1;
  4497. x2 = w * adj4 / cnstVal1;
  4498. y3 = h * adj5 / cnstVal1;
  4499. x3 = w * adj6 / cnstVal1;
  4500. d_val = "M" + 0 + "," + 0 +
  4501. " L" + w + "," + 0 +
  4502. " L" + w + "," + h +
  4503. " L" + 0 + "," + h +
  4504. " z" +
  4505. " M" + x1 + "," + y1 +
  4506. " L" + x2 + "," + y2 +
  4507. " L" + x3 + "," + y3 +
  4508. " L" + x2 + "," + y2;
  4509. break;
  4510. case "borderCallout3":
  4511. case "callout3":
  4512. if (shapType == "borderCallout3") {
  4513. isBorder = true;
  4514. } else {
  4515. isBorder = false;
  4516. }
  4517. if (shapAdjst_ary === undefined) {
  4518. adj1 = 18750 * refr;
  4519. adj2 = -8333 * refr;
  4520. adj3 = 18750 * refr;
  4521. adj4 = -16667 * refr;
  4522. adj5 = 100000 * refr;
  4523. adj6 = -16667 * refr;
  4524. adj7 = 112963 * refr;
  4525. adj8 = -8333 * refr;
  4526. }
  4527. var y1, x1, y2, x2, y3, x3, y4, x4;
  4528. y1 = h * adj1 / cnstVal1;
  4529. x1 = w * adj2 / cnstVal1;
  4530. y2 = h * adj3 / cnstVal1;
  4531. x2 = w * adj4 / cnstVal1;
  4532. y3 = h * adj5 / cnstVal1;
  4533. x3 = w * adj6 / cnstVal1;
  4534. y4 = h * adj7 / cnstVal1;
  4535. x4 = w * adj8 / cnstVal1;
  4536. d_val = "M" + 0 + "," + 0 +
  4537. " L" + w + "," + 0 +
  4538. " L" + w + "," + h +
  4539. " L" + 0 + "," + h +
  4540. " z" +
  4541. " M" + x1 + "," + y1 +
  4542. " L" + x2 + "," + y2 +
  4543. " L" + x3 + "," + y3 +
  4544. " L" + x4 + "," + y4 +
  4545. " L" + x3 + "," + y3 +
  4546. " L" + x2 + "," + y2;
  4547. break;
  4548. case "accentBorderCallout1":
  4549. case "accentCallout1":
  4550. if (shapType == "accentBorderCallout1") {
  4551. isBorder = true;
  4552. } else {
  4553. isBorder = false;
  4554. }
  4555. if (shapAdjst_ary === undefined) {
  4556. adj1 = 18750 * refr;
  4557. adj2 = -8333 * refr;
  4558. adj3 = 112500 * refr;
  4559. adj4 = -38333 * refr;
  4560. }
  4561. var y1, x1, y2, x2;
  4562. y1 = h * adj1 / cnstVal1;
  4563. x1 = w * adj2 / cnstVal1;
  4564. y2 = h * adj3 / cnstVal1;
  4565. x2 = w * adj4 / cnstVal1;
  4566. d_val = "M" + 0 + "," + 0 +
  4567. " L" + w + "," + 0 +
  4568. " L" + w + "," + h +
  4569. " L" + 0 + "," + h +
  4570. " z" +
  4571. " M" + x1 + "," + y1 +
  4572. " L" + x2 + "," + y2 +
  4573. " M" + x1 + "," + 0 +
  4574. " L" + x1 + "," + h;
  4575. break;
  4576. case "accentBorderCallout2":
  4577. case "accentCallout2":
  4578. if (shapType == "accentBorderCallout2") {
  4579. isBorder = true;
  4580. } else {
  4581. isBorder = false;
  4582. }
  4583. if (shapAdjst_ary === undefined) {
  4584. adj1 = 18750 * refr;
  4585. adj2 = -8333 * refr;
  4586. adj3 = 18750 * refr;
  4587. adj4 = -16667 * refr;
  4588. adj5 = 112500 * refr;
  4589. adj6 = -46667 * refr;
  4590. }
  4591. var y1, x1, y2, x2, y3, x3;
  4592. y1 = h * adj1 / cnstVal1;
  4593. x1 = w * adj2 / cnstVal1;
  4594. y2 = h * adj3 / cnstVal1;
  4595. x2 = w * adj4 / cnstVal1;
  4596. y3 = h * adj5 / cnstVal1;
  4597. x3 = w * adj6 / cnstVal1;
  4598. d_val = "M" + 0 + "," + 0 +
  4599. " L" + w + "," + 0 +
  4600. " L" + w + "," + h +
  4601. " L" + 0 + "," + h +
  4602. " z" +
  4603. " M" + x1 + "," + y1 +
  4604. " L" + x2 + "," + y2 +
  4605. " L" + x3 + "," + y3 +
  4606. " L" + x2 + "," + y2 +
  4607. " M" + x1 + "," + 0 +
  4608. " L" + x1 + "," + h;
  4609. break;
  4610. case "accentBorderCallout3":
  4611. case "accentCallout3":
  4612. if (shapType == "accentBorderCallout3") {
  4613. isBorder = true;
  4614. } else {
  4615. isBorder = false;
  4616. }
  4617. isBorder = true;
  4618. if (shapAdjst_ary === undefined) {
  4619. adj1 = 18750 * refr;
  4620. adj2 = -8333 * refr;
  4621. adj3 = 18750 * refr;
  4622. adj4 = -16667 * refr;
  4623. adj5 = 100000 * refr;
  4624. adj6 = -16667 * refr;
  4625. adj7 = 112963 * refr;
  4626. adj8 = -8333 * refr;
  4627. }
  4628. var y1, x1, y2, x2, y3, x3, y4, x4;
  4629. y1 = h * adj1 / cnstVal1;
  4630. x1 = w * adj2 / cnstVal1;
  4631. y2 = h * adj3 / cnstVal1;
  4632. x2 = w * adj4 / cnstVal1;
  4633. y3 = h * adj5 / cnstVal1;
  4634. x3 = w * adj6 / cnstVal1;
  4635. y4 = h * adj7 / cnstVal1;
  4636. x4 = w * adj8 / cnstVal1;
  4637. d_val = "M" + 0 + "," + 0 +
  4638. " L" + w + "," + 0 +
  4639. " L" + w + "," + h +
  4640. " L" + 0 + "," + h +
  4641. " z" +
  4642. " M" + x1 + "," + y1 +
  4643. " L" + x2 + "," + y2 +
  4644. " L" + x3 + "," + y3 +
  4645. " L" + x4 + "," + y4 +
  4646. " L" + x3 + "," + y3 +
  4647. " L" + x2 + "," + y2 +
  4648. " M" + x1 + "," + 0 +
  4649. " L" + x1 + "," + h;
  4650. break;
  4651. }
  4652. //console.log("shapType: ", shapType, ",isBorder:", isBorder)
  4653. //if(isBorder){
  4654. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4655. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4656. //}else{
  4657. // result += "<path d='"+d_val+"' fill='" + (!imgFillFlg?(grndFillFlg?"url(#linGrd_"+shpId+")":fillColor):"url(#imgPtrn_"+shpId+")") +
  4658. // "' stroke='none' />";
  4659. //}
  4660. break;
  4661. case "leftRightRibbon":
  4662. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4663. var refr = slideFactor;
  4664. var sAdj1, adj1 = 50000 * refr;
  4665. var sAdj2, adj2 = 50000 * refr;
  4666. var sAdj3, adj3 = 16667 * refr;
  4667. if (shapAdjst_ary !== undefined) {
  4668. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4669. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4670. if (sAdj_name == "adj1") {
  4671. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4672. adj1 = parseInt(sAdj1.substr(4)) * refr;
  4673. } else if (sAdj_name == "adj2") {
  4674. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4675. adj2 = parseInt(sAdj2.substr(4)) * refr;
  4676. } else if (sAdj_name == "adj3") {
  4677. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4678. adj3 = parseInt(sAdj3.substr(4)) * refr;
  4679. }
  4680. }
  4681. }
  4682. var d_val;
  4683. var cnstVal1 = 33333 * refr;
  4684. var cnstVal2 = 100000 * refr;
  4685. var cnstVal3 = 200000 * refr;
  4686. var cnstVal4 = 400000 * refr;
  4687. var ss = Math.min(w, h);
  4688. var a3, maxAdj1, a1, w1, maxAdj2, a2, x1, x4, dy1, dy2, ly1, ry4, ly2, ry3, ly4, ry1,
  4689. ly3, ry2, hR, x2, x3, y1, y2, wd32 = w / 32, vc = h / 2, hc = w / 2;
  4690. a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3;
  4691. maxAdj1 = cnstVal2 - a3;
  4692. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  4693. w1 = hc - wd32;
  4694. maxAdj2 = cnstVal2 * w1 / ss;
  4695. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  4696. x1 = ss * a2 / cnstVal2;
  4697. x4 = w - x1;
  4698. dy1 = h * a1 / cnstVal3;
  4699. dy2 = h * a3 / -cnstVal3;
  4700. ly1 = vc + dy2 - dy1;
  4701. ry4 = vc + dy1 - dy2;
  4702. ly2 = ly1 + dy1;
  4703. ry3 = h - ly2;
  4704. ly4 = ly2 * 2;
  4705. ry1 = h - ly4;
  4706. ly3 = ly4 - ly1;
  4707. ry2 = h - ly3;
  4708. hR = a3 * ss / cnstVal4;
  4709. x2 = hc - wd32;
  4710. x3 = hc + wd32;
  4711. y1 = ly1 + hR;
  4712. y2 = ry2 - hR;
  4713. d_val = "M" + 0 + "," + ly2 +
  4714. "L" + x1 + "," + 0 +
  4715. "L" + x1 + "," + ly1 +
  4716. "L" + hc + "," + ly1 +
  4717. shapeArc(hc, y1, wd32, hR, 270, 450, false).replace("M", "L") +
  4718. shapeArc(hc, y2, wd32, hR, 270, 90, false).replace("M", "L") +
  4719. "L" + x4 + "," + ry2 +
  4720. "L" + x4 + "," + ry1 +
  4721. "L" + w + "," + ry3 +
  4722. "L" + x4 + "," + h +
  4723. "L" + x4 + "," + ry4 +
  4724. "L" + hc + "," + ry4 +
  4725. shapeArc(hc, ry4 - hR, wd32, hR, 90, 180, false).replace("M", "L") +
  4726. "L" + x2 + "," + ly3 +
  4727. "L" + x1 + "," + ly3 +
  4728. "L" + x1 + "," + ly4 +
  4729. " z" +
  4730. "M" + x3 + "," + y1 +
  4731. "L" + x3 + "," + ry2 +
  4732. "M" + x2 + "," + y2 +
  4733. "L" + x2 + "," + ly3;
  4734. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4735. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4736. break;
  4737. case "ribbon":
  4738. case "ribbon2":
  4739. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4740. var sAdj1, adj1 = 16667 * slideFactor;
  4741. var sAdj2, adj2 = 50000 * slideFactor;
  4742. if (shapAdjst_ary !== undefined) {
  4743. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4744. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4745. if (sAdj_name == "adj1") {
  4746. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4747. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  4748. } else if (sAdj_name == "adj2") {
  4749. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4750. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  4751. }
  4752. }
  4753. }
  4754. var d_val;
  4755. var cnstVal1 = 25000 * slideFactor;
  4756. var cnstVal2 = 33333 * slideFactor;
  4757. var cnstVal3 = 75000 * slideFactor;
  4758. var cnstVal4 = 100000 * slideFactor;
  4759. var cnstVal5 = 200000 * slideFactor;
  4760. var cnstVal6 = 400000 * slideFactor;
  4761. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32;
  4762. var a1, a2, x10, dx2, x2, x9, x3, x8, x5, x6, x4, x7, y1, y2, y4, y3, hR, y6;
  4763. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  4764. a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2;
  4765. x10 = r - wd8;
  4766. dx2 = w * a2 / cnstVal5;
  4767. x2 = hc - dx2;
  4768. x9 = hc + dx2;
  4769. x3 = x2 + wd32;
  4770. x8 = x9 - wd32;
  4771. x5 = x2 + wd8;
  4772. x6 = x9 - wd8;
  4773. x4 = x5 - wd32;
  4774. x7 = x6 + wd32;
  4775. hR = h * a1 / cnstVal6;
  4776. if (shapType == "ribbon2") {
  4777. var dy1, dy2, y7;
  4778. dy1 = h * a1 / cnstVal5;
  4779. y1 = b - dy1;
  4780. dy2 = h * a1 / cnstVal4;
  4781. y2 = b - dy2;
  4782. y4 = t + dy2;
  4783. y3 = (y4 + b) / 2;
  4784. y6 = b - hR;///////////////////
  4785. y7 = y1 - hR;
  4786. d_val = "M" + l + "," + b +
  4787. " L" + wd8 + "," + y3 +
  4788. " L" + l + "," + y4 +
  4789. " L" + x2 + "," + y4 +
  4790. " L" + x2 + "," + hR +
  4791. shapeArc(x3, hR, wd32, hR, 180, 270, false).replace("M", "L") +
  4792. " L" + x8 + "," + t +
  4793. shapeArc(x8, hR, wd32, hR, 270, 360, false).replace("M", "L") +
  4794. " L" + x9 + "," + y4 +
  4795. " L" + x9 + "," + y4 +
  4796. " L" + r + "," + y4 +
  4797. " L" + x10 + "," + y3 +
  4798. " L" + r + "," + b +
  4799. " L" + x7 + "," + b +
  4800. shapeArc(x7, y6, wd32, hR, 90, 270, false).replace("M", "L") +
  4801. " L" + x8 + "," + y1 +
  4802. shapeArc(x8, y7, wd32, hR, 90, -90, false).replace("M", "L") +
  4803. " L" + x3 + "," + y2 +
  4804. shapeArc(x3, y7, wd32, hR, 270, 90, false).replace("M", "L") +
  4805. " L" + x4 + "," + y1 +
  4806. shapeArc(x4, y6, wd32, hR, 270, 450, false).replace("M", "L") +
  4807. " z" +
  4808. " M" + x5 + "," + y2 +
  4809. " L" + x5 + "," + y6 +
  4810. "M" + x6 + "," + y6 +
  4811. " L" + x6 + "," + y2 +
  4812. "M" + x2 + "," + y7 +
  4813. " L" + x2 + "," + y4 +
  4814. "M" + x9 + "," + y4 +
  4815. " L" + x9 + "," + y7;
  4816. } else if (shapType == "ribbon") {
  4817. var y5;
  4818. y1 = h * a1 / cnstVal5;
  4819. y2 = h * a1 / cnstVal4;
  4820. y4 = b - y2;
  4821. y3 = y4 / 2;
  4822. y5 = b - hR; ///////////////////////
  4823. y6 = y2 - hR;
  4824. d_val = "M" + l + "," + t +
  4825. " L" + x4 + "," + t +
  4826. shapeArc(x4, hR, wd32, hR, 270, 450, false).replace("M", "L") +
  4827. " L" + x3 + "," + y1 +
  4828. shapeArc(x3, y6, wd32, hR, 270, 90, false).replace("M", "L") +
  4829. " L" + x8 + "," + y2 +
  4830. shapeArc(x8, y6, wd32, hR, 90, -90, false).replace("M", "L") +
  4831. " L" + x7 + "," + y1 +
  4832. shapeArc(x7, hR, wd32, hR, 90, 270, false).replace("M", "L") +
  4833. " L" + r + "," + t +
  4834. " L" + x10 + "," + y3 +
  4835. " L" + r + "," + y4 +
  4836. " L" + x9 + "," + y4 +
  4837. " L" + x9 + "," + y5 +
  4838. shapeArc(x8, y5, wd32, hR, 0, 90, false).replace("M", "L") +
  4839. " L" + x3 + "," + b +
  4840. shapeArc(x3, y5, wd32, hR, 90, 180, false).replace("M", "L") +
  4841. " L" + x2 + "," + y4 +
  4842. " L" + l + "," + y4 +
  4843. " L" + wd8 + "," + y3 +
  4844. " z" +
  4845. " M" + x5 + "," + hR +
  4846. " L" + x5 + "," + y2 +
  4847. "M" + x6 + "," + y2 +
  4848. " L" + x6 + "," + hR +
  4849. "M" + x2 + "," + y4 +
  4850. " L" + x2 + "," + y6 +
  4851. "M" + x9 + "," + y6 +
  4852. " L" + x9 + "," + y4;
  4853. }
  4854. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4855. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4856. break;
  4857. case "doubleWave":
  4858. case "wave":
  4859. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4860. var sAdj1, adj1 = (shapType == "doubleWave") ? 6250 * slideFactor : 12500 * slideFactor;
  4861. var sAdj2, adj2 = 0;
  4862. if (shapAdjst_ary !== undefined) {
  4863. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4864. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4865. if (sAdj_name == "adj1") {
  4866. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4867. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  4868. } else if (sAdj_name == "adj2") {
  4869. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4870. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  4871. }
  4872. }
  4873. }
  4874. var d_val;
  4875. var cnstVal2 = -10000 * slideFactor;
  4876. var cnstVal3 = 50000 * slideFactor;
  4877. var cnstVal4 = 100000 * slideFactor;
  4878. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32;
  4879. if (shapType == "doubleWave") {
  4880. var cnstVal1 = 12500 * slideFactor;
  4881. 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;
  4882. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1;
  4883. a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2;
  4884. y1 = h * a1 / cnstVal4;
  4885. dy2 = y1 * 10 / 3;
  4886. y2 = y1 - dy2;
  4887. y3 = y1 + dy2;
  4888. y4 = b - y1;
  4889. y5 = y4 - dy2;
  4890. y6 = y4 + dy2;
  4891. of2 = w * a2 / cnstVal3;
  4892. dx2 = (of2 > 0) ? 0 : of2;
  4893. x2 = l - dx2;
  4894. dx8 = (of2 > 0) ? of2 : 0;
  4895. x8 = r - dx8;
  4896. dx3 = (dx2 + x8) / 6;
  4897. x3 = x2 + dx3;
  4898. dx4 = (dx2 + x8) / 3;
  4899. x4 = x2 + dx4;
  4900. x5 = (x2 + x8) / 2;
  4901. x6 = x5 + dx3;
  4902. x7 = (x6 + x8) / 2;
  4903. x9 = l + dx8;
  4904. x15 = r + dx2;
  4905. x10 = x9 + dx3;
  4906. x11 = x9 + dx4;
  4907. x12 = (x9 + x15) / 2;
  4908. x13 = x12 + dx3;
  4909. x14 = (x13 + x15) / 2;
  4910. d_val = "M" + x2 + "," + y1 +
  4911. " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 +
  4912. " C" + x6 + "," + y2 + " " + x7 + "," + y3 + " " + x8 + "," + y1 +
  4913. " L" + x15 + "," + y4 +
  4914. " C" + x14 + "," + y6 + " " + x13 + "," + y5 + " " + x12 + "," + y4 +
  4915. " C" + x11 + "," + y6 + " " + x10 + "," + y5 + " " + x9 + "," + y4 +
  4916. " z";
  4917. } else if (shapType == "wave") {
  4918. var cnstVal5 = 20000 * slideFactor;
  4919. var a1, a2, y1, dy2, y2, y3, y4, y5, y6, of2, dx2, x2, dx5, x5, dx3, x3, x4, x6, x10, x7, x8;
  4920. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  4921. a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2;
  4922. y1 = h * a1 / cnstVal4;
  4923. dy2 = y1 * 10 / 3;
  4924. y2 = y1 - dy2;
  4925. y3 = y1 + dy2;
  4926. y4 = b - y1;
  4927. y5 = y4 - dy2;
  4928. y6 = y4 + dy2;
  4929. of2 = w * a2 / cnstVal3;
  4930. dx2 = (of2 > 0) ? 0 : of2;
  4931. x2 = l - dx2;
  4932. dx5 = (of2 > 0) ? of2 : 0;
  4933. x5 = r - dx5;
  4934. dx3 = (dx2 + x5) / 3;
  4935. x3 = x2 + dx3;
  4936. x4 = (x3 + x5) / 2;
  4937. x6 = l + dx5;
  4938. x10 = r + dx2;
  4939. x7 = x6 + dx3;
  4940. x8 = (x7 + x10) / 2;
  4941. d_val = "M" + x2 + "," + y1 +
  4942. " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 +
  4943. " L" + x10 + "," + y4 +
  4944. " C" + x8 + "," + y6 + " " + x7 + "," + y5 + " " + x6 + "," + y4 +
  4945. " z";
  4946. }
  4947. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  4948. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  4949. break;
  4950. case "ellipseRibbon":
  4951. case "ellipseRibbon2":
  4952. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  4953. var sAdj1, adj1 = 25000 * slideFactor;
  4954. var sAdj2, adj2 = 50000 * slideFactor;
  4955. var sAdj3, adj3 = 12500 * slideFactor;
  4956. if (shapAdjst_ary !== undefined) {
  4957. for (var i = 0; i < shapAdjst_ary.length; i++) {
  4958. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  4959. if (sAdj_name == "adj1") {
  4960. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4961. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  4962. } else if (sAdj_name == "adj2") {
  4963. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4964. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  4965. } else if (sAdj_name == "adj3") {
  4966. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  4967. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  4968. }
  4969. }
  4970. }
  4971. var d_val;
  4972. var cnstVal1 = 25000 * slideFactor;
  4973. var cnstVal3 = 75000 * slideFactor;
  4974. var cnstVal4 = 100000 * slideFactor;
  4975. var cnstVal5 = 200000 * slideFactor;
  4976. var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8;
  4977. var a1, a2, q10, q11, q12, minAdj3, a3, dx2, x2, x3, x4, x5, x6, dy1, f1, q1, q2,
  4978. cx1, cx2, q1, dy3, q3, q4, q5, rh, q8, cx4, q9, cx5;
  4979. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal4) ? cnstVal4 : adj1;
  4980. a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2;
  4981. q10 = cnstVal4 - a1;
  4982. q11 = q10 / 2;
  4983. q12 = a1 - q11;
  4984. minAdj3 = (0 > q12) ? 0 : q12;
  4985. a3 = (adj3 < minAdj3) ? minAdj3 : (adj3 > a1) ? a1 : adj3;
  4986. dx2 = w * a2 / cnstVal5;
  4987. x2 = hc - dx2;
  4988. x3 = x2 + wd8;
  4989. x4 = r - x3;
  4990. x5 = r - x2;
  4991. x6 = r - wd8;
  4992. dy1 = h * a3 / cnstVal4;
  4993. f1 = 4 * dy1 / w;
  4994. q1 = x3 * x3 / w;
  4995. q2 = x3 - q1;
  4996. cx1 = x3 / 2;
  4997. cx2 = r - cx1;
  4998. q1 = h * a1 / cnstVal4;
  4999. dy3 = q1 - dy1;
  5000. q3 = x2 * x2 / w;
  5001. q4 = x2 - q3;
  5002. q5 = f1 * q4;
  5003. rh = b - q1;
  5004. q8 = dy1 * 14 / 16;
  5005. cx4 = x2 / 2;
  5006. q9 = f1 * cx4;
  5007. cx5 = r - cx4;
  5008. if (shapType == "ellipseRibbon") {
  5009. var y1, cy1, y3, q6, q7, cy3, y2, y5, y6,
  5010. cy4, cy6, y7, cy7, y8;
  5011. y1 = f1 * q2;
  5012. cy1 = f1 * cx1;
  5013. y3 = q5 + dy3;
  5014. q6 = dy1 + dy3 - y3;
  5015. q7 = q6 + dy1;
  5016. cy3 = q7 + dy3;
  5017. y2 = (q8 + rh) / 2;
  5018. y5 = q5 + rh;
  5019. y6 = y3 + rh;
  5020. cy4 = q9 + rh;
  5021. cy6 = cy3 + rh;
  5022. y7 = y1 + dy3;
  5023. cy7 = q1 + q1 - y7;
  5024. y8 = b - dy1;
  5025. //
  5026. d_val = "M" + l + "," + t +
  5027. " Q" + cx1 + "," + cy1 + " " + x3 + "," + y1 +
  5028. " L" + x2 + "," + y3 +
  5029. " Q" + hc + "," + cy3 + " " + x5 + "," + y3 +
  5030. " L" + x4 + "," + y1 +
  5031. " Q" + cx2 + "," + cy1 + " " + r + "," + t +
  5032. " L" + x6 + "," + y2 +
  5033. " L" + r + "," + rh +
  5034. " Q" + cx5 + "," + cy4 + " " + x5 + "," + y5 +
  5035. " L" + x5 + "," + y6 +
  5036. " Q" + hc + "," + cy6 + " " + x2 + "," + y6 +
  5037. " L" + x2 + "," + y5 +
  5038. " Q" + cx4 + "," + cy4 + " " + l + "," + rh +
  5039. " L" + wd8 + "," + y2 +
  5040. " z" +
  5041. "M" + x2 + "," + y5 +
  5042. " L" + x2 + "," + y3 +
  5043. "M" + x5 + "," + y3 +
  5044. " L" + x5 + "," + y5 +
  5045. "M" + x3 + "," + y1 +
  5046. " L" + x3 + "," + y7 +
  5047. "M" + x4 + "," + y7 +
  5048. " L" + x4 + "," + y1;
  5049. } else if (shapType == "ellipseRibbon2") {
  5050. var u1, y1, cu1, cy1, q3, q5, u3, y3, q6, q7, cu3, cy3, rh, q8, u2, y2,
  5051. u5, y5, u6, y6, cu4, cy4, cu6, cy6, u7, y7, cu7, cy7;
  5052. u1 = f1 * q2;
  5053. y1 = b - u1;
  5054. cu1 = f1 * cx1;
  5055. cy1 = b - cu1;
  5056. u3 = q5 + dy3;
  5057. y3 = b - u3;
  5058. q6 = dy1 + dy3 - u3;
  5059. q7 = q6 + dy1;
  5060. cu3 = q7 + dy3;
  5061. cy3 = b - cu3;
  5062. u2 = (q8 + rh) / 2;
  5063. y2 = b - u2;
  5064. u5 = q5 + rh;
  5065. y5 = b - u5;
  5066. u6 = u3 + rh;
  5067. y6 = b - u6;
  5068. cu4 = q9 + rh;
  5069. cy4 = b - cu4;
  5070. cu6 = cu3 + rh;
  5071. cy6 = b - cu6;
  5072. u7 = u1 + dy3;
  5073. y7 = b - u7;
  5074. cu7 = q1 + q1 - u7;
  5075. cy7 = b - cu7;
  5076. //
  5077. d_val = "M" + l + "," + b +
  5078. " L" + wd8 + "," + y2 +
  5079. " L" + l + "," + q1 +
  5080. " Q" + cx4 + "," + cy4 + " " + x2 + "," + y5 +
  5081. " L" + x2 + "," + y6 +
  5082. " Q" + hc + "," + cy6 + " " + x5 + "," + y6 +
  5083. " L" + x5 + "," + y5 +
  5084. " Q" + cx5 + "," + cy4 + " " + r + "," + q1 +
  5085. " L" + x6 + "," + y2 +
  5086. " L" + r + "," + b +
  5087. " Q" + cx2 + "," + cy1 + " " + x4 + "," + y1 +
  5088. " L" + x5 + "," + y3 +
  5089. " Q" + hc + "," + cy3 + " " + x2 + "," + y3 +
  5090. " L" + x3 + "," + y1 +
  5091. " Q" + cx1 + "," + cy1 + " " + l + "," + b +
  5092. " z" +
  5093. "M" + x2 + "," + y3 +
  5094. " L" + x2 + "," + y5 +
  5095. "M" + x5 + "," + y5 +
  5096. " L" + x5 + "," + y3 +
  5097. "M" + x3 + "," + y7 +
  5098. " L" + x3 + "," + y1 +
  5099. "M" + x4 + "," + y1 +
  5100. " L" + x4 + "," + y7;
  5101. }
  5102. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5103. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5104. break;
  5105. case "line":
  5106. case "straightConnector1":
  5107. case "bentConnector4":
  5108. case "bentConnector5":
  5109. case "curvedConnector2":
  5110. case "curvedConnector3":
  5111. case "curvedConnector4":
  5112. case "curvedConnector5":
  5113. // if (isFlipV) {
  5114. // result += "<line x1='" + w + "' y1='0' x2='0' y2='" + h + "' stroke='" + border.color +
  5115. // "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  5116. // } else {
  5117. result += "<line x1='0' y1='0' x2='" + w + "' y2='" + h + "' stroke='" + border.color +
  5118. "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' ";
  5119. //}
  5120. if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  5121. result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  5122. }
  5123. if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  5124. result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  5125. }
  5126. result += "/>";
  5127. break;
  5128. case "rightArrow":
  5129. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5130. var sAdj1, sAdj1_val = 0.25;//0.5;
  5131. var sAdj2, sAdj2_val = 0.5;
  5132. var max_sAdj2_const = w / h;
  5133. if (shapAdjst_ary !== undefined) {
  5134. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5135. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5136. if (sAdj_name == "adj1") {
  5137. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5138. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  5139. } else if (sAdj_name == "adj2") {
  5140. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5141. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5142. sAdj2_val = 1 - ((sAdj2_val2) / max_sAdj2_const);
  5143. }
  5144. }
  5145. }
  5146. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  5147. result += " <polygon points='" + w + " " + h / 2 + "," + sAdj2_val * w + " 0," + sAdj2_val * w + " " + sAdj1_val * h + ",0 " + sAdj1_val * h +
  5148. ",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 + ")") +
  5149. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5150. break;
  5151. case "leftArrow":
  5152. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5153. var sAdj1, sAdj1_val = 0.25;//0.5;
  5154. var sAdj2, sAdj2_val = 0.5;
  5155. var max_sAdj2_const = w / h;
  5156. if (shapAdjst_ary !== undefined) {
  5157. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5158. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5159. if (sAdj_name == "adj1") {
  5160. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5161. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  5162. } else if (sAdj_name == "adj2") {
  5163. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5164. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5165. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  5166. }
  5167. }
  5168. }
  5169. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  5170. result += " <polygon points='0 " + h / 2 + "," + sAdj2_val * w + " " + h + "," + sAdj2_val * w + " " + (1 - sAdj1_val) * h + "," + w + " " + (1 - sAdj1_val) * h +
  5171. "," + w + " " + sAdj1_val * h + "," + sAdj2_val * w + " " + sAdj1_val * h + ", " + sAdj2_val * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5172. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5173. break;
  5174. case "downArrow":
  5175. case "flowChartOffpageConnector":
  5176. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5177. var sAdj1, sAdj1_val = 0.25;//0.5;
  5178. var sAdj2, sAdj2_val = 0.5;
  5179. var max_sAdj2_const = h / w;
  5180. if (shapAdjst_ary !== undefined) {
  5181. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5182. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5183. if (sAdj_name == "adj1") {
  5184. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5185. sAdj1_val = parseInt(sAdj1.substr(4)) / 200000;
  5186. } else if (sAdj_name == "adj2") {
  5187. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5188. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5189. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  5190. }
  5191. }
  5192. }
  5193. if (shapType == "flowChartOffpageConnector") {
  5194. sAdj1_val = 0.5;
  5195. sAdj2_val = 0.212;
  5196. }
  5197. 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 +
  5198. "," + 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 + ")") +
  5199. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5200. break;
  5201. case "upArrow":
  5202. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5203. var sAdj1, sAdj1_val = 0.25;//0.5;
  5204. var sAdj2, sAdj2_val = 0.5;
  5205. var max_sAdj2_const = h / w;
  5206. if (shapAdjst_ary !== undefined) {
  5207. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5208. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5209. if (sAdj_name == "adj1") {
  5210. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5211. sAdj1_val = parseInt(sAdj1.substr(4)) / 200000;
  5212. } else if (sAdj_name == "adj2") {
  5213. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5214. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5215. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  5216. }
  5217. }
  5218. }
  5219. result += " <polygon points='" + (w / 2) + " 0,0 " + sAdj2_val * h + "," + (0.5 - sAdj1_val) * w + " " + sAdj2_val * h + "," + (0.5 - sAdj1_val) * w + " " + h +
  5220. "," + (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 + ")") +
  5221. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5222. break;
  5223. case "leftRightArrow":
  5224. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5225. var sAdj1, sAdj1_val = 0.25;
  5226. var sAdj2, sAdj2_val = 0.25;
  5227. var max_sAdj2_const = w / h;
  5228. if (shapAdjst_ary !== undefined) {
  5229. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5230. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5231. if (sAdj_name == "adj1") {
  5232. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5233. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  5234. } else if (sAdj_name == "adj2") {
  5235. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5236. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5237. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  5238. }
  5239. }
  5240. }
  5241. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  5242. 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 +
  5243. "," + (1 - sAdj2_val) * w + " " + h + "," + w + " " + h / 2 + ", " + (1 - sAdj2_val) * w + " 0," + (1 - sAdj2_val) * w + " " + sAdj1_val * h + "," +
  5244. sAdj2_val * w + " " + sAdj1_val * h + "," + sAdj2_val * w + " 0' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5245. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5246. break;
  5247. case "upDownArrow":
  5248. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5249. var sAdj1, sAdj1_val = 0.25;
  5250. var sAdj2, sAdj2_val = 0.25;
  5251. var max_sAdj2_const = h / w;
  5252. if (shapAdjst_ary !== undefined) {
  5253. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5254. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5255. if (sAdj_name == "adj1") {
  5256. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5257. sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000);
  5258. } else if (sAdj_name == "adj2") {
  5259. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5260. var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000;
  5261. sAdj2_val = (sAdj2_val2) / max_sAdj2_const;
  5262. }
  5263. }
  5264. }
  5265. //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val);
  5266. result += " <polygon points='" + w / 2 + " 0,0 " + sAdj2_val * h + "," + sAdj1_val * w + " " + sAdj2_val * h + "," + sAdj1_val * w + " " + (1 - sAdj2_val) * h +
  5267. ",0 " + (1 - sAdj2_val) * h + "," + w / 2 + " " + h + ", " + w + " " + (1 - sAdj2_val) * h + "," + (1 - sAdj1_val) * w + " " + (1 - sAdj2_val) * h + "," +
  5268. (1 - sAdj1_val) * w + " " + sAdj2_val * h + "," + w + " " + sAdj2_val * h + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5269. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5270. break;
  5271. case "quadArrow":
  5272. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5273. var sAdj1, adj1 = 22500 * slideFactor;
  5274. var sAdj2, adj2 = 22500 * slideFactor;
  5275. var sAdj3, adj3 = 22500 * slideFactor;
  5276. var cnstVal1 = 50000 * slideFactor;
  5277. var cnstVal2 = 100000 * slideFactor;
  5278. var cnstVal3 = 200000 * slideFactor;
  5279. if (shapAdjst_ary !== undefined) {
  5280. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5281. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5282. if (sAdj_name == "adj1") {
  5283. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5284. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5285. } else if (sAdj_name == "adj2") {
  5286. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5287. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5288. } else if (sAdj_name == "adj3") {
  5289. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5290. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5291. }
  5292. }
  5293. }
  5294. 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;
  5295. var minWH = Math.min(w, h);
  5296. if (adj2 < 0) a2 = 0
  5297. else if (adj2 > cnstVal1) a2 = cnstVal1
  5298. else a2 = adj2
  5299. maxAdj1 = 2 * a2;
  5300. if (adj1 < 0) a1 = 0
  5301. else if (adj1 > maxAdj1) a1 = maxAdj1
  5302. else a1 = adj1
  5303. q1 = cnstVal2 - maxAdj1;
  5304. maxAdj3 = q1 / 2;
  5305. if (adj3 < 0) a3 = 0
  5306. else if (adj3 > maxAdj3) a3 = maxAdj3
  5307. else a3 = adj3
  5308. x1 = minWH * a3 / cnstVal2;
  5309. dx2 = minWH * a2 / cnstVal2;
  5310. x2 = hc - dx2;
  5311. x5 = hc + dx2;
  5312. dx3 = minWH * a1 / cnstVal3;
  5313. x3 = hc - dx3;
  5314. x4 = hc + dx3;
  5315. x6 = w - x1;
  5316. y2 = vc - dx2;
  5317. y5 = vc + dx2;
  5318. y3 = vc - dx3;
  5319. y4 = vc + dx3;
  5320. y6 = h - x1;
  5321. var d_val = "M" + 0 + "," + vc +
  5322. " L" + x1 + "," + y2 +
  5323. " L" + x1 + "," + y3 +
  5324. " L" + x3 + "," + y3 +
  5325. " L" + x3 + "," + x1 +
  5326. " L" + x2 + "," + x1 +
  5327. " L" + hc + "," + 0 +
  5328. " L" + x5 + "," + x1 +
  5329. " L" + x4 + "," + x1 +
  5330. " L" + x4 + "," + y3 +
  5331. " L" + x6 + "," + y3 +
  5332. " L" + x6 + "," + y2 +
  5333. " L" + w + "," + vc +
  5334. " L" + x6 + "," + y5 +
  5335. " L" + x6 + "," + y4 +
  5336. " L" + x4 + "," + y4 +
  5337. " L" + x4 + "," + y6 +
  5338. " L" + x5 + "," + y6 +
  5339. " L" + hc + "," + h +
  5340. " L" + x2 + "," + y6 +
  5341. " L" + x3 + "," + y6 +
  5342. " L" + x3 + "," + y4 +
  5343. " L" + x1 + "," + y4 +
  5344. " L" + x1 + "," + y5 + " z";
  5345. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5346. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5347. break;
  5348. case "leftRightUpArrow":
  5349. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5350. var sAdj1, adj1 = 25000 * slideFactor;
  5351. var sAdj2, adj2 = 25000 * slideFactor;
  5352. var sAdj3, adj3 = 25000 * slideFactor;
  5353. var cnstVal1 = 50000 * slideFactor;
  5354. var cnstVal2 = 100000 * slideFactor;
  5355. var cnstVal3 = 200000 * slideFactor;
  5356. if (shapAdjst_ary !== undefined) {
  5357. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5358. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5359. if (sAdj_name == "adj1") {
  5360. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5361. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5362. } else if (sAdj_name == "adj2") {
  5363. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5364. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5365. } else if (sAdj_name == "adj3") {
  5366. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5367. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5368. }
  5369. }
  5370. }
  5371. 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;
  5372. var minWH = Math.min(w, h);
  5373. if (adj2 < 0) a2 = 0
  5374. else if (adj2 > cnstVal1) a2 = cnstVal1
  5375. else a2 = adj2
  5376. maxAdj1 = 2 * a2;
  5377. if (adj1 < 0) a1 = 0
  5378. else if (adj1 > maxAdj1) a1 = maxAdj1
  5379. else a1 = adj1
  5380. q1 = cnstVal2 - maxAdj1;
  5381. maxAdj3 = q1 / 2;
  5382. if (adj3 < 0) a3 = 0
  5383. else if (adj3 > maxAdj3) a3 = maxAdj3
  5384. else a3 = adj3
  5385. x1 = minWH * a3 / cnstVal2;
  5386. dx2 = minWH * a2 / cnstVal2;
  5387. x2 = hc - dx2;
  5388. x5 = hc + dx2;
  5389. dx3 = minWH * a1 / cnstVal3;
  5390. x3 = hc - dx3;
  5391. x4 = hc + dx3;
  5392. x6 = w - x1;
  5393. dy2 = minWH * a2 / cnstVal1;
  5394. y2 = h - dy2;
  5395. y4 = h - dx2;
  5396. y3 = y4 - dx3;
  5397. y5 = y4 + dx3;
  5398. var d_val = "M" + 0 + "," + y4 +
  5399. " L" + x1 + "," + y2 +
  5400. " L" + x1 + "," + y3 +
  5401. " L" + x3 + "," + y3 +
  5402. " L" + x3 + "," + x1 +
  5403. " L" + x2 + "," + x1 +
  5404. " L" + hc + "," + 0 +
  5405. " L" + x5 + "," + x1 +
  5406. " L" + x4 + "," + x1 +
  5407. " L" + x4 + "," + y3 +
  5408. " L" + x6 + "," + y3 +
  5409. " L" + x6 + "," + y2 +
  5410. " L" + w + "," + y4 +
  5411. " L" + x6 + "," + h +
  5412. " L" + x6 + "," + y5 +
  5413. " L" + x1 + "," + y5 +
  5414. " L" + x1 + "," + h + " z";
  5415. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5416. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5417. break;
  5418. case "leftUpArrow":
  5419. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5420. var sAdj1, adj1 = 25000 * slideFactor;
  5421. var sAdj2, adj2 = 25000 * slideFactor;
  5422. var sAdj3, adj3 = 25000 * slideFactor;
  5423. var cnstVal1 = 50000 * slideFactor;
  5424. var cnstVal2 = 100000 * slideFactor;
  5425. var cnstVal3 = 200000 * slideFactor;
  5426. if (shapAdjst_ary !== undefined) {
  5427. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5428. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5429. if (sAdj_name == "adj1") {
  5430. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5431. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5432. } else if (sAdj_name == "adj2") {
  5433. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5434. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5435. } else if (sAdj_name == "adj3") {
  5436. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5437. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5438. }
  5439. }
  5440. }
  5441. var vc = h / 2, hc = w / 2, a1, a2, a3, x1, x2, dx4, dx3, x3, x4, x5, y2, y3, y4, y5, maxAdj1, maxAdj3;
  5442. var minWH = Math.min(w, h);
  5443. if (adj2 < 0) a2 = 0
  5444. else if (adj2 > cnstVal1) a2 = cnstVal1
  5445. else a2 = adj2
  5446. maxAdj1 = 2 * a2;
  5447. if (adj1 < 0) a1 = 0
  5448. else if (adj1 > maxAdj1) a1 = maxAdj1
  5449. else a1 = adj1
  5450. maxAdj3 = cnstVal2 - maxAdj1;
  5451. if (adj3 < 0) a3 = 0
  5452. else if (adj3 > maxAdj3) a3 = maxAdj3
  5453. else a3 = adj3
  5454. x1 = minWH * a3 / cnstVal2;
  5455. dx2 = minWH * a2 / cnstVal1;
  5456. x2 = w - dx2;
  5457. y2 = h - dx2;
  5458. dx4 = minWH * a2 / cnstVal2;
  5459. x4 = w - dx4;
  5460. y4 = h - dx4;
  5461. dx3 = minWH * a1 / cnstVal3;
  5462. x3 = x4 - dx3;
  5463. x5 = x4 + dx3;
  5464. y3 = y4 - dx3;
  5465. y5 = y4 + dx3;
  5466. var d_val = "M" + 0 + "," + y4 +
  5467. " L" + x1 + "," + y2 +
  5468. " L" + x1 + "," + y3 +
  5469. " L" + x3 + "," + y3 +
  5470. " L" + x3 + "," + x1 +
  5471. " L" + x2 + "," + x1 +
  5472. " L" + x4 + "," + 0 +
  5473. " L" + w + "," + x1 +
  5474. " L" + x5 + "," + x1 +
  5475. " L" + x5 + "," + y5 +
  5476. " L" + x1 + "," + y5 +
  5477. " L" + x1 + "," + h + " z";
  5478. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5479. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5480. break;
  5481. case "bentUpArrow":
  5482. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5483. var sAdj1, adj1 = 25000 * slideFactor;
  5484. var sAdj2, adj2 = 25000 * slideFactor;
  5485. var sAdj3, adj3 = 25000 * slideFactor;
  5486. var cnstVal1 = 50000 * slideFactor;
  5487. var cnstVal2 = 100000 * slideFactor;
  5488. var cnstVal3 = 200000 * slideFactor;
  5489. if (shapAdjst_ary !== undefined) {
  5490. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5491. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5492. if (sAdj_name == "adj1") {
  5493. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5494. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5495. } else if (sAdj_name == "adj2") {
  5496. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5497. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5498. } else if (sAdj_name == "adj3") {
  5499. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5500. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5501. }
  5502. }
  5503. }
  5504. var vc = h / 2, hc = w / 2, a1, a2, a3, dx1, x1, dx2, x2, dx3, x3, x4, y1, y2, dy2;
  5505. var minWH = Math.min(w, h);
  5506. if (adj1 < 0) a1 = 0
  5507. else if (adj1 > cnstVal1) a1 = cnstVal1
  5508. else a1 = adj1
  5509. if (adj2 < 0) a2 = 0
  5510. else if (adj2 > cnstVal1) a2 = cnstVal1
  5511. else a2 = adj2
  5512. if (adj3 < 0) a3 = 0
  5513. else if (adj3 > maxAdj3) a3 = maxAdj3
  5514. else a3 = adj3
  5515. y1 = minWH * a3 / cnstVal2;
  5516. dx1 = minWH * a2 / cnstVal1;
  5517. x1 = w - dx1;
  5518. dx3 = minWH * a2 / cnstVal2;
  5519. x3 = w - dx3;
  5520. dx2 = minWH * a1 / cnstVal3;
  5521. x2 = x3 - dx2;
  5522. x4 = x3 + dx2;
  5523. dy2 = minWH * a1 / cnstVal2;
  5524. y2 = h - dy2;
  5525. var d_val = "M" + 0 + "," + y2 +
  5526. " L" + x2 + "," + y2 +
  5527. " L" + x2 + "," + y1 +
  5528. " L" + x1 + "," + y1 +
  5529. " L" + x3 + "," + 0 +
  5530. " L" + w + "," + y1 +
  5531. " L" + x4 + "," + y1 +
  5532. " L" + x4 + "," + h +
  5533. " L" + 0 + "," + h + " z";
  5534. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5535. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5536. break;
  5537. case "bentArrow":
  5538. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5539. var sAdj1, adj1 = 25000 * slideFactor;
  5540. var sAdj2, adj2 = 25000 * slideFactor;
  5541. var sAdj3, adj3 = 25000 * slideFactor;
  5542. var sAdj4, adj4 = 43750 * slideFactor;
  5543. var cnstVal1 = 50000 * slideFactor;
  5544. var cnstVal2 = 100000 * slideFactor;
  5545. if (shapAdjst_ary !== undefined) {
  5546. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5547. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5548. if (sAdj_name == "adj1") {
  5549. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5550. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5551. } else if (sAdj_name == "adj2") {
  5552. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5553. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5554. } else if (sAdj_name == "adj3") {
  5555. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5556. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5557. } else if (sAdj_name == "adj4") {
  5558. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5559. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  5560. }
  5561. }
  5562. }
  5563. var a1, a2, a3, a4, x3, x4, y3, y4, y5, y6, maxAdj1, maxAdj4;
  5564. var minWH = Math.min(w, h);
  5565. if (adj2 < 0) a2 = 0
  5566. else if (adj2 > cnstVal1) a2 = cnstVal1
  5567. else a2 = adj2
  5568. maxAdj1 = 2 * a2;
  5569. if (adj1 < 0) a1 = 0
  5570. else if (adj1 > maxAdj1) a1 = maxAdj1
  5571. else a1 = adj1
  5572. if (adj3 < 0) a3 = 0
  5573. else if (adj3 > cnstVal1) a3 = cnstVal1
  5574. else a3 = adj3
  5575. var th, aw2, th2, dh2, ah, bw, bh, bs, bd, bd3, bd2,
  5576. th = minWH * a1 / cnstVal2;
  5577. aw2 = minWH * a2 / cnstVal2;
  5578. th2 = th / 2;
  5579. dh2 = aw2 - th2;
  5580. ah = minWH * a3 / cnstVal2;
  5581. bw = w - ah;
  5582. bh = h - dh2;
  5583. bs = (bw < bh) ? bw : bh;
  5584. maxAdj4 = cnstVal2 * bs / minWH;
  5585. if (adj4 < 0) a4 = 0
  5586. else if (adj4 > maxAdj4) a4 = maxAdj4
  5587. else a4 = adj4
  5588. bd = minWH * a4 / cnstVal2;
  5589. bd3 = bd - th;
  5590. bd2 = (bd3 > 0) ? bd3 : 0;
  5591. x3 = th + bd2;
  5592. x4 = w - ah;
  5593. y3 = dh2 + th;
  5594. y4 = y3 + dh2;
  5595. y5 = dh2 + bd;
  5596. y6 = y3 + bd2;
  5597. var d_val = "M" + 0 + "," + h +
  5598. " L" + 0 + "," + y5 +
  5599. shapeArc(bd, y5, bd, bd, 180, 270, false).replace("M", "L") +
  5600. " L" + x4 + "," + dh2 +
  5601. " L" + x4 + "," + 0 +
  5602. " L" + w + "," + aw2 +
  5603. " L" + x4 + "," + y4 +
  5604. " L" + x4 + "," + y3 +
  5605. " L" + x3 + "," + y3 +
  5606. shapeArc(x3, y6, bd2, bd2, 270, 180, false).replace("M", "L") +
  5607. " L" + th + "," + h + " z";
  5608. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5609. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5610. break;
  5611. case "uturnArrow":
  5612. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5613. var sAdj1, adj1 = 25000 * slideFactor;
  5614. var sAdj2, adj2 = 25000 * slideFactor;
  5615. var sAdj3, adj3 = 25000 * slideFactor;
  5616. var sAdj4, adj4 = 43750 * slideFactor;
  5617. var sAdj5, adj5 = 75000 * slideFactor;
  5618. var cnstVal1 = 25000 * slideFactor;
  5619. var cnstVal2 = 100000 * slideFactor;
  5620. if (shapAdjst_ary !== undefined) {
  5621. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5622. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5623. if (sAdj_name == "adj1") {
  5624. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5625. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5626. } else if (sAdj_name == "adj2") {
  5627. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5628. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5629. } else if (sAdj_name == "adj3") {
  5630. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5631. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5632. } else if (sAdj_name == "adj4") {
  5633. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5634. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  5635. } else if (sAdj_name == "adj5") {
  5636. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5637. adj5 = parseInt(sAdj5.substr(4)) * slideFactor;
  5638. }
  5639. }
  5640. }
  5641. var a1, a2, a3, a4, a5, q1, q2, q3, x3, x4, x5, x6, x7, x8, x9, y4, y5, minAdj5, maxAdj1, maxAdj3, maxAdj4;
  5642. var minWH = Math.min(w, h);
  5643. if (adj2 < 0) a2 = 0
  5644. else if (adj2 > cnstVal1) a2 = cnstVal1
  5645. else a2 = adj2
  5646. maxAdj1 = 2 * a2;
  5647. if (adj1 < 0) a1 = 0
  5648. else if (adj1 > maxAdj1) a1 = maxAdj1
  5649. else a1 = adj1
  5650. q2 = a1 * minWH / h;
  5651. q3 = cnstVal2 - q2;
  5652. maxAdj3 = q3 * h / minWH;
  5653. if (adj3 < 0) a3 = 0
  5654. else if (adj3 > maxAdj3) a3 = maxAdj3
  5655. else a3 = adj3
  5656. q1 = a3 + a1;
  5657. minAdj5 = q1 * minWH / h;
  5658. if (adj5 < minAdj5) a5 = minAdj5
  5659. else if (adj5 > cnstVal2) a5 = cnstVal2
  5660. else a5 = adj5
  5661. var th, aw2, th2, dh2, ah, bw, bs, bd, bd3, bd2,
  5662. th = minWH * a1 / cnstVal2;
  5663. aw2 = minWH * a2 / cnstVal2;
  5664. th2 = th / 2;
  5665. dh2 = aw2 - th2;
  5666. y5 = h * a5 / cnstVal2;
  5667. ah = minWH * a3 / cnstVal2;
  5668. y4 = y5 - ah;
  5669. x9 = w - dh2;
  5670. bw = x9 / 2;
  5671. bs = (bw < y4) ? bw : y4;
  5672. maxAdj4 = cnstVal2 * bs / minWH;
  5673. if (adj4 < 0) a4 = 0
  5674. else if (adj4 > maxAdj4) a4 = maxAdj4
  5675. else a4 = adj4
  5676. bd = minWH * a4 / cnstVal2;
  5677. bd3 = bd - th;
  5678. bd2 = (bd3 > 0) ? bd3 : 0;
  5679. x3 = th + bd2;
  5680. x8 = w - aw2;
  5681. x6 = x8 - aw2;
  5682. x7 = x6 + dh2;
  5683. x4 = x9 - bd;
  5684. x5 = x7 - bd2;
  5685. cx = (th + x7) / 2
  5686. var cy = (y4 + th) / 2
  5687. var d_val = "M" + 0 + "," + h +
  5688. " L" + 0 + "," + bd +
  5689. shapeArc(bd, bd, bd, bd, 180, 270, false).replace("M", "L") +
  5690. " L" + x4 + "," + 0 +
  5691. shapeArc(x4, bd, bd, bd, 270, 360, false).replace("M", "L") +
  5692. " L" + x9 + "," + y4 +
  5693. " L" + w + "," + y4 +
  5694. " L" + x8 + "," + y5 +
  5695. " L" + x6 + "," + y4 +
  5696. " L" + x7 + "," + y4 +
  5697. " L" + x7 + "," + x3 +
  5698. shapeArc(x5, x3, bd2, bd2, 0, -90, false).replace("M", "L") +
  5699. " L" + x3 + "," + th +
  5700. shapeArc(x3, x3, bd2, bd2, 270, 180, false).replace("M", "L") +
  5701. " L" + th + "," + h + " z";
  5702. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5703. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5704. break;
  5705. case "stripedRightArrow":
  5706. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5707. var sAdj1, adj1 = 50000 * slideFactor;
  5708. var sAdj2, adj2 = 50000 * slideFactor;
  5709. var cnstVal1 = 100000 * slideFactor;
  5710. var cnstVal2 = 200000 * slideFactor;
  5711. var cnstVal3 = 84375 * slideFactor;
  5712. if (shapAdjst_ary !== undefined) {
  5713. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5714. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5715. if (sAdj_name == "adj1") {
  5716. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5717. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5718. } else if (sAdj_name == "adj2") {
  5719. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5720. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5721. }
  5722. }
  5723. }
  5724. var a1, a2, x4, x5, dx5, x6, dx6, y1, dy1, y2, maxAdj2, vc = h / 2;
  5725. var minWH = Math.min(w, h);
  5726. maxAdj2 = cnstVal3 * w / minWH;
  5727. if (adj1 < 0) a1 = 0
  5728. else if (adj1 > cnstVal1) a1 = cnstVal1
  5729. else a1 = adj1
  5730. if (adj2 < 0) a2 = 0
  5731. else if (adj2 > maxAdj2) a2 = maxAdj2
  5732. else a2 = adj2
  5733. x4 = minWH * 5 / 32;
  5734. dx5 = minWH * a2 / cnstVal1;
  5735. x5 = w - dx5;
  5736. dy1 = h * a1 / cnstVal2;
  5737. y1 = vc - dy1;
  5738. y2 = vc + dy1;
  5739. //dx6 = dy1*dx5/hd2;
  5740. //x6 = w-dx6;
  5741. var ssd8 = minWH / 8,
  5742. ssd16 = minWH / 16,
  5743. ssd32 = minWH / 32;
  5744. var d_val = "M" + 0 + "," + y1 +
  5745. " L" + ssd32 + "," + y1 +
  5746. " L" + ssd32 + "," + y2 +
  5747. " L" + 0 + "," + y2 + " z" +
  5748. " M" + ssd16 + "," + y1 +
  5749. " L" + ssd8 + "," + y1 +
  5750. " L" + ssd8 + "," + y2 +
  5751. " L" + ssd16 + "," + y2 + " z" +
  5752. " M" + x4 + "," + y1 +
  5753. " L" + x5 + "," + y1 +
  5754. " L" + x5 + "," + 0 +
  5755. " L" + w + "," + vc +
  5756. " L" + x5 + "," + h +
  5757. " L" + x5 + "," + y2 +
  5758. " L" + x4 + "," + y2 + " z";
  5759. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5760. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5761. break;
  5762. case "notchedRightArrow":
  5763. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5764. var sAdj1, adj1 = 50000 * slideFactor;
  5765. var sAdj2, adj2 = 50000 * slideFactor;
  5766. var cnstVal1 = 100000 * slideFactor;
  5767. var cnstVal2 = 200000 * slideFactor;
  5768. if (shapAdjst_ary !== undefined) {
  5769. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5770. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5771. if (sAdj_name == "adj1") {
  5772. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5773. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5774. } else if (sAdj_name == "adj2") {
  5775. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5776. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5777. }
  5778. }
  5779. }
  5780. var a1, a2, x1, x2, dx2, y1, dy1, y2, maxAdj2, vc = h / 2, hd2 = vc;
  5781. var minWH = Math.min(w, h);
  5782. maxAdj2 = cnstVal1 * w / minWH;
  5783. if (adj1 < 0) a1 = 0
  5784. else if (adj1 > cnstVal1) a1 = cnstVal1
  5785. else a1 = adj1
  5786. if (adj2 < 0) a2 = 0
  5787. else if (adj2 > maxAdj2) a2 = maxAdj2
  5788. else a2 = adj2
  5789. dx2 = minWH * a2 / cnstVal1;
  5790. x2 = w - dx2;
  5791. dy1 = h * a1 / cnstVal2;
  5792. y1 = vc - dy1;
  5793. y2 = vc + dy1;
  5794. x1 = dy1 * dx2 / hd2;
  5795. var d_val = "M" + 0 + "," + y1 +
  5796. " L" + x2 + "," + y1 +
  5797. " L" + x2 + "," + 0 +
  5798. " L" + w + "," + vc +
  5799. " L" + x2 + "," + h +
  5800. " L" + x2 + "," + y2 +
  5801. " L" + 0 + "," + y2 +
  5802. " L" + x1 + "," + vc + " z";
  5803. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5804. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5805. break;
  5806. case "homePlate":
  5807. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  5808. var adj = 50000 * slideFactor;
  5809. var cnstVal1 = 100000 * slideFactor;
  5810. if (shapAdjst !== undefined) {
  5811. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  5812. }
  5813. var a, x1, dx1, maxAdj, vc = h / 2;
  5814. var minWH = Math.min(w, h);
  5815. maxAdj = cnstVal1 * w / minWH;
  5816. if (adj < 0) a = 0
  5817. else if (adj > maxAdj) a = maxAdj
  5818. else a = adj
  5819. dx1 = minWH * a / cnstVal1;
  5820. x1 = w - dx1;
  5821. var d_val = "M" + 0 + "," + 0 +
  5822. " L" + x1 + "," + 0 +
  5823. " L" + w + "," + vc +
  5824. " L" + x1 + "," + h +
  5825. " L" + 0 + "," + h + " z";
  5826. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5827. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5828. break;
  5829. case "chevron":
  5830. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  5831. var adj = 50000 * slideFactor;
  5832. var cnstVal1 = 100000 * slideFactor;
  5833. if (shapAdjst !== undefined) {
  5834. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  5835. }
  5836. var a, x1, dx1, x2, maxAdj, vc = h / 2;
  5837. var minWH = Math.min(w, h);
  5838. maxAdj = cnstVal1 * w / minWH;
  5839. if (adj < 0) a = 0
  5840. else if (adj > maxAdj) a = maxAdj
  5841. else a = adj
  5842. x1 = minWH * a / cnstVal1;
  5843. x2 = w - x1;
  5844. var d_val = "M" + 0 + "," + 0 +
  5845. " L" + x2 + "," + 0 +
  5846. " L" + w + "," + vc +
  5847. " L" + x2 + "," + h +
  5848. " L" + 0 + "," + h +
  5849. " L" + x1 + "," + vc + " z";
  5850. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5851. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5852. break;
  5853. case "rightArrowCallout":
  5854. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5855. var sAdj1, adj1 = 25000 * slideFactor;
  5856. var sAdj2, adj2 = 25000 * slideFactor;
  5857. var sAdj3, adj3 = 25000 * slideFactor;
  5858. var sAdj4, adj4 = 64977 * slideFactor;
  5859. var cnstVal1 = 50000 * slideFactor;
  5860. var cnstVal2 = 100000 * slideFactor;
  5861. var cnstVal3 = 200000 * slideFactor;
  5862. if (shapAdjst_ary !== undefined) {
  5863. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5864. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5865. if (sAdj_name == "adj1") {
  5866. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5867. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5868. } else if (sAdj_name == "adj2") {
  5869. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5870. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5871. } else if (sAdj_name == "adj3") {
  5872. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5873. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5874. } else if (sAdj_name == "adj4") {
  5875. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5876. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  5877. }
  5878. }
  5879. }
  5880. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, dx3, x3, x2, x1;
  5881. var vc = h / 2, r = w, b = h, l = 0, t = 0;
  5882. var ss = Math.min(w, h);
  5883. maxAdj2 = cnstVal1 * h / ss;
  5884. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5885. maxAdj1 = a2 * 2;
  5886. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  5887. maxAdj3 = cnstVal2 * w / ss;
  5888. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5889. q2 = a3 * ss / w;
  5890. maxAdj4 = cnstVal - q2;
  5891. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  5892. dy1 = ss * a2 / cnstVal2;
  5893. dy2 = ss * a1 / cnstVal3;
  5894. y1 = vc - dy1;
  5895. y2 = vc - dy2;
  5896. y3 = vc + dy2;
  5897. y4 = vc + dy1;
  5898. dx3 = ss * a3 / cnstVal2;
  5899. x3 = r - dx3;
  5900. x2 = w * a4 / cnstVal2;
  5901. x1 = x2 / 2;
  5902. var d_val = "M" + l + "," + t +
  5903. " L" + x2 + "," + t +
  5904. " L" + x2 + "," + y2 +
  5905. " L" + x3 + "," + y2 +
  5906. " L" + x3 + "," + y1 +
  5907. " L" + r + "," + vc +
  5908. " L" + x3 + "," + y4 +
  5909. " L" + x3 + "," + y3 +
  5910. " L" + x2 + "," + y3 +
  5911. " L" + x2 + "," + b +
  5912. " L" + l + "," + b +
  5913. " z";
  5914. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5915. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5916. break;
  5917. case "downArrowCallout":
  5918. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5919. var sAdj1, adj1 = 25000 * slideFactor;
  5920. var sAdj2, adj2 = 25000 * slideFactor;
  5921. var sAdj3, adj3 = 25000 * slideFactor;
  5922. var sAdj4, adj4 = 64977 * slideFactor;
  5923. var cnstVal1 = 50000 * slideFactor;
  5924. var cnstVal2 = 100000 * slideFactor;
  5925. var cnstVal3 = 200000 * slideFactor;
  5926. if (shapAdjst_ary !== undefined) {
  5927. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5928. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5929. if (sAdj_name == "adj1") {
  5930. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5931. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5932. } else if (sAdj_name == "adj2") {
  5933. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5934. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5935. } else if (sAdj_name == "adj3") {
  5936. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5937. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  5938. } else if (sAdj_name == "adj4") {
  5939. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5940. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  5941. }
  5942. }
  5943. }
  5944. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, dy3, y3, y2, y1;
  5945. var hc = w / 2, r = w, b = h, l = 0, t = 0;
  5946. var ss = Math.min(w, h);
  5947. maxAdj2 = cnstVal1 * w / ss;
  5948. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  5949. maxAdj1 = a2 * 2;
  5950. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  5951. maxAdj3 = cnstVal2 * h / ss;
  5952. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  5953. q2 = a3 * ss / h;
  5954. maxAdj4 = cnstVal2 - q2;
  5955. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  5956. dx1 = ss * a2 / cnstVal2;
  5957. dx2 = ss * a1 / cnstVal3;
  5958. x1 = hc - dx1;
  5959. x2 = hc - dx2;
  5960. x3 = hc + dx2;
  5961. x4 = hc + dx1;
  5962. dy3 = ss * a3 / cnstVal2;
  5963. y3 = b - dy3;
  5964. y2 = h * a4 / cnstVal2;
  5965. y1 = y2 / 2;
  5966. var d_val = "M" + l + "," + t +
  5967. " L" + r + "," + t +
  5968. " L" + r + "," + y2 +
  5969. " L" + x3 + "," + y2 +
  5970. " L" + x3 + "," + y3 +
  5971. " L" + x4 + "," + y3 +
  5972. " L" + hc + "," + b +
  5973. " L" + x1 + "," + y3 +
  5974. " L" + x2 + "," + y3 +
  5975. " L" + x2 + "," + y2 +
  5976. " L" + l + "," + y2 +
  5977. " z";
  5978. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  5979. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  5980. break;
  5981. case "leftArrowCallout":
  5982. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  5983. var sAdj1, adj1 = 25000 * slideFactor;
  5984. var sAdj2, adj2 = 25000 * slideFactor;
  5985. var sAdj3, adj3 = 25000 * slideFactor;
  5986. var sAdj4, adj4 = 64977 * slideFactor;
  5987. var cnstVal1 = 50000 * slideFactor;
  5988. var cnstVal2 = 100000 * slideFactor;
  5989. var cnstVal3 = 200000 * slideFactor;
  5990. if (shapAdjst_ary !== undefined) {
  5991. for (var i = 0; i < shapAdjst_ary.length; i++) {
  5992. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  5993. if (sAdj_name == "adj1") {
  5994. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5995. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  5996. } else if (sAdj_name == "adj2") {
  5997. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  5998. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  5999. } else if (sAdj_name == "adj3") {
  6000. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6001. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6002. } else if (sAdj_name == "adj4") {
  6003. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6004. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  6005. }
  6006. }
  6007. }
  6008. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, dx2, x2, x3;
  6009. var vc = h / 2, r = w, b = h, l = 0, t = 0;
  6010. var ss = Math.min(w, h);
  6011. maxAdj2 = cnstVal1 * h / ss;
  6012. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6013. maxAdj1 = a2 * 2;
  6014. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  6015. maxAdj3 = cnstVal2 * w / ss;
  6016. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6017. q2 = a3 * ss / w;
  6018. maxAdj4 = cnstVal2 - q2;
  6019. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  6020. dy1 = ss * a2 / cnstVal2;
  6021. dy2 = ss * a1 / cnstVal3;
  6022. y1 = vc - dy1;
  6023. y2 = vc - dy2;
  6024. y3 = vc + dy2;
  6025. y4 = vc + dy1;
  6026. x1 = ss * a3 / cnstVal2;
  6027. dx2 = w * a4 / cnstVal2;
  6028. x2 = r - dx2;
  6029. x3 = (x2 + r) / 2;
  6030. var d_val = "M" + l + "," + vc +
  6031. " L" + x1 + "," + y1 +
  6032. " L" + x1 + "," + y2 +
  6033. " L" + x2 + "," + y2 +
  6034. " L" + x2 + "," + t +
  6035. " L" + r + "," + t +
  6036. " L" + r + "," + b +
  6037. " L" + x2 + "," + b +
  6038. " L" + x2 + "," + y3 +
  6039. " L" + x1 + "," + y3 +
  6040. " L" + x1 + "," + y4 +
  6041. " z";
  6042. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6043. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6044. break;
  6045. case "upArrowCallout":
  6046. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6047. var sAdj1, adj1 = 25000 * slideFactor;
  6048. var sAdj2, adj2 = 25000 * slideFactor;
  6049. var sAdj3, adj3 = 25000 * slideFactor;
  6050. var sAdj4, adj4 = 64977 * slideFactor;
  6051. var cnstVal1 = 50000 * slideFactor;
  6052. var cnstVal2 = 100000 * slideFactor;
  6053. var cnstVal3 = 200000 * slideFactor;
  6054. if (shapAdjst_ary !== undefined) {
  6055. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6056. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6057. if (sAdj_name == "adj1") {
  6058. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6059. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6060. } else if (sAdj_name == "adj2") {
  6061. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6062. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6063. } else if (sAdj_name == "adj3") {
  6064. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6065. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6066. } else if (sAdj_name == "adj4") {
  6067. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6068. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  6069. }
  6070. }
  6071. }
  6072. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, y1, dy2, y2, y3;
  6073. var hc = w / 2, r = w, b = h, l = 0, t = 0;
  6074. var ss = Math.min(w, h);
  6075. maxAdj2 = cnstVal1 * w / ss;
  6076. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6077. maxAdj1 = a2 * 2;
  6078. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  6079. maxAdj3 = cnstVal2 * h / ss;
  6080. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6081. q2 = a3 * ss / h;
  6082. maxAdj4 = cnstVal2 - q2;
  6083. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  6084. dx1 = ss * a2 / cnstVal2;
  6085. dx2 = ss * a1 / cnstVal3;
  6086. x1 = hc - dx1;
  6087. x2 = hc - dx2;
  6088. x3 = hc + dx2;
  6089. x4 = hc + dx1;
  6090. y1 = ss * a3 / cnstVal2;
  6091. dy2 = h * a4 / cnstVal2;
  6092. y2 = b - dy2;
  6093. y3 = (y2 + b) / 2;
  6094. var d_val = "M" + l + "," + y2 +
  6095. " L" + x2 + "," + y2 +
  6096. " L" + x2 + "," + y1 +
  6097. " L" + x1 + "," + y1 +
  6098. " L" + hc + "," + t +
  6099. " L" + x4 + "," + y1 +
  6100. " L" + x3 + "," + y1 +
  6101. " L" + x3 + "," + y2 +
  6102. " L" + r + "," + y2 +
  6103. " L" + r + "," + b +
  6104. " L" + l + "," + b +
  6105. " z";
  6106. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6107. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6108. break;
  6109. case "leftRightArrowCallout":
  6110. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6111. var sAdj1, adj1 = 25000 * slideFactor;
  6112. var sAdj2, adj2 = 25000 * slideFactor;
  6113. var sAdj3, adj3 = 25000 * slideFactor;
  6114. var sAdj4, adj4 = 48123 * slideFactor;
  6115. var cnstVal1 = 50000 * slideFactor;
  6116. var cnstVal2 = 100000 * slideFactor;
  6117. var cnstVal3 = 200000 * slideFactor;
  6118. if (shapAdjst_ary !== undefined) {
  6119. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6120. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6121. if (sAdj_name == "adj1") {
  6122. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6123. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6124. } else if (sAdj_name == "adj2") {
  6125. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6126. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6127. } else if (sAdj_name == "adj3") {
  6128. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6129. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6130. } else if (sAdj_name == "adj4") {
  6131. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6132. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  6133. }
  6134. }
  6135. }
  6136. var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, x4, dx2, x2, x3;
  6137. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0;
  6138. var ss = Math.min(w, h);
  6139. maxAdj2 = cnstVal1 * h / ss;
  6140. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6141. maxAdj1 = a2 * 2;
  6142. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  6143. maxAdj3 = cnstVal1 * w / ss;
  6144. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6145. q2 = a3 * ss / wd2;
  6146. maxAdj4 = cnstVal2 - q2;
  6147. a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  6148. dy1 = ss * a2 / cnstVal2;
  6149. dy2 = ss * a1 / cnstVal3;
  6150. y1 = vc - dy1;
  6151. y2 = vc - dy2;
  6152. y3 = vc + dy2;
  6153. y4 = vc + dy1;
  6154. x1 = ss * a3 / cnstVal2;
  6155. x4 = r - x1;
  6156. dx2 = w * a4 / cnstVal3;
  6157. x2 = hc - dx2;
  6158. x3 = hc + dx2;
  6159. var d_val = "M" + l + "," + vc +
  6160. " L" + x1 + "," + y1 +
  6161. " L" + x1 + "," + y2 +
  6162. " L" + x2 + "," + y2 +
  6163. " L" + x2 + "," + t +
  6164. " L" + x3 + "," + t +
  6165. " L" + x3 + "," + y2 +
  6166. " L" + x4 + "," + y2 +
  6167. " L" + x4 + "," + y1 +
  6168. " L" + r + "," + vc +
  6169. " L" + x4 + "," + y4 +
  6170. " L" + x4 + "," + y3 +
  6171. " L" + x3 + "," + y3 +
  6172. " L" + x3 + "," + b +
  6173. " L" + x2 + "," + b +
  6174. " L" + x2 + "," + y3 +
  6175. " L" + x1 + "," + y3 +
  6176. " L" + x1 + "," + y4 +
  6177. " z";
  6178. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6179. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6180. break;
  6181. case "quadArrowCallout":
  6182. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6183. var sAdj1, adj1 = 18515 * slideFactor;
  6184. var sAdj2, adj2 = 18515 * slideFactor;
  6185. var sAdj3, adj3 = 18515 * slideFactor;
  6186. var sAdj4, adj4 = 48123 * slideFactor;
  6187. var cnstVal1 = 50000 * slideFactor;
  6188. var cnstVal2 = 100000 * slideFactor;
  6189. var cnstVal3 = 200000 * slideFactor;
  6190. if (shapAdjst_ary !== undefined) {
  6191. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6192. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6193. if (sAdj_name == "adj1") {
  6194. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6195. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6196. } else if (sAdj_name == "adj2") {
  6197. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6198. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6199. } else if (sAdj_name == "adj3") {
  6200. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6201. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6202. } else if (sAdj_name == "adj4") {
  6203. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6204. adj4 = parseInt(sAdj4.substr(4)) * slideFactor;
  6205. }
  6206. }
  6207. }
  6208. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0;
  6209. var ss = Math.min(w, h);
  6210. 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;
  6211. a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2;
  6212. maxAdj1 = a2 * 2;
  6213. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  6214. maxAdj3 = cnstVal1 - a2;
  6215. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6216. q2 = a3 * 2;
  6217. maxAdj4 = cnstVal2 - q2;
  6218. a4 = (adj4 < a1) ? a1 : (adj4 > maxAdj4) ? maxAdj4 : adj4;
  6219. dx2 = ss * a2 / cnstVal2;
  6220. dx3 = ss * a1 / cnstVal3;
  6221. ah = ss * a3 / cnstVal2;
  6222. dx1 = w * a4 / cnstVal3;
  6223. dy1 = h * a4 / cnstVal3;
  6224. x8 = r - ah;
  6225. x2 = hc - dx1;
  6226. x7 = hc + dx1;
  6227. x3 = hc - dx2;
  6228. x6 = hc + dx2;
  6229. x4 = hc - dx3;
  6230. x5 = hc + dx3;
  6231. y8 = b - ah;
  6232. y2 = vc - dy1;
  6233. y7 = vc + dy1;
  6234. y3 = vc - dx2;
  6235. y6 = vc + dx2;
  6236. y4 = vc - dx3;
  6237. y5 = vc + dx3;
  6238. var d_val = "M" + l + "," + vc +
  6239. " L" + ah + "," + y3 +
  6240. " L" + ah + "," + y4 +
  6241. " L" + x2 + "," + y4 +
  6242. " L" + x2 + "," + y2 +
  6243. " L" + x4 + "," + y2 +
  6244. " L" + x4 + "," + ah +
  6245. " L" + x3 + "," + ah +
  6246. " L" + hc + "," + t +
  6247. " L" + x6 + "," + ah +
  6248. " L" + x5 + "," + ah +
  6249. " L" + x5 + "," + y2 +
  6250. " L" + x7 + "," + y2 +
  6251. " L" + x7 + "," + y4 +
  6252. " L" + x8 + "," + y4 +
  6253. " L" + x8 + "," + y3 +
  6254. " L" + r + "," + vc +
  6255. " L" + x8 + "," + y6 +
  6256. " L" + x8 + "," + y5 +
  6257. " L" + x7 + "," + y5 +
  6258. " L" + x7 + "," + y7 +
  6259. " L" + x5 + "," + y7 +
  6260. " L" + x5 + "," + y8 +
  6261. " L" + x6 + "," + y8 +
  6262. " L" + hc + "," + b +
  6263. " L" + x3 + "," + y8 +
  6264. " L" + x4 + "," + y8 +
  6265. " L" + x4 + "," + y7 +
  6266. " L" + x2 + "," + y7 +
  6267. " L" + x2 + "," + y5 +
  6268. " L" + ah + "," + y5 +
  6269. " L" + ah + "," + y6 +
  6270. " z";
  6271. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6272. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6273. break;
  6274. case "curvedDownArrow":
  6275. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6276. var sAdj1, adj1 = 25000 * slideFactor;
  6277. var sAdj2, adj2 = 50000 * slideFactor;
  6278. var sAdj3, adj3 = 25000 * slideFactor;
  6279. var cnstVal1 = 50000 * slideFactor;
  6280. var cnstVal2 = 100000 * slideFactor;
  6281. if (shapAdjst_ary !== undefined) {
  6282. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6283. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6284. if (sAdj_name == "adj1") {
  6285. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6286. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6287. } else if (sAdj_name == "adj2") {
  6288. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6289. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6290. } else if (sAdj_name == "adj3") {
  6291. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6292. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6293. }
  6294. }
  6295. }
  6296. var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  6297. var ss = Math.min(w, h);
  6298. 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;
  6299. maxAdj2 = cnstVal1 * w / ss;
  6300. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6301. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  6302. th = ss * a1 / cnstVal2;
  6303. aw = ss * a2 / cnstVal2;
  6304. q1 = (th + aw) / 4;
  6305. wR = wd2 - q1;
  6306. q7 = wR * 2;
  6307. q8 = q7 * q7;
  6308. q9 = th * th;
  6309. q10 = q8 - q9;
  6310. q11 = Math.sqrt(q10);
  6311. idy = q11 * h / q7;
  6312. maxAdj3 = cnstVal2 * idy / ss;
  6313. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6314. ah = ss * adj3 / cnstVal2;
  6315. x3 = wR + th;
  6316. q2 = h * h;
  6317. q3 = ah * ah;
  6318. q4 = q2 - q3;
  6319. q5 = Math.sqrt(q4);
  6320. dx = q5 * wR / h;
  6321. x5 = wR + dx;
  6322. x7 = x3 + dx;
  6323. q6 = aw - th;
  6324. dh = q6 / 2;
  6325. x4 = x5 - dh;
  6326. x8 = x7 + dh;
  6327. aw2 = aw / 2;
  6328. x6 = r - aw2;
  6329. y1 = b - ah;
  6330. swAng = Math.atan(dx / ah);
  6331. var swAngDeg = swAng * 180 / Math.PI;
  6332. mswAng = -swAngDeg;
  6333. iy = b - idy;
  6334. ix = (wR + x3) / 2;
  6335. q12 = th / 2;
  6336. dang2 = Math.atan(q12 / idy);
  6337. var dang2Deg = dang2 * 180 / Math.PI;
  6338. stAng = c3d4 + swAngDeg;
  6339. stAng2 = c3d4 - dang2Deg;
  6340. swAng2 = dang2Deg - cd4;
  6341. swAng3 = cd4 + dang2Deg;
  6342. //var cX = x5 - Math.cos(stAng*Math.PI/180) * wR;
  6343. //var cY = y1 - Math.sin(stAng*Math.PI/180) * h;
  6344. var d_val = "M" + x6 + "," + b +
  6345. " L" + x4 + "," + y1 +
  6346. " L" + x5 + "," + y1 +
  6347. shapeArc(wR, h, wR, h, stAng, (stAng + mswAng), false).replace("M", "L") +
  6348. " L" + x3 + "," + t +
  6349. shapeArc(x3, h, wR, h, c3d4, (c3d4 + swAngDeg), false).replace("M", "L") +
  6350. " L" + (x5 + th) + "," + y1 +
  6351. " L" + x8 + "," + y1 +
  6352. " z" +
  6353. "M" + x3 + "," + t +
  6354. shapeArc(x3, h, wR, h, stAng2, (stAng2 + swAng2), false).replace("M", "L") +
  6355. shapeArc(wR, h, wR, h, cd2, (cd2 + swAng3), false).replace("M", "L");
  6356. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6357. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6358. break;
  6359. case "curvedLeftArrow":
  6360. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6361. var sAdj1, adj1 = 25000 * slideFactor;
  6362. var sAdj2, adj2 = 50000 * slideFactor;
  6363. var sAdj3, adj3 = 25000 * slideFactor;
  6364. var cnstVal1 = 50000 * slideFactor;
  6365. var cnstVal2 = 100000 * slideFactor;
  6366. if (shapAdjst_ary !== undefined) {
  6367. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6368. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6369. if (sAdj_name == "adj1") {
  6370. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6371. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6372. } else if (sAdj_name == "adj2") {
  6373. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6374. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6375. } else if (sAdj_name == "adj3") {
  6376. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6377. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6378. }
  6379. }
  6380. }
  6381. var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  6382. var ss = Math.min(w, h);
  6383. 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;
  6384. maxAdj2 = cnstVal1 * h / ss;
  6385. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6386. a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1;
  6387. th = ss * a1 / cnstVal2;
  6388. aw = ss * a2 / cnstVal2;
  6389. q1 = (th + aw) / 4;
  6390. hR = hd2 - q1;
  6391. q7 = hR * 2;
  6392. q8 = q7 * q7;
  6393. q9 = th * th;
  6394. q10 = q8 - q9;
  6395. q11 = Math.sqrt(q10);
  6396. iDx = q11 * w / q7;
  6397. maxAdj3 = cnstVal2 * iDx / ss;
  6398. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6399. ah = ss * a3 / cnstVal2;
  6400. y3 = hR + th;
  6401. q2 = w * w;
  6402. q3 = ah * ah;
  6403. q4 = q2 - q3;
  6404. q5 = Math.sqrt(q4);
  6405. dy = q5 * hR / w;
  6406. y5 = hR + dy;
  6407. y7 = y3 + dy;
  6408. q6 = aw - th;
  6409. dh = q6 / 2;
  6410. y4 = y5 - dh;
  6411. y8 = y7 + dh;
  6412. aw2 = aw / 2;
  6413. y6 = b - aw2;
  6414. x1 = l + ah;
  6415. swAng = Math.atan(dy / ah);
  6416. mswAng = -swAng;
  6417. ix = l + iDx;
  6418. iy = (hR + y3) / 2;
  6419. q12 = th / 2;
  6420. dang2 = Math.atan(q12 / iDx);
  6421. swAng2 = dang2 - swAng;
  6422. swAng3 = swAng + dang2;
  6423. stAng3 = -dang2;
  6424. var swAngDg, swAng2Dg, swAng3Dg, stAng3dg;
  6425. swAngDg = swAng * 180 / Math.PI;
  6426. swAng2Dg = swAng2 * 180 / Math.PI;
  6427. swAng3Dg = swAng3 * 180 / Math.PI;
  6428. stAng3dg = stAng3 * 180 / Math.PI;
  6429. var d_val = "M" + r + "," + y3 +
  6430. shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") +
  6431. " L" + l + "," + t +
  6432. shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L") +
  6433. " L" + r + "," + y3 +
  6434. shapeArc(l, y3, w, hR, 0, swAngDg, false).replace("M", "L") +
  6435. " L" + x1 + "," + y7 +
  6436. " L" + x1 + "," + y8 +
  6437. " L" + l + "," + y6 +
  6438. " L" + x1 + "," + y4 +
  6439. " L" + x1 + "," + y5 +
  6440. shapeArc(l, hR, w, hR, swAngDg, (swAngDg + swAng2Dg), false).replace("M", "L") +
  6441. shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") +
  6442. shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L");
  6443. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6444. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6445. break;
  6446. case "curvedRightArrow":
  6447. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6448. var sAdj1, adj1 = 25000 * slideFactor;
  6449. var sAdj2, adj2 = 50000 * slideFactor;
  6450. var sAdj3, adj3 = 25000 * slideFactor;
  6451. var cnstVal1 = 50000 * slideFactor;
  6452. var cnstVal2 = 100000 * slideFactor;
  6453. if (shapAdjst_ary !== undefined) {
  6454. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6455. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6456. if (sAdj_name == "adj1") {
  6457. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6458. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6459. } else if (sAdj_name == "adj2") {
  6460. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6461. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6462. } else if (sAdj_name == "adj3") {
  6463. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6464. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6465. }
  6466. }
  6467. }
  6468. var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  6469. var ss = Math.min(w, h);
  6470. var maxAdj2, a2, a1, th, aw, q1, hR, q7, q8, q9, q10, q11, iDx, maxAdj3, a3, ah, y3, q2, q3, q4, q5, dy,
  6471. y5, y7, q6, dh, y4, y8, aw2, y6, x1, swAng, stAng, mswAng, ix, iy, q12, dang2, swAng2, swAng3, stAng3;
  6472. maxAdj2 = cnstVal1 * h / ss;
  6473. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6474. a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1;
  6475. th = ss * a1 / cnstVal2;
  6476. aw = ss * a2 / cnstVal2;
  6477. q1 = (th + aw) / 4;
  6478. hR = hd2 - q1;
  6479. q7 = hR * 2;
  6480. q8 = q7 * q7;
  6481. q9 = th * th;
  6482. q10 = q8 - q9;
  6483. q11 = Math.sqrt(q10);
  6484. iDx = q11 * w / q7;
  6485. maxAdj3 = cnstVal2 * iDx / ss;
  6486. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6487. ah = ss * a3 / cnstVal2;
  6488. y3 = hR + th;
  6489. q2 = w * w;
  6490. q3 = ah * ah;
  6491. q4 = q2 - q3;
  6492. q5 = Math.sqrt(q4);
  6493. dy = q5 * hR / w;
  6494. y5 = hR + dy;
  6495. y7 = y3 + dy;
  6496. q6 = aw - th;
  6497. dh = q6 / 2;
  6498. y4 = y5 - dh;
  6499. y8 = y7 + dh;
  6500. aw2 = aw / 2;
  6501. y6 = b - aw2;
  6502. x1 = r - ah;
  6503. swAng = Math.atan(dy / ah);
  6504. stAng = Math.PI + 0 - swAng;
  6505. mswAng = -swAng;
  6506. ix = r - iDx;
  6507. iy = (hR + y3) / 2;
  6508. q12 = th / 2;
  6509. dang2 = Math.atan(q12 / iDx);
  6510. swAng2 = dang2 - Math.PI / 2;
  6511. swAng3 = Math.PI / 2 + dang2;
  6512. stAng3 = Math.PI - dang2;
  6513. var stAngDg, mswAngDg, swAngDg, swAng2dg;
  6514. stAngDg = stAng * 180 / Math.PI;
  6515. mswAngDg = mswAng * 180 / Math.PI;
  6516. swAngDg = swAng * 180 / Math.PI;
  6517. swAng2dg = swAng2 * 180 / Math.PI;
  6518. var d_val = "M" + l + "," + hR +
  6519. shapeArc(w, hR, w, hR, cd2, cd2 + mswAngDg, false).replace("M", "L") +
  6520. " L" + x1 + "," + y5 +
  6521. " L" + x1 + "," + y4 +
  6522. " L" + r + "," + y6 +
  6523. " L" + x1 + "," + y8 +
  6524. " L" + x1 + "," + y7 +
  6525. shapeArc(w, y3, w, hR, stAngDg, stAngDg + swAngDg, false).replace("M", "L") +
  6526. " L" + l + "," + hR +
  6527. shapeArc(w, hR, w, hR, cd2, cd2 + cd4, false).replace("M", "L") +
  6528. " L" + r + "," + th +
  6529. shapeArc(w, y3, w, hR, c3d4, c3d4 + swAng2dg, false).replace("M", "L")
  6530. "";
  6531. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6532. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6533. break;
  6534. case "curvedUpArrow":
  6535. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6536. var sAdj1, adj1 = 25000 * slideFactor;
  6537. var sAdj2, adj2 = 50000 * slideFactor;
  6538. var sAdj3, adj3 = 25000 * slideFactor;
  6539. var cnstVal1 = 50000 * slideFactor;
  6540. var cnstVal2 = 100000 * slideFactor;
  6541. if (shapAdjst_ary !== undefined) {
  6542. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6543. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6544. if (sAdj_name == "adj1") {
  6545. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6546. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  6547. } else if (sAdj_name == "adj2") {
  6548. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6549. adj2 = parseInt(sAdj2.substr(4)) * slideFactor;
  6550. } else if (sAdj_name == "adj3") {
  6551. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6552. adj3 = parseInt(sAdj3.substr(4)) * slideFactor;
  6553. }
  6554. }
  6555. }
  6556. var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90;
  6557. var ss = Math.min(w, h);
  6558. 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;
  6559. maxAdj2 = cnstVal1 * w / ss;
  6560. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6561. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  6562. th = ss * a1 / cnstVal2;
  6563. aw = ss * a2 / cnstVal2;
  6564. q1 = (th + aw) / 4;
  6565. wR = wd2 - q1;
  6566. q7 = wR * 2;
  6567. q8 = q7 * q7;
  6568. q9 = th * th;
  6569. q10 = q8 - q9;
  6570. q11 = Math.sqrt(q10);
  6571. idy = q11 * h / q7;
  6572. maxAdj3 = cnstVal2 * idy / ss;
  6573. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6574. ah = ss * adj3 / cnstVal2;
  6575. x3 = wR + th;
  6576. q2 = h * h;
  6577. q3 = ah * ah;
  6578. q4 = q2 - q3;
  6579. q5 = Math.sqrt(q4);
  6580. dx = q5 * wR / h;
  6581. x5 = wR + dx;
  6582. x7 = x3 + dx;
  6583. q6 = aw - th;
  6584. dh = q6 / 2;
  6585. x4 = x5 - dh;
  6586. x8 = x7 + dh;
  6587. aw2 = aw / 2;
  6588. x6 = r - aw2;
  6589. y1 = t + ah;
  6590. swAng = Math.atan(dx / ah);
  6591. mswAng = -swAng;
  6592. iy = t + idy;
  6593. ix = (wR + x3) / 2;
  6594. q12 = th / 2;
  6595. dang2 = Math.atan(q12 / idy);
  6596. swAng2 = dang2 - swAng;
  6597. mswAng2 = -swAng2;
  6598. stAng3 = Math.PI / 2 - swAng;
  6599. swAng3 = swAng + dang2;
  6600. stAng2 = Math.PI / 2 - dang2;
  6601. var stAng2dg, swAng2dg, swAngDg, swAng2dg;
  6602. stAng2dg = stAng2 * 180 / Math.PI;
  6603. swAng2dg = swAng2 * 180 / Math.PI;
  6604. stAng3dg = stAng3 * 180 / Math.PI;
  6605. swAngDg = swAng * 180 / Math.PI;
  6606. var d_val = //"M" + ix + "," +iy +
  6607. shapeArc(wR, 0, wR, h, stAng2dg, stAng2dg + swAng2dg, false) + //.replace("M","L") +
  6608. " L" + x5 + "," + y1 +
  6609. " L" + x4 + "," + y1 +
  6610. " L" + x6 + "," + t +
  6611. " L" + x8 + "," + y1 +
  6612. " L" + x7 + "," + y1 +
  6613. shapeArc(x3, 0, wR, h, stAng3dg, stAng3dg + swAngDg, false).replace("M", "L") +
  6614. " L" + wR + "," + b +
  6615. shapeArc(wR, 0, wR, h, cd4, cd2, false).replace("M", "L") +
  6616. " L" + th + "," + t +
  6617. shapeArc(x3, 0, wR, h, cd2, cd4, false).replace("M", "L") +
  6618. "";
  6619. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6620. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6621. break;
  6622. case "mathDivide":
  6623. case "mathEqual":
  6624. case "mathMinus":
  6625. case "mathMultiply":
  6626. case "mathNotEqual":
  6627. case "mathPlus":
  6628. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6629. var sAdj1, adj1;
  6630. var sAdj2, adj2;
  6631. var sAdj3, adj3;
  6632. if (shapAdjst_ary !== undefined) {
  6633. if (shapAdjst_ary.constructor === Array) {
  6634. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6635. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6636. if (sAdj_name == "adj1") {
  6637. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6638. adj1 = parseInt(sAdj1.substr(4));
  6639. } else if (sAdj_name == "adj2") {
  6640. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6641. adj2 = parseInt(sAdj2.substr(4));
  6642. } else if (sAdj_name == "adj3") {
  6643. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6644. adj3 = parseInt(sAdj3.substr(4));
  6645. }
  6646. }
  6647. } else {
  6648. sAdj1 = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]);
  6649. adj1 = parseInt(sAdj1.substr(4));
  6650. }
  6651. }
  6652. var cnstVal1 = 50000 * slideFactor;
  6653. var cnstVal2 = 100000 * slideFactor;
  6654. var cnstVal3 = 200000 * slideFactor;
  6655. var dVal;
  6656. var hc = w / 2, vc = h / 2, hd2 = h / 2;
  6657. if (shapType == "mathNotEqual") {
  6658. if (shapAdjst_ary === undefined) {
  6659. adj1 = 23520 * slideFactor;
  6660. adj2 = 110 * Math.PI / 180;
  6661. adj3 = 11760 * slideFactor;
  6662. } else {
  6663. adj1 = adj1 * slideFactor;
  6664. adj2 = (adj2 / 60000) * Math.PI / 180;
  6665. adj3 = adj3 * slideFactor;
  6666. }
  6667. var a1, crAng, a2a1, maxAdj3, a3, dy1, dy2, dx1, x1, x8, y2, y3, y1, y4,
  6668. cadj2, xadj2, len, bhw, bhw2, x7, dx67, x6, dx57, x5, dx47, x4, dx37,
  6669. x3, dx27, x2, rx7, rx6, rx5, rx4, rx3, rx2, dx7, rxt, lxt, rx, lx,
  6670. dy3, dy4, ry, ly, dlx, drx, dly, dry, xC1, xC2, yC1, yC2, yC3, yC4;
  6671. var angVal1 = 70 * Math.PI / 180, angVal2 = 110 * Math.PI / 180;
  6672. var cnstVal4 = 73490 * slideFactor;
  6673. //var cd4 = 90;
  6674. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1;
  6675. crAng = (adj2 < angVal1) ? angVal1 : (adj2 > angVal2) ? angVal2 : adj2;
  6676. a2a1 = a1 * 2;
  6677. maxAdj3 = cnstVal2 - a2a1;
  6678. a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6679. dy1 = h * a1 / cnstVal2;
  6680. dy2 = h * a3 / cnstVal3;
  6681. dx1 = w * cnstVal4 / cnstVal3;
  6682. x1 = hc - dx1;
  6683. x8 = hc + dx1;
  6684. y2 = vc - dy2;
  6685. y3 = vc + dy2;
  6686. y1 = y2 - dy1;
  6687. y4 = y3 + dy1;
  6688. cadj2 = crAng - Math.PI / 2;
  6689. xadj2 = hd2 * Math.tan(cadj2);
  6690. len = Math.sqrt(xadj2 * xadj2 + hd2 * hd2);
  6691. bhw = len * dy1 / hd2;
  6692. bhw2 = bhw / 2;
  6693. x7 = hc + xadj2 - bhw2;
  6694. dx67 = xadj2 * y1 / hd2;
  6695. x6 = x7 - dx67;
  6696. dx57 = xadj2 * y2 / hd2;
  6697. x5 = x7 - dx57;
  6698. dx47 = xadj2 * y3 / hd2;
  6699. x4 = x7 - dx47;
  6700. dx37 = xadj2 * y4 / hd2;
  6701. x3 = x7 - dx37;
  6702. dx27 = xadj2 * 2;
  6703. x2 = x7 - dx27;
  6704. rx7 = x7 + bhw;
  6705. rx6 = x6 + bhw;
  6706. rx5 = x5 + bhw;
  6707. rx4 = x4 + bhw;
  6708. rx3 = x3 + bhw;
  6709. rx2 = x2 + bhw;
  6710. dx7 = dy1 * hd2 / len;
  6711. rxt = x7 + dx7;
  6712. lxt = rx7 - dx7;
  6713. rx = (cadj2 > 0) ? rxt : rx7;
  6714. lx = (cadj2 > 0) ? x7 : lxt;
  6715. dy3 = dy1 * xadj2 / len;
  6716. dy4 = -dy3;
  6717. ry = (cadj2 > 0) ? dy3 : 0;
  6718. ly = (cadj2 > 0) ? 0 : dy4;
  6719. dlx = w - rx;
  6720. drx = w - lx;
  6721. dly = h - ry;
  6722. dry = h - ly;
  6723. xC1 = (rx + lx) / 2;
  6724. xC2 = (drx + dlx) / 2;
  6725. yC1 = (ry + ly) / 2;
  6726. yC2 = (y1 + y2) / 2;
  6727. yC3 = (y3 + y4) / 2;
  6728. yC4 = (dry + dly) / 2;
  6729. dVal = "M" + x1 + "," + y1 +
  6730. " L" + x6 + "," + y1 +
  6731. " L" + lx + "," + ly +
  6732. " L" + rx + "," + ry +
  6733. " L" + rx6 + "," + y1 +
  6734. " L" + x8 + "," + y1 +
  6735. " L" + x8 + "," + y2 +
  6736. " L" + rx5 + "," + y2 +
  6737. " L" + rx4 + "," + y3 +
  6738. " L" + x8 + "," + y3 +
  6739. " L" + x8 + "," + y4 +
  6740. " L" + rx3 + "," + y4 +
  6741. " L" + drx + "," + dry +
  6742. " L" + dlx + "," + dly +
  6743. " L" + x3 + "," + y4 +
  6744. " L" + x1 + "," + y4 +
  6745. " L" + x1 + "," + y3 +
  6746. " L" + x4 + "," + y3 +
  6747. " L" + x5 + "," + y2 +
  6748. " L" + x1 + "," + y2 +
  6749. " z";
  6750. } else if (shapType == "mathDivide") {
  6751. if (shapAdjst_ary === undefined) {
  6752. adj1 = 23520 * slideFactor;
  6753. adj2 = 5880 * slideFactor;
  6754. adj3 = 11760 * slideFactor;
  6755. } else {
  6756. adj1 = adj1 * slideFactor;
  6757. adj2 = adj2 * slideFactor;
  6758. adj3 = adj3 * slideFactor;
  6759. }
  6760. var a1, ma1, ma3h, ma3w, maxAdj3, a3, m4a3, maxAdj2, a2, dy1, yg, rad, dx1,
  6761. y3, y4, a, y2, y1, y5, x1, x3, x2;
  6762. var cnstVal4 = 1000 * slideFactor;
  6763. var cnstVal5 = 36745 * slideFactor;
  6764. var cnstVal6 = 73490 * slideFactor;
  6765. a1 = (adj1 < cnstVal4) ? cnstVal4 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  6766. ma1 = -a1;
  6767. ma3h = (cnstVal6 + ma1) / 4;
  6768. ma3w = cnstVal5 * w / h;
  6769. maxAdj3 = (ma3h < ma3w) ? ma3h : ma3w;
  6770. a3 = (adj3 < cnstVal4) ? cnstVal4 : (adj3 > maxAdj3) ? maxAdj3 : adj3;
  6771. m4a3 = -4 * a3;
  6772. maxAdj2 = cnstVal6 + m4a3 - a1;
  6773. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  6774. dy1 = h * a1 / cnstVal3;
  6775. yg = h * a2 / cnstVal2;
  6776. rad = h * a3 / cnstVal2;
  6777. dx1 = w * cnstVal6 / cnstVal3;
  6778. y3 = vc - dy1;
  6779. y4 = vc + dy1;
  6780. a = yg + rad;
  6781. y2 = y3 - a;
  6782. y1 = y2 - rad;
  6783. y5 = h - y1;
  6784. x1 = hc - dx1;
  6785. x3 = hc + dx1;
  6786. x2 = hc - rad;
  6787. var cd4 = 90, c3d4 = 270;
  6788. var cX1 = hc - Math.cos(c3d4 * Math.PI / 180) * rad;
  6789. var cY1 = y1 - Math.sin(c3d4 * Math.PI / 180) * rad;
  6790. var cX2 = hc - Math.cos(Math.PI / 2) * rad;
  6791. var cY2 = y5 - Math.sin(Math.PI / 2) * rad;
  6792. dVal = "M" + hc + "," + y1 +
  6793. shapeArc(cX1, cY1, rad, rad, c3d4, c3d4 + 360, false).replace("M", "L") +
  6794. " z" +
  6795. " M" + hc + "," + y5 +
  6796. shapeArc(cX2, cY2, rad, rad, cd4, cd4 + 360, false).replace("M", "L") +
  6797. " z" +
  6798. " M" + x1 + "," + y3 +
  6799. " L" + x3 + "," + y3 +
  6800. " L" + x3 + "," + y4 +
  6801. " L" + x1 + "," + y4 +
  6802. " z";
  6803. } else if (shapType == "mathEqual") {
  6804. if (shapAdjst_ary === undefined) {
  6805. adj1 = 23520 * slideFactor;
  6806. adj2 = 11760 * slideFactor;
  6807. } else {
  6808. adj1 = adj1 * slideFactor;
  6809. adj2 = adj2 * slideFactor;
  6810. }
  6811. var cnstVal5 = 36745 * slideFactor;
  6812. var cnstVal6 = 73490 * slideFactor;
  6813. var a1, a2a1, mAdj2, a2, dy1, dy2, dx1, y2, y3, y1, y4, x1, x2, yC1, yC2;
  6814. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1;
  6815. a2a1 = a1 * 2;
  6816. mAdj2 = cnstVal2 - a2a1;
  6817. a2 = (adj2 < 0) ? 0 : (adj2 > mAdj2) ? mAdj2 : adj2;
  6818. dy1 = h * a1 / cnstVal2;
  6819. dy2 = h * a2 / cnstVal3;
  6820. dx1 = w * cnstVal6 / cnstVal3;
  6821. y2 = vc - dy2;
  6822. y3 = vc + dy2;
  6823. y1 = y2 - dy1;
  6824. y4 = y3 + dy1;
  6825. x1 = hc - dx1;
  6826. x2 = hc + dx1;
  6827. yC1 = (y1 + y2) / 2;
  6828. yC2 = (y3 + y4) / 2;
  6829. dVal = "M" + x1 + "," + y1 +
  6830. " L" + x2 + "," + y1 +
  6831. " L" + x2 + "," + y2 +
  6832. " L" + x1 + "," + y2 +
  6833. " z" +
  6834. "M" + x1 + "," + y3 +
  6835. " L" + x2 + "," + y3 +
  6836. " L" + x2 + "," + y4 +
  6837. " L" + x1 + "," + y4 +
  6838. " z";
  6839. } else if (shapType == "mathMinus") {
  6840. if (shapAdjst_ary === undefined) {
  6841. adj1 = 23520 * slideFactor;
  6842. } else {
  6843. adj1 = adj1 * slideFactor;
  6844. }
  6845. var cnstVal6 = 73490 * slideFactor;
  6846. var a1, dy1, dx1, y1, y2, x1, x2;
  6847. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1;
  6848. dy1 = h * a1 / cnstVal3;
  6849. dx1 = w * cnstVal6 / cnstVal3;
  6850. y1 = vc - dy1;
  6851. y2 = vc + dy1;
  6852. x1 = hc - dx1;
  6853. x2 = hc + dx1;
  6854. dVal = "M" + x1 + "," + y1 +
  6855. " L" + x2 + "," + y1 +
  6856. " L" + x2 + "," + y2 +
  6857. " L" + x1 + "," + y2 +
  6858. " z";
  6859. } else if (shapType == "mathMultiply") {
  6860. if (shapAdjst_ary === undefined) {
  6861. adj1 = 23520 * slideFactor;
  6862. } else {
  6863. adj1 = adj1 * slideFactor;
  6864. }
  6865. var cnstVal6 = 51965 * slideFactor;
  6866. var a1, th, a, sa, ca, ta, dl, rw, lM, xM, yM, dxAM, dyAM,
  6867. xA, yA, xB, yB, xBC, yBC, yC, xD, xE, yFE, xFE, xF, xL, yG, yH, yI, xC2, yC3;
  6868. var ss = Math.min(w, h);
  6869. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1;
  6870. th = ss * a1 / cnstVal2;
  6871. a = Math.atan(h / w);
  6872. sa = 1 * Math.sin(a);
  6873. ca = 1 * Math.cos(a);
  6874. ta = 1 * Math.tan(a);
  6875. dl = Math.sqrt(w * w + h * h);
  6876. rw = dl * cnstVal6 / cnstVal2;
  6877. lM = dl - rw;
  6878. xM = ca * lM / 2;
  6879. yM = sa * lM / 2;
  6880. dxAM = sa * th / 2;
  6881. dyAM = ca * th / 2;
  6882. xA = xM - dxAM;
  6883. yA = yM + dyAM;
  6884. xB = xM + dxAM;
  6885. yB = yM - dyAM;
  6886. xBC = hc - xB;
  6887. yBC = xBC * ta;
  6888. yC = yBC + yB;
  6889. xD = w - xB;
  6890. xE = w - xA;
  6891. yFE = vc - yA;
  6892. xFE = yFE / ta;
  6893. xF = xE - xFE;
  6894. xL = xA + xFE;
  6895. yG = h - yA;
  6896. yH = h - yB;
  6897. yI = h - yC;
  6898. xC2 = w - xM;
  6899. yC3 = h - yM;
  6900. dVal = "M" + xA + "," + yA +
  6901. " L" + xB + "," + yB +
  6902. " L" + hc + "," + yC +
  6903. " L" + xD + "," + yB +
  6904. " L" + xE + "," + yA +
  6905. " L" + xF + "," + vc +
  6906. " L" + xE + "," + yG +
  6907. " L" + xD + "," + yH +
  6908. " L" + hc + "," + yI +
  6909. " L" + xB + "," + yH +
  6910. " L" + xA + "," + yG +
  6911. " L" + xL + "," + vc +
  6912. " z";
  6913. } else if (shapType == "mathPlus") {
  6914. if (shapAdjst_ary === undefined) {
  6915. adj1 = 23520 * slideFactor;
  6916. } else {
  6917. adj1 = adj1 * slideFactor;
  6918. }
  6919. var cnstVal6 = 73490 * slideFactor;
  6920. var ss = Math.min(w, h);
  6921. var a1, dx1, dy1, dx2, x1, x2, x3, x4, y1, y2, y3, y4;
  6922. a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1;
  6923. dx1 = w * cnstVal6 / cnstVal3;
  6924. dy1 = h * cnstVal6 / cnstVal3;
  6925. dx2 = ss * a1 / cnstVal3;
  6926. x1 = hc - dx1;
  6927. x2 = hc - dx2;
  6928. x3 = hc + dx2;
  6929. x4 = hc + dx1;
  6930. y1 = vc - dy1;
  6931. y2 = vc - dx2;
  6932. y3 = vc + dx2;
  6933. y4 = vc + dy1;
  6934. dVal = "M" + x1 + "," + y2 +
  6935. " L" + x2 + "," + y2 +
  6936. " L" + x2 + "," + y1 +
  6937. " L" + x3 + "," + y1 +
  6938. " L" + x3 + "," + y2 +
  6939. " L" + x4 + "," + y2 +
  6940. " L" + x4 + "," + y3 +
  6941. " L" + x3 + "," + y3 +
  6942. " L" + x3 + "," + y4 +
  6943. " L" + x2 + "," + y4 +
  6944. " L" + x2 + "," + y3 +
  6945. " L" + x1 + "," + y3 +
  6946. " z";
  6947. }
  6948. result += "<path d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6949. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6950. //console.log(shapType);
  6951. break;
  6952. case "can":
  6953. case "flowChartMagneticDisk":
  6954. case "flowChartMagneticDrum":
  6955. var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]);
  6956. var adj = 25000 * slideFactor;
  6957. var cnstVal1 = 50000 * slideFactor;
  6958. var cnstVal2 = 200000 * slideFactor;
  6959. if (shapAdjst !== undefined) {
  6960. adj = parseInt(shapAdjst.substr(4)) * slideFactor;
  6961. }
  6962. var ss = Math.min(w, h);
  6963. var maxAdj, a, y1, y2, y3, dVal;
  6964. if (shapType == "flowChartMagneticDisk" || shapType == "flowChartMagneticDrum") {
  6965. adj = 50000 * slideFactor;
  6966. }
  6967. maxAdj = cnstVal1 * h / ss;
  6968. a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj;
  6969. y1 = ss * a / cnstVal2;
  6970. y2 = y1 + y1;
  6971. y3 = h - y1;
  6972. var cd2 = 180, wd2 = w / 2;
  6973. var tranglRott = "";
  6974. if (shapType == "flowChartMagneticDrum") {
  6975. tranglRott = "transform='rotate(90 " + w / 2 + "," + h / 2 + ")'";
  6976. }
  6977. dVal = shapeArc(wd2, y1, wd2, y1, 0, cd2, false) +
  6978. shapeArc(wd2, y1, wd2, y1, cd2, cd2 + cd2, false).replace("M", "L") +
  6979. " L" + w + "," + y3 +
  6980. shapeArc(wd2, y3, wd2, y1, 0, cd2, false).replace("M", "L") +
  6981. " L" + 0 + "," + y1;
  6982. result += "<path " + tranglRott + " d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  6983. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  6984. break;
  6985. case "swooshArrow":
  6986. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  6987. var refr = slideFactor;
  6988. var sAdj1, adj1 = 25000 * refr;
  6989. var sAdj2, adj2 = 16667 * refr;
  6990. if (shapAdjst_ary !== undefined) {
  6991. for (var i = 0; i < shapAdjst_ary.length; i++) {
  6992. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  6993. if (sAdj_name == "adj1") {
  6994. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6995. adj1 = parseInt(sAdj1.substr(4)) * refr;
  6996. } else if (sAdj_name == "adj2") {
  6997. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  6998. adj2 = parseInt(sAdj2.substr(4)) * refr;
  6999. }
  7000. }
  7001. }
  7002. var cnstVal1 = 1 * refr;
  7003. var cnstVal2 = 70000 * refr;
  7004. var cnstVal3 = 75000 * refr;
  7005. var cnstVal4 = 100000 * refr;
  7006. var ss = Math.min(w, h);
  7007. var ssd8 = ss / 8;
  7008. var hd6 = h / 6;
  7009. 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;
  7010. a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal3) ? cnstVal3 : adj1;
  7011. maxAdj2 = cnstVal2 * w / ss;
  7012. a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2;
  7013. ad1 = h * a1 / cnstVal4;
  7014. ad2 = ss * a2 / cnstVal4;
  7015. xB = w - ad2;
  7016. yB = ssd8;
  7017. alfa = (Math.PI / 2) / 14;
  7018. dx0 = ssd8 * Math.tan(alfa);
  7019. xC = xB - dx0;
  7020. dx1 = ad1 * Math.tan(alfa);
  7021. yF = yB + ad1;
  7022. xF = xB + dx1;
  7023. xE = xF + dx0;
  7024. yE = yF + ssd8;
  7025. dy2 = yE - 0;
  7026. dy22 = dy2 / 2;
  7027. dy3 = h / 20;
  7028. yD = dy22 - dy3;
  7029. dy4 = hd6;
  7030. yP1 = hd6 + dy4;
  7031. xP1 = w / 6;
  7032. dy5 = hd6 / 2;
  7033. yP2 = yF + dy5;
  7034. xP2 = w / 4;
  7035. var dVal = "M" + 0 + "," + h +
  7036. " Q" + xP1 + "," + yP1 + " " + xB + "," + yB +
  7037. " L" + xC + "," + 0 +
  7038. " L" + w + "," + yD +
  7039. " L" + xE + "," + yE +
  7040. " L" + xF + "," + yF +
  7041. " Q" + xP2 + "," + yP2 + " " + 0 + "," + h +
  7042. " z";
  7043. result += "<path d='" + dVal + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7044. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  7045. break;
  7046. case "circularArrow":
  7047. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  7048. var sAdj1, adj1 = 12500 * slideFactor;
  7049. var sAdj2, adj2 = (1142319 / 60000) * Math.PI / 180;
  7050. var sAdj3, adj3 = (20457681 / 60000) * Math.PI / 180;
  7051. var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180;
  7052. var sAdj5, adj5 = 12500 * slideFactor;
  7053. if (shapAdjst_ary !== undefined) {
  7054. for (var i = 0; i < shapAdjst_ary.length; i++) {
  7055. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  7056. if (sAdj_name == "adj1") {
  7057. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7058. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  7059. } else if (sAdj_name == "adj2") {
  7060. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7061. adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180;
  7062. } else if (sAdj_name == "adj3") {
  7063. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7064. adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180;
  7065. } else if (sAdj_name == "adj4") {
  7066. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7067. adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180;
  7068. } else if (sAdj_name == "adj5") {
  7069. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7070. adj5 = parseInt(sAdj5.substr(4)) * slideFactor;
  7071. }
  7072. }
  7073. }
  7074. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2;
  7075. var ss = Math.min(w, h);
  7076. var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH,
  7077. dyH, xH, yH, rI, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17,
  7078. u18, u19, u20, u21, maxAng, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE,
  7079. dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO,
  7080. q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO,
  7081. q13, q14, dyF1, q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF,
  7082. x1I, y1I, x2I, y2I, dxI, dyI, dI, v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11,
  7083. dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16, v17, v18, v19, v20, v21, v22, dxC, dyC,
  7084. sdxC, sdyC, xC, yC, ist0, ist1, istAng, isw1, isw2, iswAng, p1, p2, p3, p4, p5, xGp, yGp,
  7085. xBp, yBp, en0, en1, en2, sw0, sw1, swAng;
  7086. var cnstVal1 = 25000 * slideFactor;
  7087. var cnstVal2 = 100000 * slideFactor;
  7088. var rdAngVal1 = (1 / 60000) * Math.PI / 180;
  7089. var rdAngVal2 = (21599999 / 60000) * Math.PI / 180;
  7090. var rdAngVal3 = 2 * Math.PI;
  7091. a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5;
  7092. maxAdj1 = a5 * 2;
  7093. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  7094. enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3;
  7095. stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4; //////////////////////////////////////////
  7096. th = ss * a1 / cnstVal2;
  7097. thh = ss * a5 / cnstVal2;
  7098. th2 = th / 2;
  7099. rw1 = wd2 + th2 - thh;
  7100. rh1 = hd2 + th2 - thh;
  7101. rw2 = rw1 - th;
  7102. rh2 = rh1 - th;
  7103. rw3 = rw2 + th2;
  7104. rh3 = rh2 + th2;
  7105. wtH = rw3 * Math.sin(enAng);
  7106. htH = rh3 * Math.cos(enAng);
  7107. //dxH = rw3*Math.cos(Math.atan(wtH/htH));
  7108. //dyH = rh3*Math.sin(Math.atan(wtH/htH));
  7109. dxH = rw3 * Math.cos(Math.atan2(wtH, htH));
  7110. dyH = rh3 * Math.sin(Math.atan2(wtH, htH));
  7111. xH = hc + dxH;
  7112. yH = vc + dyH;
  7113. rI = (rw2 < rh2) ? rw2 : rh2;
  7114. u1 = dxH * dxH;
  7115. u2 = dyH * dyH;
  7116. u3 = rI * rI;
  7117. u4 = u1 - u3;
  7118. u5 = u2 - u3;
  7119. u6 = u4 * u5 / u1;
  7120. u7 = u6 / u2;
  7121. u8 = 1 - u7;
  7122. u9 = Math.sqrt(u8);
  7123. u10 = u4 / dxH;
  7124. u11 = u10 / dyH;
  7125. u12 = (1 + u9) / u11;
  7126. //u13 = Math.atan(u12/1);
  7127. u13 = Math.atan2(u12, 1);
  7128. u14 = u13 + rdAngVal3;
  7129. u15 = (u13 > 0) ? u13 : u14;
  7130. u16 = u15 - enAng;
  7131. u17 = u16 + rdAngVal3;
  7132. u18 = (u16 > 0) ? u16 : u17;
  7133. u19 = u18 - cd2;
  7134. u20 = u18 - rdAngVal3;
  7135. u21 = (u19 > 0) ? u20 : u18;
  7136. maxAng = Math.abs(u21);
  7137. aAng = (adj2 < 0) ? 0 : (adj2 > maxAng) ? maxAng : adj2;
  7138. ptAng = enAng + aAng;
  7139. wtA = rw3 * Math.sin(ptAng);
  7140. htA = rh3 * Math.cos(ptAng);
  7141. //dxA = rw3*Math.cos(Math.atan(wtA/htA));
  7142. //dyA = rh3*Math.sin(Math.atan(wtA/htA));
  7143. dxA = rw3 * Math.cos(Math.atan2(wtA, htA));
  7144. dyA = rh3 * Math.sin(Math.atan2(wtA, htA));
  7145. xA = hc + dxA;
  7146. yA = vc + dyA;
  7147. wtE = rw1 * Math.sin(stAng);
  7148. htE = rh1 * Math.cos(stAng);
  7149. //dxE = rw1*Math.cos(Math.atan(wtE/htE));
  7150. //dyE = rh1*Math.sin(Math.atan(wtE/htE));
  7151. dxE = rw1 * Math.cos(Math.atan2(wtE, htE));
  7152. dyE = rh1 * Math.sin(Math.atan2(wtE, htE));
  7153. xE = hc + dxE;
  7154. yE = vc + dyE;
  7155. dxG = thh * Math.cos(ptAng);
  7156. dyG = thh * Math.sin(ptAng);
  7157. xG = xH + dxG;
  7158. yG = yH + dyG;
  7159. dxB = thh * Math.cos(ptAng);
  7160. dyB = thh * Math.sin(ptAng);
  7161. xB = xH - dxB;
  7162. yB = yH - dyB;
  7163. sx1 = xB - hc;
  7164. sy1 = yB - vc;
  7165. sx2 = xG - hc;
  7166. sy2 = yG - vc;
  7167. rO = (rw1 < rh1) ? rw1 : rh1;
  7168. x1O = sx1 * rO / rw1;
  7169. y1O = sy1 * rO / rh1;
  7170. x2O = sx2 * rO / rw1;
  7171. y2O = sy2 * rO / rh1;
  7172. dxO = x2O - x1O;
  7173. dyO = y2O - y1O;
  7174. dO = Math.sqrt(dxO * dxO + dyO * dyO);
  7175. q1 = x1O * y2O;
  7176. q2 = x2O * y1O;
  7177. DO = q1 - q2;
  7178. q3 = rO * rO;
  7179. q4 = dO * dO;
  7180. q5 = q3 * q4;
  7181. q6 = DO * DO;
  7182. q7 = q5 - q6;
  7183. q8 = (q7 > 0) ? q7 : 0;
  7184. sdelO = Math.sqrt(q8);
  7185. ndyO = dyO * -1;
  7186. sdyO = (ndyO > 0) ? -1 : 1;
  7187. q9 = sdyO * dxO;
  7188. q10 = q9 * sdelO;
  7189. q11 = DO * dyO;
  7190. dxF1 = (q11 + q10) / q4;
  7191. q12 = q11 - q10;
  7192. dxF2 = q12 / q4;
  7193. adyO = Math.abs(dyO);
  7194. q13 = adyO * sdelO;
  7195. q14 = DO * dxO / -1;
  7196. dyF1 = (q14 + q13) / q4;
  7197. q15 = q14 - q13;
  7198. dyF2 = q15 / q4;
  7199. q16 = x2O - dxF1;
  7200. q17 = x2O - dxF2;
  7201. q18 = y2O - dyF1;
  7202. q19 = y2O - dyF2;
  7203. q20 = Math.sqrt(q16 * q16 + q18 * q18);
  7204. q21 = Math.sqrt(q17 * q17 + q19 * q19);
  7205. q22 = q21 - q20;
  7206. dxF = (q22 > 0) ? dxF1 : dxF2;
  7207. dyF = (q22 > 0) ? dyF1 : dyF2;
  7208. sdxF = dxF * rw1 / rO;
  7209. sdyF = dyF * rh1 / rO;
  7210. xF = hc + sdxF;
  7211. yF = vc + sdyF;
  7212. x1I = sx1 * rI / rw2;
  7213. y1I = sy1 * rI / rh2;
  7214. x2I = sx2 * rI / rw2;
  7215. y2I = sy2 * rI / rh2;
  7216. dxI = x2I - x1I;
  7217. dyI = y2I - y1I;
  7218. dI = Math.sqrt(dxI * dxI + dyI * dyI);
  7219. v1 = x1I * y2I;
  7220. v2 = x2I * y1I;
  7221. DI = v1 - v2;
  7222. v3 = rI * rI;
  7223. v4 = dI * dI;
  7224. v5 = v3 * v4;
  7225. v6 = DI * DI;
  7226. v7 = v5 - v6;
  7227. v8 = (v7 > 0) ? v7 : 0;
  7228. sdelI = Math.sqrt(v8);
  7229. v9 = sdyO * dxI;
  7230. v10 = v9 * sdelI;
  7231. v11 = DI * dyI;
  7232. dxC1 = (v11 + v10) / v4;
  7233. v12 = v11 - v10;
  7234. dxC2 = v12 / v4;
  7235. adyI = Math.abs(dyI);
  7236. v13 = adyI * sdelI;
  7237. v14 = DI * dxI / -1;
  7238. dyC1 = (v14 + v13) / v4;
  7239. v15 = v14 - v13;
  7240. dyC2 = v15 / v4;
  7241. v16 = x1I - dxC1;
  7242. v17 = x1I - dxC2;
  7243. v18 = y1I - dyC1;
  7244. v19 = y1I - dyC2;
  7245. v20 = Math.sqrt(v16 * v16 + v18 * v18);
  7246. v21 = Math.sqrt(v17 * v17 + v19 * v19);
  7247. v22 = v21 - v20;
  7248. dxC = (v22 > 0) ? dxC1 : dxC2;
  7249. dyC = (v22 > 0) ? dyC1 : dyC2;
  7250. sdxC = dxC * rw2 / rI;
  7251. sdyC = dyC * rh2 / rI;
  7252. xC = hc + sdxC;
  7253. yC = vc + sdyC;
  7254. //ist0 = Math.atan(sdyC/sdxC);
  7255. ist0 = Math.atan2(sdyC, sdxC);
  7256. ist1 = ist0 + rdAngVal3;
  7257. istAng = (ist0 > 0) ? ist0 : ist1;
  7258. isw1 = stAng - istAng;
  7259. isw2 = isw1 - rdAngVal3;
  7260. iswAng = (isw1 > 0) ? isw2 : isw1;
  7261. p1 = xF - xC;
  7262. p2 = yF - yC;
  7263. p3 = Math.sqrt(p1 * p1 + p2 * p2);
  7264. p4 = p3 / 2;
  7265. p5 = p4 - thh;
  7266. xGp = (p5 > 0) ? xF : xG;
  7267. yGp = (p5 > 0) ? yF : yG;
  7268. xBp = (p5 > 0) ? xC : xB;
  7269. yBp = (p5 > 0) ? yC : yB;
  7270. //en0 = Math.atan(sdyF/sdxF);
  7271. en0 = Math.atan2(sdyF, sdxF);
  7272. en1 = en0 + rdAngVal3;
  7273. en2 = (en0 > 0) ? en0 : en1;
  7274. sw0 = en2 - stAng;
  7275. sw1 = sw0 + rdAngVal3;
  7276. swAng = (sw0 > 0) ? sw0 : sw1;
  7277. var strtAng = stAng * 180 / Math.PI
  7278. var endAng = strtAng + (swAng * 180 / Math.PI);
  7279. var stiAng = istAng * 180 / Math.PI;
  7280. var swiAng = iswAng * 180 / Math.PI;
  7281. var ediAng = stiAng + swiAng;
  7282. var d_val = shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false) +
  7283. " L" + xGp + "," + yGp +
  7284. " L" + xA + "," + yA +
  7285. " L" + xBp + "," + yBp +
  7286. " L" + xC + "," + yC +
  7287. shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") +
  7288. " z";
  7289. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7290. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  7291. break;
  7292. case "leftCircularArrow":
  7293. var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);
  7294. var sAdj1, adj1 = 12500 * slideFactor;
  7295. var sAdj2, adj2 = (-1142319 / 60000) * Math.PI / 180;
  7296. var sAdj3, adj3 = (1142319 / 60000) * Math.PI / 180;
  7297. var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180;
  7298. var sAdj5, adj5 = 12500 * slideFactor;
  7299. if (shapAdjst_ary !== undefined) {
  7300. for (var i = 0; i < shapAdjst_ary.length; i++) {
  7301. var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]);
  7302. if (sAdj_name == "adj1") {
  7303. sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7304. adj1 = parseInt(sAdj1.substr(4)) * slideFactor;
  7305. } else if (sAdj_name == "adj2") {
  7306. sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7307. adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180;
  7308. } else if (sAdj_name == "adj3") {
  7309. sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7310. adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180;
  7311. } else if (sAdj_name == "adj4") {
  7312. sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7313. adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180;
  7314. } else if (sAdj_name == "adj5") {
  7315. sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]);
  7316. adj5 = parseInt(sAdj5.substr(4)) * slideFactor;
  7317. }
  7318. }
  7319. }
  7320. var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2;
  7321. var ss = Math.min(w, h);
  7322. var cnstVal1 = 25000 * slideFactor;
  7323. var cnstVal2 = 100000 * slideFactor;
  7324. var rdAngVal1 = (1 / 60000) * Math.PI / 180;
  7325. var rdAngVal2 = (21599999 / 60000) * Math.PI / 180;
  7326. var rdAngVal3 = 2 * Math.PI;
  7327. var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH, dyH, xH, yH, rI,
  7328. u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20, u21, u22,
  7329. minAng, u23, a2, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE, wtD, htD, dxD, dyD,
  7330. xD, yD, dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO,
  7331. q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO, q13, q14, dyF1,
  7332. q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF, x1I, y1I, x2I, y2I, dxI, dyI, dI,
  7333. v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11, dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16,
  7334. v17, v18, v19, v20, v21, v22, dxC, dyC, sdxC, sdyC, xC, yC, ist0, ist1, istAng0, isw1, isw2, iswAng0, istAng,
  7335. iswAng, p1, p2, p3, p4, p5, xGp, yGp, xBp, yBp, en0, en1, en2, sw0, sw1, swAng, stAng0;
  7336. a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5;
  7337. maxAdj1 = a5 * 2;
  7338. a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1;
  7339. enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3;
  7340. stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4;
  7341. th = ss * a1 / cnstVal2;
  7342. thh = ss * a5 / cnstVal2;
  7343. th2 = th / 2;
  7344. rw1 = wd2 + th2 - thh;
  7345. rh1 = hd2 + th2 - thh;
  7346. rw2 = rw1 - th;
  7347. rh2 = rh1 - th;
  7348. rw3 = rw2 + th2;
  7349. rh3 = rh2 + th2;
  7350. wtH = rw3 * Math.sin(enAng);
  7351. htH = rh3 * Math.cos(enAng);
  7352. dxH = rw3 * Math.cos(Math.atan2(wtH, htH));
  7353. dyH = rh3 * Math.sin(Math.atan2(wtH, htH));
  7354. xH = hc + dxH;
  7355. yH = vc + dyH;
  7356. rI = (rw2 < rh2) ? rw2 : rh2;
  7357. u1 = dxH * dxH;
  7358. u2 = dyH * dyH;
  7359. u3 = rI * rI;
  7360. u4 = u1 - u3;
  7361. u5 = u2 - u3;
  7362. u6 = u4 * u5 / u1;
  7363. u7 = u6 / u2;
  7364. u8 = 1 - u7;
  7365. u9 = Math.sqrt(u8);
  7366. u10 = u4 / dxH;
  7367. u11 = u10 / dyH;
  7368. u12 = (1 + u9) / u11;
  7369. u13 = Math.atan2(u12, 1);
  7370. u14 = u13 + rdAngVal3;
  7371. u15 = (u13 > 0) ? u13 : u14;
  7372. u16 = u15 - enAng;
  7373. u17 = u16 + rdAngVal3;
  7374. u18 = (u16 > 0) ? u16 : u17;
  7375. u19 = u18 - cd2;
  7376. u20 = u18 - rdAngVal3;
  7377. u21 = (u19 > 0) ? u20 : u18;
  7378. u22 = Math.abs(u21);
  7379. minAng = u22 * -1;
  7380. u23 = Math.abs(adj2);
  7381. a2 = u23 * -1;
  7382. aAng = (a2 < minAng) ? minAng : (a2 > 0) ? 0 : a2;
  7383. ptAng = enAng + aAng;
  7384. wtA = rw3 * Math.sin(ptAng);
  7385. htA = rh3 * Math.cos(ptAng);
  7386. dxA = rw3 * Math.cos(Math.atan2(wtA, htA));
  7387. dyA = rh3 * Math.sin(Math.atan2(wtA, htA));
  7388. xA = hc + dxA;
  7389. yA = vc + dyA;
  7390. wtE = rw1 * Math.sin(stAng);
  7391. htE = rh1 * Math.cos(stAng);
  7392. dxE = rw1 * Math.cos(Math.atan2(wtE, htE));
  7393. dyE = rh1 * Math.sin(Math.atan2(wtE, htE));
  7394. xE = hc + dxE;
  7395. yE = vc + dyE;
  7396. wtD = rw2 * Math.sin(stAng);
  7397. htD = rh2 * Math.cos(stAng);
  7398. dxD = rw2 * Math.cos(Math.atan2(wtD, htD));
  7399. dyD = rh2 * Math.sin(Math.atan2(wtD, htD));
  7400. xD = hc + dxD;
  7401. yD = vc + dyD;
  7402. dxG = thh * Math.cos(ptAng);
  7403. dyG = thh * Math.sin(ptAng);
  7404. xG = xH + dxG;
  7405. yG = yH + dyG;
  7406. dxB = thh * Math.cos(ptAng);
  7407. dyB = thh * Math.sin(ptAng);
  7408. xB = xH - dxB;
  7409. yB = yH - dyB;
  7410. sx1 = xB - hc;
  7411. sy1 = yB - vc;
  7412. sx2 = xG - hc;
  7413. sy2 = yG - vc;
  7414. rO = (rw1 < rh1) ? rw1 : rh1;
  7415. x1O = sx1 * rO / rw1;
  7416. y1O = sy1 * rO / rh1;
  7417. x2O = sx2 * rO / rw1;
  7418. y2O = sy2 * rO / rh1;
  7419. dxO = x2O - x1O;
  7420. dyO = y2O - y1O;
  7421. dO = Math.sqrt(dxO * dxO + dyO * dyO);
  7422. q1 = x1O * y2O;
  7423. q2 = x2O * y1O;
  7424. DO = q1 - q2;
  7425. q3 = rO * rO;
  7426. q4 = dO * dO;
  7427. q5 = q3 * q4;
  7428. q6 = DO * DO;
  7429. q7 = q5 - q6;
  7430. q8 = (q7 > 0) ? q7 : 0;
  7431. sdelO = Math.sqrt(q8);
  7432. ndyO = dyO * -1;
  7433. sdyO = (ndyO > 0) ? -1 : 1;
  7434. q9 = sdyO * dxO;
  7435. q10 = q9 * sdelO;
  7436. q11 = DO * dyO;
  7437. dxF1 = (q11 + q10) / q4;
  7438. q12 = q11 - q10;
  7439. dxF2 = q12 / q4;
  7440. adyO = Math.abs(dyO);
  7441. q13 = adyO * sdelO;
  7442. q14 = DO * dxO / -1;
  7443. dyF1 = (q14 + q13) / q4;
  7444. q15 = q14 - q13;
  7445. dyF2 = q15 / q4;
  7446. q16 = x2O - dxF1;
  7447. q17 = x2O - dxF2;
  7448. q18 = y2O - dyF1;
  7449. q19 = y2O - dyF2;
  7450. q20 = Math.sqrt(q16 * q16 + q18 * q18);
  7451. q21 = Math.sqrt(q17 * q17 + q19 * q19);
  7452. q22 = q21 - q20;
  7453. dxF = (q22 > 0) ? dxF1 : dxF2;
  7454. dyF = (q22 > 0) ? dyF1 : dyF2;
  7455. sdxF = dxF * rw1 / rO;
  7456. sdyF = dyF * rh1 / rO;
  7457. xF = hc + sdxF;
  7458. yF = vc + sdyF;
  7459. x1I = sx1 * rI / rw2;
  7460. y1I = sy1 * rI / rh2;
  7461. x2I = sx2 * rI / rw2;
  7462. y2I = sy2 * rI / rh2;
  7463. dxI = x2I - x1I;
  7464. dyI = y2I - y1I;
  7465. dI = Math.sqrt(dxI * dxI + dyI * dyI);
  7466. v1 = x1I * y2I;
  7467. v2 = x2I * y1I;
  7468. DI = v1 - v2;
  7469. v3 = rI * rI;
  7470. v4 = dI * dI;
  7471. v5 = v3 * v4;
  7472. v6 = DI * DI;
  7473. v7 = v5 - v6;
  7474. v8 = (v7 > 0) ? v7 : 0;
  7475. sdelI = Math.sqrt(v8);
  7476. v9 = sdyO * dxI;
  7477. v10 = v9 * sdelI;
  7478. v11 = DI * dyI;
  7479. dxC1 = (v11 + v10) / v4;
  7480. v12 = v11 - v10;
  7481. dxC2 = v12 / v4;
  7482. adyI = Math.abs(dyI);
  7483. v13 = adyI * sdelI;
  7484. v14 = DI * dxI / -1;
  7485. dyC1 = (v14 + v13) / v4;
  7486. v15 = v14 - v13;
  7487. dyC2 = v15 / v4;
  7488. v16 = x1I - dxC1;
  7489. v17 = x1I - dxC2;
  7490. v18 = y1I - dyC1;
  7491. v19 = y1I - dyC2;
  7492. v20 = Math.sqrt(v16 * v16 + v18 * v18);
  7493. v21 = Math.sqrt(v17 * v17 + v19 * v19);
  7494. v22 = v21 - v20;
  7495. dxC = (v22 > 0) ? dxC1 : dxC2;
  7496. dyC = (v22 > 0) ? dyC1 : dyC2;
  7497. sdxC = dxC * rw2 / rI;
  7498. sdyC = dyC * rh2 / rI;
  7499. xC = hc + sdxC;
  7500. yC = vc + sdyC;
  7501. ist0 = Math.atan2(sdyC, sdxC);
  7502. ist1 = ist0 + rdAngVal3;
  7503. istAng0 = (ist0 > 0) ? ist0 : ist1;
  7504. isw1 = stAng - istAng0;
  7505. isw2 = isw1 + rdAngVal3;
  7506. iswAng0 = (isw1 > 0) ? isw1 : isw2;
  7507. istAng = istAng0 + iswAng0;
  7508. iswAng = -iswAng0;
  7509. p1 = xF - xC;
  7510. p2 = yF - yC;
  7511. p3 = Math.sqrt(p1 * p1 + p2 * p2);
  7512. p4 = p3 / 2;
  7513. p5 = p4 - thh;
  7514. xGp = (p5 > 0) ? xF : xG;
  7515. yGp = (p5 > 0) ? yF : yG;
  7516. xBp = (p5 > 0) ? xC : xB;
  7517. yBp = (p5 > 0) ? yC : yB;
  7518. en0 = Math.atan2(sdyF, sdxF);
  7519. en1 = en0 + rdAngVal3;
  7520. en2 = (en0 > 0) ? en0 : en1;
  7521. sw0 = en2 - stAng;
  7522. sw1 = sw0 - rdAngVal3;
  7523. swAng = (sw0 > 0) ? sw1 : sw0;
  7524. stAng0 = stAng + swAng;
  7525. var strtAng = stAng0 * 180 / Math.PI;
  7526. var endAng = stAng * 180 / Math.PI;
  7527. var stiAng = istAng * 180 / Math.PI;
  7528. var swiAng = iswAng * 180 / Math.PI;
  7529. var ediAng = stiAng + swiAng;
  7530. var d_val = "M" + xE + "," + yE +
  7531. " L" + xD + "," + yD +
  7532. shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") +
  7533. " L" + xBp + "," + yBp +
  7534. " L" + xA + "," + yA +
  7535. " L" + xGp + "," + yGp +
  7536. " L" + xF + "," + yF +
  7537. shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false).replace("M", "L") +
  7538. " z";
  7539. result += "<path d='" + d_val + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7540. "' stroke='" + border.color + "' stroke-width='" + border.width + "' stroke-dasharray='" + border.strokeDasharray + "' />";
  7541. break;
  7542. case "leftRightCircularArrow":
  7543. case "chartPlus":
  7544. case "chartStar":
  7545. case "chartX":
  7546. case "cornerTabs":
  7547. case "flowChartOfflineStorage":
  7548. case "folderCorner":
  7549. case "funnel":
  7550. case "lineInv":
  7551. case "nonIsoscelesTrapezoid":
  7552. case "plaqueTabs":
  7553. case "squareTabs":
  7554. case "upDownArrowCallout":
  7555. console.log(shapType, " -unsupported shape type.");
  7556. break;
  7557. case undefined:
  7558. default:
  7559. console.warn("Undefine shape type.(" + shapType + ")");
  7560. }
  7561. result += "</svg>";
  7562. result += "<div class='block " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) + //block content
  7563. " " + getContentDir(node, type, warpObj) +
  7564. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  7565. "' style='" +
  7566. getPosition(slideXfrmNode, pNode, slideLayoutXfrmNode, slideMasterXfrmNode, sType) +
  7567. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  7568. " z-index: " + order + ";" +
  7569. "transform: rotate(" + ((txtRotate !== undefined) ? txtRotate : 0) + "deg);" +
  7570. "'>";
  7571. // TextBody
  7572. if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) {
  7573. if (type != "diagram" && type != "textBox") {
  7574. type = "shape";
  7575. }
  7576. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj); //type='shape'
  7577. }
  7578. result += "</div>";
  7579. } else if (custShapType !== undefined) {
  7580. //custGeom here - Amir ///////////////////////////////////////////////////////
  7581. //http://officeopenxml.com/drwSp-custGeom.php
  7582. var pathLstNode = getTextByPathList(custShapType, ["a:pathLst"]);
  7583. var pathNodes = getTextByPathList(pathLstNode, ["a:path"]);
  7584. //var pathNode = getTextByPathList(pathLstNode, ["a:path", "attrs"]);
  7585. var maxX = parseInt(pathNodes["attrs"]["w"]);// * slideFactor;
  7586. var maxY = parseInt(pathNodes["attrs"]["h"]);// * slideFactor;
  7587. var cX = (1 / maxX) * w;
  7588. var cY = (1 / maxY) * h;
  7589. //console.log("w = "+w+"\nh = "+h+"\nmaxX = "+maxX +"\nmaxY = " + maxY);
  7590. //cheke if it is close shape
  7591. //console.log("custShapType : ", custShapType, ", pathLstNode: ", pathLstNode, ", node: ", node);//, ", y:", y, ", w:", w, ", h:", h);
  7592. var moveToNode = getTextByPathList(pathNodes, ["a:moveTo"]);
  7593. var total_shapes = moveToNode.length;
  7594. var lnToNodes = pathNodes["a:lnTo"]; //total a:pt : 1
  7595. var cubicBezToNodes = pathNodes["a:cubicBezTo"]; //total a:pt : 3
  7596. var arcToNodes = pathNodes["a:arcTo"]; //total a:pt : 0?1? ; attrs: ~4 ()
  7597. var closeNode = getTextByPathList(pathNodes, ["a:close"]); //total a:pt : 0
  7598. //quadBezTo //total a:pt : 2 - TODO
  7599. //console.log("ia moveToNode array: ", Array.isArray(moveToNode))
  7600. if (!Array.isArray(moveToNode)) {
  7601. moveToNode = [moveToNode];
  7602. }
  7603. //console.log("ia moveToNode array: ", Array.isArray(moveToNode))
  7604. var multiSapeAry = [];
  7605. if (moveToNode.length > 0) {
  7606. //a:moveTo
  7607. Object.keys(moveToNode).forEach(function (key) {
  7608. var moveToPtNode = moveToNode[key]["a:pt"];
  7609. if (moveToPtNode !== undefined) {
  7610. Object.keys(moveToPtNode).forEach(function (key2) {
  7611. var ptObj = {};
  7612. var moveToNoPt = moveToPtNode[key2];
  7613. var spX = moveToNoPt["attrs", "x"];//parseInt(moveToNoPt["attrs", "x"]) * slideFactor;
  7614. var spY = moveToNoPt["attrs", "y"];//parseInt(moveToNoPt["attrs", "y"]) * slideFactor;
  7615. var ptOrdr = moveToNoPt["attrs", "order"];
  7616. ptObj.type = "movto";
  7617. ptObj.order = ptOrdr;
  7618. ptObj.x = spX;
  7619. ptObj.y = spY;
  7620. multiSapeAry.push(ptObj);
  7621. //console.log(key2, lnToNoPt);
  7622. });
  7623. }
  7624. });
  7625. //a:lnTo
  7626. if (lnToNodes !== undefined) {
  7627. Object.keys(lnToNodes).forEach(function (key) {
  7628. var lnToPtNode = lnToNodes[key]["a:pt"];
  7629. if (lnToPtNode !== undefined) {
  7630. Object.keys(lnToPtNode).forEach(function (key2) {
  7631. var ptObj = {};
  7632. var lnToNoPt = lnToPtNode[key2];
  7633. var ptX = lnToNoPt["attrs", "x"];
  7634. var ptY = lnToNoPt["attrs", "y"];
  7635. var ptOrdr = lnToNoPt["attrs", "order"];
  7636. ptObj.type = "lnto";
  7637. ptObj.order = ptOrdr;
  7638. ptObj.x = ptX;
  7639. ptObj.y = ptY;
  7640. multiSapeAry.push(ptObj);
  7641. //console.log(key2, lnToNoPt);
  7642. });
  7643. }
  7644. });
  7645. }
  7646. //a:cubicBezTo
  7647. if (cubicBezToNodes !== undefined) {
  7648. var cubicBezToPtNodesAry = [];
  7649. //console.log("cubicBezToNodes: ", cubicBezToNodes, ", is arry: ", Array.isArray(cubicBezToNodes))
  7650. if (!Array.isArray(cubicBezToNodes)) {
  7651. cubicBezToNodes = [cubicBezToNodes];
  7652. }
  7653. Object.keys(cubicBezToNodes).forEach(function (key) {
  7654. //console.log("cubicBezTo[" + key + "]:");
  7655. cubicBezToPtNodesAry.push(cubicBezToNodes[key]["a:pt"]);
  7656. });
  7657. //console.log("cubicBezToNodes: ", cubicBezToPtNodesAry)
  7658. cubicBezToPtNodesAry.forEach(function (key2) {
  7659. //console.log("cubicBezToPtNodesAry: key2 : ", key2)
  7660. var nodeObj = {};
  7661. nodeObj.type = "cubicBezTo";
  7662. nodeObj.order = key2[0]["attrs"]["order"];
  7663. var pts_ary = [];
  7664. key2.forEach(function (pt) {
  7665. var pt_obj = {
  7666. x: pt["attrs"]["x"],
  7667. y: pt["attrs"]["y"]
  7668. }
  7669. pts_ary.push(pt_obj)
  7670. })
  7671. nodeObj.cubBzPt = pts_ary;//key2;
  7672. multiSapeAry.push(nodeObj);
  7673. });
  7674. }
  7675. //a:arcTo
  7676. if (arcToNodes !== undefined) {
  7677. var arcToNodesAttrs = arcToNodes["attrs"];
  7678. var arcOrder = arcToNodesAttrs["order"];
  7679. var hR = arcToNodesAttrs["hR"];
  7680. var wR = arcToNodesAttrs["wR"];
  7681. var stAng = arcToNodesAttrs["stAng"];
  7682. var swAng = arcToNodesAttrs["swAng"];
  7683. var shftX = 0;
  7684. var shftY = 0;
  7685. var arcToPtNode = getTextByPathList(arcToNodes, ["a:pt", "attrs"]);
  7686. if (arcToPtNode !== undefined) {
  7687. shftX = arcToPtNode["x"];
  7688. shftY = arcToPtNode["y"];
  7689. //console.log("shftX: ",shftX," shftY: ",shftY)
  7690. }
  7691. var ptObj = {};
  7692. ptObj.type = "arcTo";
  7693. ptObj.order = arcOrder;
  7694. ptObj.hR = hR;
  7695. ptObj.wR = wR;
  7696. ptObj.stAng = stAng;
  7697. ptObj.swAng = swAng;
  7698. ptObj.shftX = shftX;
  7699. ptObj.shftY = shftY;
  7700. multiSapeAry.push(ptObj);
  7701. }
  7702. //a:quadBezTo - TODO
  7703. //a:close
  7704. if (closeNode !== undefined) {
  7705. if (!Array.isArray(closeNode)) {
  7706. closeNode = [closeNode];
  7707. }
  7708. // Object.keys(closeNode).forEach(function (key) {
  7709. // //console.log("cubicBezTo[" + key + "]:");
  7710. // cubicBezToPtNodesAry.push(closeNode[key]["a:pt"]);
  7711. // });
  7712. Object.keys(closeNode).forEach(function (key) {
  7713. //console.log("custShapType >> closeNode: key: ", key);
  7714. var clsAttrs = closeNode[key]["attrs"];
  7715. //var clsAttrs = closeNode["attrs"];
  7716. var clsOrder = clsAttrs["order"];
  7717. var ptObj = {};
  7718. ptObj.type = "close";
  7719. ptObj.order = clsOrder;
  7720. multiSapeAry.push(ptObj);
  7721. });
  7722. }
  7723. // console.log("custShapType >> multiSapeAry: ", multiSapeAry);
  7724. multiSapeAry.sort(function (a, b) {
  7725. return a.order - b.order;
  7726. });
  7727. //console.log("custShapType >>sorted multiSapeAry: ");
  7728. //console.log(multiSapeAry);
  7729. var k = 0;
  7730. var isClose = false;
  7731. var d = "";
  7732. while (k < multiSapeAry.length) {
  7733. if (multiSapeAry[k].type == "movto") {
  7734. //start point
  7735. var spX = parseInt(multiSapeAry[k].x) * cX;//slideFactor;
  7736. var spY = parseInt(multiSapeAry[k].y) * cY;//slideFactor;
  7737. // if (d == "") {
  7738. // d = "M" + spX + "," + spY;
  7739. // } else {
  7740. // //shape without close : then close the shape and start new path
  7741. // result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7742. // "' stroke='" + ((border === undefined) ? "" : border.color) + "' stroke-width='" + ((border === undefined) ? "" : border.width) + "' stroke-dasharray='" + ((border === undefined) ? "" : border.strokeDasharray) + "' ";
  7743. // result += "/>";
  7744. // if (headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) {
  7745. // result += "marker-start='url(#markerTriangle_" + shpId + ")' ";
  7746. // }
  7747. // if (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow")) {
  7748. // result += "marker-end='url(#markerTriangle_" + shpId + ")' ";
  7749. // }
  7750. // result += "/>";
  7751. // d = "M" + spX + "," + spY;
  7752. // isClose = true;
  7753. // }
  7754. d += " M" + spX + "," + spY;
  7755. } else if (multiSapeAry[k].type == "lnto") {
  7756. var Lx = parseInt(multiSapeAry[k].x) * cX;//slideFactor;
  7757. var Ly = parseInt(multiSapeAry[k].y) * cY;//slideFactor;
  7758. d += " L" + Lx + "," + Ly;
  7759. } else if (multiSapeAry[k].type == "cubicBezTo") {
  7760. var Cx1 = parseInt(multiSapeAry[k].cubBzPt[0].x) * cX;//slideFactor;
  7761. var Cy1 = parseInt(multiSapeAry[k].cubBzPt[0].y) * cY;//slideFactor;
  7762. var Cx2 = parseInt(multiSapeAry[k].cubBzPt[1].x) * cX;//slideFactor;
  7763. var Cy2 = parseInt(multiSapeAry[k].cubBzPt[1].y) * cY;//slideFactor;
  7764. var Cx3 = parseInt(multiSapeAry[k].cubBzPt[2].x) * cX;//slideFactor;
  7765. var Cy3 = parseInt(multiSapeAry[k].cubBzPt[2].y) * cY;//slideFactor;
  7766. d += " C" + Cx1 + "," + Cy1 + " " + Cx2 + "," + Cy2 + " " + Cx3 + "," + Cy3;
  7767. } else if (multiSapeAry[k].type == "arcTo") {
  7768. var hR = parseInt(multiSapeAry[k].hR) * cX;//slideFactor;
  7769. var wR = parseInt(multiSapeAry[k].wR) * cY;//slideFactor;
  7770. var stAng = parseInt(multiSapeAry[k].stAng) / 60000;
  7771. var swAng = parseInt(multiSapeAry[k].swAng) / 60000;
  7772. //var shftX = parseInt(multiSapeAry[k].shftX) * slideFactor;
  7773. //var shftY = parseInt(multiSapeAry[k].shftY) * slideFactor;
  7774. var endAng = stAng + swAng;
  7775. d += shapeArc(wR, hR, wR, hR, stAng, endAng, false);
  7776. } else if (multiSapeAry[k].type == "quadBezTo") {
  7777. console.log("custShapType: quadBezTo - TODO")
  7778. } else if (multiSapeAry[k].type == "close") {
  7779. // result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7780. // "' stroke='" + ((border === undefined) ? "" : border.color) + "' stroke-width='" + ((border === undefined) ? "" : border.width) + "' stroke-dasharray='" + ((border === undefined) ? "" : border.strokeDasharray) + "' ";
  7781. // result += "/>";
  7782. // d = "";
  7783. // isClose = true;
  7784. d += "z";
  7785. }
  7786. k++;
  7787. }
  7788. //if (!isClose) {
  7789. //only one "moveTo" and no "close"
  7790. result += "<path d='" + d + "' fill='" + (!imgFillFlg ? (grndFillFlg ? "url(#linGrd_" + shpId + ")" : fillColor) : "url(#imgPtrn_" + shpId + ")") +
  7791. "' stroke='" + ((border === undefined) ? "" : border.color) + "' stroke-width='" + ((border === undefined) ? "" : border.width) + "' stroke-dasharray='" + ((border === undefined) ? "" : border.strokeDasharray) + "' ";
  7792. result += "/>";
  7793. //console.log(result);
  7794. }
  7795. result += "</svg>";
  7796. result += "<div class='block " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) + //block content
  7797. " " + getContentDir(node, type, warpObj) +
  7798. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  7799. "' style='" +
  7800. getPosition(slideXfrmNode, pNode, slideLayoutXfrmNode, slideMasterXfrmNode, sType) +
  7801. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  7802. " z-index: " + order + ";" +
  7803. "transform: rotate(" + ((txtRotate !== undefined) ? txtRotate : 0) + "deg);" +
  7804. "'>";
  7805. // TextBody
  7806. if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) {
  7807. if (type != "diagram" && type != "textBox") {
  7808. type = "shape";
  7809. }
  7810. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj); //type=shape
  7811. }
  7812. result += "</div>";
  7813. // result = "";
  7814. } else {
  7815. result += "<div class='block " + getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) +//block content
  7816. " " + getContentDir(node, type, warpObj) +
  7817. "' _id='" + id + "' _idx='" + idx + "' _type='" + type + "' _name='" + name +
  7818. "' style='" +
  7819. getPosition(slideXfrmNode, pNode, slideLayoutXfrmNode, slideMasterXfrmNode, sType) +
  7820. getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode) +
  7821. getBorder(node, pNode, false, "shape", warpObj) +
  7822. getShapeFill(node, pNode, false, warpObj, source) +
  7823. " z-index: " + order + ";" +
  7824. "transform: rotate(" + ((txtRotate !== undefined) ? txtRotate : 0) + "deg);" +
  7825. "'>";
  7826. // TextBody
  7827. if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) {
  7828. result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj);
  7829. }
  7830. result += "</div>";
  7831. }
  7832. //console.log("div block result:\n", result)
  7833. return result;
  7834. }
  7835. function shapePie(H, w, adj1, adj2, isClose) {
  7836. var pieVal = parseInt(adj2);
  7837. var piAngle = parseInt(adj1);
  7838. var size = parseInt(H),
  7839. radius = (size / 2),
  7840. value = pieVal - piAngle;
  7841. if (value < 0) {
  7842. value = 360 + value;
  7843. }
  7844. //console.log("value: ",value)
  7845. value = Math.min(Math.max(value, 0), 360);
  7846. //calculate x,y coordinates of the point on the circle to draw the arc to.
  7847. var x = Math.cos((2 * Math.PI) / (360 / value));
  7848. var y = Math.sin((2 * Math.PI) / (360 / value));
  7849. //d is a string that describes the path of the slice.
  7850. var longArc, d, rot;
  7851. if (isClose) {
  7852. longArc = (value <= 180) ? 0 : 1;
  7853. d = "M" + radius + "," + radius + " L" + radius + "," + 0 + " A" + radius + "," + radius + " 0 " + longArc + ",1 " + (radius + y * radius) + "," + (radius - x * radius) + " z";
  7854. rot = "rotate(" + (piAngle - 270) + ", " + radius + ", " + radius + ")";
  7855. } else {
  7856. longArc = (value <= 180) ? 0 : 1;
  7857. var radius1 = radius;
  7858. var radius2 = w / 2;
  7859. d = "M" + radius1 + "," + 0 + " A" + radius2 + "," + radius1 + " 0 " + longArc + ",1 " + (radius2 + y * radius2) + "," + (radius1 - x * radius1);
  7860. rot = "rotate(" + (piAngle + 90) + ", " + radius + ", " + radius + ")";
  7861. }
  7862. return [d, rot];
  7863. }
  7864. function shapeGear(w, h, points) {
  7865. var innerRadius = h;//gear.innerRadius;
  7866. var outerRadius = 1.5 * innerRadius;
  7867. var cx = outerRadius;//Math.max(innerRadius, outerRadius), // center x
  7868. cy = outerRadius;//Math.max(innerRadius, outerRadius), // center y
  7869. notches = points,//gear.points, // num. of notches
  7870. radiusO = outerRadius, // outer radius
  7871. radiusI = innerRadius, // inner radius
  7872. taperO = 50, // outer taper %
  7873. taperI = 35, // inner taper %
  7874. // pre-calculate values for loop
  7875. pi2 = 2 * Math.PI, // cache 2xPI (360deg)
  7876. angle = pi2 / (notches * 2), // angle between notches
  7877. taperAI = angle * taperI * 0.005, // inner taper offset (100% = half notch)
  7878. taperAO = angle * taperO * 0.005, // outer taper offset
  7879. a = angle, // iterator (angle)
  7880. toggle = false;
  7881. // move to starting point
  7882. var d = " M" + (cx + radiusO * Math.cos(taperAO)) + " " + (cy + radiusO * Math.sin(taperAO));
  7883. // loop
  7884. for (; a <= pi2 + angle; a += angle) {
  7885. // draw inner to outer line
  7886. if (toggle) {
  7887. d += " L" + (cx + radiusI * Math.cos(a - taperAI)) + "," + (cy + radiusI * Math.sin(a - taperAI));
  7888. d += " L" + (cx + radiusO * Math.cos(a + taperAO)) + "," + (cy + radiusO * Math.sin(a + taperAO));
  7889. } else { // draw outer to inner line
  7890. d += " L" + (cx + radiusO * Math.cos(a - taperAO)) + "," + (cy + radiusO * Math.sin(a - taperAO)); // outer line
  7891. d += " L" + (cx + radiusI * Math.cos(a + taperAI)) + "," + (cy + radiusI * Math.sin(a + taperAI));// inner line
  7892. }
  7893. // switch level
  7894. toggle = !toggle;
  7895. }
  7896. // close the final line
  7897. d += " ";
  7898. return d;
  7899. }
  7900. function shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {
  7901. var dData;
  7902. var angle = stAng;
  7903. if (endAng >= stAng) {
  7904. while (angle <= endAng) {
  7905. var radians = angle * (Math.PI / 180); // convert degree to radians
  7906. var x = cX + Math.cos(radians) * rX;
  7907. var y = cY + Math.sin(radians) * rY;
  7908. if (angle == stAng) {
  7909. dData = " M" + x + " " + y;
  7910. }
  7911. dData += " L" + x + " " + y;
  7912. angle++;
  7913. }
  7914. } else {
  7915. while (angle > endAng) {
  7916. var radians = angle * (Math.PI / 180); // convert degree to radians
  7917. var x = cX + Math.cos(radians) * rX;
  7918. var y = cY + Math.sin(radians) * rY;
  7919. if (angle == stAng) {
  7920. dData = " M " + x + " " + y;
  7921. }
  7922. dData += " L " + x + " " + y;
  7923. angle--;
  7924. }
  7925. }
  7926. dData += (isClose ? " z" : "");
  7927. return dData;
  7928. }
  7929. function shapeSnipRoundRect(w, h, adj1, adj2, shapeType, adjType) {
  7930. /*
  7931. shapeType: snip,round
  7932. adjType: cornr1,cornr2,cornrAll,diag
  7933. */
  7934. var adjA, adjB, adjC, adjD;
  7935. if (adjType == "cornr1") {
  7936. adjA = 0;
  7937. adjB = 0;
  7938. adjC = 0;
  7939. adjD = adj1;
  7940. } else if (adjType == "cornr2") {
  7941. adjA = adj1;
  7942. adjB = adj2;
  7943. adjC = adj2;
  7944. adjD = adj1;
  7945. } else if (adjType == "cornrAll") {
  7946. adjA = adj1;
  7947. adjB = adj1;
  7948. adjC = adj1;
  7949. adjD = adj1;
  7950. } else if (adjType == "diag") {
  7951. adjA = adj1;
  7952. adjB = adj2;
  7953. adjC = adj1;
  7954. adjD = adj2;
  7955. }
  7956. //d is a string that describes the path of the slice.
  7957. var d;
  7958. if (shapeType == "round") {
  7959. d = "M0" + "," + (h / 2 + (1 - adjB) * (h / 2)) + " Q" + 0 + "," + h + " " + adjB * (w / 2) + "," + h + " L" + (w / 2 + (1 - adjC) * (w / 2)) + "," + h +
  7960. " Q" + w + "," + h + " " + w + "," + (h / 2 + (h / 2) * (1 - adjC)) + "L" + w + "," + (h / 2) * adjD +
  7961. " Q" + w + "," + 0 + " " + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + (w / 2) * adjA + ",0" +
  7962. " Q" + 0 + "," + 0 + " 0," + (h / 2) * (adjA) + " z";
  7963. } else if (shapeType == "snip") {
  7964. d = "M0" + "," + adjA * (h / 2) + " L0" + "," + (h / 2 + (h / 2) * (1 - adjB)) + "L" + adjB * (w / 2) + "," + h +
  7965. " L" + (w / 2 + (w / 2) * (1 - adjC)) + "," + h + "L" + w + "," + (h / 2 + (h / 2) * (1 - adjC)) +
  7966. " L" + w + "," + adjD * (h / 2) + "L" + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + ((w / 2) * adjA) + ",0 z";
  7967. }
  7968. return d;
  7969. }
  7970. /*
  7971. function shapePolygon(sidesNum) {
  7972. var sides = sidesNum;
  7973. var radius = 100;
  7974. var angle = 2 * Math.PI / sides;
  7975. var points = [];
  7976. for (var i = 0; i < sides; i++) {
  7977. points.push(radius + radius * Math.sin(i * angle));
  7978. points.push(radius - radius * Math.cos(i * angle));
  7979. }
  7980. return points;
  7981. }
  7982. */
  7983. function processPicNode(node, warpObj, source, sType) {
  7984. //console.log("processPicNode node:", node, "source:", source, "sType:", sType, "warpObj;", warpObj);
  7985. var rtrnData = "";
  7986. var mediaPicFlag = false;
  7987. var order = node["attrs"]["order"];
  7988. var rid = node["p:blipFill"]["a:blip"]["attrs"]["r:embed"];
  7989. var resObj;
  7990. if (source == "slideMasterBg") {
  7991. resObj = warpObj["masterResObj"];
  7992. } else if (source == "slideLayoutBg") {
  7993. resObj = warpObj["layoutResObj"];
  7994. } else {
  7995. //imgName = warpObj["slideResObj"][rid]["target"];
  7996. resObj = warpObj["slideResObj"];
  7997. }
  7998. var imgName = resObj[rid]["target"];
  7999. //console.log("processPicNode imgName:", imgName);
  8000. var imgFileExt = extractFileExtension(imgName).toLowerCase();
  8001. var zip = warpObj["zip"];
  8002. var imgArrayBuffer = zip.file(imgName).asArrayBuffer();
  8003. var mimeType = "";
  8004. var xfrmNode = node["p:spPr"]["a:xfrm"];
  8005. if (xfrmNode === undefined) {
  8006. var idx = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "p:ph", "attrs", "idx"]);
  8007. var type = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "p:ph", "attrs", "type"]);
  8008. if (idx !== undefined) {
  8009. xfrmNode = getTextByPathList(warpObj["slideLayoutTables"], ["idxTable", idx, "p:spPr", "a:xfrm"]);
  8010. }
  8011. }
  8012. ///////////////////////////////////////Amir//////////////////////////////
  8013. var rotate = 0;
  8014. var rotateNode = getTextByPathList(node, ["p:spPr", "a:xfrm", "attrs", "rot"]);
  8015. if (rotateNode !== undefined) {
  8016. rotate = angleToDegrees(rotateNode);
  8017. }
  8018. //video
  8019. var vdoNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:videoFile"]);
  8020. var vdoRid, vdoFile, vdoFileExt, vdoMimeType, uInt8Array, blob, vdoBlob, mediaSupportFlag = false, isVdeoLink = false;
  8021. var mediaProcess = settings.mediaProcess;
  8022. if (vdoNode !== undefined & mediaProcess) {
  8023. vdoRid = vdoNode["attrs"]["r:link"];
  8024. vdoFile = resObj[vdoRid]["target"];
  8025. var checkIfLink = IsVideoLink(vdoFile);
  8026. if (checkIfLink) {
  8027. vdoFile = escapeHtml(vdoFile);
  8028. //vdoBlob = vdoFile;
  8029. isVdeoLink = true;
  8030. mediaSupportFlag = true;
  8031. mediaPicFlag = true;
  8032. } else {
  8033. vdoFileExt = extractFileExtension(vdoFile).toLowerCase();
  8034. if (vdoFileExt == "mp4" || vdoFileExt == "webm" || vdoFileExt == "ogg") {
  8035. uInt8Array = zip.file(vdoFile).asArrayBuffer();
  8036. vdoMimeType = getMimeType(vdoFileExt);
  8037. blob = new Blob([uInt8Array], {
  8038. type: vdoMimeType
  8039. });
  8040. vdoBlob = URL.createObjectURL(blob);
  8041. mediaSupportFlag = true;
  8042. mediaPicFlag = true;
  8043. }
  8044. }
  8045. }
  8046. //Audio
  8047. var audioNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:audioFile"]);
  8048. var audioRid, audioFile, audioFileExt, audioMimeType, uInt8ArrayAudio, blobAudio, audioBlob;
  8049. var audioPlayerFlag = false;
  8050. var audioObjc;
  8051. if (audioNode !== undefined & mediaProcess) {
  8052. audioRid = audioNode["attrs"]["r:link"];
  8053. audioFile = resObj[audioRid]["target"];
  8054. audioFileExt = extractFileExtension(audioFile).toLowerCase();
  8055. if (audioFileExt == "mp3" || audioFileExt == "wav" || audioFileExt == "ogg") {
  8056. uInt8ArrayAudio = zip.file(audioFile).asArrayBuffer();
  8057. blobAudio = new Blob([uInt8ArrayAudio]);
  8058. audioBlob = URL.createObjectURL(blobAudio);
  8059. var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * 20;
  8060. var cy = xfrmNode["a:ext"]["attrs"]["cy"];
  8061. var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) / 2.5;
  8062. var y = xfrmNode["a:off"]["attrs"]["y"];
  8063. audioObjc = {
  8064. "a:ext": {
  8065. "attrs": {
  8066. "cx": cx,
  8067. "cy": cy
  8068. }
  8069. },
  8070. "a:off": {
  8071. "attrs": {
  8072. "x": x,
  8073. "y": y
  8074. }
  8075. }
  8076. }
  8077. audioPlayerFlag = true;
  8078. mediaSupportFlag = true;
  8079. mediaPicFlag = true;
  8080. }
  8081. }
  8082. //console.log(node)
  8083. //////////////////////////////////////////////////////////////////////////
  8084. mimeType = getMimeType(imgFileExt);
  8085. rtrnData = "<div class='block content' style='" +
  8086. ((mediaProcess && audioPlayerFlag) ? getPosition(audioObjc, node, undefined, undefined) : getPosition(xfrmNode, node, undefined, undefined)) +
  8087. ((mediaProcess && audioPlayerFlag) ? getSize(audioObjc, undefined, undefined) : getSize(xfrmNode, undefined, undefined)) +
  8088. " z-index: " + order + ";" +
  8089. "transform: rotate(" + rotate + "deg);'>";
  8090. if ((vdoNode === undefined && audioNode === undefined) || !mediaProcess || !mediaSupportFlag) {
  8091. rtrnData += "<img src='data:" + mimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer) + "' style='width: 100%; height: 100%'/>";
  8092. } else if ((vdoNode !== undefined || audioNode !== undefined) && mediaProcess && mediaSupportFlag) {
  8093. if (vdoNode !== undefined && !isVdeoLink) {
  8094. rtrnData += "<video src='" + vdoBlob + "' controls style='width: 100%; height: 100%'>Your browser does not support the video tag.</video>";
  8095. } else if (vdoNode !== undefined && isVdeoLink) {
  8096. rtrnData += "<iframe src='" + vdoFile + "' controls style='width: 100%; height: 100%'></iframe >";
  8097. }
  8098. if (audioNode !== undefined) {
  8099. rtrnData += '<audio id="audio_player" controls ><source src="' + audioBlob + '"></audio>';
  8100. //'<button onclick="audio_player.play()">Play</button>'+
  8101. //'<button onclick="audio_player.pause()">Pause</button>';
  8102. }
  8103. }
  8104. if (!mediaSupportFlag && mediaPicFlag) {
  8105. rtrnData += "<span style='color:red;font-size:40px;position: absolute;'>This media file Not supported by HTML5</span>";
  8106. }
  8107. if ((vdoNode !== undefined || audioNode !== undefined) && !mediaProcess && mediaSupportFlag) {
  8108. console.log("Founded supported media file but media process disabled (mediaProcess=false)");
  8109. }
  8110. rtrnData += "</div>";
  8111. //console.log(rtrnData)
  8112. return rtrnData;
  8113. }
  8114. function processGraphicFrameNode(node, warpObj, source, sType) {
  8115. var result = "";
  8116. var graphicTypeUri = getTextByPathList(node, ["a:graphic", "a:graphicData", "attrs", "uri"]);
  8117. switch (graphicTypeUri) {
  8118. case "http://schemas.openxmlformats.org/drawingml/2006/table":
  8119. result = genTable(node, warpObj);
  8120. break;
  8121. case "http://schemas.openxmlformats.org/drawingml/2006/chart":
  8122. result = genChart(node, warpObj);
  8123. break;
  8124. case "http://schemas.openxmlformats.org/drawingml/2006/diagram":
  8125. result = genDiagram(node, warpObj, source, sType);
  8126. break;
  8127. case "http://schemas.openxmlformats.org/presentationml/2006/ole":
  8128. //result = genDiagram(node, warpObj, source, sType);
  8129. var oleObjNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "mc:AlternateContent", "mc:Fallback","p:oleObj"]);
  8130. if (oleObjNode === undefined) {
  8131. oleObjNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "p:oleObj"]);
  8132. }
  8133. //console.log("node:", node, "oleObjNode:", oleObjNode)
  8134. if (oleObjNode !== undefined){
  8135. result = processGroupSpNode(oleObjNode, warpObj, source);
  8136. }
  8137. break;
  8138. default:
  8139. }
  8140. return result;
  8141. }
  8142. function processSpPrNode(node, warpObj) {
  8143. /*
  8144. * 2241 <xsd:complexType name="CT_ShapeProperties">
  8145. * 2242 <xsd:sequence>
  8146. * 2243 <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="0" maxOccurs="1"/>
  8147. * 2244 <xsd:group ref="EG_Geometry" minOccurs="0" maxOccurs="1"/>
  8148. * 2245 <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
  8149. * 2246 <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
  8150. * 2247 <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
  8151. * 2248 <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
  8152. * 2249 <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/>
  8153. * 2250 <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
  8154. * 2251 </xsd:sequence>
  8155. * 2252 <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/>
  8156. * 2253 </xsd:complexType>
  8157. */
  8158. // TODO:
  8159. }
  8160. var is_first_br = false;
  8161. function genTextBody(textBodyNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj, tbl_col_width) {
  8162. var text = "";
  8163. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  8164. if (textBodyNode === undefined) {
  8165. return text;
  8166. }
  8167. //rtl : <p:txBody>
  8168. // <a:bodyPr wrap="square" rtlCol="1">
  8169. var pFontStyle = getTextByPathList(spNode, ["p:style", "a:fontRef"]);
  8170. //console.log("genTextBody spNode: ", getTextByPathList(spNode,["p:spPr","a:xfrm","a:ext"]));
  8171. //var lstStyle = textBodyNode["a:lstStyle"];
  8172. var apNode = textBodyNode["a:p"];
  8173. if (apNode.constructor !== Array) {
  8174. apNode = [apNode];
  8175. }
  8176. for (var i = 0; i < apNode.length; i++) {
  8177. var pNode = apNode[i];
  8178. var rNode = pNode["a:r"];
  8179. var fldNode = pNode["a:fld"];
  8180. var brNode = pNode["a:br"];
  8181. if (rNode !== undefined) {
  8182. rNode = (rNode.constructor === Array) ? rNode : [rNode];
  8183. }
  8184. if (rNode !== undefined && fldNode !== undefined) {
  8185. fldNode = (fldNode.constructor === Array) ? fldNode : [fldNode];
  8186. rNode = rNode.concat(fldNode)
  8187. }
  8188. if (rNode !== undefined && brNode !== undefined) {
  8189. is_first_br = true;
  8190. brNode = (brNode.constructor === Array) ? brNode : [brNode];
  8191. brNode.forEach(function (item, indx) {
  8192. item.type = "br";
  8193. });
  8194. if (brNode.length > 1) {
  8195. brNode.shift();
  8196. }
  8197. rNode = rNode.concat(brNode)
  8198. //console.log("single a:p rNode:", rNode, "brNode:", brNode )
  8199. rNode.sort(function (a, b) {
  8200. return a.attrs.order - b.attrs.order;
  8201. });
  8202. //console.log("sorted rNode:",rNode)
  8203. }
  8204. //rtlStr = "";//"dir='"+isRTL+"'";
  8205. var styleText = "";
  8206. var marginsVer = getVerticalMargins(pNode, textBodyNode, type, idx, warpObj);
  8207. if (marginsVer != "") {
  8208. styleText = marginsVer;
  8209. }
  8210. if (type == "body" || type == "obj" || type == "shape") {
  8211. styleText += "font-size: 0px;";
  8212. //styleText += "line-height: 0;";
  8213. styleText += "font-weight: 100;";
  8214. styleText += "font-style: normal;";
  8215. }
  8216. var cssName = "";
  8217. if (styleText in styleTable) {
  8218. cssName = styleTable[styleText]["name"];
  8219. } else {
  8220. cssName = "_css_" + (Object.keys(styleTable).length + 1);
  8221. styleTable[styleText] = {
  8222. "name": cssName,
  8223. "text": styleText
  8224. };
  8225. }
  8226. //console.log("textBodyNode: ", textBodyNode["a:lstStyle"])
  8227. var prg_width_node = getTextByPathList(spNode, ["p:spPr", "a:xfrm", "a:ext", "attrs", "cx"]);
  8228. var prg_height_node;// = getTextByPathList(spNode, ["p:spPr", "a:xfrm", "a:ext", "attrs", "cy"]);
  8229. var sld_prg_width = ((prg_width_node !== undefined) ? ("width:" + (parseInt(prg_width_node) * slideFactor) + "px;") : "width:inherit;");
  8230. var sld_prg_height = ((prg_height_node !== undefined) ? ("height:" + (parseInt(prg_height_node) * slideFactor) + "px;") : "");
  8231. var prg_dir = getPregraphDir(pNode, textBodyNode, idx, type, warpObj);
  8232. text += "<div style='display: flex;" + sld_prg_width + sld_prg_height + "' class='slide-prgrph " + getHorizontalAlign(pNode, textBodyNode, idx, type, prg_dir, warpObj) + " " +
  8233. prg_dir + " " + cssName + "' >";
  8234. var buText_ary = genBuChar(pNode, i, spNode, textBodyNode, pFontStyle, idx, type, warpObj);
  8235. var isBullate = (buText_ary[0] !== undefined && buText_ary[0] !== null && buText_ary[0] != "" ) ? true : false;
  8236. var bu_width = (buText_ary[1] !== undefined && buText_ary[1] !== null && isBullate) ? buText_ary[1] + buText_ary[2] : 0;
  8237. text += (buText_ary[0] !== undefined) ? buText_ary[0]:"";
  8238. //get text margin
  8239. var margin_ary = getPregraphMargn(pNode, idx, type, isBullate, warpObj);
  8240. var margin = margin_ary[0];
  8241. var mrgin_val = margin_ary[1];
  8242. if (prg_width_node === undefined && tbl_col_width !== undefined && prg_width_node != 0){
  8243. //sorce : table text
  8244. prg_width_node = tbl_col_width;
  8245. }
  8246. var prgrph_text = "";
  8247. //var prgr_txt_art = [];
  8248. var total_text_len = 0;
  8249. if (rNode === undefined && pNode !== undefined) {
  8250. // without r
  8251. var prgr_text = genSpanElement(pNode, undefined, spNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, 1, warpObj, isBullate);
  8252. if (isBullate) {
  8253. var txt_obj = $(prgr_text)
  8254. .css({ 'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden' })
  8255. .appendTo($('body'));
  8256. total_text_len += txt_obj.outerWidth();
  8257. txt_obj.remove();
  8258. }
  8259. prgrph_text += prgr_text;
  8260. } else if (rNode !== undefined) {
  8261. // with multi r
  8262. for (var j = 0; j < rNode.length; j++) {
  8263. var prgr_text = genSpanElement(rNode[j], j, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, rNode.length, warpObj, isBullate);
  8264. if (isBullate) {
  8265. var txt_obj = $(prgr_text)
  8266. .css({ 'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden'})
  8267. .appendTo($('body'));
  8268. total_text_len += txt_obj.outerWidth();
  8269. txt_obj.remove();
  8270. }
  8271. prgrph_text += prgr_text;
  8272. }
  8273. }
  8274. prg_width_node = parseInt(prg_width_node) * slideFactor - bu_width - mrgin_val;
  8275. if (isBullate) {
  8276. //get prg_width_node if there is a bulltes
  8277. //console.log("total_text_len: ", total_text_len, "prg_width_node:", prg_width_node)
  8278. if (total_text_len < prg_width_node ){
  8279. prg_width_node = total_text_len + bu_width;
  8280. }
  8281. }
  8282. var prg_width = ((prg_width_node !== undefined) ? ("width:" + (prg_width_node )) + "px;" : "width:inherit;");
  8283. text += "<div style='height: 100%;direction: initial;overflow-wrap:break-word;word-wrap: break-word;" + prg_width + margin + "' >";
  8284. text += prgrph_text;
  8285. text += "</div>";
  8286. text += "</div>";
  8287. }
  8288. return text;
  8289. }
  8290. function genBuChar(node, i, spNode, textBodyNode, pFontStyle, idx, type, warpObj) {
  8291. //console.log("genBuChar node: ", node, ", spNode: ", spNode, ", pFontStyle: ", pFontStyle, "type", type)
  8292. ///////////////////////////////////////Amir///////////////////////////////
  8293. var sldMstrTxtStyles = warpObj["slideMasterTextStyles"];
  8294. var lstStyle = textBodyNode["a:lstStyle"];
  8295. var rNode = getTextByPathList(node, ["a:r"]);
  8296. if (rNode !== undefined && rNode.constructor === Array) {
  8297. rNode = rNode[0]; //bullet only to first "a:r"
  8298. }
  8299. var lvl = parseInt(getTextByPathList(node["a:pPr"], ["attrs", "lvl"])) + 1;
  8300. if (isNaN(lvl)) {
  8301. lvl = 1;
  8302. }
  8303. var lvlStr = "a:lvl" + lvl + "pPr";
  8304. var dfltBultColor, dfltBultSize, bultColor, bultSize, color_tye;
  8305. if (rNode !== undefined) {
  8306. dfltBultColor = getFontColorPr(rNode, spNode, lstStyle, pFontStyle, lvl, idx, type, warpObj);
  8307. color_tye = dfltBultColor[2];
  8308. dfltBultSize = getFontSize(rNode, textBodyNode, pFontStyle, lvl, type, warpObj);
  8309. } else {
  8310. return "";
  8311. }
  8312. //console.log("Bullet Size: " + bultSize);
  8313. var bullet = "", marRStr = "", marLStr = "", margin_val=0, font_val=0;
  8314. /////////////////////////////////////////////////////////////////
  8315. var pPrNode = node["a:pPr"];
  8316. var BullNONE = getTextByPathList(pPrNode, ["a:buNone"]);
  8317. if (BullNONE !== undefined) {
  8318. return "";
  8319. }
  8320. var buType = "TYPE_NONE";
  8321. var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj);
  8322. var pPrNodeLaout = layoutMasterNode.nodeLaout;
  8323. var pPrNodeMaster = layoutMasterNode.nodeMaster;
  8324. var buChar = getTextByPathList(pPrNode, ["a:buChar", "attrs", "char"]);
  8325. var buNum = getTextByPathList(pPrNode, ["a:buAutoNum", "attrs", "type"]);
  8326. var buPic = getTextByPathList(pPrNode, ["a:buBlip"]);
  8327. if (buChar !== undefined) {
  8328. buType = "TYPE_BULLET";
  8329. }
  8330. if (buNum !== undefined) {
  8331. buType = "TYPE_NUMERIC";
  8332. }
  8333. if (buPic !== undefined) {
  8334. buType = "TYPE_BULPIC";
  8335. }
  8336. var buFontSize = getTextByPathList(pPrNode, ["a:buSzPts", "attrs", "val"]);
  8337. if (buFontSize === undefined) {
  8338. buFontSize = getTextByPathList(pPrNode, ["a:buSzPct", "attrs", "val"]);
  8339. if (buFontSize !== undefined) {
  8340. var prcnt = parseInt(buFontSize) / 100000;
  8341. //dfltBultSize = XXpt
  8342. //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2);
  8343. var dfltBultSizeNoPt = parseInt(dfltBultSize, "px");
  8344. bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt";
  8345. }
  8346. } else {
  8347. bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px";
  8348. }
  8349. //get definde bullet COLOR
  8350. var buClrNode = getTextByPathList(pPrNode, ["a:buClr"]);
  8351. if (buChar === undefined && buNum === undefined && buPic === undefined) {
  8352. if (lstStyle !== undefined) {
  8353. BullNONE = getTextByPathList(lstStyle, [lvlStr,"a:buNone"]);
  8354. if (BullNONE !== undefined) {
  8355. return "";
  8356. }
  8357. buType = "TYPE_NONE";
  8358. buChar = getTextByPathList(lstStyle, [lvlStr,"a:buChar", "attrs", "char"]);
  8359. buNum = getTextByPathList(lstStyle, [lvlStr,"a:buAutoNum", "attrs", "type"]);
  8360. buPic = getTextByPathList(lstStyle, [lvlStr,"a:buBlip"]);
  8361. if (buChar !== undefined) {
  8362. buType = "TYPE_BULLET";
  8363. }
  8364. if (buNum !== undefined) {
  8365. buType = "TYPE_NUMERIC";
  8366. }
  8367. if (buPic !== undefined) {
  8368. buType = "TYPE_BULPIC";
  8369. }
  8370. if (buChar !== undefined || buNum !== undefined || buPic !== undefined) {
  8371. pPrNode = lstStyle[lvlStr];
  8372. }
  8373. }
  8374. }
  8375. if (buChar === undefined && buNum === undefined && buPic === undefined) {
  8376. //check in slidelayout and masterlayout - TODO
  8377. if (pPrNodeLaout !== undefined) {
  8378. BullNONE = getTextByPathList(pPrNodeLaout, ["a:buNone"]);
  8379. if (BullNONE !== undefined) {
  8380. return "";
  8381. }
  8382. buType = "TYPE_NONE";
  8383. buChar = getTextByPathList(pPrNodeLaout, ["a:buChar", "attrs", "char"]);
  8384. buNum = getTextByPathList(pPrNodeLaout, ["a:buAutoNum", "attrs", "type"]);
  8385. buPic = getTextByPathList(pPrNodeLaout, ["a:buBlip"]);
  8386. if (buChar !== undefined) {
  8387. buType = "TYPE_BULLET";
  8388. }
  8389. if (buNum !== undefined) {
  8390. buType = "TYPE_NUMERIC";
  8391. }
  8392. if (buPic !== undefined) {
  8393. buType = "TYPE_BULPIC";
  8394. }
  8395. }
  8396. if (buChar === undefined && buNum === undefined && buPic === undefined) {
  8397. //masterlayout
  8398. if (pPrNodeMaster !== undefined) {
  8399. BullNONE = getTextByPathList(pPrNodeMaster, ["a:buNone"]);
  8400. if (BullNONE !== undefined) {
  8401. return "";
  8402. }
  8403. buType = "TYPE_NONE";
  8404. buChar = getTextByPathList(pPrNodeMaster, ["a:buChar", "attrs", "char"]);
  8405. buNum = getTextByPathList(pPrNodeMaster, ["a:buAutoNum", "attrs", "type"]);
  8406. buPic = getTextByPathList(pPrNodeMaster, ["a:buBlip"]);
  8407. if (buChar !== undefined) {
  8408. buType = "TYPE_BULLET";
  8409. }
  8410. if (buNum !== undefined) {
  8411. buType = "TYPE_NUMERIC";
  8412. }
  8413. if (buPic !== undefined) {
  8414. buType = "TYPE_BULPIC";
  8415. }
  8416. }
  8417. }
  8418. }
  8419. //rtl
  8420. var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]);
  8421. if (getRtlVal === undefined) {
  8422. getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]);
  8423. if (getRtlVal === undefined && type != "shape") {
  8424. getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]);
  8425. }
  8426. }
  8427. var isRTL = false;
  8428. if (getRtlVal !== undefined && getRtlVal == "1") {
  8429. isRTL = true;
  8430. }
  8431. //align
  8432. var alignNode = getTextByPathList(pPrNode, ["attrs", "algn"]); //"l" | "ctr" | "r" | "just" | "justLow" | "dist" | "thaiDist
  8433. if (alignNode === undefined) {
  8434. alignNode = getTextByPathList(pPrNodeLaout, ["attrs", "algn"]);
  8435. if (alignNode === undefined) {
  8436. alignNode = getTextByPathList(pPrNodeMaster, ["attrs", "algn"]);
  8437. }
  8438. }
  8439. //indent?
  8440. var indentNode = getTextByPathList(pPrNode, ["attrs", "indent"]);
  8441. if (indentNode === undefined) {
  8442. indentNode = getTextByPathList(pPrNodeLaout, ["attrs", "indent"]);
  8443. if (indentNode === undefined) {
  8444. indentNode = getTextByPathList(pPrNodeMaster, ["attrs", "indent"]);
  8445. }
  8446. }
  8447. var indent = 0;
  8448. if (indentNode !== undefined) {
  8449. indent = parseInt(indentNode) * slideFactor;
  8450. }
  8451. //marL
  8452. var marLNode = getTextByPathList(pPrNode, ["attrs", "marL"]);
  8453. if (marLNode === undefined) {
  8454. marLNode = getTextByPathList(pPrNodeLaout, ["attrs", "marL"]);
  8455. if (marLNode === undefined) {
  8456. marLNode = getTextByPathList(pPrNodeMaster, ["attrs", "marL"]);
  8457. }
  8458. }
  8459. //console.log("genBuChar() isRTL", isRTL, "alignNode:", alignNode)
  8460. if (marLNode !== undefined) {
  8461. var marginLeft = parseInt(marLNode) * slideFactor;
  8462. if (isRTL) {// && alignNode == "r") {
  8463. marLStr = "padding-right:";// "margin-right: ";
  8464. } else {
  8465. marLStr = "padding-left:";//"margin-left: ";
  8466. }
  8467. margin_val = ((marginLeft + indent < 0) ? 0 : (marginLeft + indent));
  8468. marLStr += margin_val + "px;";
  8469. }
  8470. //marR?
  8471. var marRNode = getTextByPathList(pPrNode, ["attrs", "marR"]);
  8472. if (marRNode === undefined && marLNode === undefined) {
  8473. //need to check if this posble - TODO
  8474. marRNode = getTextByPathList(pPrNodeLaout, ["attrs", "marR"]);
  8475. if (marRNode === undefined) {
  8476. marRNode = getTextByPathList(pPrNodeMaster, ["attrs", "marR"]);
  8477. }
  8478. }
  8479. if (marRNode !== undefined) {
  8480. var marginRight = parseInt(marRNode) * slideFactor;
  8481. if (isRTL) {// && alignNode == "r") {
  8482. marLStr = "padding-right:";// "margin-right: ";
  8483. } else {
  8484. marLStr = "padding-left:";//"margin-left: ";
  8485. }
  8486. marRStr += ((marginRight + indent < 0) ? 0 : (marginRight + indent)) + "px;";
  8487. }
  8488. if (buType != "TYPE_NONE") {
  8489. //var buFontAttrs = getTextByPathList(pPrNode, ["a:buFont", "attrs"]);
  8490. }
  8491. //console.log("Bullet Type: " + buType);
  8492. //console.log("NumericTypr: " + buNum);
  8493. //console.log("buChar: " + (buChar === undefined?'':buChar.charCodeAt(0)));
  8494. //get definde bullet COLOR
  8495. if (buClrNode === undefined){
  8496. //lstStyle
  8497. buClrNode = getTextByPathList(lstStyle, [lvlStr, "a:buClr"]);
  8498. }
  8499. if (buClrNode === undefined) {
  8500. buClrNode = getTextByPathList(pPrNodeLaout, ["a:buClr"]);
  8501. if (buClrNode === undefined) {
  8502. buClrNode = getTextByPathList(pPrNodeMaster, ["a:buClr"]);
  8503. }
  8504. }
  8505. var defBultColor;
  8506. if (buClrNode !== undefined) {
  8507. defBultColor = getSolidFill(buClrNode, undefined, undefined, warpObj);
  8508. } else {
  8509. if (pFontStyle !== undefined) {
  8510. //console.log("genBuChar pFontStyle: ", pFontStyle)
  8511. defBultColor = getSolidFill(pFontStyle, undefined, undefined, warpObj);
  8512. }
  8513. }
  8514. if (defBultColor === undefined || defBultColor == "NONE") {
  8515. bultColor = dfltBultColor;
  8516. } else {
  8517. bultColor = [defBultColor, "", "solid"];
  8518. color_tye = "solid";
  8519. }
  8520. //console.log("genBuChar node:", node, "pPrNode", pPrNode, " buClrNode: ", buClrNode, "defBultColor:", defBultColor,"dfltBultColor:" , dfltBultColor , "bultColor:", bultColor)
  8521. //console.log("genBuChar: buClrNode: ", buClrNode, "bultColor", bultColor)
  8522. //get definde bullet SIZE
  8523. if (buFontSize === undefined) {
  8524. buFontSize = getTextByPathList(pPrNodeLaout, ["a:buSzPts", "attrs", "val"]);
  8525. if (buFontSize === undefined) {
  8526. buFontSize = getTextByPathList(pPrNodeLaout, ["a:buSzPct", "attrs", "val"]);
  8527. if (buFontSize !== undefined) {
  8528. var prcnt = parseInt(buFontSize) / 100000;
  8529. //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2);
  8530. var dfltBultSizeNoPt = parseInt(dfltBultSize, "px");
  8531. bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt";
  8532. }
  8533. }else{
  8534. bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px";
  8535. }
  8536. }
  8537. if (buFontSize === undefined) {
  8538. buFontSize = getTextByPathList(pPrNodeMaster, ["a:buSzPts", "attrs", "val"]);
  8539. if (buFontSize === undefined) {
  8540. buFontSize = getTextByPathList(pPrNodeMaster, ["a:buSzPct", "attrs", "val"]);
  8541. if (buFontSize !== undefined) {
  8542. var prcnt = parseInt(buFontSize) / 100000;
  8543. //dfltBultSize = XXpt
  8544. //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2);
  8545. var dfltBultSizeNoPt = parseInt(dfltBultSize, "px");
  8546. bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt";
  8547. }
  8548. } else {
  8549. bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px";
  8550. }
  8551. }
  8552. if (buFontSize === undefined) {
  8553. bultSize = dfltBultSize;
  8554. }
  8555. font_val = parseInt(bultSize, "px");
  8556. ////////////////////////////////////////////////////////////////////////
  8557. if (buType == "TYPE_BULLET") {
  8558. var typefaceNode = getTextByPathList(pPrNode, ["a:buFont", "attrs", "typeface"]);
  8559. var typeface = "";
  8560. if (typefaceNode !== undefined) {
  8561. typeface = "font-family: " + typefaceNode;
  8562. }
  8563. // var marginLeft = parseInt(getTextByPathList(marLNode)) * slideFactor;
  8564. // var marginRight = parseInt(getTextByPathList(marRNode)) * slideFactor;
  8565. // if (isNaN(marginLeft)) {
  8566. // marginLeft = 328600 * slideFactor;
  8567. // }
  8568. // if (isNaN(marginRight)) {
  8569. // marginRight = 0;
  8570. // }
  8571. bullet = "<div style='height: 100%;" + typeface + ";" +
  8572. marLStr + marRStr +
  8573. "font-size:" + bultSize + ";" ;
  8574. //bullet += "display: table-cell;";
  8575. //"line-height: 0px;";
  8576. if (color_tye == "solid") {
  8577. if (bultColor[0] !== undefined && bultColor[0] != "") {
  8578. bullet += "color:#" + bultColor[0] + "; ";
  8579. }
  8580. if (bultColor[1] !== undefined && bultColor[1] != "" && bultColor[1] != ";") {
  8581. bullet += "text-shadow:" + bultColor[1] + ";";
  8582. }
  8583. //no highlight/background-color to bullet
  8584. // if (bultColor[3] !== undefined && bultColor[3] != "") {
  8585. // styleText += "background-color: #" + bultColor[3] + ";";
  8586. // }
  8587. } else if (color_tye == "pattern" || color_tye == "pic" || color_tye == "gradient") {
  8588. if (color_tye == "pattern") {
  8589. bullet += "background:" + bultColor[0][0] + ";";
  8590. if (bultColor[0][1] !== null && bultColor[0][1] !== undefined && bultColor[0][1] != "") {
  8591. bullet += "background-size:" + bultColor[0][1] + ";";//" 2px 2px;" +
  8592. }
  8593. if (bultColor[0][2] !== null && bultColor[0][2] !== undefined && bultColor[0][2] != "") {
  8594. bullet += "background-position:" + bultColor[0][2] + ";";//" 2px 2px;" +
  8595. }
  8596. // bullet += "-webkit-background-clip: text;" +
  8597. // "background-clip: text;" +
  8598. // "color: transparent;" +
  8599. // "-webkit-text-stroke: " + bultColor[1].border + ";" +
  8600. // "filter: " + bultColor[1].effcts + ";";
  8601. } else if (color_tye == "pic") {
  8602. bullet += bultColor[0] + ";";
  8603. // bullet += "-webkit-background-clip: text;" +
  8604. // "background-clip: text;" +
  8605. // "color: transparent;" +
  8606. // "-webkit-text-stroke: " + bultColor[1].border + ";";
  8607. } else if (color_tye == "gradient") {
  8608. var colorAry = bultColor[0].color;
  8609. var rot = bultColor[0].rot;
  8610. bullet += "background: linear-gradient(" + rot + "deg,";
  8611. for (var i = 0; i < colorAry.length; i++) {
  8612. if (i == colorAry.length - 1) {
  8613. bullet += "#" + colorAry[i] + ");";
  8614. } else {
  8615. bullet += "#" + colorAry[i] + ", ";
  8616. }
  8617. }
  8618. // bullet += "color: transparent;" +
  8619. // "-webkit-background-clip: text;" +
  8620. // "background-clip: text;" +
  8621. // "-webkit-text-stroke: " + bultColor[1].border + ";";
  8622. }
  8623. bullet += "-webkit-background-clip: text;" +
  8624. "background-clip: text;" +
  8625. "color: transparent;";
  8626. if (bultColor[1].border !== undefined && bultColor[1].border !== "") {
  8627. bullet += "-webkit-text-stroke: " + bultColor[1].border + ";";
  8628. }
  8629. if (bultColor[1].effcts !== undefined && bultColor[1].effcts !== "") {
  8630. bullet += "filter: " + bultColor[1].effcts + ";";
  8631. }
  8632. }
  8633. if (isRTL) {
  8634. //bullet += "display: inline-block;white-space: nowrap ;direction:rtl"; // float: right;
  8635. bullet += "white-space: nowrap ;direction:rtl"; // display: table-cell;;
  8636. }
  8637. var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
  8638. var htmlBu = buChar;
  8639. if (!isIE11) {
  8640. //ie11 does not support unicode ?
  8641. htmlBu = getHtmlBullet(typefaceNode, buChar);
  8642. }
  8643. bullet += "'><div style='line-height: " + (font_val/2) + "px;'>" + htmlBu + "</div></div>"; //font_val
  8644. //}
  8645. // else {
  8646. // marginLeft = 328600 * slideFactor * lvl;
  8647. // bullet = "<div style='" + marLStr + "'>" + buChar + "</div>";
  8648. // }
  8649. } else if (buType == "TYPE_NUMERIC") { ///////////Amir///////////////////////////////
  8650. //if (buFontAttrs !== undefined) {
  8651. // var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * slideFactor;
  8652. // var marginRight = parseInt(buFontAttrs["pitchFamily"]);
  8653. // if (isNaN(marginLeft)) {
  8654. // marginLeft = 328600 * slideFactor;
  8655. // }
  8656. // if (isNaN(marginRight)) {
  8657. // marginRight = 0;
  8658. // }
  8659. //var typeface = buFontAttrs["typeface"];
  8660. bullet = "<div style='height: 100%;" + marLStr + marRStr +
  8661. "color:#" + bultColor[0] + ";" +
  8662. "font-size:" + bultSize + ";";// +
  8663. //"line-height: 0px;";
  8664. if (isRTL) {
  8665. bullet += "display: inline-block;white-space: nowrap ;direction:rtl;"; // float: right;
  8666. } else {
  8667. bullet += "display: inline-block;white-space: nowrap ;direction:ltr;"; //float: left;
  8668. }
  8669. bullet += "' data-bulltname = '" + buNum + "' data-bulltlvl = '" + lvl + "' class='numeric-bullet-style'></div>";
  8670. // } else {
  8671. // marginLeft = 328600 * slideFactor * lvl;
  8672. // bullet = "<div style='margin-left: " + marginLeft + "px;";
  8673. // if (isRTL) {
  8674. // bullet += " float: right; direction:rtl;";
  8675. // } else {
  8676. // bullet += " float: left; direction:ltr;";
  8677. // }
  8678. // bullet += "' data-bulltname = '" + buNum + "' data-bulltlvl = '" + lvl + "' class='numeric-bullet-style'></div>";
  8679. // }
  8680. } else if (buType == "TYPE_BULPIC") { //PIC BULLET
  8681. // var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * slideFactor;
  8682. // var marginRight = parseInt(getTextByPathList(pPrNode, ["attrs", "marR"])) * slideFactor;
  8683. // if (isNaN(marginRight)) {
  8684. // marginRight = 0;
  8685. // }
  8686. // //console.log("marginRight: "+marginRight)
  8687. // //buPic
  8688. // if (isNaN(marginLeft)) {
  8689. // marginLeft = 328600 * slideFactor;
  8690. // } else {
  8691. // marginLeft = 0;
  8692. // }
  8693. //var buPicId = getTextByPathList(buPic, ["a:blip","a:extLst","a:ext","asvg:svgBlip" , "attrs", "r:embed"]);
  8694. var buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]);
  8695. var svgPicPath = "";
  8696. var buImg;
  8697. if (buPicId !== undefined) {
  8698. //svgPicPath = warpObj["slideResObj"][buPicId]["target"];
  8699. //buImg = warpObj["zip"].file(svgPicPath).asText();
  8700. //}else{
  8701. //buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]);
  8702. var imgPath = warpObj["slideResObj"][buPicId]["target"];
  8703. //console.log("imgPath: ", imgPath);
  8704. var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer();
  8705. var imgExt = imgPath.split(".").pop();
  8706. var imgMimeType = getMimeType(imgExt);
  8707. buImg = "<img src='data:" + imgMimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer) + "' style='width: 100%;'/>"// height: 100%
  8708. //console.log("imgPath: "+imgPath+"\nimgMimeType: "+imgMimeType)
  8709. }
  8710. if (buPicId === undefined) {
  8711. buImg = "&#8227;";
  8712. }
  8713. bullet = "<div style='height: 100%;" + marLStr + marRStr +
  8714. "width:" + bultSize + ";display: inline-block; ";// +
  8715. //"line-height: 0px;";
  8716. if (isRTL) {
  8717. bullet += "display: inline-block;white-space: nowrap ;direction:rtl;"; //direction:rtl; float: right;
  8718. }
  8719. bullet += "'>" + buImg + " </div>";
  8720. //////////////////////////////////////////////////////////////////////////////////////
  8721. }
  8722. // else {
  8723. // bullet = "<div style='margin-left: " + 328600 * slideFactor * lvl + "px" +
  8724. // "; margin-right: " + 0 + "px;'></div>";
  8725. // }
  8726. //console.log("genBuChar: width: ", $(bullet).outerWidth())
  8727. return [bullet, margin_val, font_val];//$(bullet).outerWidth()];
  8728. }
  8729. function getHtmlBullet(typefaceNode, buChar) {
  8730. //http://www.alanwood.net/demos/wingdings.html
  8731. //not work for IE11
  8732. //console.log("genBuChar typefaceNode:", typefaceNode, " buChar:", buChar, "charCodeAt:", buChar.charCodeAt(0))
  8733. switch (buChar) {
  8734. case "§":
  8735. return "&#9632;";//"■"; //9632 | U+25A0 | Black square
  8736. break;
  8737. case "q":
  8738. return "&#10065;";//"❑"; // 10065 | U+2751 | Lower right shadowed white square
  8739. break;
  8740. case "v":
  8741. return "&#10070;";//"❖"; //10070 | U+2756 | Black diamond minus white X
  8742. break;
  8743. case "Ø":
  8744. return "&#11162;";//"⮚"; //11162 | U+2B9A | Three-D top-lighted rightwards equilateral arrowhead
  8745. break;
  8746. case "ü":
  8747. return "&#10004;";//"✔"; //10004 | U+2714 | Heavy check mark
  8748. break;
  8749. default:
  8750. if (/*typefaceNode == "Wingdings" ||*/ typefaceNode == "Wingdings 2" || typefaceNode == "Wingdings 3"){
  8751. var wingCharCode = getDingbatToUnicode(typefaceNode, buChar);
  8752. if (wingCharCode !== null){
  8753. return "&#" + wingCharCode + ";";
  8754. }
  8755. }
  8756. return "&#" + (buChar.charCodeAt(0)) + ";";
  8757. }
  8758. }
  8759. function getDingbatToUnicode(typefaceNode, buChar){
  8760. if (dingbat_unicode){
  8761. var dingbat_code = buChar.codePointAt(0) & 0xFFF;
  8762. var char_unicode = null;
  8763. var len = dingbat_unicode.length;
  8764. var i = 0;
  8765. while (len--) {
  8766. // blah blah
  8767. var item = dingbat_unicode[i];
  8768. if (item.f == typefaceNode && item.code == dingbat_code) {
  8769. char_unicode = item.unicode;
  8770. break;
  8771. }
  8772. i++;
  8773. }
  8774. return char_unicode
  8775. }
  8776. }
  8777. function getLayoutAndMasterNode(node, idx, type, warpObj) {
  8778. var pPrNodeLaout, pPrNodeMaster;
  8779. var pPrNode = node["a:pPr"];
  8780. //lvl
  8781. var lvl = 1;
  8782. var lvlNode = getTextByPathList(pPrNode, ["attrs", "lvl"]);
  8783. if (lvlNode !== undefined) {
  8784. lvl = parseInt(lvlNode) + 1;
  8785. }
  8786. if (idx !== undefined) {
  8787. //slidelayout
  8788. pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:lstStyle", "a:lvl" + lvl + "pPr"]);
  8789. if (pPrNodeLaout === undefined) {
  8790. pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", "a:pPr"]);
  8791. if (pPrNodeLaout === undefined) {
  8792. pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", (lvl - 1), "a:pPr"]);
  8793. }
  8794. }
  8795. }
  8796. if (type !== undefined) {
  8797. //slidelayout
  8798. var lvlStr = "a:lvl" + lvl + "pPr";
  8799. if (pPrNodeLaout === undefined) {
  8800. pPrNodeLaout = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr]);
  8801. }
  8802. //masterlayout
  8803. if (type == "title" || type == "ctrTitle") {
  8804. pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr]);
  8805. } else if (type == "body" || type == "obj" || type == "subTitle") {
  8806. pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr]);
  8807. } else if (type == "shape" || type == "diagram") {
  8808. pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:otherStyle", lvlStr]);
  8809. } else if (type == "textBox") {
  8810. pPrNodeMaster = getTextByPathList(warpObj, ["defaultTextStyle", lvlStr]);
  8811. } else {
  8812. pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr]);
  8813. }
  8814. }
  8815. return {
  8816. "nodeLaout": pPrNodeLaout,
  8817. "nodeMaster": pPrNodeMaster
  8818. };
  8819. }
  8820. function genSpanElement(node, rIndex, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, rNodeLength, warpObj, isBullate) {
  8821. //https://codepen.io/imdunn/pen/GRgwaye ?
  8822. var text_style = "";
  8823. var lstStyle = textBodyNode["a:lstStyle"];
  8824. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  8825. var text = node["a:t"];
  8826. //var text_count = text.length;
  8827. var openElemnt = "<sapn";//"<bdi";
  8828. var closeElemnt = "</sapn>";// "</bdi>";
  8829. var styleText = "";
  8830. if (text === undefined && node["type"] !== undefined) {
  8831. if (is_first_br) {
  8832. //openElemnt = "<br";
  8833. //closeElemnt = "";
  8834. //return "<br style='font-size: initial'>"
  8835. is_first_br = false;
  8836. return "<sapn class='line-break-br' ></sapn>";
  8837. } else {
  8838. // styleText += "display: block;";
  8839. // openElemnt = "<sapn";
  8840. // closeElemnt = "</sapn>";
  8841. }
  8842. styleText += "display: block;";
  8843. //openElemnt = "<sapn";
  8844. //closeElemnt = "</sapn>";
  8845. } else {
  8846. is_first_br = true;
  8847. }
  8848. if (typeof text !== 'string') {
  8849. text = getTextByPathList(node, ["a:fld", "a:t"]);
  8850. if (typeof text !== 'string') {
  8851. text = "&nbsp;";
  8852. //return "<span class='text-block '>&nbsp;</span>";
  8853. }
  8854. // if (text === undefined) {
  8855. // return "";
  8856. // }
  8857. }
  8858. var pPrNode = pNode["a:pPr"];
  8859. //lvl
  8860. var lvl = 1;
  8861. var lvlNode = getTextByPathList(pPrNode, ["attrs", "lvl"]);
  8862. if (lvlNode !== undefined) {
  8863. lvl = parseInt(lvlNode) + 1;
  8864. }
  8865. //console.log("genSpanElement node: ", node, "rIndex: ", rIndex, ", pNode: ", pNode, ",pPrNode: ", pPrNode, "pFontStyle:", pFontStyle, ", idx: ", idx, "type:", type, warpObj);
  8866. var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj);
  8867. var pPrNodeLaout = layoutMasterNode.nodeLaout;
  8868. var pPrNodeMaster = layoutMasterNode.nodeMaster;
  8869. //Language
  8870. var lang = getTextByPathList(node, ["a:rPr", "attrs", "lang"]);
  8871. var isRtlLan = (lang !== undefined && rtl_langs_array.indexOf(lang) !== -1)?true:false;
  8872. //rtl
  8873. var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]);
  8874. if (getRtlVal === undefined) {
  8875. getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]);
  8876. if (getRtlVal === undefined && type != "shape") {
  8877. getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]);
  8878. }
  8879. }
  8880. var isRTL = false;
  8881. var dirStr = "ltr";
  8882. if (getRtlVal !== undefined && getRtlVal == "1") {
  8883. isRTL = true;
  8884. dirStr = "rtl";
  8885. }
  8886. var linkID = getTextByPathList(node, ["a:rPr", "a:hlinkClick", "attrs", "r:id"]);
  8887. var linkTooltip = "";
  8888. var defLinkClr;
  8889. if (linkID !== undefined) {
  8890. linkTooltip = getTextByPathList(node, ["a:rPr", "a:hlinkClick", "attrs", "tooltip"]);
  8891. if (linkTooltip !== undefined) {
  8892. linkTooltip = "title='" + linkTooltip + "'";
  8893. }
  8894. defLinkClr = getSchemeColorFromTheme("a:hlink", undefined, undefined, warpObj);
  8895. var linkClrNode = getTextByPathList(node, ["a:rPr", "a:solidFill"]);// getTextByPathList(node, ["a:rPr", "a:solidFill"]);
  8896. var rPrlinkClr = getSolidFill(linkClrNode, undefined, undefined, warpObj);
  8897. //console.log("genSpanElement defLinkClr: ", defLinkClr, "rPrlinkClr:", rPrlinkClr)
  8898. if (rPrlinkClr !== undefined && rPrlinkClr != "") {
  8899. defLinkClr = rPrlinkClr;
  8900. }
  8901. }
  8902. /////////////////////////////////////////////////////////////////////////////////////
  8903. //getFontColor
  8904. var fontClrPr = getFontColorPr(node, pNode, lstStyle, pFontStyle, lvl, idx, type, warpObj);
  8905. var fontClrType = fontClrPr[2];
  8906. //console.log("genSpanElement fontClrPr: ", fontClrPr, "linkID", linkID);
  8907. if (fontClrType == "solid") {
  8908. if (linkID === undefined && fontClrPr[0] !== undefined && fontClrPr[0] != "") {
  8909. styleText += "color: #" + fontClrPr[0] + ";";
  8910. }
  8911. else if (linkID !== undefined && defLinkClr !== undefined) {
  8912. styleText += "color: #" + defLinkClr + ";";
  8913. }
  8914. if (fontClrPr[1] !== undefined && fontClrPr[1] != "" && fontClrPr[1] != ";") {
  8915. styleText += "text-shadow:" + fontClrPr[1] + ";";
  8916. }
  8917. if (fontClrPr[3] !== undefined && fontClrPr[3] != "") {
  8918. styleText += "background-color: #" + fontClrPr[3] + ";";
  8919. }
  8920. } else if (fontClrType == "pattern" || fontClrType == "pic" || fontClrType == "gradient") {
  8921. if (fontClrType == "pattern") {
  8922. styleText += "background:" + fontClrPr[0][0] + ";";
  8923. if (fontClrPr[0][1] !== null && fontClrPr[0][1] !== undefined && fontClrPr[0][1] != "") {
  8924. styleText += "background-size:" + fontClrPr[0][1] + ";";//" 2px 2px;" +
  8925. }
  8926. if (fontClrPr[0][2] !== null && fontClrPr[0][2] !== undefined && fontClrPr[0][2] != "") {
  8927. styleText += "background-position:" + fontClrPr[0][2] + ";";//" 2px 2px;" +
  8928. }
  8929. // styleText += "-webkit-background-clip: text;" +
  8930. // "background-clip: text;" +
  8931. // "color: transparent;" +
  8932. // "-webkit-text-stroke: " + fontClrPr[1].border + ";" +
  8933. // "filter: " + fontClrPr[1].effcts + ";";
  8934. } else if (fontClrType == "pic") {
  8935. styleText += fontClrPr[0] + ";";
  8936. // styleText += "-webkit-background-clip: text;" +
  8937. // "background-clip: text;" +
  8938. // "color: transparent;" +
  8939. // "-webkit-text-stroke: " + fontClrPr[1].border + ";";
  8940. } else if (fontClrType == "gradient") {
  8941. var colorAry = fontClrPr[0].color;
  8942. var rot = fontClrPr[0].rot;
  8943. styleText += "background: linear-gradient(" + rot + "deg,";
  8944. for (var i = 0; i < colorAry.length; i++) {
  8945. if (i == colorAry.length - 1) {
  8946. styleText += "#" + colorAry[i] + ");";
  8947. } else {
  8948. styleText += "#" + colorAry[i] + ", ";
  8949. }
  8950. }
  8951. // styleText += "-webkit-background-clip: text;" +
  8952. // "background-clip: text;" +
  8953. // "color: transparent;" +
  8954. // "-webkit-text-stroke: " + fontClrPr[1].border + ";";
  8955. }
  8956. styleText += "-webkit-background-clip: text;" +
  8957. "background-clip: text;" +
  8958. "color: transparent;";
  8959. if (fontClrPr[1].border !== undefined && fontClrPr[1].border !== "") {
  8960. styleText += "-webkit-text-stroke: " + fontClrPr[1].border + ";";
  8961. }
  8962. if (fontClrPr[1].effcts !== undefined && fontClrPr[1].effcts !== "") {
  8963. styleText += "filter: " + fontClrPr[1].effcts + ";";
  8964. }
  8965. }
  8966. var font_size = getFontSize(node, textBodyNode, pFontStyle, lvl, type, warpObj);
  8967. //text_style += "font-size:" + font_size + ";"
  8968. text_style += "font-size:" + font_size + ";" +
  8969. // marLStr +
  8970. "font-family:" + getFontType(node, type, warpObj, pFontStyle) + ";" +
  8971. "font-weight:" + getFontBold(node, type, slideMasterTextStyles) + ";" +
  8972. "font-style:" + getFontItalic(node, type, slideMasterTextStyles) + ";" +
  8973. "text-decoration:" + getFontDecoration(node, type, slideMasterTextStyles) + ";" +
  8974. "text-align:" + getTextHorizontalAlign(node, pNode, type, warpObj) + ";" +
  8975. "vertical-align:" + getTextVerticalAlign(node, type, slideMasterTextStyles) + ";";
  8976. //rNodeLength
  8977. //console.log("genSpanElement node:", node, "lang:", lang, "isRtlLan:", isRtlLan, "span parent dir:", dirStr)
  8978. if (isRtlLan) { //|| rIndex === undefined
  8979. styleText += "direction:rtl;";
  8980. }else{ //|| rIndex === undefined
  8981. styleText += "direction:ltr;";
  8982. }
  8983. // } else if (dirStr == "rtl" && isRtlLan ) {
  8984. // styleText += "direction:rtl;";
  8985. // } else if (dirStr == "ltr" && !isRtlLan ) {
  8986. // styleText += "direction:ltr;";
  8987. // } else if (dirStr == "ltr" && isRtlLan){
  8988. // styleText += "direction:ltr;";
  8989. // }else{
  8990. // styleText += "direction:inherit;";
  8991. // }
  8992. // if (dirStr == "rtl" && !isRtlLan) { //|| rIndex === undefined
  8993. // styleText += "direction:ltr;";
  8994. // } else if (dirStr == "rtl" && isRtlLan) {
  8995. // styleText += "direction:rtl;";
  8996. // } else if (dirStr == "ltr" && !isRtlLan) {
  8997. // styleText += "direction:ltr;";
  8998. // } else if (dirStr == "ltr" && isRtlLan) {
  8999. // styleText += "direction:rtl;";
  9000. // } else {
  9001. // styleText += "direction:inherit;";
  9002. // }
  9003. // //"direction:" + dirStr + ";";
  9004. //if (rNodeLength == 1 || rIndex == 0 ){
  9005. //styleText += "display: table-cell;white-space: nowrap;";
  9006. //}
  9007. var highlight = getTextByPathList(node, ["a:rPr", "a:highlight"]);
  9008. if (highlight !== undefined) {
  9009. styleText += "background-color:#" + getSolidFill(highlight, undefined, undefined, warpObj) + ";";
  9010. //styleText += "Opacity:" + getColorOpacity(highlight) + ";";
  9011. }
  9012. //letter-spacing:
  9013. var spcNode = getTextByPathList(node, ["a:rPr", "attrs", "spc"]);
  9014. if (spcNode === undefined) {
  9015. spcNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "attrs", "spc"]);
  9016. if (spcNode === undefined) {
  9017. spcNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "attrs", "spc"]);
  9018. }
  9019. }
  9020. if (spcNode !== undefined) {
  9021. var ltrSpc = parseInt(spcNode) / 100; //pt
  9022. styleText += "letter-spacing: " + ltrSpc + "px;";// + "pt;";
  9023. }
  9024. //Text Cap Types
  9025. var capNode = getTextByPathList(node, ["a:rPr", "attrs", "cap"]);
  9026. if (capNode === undefined) {
  9027. capNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "attrs", "cap"]);
  9028. if (capNode === undefined) {
  9029. capNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "attrs", "cap"]);
  9030. }
  9031. }
  9032. if (capNode == "small" || capNode == "all") {
  9033. styleText += "text-transform: uppercase";
  9034. }
  9035. //styleText += "word-break: break-word;";
  9036. //console.log("genSpanElement node: ", node, ", capNode: ", capNode, ",pPrNodeLaout: ", pPrNodeLaout, ", pPrNodeMaster: ", pPrNodeMaster, "warpObj:", warpObj);
  9037. var cssName = "";
  9038. if (styleText in styleTable) {
  9039. cssName = styleTable[styleText]["name"];
  9040. } else {
  9041. cssName = "_css_" + (Object.keys(styleTable).length + 1);
  9042. styleTable[styleText] = {
  9043. "name": cssName,
  9044. "text": styleText
  9045. };
  9046. }
  9047. var linkColorSyle = "";
  9048. if (fontClrType == "solid" && linkID !== undefined) {
  9049. linkColorSyle = "style='color: inherit;'";
  9050. }
  9051. if (linkID !== undefined && linkID != "") {
  9052. var linkURL = warpObj["slideResObj"][linkID]["target"];
  9053. linkURL = escapeHtml(linkURL);
  9054. return openElemnt + " class='text-block " + cssName + "' style='" + text_style + "'><a href='" + linkURL + "' " + linkColorSyle + " " + linkTooltip + " target='_blank'>" +
  9055. text.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;').replace(/\s/g, "&nbsp;") + "</a>" + closeElemnt;
  9056. } else {
  9057. return openElemnt + " class='text-block " + cssName + "' style='" + text_style + "'>" + text.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;').replace(/\s/g, "&nbsp;") + closeElemnt;//"</bdi>";
  9058. }
  9059. }
  9060. function getPregraphMargn(pNode, idx, type, isBullate, warpObj){
  9061. if (!isBullate){
  9062. return ["",0];
  9063. }
  9064. var marLStr = "", marRStr = "" , maginVal = 0;
  9065. var pPrNode = pNode["a:pPr"];
  9066. var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj);
  9067. var pPrNodeLaout = layoutMasterNode.nodeLaout;
  9068. var pPrNodeMaster = layoutMasterNode.nodeMaster;
  9069. // var lang = getTextByPathList(node, ["a:rPr", "attrs", "lang"]);
  9070. // var isRtlLan = (lang !== undefined && rtl_langs_array.indexOf(lang) !== -1) ? true : false;
  9071. //rtl
  9072. var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]);
  9073. if (getRtlVal === undefined) {
  9074. getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]);
  9075. if (getRtlVal === undefined && type != "shape") {
  9076. getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]);
  9077. }
  9078. }
  9079. var isRTL = false;
  9080. var dirStr = "ltr";
  9081. if (getRtlVal !== undefined && getRtlVal == "1") {
  9082. isRTL = true;
  9083. dirStr = "rtl";
  9084. }
  9085. //align
  9086. var alignNode = getTextByPathList(pPrNode, ["attrs", "algn"]); //"l" | "ctr" | "r" | "just" | "justLow" | "dist" | "thaiDist
  9087. if (alignNode === undefined) {
  9088. alignNode = getTextByPathList(pPrNodeLaout, ["attrs", "algn"]);
  9089. if (alignNode === undefined) {
  9090. alignNode = getTextByPathList(pPrNodeMaster, ["attrs", "algn"]);
  9091. }
  9092. }
  9093. //indent?
  9094. var indentNode = getTextByPathList(pPrNode, ["attrs", "indent"]);
  9095. if (indentNode === undefined) {
  9096. indentNode = getTextByPathList(pPrNodeLaout, ["attrs", "indent"]);
  9097. if (indentNode === undefined) {
  9098. indentNode = getTextByPathList(pPrNodeMaster, ["attrs", "indent"]);
  9099. }
  9100. }
  9101. var indent = 0;
  9102. if (indentNode !== undefined) {
  9103. indent = parseInt(indentNode) * slideFactor;
  9104. }
  9105. //
  9106. //marL
  9107. var marLNode = getTextByPathList(pPrNode, ["attrs", "marL"]);
  9108. if (marLNode === undefined) {
  9109. marLNode = getTextByPathList(pPrNodeLaout, ["attrs", "marL"]);
  9110. if (marLNode === undefined) {
  9111. marLNode = getTextByPathList(pPrNodeMaster, ["attrs", "marL"]);
  9112. }
  9113. }
  9114. var marginLeft = 0;
  9115. if (marLNode !== undefined) {
  9116. marginLeft = parseInt(marLNode) * slideFactor;
  9117. }
  9118. if ((indentNode !== undefined || marLNode !== undefined)) {
  9119. //var lvlIndent = defTabSz * lvl;
  9120. if (isRTL) {// && alignNode == "r") {
  9121. //marLStr = "margin-right: ";
  9122. marLStr = "padding-right: ";
  9123. } else {
  9124. //marLStr = "margin-left: ";
  9125. marLStr = "padding-left: ";
  9126. }
  9127. if (isBullate) {
  9128. maginVal = Math.abs(0 - indent);
  9129. marLStr += maginVal + "px;"; // (minus bullate numeric lenght/size - TODO
  9130. } else {
  9131. maginVal = Math.abs(marginLeft + indent);
  9132. marLStr += maginVal + "px;"; // (minus bullate numeric lenght/size - TODO
  9133. }
  9134. }
  9135. //marR?
  9136. var marRNode = getTextByPathList(pPrNode, ["attrs", "marR"]);
  9137. if (marRNode === undefined && marLNode === undefined) {
  9138. //need to check if this posble - TODO
  9139. marRNode = getTextByPathList(pPrNodeLaout, ["attrs", "marR"]);
  9140. if (marRNode === undefined) {
  9141. marRNode = getTextByPathList(pPrNodeMaster, ["attrs", "marR"]);
  9142. }
  9143. }
  9144. if (marRNode !== undefined && isBullate) {
  9145. var marginRight = parseInt(marRNode) * slideFactor;
  9146. if (isRTL) {// && alignNode == "r") {
  9147. //marRStr = "margin-right: ";
  9148. marRStr = "padding-right: ";
  9149. } else {
  9150. //marRStr = "margin-left: ";
  9151. marRStr = "padding-left: ";
  9152. }
  9153. marRStr += Math.abs(0 - indent) + "px;";
  9154. }
  9155. return [marLStr, maginVal];
  9156. }
  9157. function genGlobalCSS() {
  9158. var cssText = "";
  9159. //console.log("styleTable: ", styleTable)
  9160. for (var key in styleTable) {
  9161. var tagname = "";
  9162. // if (settings.slideMode && settings.slideType == "revealjs") {
  9163. // tagname = "section";
  9164. // } else {
  9165. // tagname = "div";
  9166. // }
  9167. //ADD suffix
  9168. cssText += tagname + " ." + styleTable[key]["name"] +
  9169. ((styleTable[key]["suffix"]) ? styleTable[key]["suffix"] : "") +
  9170. "{" + styleTable[key]["text"] + "}\n"; //section > div
  9171. }
  9172. //cssText += " .slide{margin-bottom: 5px;}\n"; // TODO
  9173. if (settings.slideMode && settings.slideType == "divs2slidesjs") {
  9174. //divId
  9175. //console.log("slideWidth: ", slideWidth)
  9176. cssText += "#all_slides_warpper{margin-right: auto;margin-left: auto;padding-top:10px;width: " + slideWidth + "px;}\n"; // TODO
  9177. }
  9178. return cssText;
  9179. }
  9180. function genTable(node, warpObj) {
  9181. var order = node["attrs"]["order"];
  9182. var tableNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl"]);
  9183. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  9184. /////////////////////////////////////////Amir////////////////////////////////////////////////
  9185. var getTblPr = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblPr"]);
  9186. var getColsGrid = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblGrid", "a:gridCol"]);
  9187. var tblDir = "";
  9188. if (getTblPr !== undefined) {
  9189. var isRTL = getTblPr["attrs"]["rtl"];
  9190. tblDir = (isRTL == 1 ? "dir=rtl" : "dir=ltr");
  9191. }
  9192. var firstRowAttr = getTblPr["attrs"]["firstRow"]; //associated element <a:firstRow> in the table styles
  9193. var firstColAttr = getTblPr["attrs"]["firstCol"]; //associated element <a:firstCol> in the table styles
  9194. var lastRowAttr = getTblPr["attrs"]["lastRow"]; //associated element <a:lastRow> in the table styles
  9195. var lastColAttr = getTblPr["attrs"]["lastCol"]; //associated element <a:lastCol> in the table styles
  9196. var bandRowAttr = getTblPr["attrs"]["bandRow"]; //associated element <a:band1H>, <a:band2H> in the table styles
  9197. var bandColAttr = getTblPr["attrs"]["bandCol"]; //associated element <a:band1V>, <a:band2V> in the table styles
  9198. //console.log("getTblPr: ", getTblPr);
  9199. var tblStylAttrObj = {
  9200. isFrstRowAttr: (firstRowAttr !== undefined && firstRowAttr == "1") ? 1 : 0,
  9201. isFrstColAttr: (firstColAttr !== undefined && firstColAttr == "1") ? 1 : 0,
  9202. isLstRowAttr: (lastRowAttr !== undefined && lastRowAttr == "1") ? 1 : 0,
  9203. isLstColAttr: (lastColAttr !== undefined && lastColAttr == "1") ? 1 : 0,
  9204. isBandRowAttr: (bandRowAttr !== undefined && bandRowAttr == "1") ? 1 : 0,
  9205. isBandColAttr: (bandColAttr !== undefined && bandColAttr == "1") ? 1 : 0
  9206. }
  9207. var thisTblStyle;
  9208. var tbleStyleId = getTblPr["a:tableStyleId"];
  9209. if (tbleStyleId !== undefined) {
  9210. var tbleStylList = tableStyles["a:tblStyleLst"]["a:tblStyle"];
  9211. if (tbleStylList !== undefined) {
  9212. if (tbleStylList.constructor === Array) {
  9213. for (var k = 0; k < tbleStylList.length; k++) {
  9214. if (tbleStylList[k]["attrs"]["styleId"] == tbleStyleId) {
  9215. thisTblStyle = tbleStylList[k];
  9216. }
  9217. }
  9218. } else {
  9219. if (tbleStylList["attrs"]["styleId"] == tbleStyleId) {
  9220. thisTblStyle = tbleStylList;
  9221. }
  9222. }
  9223. }
  9224. }
  9225. if (thisTblStyle !== undefined) {
  9226. thisTblStyle["tblStylAttrObj"] = tblStylAttrObj;
  9227. warpObj["thisTbiStyle"] = thisTblStyle;
  9228. }
  9229. var tblStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle"]);
  9230. var tblBorderStyl = getTextByPathList(tblStyl, ["a:tcBdr"]);
  9231. var tbl_borders = "";
  9232. if (tblBorderStyl !== undefined) {
  9233. tbl_borders = getTableBorders(tblBorderStyl, warpObj);
  9234. }
  9235. var tbl_bgcolor = "";
  9236. var tbl_opacity = 1;
  9237. var tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:tblBg", "a:fillRef"]);
  9238. //console.log( "thisTblStyle:", thisTblStyle, "warpObj:", warpObj)
  9239. if (tbl_bgFillschemeClr !== undefined) {
  9240. tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj);
  9241. }
  9242. if (tbl_bgFillschemeClr === undefined) {
  9243. tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:fill", "a:solidFill"]);
  9244. tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj);
  9245. }
  9246. if (tbl_bgcolor !== "") {
  9247. tbl_bgcolor = "background-color: #" + tbl_bgcolor + ";";
  9248. }
  9249. ////////////////////////////////////////////////////////////////////////////////////////////
  9250. var tableHtml = "<table " + tblDir + " style='border-collapse: collapse;" +
  9251. getPosition(xfrmNode, node, undefined, undefined) +
  9252. getSize(xfrmNode, undefined, undefined) +
  9253. " z-index: " + order + ";" +
  9254. tbl_borders + ";" +
  9255. tbl_bgcolor + "'>";
  9256. var trNodes = tableNode["a:tr"];
  9257. if (trNodes.constructor !== Array) {
  9258. trNodes = [trNodes];
  9259. }
  9260. //if (trNodes.constructor === Array) {
  9261. //multi rows
  9262. var totalrowSpan = 0;
  9263. var rowSpanAry = [];
  9264. for (var i = 0; i < trNodes.length; i++) {
  9265. //////////////rows Style ////////////Amir
  9266. var rowHeightParam = trNodes[i]["attrs"]["h"];
  9267. var rowHeight = 0;
  9268. var rowsStyl = "";
  9269. if (rowHeightParam !== undefined) {
  9270. rowHeight = parseInt(rowHeightParam) * slideFactor;
  9271. rowsStyl += "height:" + rowHeight + "px;";
  9272. }
  9273. var fillColor = "";
  9274. var row_borders = "";
  9275. var fontClrPr = "";
  9276. var fontWeight = "";
  9277. var band_1H_fillColor;
  9278. var band_2H_fillColor;
  9279. if (thisTblStyle !== undefined && thisTblStyle["a:wholeTbl"] !== undefined) {
  9280. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:fill", "a:solidFill"]);
  9281. if (bgFillschemeClr !== undefined) {
  9282. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9283. if (local_fillColor !== undefined) {
  9284. fillColor = local_fillColor;
  9285. }
  9286. }
  9287. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcTxStyle"]);
  9288. if (rowTxtStyl !== undefined) {
  9289. var local_fontColor = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9290. if (local_fontColor !== undefined) {
  9291. fontClrPr = local_fontColor;
  9292. }
  9293. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9294. if (local_fontWeight != "") {
  9295. fontWeight = local_fontWeight
  9296. }
  9297. }
  9298. }
  9299. if (i == 0 && tblStylAttrObj["isFrstRowAttr"] == 1 && thisTblStyle !== undefined) {
  9300. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:fill", "a:solidFill"]);
  9301. if (bgFillschemeClr !== undefined) {
  9302. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9303. if (local_fillColor !== undefined) {
  9304. fillColor = local_fillColor;
  9305. }
  9306. }
  9307. var borderStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:tcBdr"]);
  9308. if (borderStyl !== undefined) {
  9309. var local_row_borders = getTableBorders(borderStyl, warpObj);
  9310. if (local_row_borders != "") {
  9311. row_borders = local_row_borders;
  9312. }
  9313. }
  9314. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcTxStyle"]);
  9315. if (rowTxtStyl !== undefined) {
  9316. var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9317. if (local_fontClrPr !== undefined) {
  9318. fontClrPr = local_fontClrPr;
  9319. }
  9320. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9321. if (local_fontWeight !== "") {
  9322. fontWeight = local_fontWeight;
  9323. }
  9324. }
  9325. } else if (i > 0 && tblStylAttrObj["isBandRowAttr"] == 1 && thisTblStyle !== undefined) {
  9326. fillColor = "";
  9327. row_borders = undefined;
  9328. if ((i % 2) == 0 && thisTblStyle["a:band2H"] !== undefined) {
  9329. // console.log("i: ", i, 'thisTblStyle["a:band2H"]:', thisTblStyle["a:band2H"])
  9330. //check if there is a row bg
  9331. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:fill", "a:solidFill"]);
  9332. if (bgFillschemeClr !== undefined) {
  9333. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9334. if (local_fillColor !== "") {
  9335. fillColor = local_fillColor;
  9336. band_2H_fillColor = local_fillColor;
  9337. }
  9338. }
  9339. var borderStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:tcBdr"]);
  9340. if (borderStyl !== undefined) {
  9341. var local_row_borders = getTableBorders(borderStyl, warpObj);
  9342. if (local_row_borders != "") {
  9343. row_borders = local_row_borders;
  9344. }
  9345. }
  9346. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcTxStyle"]);
  9347. if (rowTxtStyl !== undefined) {
  9348. var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9349. if (local_fontClrPr !== undefined) {
  9350. fontClrPr = local_fontClrPr;
  9351. }
  9352. }
  9353. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9354. if (local_fontWeight !== "") {
  9355. fontWeight = local_fontWeight;
  9356. }
  9357. }
  9358. if ((i % 2) != 0 && thisTblStyle["a:band1H"] !== undefined) {
  9359. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:fill", "a:solidFill"]);
  9360. if (bgFillschemeClr !== undefined) {
  9361. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9362. if (local_fillColor !== undefined) {
  9363. fillColor = local_fillColor;
  9364. band_1H_fillColor = local_fillColor;
  9365. }
  9366. }
  9367. var borderStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:tcBdr"]);
  9368. if (borderStyl !== undefined) {
  9369. var local_row_borders = getTableBorders(borderStyl, warpObj);
  9370. if (local_row_borders != "") {
  9371. row_borders = local_row_borders;
  9372. }
  9373. }
  9374. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcTxStyle"]);
  9375. if (rowTxtStyl !== undefined) {
  9376. var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9377. if (local_fontClrPr !== undefined) {
  9378. fontClrPr = local_fontClrPr;
  9379. }
  9380. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9381. if (local_fontWeight != "") {
  9382. fontWeight = local_fontWeight;
  9383. }
  9384. }
  9385. }
  9386. }
  9387. //last row
  9388. if (i == (trNodes.length - 1) && tblStylAttrObj["isLstRowAttr"] == 1 && thisTblStyle !== undefined) {
  9389. var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcStyle", "a:fill", "a:solidFill"]);
  9390. if (bgFillschemeClr !== undefined) {
  9391. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9392. if (local_fillColor !== undefined) {
  9393. fillColor = local_fillColor;
  9394. }
  9395. // var local_colorOpacity = getColorOpacity(bgFillschemeClr);
  9396. // if(local_colorOpacity !== undefined){
  9397. // colorOpacity = local_colorOpacity;
  9398. // }
  9399. }
  9400. var borderStyl = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcStyle", "a:tcBdr"]);
  9401. if (borderStyl !== undefined) {
  9402. var local_row_borders = getTableBorders(borderStyl, warpObj);
  9403. if (local_row_borders != "") {
  9404. row_borders = local_row_borders;
  9405. }
  9406. }
  9407. var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcTxStyle"]);
  9408. if (rowTxtStyl !== undefined) {
  9409. var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9410. if (local_fontClrPr !== undefined) {
  9411. fontClrPr = local_fontClrPr;
  9412. }
  9413. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9414. if (local_fontWeight !== "") {
  9415. fontWeight = local_fontWeight;
  9416. }
  9417. }
  9418. }
  9419. rowsStyl += ((row_borders !== undefined) ? row_borders : "");
  9420. rowsStyl += ((fontClrPr !== undefined) ? " color: #" + fontClrPr + ";" : "");
  9421. rowsStyl += ((fontWeight != "") ? " font-weight:" + fontWeight + ";" : "");
  9422. if (fillColor !== undefined && fillColor != "") {
  9423. //rowsStyl += "background-color: rgba(" + hexToRgbNew(fillColor) + "," + colorOpacity + ");";
  9424. rowsStyl += "background-color: #" + fillColor + ";";
  9425. }
  9426. tableHtml += "<tr style='" + rowsStyl + "'>";
  9427. ////////////////////////////////////////////////
  9428. var tcNodes = trNodes[i]["a:tc"];
  9429. if (tcNodes !== undefined) {
  9430. if (tcNodes.constructor === Array) {
  9431. //multi columns
  9432. var j = 0;
  9433. if (rowSpanAry.length == 0) {
  9434. rowSpanAry = Array.apply(null, Array(tcNodes.length)).map(function () { return 0 });
  9435. }
  9436. var totalColSpan = 0;
  9437. while (j < tcNodes.length) {
  9438. if (rowSpanAry[j] == 0 && totalColSpan == 0) {
  9439. var a_sorce;
  9440. //j=0 : first col
  9441. if (j == 0 && tblStylAttrObj["isFrstColAttr"] == 1) {
  9442. a_sorce = "a:firstCol";
  9443. if (tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1) &&
  9444. getTextByPathList(thisTblStyle, ["a:seCell"]) !== undefined) {
  9445. a_sorce = "a:seCell";
  9446. } else if (tblStylAttrObj["isFrstRowAttr"] == 1 && i == 0 &&
  9447. getTextByPathList(thisTblStyle, ["a:neCell"]) !== undefined) {
  9448. a_sorce = "a:neCell";
  9449. }
  9450. } else if ((j > 0 && tblStylAttrObj["isBandColAttr"] == 1) &&
  9451. !(tblStylAttrObj["isFrstColAttr"] == 1 && i == 0) &&
  9452. !(tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1)) &&
  9453. j != (tcNodes.length - 1)) {
  9454. if ((j % 2) != 0) {
  9455. var aBandNode = getTextByPathList(thisTblStyle, ["a:band2V"]);
  9456. if (aBandNode === undefined) {
  9457. aBandNode = getTextByPathList(thisTblStyle, ["a:band1V"]);
  9458. if (aBandNode !== undefined) {
  9459. a_sorce = "a:band2V";
  9460. }
  9461. } else {
  9462. a_sorce = "a:band2V";
  9463. }
  9464. }
  9465. }
  9466. if (j == (tcNodes.length - 1) && tblStylAttrObj["isLstColAttr"] == 1) {
  9467. a_sorce = "a:lastCol";
  9468. if (tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1) && getTextByPathList(thisTblStyle, ["a:swCell"]) !== undefined) {
  9469. a_sorce = "a:swCell";
  9470. } else if (tblStylAttrObj["isFrstRowAttr"] == 1 && i == 0 && getTextByPathList(thisTblStyle, ["a:nwCell"]) !== undefined) {
  9471. a_sorce = "a:nwCell";
  9472. }
  9473. }
  9474. var cellParmAry = getTableCellParams(tcNodes[j], getColsGrid, i , j , thisTblStyle, a_sorce, warpObj)
  9475. var text = cellParmAry[0];
  9476. var colStyl = cellParmAry[1];
  9477. var cssName = cellParmAry[2];
  9478. var rowSpan = cellParmAry[3];
  9479. var colSpan = cellParmAry[4];
  9480. if (rowSpan !== undefined) {
  9481. totalrowSpan++;
  9482. rowSpanAry[j] = parseInt(rowSpan) - 1;
  9483. tableHtml += "<td class='" + cssName + "' data-row='" + i + "," + j + "' rowspan ='" +
  9484. parseInt(rowSpan) + "' style='" + colStyl + "'>" + text + "</td>";
  9485. } else if (colSpan !== undefined) {
  9486. tableHtml += "<td class='" + cssName + "' data-row='" + i + "," + j + "' colspan = '" +
  9487. parseInt(colSpan) + "' style='" + colStyl + "'>" + text + "</td>";
  9488. totalColSpan = parseInt(colSpan) - 1;
  9489. } else {
  9490. tableHtml += "<td class='" + cssName + "' data-row='" + i + "," + j + "' style = '" + colStyl + "'>" + text + "</td>";
  9491. }
  9492. } else {
  9493. if (rowSpanAry[j] != 0) {
  9494. rowSpanAry[j] -= 1;
  9495. }
  9496. if (totalColSpan != 0) {
  9497. totalColSpan--;
  9498. }
  9499. }
  9500. j++;
  9501. }
  9502. } else {
  9503. //single column
  9504. var a_sorce;
  9505. if (tblStylAttrObj["isFrstColAttr"] == 1 && !(tblStylAttrObj["isLstRowAttr"] == 1)) {
  9506. a_sorce = "a:firstCol";
  9507. } else if ((tblStylAttrObj["isBandColAttr"] == 1) && !(tblStylAttrObj["isLstRowAttr"] == 1)) {
  9508. var aBandNode = getTextByPathList(thisTblStyle, ["a:band2V"]);
  9509. if (aBandNode === undefined) {
  9510. aBandNode = getTextByPathList(thisTblStyle, ["a:band1V"]);
  9511. if (aBandNode !== undefined) {
  9512. a_sorce = "a:band2V";
  9513. }
  9514. } else {
  9515. a_sorce = "a:band2V";
  9516. }
  9517. }
  9518. if (tblStylAttrObj["isLstColAttr"] == 1 && !(tblStylAttrObj["isLstRowAttr"] == 1)) {
  9519. a_sorce = "a:lastCol";
  9520. }
  9521. var cellParmAry = getTableCellParams(tcNodes, getColsGrid , i , undefined , thisTblStyle, a_sorce, warpObj)
  9522. var text = cellParmAry[0];
  9523. var colStyl = cellParmAry[1];
  9524. var cssName = cellParmAry[2];
  9525. var rowSpan = cellParmAry[3];
  9526. if (rowSpan !== undefined) {
  9527. tableHtml += "<td class='" + cssName + "' rowspan='" + parseInt(rowSpan) + "' style = '" + colStyl + "'>" + text + "</td>";
  9528. } else {
  9529. tableHtml += "<td class='" + cssName + "' style='" + colStyl + "'>" + text + "</td>";
  9530. }
  9531. }
  9532. }
  9533. tableHtml += "</tr>";
  9534. }
  9535. //////////////////////////////////////////////////////////////////////////////////
  9536. return tableHtml;
  9537. }
  9538. function getTableCellParams(tcNodes, getColsGrid , row_idx , col_idx , thisTblStyle, cellSource, warpObj) {
  9539. //thisTblStyle["a:band1V"] => thisTblStyle[cellSource]
  9540. //text, cell-width, cell-borders,
  9541. //var text = genTextBody(tcNodes["a:txBody"], tcNodes, undefined, undefined, undefined, undefined, warpObj);//tableStyles
  9542. var rowSpan = getTextByPathList(tcNodes, ["attrs", "rowSpan"]);
  9543. var colSpan = getTextByPathList(tcNodes, ["attrs", "gridSpan"]);
  9544. var vMerge = getTextByPathList(tcNodes, ["attrs", "vMerge"]);
  9545. var hMerge = getTextByPathList(tcNodes, ["attrs", "hMerge"]);
  9546. var colStyl = "word-wrap: break-word;";
  9547. var colWidth;
  9548. var celFillColor = "";
  9549. var col_borders = "";
  9550. var colFontClrPr = "";
  9551. var colFontWeight = "";
  9552. var lin_bottm = "",
  9553. lin_top = "",
  9554. lin_left = "",
  9555. lin_right = "",
  9556. lin_bottom_left_to_top_right = "",
  9557. lin_top_left_to_bottom_right = "";
  9558. var colSapnInt = parseInt(colSpan);
  9559. var total_col_width = 0;
  9560. if (!isNaN(colSapnInt) && colSapnInt > 1){
  9561. for (var k = 0; k < colSapnInt ; k++) {
  9562. total_col_width += parseInt(getTextByPathList(getColsGrid[col_idx + k], ["attrs", "w"]));
  9563. }
  9564. }else{
  9565. total_col_width = getTextByPathList((col_idx === undefined) ? getColsGrid : getColsGrid[col_idx], ["attrs", "w"]);
  9566. }
  9567. var text = genTextBody(tcNodes["a:txBody"], tcNodes, undefined, undefined, undefined, undefined, warpObj, total_col_width);//tableStyles
  9568. if (total_col_width != 0 /*&& row_idx == 0*/) {
  9569. colWidth = parseInt(total_col_width) * slideFactor;
  9570. colStyl += "width:" + colWidth + "px;";
  9571. }
  9572. //cell bords
  9573. lin_bottm = getTextByPathList(tcNodes, ["a:tcPr", "a:lnB"]);
  9574. if (lin_bottm === undefined && cellSource !== undefined) {
  9575. if (cellSource !== undefined)
  9576. lin_bottm = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:bottom", "a:ln"]);
  9577. if (lin_bottm === undefined) {
  9578. lin_bottm = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:bottom", "a:ln"]);
  9579. }
  9580. }
  9581. lin_top = getTextByPathList(tcNodes, ["a:tcPr", "a:lnT"]);
  9582. if (lin_top === undefined) {
  9583. if (cellSource !== undefined)
  9584. lin_top = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:top", "a:ln"]);
  9585. if (lin_top === undefined) {
  9586. lin_top = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:top", "a:ln"]);
  9587. }
  9588. }
  9589. lin_left = getTextByPathList(tcNodes, ["a:tcPr", "a:lnL"]);
  9590. if (lin_left === undefined) {
  9591. if (cellSource !== undefined)
  9592. lin_left = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:left", "a:ln"]);
  9593. if (lin_left === undefined) {
  9594. lin_left = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:left", "a:ln"]);
  9595. }
  9596. }
  9597. lin_right = getTextByPathList(tcNodes, ["a:tcPr", "a:lnR"]);
  9598. if (lin_right === undefined) {
  9599. if (cellSource !== undefined)
  9600. lin_right = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:right", "a:ln"]);
  9601. if (lin_right === undefined) {
  9602. lin_right = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:right", "a:ln"]);
  9603. }
  9604. }
  9605. lin_bottom_left_to_top_right = getTextByPathList(tcNodes, ["a:tcPr", "a:lnBlToTr"]);
  9606. lin_top_left_to_bottom_right = getTextByPathList(tcNodes, ["a:tcPr", "a:InTlToBr"]);
  9607. if (lin_bottm !== undefined && lin_bottm != "") {
  9608. var bottom_line_border = getBorder(lin_bottm, undefined, false, "", warpObj)
  9609. if (bottom_line_border != "") {
  9610. colStyl += "border-bottom:" + bottom_line_border + ";";
  9611. }
  9612. }
  9613. if (lin_top !== undefined && lin_top != "") {
  9614. var top_line_border = getBorder(lin_top, undefined, false, "", warpObj);
  9615. if (top_line_border != "") {
  9616. colStyl += "border-top: " + top_line_border + ";";
  9617. }
  9618. }
  9619. if (lin_left !== undefined && lin_left != "") {
  9620. var left_line_border = getBorder(lin_left, undefined, false, "", warpObj)
  9621. if (left_line_border != "") {
  9622. colStyl += "border-left: " + left_line_border + ";";
  9623. }
  9624. }
  9625. if (lin_right !== undefined && lin_right != "") {
  9626. var right_line_border = getBorder(lin_right, undefined, false, "", warpObj)
  9627. if (right_line_border != "") {
  9628. colStyl += "border-right:" + right_line_border + ";";
  9629. }
  9630. }
  9631. //cell fill color custom
  9632. var getCelFill = getTextByPathList(tcNodes, ["a:tcPr"]);
  9633. if (getCelFill !== undefined && getCelFill != "") {
  9634. var cellObj = {
  9635. "p:spPr": getCelFill
  9636. };
  9637. celFillColor = getShapeFill(cellObj, undefined, false, warpObj, "slide")
  9638. }
  9639. //cell fill color theme
  9640. if (celFillColor == "" || celFillColor == "background-color: inherit;") {
  9641. var bgFillschemeClr;
  9642. if (cellSource !== undefined)
  9643. bgFillschemeClr = getTextByPathList(thisTblStyle, [cellSource, "a:tcStyle", "a:fill", "a:solidFill"]);
  9644. if (bgFillschemeClr !== undefined) {
  9645. var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj);
  9646. if (local_fillColor !== undefined) {
  9647. celFillColor = " background-color: #" + local_fillColor + ";";
  9648. }
  9649. }
  9650. }
  9651. var cssName = "";
  9652. if (celFillColor !== undefined && celFillColor != "") {
  9653. if (celFillColor in styleTable) {
  9654. cssName = styleTable[celFillColor]["name"];
  9655. } else {
  9656. cssName = "_tbl_cell_css_" + (Object.keys(styleTable).length + 1);
  9657. styleTable[celFillColor] = {
  9658. "name": cssName,
  9659. "text": celFillColor
  9660. };
  9661. }
  9662. }
  9663. //border
  9664. // var borderStyl = getTextByPathList(thisTblStyle, [cellSource, "a:tcStyle", "a:tcBdr"]);
  9665. // if (borderStyl !== undefined) {
  9666. // var local_col_borders = getTableBorders(borderStyl, warpObj);
  9667. // if (local_col_borders != "") {
  9668. // col_borders = local_col_borders;
  9669. // }
  9670. // }
  9671. // if (col_borders != "") {
  9672. // colStyl += col_borders;
  9673. // }
  9674. //Text style
  9675. var rowTxtStyl;
  9676. if (cellSource !== undefined) {
  9677. rowTxtStyl = getTextByPathList(thisTblStyle, [cellSource, "a:tcTxStyle"]);
  9678. }
  9679. // if (rowTxtStyl === undefined) {
  9680. // rowTxtStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcTxStyle"]);
  9681. // }
  9682. if (rowTxtStyl !== undefined) {
  9683. var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj);
  9684. if (local_fontClrPr !== undefined) {
  9685. colFontClrPr = local_fontClrPr;
  9686. }
  9687. var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : "");
  9688. if (local_fontWeight !== "") {
  9689. colFontWeight = local_fontWeight;
  9690. }
  9691. }
  9692. colStyl += ((colFontClrPr !== "") ? "color: #" + colFontClrPr + ";" : "");
  9693. colStyl += ((colFontWeight != "") ? " font-weight:" + colFontWeight + ";" : "");
  9694. return [text, colStyl, cssName, rowSpan, colSpan];
  9695. }
  9696. function genChart(node, warpObj) {
  9697. var order = node["attrs"]["order"];
  9698. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  9699. var result = "<div id='chart" + chartID + "' class='block content' style='" +
  9700. getPosition(xfrmNode, node, undefined, undefined) + getSize(xfrmNode, undefined, undefined) +
  9701. " z-index: " + order + ";'></div>";
  9702. var rid = node["a:graphic"]["a:graphicData"]["c:chart"]["attrs"]["r:id"];
  9703. var refName = warpObj["slideResObj"][rid]["target"];
  9704. var content = readXmlFile(warpObj["zip"], refName);
  9705. var plotArea = getTextByPathList(content, ["c:chartSpace", "c:chart", "c:plotArea"]);
  9706. var chartData = null;
  9707. for (var key in plotArea) {
  9708. switch (key) {
  9709. case "c:lineChart":
  9710. chartData = {
  9711. "type": "createChart",
  9712. "data": {
  9713. "chartID": "chart" + chartID,
  9714. "chartType": "lineChart",
  9715. "chartData": extractChartData(plotArea[key]["c:ser"])
  9716. }
  9717. };
  9718. break;
  9719. case "c:barChart":
  9720. chartData = {
  9721. "type": "createChart",
  9722. "data": {
  9723. "chartID": "chart" + chartID,
  9724. "chartType": "barChart",
  9725. "chartData": extractChartData(plotArea[key]["c:ser"])
  9726. }
  9727. };
  9728. break;
  9729. case "c:pieChart":
  9730. chartData = {
  9731. "type": "createChart",
  9732. "data": {
  9733. "chartID": "chart" + chartID,
  9734. "chartType": "pieChart",
  9735. "chartData": extractChartData(plotArea[key]["c:ser"])
  9736. }
  9737. };
  9738. break;
  9739. case "c:pie3DChart":
  9740. chartData = {
  9741. "type": "createChart",
  9742. "data": {
  9743. "chartID": "chart" + chartID,
  9744. "chartType": "pie3DChart",
  9745. "chartData": extractChartData(plotArea[key]["c:ser"])
  9746. }
  9747. };
  9748. break;
  9749. case "c:areaChart":
  9750. chartData = {
  9751. "type": "createChart",
  9752. "data": {
  9753. "chartID": "chart" + chartID,
  9754. "chartType": "areaChart",
  9755. "chartData": extractChartData(plotArea[key]["c:ser"])
  9756. }
  9757. };
  9758. break;
  9759. case "c:scatterChart":
  9760. chartData = {
  9761. "type": "createChart",
  9762. "data": {
  9763. "chartID": "chart" + chartID,
  9764. "chartType": "scatterChart",
  9765. "chartData": extractChartData(plotArea[key]["c:ser"])
  9766. }
  9767. };
  9768. break;
  9769. case "c:catAx":
  9770. break;
  9771. case "c:valAx":
  9772. break;
  9773. default:
  9774. }
  9775. }
  9776. if (chartData !== null) {
  9777. MsgQueue.push(chartData);
  9778. }
  9779. chartID++;
  9780. return result;
  9781. }
  9782. function genDiagram(node, warpObj, source, sType) {
  9783. //console.log(warpObj)
  9784. //readXmlFile(zip, sldFileName)
  9785. /**files define the diagram:
  9786. * 1-colors#.xml,
  9787. * 2-data#.xml,
  9788. * 3-layout#.xml,
  9789. * 4-quickStyle#.xml.
  9790. * 5-drawing#.xml, which Microsoft added as an extension for persisting diagram layout information.
  9791. */
  9792. ///get colors#.xml, data#.xml , layout#.xml , quickStyle#.xml
  9793. var order = node["attrs"]["order"];
  9794. var zip = warpObj["zip"];
  9795. var xfrmNode = getTextByPathList(node, ["p:xfrm"]);
  9796. var dgmRelIds = getTextByPathList(node, ["a:graphic", "a:graphicData", "dgm:relIds", "attrs"]);
  9797. //console.log(dgmRelIds)
  9798. var dgmClrFileId = dgmRelIds["r:cs"];
  9799. var dgmDataFileId = dgmRelIds["r:dm"];
  9800. var dgmLayoutFileId = dgmRelIds["r:lo"];
  9801. var dgmQuickStyleFileId = dgmRelIds["r:qs"];
  9802. var dgmClrFileName = warpObj["slideResObj"][dgmClrFileId].target,
  9803. dgmDataFileName = warpObj["slideResObj"][dgmDataFileId].target,
  9804. dgmLayoutFileName = warpObj["slideResObj"][dgmLayoutFileId].target;
  9805. dgmQuickStyleFileName = warpObj["slideResObj"][dgmQuickStyleFileId].target;
  9806. //console.log("dgmClrFileName: " , dgmClrFileName,", dgmDataFileName: ",dgmDataFileName,", dgmLayoutFileName: ",dgmLayoutFileName,", dgmQuickStyleFileName: ",dgmQuickStyleFileName);
  9807. var dgmClr = readXmlFile(zip, dgmClrFileName);
  9808. var dgmData = readXmlFile(zip, dgmDataFileName);
  9809. var dgmLayout = readXmlFile(zip, dgmLayoutFileName);
  9810. var dgmQuickStyle = readXmlFile(zip, dgmQuickStyleFileName);
  9811. //console.log(dgmClr,dgmData,dgmLayout,dgmQuickStyle)
  9812. ///get drawing#.xml
  9813. // var dgmDrwFileName = "";
  9814. // var dataModelExt = getTextByPathList(dgmData, ["dgm:dataModel", "dgm:extLst", "a:ext", "dsp:dataModelExt", "attrs"]);
  9815. // if (dataModelExt !== undefined) {
  9816. // var dgmDrwFileId = dataModelExt["relId"];
  9817. // dgmDrwFileName = warpObj["slideResObj"][dgmDrwFileId]["target"];
  9818. // }
  9819. // var dgmDrwFile = "";
  9820. // if (dgmDrwFileName != "") {
  9821. // dgmDrwFile = readXmlFile(zip, dgmDrwFileName);
  9822. // }
  9823. // var dgmDrwSpArray = getTextByPathList(dgmDrwFile, ["dsp:drawing", "dsp:spTree", "dsp:sp"]);
  9824. //var dgmDrwSpArray = getTextByPathList(warpObj["digramFileContent"], ["dsp:drawing", "dsp:spTree", "dsp:sp"]);
  9825. var dgmDrwSpArray = getTextByPathList(warpObj["digramFileContent"], ["p:drawing", "p:spTree", "p:sp"]);
  9826. var rslt = "";
  9827. if (dgmDrwSpArray !== undefined) {
  9828. var dgmDrwSpArrayLen = dgmDrwSpArray.length;
  9829. for (var i = 0; i < dgmDrwSpArrayLen; i++) {
  9830. var dspSp = dgmDrwSpArray[i];
  9831. // var dspSpObjToStr = JSON.stringify(dspSp);
  9832. // var pSpStr = dspSpObjToStr.replace(/dsp:/g, "p:");
  9833. // var pSpStrToObj = JSON.parse(pSpStr);
  9834. //console.log("pSpStrToObj[" + i + "]: ", pSpStrToObj);
  9835. //rslt += processSpNode(pSpStrToObj, node, warpObj, "diagramBg", sType)
  9836. rslt += processSpNode(dspSp, node, warpObj, "diagramBg", sType)
  9837. }
  9838. // dgmDrwFile: "dsp:"-> "p:"
  9839. }
  9840. return "<div class='block diagram-content' style='" +
  9841. getPosition(xfrmNode, node, undefined, undefined, sType) +
  9842. getSize(xfrmNode, undefined, undefined) +
  9843. "'>" + rslt + "</div>";
  9844. }
  9845. function getPosition(slideSpNode, pNode, slideLayoutSpNode, slideMasterSpNode, sType) {
  9846. var off;
  9847. var x = -1, y = -1;
  9848. if (slideSpNode !== undefined) {
  9849. off = slideSpNode["a:off"]["attrs"];
  9850. }
  9851. if (off === undefined && slideLayoutSpNode !== undefined) {
  9852. off = slideLayoutSpNode["a:off"]["attrs"];
  9853. } else if (off === undefined && slideMasterSpNode !== undefined) {
  9854. off = slideMasterSpNode["a:off"]["attrs"];
  9855. }
  9856. var offX = 0, offY = 0;
  9857. var grpX = 0, grpY = 0;
  9858. if (sType == "group") {
  9859. var grpXfrmNode = getTextByPathList(pNode, ["p:grpSpPr", "a:xfrm"]);
  9860. if (xfrmNode !== undefined) {
  9861. grpX = parseInt(grpXfrmNode["a:off"]["attrs"]["x"]) * slideFactor;
  9862. grpY = parseInt(grpXfrmNode["a:off"]["attrs"]["y"]) * slideFactor;
  9863. // var chx = parseInt(grpXfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor;
  9864. // var chy = parseInt(grpXfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor;
  9865. // var cx = parseInt(grpXfrmNode["a:ext"]["attrs"]["cx"]) * slideFactor;
  9866. // var cy = parseInt(grpXfrmNode["a:ext"]["attrs"]["cy"]) * slideFactor;
  9867. // var chcx = parseInt(grpXfrmNode["a:chExt"]["attrs"]["cx"]) * slideFactor;
  9868. // var chcy = parseInt(grpXfrmNode["a:chExt"]["attrs"]["cy"]) * slideFactor;
  9869. // var rotate = parseInt(grpXfrmNode["attrs"]["rot"])
  9870. }
  9871. }
  9872. if (sType == "group-rotate" && pNode["p:grpSpPr"] !== undefined) {
  9873. var xfrmNode = pNode["p:grpSpPr"]["a:xfrm"];
  9874. // var ox = parseInt(xfrmNode["a:off"]["attrs"]["x"]) * slideFactor;
  9875. // var oy = parseInt(xfrmNode["a:off"]["attrs"]["y"]) * slideFactor;
  9876. var chx = parseInt(xfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor;
  9877. var chy = parseInt(xfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor;
  9878. offX = chx;
  9879. offY = chy;
  9880. }
  9881. if (off === undefined) {
  9882. return "";
  9883. } else {
  9884. x = parseInt(off["x"]) * slideFactor;
  9885. y = parseInt(off["y"]) * slideFactor;
  9886. // if (type = "body")
  9887. // console.log("getPosition: slideSpNode: ", slideSpNode, ", type: ", type, "x: ", x, "offX:", offX, "y:", y, "offY:", offY)
  9888. return (isNaN(x) || isNaN(y)) ? "" : "top:" + (y - offY + grpY) + "px; left:" + (x - offX + grpX) + "px;";
  9889. }
  9890. }
  9891. function getSize(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {
  9892. var ext = undefined;
  9893. var w = -1, h = -1;
  9894. if (slideSpNode !== undefined) {
  9895. ext = slideSpNode["a:ext"]["attrs"];
  9896. } else if (slideLayoutSpNode !== undefined) {
  9897. ext = slideLayoutSpNode["a:ext"]["attrs"];
  9898. } else if (slideMasterSpNode !== undefined) {
  9899. ext = slideMasterSpNode["a:ext"]["attrs"];
  9900. }
  9901. if (ext === undefined) {
  9902. return "";
  9903. } else {
  9904. w = parseInt(ext["cx"]) * slideFactor;
  9905. h = parseInt(ext["cy"]) * slideFactor;
  9906. return (isNaN(w) || isNaN(h)) ? "" : "width:" + w + "px; height:" + h + "px;";
  9907. }
  9908. }
  9909. function getVerticalMargins(pNode, textBodyNode, type, idx, warpObj) {
  9910. //margin-top ;
  9911. //a:pPr => a:spcBef => a:spcPts (/100) | a:spcPct (/?)
  9912. //margin-bottom
  9913. //a:pPr => a:spcAft => a:spcPts (/100) | a:spcPct (/?)
  9914. //+
  9915. //a:pPr =>a:lnSpc => a:spcPts (/?) | a:spcPct (/?)
  9916. //console.log("getVerticalMargins ", pNode, type,idx, warpObj)
  9917. //var lstStyle = textBodyNode["a:lstStyle"];
  9918. var lvl = 1
  9919. var spcBefNode = getTextByPathList(pNode, ["a:pPr", "a:spcBef", "a:spcPts", "attrs", "val"]);
  9920. var spcAftNode = getTextByPathList(pNode, ["a:pPr", "a:spcAft", "a:spcPts", "attrs", "val"]);
  9921. var lnSpcNode = getTextByPathList(pNode, ["a:pPr", "a:lnSpc", "a:spcPct", "attrs", "val"]);
  9922. var lnSpcNodeType = "Pct";
  9923. if (lnSpcNode === undefined) {
  9924. lnSpcNode = getTextByPathList(pNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]);
  9925. if (lnSpcNode !== undefined) {
  9926. lnSpcNodeType = "Pts";
  9927. }
  9928. }
  9929. var lvlNode = getTextByPathList(pNode, ["a:pPr", "attrs", "lvl"]);
  9930. if (lvlNode !== undefined) {
  9931. lvl = parseInt(lvlNode) + 1;
  9932. }
  9933. var fontSize;
  9934. if (getTextByPathList(pNode, ["a:r"]) !== undefined) {
  9935. var fontSizeStr = getFontSize(pNode["a:r"], textBodyNode,undefined, lvl, type, warpObj);
  9936. if (fontSizeStr != "inherit") {
  9937. fontSize = parseInt(fontSizeStr, "px"); //pt
  9938. }
  9939. }
  9940. //var spcBef = "";
  9941. //console.log("getVerticalMargins 1", fontSizeStr, fontSize, lnSpcNode, parseInt(lnSpcNode) / 100000, spcBefNode, spcAftNode)
  9942. // if(spcBefNode !== undefined){
  9943. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;"
  9944. // }
  9945. // else{
  9946. // //i did not found case with percentage
  9947. // spcBefNode = getTextByPathList(pNode, ["a:pPr", "a:spcBef", "a:spcPct","attrs","val"]);
  9948. // if(spcBefNode !== undefined){
  9949. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;"
  9950. // }
  9951. // }
  9952. //var spcAft = "";
  9953. // if(spcAftNode !== undefined){
  9954. // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;"
  9955. // }
  9956. // else{
  9957. // //i did not found case with percentage
  9958. // spcAftNode = getTextByPathList(pNode, ["a:pPr", "a:spcAft", "a:spcPct","attrs","val"]);
  9959. // if(spcAftNode !== undefined){
  9960. // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;"
  9961. // }
  9962. // }
  9963. // if(spcAftNode !== undefined){
  9964. // //check in layout and then in master
  9965. // }
  9966. var isInLayoutOrMaster = true;
  9967. if(type == "shape" || type == "textBox"){
  9968. isInLayoutOrMaster = false;
  9969. }
  9970. if (isInLayoutOrMaster && (spcBefNode === undefined || spcAftNode === undefined || lnSpcNode === undefined)) {
  9971. //check in layout
  9972. if (idx !== undefined) {
  9973. var laypPrNode = getTextByPathList(warpObj, ["slideLayoutTables", "idxTable", idx, "p:txBody", "a:p", (lvl - 1), "a:pPr"]);
  9974. if (spcBefNode === undefined) {
  9975. spcBefNode = getTextByPathList(laypPrNode, ["a:spcBef", "a:spcPts", "attrs", "val"]);
  9976. // if(spcBefNode !== undefined){
  9977. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;"
  9978. // }
  9979. // else{
  9980. // //i did not found case with percentage
  9981. // spcBefNode = getTextByPathList(laypPrNode, ["a:spcBef", "a:spcPct","attrs","val"]);
  9982. // if(spcBefNode !== undefined){
  9983. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;"
  9984. // }
  9985. // }
  9986. }
  9987. if (spcAftNode === undefined) {
  9988. spcAftNode = getTextByPathList(laypPrNode, ["a:spcAft", "a:spcPts", "attrs", "val"]);
  9989. // if(spcAftNode !== undefined){
  9990. // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;"
  9991. // }
  9992. // else{
  9993. // //i did not found case with percentage
  9994. // spcAftNode = getTextByPathList(laypPrNode, ["a:spcAft", "a:spcPct","attrs","val"]);
  9995. // if(spcAftNode !== undefined){
  9996. // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;"
  9997. // }
  9998. // }
  9999. }
  10000. if (lnSpcNode === undefined) {
  10001. lnSpcNode = getTextByPathList(laypPrNode, ["a:lnSpc", "a:spcPct", "attrs", "val"]);
  10002. if (lnSpcNode === undefined) {
  10003. lnSpcNode = getTextByPathList(laypPrNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]);
  10004. if (lnSpcNode !== undefined) {
  10005. lnSpcNodeType = "Pts";
  10006. }
  10007. }
  10008. }
  10009. }
  10010. }
  10011. if (isInLayoutOrMaster && (spcBefNode === undefined || spcAftNode === undefined || lnSpcNode === undefined)) {
  10012. //check in master
  10013. //slideMasterTextStyles
  10014. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  10015. var dirLoc = "";
  10016. var lvl = "a:lvl" + lvl + "pPr";
  10017. switch (type) {
  10018. case "title":
  10019. case "ctrTitle":
  10020. dirLoc = "p:titleStyle";
  10021. break;
  10022. case "body":
  10023. case "obj":
  10024. case "dt":
  10025. case "ftr":
  10026. case "sldNum":
  10027. case "textBox":
  10028. // case "shape":
  10029. dirLoc = "p:bodyStyle";
  10030. break;
  10031. case "shape":
  10032. //case "textBox":
  10033. default:
  10034. dirLoc = "p:otherStyle";
  10035. }
  10036. // if (type == "shape" || type == "textBox") {
  10037. // lvl = "a:lvl1pPr";
  10038. // }
  10039. var inLvlNode = getTextByPathList(slideMasterTextStyles, [dirLoc, lvl]);
  10040. if (inLvlNode !== undefined) {
  10041. if (spcBefNode === undefined) {
  10042. spcBefNode = getTextByPathList(inLvlNode, ["a:spcBef", "a:spcPts", "attrs", "val"]);
  10043. // if(spcBefNode !== undefined){
  10044. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;"
  10045. // }
  10046. // else{
  10047. // //i did not found case with percentage
  10048. // spcBefNode = getTextByPathList(inLvlNode, ["a:spcBef", "a:spcPct","attrs","val"]);
  10049. // if(spcBefNode !== undefined){
  10050. // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;"
  10051. // }
  10052. // }
  10053. }
  10054. if (spcAftNode === undefined) {
  10055. spcAftNode = getTextByPathList(inLvlNode, ["a:spcAft", "a:spcPts", "attrs", "val"]);
  10056. // if(spcAftNode !== undefined){
  10057. // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;"
  10058. // }
  10059. // else{
  10060. // //i did not found case with percentage
  10061. // spcAftNode = getTextByPathList(inLvlNode, ["a:spcAft", "a:spcPct","attrs","val"]);
  10062. // if(spcAftNode !== undefined){
  10063. // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;"
  10064. // }
  10065. // }
  10066. }
  10067. if (lnSpcNode === undefined) {
  10068. lnSpcNode = getTextByPathList(inLvlNode, ["a:lnSpc", "a:spcPct", "attrs", "val"]);
  10069. if (lnSpcNode === undefined) {
  10070. lnSpcNode = getTextByPathList(inLvlNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]);
  10071. if (lnSpcNode !== undefined) {
  10072. lnSpcNodeType = "Pts";
  10073. }
  10074. }
  10075. }
  10076. }
  10077. }
  10078. var spcBefor = 0, spcAfter = 0, spcLines = 0;
  10079. var marginTopBottomStr = "";
  10080. if (spcBefNode !== undefined) {
  10081. spcBefor = parseInt(spcBefNode) / 100;
  10082. }
  10083. if (spcAftNode !== undefined) {
  10084. spcAfter = parseInt(spcAftNode) / 100;
  10085. }
  10086. if (lnSpcNode !== undefined && fontSize !== undefined) {
  10087. if (lnSpcNodeType == "Pts") {
  10088. marginTopBottomStr += "padding-top: " + ((parseInt(lnSpcNode) / 100) - fontSize) + "px;";//+ "pt;";
  10089. } else {
  10090. var fct = parseInt(lnSpcNode) / 100000;
  10091. spcLines = fontSize * (fct - 1) - fontSize;// fontSize *
  10092. var pTop = (fct > 1) ? spcLines : 0;
  10093. var pBottom = (fct > 1) ? fontSize : 0;
  10094. // marginTopBottomStr += "padding-top: " + spcLines + "pt;";
  10095. // marginTopBottomStr += "padding-bottom: " + pBottom + "pt;";
  10096. marginTopBottomStr += "padding-top: " + pBottom + "px;";// + "pt;";
  10097. marginTopBottomStr += "padding-bottom: " + spcLines + "px;";// + "pt;";
  10098. }
  10099. }
  10100. //if (spcBefNode !== undefined || lnSpcNode !== undefined) {
  10101. marginTopBottomStr += "margin-top: " + (spcBefor - 1) + "px;";// + "pt;"; //margin-top: + spcLines // minus 1 - to fix space
  10102. //}
  10103. if (spcAftNode !== undefined || lnSpcNode !== undefined) {
  10104. //marginTopBottomStr += "margin-bottom: " + ((spcAfter - fontSize < 0) ? 0 : (spcAfter - fontSize)) + "pt;"; //margin-bottom: + spcLines
  10105. //marginTopBottomStr += "margin-bottom: " + spcAfter * (1 / 4) + "px;";// + "pt;";
  10106. marginTopBottomStr += "margin-bottom: " + spcAfter + "px;";// + "pt;";
  10107. }
  10108. //console.log("getVerticalMargins 2 fontSize:", fontSize, "lnSpcNode:", lnSpcNode, "spcLines:", spcLines, "spcBefor:", spcBefor, "spcAfter:", spcAfter)
  10109. //console.log("getVerticalMargins 3 ", marginTopBottomStr, pNode, warpObj)
  10110. //return spcAft + spcBef;
  10111. return marginTopBottomStr;
  10112. }
  10113. function getHorizontalAlign(node, textBodyNode, idx, type, prg_dir, warpObj) {
  10114. var algn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]);
  10115. if (algn === undefined) {
  10116. //var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj);
  10117. // var pPrNodeLaout = layoutMasterNode.nodeLaout;
  10118. // var pPrNodeMaster = layoutMasterNode.nodeMaster;
  10119. var lvlIdx = 1;
  10120. var lvlNode = getTextByPathList(node, ["a:pPr", "attrs", "lvl"]);
  10121. if (lvlNode !== undefined) {
  10122. lvlIdx = parseInt(lvlNode) + 1;
  10123. }
  10124. var lvlStr = "a:lvl" + lvlIdx + "pPr";
  10125. var lstStyle = textBodyNode["a:lstStyle"];
  10126. algn = getTextByPathList(lstStyle, [lvlStr, "attrs", "algn"]);
  10127. if (algn === undefined && idx !== undefined ) {
  10128. //slidelayout
  10129. algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]);
  10130. if (algn === undefined) {
  10131. algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", "a:pPr", "attrs", "algn"]);
  10132. if (algn === undefined) {
  10133. algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", (lvlIdx - 1), "a:pPr", "attrs", "algn"]);
  10134. }
  10135. }
  10136. }
  10137. if (algn === undefined) {
  10138. if (type !== undefined) {
  10139. //slidelayout
  10140. algn = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]);
  10141. if (algn === undefined) {
  10142. //masterlayout
  10143. if (type == "title" || type == "ctrTitle") {
  10144. algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr, "attrs", "algn"]);
  10145. } else if (type == "body" || type == "obj" || type == "subTitle") {
  10146. algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]);
  10147. } else if (type == "shape" || type == "diagram") {
  10148. algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:otherStyle", lvlStr, "attrs", "algn"]);
  10149. } else if (type == "textBox") {
  10150. algn = getTextByPathList(warpObj, ["defaultTextStyle", lvlStr, "attrs", "algn"]);
  10151. } else {
  10152. algn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]);
  10153. }
  10154. }
  10155. } else {
  10156. algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]);
  10157. }
  10158. }
  10159. }
  10160. if (algn === undefined) {
  10161. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  10162. return "h-mid";
  10163. } else if (type == "sldNum") {
  10164. return "h-right";
  10165. }
  10166. }
  10167. if (algn !== undefined) {
  10168. switch (algn) {
  10169. case "l":
  10170. if (prg_dir == "pregraph-rtl"){
  10171. //return "h-right";
  10172. return "h-left-rtl";
  10173. }else{
  10174. return "h-left";
  10175. }
  10176. break;
  10177. case "r":
  10178. if (prg_dir == "pregraph-rtl") {
  10179. //return "h-left";
  10180. return "h-right-rtl";
  10181. }else{
  10182. return "h-right";
  10183. }
  10184. break;
  10185. case "ctr":
  10186. return "h-mid";
  10187. break;
  10188. case "just":
  10189. case "dist":
  10190. default:
  10191. return "h-" + algn;
  10192. }
  10193. }
  10194. //return algn === "ctr" ? "h-mid" : algn === "r" ? "h-right" : "h-left";
  10195. }
  10196. function getPregraphDir(node, textBodyNode, idx, type, warpObj) {
  10197. var rtl = getTextByPathList(node, ["a:pPr", "attrs", "rtl"]);
  10198. //console.log("getPregraphDir node:", node, "textBodyNode", textBodyNode, "rtl:", rtl, "idx", idx, "type", type, "warpObj", warpObj)
  10199. if (rtl === undefined) {
  10200. var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj);
  10201. var pPrNodeLaout = layoutMasterNode.nodeLaout;
  10202. var pPrNodeMaster = layoutMasterNode.nodeMaster;
  10203. rtl = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]);
  10204. if (rtl === undefined && type != "shape") {
  10205. rtl = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]);
  10206. }
  10207. }
  10208. if (rtl == "1") {
  10209. return "pregraph-rtl";
  10210. } else if (rtl == "0") {
  10211. return "pregraph-ltr";
  10212. }
  10213. return "pregraph-inherit";
  10214. // var contentDir = getContentDir(type, warpObj);
  10215. // console.log("getPregraphDir node:", node["a:r"], "rtl:", rtl, "idx", idx, "type", type, "contentDir:", contentDir)
  10216. // if (contentDir == "content"){
  10217. // return "pregraph-ltr";
  10218. // } else if (contentDir == "content-rtl"){
  10219. // return "pregraph-rtl";
  10220. // }
  10221. // return "";
  10222. }
  10223. function getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) {
  10224. //X, <a:bodyPr anchor="ctr">, <a:bodyPr anchor="b">
  10225. var anchor = getTextByPathList(node, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  10226. //console.log("getVerticalAlign anchor:", anchor, "slideLayoutSpNode: ", slideLayoutSpNode)
  10227. if (anchor === undefined) {
  10228. //console.log("getVerticalAlign type:", type," node:", node, "slideLayoutSpNode:", slideLayoutSpNode, "slideMasterSpNode:", slideMasterSpNode)
  10229. anchor = getTextByPathList(slideLayoutSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  10230. if (anchor === undefined) {
  10231. anchor = getTextByPathList(slideMasterSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  10232. if (anchor === undefined) {
  10233. //"If this attribute is omitted, then a value of t, or top is implied."
  10234. anchor = "t";//getTextByPathList(slideMasterSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]);
  10235. }
  10236. }
  10237. }
  10238. //console.log("getVerticalAlign:", node, slideLayoutSpNode, slideMasterSpNode, type, anchor)
  10239. return (anchor === "ctr")?"v-mid" : ((anchor === "b") ? "v-down" : "v-up");
  10240. }
  10241. function getContentDir(node, type, warpObj) {
  10242. return "content";
  10243. var defRtl = getTextByPathList(node, ["p:txBody", "a:lstStyle", "a:defPPr", "attrs", "rtl"]);
  10244. if (defRtl !== undefined) {
  10245. if (defRtl == "1"){
  10246. return "content-rtl";
  10247. } else if (defRtl == "0") {
  10248. return "content";
  10249. }
  10250. }
  10251. //var lvl1Rtl = getTextByPathList(node, ["p:txBody", "a:lstStyle", "lvl1pPr", "attrs", "rtl"]);
  10252. // if (lvl1Rtl !== undefined) {
  10253. // if (lvl1Rtl == "1") {
  10254. // return "content-rtl";
  10255. // } else if (lvl1Rtl == "0") {
  10256. // return "content";
  10257. // }
  10258. // }
  10259. var rtlCol = getTextByPathList(node, ["p:txBody", "a:bodyPr", "attrs", "rtlCol"]);
  10260. if (rtlCol !== undefined) {
  10261. if (rtlCol == "1") {
  10262. return "content-rtl";
  10263. } else if (rtlCol == "0") {
  10264. return "content";
  10265. }
  10266. }
  10267. //console.log("getContentDir node:", node, "rtlCol:", rtlCol)
  10268. if (type === undefined) {
  10269. return "content";
  10270. }
  10271. var slideMasterTextStyles = warpObj["slideMasterTextStyles"];
  10272. var dirLoc = "";
  10273. switch (type) {
  10274. case "title":
  10275. case "ctrTitle":
  10276. dirLoc = "p:titleStyle";
  10277. break;
  10278. case "body":
  10279. case "dt":
  10280. case "ftr":
  10281. case "sldNum":
  10282. case "textBox":
  10283. dirLoc = "p:bodyStyle";
  10284. break;
  10285. case "shape":
  10286. dirLoc = "p:otherStyle";
  10287. }
  10288. if (slideMasterTextStyles !== undefined && dirLoc !== "") {
  10289. var dirVal = getTextByPathList(slideMasterTextStyles[dirLoc], ["a:lvl1pPr", "attrs", "rtl"]);
  10290. if (dirVal == "1") {
  10291. return "content-rtl";
  10292. }
  10293. }
  10294. // else {
  10295. // if (type == "textBox") {
  10296. // var dirVal = getTextByPathList(warpObj, ["defaultTextStyle", "a:lvl1pPr", "attrs", "rtl"]);
  10297. // if (dirVal == "1") {
  10298. // return "content-rtl";
  10299. // }
  10300. // }
  10301. // }
  10302. return "content";
  10303. //console.log("getContentDir() type:", type, "slideMasterTextStyles:", slideMasterTextStyles,"dirNode:",dirVal)
  10304. }
  10305. function getFontType(node, type, warpObj, pFontStyle) {
  10306. var typeface = getTextByPathList(node, ["a:rPr", "a:latin", "attrs", "typeface"]);
  10307. if (typeface === undefined) {
  10308. var fontIdx = "";
  10309. var fontGrup = "";
  10310. if (pFontStyle !== undefined) {
  10311. fontIdx = getTextByPathList(pFontStyle, ["attrs", "idx"]);
  10312. }
  10313. var fontSchemeNode = getTextByPathList(warpObj["themeContent"], ["a:theme", "a:themeElements", "a:fontScheme"]);
  10314. if (fontIdx == "") {
  10315. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  10316. fontIdx = "major";
  10317. } else {
  10318. fontIdx = "minor";
  10319. }
  10320. }
  10321. fontGrup = "a:" + fontIdx + "Font";
  10322. typeface = getTextByPathList(fontSchemeNode, [fontGrup, "a:latin", "attrs", "typeface"]);
  10323. }
  10324. return (typeface === undefined) ? "inherit" : typeface;
  10325. }
  10326. function getFontColorPr(node, pNode, lstStyle, pFontStyle, lvl, idx, type, warpObj) {
  10327. //text border using: text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
  10328. //{getFontColor(..) return color} -> getFontColorPr(..) return array[color,textBordr/shadow]
  10329. //https://stackoverflow.com/questions/2570972/css-font-border
  10330. //https://www.w3schools.com/cssref/css3_pr_text-shadow.asp
  10331. //themeContent
  10332. //console.log("getFontColorPr>> type:", type, ", node: ", node)
  10333. var rPrNode = getTextByPathList(node, ["a:rPr"]);
  10334. var filTyp, color, textBordr, colorType = "", highlightColor = "";
  10335. //console.log("getFontColorPr type:", type, ", node: ", node, "pNode:", pNode, "pFontStyle:", pFontStyle)
  10336. if (rPrNode !== undefined) {
  10337. filTyp = getFillType(rPrNode);
  10338. if (filTyp == "SOLID_FILL") {
  10339. var solidFillNode = rPrNode["a:solidFill"];// getTextByPathList(node, ["a:rPr", "a:solidFill"]);
  10340. color = getSolidFill(solidFillNode, undefined, undefined, warpObj);
  10341. var highlightNode = rPrNode["a:highlight"];
  10342. if (highlightNode !== undefined) {
  10343. highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj);
  10344. }
  10345. colorType = "solid";
  10346. } else if (filTyp == "PATTERN_FILL") {
  10347. var pattFill = rPrNode["a:pattFill"];// getTextByPathList(node, ["a:rPr", "a:pattFill"]);
  10348. color = getPatternFill(pattFill, warpObj);
  10349. colorType = "pattern";
  10350. } else if (filTyp == "PIC_FILL") {
  10351. color = getBgPicFill(rPrNode, "slideBg", warpObj, undefined, undefined);
  10352. //color = getPicFill("slideBg", rPrNode["a:blipFill"], warpObj);
  10353. colorType = "pic";
  10354. } else if (filTyp == "GRADIENT_FILL") {
  10355. var shpFill = rPrNode["a:gradFill"];
  10356. color = getGradientFill(shpFill, warpObj);
  10357. colorType = "gradient";
  10358. }
  10359. }
  10360. if (color === undefined && getTextByPathList(lstStyle, ["a:lvl" + lvl + "pPr", "a:defRPr"]) !== undefined) {
  10361. //lstStyle
  10362. var lstStyledefRPr = getTextByPathList(lstStyle, ["a:lvl" + lvl + "pPr", "a:defRPr"]);
  10363. filTyp = getFillType(lstStyledefRPr);
  10364. if (filTyp == "SOLID_FILL") {
  10365. var solidFillNode = lstStyledefRPr["a:solidFill"];// getTextByPathList(node, ["a:rPr", "a:solidFill"]);
  10366. color = getSolidFill(solidFillNode, undefined, undefined, warpObj);
  10367. var highlightNode = lstStyledefRPr["a:highlight"];
  10368. if (highlightNode !== undefined) {
  10369. highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj);
  10370. }
  10371. colorType = "solid";
  10372. } else if (filTyp == "PATTERN_FILL") {
  10373. var pattFill = lstStyledefRPr["a:pattFill"];// getTextByPathList(node, ["a:rPr", "a:pattFill"]);
  10374. color = getPatternFill(pattFill, warpObj);
  10375. colorType = "pattern";
  10376. } else if (filTyp == "PIC_FILL") {
  10377. color = getBgPicFill(lstStyledefRPr, "slideBg", warpObj, undefined, undefined);
  10378. //color = getPicFill("slideBg", rPrNode["a:blipFill"], warpObj);
  10379. colorType = "pic";
  10380. } else if (filTyp == "GRADIENT_FILL") {
  10381. var shpFill = lstStyledefRPr["a:gradFill"];
  10382. color = getGradientFill(shpFill, warpObj);
  10383. colorType = "gradient";
  10384. }
  10385. }
  10386. if (color === undefined) {
  10387. var sPstyle = getTextByPathList(pNode, ["p:style", "a:fontRef"]);
  10388. if (sPstyle !== undefined) {
  10389. color = getSolidFill(sPstyle, undefined, undefined, warpObj);
  10390. if (color !== undefined) {
  10391. colorType = "solid";
  10392. }
  10393. var highlightNode = sPstyle["a:highlight"]; //is "a:highlight" node in 'a:fontRef' ?
  10394. if (highlightNode !== undefined) {
  10395. highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj);
  10396. }
  10397. }
  10398. if (color === undefined) {
  10399. if (pFontStyle !== undefined) {
  10400. color = getSolidFill(pFontStyle, undefined, undefined, warpObj);
  10401. if (color !== undefined) {
  10402. colorType = "solid";
  10403. }
  10404. }
  10405. }
  10406. }
  10407. //console.log("getFontColorPr node", node, "colorType: ", colorType,"color: ",color)
  10408. if (color === undefined) {
  10409. var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj);
  10410. var pPrNodeLaout = layoutMasterNode.nodeLaout;
  10411. var pPrNodeMaster = layoutMasterNode.nodeMaster;
  10412. if (pPrNodeLaout !== undefined) {
  10413. var defRpRLaout = getTextByPathList(pPrNodeLaout, ["a:defRPr", "a:solidFill"]);
  10414. if (defRpRLaout !== undefined) {
  10415. color = getSolidFill(defRpRLaout, undefined, undefined, warpObj);
  10416. var highlightNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "a:highlight"]);
  10417. if (highlightNode !== undefined) {
  10418. highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj);
  10419. }
  10420. colorType = "solid";
  10421. }
  10422. }
  10423. if (color === undefined) {
  10424. if (pPrNodeMaster !== undefined) {
  10425. var defRprMaster = getTextByPathList(pPrNodeMaster, ["a:defRPr", "a:solidFill"]);
  10426. if (defRprMaster !== undefined) {
  10427. color = getSolidFill(defRprMaster, undefined, undefined, warpObj);
  10428. var highlightNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "a:highlight"]);
  10429. if (highlightNode !== undefined) {
  10430. highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj);
  10431. }
  10432. colorType = "solid";
  10433. }
  10434. }
  10435. }
  10436. }
  10437. var txtEffects = [];
  10438. var txtEffObj = {}
  10439. //textBordr
  10440. var txtBrdrNode = getTextByPathList(node, ["a:rPr", "a:ln"]);
  10441. var textBordr = "";
  10442. if (txtBrdrNode !== undefined && txtBrdrNode["a:noFill"] === undefined) {
  10443. var txBrd = getBorder(node, pNode, false, "text", warpObj);
  10444. var txBrdAry = txBrd.split(" ");
  10445. //var brdSize = (parseInt(txBrdAry[0].substring(0, txBrdAry[0].indexOf("pt")))) + "px";
  10446. var brdSize = (parseInt(txBrdAry[0].substring(0, txBrdAry[0].indexOf("px")))) + "px";
  10447. var brdClr = txBrdAry[2];
  10448. //var brdTyp = txBrdAry[1]; //not in use
  10449. //console.log("getFontColorPr txBrdAry:", txBrdAry)
  10450. if (colorType == "solid") {
  10451. textBordr = "-" + brdSize + " 0 " + brdClr + ", 0 " + brdSize + " " + brdClr + ", " + brdSize + " 0 " + brdClr + ", 0 -" + brdSize + " " + brdClr;
  10452. // if (oShadowStr != "") {
  10453. // textBordr += "," + oShadowStr;
  10454. // } else {
  10455. // textBordr += ";";
  10456. // }
  10457. txtEffects.push(textBordr);
  10458. } else {
  10459. //textBordr = brdSize + " " + brdClr;
  10460. txtEffObj.border = brdSize + " " + brdClr;
  10461. }
  10462. }
  10463. // else {
  10464. // //if no border but exist/not exist shadow
  10465. // if (colorType == "solid") {
  10466. // textBordr = oShadowStr;
  10467. // } else {
  10468. // //TODO
  10469. // }
  10470. // }
  10471. var txtGlowNode = getTextByPathList(node, ["a:rPr", "a:effectLst", "a:glow"]);
  10472. var oGlowStr = "";
  10473. if (txtGlowNode !== undefined) {
  10474. var glowClr = getSolidFill(txtGlowNode, undefined, undefined, warpObj);
  10475. var rad = (txtGlowNode["attrs"]["rad"]) ? (txtGlowNode["attrs"]["rad"] * slideFactor) : 0;
  10476. oGlowStr = "0 0 " + rad + "px #" + glowClr +
  10477. ", 0 0 " + rad + "px #" + glowClr +
  10478. ", 0 0 " + rad + "px #" + glowClr +
  10479. ", 0 0 " + rad + "px #" + glowClr +
  10480. ", 0 0 " + rad + "px #" + glowClr +
  10481. ", 0 0 " + rad + "px #" + glowClr +
  10482. ", 0 0 " + rad + "px #" + glowClr;
  10483. if (colorType == "solid") {
  10484. txtEffects.push(oGlowStr);
  10485. } else {
  10486. // txtEffObj.glow = {
  10487. // radiuse: rad,
  10488. // color: glowClr
  10489. // }
  10490. txtEffects.push(
  10491. "drop-shadow(0 0 " + rad / 3 + "px #" + glowClr + ") " +
  10492. "drop-shadow(0 0 " + rad * 2 / 3 + "px #" + glowClr + ") " +
  10493. "drop-shadow(0 0 " + rad + "px #" + glowClr + ")"
  10494. );
  10495. }
  10496. }
  10497. var txtShadow = getTextByPathList(node, ["a:rPr", "a:effectLst", "a:outerShdw"]);
  10498. var oShadowStr = "";
  10499. if (txtShadow !== undefined) {
  10500. //https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/drop-shadow()
  10501. //https://stackoverflow.com/questions/60468487/css-text-with-linear-gradient-shadow-and-text-outline
  10502. //https://css-tricks.com/creating-playful-effects-with-css-text-shadows/
  10503. //https://designshack.net/articles/css/12-fun-css-text-shadows-you-can-copy-and-paste/
  10504. var shadowClr = getSolidFill(txtShadow, undefined, undefined, warpObj);
  10505. var outerShdwAttrs = txtShadow["attrs"];
  10506. // algn: "bl"
  10507. // dir: "2640000"
  10508. // dist: "38100"
  10509. // rotWithShape: "0/1" - Specifies whether the shadow rotates with the shape if the shape is rotated.
  10510. //blurRad (Blur Radius) - Specifies the blur radius of the shadow.
  10511. //kx (Horizontal Skew) - Specifies the horizontal skew angle.
  10512. //ky (Vertical Skew) - Specifies the vertical skew angle.
  10513. //sx (Horizontal Scaling Factor) - Specifies the horizontal scaling slideFactor; negative scaling causes a flip.
  10514. //sy (Vertical Scaling Factor) - Specifies the vertical scaling slideFactor; negative scaling causes a flip.
  10515. var algn = outerShdwAttrs["algn"];
  10516. var dir = (outerShdwAttrs["dir"]) ? (parseInt(outerShdwAttrs["dir"]) / 60000) : 0;
  10517. var dist = parseInt(outerShdwAttrs["dist"]) * slideFactor;//(px) //* (3 / 4); //(pt)
  10518. var rotWithShape = outerShdwAttrs["rotWithShape"];
  10519. var blurRad = (outerShdwAttrs["blurRad"]) ? (parseInt(outerShdwAttrs["blurRad"]) * slideFactor + "px") : "";
  10520. var sx = (outerShdwAttrs["sx"]) ? (parseInt(outerShdwAttrs["sx"]) / 100000) : 1;
  10521. var sy = (outerShdwAttrs["sy"]) ? (parseInt(outerShdwAttrs["sy"]) / 100000) : 1;
  10522. var vx = dist * Math.sin(dir * Math.PI / 180);
  10523. var hx = dist * Math.cos(dir * Math.PI / 180);
  10524. //console.log("getFontColorPr outerShdwAttrs:", outerShdwAttrs, ", shadowClr:", shadowClr, ", algn: ", algn, ",dir: ", dir, ", dist: ", dist, ",rotWithShape: ", rotWithShape, ", color: ", color)
  10525. if (!isNaN(vx) && !isNaN(hx)) {
  10526. oShadowStr = hx + "px " + vx + "px " + blurRad + " #" + shadowClr;// + ";";
  10527. if (colorType == "solid") {
  10528. txtEffects.push(oShadowStr);
  10529. } else {
  10530. // txtEffObj.oShadow = {
  10531. // hx: hx,
  10532. // vx: vx,
  10533. // radius: blurRad,
  10534. // color: shadowClr
  10535. // }
  10536. //txtEffObj.oShadow = hx + "px " + vx + "px " + blurRad + " #" + shadowClr;
  10537. txtEffects.push("drop-shadow(" + hx + "px " + vx + "px " + blurRad + " #" + shadowClr + ")");
  10538. }
  10539. }
  10540. //console.log("getFontColorPr vx:", vx, ", hx: ", hx, ", sx: ", sx, ", sy: ", sy, ",oShadowStr: ", oShadowStr)
  10541. }
  10542. //console.log("getFontColorPr>>> color:", color)
  10543. // if (color === undefined || color === "FFF") {
  10544. // color = "#000";
  10545. // } else {
  10546. // color = "" + color;
  10547. // }
  10548. var text_effcts = "", txt_effects;
  10549. if (colorType == "solid") {
  10550. if (txtEffects.length > 0) {
  10551. text_effcts = txtEffects.join(",");
  10552. }
  10553. txt_effects = text_effcts + ";"
  10554. } else {
  10555. if (txtEffects.length > 0) {
  10556. text_effcts = txtEffects.join(" ");
  10557. }
  10558. txtEffObj.effcts = text_effcts;
  10559. txt_effects = txtEffObj
  10560. }
  10561. //console.log("getFontColorPr txt_effects:", txt_effects)
  10562. //return [color, textBordr, colorType];
  10563. return [color, txt_effects, colorType, highlightColor];
  10564. }
  10565. function getFontSize(node, textBodyNode, pFontStyle, lvl, type, warpObj) {
  10566. // if(type == "sldNum")
  10567. //console.log("getFontSize node:", node, "lstStyle", lstStyle, "lvl:", lvl, 'type:', type, "warpObj:", warpObj)
  10568. var lstStyle = (textBodyNode !== undefined)? textBodyNode["a:lstStyle"] : undefined;
  10569. var lvlpPr = "a:lvl" + lvl + "pPr";
  10570. var fontSize = undefined;
  10571. var sz, kern;
  10572. if (node["a:rPr"] !== undefined) {
  10573. fontSize = parseInt(node["a:rPr"]["attrs"]["sz"]) / 100;
  10574. }
  10575. if (isNaN(fontSize) || fontSize === undefined && node["a:fld"] !== undefined) {
  10576. sz = getTextByPathList(node["a:fld"], ["a:rPr", "attrs", "sz"]);
  10577. fontSize = parseInt(sz) / 100;
  10578. }
  10579. if ((isNaN(fontSize) || fontSize === undefined) && node["a:t"] === undefined) {
  10580. sz = getTextByPathList(node["a:endParaRPr"], [ "attrs", "sz"]);
  10581. fontSize = parseInt(sz) / 100;
  10582. }
  10583. if ((isNaN(fontSize) || fontSize === undefined) && lstStyle !== undefined) {
  10584. sz = getTextByPathList(lstStyle, [lvlpPr, "a:defRPr", "attrs", "sz"]);
  10585. fontSize = parseInt(sz) / 100;
  10586. }
  10587. //a:spAutoFit
  10588. var isAutoFit = false;
  10589. var isKerning = false;
  10590. if (textBodyNode !== undefined){
  10591. var spAutoFitNode = getTextByPathList(textBodyNode, ["a:bodyPr", "a:spAutoFit"]);
  10592. // if (spAutoFitNode === undefined) {
  10593. // spAutoFitNode = getTextByPathList(textBodyNode, ["a:bodyPr", "a:normAutofit"]);
  10594. // }
  10595. if (spAutoFitNode !== undefined){
  10596. isAutoFit = true;
  10597. isKerning = true;
  10598. }
  10599. }
  10600. if (isNaN(fontSize) || fontSize === undefined) {
  10601. // if (type == "shape" || type == "textBox") {
  10602. // type = "body";
  10603. // lvlpPr = "a:lvl1pPr";
  10604. // }
  10605. sz = getTextByPathList(warpObj["slideLayoutTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10606. fontSize = parseInt(sz) / 100;
  10607. kern = getTextByPathList(warpObj["slideLayoutTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10608. if (isKerning && kern !== undefined && !isNaN(fontSize) && (fontSize - parseInt(kern) / 100) > 0){
  10609. fontSize = fontSize - parseInt(kern) / 100;
  10610. }
  10611. }
  10612. if (isNaN(fontSize) || fontSize === undefined) {
  10613. // if (type == "shape" || type == "textBox") {
  10614. // type = "body";
  10615. // lvlpPr = "a:lvl1pPr";
  10616. // }
  10617. sz = getTextByPathList(warpObj["slideMasterTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10618. kern = getTextByPathList(warpObj["slideMasterTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10619. if (sz === undefined) {
  10620. if (type == "title" || type == "subTitle" || type == "ctrTitle") {
  10621. sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:titleStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10622. kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:titleStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10623. } else if (type == "body" || type == "obj" || type == "dt" || type == "sldNum" || type === "textBox") {
  10624. sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:bodyStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10625. kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:bodyStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10626. }
  10627. else if (type == "shape") {
  10628. //textBox and shape text does not indent
  10629. sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10630. kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10631. isKerning = false;
  10632. }
  10633. if (sz === undefined) {
  10634. sz = getTextByPathList(warpObj["defaultTextStyle"], [lvlpPr, "a:defRPr", "attrs", "sz"]);
  10635. kern = (kern === undefined)? getTextByPathList(warpObj["defaultTextStyle"], [lvlpPr, "a:defRPr", "attrs", "kern"]) : undefined;
  10636. isKerning = false;
  10637. }
  10638. // else if (type === undefined || type == "shape") {
  10639. // sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10640. // kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10641. // }
  10642. // else if (type == "textBox") {
  10643. // sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]);
  10644. // kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]);
  10645. // }
  10646. }
  10647. fontSize = parseInt(sz) / 100;
  10648. if (isKerning && kern !== undefined && !isNaN(fontSize) && ((fontSize - parseInt(kern) / 100) > parseInt(kern) / 100 )) {
  10649. fontSize = fontSize - parseInt(kern) / 100;
  10650. //fontSize = parseInt(kern) / 100;
  10651. }
  10652. }
  10653. var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]);
  10654. if (baseline !== undefined && !isNaN(fontSize)) {
  10655. var baselineVl = parseInt(baseline) / 100000;
  10656. //fontSize -= 10;
  10657. // fontSize = fontSize * baselineVl;
  10658. fontSize -= baselineVl;
  10659. }
  10660. if (!isNaN(fontSize)){
  10661. var normAutofit = getTextByPathList(textBodyNode, ["a:bodyPr", "a:normAutofit", "attrs", "fontScale"]);
  10662. if (normAutofit !== undefined && normAutofit != 0){
  10663. //console.log("fontSize", fontSize, "normAutofit: ", normAutofit, normAutofit/100000)
  10664. fontSize = Math.round(fontSize * (normAutofit / 100000))
  10665. }
  10666. }
  10667. return isNaN(fontSize) ? ((type == "br") ? "initial" : "inherit") : (fontSize * fontSizeFactor + "px");// + "pt");
  10668. }
  10669. function getFontBold(node, type, slideMasterTextStyles) {
  10670. return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["b"] === "1") ? "bold" : "inherit";
  10671. }
  10672. function getFontItalic(node, type, slideMasterTextStyles) {
  10673. return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["i"] === "1") ? "italic" : "inherit";
  10674. }
  10675. function getFontDecoration(node, type, slideMasterTextStyles) {
  10676. ///////////////////////////////Amir///////////////////////////////
  10677. if (node["a:rPr"] !== undefined) {
  10678. var underLine = node["a:rPr"]["attrs"]["u"] !== undefined ? node["a:rPr"]["attrs"]["u"] : "none";
  10679. var strikethrough = node["a:rPr"]["attrs"]["strike"] !== undefined ? node["a:rPr"]["attrs"]["strike"] : 'noStrike';
  10680. //console.log("strikethrough: "+strikethrough);
  10681. if (underLine != "none" && strikethrough == "noStrike") {
  10682. return "underline";
  10683. } else if (underLine == "none" && strikethrough != "noStrike") {
  10684. return "line-through";
  10685. } else if (underLine != "none" && strikethrough != "noStrike") {
  10686. return "underline line-through";
  10687. } else {
  10688. return "inherit";
  10689. }
  10690. } else {
  10691. return "inherit";
  10692. }
  10693. /////////////////////////////////////////////////////////////////
  10694. //return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["u"] === "sng") ? "underline" : "inherit";
  10695. }
  10696. ////////////////////////////////////Amir/////////////////////////////////////
  10697. function getTextHorizontalAlign(node, pNode, type, warpObj) {
  10698. //console.log("getTextHorizontalAlign: type: ", type, ", node: ", node)
  10699. var getAlgn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]);
  10700. if (getAlgn === undefined) {
  10701. getAlgn = getTextByPathList(pNode, ["a:pPr", "attrs", "algn"]);
  10702. }
  10703. if (getAlgn === undefined) {
  10704. if (type == "title" || type == "ctrTitle" || type == "subTitle") {
  10705. var lvlIdx = 1;
  10706. var lvlNode = getTextByPathList(pNode, ["a:pPr", "attrs", "lvl"]);
  10707. if (lvlNode !== undefined) {
  10708. lvlIdx = parseInt(lvlNode) + 1;
  10709. }
  10710. var lvlStr = "a:lvl" + lvlIdx + "pPr";
  10711. getAlgn = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]);
  10712. if (getAlgn === undefined) {
  10713. getAlgn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]);
  10714. if (getAlgn === undefined) {
  10715. getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr, "attrs", "algn"]);
  10716. if (getAlgn === undefined && type === "subTitle") {
  10717. getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]);
  10718. }
  10719. }
  10720. }
  10721. } else if (type == "body") {
  10722. getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", "a:lvl1pPr", "attrs", "algn"]);
  10723. } else {
  10724. getAlgn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", "a:lvl1pPr", "attrs", "algn"]);
  10725. }
  10726. }
  10727. var align = "inherit";
  10728. if (getAlgn !== undefined) {
  10729. switch (getAlgn) {
  10730. case "l":
  10731. align = "left";
  10732. break;
  10733. case "r":
  10734. align = "right";
  10735. break;
  10736. case "ctr":
  10737. align = "center";
  10738. break;
  10739. case "just":
  10740. align = "justify";
  10741. break;
  10742. case "dist":
  10743. align = "justify";
  10744. break;
  10745. default:
  10746. align = "inherit";
  10747. }
  10748. }
  10749. return align;
  10750. }
  10751. /////////////////////////////////////////////////////////////////////
  10752. function getTextVerticalAlign(node, type, slideMasterTextStyles) {
  10753. var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]);
  10754. return baseline === undefined ? "baseline" : (parseInt(baseline) / 1000) + "%";
  10755. }
  10756. function getTableBorders(node, warpObj) {
  10757. var borderStyle = "";
  10758. if (node["a:bottom"] !== undefined) {
  10759. var obj = {
  10760. "p:spPr": {
  10761. "a:ln": node["a:bottom"]["a:ln"]
  10762. }
  10763. }
  10764. var borders = getBorder(obj, undefined, false, "shape", warpObj);
  10765. borderStyle += borders.replace("border", "border-bottom");
  10766. }
  10767. if (node["a:top"] !== undefined) {
  10768. var obj = {
  10769. "p:spPr": {
  10770. "a:ln": node["a:top"]["a:ln"]
  10771. }
  10772. }
  10773. var borders = getBorder(obj, undefined, false, "shape", warpObj);
  10774. borderStyle += borders.replace("border", "border-top");
  10775. }
  10776. if (node["a:right"] !== undefined) {
  10777. var obj = {
  10778. "p:spPr": {
  10779. "a:ln": node["a:right"]["a:ln"]
  10780. }
  10781. }
  10782. var borders = getBorder(obj, undefined, false, "shape", warpObj);
  10783. borderStyle += borders.replace("border", "border-right");
  10784. }
  10785. if (node["a:left"] !== undefined) {
  10786. var obj = {
  10787. "p:spPr": {
  10788. "a:ln": node["a:left"]["a:ln"]
  10789. }
  10790. }
  10791. var borders = getBorder(obj, undefined, false, "shape", warpObj);
  10792. borderStyle += borders.replace("border", "border-left");
  10793. }
  10794. return borderStyle;
  10795. }
  10796. //////////////////////////////////////////////////////////////////
  10797. function getBorder(node, pNode, isSvgMode, bType, warpObj) {
  10798. //console.log("getBorder", node, pNode, isSvgMode, bType)
  10799. var cssText, lineNode, subNodeTxt;
  10800. if (bType == "shape") {
  10801. cssText = "border: ";
  10802. lineNode = node["p:spPr"]["a:ln"];
  10803. //subNodeTxt = "p:spPr";
  10804. //node["p:style"]["a:lnRef"] =
  10805. } else if (bType == "text") {
  10806. cssText = "";
  10807. lineNode = node["a:rPr"]["a:ln"];
  10808. //subNodeTxt = "a:rPr";
  10809. }
  10810. //var is_noFill = getTextByPathList(node, ["p:spPr", "a:noFill"]);
  10811. var is_noFill = getTextByPathList(lineNode, ["a:noFill"]);
  10812. if (is_noFill !== undefined) {
  10813. return "hidden";
  10814. }
  10815. //console.log("lineNode: ", lineNode)
  10816. if (lineNode == undefined) {
  10817. var lnRefNode = getTextByPathList(node, ["p:style", "a:lnRef"])
  10818. if (lnRefNode !== undefined){
  10819. var lnIdx = getTextByPathList(lnRefNode, ["attrs", "idx"]);
  10820. //console.log("lnIdx:", lnIdx, "lnStyleLst:", warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:lnStyleLst"]["a:ln"][Number(lnIdx) -1])
  10821. lineNode = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:lnStyleLst"]["a:ln"][Number(lnIdx) - 1];
  10822. }
  10823. }
  10824. if (lineNode == undefined) {
  10825. //is table
  10826. cssText = "";
  10827. lineNode = node
  10828. }
  10829. var borderColor;
  10830. if (lineNode !== undefined) {
  10831. // Border width: 1pt = 12700, default = 0.75pt
  10832. var borderWidth = parseInt(getTextByPathList(lineNode, ["attrs", "w"])) / 12700;
  10833. if (isNaN(borderWidth) || borderWidth < 1) {
  10834. cssText += (4/3) + "px ";//"1pt ";
  10835. } else {
  10836. cssText += borderWidth + "px ";// + "pt ";
  10837. }
  10838. // Border type
  10839. var borderType = getTextByPathList(lineNode, ["a:prstDash", "attrs", "val"]);
  10840. if (borderType === undefined) {
  10841. borderType = getTextByPathList(lineNode, ["attrs", "cmpd"]);
  10842. }
  10843. var strokeDasharray = "0";
  10844. switch (borderType) {
  10845. case "solid":
  10846. cssText += "solid";
  10847. strokeDasharray = "0";
  10848. break;
  10849. case "dash":
  10850. cssText += "dashed";
  10851. strokeDasharray = "5";
  10852. break;
  10853. case "dashDot":
  10854. cssText += "dashed";
  10855. strokeDasharray = "5, 5, 1, 5";
  10856. break;
  10857. case "dot":
  10858. cssText += "dotted";
  10859. strokeDasharray = "1, 5";
  10860. break;
  10861. case "lgDash":
  10862. cssText += "dashed";
  10863. strokeDasharray = "10, 5";
  10864. break;
  10865. case "dbl":
  10866. cssText += "double";
  10867. strokeDasharray = "0";
  10868. break;
  10869. case "lgDashDotDot":
  10870. cssText += "dashed";
  10871. strokeDasharray = "10, 5, 1, 5, 1, 5";
  10872. break;
  10873. case "sysDash":
  10874. cssText += "dashed";
  10875. strokeDasharray = "5, 2";
  10876. break;
  10877. case "sysDashDot":
  10878. cssText += "dashed";
  10879. strokeDasharray = "5, 2, 1, 5";
  10880. break;
  10881. case "sysDashDotDot":
  10882. cssText += "dashed";
  10883. strokeDasharray = "5, 2, 1, 5, 1, 5";
  10884. break;
  10885. case "sysDot":
  10886. cssText += "dotted";
  10887. strokeDasharray = "2, 5";
  10888. break;
  10889. case undefined:
  10890. //console.log(borderType);
  10891. default:
  10892. cssText += "solid";
  10893. strokeDasharray = "0";
  10894. }
  10895. // Border color
  10896. var fillTyp = getFillType(lineNode);
  10897. //console.log("getBorder:node : fillTyp", fillTyp)
  10898. if (fillTyp == "NO_FILL") {
  10899. borderColor = isSvgMode ? "none" : "";//"background-color: initial;";
  10900. } else if (fillTyp == "SOLID_FILL") {
  10901. borderColor = getSolidFill(lineNode["a:solidFill"], undefined, undefined, warpObj);
  10902. } else if (fillTyp == "GRADIENT_FILL") {
  10903. borderColor = getGradientFill(lineNode["a:gradFill"], warpObj);
  10904. //console.log("shpFill",shpFill,grndColor.color)
  10905. } else if (fillTyp == "PATTERN_FILL") {
  10906. borderColor = getPatternFill(lineNode["a:pattFill"], warpObj);
  10907. }
  10908. }
  10909. //console.log("getBorder:node : borderColor", borderColor)
  10910. // 2. drawingML namespace
  10911. if (borderColor === undefined) {
  10912. //var schemeClrNode = getTextByPathList(node, ["p:style", "a:lnRef", "a:schemeClr"]);
  10913. // if (schemeClrNode !== undefined) {
  10914. // var schemeClr = "a:" + getTextByPathList(schemeClrNode, ["attrs", "val"]);
  10915. // var borderColor = getSchemeColorFromTheme(schemeClr, undefined, undefined);
  10916. // }
  10917. var lnRefNode = getTextByPathList(node, ["p:style", "a:lnRef"]);
  10918. //console.log("getBorder: lnRef : ", lnRefNode)
  10919. if (lnRefNode !== undefined) {
  10920. borderColor = getSolidFill(lnRefNode, undefined, undefined, warpObj);
  10921. }
  10922. // if (borderColor !== undefined) {
  10923. // var shade = getTextByPathList(schemeClrNode, ["a:shade", "attrs", "val"]);
  10924. // if (shade !== undefined) {
  10925. // shade = parseInt(shade) / 10000;
  10926. // var color = tinycolor("#" + borderColor);
  10927. // borderColor = color.darken(shade).toHex8();//.replace("#", "");
  10928. // }
  10929. // }
  10930. }
  10931. //console.log("getBorder: borderColor : ", borderColor)
  10932. if (borderColor === undefined) {
  10933. if (isSvgMode) {
  10934. borderColor = "none";
  10935. } else {
  10936. borderColor = "hidden";
  10937. }
  10938. } else {
  10939. borderColor = "#" + borderColor; //wrong if not solid fill - TODO
  10940. }
  10941. cssText += " " + borderColor + " ";//wrong if not solid fill - TODO
  10942. if (isSvgMode) {
  10943. return { "color": borderColor, "width": borderWidth, "type": borderType, "strokeDasharray": strokeDasharray };
  10944. } else {
  10945. return cssText + ";";
  10946. }
  10947. // } else {
  10948. // if (isSvgMode) {
  10949. // return { "color": 'none', "width": '0', "type": 'none', "strokeDasharray": '0' };
  10950. // } else {
  10951. // return "hidden";
  10952. // }
  10953. // }
  10954. }
  10955. function getBackground(warpObj, slideSize, index) {
  10956. //var rslt = "";
  10957. var slideContent = warpObj["slideContent"];
  10958. var slideLayoutContent = warpObj["slideLayoutContent"];
  10959. var slideMasterContent = warpObj["slideMasterContent"];
  10960. var nodesSldLayout = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:spTree"]);
  10961. var nodesSldMaster = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:spTree"]);
  10962. // console.log("slideContent : ", slideContent)
  10963. // console.log("slideLayoutContent : ", slideLayoutContent)
  10964. // console.log("slideMasterContent : ", slideMasterContent)
  10965. //console.log("warpObj : ", warpObj)
  10966. var showMasterSp = getTextByPathList(slideLayoutContent, ["p:sldLayout", "attrs", "showMasterSp"]);
  10967. //console.log("slideLayoutContent : ", slideLayoutContent, ", showMasterSp: ", showMasterSp)
  10968. var bgColor = getSlideBackgroundFill(warpObj, index);
  10969. var result = "<div class='slide-background-" + index + "' style='width:" + slideSize.width + "px; height:" + slideSize.height + "px;" + bgColor + "'>"
  10970. var node_ph_type_ary = [];
  10971. if (nodesSldLayout !== undefined) {
  10972. for (var nodeKey in nodesSldLayout) {
  10973. if (nodesSldLayout[nodeKey].constructor === Array) {
  10974. for (var i = 0; i < nodesSldLayout[nodeKey].length; i++) {
  10975. var ph_type = getTextByPathList(nodesSldLayout[nodeKey][i], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  10976. // if (ph_type !== undefined && ph_type != "pic") {
  10977. // node_ph_type_ary.push(ph_type);
  10978. // }
  10979. if (ph_type != "pic") {
  10980. result += processNodesInSlide(nodeKey, nodesSldLayout[nodeKey][i], nodesSldLayout, warpObj, "slideLayoutBg"); //slideLayoutBg , slideMasterBg
  10981. }
  10982. }
  10983. } else {
  10984. var ph_type = getTextByPathList(nodesSldLayout[nodeKey], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  10985. // if (ph_type !== undefined && ph_type != "pic") {
  10986. // node_ph_type_ary.push(ph_type);
  10987. // }
  10988. if (ph_type != "pic") {
  10989. result += processNodesInSlide(nodeKey, nodesSldLayout[nodeKey], nodesSldLayout, warpObj, "slideLayoutBg"); //slideLayoutBg, slideMasterBg
  10990. }
  10991. }
  10992. }
  10993. }
  10994. if (nodesSldMaster !== undefined && (showMasterSp == "1" || showMasterSp === undefined)) {
  10995. for (var nodeKey in nodesSldMaster) {
  10996. if (nodesSldMaster[nodeKey].constructor === Array) {
  10997. for (var i = 0; i < nodesSldMaster[nodeKey].length; i++) {
  10998. var ph_type = getTextByPathList(nodesSldMaster[nodeKey][i], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  10999. //if (node_ph_type_ary.indexOf(ph_type) > -1) {
  11000. result += processNodesInSlide(nodeKey, nodesSldMaster[nodeKey][i], nodesSldMaster, warpObj, "slideMasterBg"); //slideLayoutBg , slideMasterBg
  11001. //}
  11002. }
  11003. } else {
  11004. var ph_type = getTextByPathList(nodesSldMaster[nodeKey], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
  11005. //if (node_ph_type_ary.indexOf(ph_type) > -1) {
  11006. result += processNodesInSlide(nodeKey, nodesSldMaster[nodeKey], nodesSldMaster, warpObj, "slideMasterBg"); //slideLayoutBg, slideMasterBg
  11007. //}
  11008. }
  11009. }
  11010. }
  11011. return result;
  11012. }
  11013. function getSlideBackgroundFill(warpObj, index) {
  11014. var slideContent = warpObj["slideContent"];
  11015. var slideLayoutContent = warpObj["slideLayoutContent"];
  11016. var slideMasterContent = warpObj["slideMasterContent"];
  11017. //console.log("slideContent: ", slideContent)
  11018. //console.log("slideLayoutContent: ", slideLayoutContent)
  11019. //console.log("slideMasterContent: ", slideMasterContent)
  11020. //getFillType(node)
  11021. var bgPr = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgPr"]);
  11022. var bgRef = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgRef"]);
  11023. //console.log("slideContent >> bgPr: ", bgPr, ", bgRef: ", bgRef)
  11024. var bgcolor;
  11025. if (bgPr !== undefined) {
  11026. //bgcolor = "background-color: blue;";
  11027. var bgFillTyp = getFillType(bgPr);
  11028. if (bgFillTyp == "SOLID_FILL") {
  11029. var sldFill = bgPr["a:solidFill"];
  11030. var clrMapOvr;
  11031. var sldClrMapOvr = getTextByPathList(slideContent, ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  11032. if (sldClrMapOvr !== undefined) {
  11033. clrMapOvr = sldClrMapOvr;
  11034. } else {
  11035. var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  11036. if (sldClrMapOvr !== undefined) {
  11037. clrMapOvr = sldClrMapOvr;
  11038. } else {
  11039. clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]);
  11040. }
  11041. }
  11042. var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj);
  11043. //var sldTint = getColorOpacity(sldFill);
  11044. //console.log("bgColor: ", bgColor)
  11045. //bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  11046. bgcolor = "background: #" + sldBgClr + ";";
  11047. } else if (bgFillTyp == "GRADIENT_FILL") {
  11048. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj);
  11049. } else if (bgFillTyp == "PIC_FILL") {
  11050. //console.log("PIC_FILL - ", bgFillTyp, bgPr, warpObj);
  11051. bgcolor = getBgPicFill(bgPr, "slideBg", warpObj, undefined, index);
  11052. }
  11053. //console.log(slideContent,slideMasterContent,color_ary,tint_ary,rot,bgcolor)
  11054. } else if (bgRef !== undefined) {
  11055. //console.log("slideContent",bgRef)
  11056. var clrMapOvr;
  11057. var sldClrMapOvr = getTextByPathList(slideContent, ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  11058. if (sldClrMapOvr !== undefined) {
  11059. clrMapOvr = sldClrMapOvr;
  11060. } else {
  11061. var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  11062. if (sldClrMapOvr !== undefined) {
  11063. clrMapOvr = sldClrMapOvr;
  11064. } else {
  11065. clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]);
  11066. }
  11067. }
  11068. var phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj);
  11069. // if (bgRef["a:srgbClr"] !== undefined) {
  11070. // phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#...
  11071. // } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr
  11072. // var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]);
  11073. // phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent, undefined); //#...
  11074. // }
  11075. var idx = Number(bgRef["attrs"]["idx"]);
  11076. if (idx == 0 || idx == 1000) {
  11077. //no background
  11078. } else if (idx > 0 && idx < 1000) {
  11079. //fillStyleLst in themeContent
  11080. //themeContent["a:fmtScheme"]["a:fillStyleLst"]
  11081. //bgcolor = "background: red;";
  11082. } else if (idx > 1000) {
  11083. //bgFillStyleLst in themeContent
  11084. //themeContent["a:fmtScheme"]["a:bgFillStyleLst"]
  11085. var trueIdx = idx - 1000;
  11086. // themeContent["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  11087. var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  11088. var sortblAry = [];
  11089. Object.keys(bgFillLst).forEach(function (key) {
  11090. var bgFillLstTyp = bgFillLst[key];
  11091. if (key != "attrs") {
  11092. if (bgFillLstTyp.constructor === Array) {
  11093. for (var i = 0; i < bgFillLstTyp.length; i++) {
  11094. var obj = {};
  11095. obj[key] = bgFillLstTyp[i];
  11096. obj["idex"] = bgFillLstTyp[i]["attrs"]["order"];
  11097. obj["attrs"] = {
  11098. "order": bgFillLstTyp[i]["attrs"]["order"]
  11099. }
  11100. sortblAry.push(obj)
  11101. }
  11102. } else {
  11103. var obj = {};
  11104. obj[key] = bgFillLstTyp;
  11105. obj["idex"] = bgFillLstTyp["attrs"]["order"];
  11106. obj["attrs"] = {
  11107. "order": bgFillLstTyp["attrs"]["order"]
  11108. }
  11109. sortblAry.push(obj)
  11110. }
  11111. }
  11112. });
  11113. var sortByOrder = sortblAry.slice(0);
  11114. sortByOrder.sort(function (a, b) {
  11115. return a.idex - b.idex;
  11116. });
  11117. var bgFillLstIdx = sortByOrder[trueIdx - 1];
  11118. var bgFillTyp = getFillType(bgFillLstIdx);
  11119. if (bgFillTyp == "SOLID_FILL") {
  11120. var sldFill = bgFillLstIdx["a:solidFill"];
  11121. var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj);
  11122. //var sldTint = getColorOpacity(sldFill);
  11123. //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");";
  11124. bgcolor = "background: #" + sldBgClr + ";";
  11125. //console.log("slideMasterContent - sldFill",sldFill)
  11126. } else if (bgFillTyp == "GRADIENT_FILL") {
  11127. bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj);
  11128. } else {
  11129. console.log(bgFillTyp)
  11130. }
  11131. }
  11132. }
  11133. else {
  11134. bgPr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgPr"]);
  11135. bgRef = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgRef"]);
  11136. //console.log("slideLayoutContent >> bgPr: ", bgPr, ", bgRef: ", bgRef)
  11137. var clrMapOvr;
  11138. var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  11139. if (sldClrMapOvr !== undefined) {
  11140. clrMapOvr = sldClrMapOvr;
  11141. } else {
  11142. clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]);
  11143. }
  11144. if (bgPr !== undefined) {
  11145. var bgFillTyp = getFillType(bgPr);
  11146. if (bgFillTyp == "SOLID_FILL") {
  11147. var sldFill = bgPr["a:solidFill"];
  11148. var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj);
  11149. //var sldTint = getColorOpacity(sldFill);
  11150. // bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  11151. bgcolor = "background: #" + sldBgClr + ";";
  11152. } else if (bgFillTyp == "GRADIENT_FILL") {
  11153. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj);
  11154. } else if (bgFillTyp == "PIC_FILL") {
  11155. bgcolor = getBgPicFill(bgPr, "slideLayoutBg", warpObj, undefined, index);
  11156. }
  11157. //console.log("slideLayoutContent",bgcolor)
  11158. } else if (bgRef !== undefined) {
  11159. console.log("slideLayoutContent: bgRef", bgRef)
  11160. //bgcolor = "background: white;";
  11161. var phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj);
  11162. var idx = Number(bgRef["attrs"]["idx"]);
  11163. //console.log("phClr=", phClr, "idx=", idx)
  11164. if (idx == 0 || idx == 1000) {
  11165. //no background
  11166. } else if (idx > 0 && idx < 1000) {
  11167. //fillStyleLst in themeContent
  11168. //themeContent["a:fmtScheme"]["a:fillStyleLst"]
  11169. //bgcolor = "background: red;";
  11170. } else if (idx > 1000) {
  11171. //bgFillStyleLst in themeContent
  11172. //themeContent["a:fmtScheme"]["a:bgFillStyleLst"]
  11173. var trueIdx = idx - 1000;
  11174. var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  11175. var sortblAry = [];
  11176. Object.keys(bgFillLst).forEach(function (key) {
  11177. //console.log("cubicBezTo[" + key + "]:");
  11178. var bgFillLstTyp = bgFillLst[key];
  11179. if (key != "attrs") {
  11180. if (bgFillLstTyp.constructor === Array) {
  11181. for (var i = 0; i < bgFillLstTyp.length; i++) {
  11182. var obj = {};
  11183. obj[key] = bgFillLstTyp[i];
  11184. obj["idex"] = bgFillLstTyp[i]["attrs"]["order"];
  11185. obj["attrs"] = {
  11186. "order": bgFillLstTyp[i]["attrs"]["order"]
  11187. }
  11188. sortblAry.push(obj)
  11189. }
  11190. } else {
  11191. var obj = {};
  11192. obj[key] = bgFillLstTyp;
  11193. obj["idex"] = bgFillLstTyp["attrs"]["order"];
  11194. obj["attrs"] = {
  11195. "order": bgFillLstTyp["attrs"]["order"]
  11196. }
  11197. sortblAry.push(obj)
  11198. }
  11199. }
  11200. });
  11201. var sortByOrder = sortblAry.slice(0);
  11202. sortByOrder.sort(function (a, b) {
  11203. return a.idex - b.idex;
  11204. });
  11205. var bgFillLstIdx = sortByOrder[trueIdx - 1];
  11206. var bgFillTyp = getFillType(bgFillLstIdx);
  11207. if (bgFillTyp == "SOLID_FILL") {
  11208. var sldFill = bgFillLstIdx["a:solidFill"];
  11209. //console.log("sldFill: ", sldFill)
  11210. //var sldTint = getColorOpacity(sldFill);
  11211. //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");";
  11212. var sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj);
  11213. //console.log("bgcolor: ", bgcolor)
  11214. bgcolor = "background: #" + sldBgClr + ";";
  11215. } else if (bgFillTyp == "GRADIENT_FILL") {
  11216. //console.log("GRADIENT_FILL: ", bgFillLstIdx, phClr)
  11217. bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj);
  11218. } else if (bgFillTyp == "PIC_FILL") {
  11219. //theme rels
  11220. //console.log("PIC_FILL - ", bgFillTyp, bgFillLstIdx, bgFillLst, warpObj);
  11221. bgcolor = getBgPicFill(bgFillLstIdx, "themeBg", warpObj, phClr, index);
  11222. } else {
  11223. console.log(bgFillTyp)
  11224. }
  11225. }
  11226. } else {
  11227. bgPr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgPr"]);
  11228. bgRef = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgRef"]);
  11229. var clrMap = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]);
  11230. //console.log("slideMasterContent >> bgPr: ", bgPr, ", bgRef: ", bgRef)
  11231. if (bgPr !== undefined) {
  11232. var bgFillTyp = getFillType(bgPr);
  11233. if (bgFillTyp == "SOLID_FILL") {
  11234. var sldFill = bgPr["a:solidFill"];
  11235. var sldBgClr = getSolidFill(sldFill, clrMap, undefined, warpObj);
  11236. // var sldTint = getColorOpacity(sldFill);
  11237. // bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");";
  11238. bgcolor = "background: #" + sldBgClr + ";";
  11239. } else if (bgFillTyp == "GRADIENT_FILL") {
  11240. bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj);
  11241. } else if (bgFillTyp == "PIC_FILL") {
  11242. bgcolor = getBgPicFill(bgPr, "slideMasterBg", warpObj, undefined, index);
  11243. }
  11244. } else if (bgRef !== undefined) {
  11245. //var obj={
  11246. // "a:solidFill": bgRef
  11247. //}
  11248. var phClr = getSolidFill(bgRef, clrMap, undefined, warpObj);
  11249. // var phClr;
  11250. // if (bgRef["a:srgbClr"] !== undefined) {
  11251. // phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#...
  11252. // } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr
  11253. // var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]);
  11254. // phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent, undefined); //#...
  11255. // }
  11256. var idx = Number(bgRef["attrs"]["idx"]);
  11257. //console.log("phClr=", phClr, "idx=", idx)
  11258. if (idx == 0 || idx == 1000) {
  11259. //no background
  11260. } else if (idx > 0 && idx < 1000) {
  11261. //fillStyleLst in themeContent
  11262. //themeContent["a:fmtScheme"]["a:fillStyleLst"]
  11263. //bgcolor = "background: red;";
  11264. } else if (idx > 1000) {
  11265. //bgFillStyleLst in themeContent
  11266. //themeContent["a:fmtScheme"]["a:bgFillStyleLst"]
  11267. var trueIdx = idx - 1000;
  11268. var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"];
  11269. var sortblAry = [];
  11270. Object.keys(bgFillLst).forEach(function (key) {
  11271. //console.log("cubicBezTo[" + key + "]:");
  11272. var bgFillLstTyp = bgFillLst[key];
  11273. if (key != "attrs") {
  11274. if (bgFillLstTyp.constructor === Array) {
  11275. for (var i = 0; i < bgFillLstTyp.length; i++) {
  11276. var obj = {};
  11277. obj[key] = bgFillLstTyp[i];
  11278. obj["idex"] = bgFillLstTyp[i]["attrs"]["order"];
  11279. obj["attrs"] = {
  11280. "order": bgFillLstTyp[i]["attrs"]["order"]
  11281. }
  11282. sortblAry.push(obj)
  11283. }
  11284. } else {
  11285. var obj = {};
  11286. obj[key] = bgFillLstTyp;
  11287. obj["idex"] = bgFillLstTyp["attrs"]["order"];
  11288. obj["attrs"] = {
  11289. "order": bgFillLstTyp["attrs"]["order"]
  11290. }
  11291. sortblAry.push(obj)
  11292. }
  11293. }
  11294. });
  11295. var sortByOrder = sortblAry.slice(0);
  11296. sortByOrder.sort(function (a, b) {
  11297. return a.idex - b.idex;
  11298. });
  11299. var bgFillLstIdx = sortByOrder[trueIdx - 1];
  11300. var bgFillTyp = getFillType(bgFillLstIdx);
  11301. //console.log("bgFillLstIdx: ", bgFillLstIdx, ", bgFillTyp: ", bgFillTyp, ", phClr: ", phClr);
  11302. if (bgFillTyp == "SOLID_FILL") {
  11303. var sldFill = bgFillLstIdx["a:solidFill"];
  11304. //console.log("sldFill: ", sldFill)
  11305. //var sldTint = getColorOpacity(sldFill);
  11306. //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");";
  11307. var sldBgClr = getSolidFill(sldFill, clrMap, phClr, warpObj);
  11308. //console.log("bgcolor: ", bgcolor)
  11309. bgcolor = "background: #" + sldBgClr + ";";
  11310. } else if (bgFillTyp == "GRADIENT_FILL") {
  11311. //console.log("GRADIENT_FILL: ", bgFillLstIdx, phClr)
  11312. bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj);
  11313. } else if (bgFillTyp == "PIC_FILL") {
  11314. //theme rels
  11315. // console.log("PIC_FILL - ", bgFillTyp, bgFillLstIdx, bgFillLst, warpObj);
  11316. bgcolor = getBgPicFill(bgFillLstIdx, "themeBg", warpObj, phClr, index);
  11317. } else {
  11318. console.log(bgFillTyp)
  11319. }
  11320. }
  11321. }
  11322. }
  11323. }
  11324. //console.log("bgcolor: ", bgcolor)
  11325. return bgcolor;
  11326. }
  11327. function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) {
  11328. var bgcolor = "";
  11329. if (bgPr !== undefined) {
  11330. var grdFill = bgPr["a:gradFill"];
  11331. var gsLst = grdFill["a:gsLst"]["a:gs"];
  11332. //var startColorNode, endColorNode;
  11333. var color_ary = [];
  11334. var pos_ary = [];
  11335. //var tint_ary = [];
  11336. for (var i = 0; i < gsLst.length; i++) {
  11337. var lo_tint;
  11338. var lo_color = "";
  11339. var lo_color = getSolidFill(gsLst[i], slideMasterContent["p:sldMaster"]["p:clrMap"]["attrs"], phClr, warpObj);
  11340. var pos = getTextByPathList(gsLst[i], ["attrs", "pos"])
  11341. //console.log("pos: ", pos)
  11342. if (pos !== undefined) {
  11343. pos_ary[i] = pos / 1000 + "%";
  11344. } else {
  11345. pos_ary[i] = "";
  11346. }
  11347. //console.log("lo_color", lo_color)
  11348. color_ary[i] = "#" + lo_color;
  11349. //tint_ary[i] = (lo_tint !== undefined) ? parseInt(lo_tint) / 100000 : 1;
  11350. }
  11351. //get rot
  11352. var lin = grdFill["a:lin"];
  11353. var rot = 90;
  11354. if (lin !== undefined) {
  11355. rot = angleToDegrees(lin["attrs"]["ang"]);// + 270;
  11356. //console.log("rot: ", rot)
  11357. rot = rot + 90;
  11358. }
  11359. bgcolor = "background: linear-gradient(" + rot + "deg,";
  11360. for (var i = 0; i < gsLst.length; i++) {
  11361. if (i == gsLst.length - 1) {
  11362. //if (phClr === undefined) {
  11363. //bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ");";
  11364. bgcolor += color_ary[i] + " " + pos_ary[i] + ");";
  11365. //} else {
  11366. //bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ");";
  11367. // bgcolor += "" + phClr + ";";;
  11368. //}
  11369. } else {
  11370. //if (phClr === undefined) {
  11371. //bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ", ";
  11372. bgcolor += color_ary[i] + " " + pos_ary[i] + ", ";;
  11373. //} else {
  11374. //bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ", ";
  11375. // bgcolor += phClr + ", ";
  11376. //}
  11377. }
  11378. }
  11379. } else {
  11380. if (phClr !== undefined) {
  11381. //bgcolor = "rgba(" + hexToRgbNew(phClr) + ",0);";
  11382. //bgcolor = phClr + ");";
  11383. bgcolor = "background: #" + phClr + ";";
  11384. }
  11385. }
  11386. return bgcolor;
  11387. }
  11388. function getBgPicFill(bgPr, sorce, warpObj, phClr, index) {
  11389. //console.log("getBgPicFill bgPr", bgPr)
  11390. var bgcolor;
  11391. var picFillBase64 = getPicFill(sorce, bgPr["a:blipFill"], warpObj);
  11392. var ordr = bgPr["attrs"]["order"];
  11393. var aBlipNode = bgPr["a:blipFill"]["a:blip"];
  11394. //a:duotone
  11395. var duotone = getTextByPathList(aBlipNode, ["a:duotone"]);
  11396. if (duotone !== undefined) {
  11397. //console.log("pic duotone: ", duotone)
  11398. var clr_ary = [];
  11399. // duotone.forEach(function (clr) {
  11400. // console.log("pic duotone clr: ", clr)
  11401. // })
  11402. Object.keys(duotone).forEach(function (clr_type) {
  11403. //console.log("pic duotone clr: clr_type: ", clr_type, duotone[clr_type])
  11404. if (clr_type != "attrs") {
  11405. var obj = {};
  11406. obj[clr_type] = duotone[clr_type];
  11407. clr_ary.push(getSolidFill(obj, undefined, phClr, warpObj));
  11408. }
  11409. // Object.keys(duotone[clr_type]).forEach(function (clr) {
  11410. // if (clr != "order") {
  11411. // var obj = {};
  11412. // obj[clr_type] = duotone[clr_type][clr];
  11413. // clr_ary.push(getSolidFill(obj, undefined, phClr, warpObj));
  11414. // }
  11415. // })
  11416. })
  11417. //console.log("pic duotone clr_ary: ", clr_ary);
  11418. //filter: url(file.svg#filter-element-id)
  11419. //https://codepen.io/bhenbe/pen/QEZOvd
  11420. //https://www.w3schools.com/cssref/css3_pr_filter.asp
  11421. // var color1 = clr_ary[0];
  11422. // var color2 = clr_ary[1];
  11423. // var cssName = "";
  11424. // var styleText_before_after = "content: '';" +
  11425. // "display: block;" +
  11426. // "width: 100%;" +
  11427. // "height: 100%;" +
  11428. // // "z-index: 1;" +
  11429. // "position: absolute;" +
  11430. // "top: 0;" +
  11431. // "left: 0;";
  11432. // var cssName = "slide-background-" + index + "::before," + " .slide-background-" + index + "::after";
  11433. // styleTable[styleText_before_after] = {
  11434. // "name": cssName,
  11435. // "text": styleText_before_after
  11436. // };
  11437. // var styleText_after = "background-color: #" + clr_ary[1] + ";" +
  11438. // "mix-blend-mode: darken;";
  11439. // cssName = "slide-background-" + index + "::after";
  11440. // styleTable[styleText_after] = {
  11441. // "name": cssName,
  11442. // "text": styleText_after
  11443. // };
  11444. // var styleText_before = "background-color: #" + clr_ary[0] + ";" +
  11445. // "mix-blend-mode: lighten;";
  11446. // cssName = "slide-background-" + index + "::before";
  11447. // styleTable[styleText_before] = {
  11448. // "name": cssName,
  11449. // "text": styleText_before
  11450. // };
  11451. }
  11452. //a:alphaModFix
  11453. var aphaModFixNode = getTextByPathList(aBlipNode, ["a:alphaModFix", "attrs"])
  11454. var imgOpacity = "";
  11455. if (aphaModFixNode !== undefined && aphaModFixNode["amt"] !== undefined && aphaModFixNode["amt"] != "") {
  11456. var amt = parseInt(aphaModFixNode["amt"]) / 100000;
  11457. //var opacity = amt;
  11458. imgOpacity = "opacity:" + amt + ";";
  11459. }
  11460. //a:tile
  11461. var tileNode = getTextByPathList(bgPr, ["a:blipFill", "a:tile", "attrs"])
  11462. var prop_style = "";
  11463. if (tileNode !== undefined && tileNode["sx"] !== undefined) {
  11464. var sx = (parseInt(tileNode["sx"]) / 100000);
  11465. var sy = (parseInt(tileNode["sy"]) / 100000);
  11466. var tx = (parseInt(tileNode["tx"]) / 100000);
  11467. var ty = (parseInt(tileNode["ty"]) / 100000);
  11468. var algn = tileNode["algn"]; //tl(top left),t(top), tr(top right), l(left), ctr(center), r(right), bl(bottom left), b(bottm) , br(bottom right)
  11469. var flip = tileNode["flip"]; //none,x,y ,xy
  11470. prop_style += "background-repeat: round;"; //repeat|repeat-x|repeat-y|no-repeat|space|round|initial|inherit;
  11471. //prop_style += "background-size: 300px 100px;"; size (w,h,sx, sy) -TODO
  11472. //prop_style += "background-position: 50% 40%;"; //offset (tx, ty) -TODO
  11473. }
  11474. //a:srcRect
  11475. //a:stretch => a:fillRect =>attrs (l:-17000, r:-17000)
  11476. var stretch = getTextByPathList(bgPr, ["a:blipFill", "a:stretch"]);
  11477. if (stretch !== undefined) {
  11478. var fillRect = getTextByPathList(stretch, ["a:fillRect", "attrs"]);
  11479. //console.log("getBgPicFill=>bgPr: ", bgPr)
  11480. // var top = fillRect["t"], right = fillRect["r"], bottom = fillRect["b"], left = fillRect["l"];
  11481. prop_style += "background-repeat: no-repeat;";
  11482. prop_style += "background-position: center;";
  11483. if (fillRect !== undefined) {
  11484. //prop_style += "background-size: contain, cover;";
  11485. prop_style += "background-size: 100% 100%;;";
  11486. }
  11487. }
  11488. bgcolor = "background: url(" + picFillBase64 + "); z-index: " + ordr + ";" + prop_style + imgOpacity;
  11489. return bgcolor;
  11490. }
  11491. // function hexToRgbNew(hex) {
  11492. // var arrBuff = new ArrayBuffer(4);
  11493. // var vw = new DataView(arrBuff);
  11494. // vw.setUint32(0, parseInt(hex, 16), false);
  11495. // var arrByte = new Uint8Array(arrBuff);
  11496. // return arrByte[1] + "," + arrByte[2] + "," + arrByte[3];
  11497. // }
  11498. function getShapeFill(node, pNode, isSvgMode, warpObj, source) {
  11499. // 1. presentationML
  11500. // p:spPr/ [a:noFill, solidFill, gradFill, blipFill, pattFill, grpFill]
  11501. // From slide
  11502. //Fill Type:
  11503. //console.log("getShapeFill ShapeFill: ", node, ", isSvgMode; ", isSvgMode)
  11504. var fillType = getFillType(getTextByPathList(node, ["p:spPr"]));
  11505. //var noFill = getTextByPathList(node, ["p:spPr", "a:noFill"]);
  11506. var fillColor;
  11507. if (fillType == "NO_FILL") {
  11508. return isSvgMode ? "none" : "";//"background-color: initial;";
  11509. } else if (fillType == "SOLID_FILL") {
  11510. var shpFill = node["p:spPr"]["a:solidFill"];
  11511. fillColor = getSolidFill(shpFill, undefined, undefined, warpObj);
  11512. } else if (fillType == "GRADIENT_FILL") {
  11513. var shpFill = node["p:spPr"]["a:gradFill"];
  11514. fillColor = getGradientFill(shpFill, warpObj);
  11515. //console.log("shpFill",shpFill,grndColor.color)
  11516. } else if (fillType == "PATTERN_FILL") {
  11517. var shpFill = node["p:spPr"]["a:pattFill"];
  11518. fillColor = getPatternFill(shpFill, warpObj);
  11519. } else if (fillType == "PIC_FILL") {
  11520. var shpFill = node["p:spPr"]["a:blipFill"];
  11521. fillColor = getPicFill(source, shpFill, warpObj);
  11522. }
  11523. //console.log("getShapeFill ShapeFill: ", node, ", isSvgMode; ", isSvgMode, ", fillType: ", fillType, ", fillColor: ", fillColor, ", source: ", source)
  11524. // 2. drawingML namespace
  11525. if (fillColor === undefined) {
  11526. var clrName = getTextByPathList(node, ["p:style", "a:fillRef"]);
  11527. var idx = parseInt(getTextByPathList(node, ["p:style", "a:fillRef", "attrs", "idx"]));
  11528. if (idx == 0 || idx == 1000) {
  11529. //no fill
  11530. return isSvgMode ? "none" : "";
  11531. } else if (idx > 0 && idx < 1000) {
  11532. // <a:fillStyleLst> fill
  11533. } else if (idx > 1000) {
  11534. //<a:bgFillStyleLst>
  11535. }
  11536. fillColor = getSolidFill(clrName, undefined, undefined, warpObj);
  11537. }
  11538. // 3. is group fill
  11539. if (fillColor === undefined) {
  11540. var grpFill = getTextByPathList(node, ["p:spPr", "a:grpFill"]);
  11541. if (grpFill !== undefined) {
  11542. //fillColor = getSolidFill(clrName, undefined, undefined, undefined, warpObj);
  11543. //get parent fill style - TODO
  11544. //console.log("ShapeFill: grpFill: ", grpFill, ", pNode: ", pNode)
  11545. var grpShpFill = pNode["p:grpSpPr"];
  11546. var spShpNode = { "p:spPr": grpShpFill }
  11547. return getShapeFill(spShpNode, node, isSvgMode, warpObj, source);
  11548. } else if (fillType == "NO_FILL") {
  11549. return isSvgMode ? "none" : "";
  11550. }
  11551. }
  11552. //console.log("ShapeFill: fillColor: ", fillColor, ", fillType; ", fillType)
  11553. if (fillColor !== undefined) {
  11554. if (fillType == "GRADIENT_FILL") {
  11555. if (isSvgMode) {
  11556. // console.log("GRADIENT_FILL color", fillColor.color[0])
  11557. return fillColor;
  11558. } else {
  11559. var colorAry = fillColor.color;
  11560. var rot = fillColor.rot;
  11561. var bgcolor = "background: linear-gradient(" + rot + "deg,";
  11562. for (var i = 0; i < colorAry.length; i++) {
  11563. if (i == colorAry.length - 1) {
  11564. bgcolor += "#" + colorAry[i] + ");";
  11565. } else {
  11566. bgcolor += "#" + colorAry[i] + ", ";
  11567. }
  11568. }
  11569. return bgcolor;
  11570. }
  11571. } else if (fillType == "PIC_FILL") {
  11572. if (isSvgMode) {
  11573. return fillColor;
  11574. } else {
  11575. return "background-image:url(" + fillColor + ");";
  11576. }
  11577. } else if (fillType == "PATTERN_FILL") {
  11578. /////////////////////////////////////////////////////////////Need to check -----------TODO
  11579. // if (isSvgMode) {
  11580. // var color = tinycolor(fillColor);
  11581. // fillColor = color.toRgbString();
  11582. // return fillColor;
  11583. // } else {
  11584. var bgPtrn = "", bgSize = "", bgPos = "";
  11585. bgPtrn = fillColor[0];
  11586. if (fillColor[1] !== null && fillColor[1] !== undefined && fillColor[1] != "") {
  11587. bgSize = " background-size:" + fillColor[1] + ";";
  11588. }
  11589. if (fillColor[2] !== null && fillColor[2] !== undefined && fillColor[2] != "") {
  11590. bgPos = " background-position:" + fillColor[2] + ";";
  11591. }
  11592. return "background: " + bgPtrn + ";" + bgSize + bgPos;
  11593. //}
  11594. } else {
  11595. if (isSvgMode) {
  11596. var color = tinycolor(fillColor);
  11597. fillColor = color.toRgbString();
  11598. return fillColor;
  11599. } else {
  11600. //console.log(node,"fillColor: ",fillColor,"fillType: ",fillType,"isSvgMode: ",isSvgMode)
  11601. return "background-color: #" + fillColor + ";";
  11602. }
  11603. }
  11604. } else {
  11605. if (isSvgMode) {
  11606. return "none";
  11607. } else {
  11608. return "background-color: inherit;";
  11609. }
  11610. }
  11611. }
  11612. ///////////////////////Amir//////////////////////////////
  11613. function getFillType(node) {
  11614. //Need to test/////////////////////////////////////////////
  11615. //SOLID_FILL
  11616. //PIC_FILL
  11617. //GRADIENT_FILL
  11618. //PATTERN_FILL
  11619. //NO_FILL
  11620. var fillType = "";
  11621. if (node["a:noFill"] !== undefined) {
  11622. fillType = "NO_FILL";
  11623. }
  11624. if (node["a:solidFill"] !== undefined) {
  11625. fillType = "SOLID_FILL";
  11626. }
  11627. if (node["a:gradFill"] !== undefined) {
  11628. fillType = "GRADIENT_FILL";
  11629. }
  11630. if (node["a:pattFill"] !== undefined) {
  11631. fillType = "PATTERN_FILL";
  11632. }
  11633. if (node["a:blipFill"] !== undefined) {
  11634. fillType = "PIC_FILL";
  11635. }
  11636. if (node["a:grpFill"] !== undefined) {
  11637. fillType = "GROUP_FILL";
  11638. }
  11639. return fillType;
  11640. }
  11641. function getGradientFill(node, warpObj) {
  11642. //console.log("getGradientFill: node", node)
  11643. var gsLst = node["a:gsLst"]["a:gs"];
  11644. //get start color
  11645. var color_ary = [];
  11646. var tint_ary = [];
  11647. for (var i = 0; i < gsLst.length; i++) {
  11648. var lo_tint;
  11649. var lo_color = getSolidFill(gsLst[i], undefined, undefined, warpObj);
  11650. //console.log("lo_color",lo_color)
  11651. color_ary[i] = lo_color;
  11652. }
  11653. //get rot
  11654. var lin = node["a:lin"];
  11655. var rot = 0;
  11656. if (lin !== undefined) {
  11657. rot = angleToDegrees(lin["attrs"]["ang"]) + 90;
  11658. }
  11659. return {
  11660. "color": color_ary,
  11661. "rot": rot
  11662. }
  11663. }
  11664. function getPicFill(type, node, warpObj) {
  11665. //Need to test/////////////////////////////////////////////
  11666. //rId
  11667. //TODO - Image Properties - Tile, Stretch, or Display Portion of Image
  11668. //(http://officeopenxml.com/drwPic-tile.php)
  11669. var img;
  11670. var rId = node["a:blip"]["attrs"]["r:embed"];
  11671. var imgPath;
  11672. //console.log("getPicFill(...) rId: ", rId, ", warpObj: ", warpObj, ", type: ", type)
  11673. if (type == "slideBg" || type == "slide") {
  11674. imgPath = getTextByPathList(warpObj, ["slideResObj", rId, "target"]);
  11675. } else if (type == "slideLayoutBg") {
  11676. imgPath = getTextByPathList(warpObj, ["layoutResObj", rId, "target"]);
  11677. } else if (type == "slideMasterBg") {
  11678. imgPath = getTextByPathList(warpObj, ["masterResObj", rId, "target"]);
  11679. } else if (type == "themeBg") {
  11680. imgPath = getTextByPathList(warpObj, ["themeResObj", rId, "target"]);
  11681. } else if (type == "diagramBg") {
  11682. imgPath = getTextByPathList(warpObj, ["diagramResObj", rId, "target"]);
  11683. }
  11684. if (imgPath === undefined) {
  11685. return undefined;
  11686. }
  11687. img = getTextByPathList(warpObj, ["loaded-images", imgPath]); //, type, rId
  11688. if (img === undefined) {
  11689. imgPath = escapeHtml(imgPath);
  11690. var imgExt = imgPath.split(".").pop();
  11691. if (imgExt == "xml") {
  11692. return undefined;
  11693. }
  11694. var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer();
  11695. var imgMimeType = getMimeType(imgExt);
  11696. img = "data:" + imgMimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer);
  11697. //warpObj["loaded-images"][imgPath] = img; //"defaultTextStyle": defaultTextStyle,
  11698. setTextByPathList(warpObj, ["loaded-images", imgPath], img); //, type, rId
  11699. }
  11700. return img;
  11701. }
  11702. function getPatternFill(node, warpObj) {
  11703. //https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Images/Using_CSS_gradients
  11704. //https://cssgradient.io/blog/css-gradient-text/
  11705. //https://css-tricks.com/background-patterns-simplified-by-conic-gradients/
  11706. //https://stackoverflow.com/questions/6705250/how-to-get-a-pattern-into-a-written-text-via-css
  11707. //https://stackoverflow.com/questions/14072142/striped-text-in-css
  11708. //https://css-tricks.com/stripes-css/
  11709. //https://yuanchuan.dev/gradient-shapes/
  11710. var fgColor = "", bgColor = "", prst = "";
  11711. var bgClr = node["a:bgClr"];
  11712. var fgClr = node["a:fgClr"];
  11713. prst = node["attrs"]["prst"];
  11714. fgColor = getSolidFill(fgClr, undefined, undefined, warpObj);
  11715. bgColor = getSolidFill(bgClr, undefined, undefined, warpObj);
  11716. //var angl_ary = getAnglefromParst(prst);
  11717. //var ptrClr = "repeating-linear-gradient(" + angl + "deg, #" + bgColor + ",#" + fgColor + " 2px);"
  11718. //linear-gradient(0deg, black 10 %, transparent 10 %, transparent 90 %, black 90 %, black),
  11719. //linear-gradient(90deg, black 10 %, transparent 10 %, transparent 90 %, black 90 %, black);
  11720. var linear_gradient = getLinerGrandient(prst, bgColor, fgColor);
  11721. //console.log("getPatternFill: node:", node, ", prst: ", prst, ", fgColor: ", fgColor, ", bgColor:", bgColor, ', linear_gradient: ', linear_gradient)
  11722. return linear_gradient;
  11723. }
  11724. function getLinerGrandient(prst, bgColor, fgColor) {
  11725. // dashDnDiag (Dashed Downward Diagonal)-V
  11726. // dashHorz (Dashed Horizontal)-V
  11727. // dashUpDiag(Dashed Upward DIagonal)-V
  11728. // dashVert(Dashed Vertical)-V
  11729. // diagBrick(Diagonal Brick)-V
  11730. // divot(Divot)-VX
  11731. // dkDnDiag(Dark Downward Diagonal)-V
  11732. // dkHorz(Dark Horizontal)-V
  11733. // dkUpDiag(Dark Upward Diagonal)-V
  11734. // dkVert(Dark Vertical)-V
  11735. // dotDmnd(Dotted Diamond)-VX
  11736. // dotGrid(Dotted Grid)-V
  11737. // horzBrick(Horizontal Brick)-V
  11738. // lgCheck(Large Checker Board)-V
  11739. // lgConfetti(Large Confetti)-V
  11740. // lgGrid(Large Grid)-V
  11741. // ltDnDiag(Light Downward Diagonal)-V
  11742. // ltHorz(Light Horizontal)-V
  11743. // ltUpDiag(Light Upward Diagonal)-V
  11744. // ltVert(Light Vertical)-V
  11745. // narHorz(Narrow Horizontal)-V
  11746. // narVert(Narrow Vertical)-V
  11747. // openDmnd(Open Diamond)-V
  11748. // pct10(10 %)-V
  11749. // pct20(20 %)-V
  11750. // pct25(25 %)-V
  11751. // pct30(30 %)-V
  11752. // pct40(40 %)-V
  11753. // pct5(5 %)-V
  11754. // pct50(50 %)-V
  11755. // pct60(60 %)-V
  11756. // pct70(70 %)-V
  11757. // pct75(75 %)-V
  11758. // pct80(80 %)-V
  11759. // pct90(90 %)-V
  11760. // smCheck(Small Checker Board) -V
  11761. // smConfetti(Small Confetti)-V
  11762. // smGrid(Small Grid) -V
  11763. // solidDmnd(Solid Diamond)-V
  11764. // sphere(Sphere)-V
  11765. // trellis(Trellis)-VX
  11766. // wave(Wave)-V
  11767. // wdDnDiag(Wide Downward Diagonal)-V
  11768. // wdUpDiag(Wide Upward Diagonal)-V
  11769. // weave(Weave)-V
  11770. // zigZag(Zig Zag)-V
  11771. // shingle(Shingle)-V
  11772. // plaid(Plaid)-V
  11773. // cross (Cross)
  11774. // diagCross(Diagonal Cross)
  11775. // dnDiag(Downward Diagonal)
  11776. // horz(Horizontal)
  11777. // upDiag(Upward Diagonal)
  11778. // vert(Vertical)
  11779. switch (prst) {
  11780. case "smGrid":
  11781. return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1px ), " +
  11782. "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1px) #" + bgColor + ";", "4px 4px"];
  11783. break
  11784. case "dotGrid":
  11785. return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1px ), " +
  11786. "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1px) #" + bgColor + ";", "8px 8px"];
  11787. break
  11788. case "lgGrid":
  11789. return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1.5px ), " +
  11790. "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1.5px) #" + bgColor + ";", "8px 8px"];
  11791. break
  11792. case "wdUpDiag":
  11793. //return ["repeating-linear-gradient(-45deg, #" + bgColor + ", #" + bgColor + " 1px,#" + fgColor + " 5px);"];
  11794. return ["repeating-linear-gradient(-45deg, transparent 1px , transparent 4px, #" + fgColor + " 7px)" + "#" + bgColor + ";"];
  11795. // return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 1px), #" + fgColor + " 50%, transparent calc(50% + 1px), transparent 100%) " +
  11796. // "#" + bgColor + ";", "6px 6px"];
  11797. break
  11798. case "dkUpDiag":
  11799. return ["repeating-linear-gradient(-45deg, transparent 1px , #" + bgColor + " 5px)" + "#" + fgColor + ";"];
  11800. break
  11801. case "ltUpDiag":
  11802. return ["repeating-linear-gradient(-45deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"];
  11803. break
  11804. case "wdDnDiag":
  11805. return ["repeating-linear-gradient(45deg, transparent 1px , transparent 4px, #" + fgColor + " 7px)" + "#" + bgColor + ";"];
  11806. break
  11807. case "dkDnDiag":
  11808. return ["repeating-linear-gradient(45deg, transparent 1px , #" + bgColor + " 5px)" + "#" + fgColor + ";"];
  11809. break
  11810. case "ltDnDiag":
  11811. return ["repeating-linear-gradient(45deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"];
  11812. break
  11813. case "dkHorz":
  11814. return ["repeating-linear-gradient(0deg, transparent 1px , transparent 2px, #" + bgColor + " 7px)" + "#" + fgColor + ";"];
  11815. break
  11816. case "ltHorz":
  11817. return ["repeating-linear-gradient(0deg, transparent 1px , transparent 5px, #" + fgColor + " 7px)" + "#" + bgColor + ";"];
  11818. break
  11819. case "narHorz":
  11820. return ["repeating-linear-gradient(0deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"];
  11821. break
  11822. case "dkVert":
  11823. return ["repeating-linear-gradient(90deg, transparent 1px , transparent 2px, #" + bgColor + " 7px)" + "#" + fgColor + ";"];
  11824. break
  11825. case "ltVert":
  11826. return ["repeating-linear-gradient(90deg, transparent 1px , transparent 5px, #" + fgColor + " 7px)" + "#" + bgColor + ";"];
  11827. break
  11828. case "narVert":
  11829. return ["repeating-linear-gradient(90deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"];
  11830. break
  11831. case "lgCheck":
  11832. case "smCheck":
  11833. var size = "";
  11834. var pos = "";
  11835. if (prst == "lgCheck") {
  11836. size = "8px 8px";
  11837. pos = "0 0, 4px 4px, 4px 4px, 8px 8px";
  11838. } else {
  11839. size = "4px 4px";
  11840. pos = "0 0, 2px 2px, 2px 2px, 4px 4px";
  11841. }
  11842. return ["linear-gradient(45deg, #" + fgColor + " 25%, transparent 0, transparent 75%, #" + fgColor + " 0), " +
  11843. "linear-gradient(45deg, #" + fgColor + " 25%, transparent 0, transparent 75%, #" + fgColor + " 0) " +
  11844. "#" + bgColor + ";", size, pos];
  11845. break
  11846. // case "smCheck":
  11847. // return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 0.5px), #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%), " +
  11848. // "linear-gradient(-45deg, transparent 0%, transparent calc(50% - 0.5px) , #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%) " +
  11849. // "#" + bgColor + ";", "4px 4px"];
  11850. // break
  11851. case "dashUpDiag":
  11852. return ["repeating-linear-gradient(152deg, #" + fgColor + ", #" + fgColor + " 5% , transparent 0, transparent 70%)" +
  11853. "#" + bgColor + ";", "4px 4px"];
  11854. break
  11855. case "dashDnDiag":
  11856. return ["repeating-linear-gradient(45deg, #" + fgColor + ", #" + fgColor + " 5% , transparent 0, transparent 70%)" +
  11857. "#" + bgColor + ";", "4px 4px"];
  11858. break
  11859. case "diagBrick":
  11860. return ["linear-gradient(45deg, transparent 15%, #" + fgColor + " 30%, transparent 30%), " +
  11861. "linear-gradient(-45deg, transparent 15%, #" + fgColor + " 30%, transparent 30%), " +
  11862. "linear-gradient(-45deg, transparent 65%, #" + fgColor + " 80%, transparent 0) " +
  11863. "#" + bgColor + ";", "4px 4px"];
  11864. break
  11865. case "horzBrick":
  11866. return ["linear-gradient(335deg, #" + bgColor + " 1.6px, transparent 1.6px), " +
  11867. "linear-gradient(155deg, #" + bgColor + " 1.6px, transparent 1.6px), " +
  11868. "linear-gradient(335deg, #" + bgColor + " 1.6px, transparent 1.6px), " +
  11869. "linear-gradient(155deg, #" + bgColor + " 1.6px, transparent 1.6px) " +
  11870. "#" + fgColor + ";", "4px 4px", "0 0.15px, 0.3px 2.5px, 2px 2.15px, 2.35px 0.4px"];
  11871. break
  11872. case "dashVert":
  11873. return ["linear-gradient(0deg, #" + bgColor + " 30%, transparent 30%)," +
  11874. "linear-gradient(90deg,transparent, transparent 40%, #" + fgColor + " 40%, #" + fgColor + " 60% , transparent 60%)" +
  11875. "#" + bgColor + ";", "4px 4px"];
  11876. break
  11877. case "dashHorz":
  11878. return ["linear-gradient(90deg, #" + bgColor + " 30%, transparent 30%)," +
  11879. "linear-gradient(0deg,transparent, transparent 40%, #" + fgColor + " 40%, #" + fgColor + " 60% , transparent 60%)" +
  11880. "#" + bgColor + ";", "4px 4px"];
  11881. break
  11882. case "solidDmnd":
  11883. return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%), " +
  11884. "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%), " +
  11885. "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%), " +
  11886. "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " +
  11887. "#" + bgColor + ";", "8px 8px"];
  11888. break
  11889. case "openDmnd":
  11890. return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 0.5px), #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%), " +
  11891. "linear-gradient(-45deg, transparent 0%, transparent calc(50% - 0.5px) , #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%) " +
  11892. "#" + bgColor + ";", "8px 8px"];
  11893. break
  11894. case "dotDmnd":
  11895. return ["radial-gradient(#" + fgColor + " 15%, transparent 0), " +
  11896. "radial-gradient(#" + fgColor + " 15%, transparent 0) " +
  11897. "#" + bgColor + ";", "4px 4px", "0 0, 2px 2px"];
  11898. break
  11899. case "zigZag":
  11900. case "wave":
  11901. var size = "";
  11902. if (prst == "zigZag") size = "0";
  11903. else size = "1px";
  11904. return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%) 50px " + size + ", " +
  11905. "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%) 50px " + size + ", " +
  11906. "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%), " +
  11907. "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " +
  11908. "#" + bgColor + ";", "4px 4px"];
  11909. break
  11910. case "lgConfetti":
  11911. case "smConfetti":
  11912. var size = "";
  11913. if (prst == "lgConfetti") size = "4px 4px";
  11914. else size = "2px 2px";
  11915. return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%) 50px 1px, " +
  11916. "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%), " +
  11917. "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%) 50px 1px , " +
  11918. "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " +
  11919. "#" + bgColor + ";", size];
  11920. break
  11921. // case "weave":
  11922. // return ["linear-gradient(45deg, #" + bgColor + " 5%, transparent 25%) 50px 0, " +
  11923. // "linear-gradient(135deg, #" + bgColor + " 25%, transparent 25%) 50px 0, " +
  11924. // "linear-gradient(45deg, #" + bgColor + " 25%, transparent 25%) " +
  11925. // "#" + fgColor + ";", "4px 4px"];
  11926. // //background: linear-gradient(45deg, #dca 12%, transparent 0, transparent 88%, #dca 0),
  11927. // //linear-gradient(135deg, transparent 37 %, #a85 0, #a85 63 %, transparent 0),
  11928. // //linear-gradient(45deg, transparent 37 %, #dca 0, #dca 63 %, transparent 0) #753;
  11929. // // background-size: 25px 25px;
  11930. // break;
  11931. case "plaid":
  11932. return ["linear-gradient(0deg, transparent, transparent 25%, #" + fgColor + "33 25%, #" + fgColor + "33 50%)," +
  11933. "linear-gradient(90deg, transparent, transparent 25%, #" + fgColor + "66 25%, #" + fgColor + "66 50%) " +
  11934. "#" + bgColor + ";", "4px 4px"];
  11935. /**
  11936. background-color: #6677dd;
  11937. background-image:
  11938. repeating-linear-gradient(0deg, transparent, transparent 35px, rgba(255, 255, 255, 0.2) 35px, rgba(255, 255, 255, 0.2) 70px),
  11939. repeating-linear-gradient(90deg, transparent, transparent 35px, rgba(255,255,255,0.4) 35px, rgba(255,255,255,0.4) 70px);
  11940. */
  11941. break;
  11942. case "sphere":
  11943. return ["radial-gradient(#" + fgColor + " 50%, transparent 50%)," +
  11944. "#" + bgColor + ";", "4px 4px"];
  11945. break
  11946. case "weave":
  11947. case "shingle":
  11948. return ["linear-gradient(45deg, #" + bgColor + " 1.31px , #" + fgColor + " 1.4px, #" + fgColor + " 1.5px, transparent 1.5px, transparent 4.2px, #" + fgColor + " 4.2px, #" + fgColor + " 4.3px, transparent 4.31px), " +
  11949. "linear-gradient(-45deg, #" + bgColor + " 1.31px , #" + fgColor + " 1.4px, #" + fgColor + " 1.5px, transparent 1.5px, transparent 4.2px, #" + fgColor + " 4.2px, #" + fgColor + " 4.3px, transparent 4.31px) 0 4px, " +
  11950. "#" + bgColor + ";", "4px 8px"];
  11951. break
  11952. //background:
  11953. //linear-gradient(45deg, #708090 1.31px, #d9ecff 1.4px, #d9ecff 1.5px, transparent 1.5px, transparent 4.2px, #d9ecff 4.2px, #d9ecff 4.3px, transparent 4.31px),
  11954. //linear-gradient(-45deg, #708090 1.31px, #d9ecff 1.4px, #d9ecff 1.5px, transparent 1.5px, transparent 4.2px, #d9ecff 4.2px, #d9ecff 4.3px, transparent 4.31px)0 4px;
  11955. //background-color:#708090;
  11956. //background-size: 4px 8px;
  11957. case "pct5":
  11958. case "pct10":
  11959. case "pct20":
  11960. case "pct25":
  11961. case "pct30":
  11962. case "pct40":
  11963. case "pct50":
  11964. case "pct60":
  11965. case "pct70":
  11966. case "pct75":
  11967. case "pct80":
  11968. case "pct90":
  11969. //case "dotDmnd":
  11970. case "trellis":
  11971. case "divot":
  11972. var px_pr_ary;
  11973. switch (prst) {
  11974. case "pct5":
  11975. px_pr_ary = ["0.3px", "10%", "2px 2px"];
  11976. break
  11977. case "divot":
  11978. px_pr_ary = ["0.3px", "40%", "4px 4px"];
  11979. break
  11980. case "pct10":
  11981. px_pr_ary = ["0.3px", "20%", "2px 2px"];
  11982. break
  11983. case "pct20":
  11984. //case "dotDmnd":
  11985. px_pr_ary = ["0.2px", "40%", "2px 2px"];
  11986. break
  11987. case "pct25":
  11988. px_pr_ary = ["0.2px", "50%", "2px 2px"];
  11989. break
  11990. case "pct30":
  11991. px_pr_ary = ["0.5px", "50%", "2px 2px"];
  11992. break
  11993. case "pct40":
  11994. px_pr_ary = ["0.5px", "70%", "2px 2px"];
  11995. break
  11996. case "pct50":
  11997. px_pr_ary = ["0.09px", "90%", "2px 2px"];
  11998. break
  11999. case "pct60":
  12000. px_pr_ary = ["0.3px", "90%", "2px 2px"];
  12001. break
  12002. case "pct70":
  12003. case "trellis":
  12004. px_pr_ary = ["0.5px", "95%", "2px 2px"];
  12005. break
  12006. case "pct75":
  12007. px_pr_ary = ["0.65px", "100%", "2px 2px"];
  12008. break
  12009. case "pct80":
  12010. px_pr_ary = ["0.85px", "100%", "2px 2px"];
  12011. break
  12012. case "pct90":
  12013. px_pr_ary = ["1px", "100%", "2px 2px"];
  12014. break
  12015. }
  12016. return ["radial-gradient(#" + fgColor + " " + px_pr_ary[0] + ", transparent " + px_pr_ary[1] + ")," +
  12017. "#" + bgColor + ";", px_pr_ary[2]];
  12018. break
  12019. default:
  12020. return [0, 0];
  12021. }
  12022. }
  12023. function getSolidFill(node, clrMap, phClr, warpObj) {
  12024. if (node === undefined) {
  12025. return undefined;
  12026. }
  12027. //console.log("getSolidFill node: ", node)
  12028. var color = "";
  12029. var clrNode;
  12030. if (node["a:srgbClr"] !== undefined) {
  12031. clrNode = node["a:srgbClr"];
  12032. color = getTextByPathList(clrNode, ["attrs", "val"]); //#...
  12033. } else if (node["a:schemeClr"] !== undefined) { //a:schemeClr
  12034. clrNode = node["a:schemeClr"];
  12035. var schemeClr = getTextByPathList(clrNode, ["attrs", "val"]);
  12036. color = getSchemeColorFromTheme("a:" + schemeClr, clrMap, phClr, warpObj);
  12037. //console.log("schemeClr: ", schemeClr, "color: ", color)
  12038. } else if (node["a:scrgbClr"] !== undefined) {
  12039. clrNode = node["a:scrgbClr"];
  12040. //<a:scrgbClr r="50%" g="50%" b="50%"/> //Need to test/////////////////////////////////////////////
  12041. var defBultColorVals = clrNode["attrs"];
  12042. var red = (defBultColorVals["r"].indexOf("%") != -1) ? defBultColorVals["r"].split("%").shift() : defBultColorVals["r"];
  12043. var green = (defBultColorVals["g"].indexOf("%") != -1) ? defBultColorVals["g"].split("%").shift() : defBultColorVals["g"];
  12044. var blue = (defBultColorVals["b"].indexOf("%") != -1) ? defBultColorVals["b"].split("%").shift() : defBultColorVals["b"];
  12045. //var scrgbClr = red + "," + green + "," + blue;
  12046. color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100));
  12047. //console.log("scrgbClr: " + scrgbClr);
  12048. } else if (node["a:prstClr"] !== undefined) {
  12049. clrNode = node["a:prstClr"];
  12050. //<a:prstClr val="black"/> //Need to test/////////////////////////////////////////////
  12051. var prstClr = getTextByPathList(clrNode, ["attrs", "val"]); //node["a:prstClr"]["attrs"]["val"];
  12052. color = getColorName2Hex(prstClr);
  12053. //console.log("blip prstClr: ", prstClr, " => hexClr: ", color);
  12054. } else if (node["a:hslClr"] !== undefined) {
  12055. clrNode = node["a:hslClr"];
  12056. //<a:hslClr hue="14400000" sat="100%" lum="50%"/> //Need to test/////////////////////////////////////////////
  12057. var defBultColorVals = clrNode["attrs"];
  12058. var hue = Number(defBultColorVals["hue"]) / 100000;
  12059. var sat = Number((defBultColorVals["sat"].indexOf("%") != -1) ? defBultColorVals["sat"].split("%").shift() : defBultColorVals["sat"]) / 100;
  12060. var lum = Number((defBultColorVals["lum"].indexOf("%") != -1) ? defBultColorVals["lum"].split("%").shift() : defBultColorVals["lum"]) / 100;
  12061. //var hslClr = defBultColorVals["hue"] + "," + defBultColorVals["sat"] + "," + defBultColorVals["lum"];
  12062. var hsl2rgb = hslToRgb(hue, sat, lum);
  12063. color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b);
  12064. //defBultColor = cnvrtHslColor2Hex(hslClr); //TODO
  12065. // console.log("hslClr: " + hslClr);
  12066. } else if (node["a:sysClr"] !== undefined) {
  12067. clrNode = node["a:sysClr"];
  12068. //<a:sysClr val="windowText" lastClr="000000"/> //Need to test/////////////////////////////////////////////
  12069. var sysClr = getTextByPathList(clrNode, ["attrs", "lastClr"]);
  12070. if (sysClr !== undefined) {
  12071. color = sysClr;
  12072. }
  12073. }
  12074. //console.log("color: [%cstart]", "color: #" + color, tinycolor(color).toHslString(), color)
  12075. //fix color -------------------------------------------------------- TODO
  12076. //
  12077. //1. "alpha":
  12078. //Specifies the opacity as expressed by a percentage value.
  12079. // [Example: The following represents a green solid fill which is 50 % opaque
  12080. // < a: solidFill >
  12081. // <a:srgbClr val="00FF00">
  12082. // <a:alpha val="50%" />
  12083. // </a:srgbClr>
  12084. // </a: solidFill >
  12085. var isAlpha = false;
  12086. var alpha = parseInt(getTextByPathList(clrNode, ["a:alpha", "attrs", "val"])) / 100000;
  12087. //console.log("alpha: ", alpha)
  12088. if (!isNaN(alpha)) {
  12089. // var al_color = new colz.Color(color);
  12090. // al_color.setAlpha(alpha);
  12091. // var ne_color = al_color.rgba.toString();
  12092. // color = (rgba2hex(ne_color))
  12093. var al_color = tinycolor(color);
  12094. al_color.setAlpha(alpha);
  12095. color = al_color.toHex8()
  12096. isAlpha = true;
  12097. //console.log("al_color: ", al_color, ", color: ", color)
  12098. }
  12099. //2. "alphaMod":
  12100. // Specifies the opacity as expressed by a percentage relative to the input color.
  12101. // [Example: The following represents a green solid fill which is 50 % opaque
  12102. // < a: solidFill >
  12103. // <a:srgbClr val="00FF00">
  12104. // <a:alphaMod val="50%" />
  12105. // </a:srgbClr>
  12106. // </a: solidFill >
  12107. //3. "alphaOff":
  12108. // Specifies the opacity as expressed by a percentage offset increase or decrease to the
  12109. // input color.Increases never increase the opacity beyond 100 %, decreases never decrease
  12110. // the opacity below 0 %.
  12111. // [Example: The following represents a green solid fill which is 90 % opaque
  12112. // < a: solidFill >
  12113. // <a:srgbClr val="00FF00">
  12114. // <a:alphaOff val="-10%" />
  12115. // </a:srgbClr>
  12116. // </a: solidFill >
  12117. //4. "blue":
  12118. //Specifies the value of the blue component.The assigned value is specified as a
  12119. //percentage with 0 % indicating minimal blue and 100 % indicating maximum blue.
  12120. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12121. // to value RRGGBB = (00, FF, FF)
  12122. // <a: solidFill >
  12123. // <a:srgbClr val="00FF00">
  12124. // <a:blue val="100%" />
  12125. // </a:srgbClr>
  12126. // </a: solidFill >
  12127. //5. "blueMod"
  12128. // Specifies the blue component as expressed by a percentage relative to the input color
  12129. // component.Increases never increase the blue component beyond 100 %, decreases
  12130. // never decrease the blue component below 0 %.
  12131. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF)
  12132. // to value RRGGBB = (00, 00, 80)
  12133. // < a: solidFill >
  12134. // <a:srgbClr val="0000FF">
  12135. // <a:blueMod val="50%" />
  12136. // </a:srgbClr>
  12137. // </a: solidFill >
  12138. //6. "blueOff"
  12139. // Specifies the blue component as expressed by a percentage offset increase or decrease
  12140. // to the input color component.Increases never increase the blue component
  12141. // beyond 100 %, decreases never decrease the blue component below 0 %.
  12142. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF)
  12143. // to value RRGGBB = (00, 00, CC)
  12144. // < a: solidFill >
  12145. // <a:srgbClr val="00FF00">
  12146. // <a:blueOff val="-20%" />
  12147. // </a:srgbClr>
  12148. // </a: solidFill >
  12149. //7. "comp" - This element specifies that the color rendered should be the complement of its input color with the complement
  12150. // being defined as such.Two colors are called complementary if, when mixed they produce a shade of grey.For
  12151. // instance, the complement of red which is RGB(255, 0, 0) is cyan.(<a:comp/>)
  12152. //8. "gamma" - This element specifies that the output color rendered by the generating application should be the sRGB gamma
  12153. // shift of the input color.
  12154. //9. "gray" - This element specifies a grayscale of its input color, taking into relative intensities of the red, green, and blue
  12155. // primaries.
  12156. //10. "green":
  12157. // Specifies the value of the green component. The assigned value is specified as a
  12158. // percentage with 0 % indicating minimal green and 100 % indicating maximum green.
  12159. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF)
  12160. // to value RRGGBB = (00, FF, FF)
  12161. // < a: solidFill >
  12162. // <a:srgbClr val="0000FF">
  12163. // <a:green val="100%" />
  12164. // </a:srgbClr>
  12165. // </a: solidFill >
  12166. //11. "greenMod":
  12167. // Specifies the green component as expressed by a percentage relative to the input color
  12168. // component.Increases never increase the green component beyond 100 %, decreases
  12169. // never decrease the green component below 0 %.
  12170. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12171. // to value RRGGBB = (00, 80, 00)
  12172. // < a: solidFill >
  12173. // <a:srgbClr val="00FF00">
  12174. // <a:greenMod val="50%" />
  12175. // </a:srgbClr>
  12176. // </a: solidFill >
  12177. //12. "greenOff":
  12178. // Specifies the green component as expressed by a percentage offset increase or decrease
  12179. // to the input color component.Increases never increase the green component
  12180. // beyond 100 %, decreases never decrease the green component below 0 %.
  12181. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12182. // to value RRGGBB = (00, CC, 00)
  12183. // < a: solidFill >
  12184. // <a:srgbClr val="00FF00">
  12185. // <a:greenOff val="-20%" />
  12186. // </a:srgbClr>
  12187. // </a: solidFill >
  12188. //13. "hue" (This element specifies a color using the HSL color model):
  12189. // This element specifies the input color with the specified hue, but with its saturation and luminance unchanged.
  12190. // < a: solidFill >
  12191. // <a:hslClr hue="14400000" sat="100%" lum="50%">
  12192. // </a:solidFill>
  12193. // <a:solidFill>
  12194. // <a:hslClr hue="0" sat="100%" lum="50%">
  12195. // <a:hue val="14400000"/>
  12196. // <a:hslClr/>
  12197. // </a:solidFill>
  12198. //14. "hueMod" (This element specifies a color using the HSL color model):
  12199. // Specifies the hue as expressed by a percentage relative to the input color.
  12200. // [Example: The following manipulates the fill color from having RGB value RRGGBB = (00, FF, 00) to value RRGGBB = (FF, FF, 00)
  12201. // < a: solidFill >
  12202. // <a:srgbClr val="00FF00">
  12203. // <a:hueMod val="50%" />
  12204. // </a:srgbClr>
  12205. // </a: solidFill >
  12206. var hueMod = parseInt(getTextByPathList(clrNode, ["a:hueMod", "attrs", "val"])) / 100000;
  12207. //console.log("hueMod: ", hueMod)
  12208. if (!isNaN(hueMod)) {
  12209. color = applyHueMod(color, hueMod, isAlpha);
  12210. }
  12211. //15. "hueOff"(This element specifies a color using the HSL color model):
  12212. // Specifies the actual angular value of the shift.The result of the shift shall be between 0
  12213. // and 360 degrees.Shifts resulting in angular values less than 0 are treated as 0. Shifts
  12214. // resulting in angular values greater than 360 are treated as 360.
  12215. // [Example:
  12216. // The following increases the hue angular value by 10 degrees.
  12217. // < a: solidFill >
  12218. // <a:hslClr hue="0" sat="100%" lum="50%"/>
  12219. // <a:hueOff val="600000"/>
  12220. // </a: solidFill >
  12221. //var hueOff = parseInt(getTextByPathList(clrNode, ["a:hueOff", "attrs", "val"])) / 100000;
  12222. // if (!isNaN(hueOff)) {
  12223. // //console.log("hueOff: ", hueOff, " (TODO)")
  12224. // //color = applyHueOff(color, hueOff, isAlpha);
  12225. // }
  12226. //16. "inv" (inverse)
  12227. //This element specifies the inverse of its input color.
  12228. //The inverse of red (1, 0, 0) is cyan (0, 1, 1 ).
  12229. // The following represents cyan, the inverse of red:
  12230. // <a:solidFill>
  12231. // <a:srgbClr val="FF0000">
  12232. // <a:inv />
  12233. // </a:srgbClr>
  12234. // </a:solidFill>
  12235. //17. "invGamma" - This element specifies that the output color rendered by the generating application should be the inverse sRGB
  12236. // gamma shift of the input color.
  12237. //18. "lum":
  12238. // This element specifies the input color with the specified luminance, but with its hue and saturation unchanged.
  12239. // Typically luminance values fall in the range[0 %, 100 %].
  12240. // The following two solid fills are equivalent:
  12241. // <a:solidFill>
  12242. // <a:hslClr hue="14400000" sat="100%" lum="50%">
  12243. // </a:solidFill>
  12244. // <a:solidFill>
  12245. // <a:hslClr hue="14400000" sat="100%" lum="0%">
  12246. // <a:lum val="50%" />
  12247. // <a:hslClr />
  12248. // </a:solidFill>
  12249. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12250. // to value RRGGBB = (00, 66, 00)
  12251. // < a: solidFill >
  12252. // <a:srgbClr val="00FF00">
  12253. // <a:lum val="20%" />
  12254. // </a:srgbClr>
  12255. // </a: solidFill >
  12256. // end example]
  12257. //19. "lumMod":
  12258. // Specifies the luminance as expressed by a percentage relative to the input color.
  12259. // Increases never increase the luminance beyond 100 %, decreases never decrease the
  12260. // luminance below 0 %.
  12261. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12262. // to value RRGGBB = (00, 75, 00)
  12263. // < a: solidFill >
  12264. // <a:srgbClr val="00FF00">
  12265. // <a:lumMod val="50%" />
  12266. // </a:srgbClr>
  12267. // </a: solidFill >
  12268. // end example]
  12269. var lumMod = parseInt(getTextByPathList(clrNode, ["a:lumMod", "attrs", "val"])) / 100000;
  12270. //console.log("lumMod: ", lumMod)
  12271. if (!isNaN(lumMod)) {
  12272. color = applyLumMod(color, lumMod, isAlpha);
  12273. }
  12274. //var lumMod_color = applyLumMod(color, 0.5);
  12275. //console.log("lumMod_color: ", lumMod_color)
  12276. //20. "lumOff"
  12277. // Specifies the luminance as expressed by a percentage offset increase or decrease to the
  12278. // input color.Increases never increase the luminance beyond 100 %, decreases never
  12279. // decrease the luminance below 0 %.
  12280. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12281. // to value RRGGBB = (00, 99, 00)
  12282. // < a: solidFill >
  12283. // <a:srgbClr val="00FF00">
  12284. // <a:lumOff val="-20%" />
  12285. // </a:srgbClr>
  12286. // </a: solidFill >
  12287. var lumOff = parseInt(getTextByPathList(clrNode, ["a:lumOff", "attrs", "val"])) / 100000;
  12288. //console.log("lumOff: ", lumOff)
  12289. if (!isNaN(lumOff)) {
  12290. color = applyLumOff(color, lumOff, isAlpha);
  12291. }
  12292. //21. "red":
  12293. // Specifies the value of the red component.The assigned value is specified as a percentage
  12294. // with 0 % indicating minimal red and 100 % indicating maximum red.
  12295. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12296. // to value RRGGBB = (FF, FF, 00)
  12297. // < a: solidFill >
  12298. // <a:srgbClr val="00FF00">
  12299. // <a:red val="100%" />
  12300. // </a:srgbClr>
  12301. // </a: solidFill >
  12302. //22. "redMod":
  12303. // Specifies the red component as expressed by a percentage relative to the input color
  12304. // component.Increases never increase the red component beyond 100 %, decreases never
  12305. // decrease the red component below 0 %.
  12306. // [Example: The following manipulates the fill from having RGB value RRGGBB = (FF, 00, 00)
  12307. // to value RRGGBB = (80, 00, 00)
  12308. // < a: solidFill >
  12309. // <a:srgbClr val="FF0000">
  12310. // <a:redMod val="50%" />
  12311. // </a:srgbClr>
  12312. // </a: solidFill >
  12313. //23. "redOff":
  12314. // Specifies the red component as expressed by a percentage offset increase or decrease to
  12315. // the input color component.Increases never increase the red component beyond 100 %,
  12316. // decreases never decrease the red component below 0 %.
  12317. // [Example: The following manipulates the fill from having RGB value RRGGBB = (FF, 00, 00)
  12318. // to value RRGGBB = (CC, 00, 00)
  12319. // < a: solidFill >
  12320. // <a:srgbClr val="FF0000">
  12321. // <a:redOff val="-20%" />
  12322. // </a:srgbClr>
  12323. // </a: solidFill >
  12324. //23. "sat":
  12325. // This element specifies the input color with the specified saturation, but with its hue and luminance unchanged.
  12326. // Typically saturation values fall in the range[0 %, 100 %].
  12327. // [Example:
  12328. // The following two solid fills are equivalent:
  12329. // <a:solidFill>
  12330. // <a:hslClr hue="14400000" sat="100%" lum="50%">
  12331. // </a:solidFill>
  12332. // <a:solidFill>
  12333. // <a:hslClr hue="14400000" sat="0%" lum="50%">
  12334. // <a:sat val="100000" />
  12335. // <a:hslClr />
  12336. // </a:solidFill>
  12337. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12338. // to value RRGGBB = (40, C0, 40)
  12339. // < a: solidFill >
  12340. // <a:srgbClr val="00FF00">
  12341. // <a:sat val="50%" />
  12342. // </a:srgbClr>
  12343. // <a: solidFill >
  12344. // end example]
  12345. //24. "satMod":
  12346. // Specifies the saturation as expressed by a percentage relative to the input color.
  12347. // Increases never increase the saturation beyond 100 %, decreases never decrease the
  12348. // saturation below 0 %.
  12349. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12350. // to value RRGGBB = (66, 99, 66)
  12351. // < a: solidFill >
  12352. // <a:srgbClr val="00FF00">
  12353. // <a:satMod val="20%" />
  12354. // </a:srgbClr>
  12355. // </a: solidFill >
  12356. var satMod = parseInt(getTextByPathList(clrNode, ["a:satMod", "attrs", "val"])) / 100000;
  12357. if (!isNaN(satMod)) {
  12358. color = applySatMod(color, satMod, isAlpha);
  12359. }
  12360. //25. "satOff":
  12361. // Specifies the saturation as expressed by a percentage offset increase or decrease to the
  12362. // input color.Increases never increase the saturation beyond 100 %, decreases never
  12363. // decrease the saturation below 0 %.
  12364. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12365. // to value RRGGBB = (19, E5, 19)
  12366. // < a: solidFill >
  12367. // <a:srgbClr val="00FF00">
  12368. // <a:satOff val="-20%" />
  12369. // </a:srgbClr>
  12370. // </a: solidFill >
  12371. // var satOff = parseInt(getTextByPathList(clrNode, ["a:satOff", "attrs", "val"])) / 100000;
  12372. // if (!isNaN(satOff)) {
  12373. // console.log("satOff: ", satOff, " (TODO)")
  12374. // }
  12375. //26. "shade":
  12376. // This element specifies a darker version of its input color.A 10 % shade is 10 % of the input color combined with 90 % black.
  12377. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12378. // to value RRGGBB = (00, BC, 00)
  12379. // < a: solidFill >
  12380. // <a:srgbClr val="00FF00">
  12381. // <a:shade val="50%" />
  12382. // </a:srgbClr>
  12383. // </a: solidFill >
  12384. // end example]
  12385. var shade = parseInt(getTextByPathList(clrNode, ["a:shade", "attrs", "val"])) / 100000;
  12386. if (!isNaN(shade)) {
  12387. color = applyShade(color, shade, isAlpha);
  12388. }
  12389. //27. "tint":
  12390. // This element specifies a lighter version of its input color.A 10 % tint is 10 % of the input color combined with
  12391. // 90 % white.
  12392. // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00)
  12393. // to value RRGGBB = (BC, FF, BC)
  12394. // < a: solidFill >
  12395. // <a:srgbClr val="00FF00">
  12396. // <a:tint val="50%" />
  12397. // </a:srgbClr>
  12398. // </a: solidFill >
  12399. var tint = parseInt(getTextByPathList(clrNode, ["a:tint", "attrs", "val"])) / 100000;
  12400. if (!isNaN(tint)) {
  12401. color = applyTint(color, tint, isAlpha);
  12402. }
  12403. //console.log("color [%cfinal]: ", "color: #" + color, tinycolor(color).toHslString(), color)
  12404. return color;
  12405. }
  12406. function toHex(n) {
  12407. var hex = n.toString(16);
  12408. while (hex.length < 2) { hex = "0" + hex; }
  12409. return hex;
  12410. }
  12411. function hslToRgb(hue, sat, light) {
  12412. var t1, t2, r, g, b;
  12413. hue = hue / 60;
  12414. if (light <= 0.5) {
  12415. t2 = light * (sat + 1);
  12416. } else {
  12417. t2 = light + sat - (light * sat);
  12418. }
  12419. t1 = light * 2 - t2;
  12420. r = hueToRgb(t1, t2, hue + 2) * 255;
  12421. g = hueToRgb(t1, t2, hue) * 255;
  12422. b = hueToRgb(t1, t2, hue - 2) * 255;
  12423. return { r: r, g: g, b: b };
  12424. }
  12425. function hueToRgb(t1, t2, hue) {
  12426. if (hue < 0) hue += 6;
  12427. if (hue >= 6) hue -= 6;
  12428. if (hue < 1) return (t2 - t1) * hue + t1;
  12429. else if (hue < 3) return t2;
  12430. else if (hue < 4) return (t2 - t1) * (4 - hue) + t1;
  12431. else return t1;
  12432. }
  12433. function getColorName2Hex(name) {
  12434. var hex;
  12435. var colorName = ['white', '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'];
  12436. var colorHex = ['ffffff', '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'];
  12437. var findIndx = colorName.indexOf(name);
  12438. if (findIndx != -1) {
  12439. hex = colorHex[findIndx];
  12440. }
  12441. return hex;
  12442. }
  12443. function getSchemeColorFromTheme(schemeClr, clrMap, phClr, warpObj) {
  12444. //<p:clrMap ...> in slide master
  12445. // e.g. tx2="dk2" bg2="lt2" tx1="dk1" bg1="lt1" slideLayoutClrOvride
  12446. //console.log("getSchemeColorFromTheme: schemeClr: ", schemeClr, ",clrMap: ", clrMap)
  12447. var slideLayoutClrOvride;
  12448. if (clrMap !== undefined) {
  12449. slideLayoutClrOvride = clrMap;//getTextByPathList(clrMap, ["p:sldMaster", "p:clrMap", "attrs"])
  12450. } else {
  12451. var sldClrMapOvr = getTextByPathList(warpObj["slideContent"], ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  12452. if (sldClrMapOvr !== undefined) {
  12453. slideLayoutClrOvride = sldClrMapOvr;
  12454. } else {
  12455. var sldClrMapOvr = getTextByPathList(warpObj["slideLayoutContent"], ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]);
  12456. if (sldClrMapOvr !== undefined) {
  12457. slideLayoutClrOvride = sldClrMapOvr;
  12458. } else {
  12459. slideLayoutClrOvride = getTextByPathList(warpObj["slideMasterContent"], ["p:sldMaster", "p:clrMap", "attrs"]);
  12460. }
  12461. }
  12462. }
  12463. //console.log("getSchemeColorFromTheme slideLayoutClrOvride: ", slideLayoutClrOvride);
  12464. var schmClrName = schemeClr.substr(2);
  12465. if (schmClrName == "phClr" && phClr !== undefined) {
  12466. color = phClr;
  12467. } else {
  12468. if (slideLayoutClrOvride !== undefined) {
  12469. switch (schmClrName) {
  12470. case "tx1":
  12471. case "tx2":
  12472. case "bg1":
  12473. case "bg2":
  12474. schemeClr = "a:" + slideLayoutClrOvride[schmClrName];
  12475. break;
  12476. }
  12477. } else {
  12478. switch (schmClrName) {
  12479. case "tx1":
  12480. schemeClr = "a:dk1";
  12481. break;
  12482. case "tx2":
  12483. schemeClr = "a:dk2";
  12484. break;
  12485. case "bg1":
  12486. schemeClr = "a:lt1";
  12487. break;
  12488. case "bg2":
  12489. schemeClr = "a:lt2";
  12490. break;
  12491. }
  12492. }
  12493. //console.log("getSchemeColorFromTheme: schemeClr: ", schemeClr);
  12494. var refNode = getTextByPathList(warpObj["themeContent"], ["a:theme", "a:themeElements", "a:clrScheme", schemeClr]);
  12495. var color = getTextByPathList(refNode, ["a:srgbClr", "attrs", "val"]);
  12496. //console.log("themeContent: color", color);
  12497. if (color === undefined && refNode !== undefined) {
  12498. color = getTextByPathList(refNode, ["a:sysClr", "attrs", "lastClr"]);
  12499. }
  12500. }
  12501. //console.log(color)
  12502. return color;
  12503. }
  12504. function extractChartData(serNode) {
  12505. var dataMat = new Array();
  12506. if (serNode === undefined) {
  12507. return dataMat;
  12508. }
  12509. if (serNode["c:xVal"] !== undefined) {
  12510. var dataRow = new Array();
  12511. eachElement(serNode["c:xVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  12512. dataRow.push(parseFloat(innerNode["c:v"]));
  12513. return "";
  12514. });
  12515. dataMat.push(dataRow);
  12516. dataRow = new Array();
  12517. eachElement(serNode["c:yVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  12518. dataRow.push(parseFloat(innerNode["c:v"]));
  12519. return "";
  12520. });
  12521. dataMat.push(dataRow);
  12522. } else {
  12523. eachElement(serNode, function (innerNode, index) {
  12524. var dataRow = new Array();
  12525. var colName = getTextByPathList(innerNode, ["c:tx", "c:strRef", "c:strCache", "c:pt", "c:v"]) || index;
  12526. // Category (string or number)
  12527. var rowNames = {};
  12528. if (getTextByPathList(innerNode, ["c:cat", "c:strRef", "c:strCache", "c:pt"]) !== undefined) {
  12529. eachElement(innerNode["c:cat"]["c:strRef"]["c:strCache"]["c:pt"], function (innerNode, index) {
  12530. rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"];
  12531. return "";
  12532. });
  12533. } else if (getTextByPathList(innerNode, ["c:cat", "c:numRef", "c:numCache", "c:pt"]) !== undefined) {
  12534. eachElement(innerNode["c:cat"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  12535. rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"];
  12536. return "";
  12537. });
  12538. }
  12539. // Value
  12540. if (getTextByPathList(innerNode, ["c:val", "c:numRef", "c:numCache", "c:pt"]) !== undefined) {
  12541. eachElement(innerNode["c:val"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) {
  12542. dataRow.push({ x: innerNode["attrs"]["idx"], y: parseFloat(innerNode["c:v"]) });
  12543. return "";
  12544. });
  12545. }
  12546. dataMat.push({ key: colName, values: dataRow, xlabels: rowNames });
  12547. return "";
  12548. });
  12549. }
  12550. return dataMat;
  12551. }
  12552. // ===== Node functions =====
  12553. /**
  12554. * getTextByPathStr
  12555. * @param {Object} node
  12556. * @param {string} pathStr
  12557. */
  12558. function getTextByPathStr(node, pathStr) {
  12559. return getTextByPathList(node, pathStr.trim().split(/\s+/));
  12560. }
  12561. /**
  12562. * getTextByPathList
  12563. * @param {Object} node
  12564. * @param {string Array} path
  12565. */
  12566. function getTextByPathList(node, path) {
  12567. if (path.constructor !== Array) {
  12568. throw Error("Error of path type! path is not array.");
  12569. }
  12570. if (node === undefined) {
  12571. return undefined;
  12572. }
  12573. var l = path.length;
  12574. for (var i = 0; i < l; i++) {
  12575. node = node[path[i]];
  12576. if (node === undefined) {
  12577. return undefined;
  12578. }
  12579. }
  12580. return node;
  12581. }
  12582. /**
  12583. * setTextByPathList
  12584. * @param {Object} node
  12585. * @param {string Array} path
  12586. * @param {string} value
  12587. */
  12588. function setTextByPathList(node, path, value) {
  12589. if (path.constructor !== Array) {
  12590. throw Error("Error of path type! path is not array.");
  12591. }
  12592. if (node === undefined) {
  12593. return undefined;
  12594. }
  12595. Object.prototype.set = function (parts, value) {
  12596. //var parts = prop.split('.');
  12597. var obj = this;
  12598. var lent = parts.length;
  12599. for (var i = 0; i < lent; i++) {
  12600. var p = parts[i];
  12601. if (obj[p] === undefined) {
  12602. if (i == lent - 1) {
  12603. obj[p] = value;
  12604. } else {
  12605. obj[p] = {};
  12606. }
  12607. }
  12608. obj = obj[p];
  12609. }
  12610. return obj;
  12611. }
  12612. node.set(path, value)
  12613. }
  12614. /**
  12615. * eachElement
  12616. * @param {Object} node
  12617. * @param {function} doFunction
  12618. */
  12619. function eachElement(node, doFunction) {
  12620. if (node === undefined) {
  12621. return;
  12622. }
  12623. var result = "";
  12624. if (node.constructor === Array) {
  12625. var l = node.length;
  12626. for (var i = 0; i < l; i++) {
  12627. result += doFunction(node[i], i);
  12628. }
  12629. } else {
  12630. result += doFunction(node, 0);
  12631. }
  12632. return result;
  12633. }
  12634. // ===== Color functions =====
  12635. /**
  12636. * applyShade
  12637. * @param {string} rgbStr
  12638. * @param {number} shadeValue
  12639. */
  12640. function applyShade(rgbStr, shadeValue, isAlpha) {
  12641. var color = tinycolor(rgbStr).toHsl();
  12642. //console.log("applyShade color: ", color, ", shadeValue: ", shadeValue)
  12643. if (shadeValue >= 1) {
  12644. shadeValue = 1;
  12645. }
  12646. var cacl_l = Math.min(color.l * shadeValue, 1);//;color.l * shadeValue + (1 - shadeValue);
  12647. // if (isAlpha)
  12648. // return color.lighten(tintValue).toHex8();
  12649. // return color.lighten(tintValue).toHex();
  12650. if (isAlpha)
  12651. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8();
  12652. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex();
  12653. }
  12654. /**
  12655. * applyTint
  12656. * @param {string} rgbStr
  12657. * @param {number} tintValue
  12658. */
  12659. function applyTint(rgbStr, tintValue, isAlpha) {
  12660. var color = tinycolor(rgbStr).toHsl();
  12661. //console.log("applyTint color: ", color, ", tintValue: ", tintValue)
  12662. if (tintValue >= 1) {
  12663. tintValue = 1;
  12664. }
  12665. var cacl_l = color.l * tintValue + (1 - tintValue);
  12666. // if (isAlpha)
  12667. // return color.lighten(tintValue).toHex8();
  12668. // return color.lighten(tintValue).toHex();
  12669. if (isAlpha)
  12670. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8();
  12671. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex();
  12672. }
  12673. /**
  12674. * applyLumOff
  12675. * @param {string} rgbStr
  12676. * @param {number} offset
  12677. */
  12678. function applyLumOff(rgbStr, offset, isAlpha) {
  12679. var color = tinycolor(rgbStr).toHsl();
  12680. //console.log("applyLumOff color.l: ", color.l, ", offset: ", offset, ", color.l + offset : ", color.l + offset)
  12681. var lum = offset + color.l;
  12682. if (lum >= 1) {
  12683. if (isAlpha)
  12684. return tinycolor({ h: color.h, s: color.s, l: 1, a: color.a }).toHex8();
  12685. return tinycolor({ h: color.h, s: color.s, l: 1, a: color.a }).toHex();
  12686. }
  12687. if (isAlpha)
  12688. return tinycolor({ h: color.h, s: color.s, l: lum, a: color.a }).toHex8();
  12689. return tinycolor({ h: color.h, s: color.s, l: lum, a: color.a }).toHex();
  12690. }
  12691. /**
  12692. * applyLumMod
  12693. * @param {string} rgbStr
  12694. * @param {number} multiplier
  12695. */
  12696. function applyLumMod(rgbStr, multiplier, isAlpha) {
  12697. var color = tinycolor(rgbStr).toHsl();
  12698. //console.log("applyLumMod color.l: ", color.l, ", multiplier: ", multiplier, ", color.l * multiplier : ", color.l * multiplier)
  12699. var cacl_l = color.l * multiplier;
  12700. if (cacl_l >= 1) {
  12701. cacl_l = 1;
  12702. }
  12703. if (isAlpha)
  12704. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8();
  12705. return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex();
  12706. }
  12707. // /**
  12708. // * applyHueMod
  12709. // * @param {string} rgbStr
  12710. // * @param {number} multiplier
  12711. // */
  12712. function applyHueMod(rgbStr, multiplier, isAlpha) {
  12713. var color = tinycolor(rgbStr).toHsl();
  12714. //console.log("applyLumMod color.h: ", color.h, ", multiplier: ", multiplier, ", color.h * multiplier : ", color.h * multiplier)
  12715. var cacl_h = color.h * multiplier;
  12716. if (cacl_h >= 360) {
  12717. cacl_h = cacl_h - 360;
  12718. }
  12719. if (isAlpha)
  12720. return tinycolor({ h: cocacl_h, s: color.s, l: color.l, a: color.a }).toHex8();
  12721. return tinycolor({ h: cacl_h, s: color.s, l: color.l, a: color.a }).toHex();
  12722. }
  12723. // /**
  12724. // * applyHueOff
  12725. // * @param {string} rgbStr
  12726. // * @param {number} offset
  12727. // */
  12728. // function applyHueOff(rgbStr, offset, isAlpha) {
  12729. // var color = tinycolor(rgbStr).toHsl();
  12730. // //console.log("applyLumMod color.h: ", color.h, ", offset: ", offset, ", color.h * offset : ", color.h * offset)
  12731. // var cacl_h = color.h * offset;
  12732. // if (cacl_h >= 360) {
  12733. // cacl_h = cacl_h - 360;
  12734. // }
  12735. // if (isAlpha)
  12736. // return tinycolor({ h: cocacl_h, s: color.s, l: color.l, a: color.a }).toHex8();
  12737. // return tinycolor({ h: cacl_h, s: color.s, l: color.l, a: color.a }).toHex();
  12738. // }
  12739. // /**
  12740. // * applySatMod
  12741. // * @param {string} rgbStr
  12742. // * @param {number} multiplier
  12743. // */
  12744. function applySatMod(rgbStr, multiplier, isAlpha) {
  12745. var color = tinycolor(rgbStr).toHsl();
  12746. //console.log("applySatMod color.s: ", color.s, ", multiplier: ", multiplier, ", color.s * multiplier : ", color.s * multiplier)
  12747. var cacl_s = color.s * multiplier;
  12748. if (cacl_s >= 1) {
  12749. cacl_s = 1;
  12750. }
  12751. //return;
  12752. // if (isAlpha)
  12753. // return tinycolor(rgbStr).saturate(multiplier * 100).toHex8();
  12754. // return tinycolor(rgbStr).saturate(multiplier * 100).toHex();
  12755. if (isAlpha)
  12756. return tinycolor({ h: color.h, s: cacl_s, l: color.l, a: color.a }).toHex8();
  12757. return tinycolor({ h: color.h, s: cacl_s, l: color.l, a: color.a }).toHex();
  12758. }
  12759. /**
  12760. * rgba2hex
  12761. * @param {string} rgbaStr
  12762. */
  12763. function rgba2hex(rgbaStr) {
  12764. var a,
  12765. rgb = rgbaStr.replace(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i),
  12766. alpha = (rgb && rgb[4] || "").trim(),
  12767. hex = rgb ?
  12768. (rgb[1] | 1 << 8).toString(16).slice(1) +
  12769. (rgb[2] | 1 << 8).toString(16).slice(1) +
  12770. (rgb[3] | 1 << 8).toString(16).slice(1) : rgbaStr;
  12771. if (alpha !== "") {
  12772. a = alpha;
  12773. } else {
  12774. a = 01;
  12775. }
  12776. // multiply before convert to HEX
  12777. a = ((a * 255) | 1 << 8).toString(16).slice(1)
  12778. hex = hex + a;
  12779. return hex;
  12780. }
  12781. ///////////////////////Amir////////////////
  12782. function angleToDegrees(angle) {
  12783. if (angle == "" || angle == null) {
  12784. return 0;
  12785. }
  12786. return Math.round(angle / 60000);
  12787. }
  12788. // function degreesToRadians(degrees) {
  12789. // //Math.PI
  12790. // if (degrees == "" || degrees == null || degrees == undefined) {
  12791. // return 0;
  12792. // }
  12793. // return degrees * (Math.PI / 180);
  12794. // }
  12795. function getMimeType(imgFileExt) {
  12796. var mimeType = "";
  12797. //console.log(imgFileExt)
  12798. switch (imgFileExt.toLowerCase()) {
  12799. case "jpg":
  12800. case "jpeg":
  12801. mimeType = "image/jpeg";
  12802. break;
  12803. case "png":
  12804. mimeType = "image/png";
  12805. break;
  12806. case "gif":
  12807. mimeType = "image/gif";
  12808. break;
  12809. case "emf": // Not native support
  12810. mimeType = "image/x-emf";
  12811. break;
  12812. case "wmf": // Not native support
  12813. mimeType = "image/x-wmf";
  12814. break;
  12815. case "svg":
  12816. mimeType = "image/svg+xml";
  12817. break;
  12818. case "mp4":
  12819. mimeType = "video/mp4";
  12820. break;
  12821. case "webm":
  12822. mimeType = "video/webm";
  12823. break;
  12824. case "ogg":
  12825. mimeType = "video/ogg";
  12826. break;
  12827. case "avi":
  12828. mimeType = "video/avi";
  12829. break;
  12830. case "mpg":
  12831. mimeType = "video/mpg";
  12832. break;
  12833. case "wmv":
  12834. mimeType = "video/wmv";
  12835. break;
  12836. case "mp3":
  12837. mimeType = "audio/mpeg";
  12838. break;
  12839. case "wav":
  12840. mimeType = "audio/wav";
  12841. break;
  12842. case "emf":
  12843. mimeType = "image/emf";
  12844. break;
  12845. case "wmf":
  12846. mimeType = "image/wmf";
  12847. case "tif":
  12848. case "tiff":
  12849. mimeType = "image/tiff";
  12850. break;
  12851. }
  12852. return mimeType;
  12853. }
  12854. function getSvgGradient(w, h, angl, color_arry, shpId) {
  12855. var stopsArray = getMiddleStops(color_arry - 2);
  12856. var svgAngle = '',
  12857. svgHeight = h,
  12858. svgWidth = w,
  12859. svg = '',
  12860. xy_ary = SVGangle(angl, svgHeight, svgWidth),
  12861. x1 = xy_ary[0],
  12862. y1 = xy_ary[1],
  12863. x2 = xy_ary[2],
  12864. y2 = xy_ary[3];
  12865. var sal = stopsArray.length,
  12866. sr = sal < 20 ? 100 : 1000;
  12867. svgAngle = ' gradientUnits="userSpaceOnUse" x1="' + x1 + '%" y1="' + y1 + '%" x2="' + x2 + '%" y2="' + y2 + '%"';
  12868. svgAngle = '<linearGradient id="linGrd_' + shpId + '"' + svgAngle + '>\n';
  12869. svg += svgAngle;
  12870. for (var i = 0; i < sal; i++) {
  12871. var tinClr = tinycolor("#" + color_arry[i]);
  12872. var alpha = tinClr.getAlpha();
  12873. //console.log("color: ", color_arry[i], ", rgba: ", tinClr.toHexString(), ", alpha: ", alpha)
  12874. svg += '<stop offset="' + Math.round(parseFloat(stopsArray[i]) / 100 * sr) / sr + '" style="stop-color:' + tinClr.toHexString() + '; stop-opacity:' + (alpha) + ';"';
  12875. svg += '/>\n'
  12876. }
  12877. svg += '</linearGradient>\n' + '';
  12878. return svg
  12879. }
  12880. function getMiddleStops(s) {
  12881. var sArry = ['0%', '100%'];
  12882. if (s == 0) {
  12883. return sArry;
  12884. } else {
  12885. var i = s;
  12886. while (i--) {
  12887. 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.
  12888. middleStopString = middleStop + "%";
  12889. sArry.splice(-1, 0, middleStopString);
  12890. } // AM: add into stopsArray before 100%
  12891. }
  12892. return sArry
  12893. }
  12894. function SVGangle(deg, svgHeight, svgWidth) {
  12895. var w = parseFloat(svgWidth),
  12896. h = parseFloat(svgHeight),
  12897. ang = parseFloat(deg),
  12898. o = 2,
  12899. n = 2,
  12900. wc = w / 2,
  12901. hc = h / 2,
  12902. tx1 = 2,
  12903. ty1 = 2,
  12904. tx2 = 2,
  12905. ty2 = 2,
  12906. k = (((ang % 360) + 360) % 360),
  12907. j = (360 - k) * Math.PI / 180,
  12908. i = Math.tan(j),
  12909. l = hc - i * wc;
  12910. if (k == 0) {
  12911. tx1 = w,
  12912. ty1 = hc,
  12913. tx2 = 0,
  12914. ty2 = hc
  12915. } else if (k < 90) {
  12916. n = w,
  12917. o = 0
  12918. } else if (k == 90) {
  12919. tx1 = wc,
  12920. ty1 = 0,
  12921. tx2 = wc,
  12922. ty2 = h
  12923. } else if (k < 180) {
  12924. n = 0,
  12925. o = 0
  12926. } else if (k == 180) {
  12927. tx1 = 0,
  12928. ty1 = hc,
  12929. tx2 = w,
  12930. ty2 = hc
  12931. } else if (k < 270) {
  12932. n = 0,
  12933. o = h
  12934. } else if (k == 270) {
  12935. tx1 = wc,
  12936. ty1 = h,
  12937. tx2 = wc,
  12938. ty2 = 0
  12939. } else {
  12940. n = w,
  12941. o = h;
  12942. }
  12943. // AM: I could not quite figure out what m, n, and o are supposed to represent from the original code on visualcsstools.com.
  12944. var m = o + (n / i),
  12945. tx1 = tx1 == 2 ? i * (m - l) / (Math.pow(i, 2) + 1) : tx1,
  12946. ty1 = ty1 == 2 ? i * tx1 + l : ty1,
  12947. tx2 = tx2 == 2 ? w - tx1 : tx2,
  12948. ty2 = ty2 == 2 ? h - ty1 : ty2,
  12949. x1 = Math.round(tx2 / w * 100 * 100) / 100,
  12950. y1 = Math.round(ty2 / h * 100 * 100) / 100,
  12951. x2 = Math.round(tx1 / w * 100 * 100) / 100,
  12952. y2 = Math.round(ty1 / h * 100 * 100) / 100;
  12953. return [x1, y1, x2, y2];
  12954. }
  12955. function getSvgImagePattern(node, fill, shpId, warpObj) {
  12956. var pic_dim = getBase64ImageDimensions(fill);
  12957. var width = pic_dim[0];
  12958. var height = pic_dim[1];
  12959. //console.log("getSvgImagePattern node:", node);
  12960. var blipFillNode = node["p:spPr"]["a:blipFill"];
  12961. var tileNode = getTextByPathList(blipFillNode, ["a:tile", "attrs"])
  12962. if (tileNode !== undefined && tileNode["sx"] !== undefined) {
  12963. var sx = (parseInt(tileNode["sx"]) / 100000) * width;
  12964. var sy = (parseInt(tileNode["sy"]) / 100000) * height;
  12965. }
  12966. var blipNode = node["p:spPr"]["a:blipFill"]["a:blip"];
  12967. var tialphaModFixNode = getTextByPathList(blipNode, ["a:alphaModFix", "attrs"])
  12968. var imgOpacity = "";
  12969. if (tialphaModFixNode !== undefined && tialphaModFixNode["amt"] !== undefined && tialphaModFixNode["amt"] != "") {
  12970. var amt = parseInt(tialphaModFixNode["amt"]) / 100000;
  12971. var opacity = amt;
  12972. var imgOpacity = "opacity='" + opacity + "'";
  12973. }
  12974. if (sx !== undefined && sx != 0) {
  12975. var ptrn = '<pattern id="imgPtrn_' + shpId + '" x="0" y="0" width="' + sx + '" height="' + sy + '" patternUnits="userSpaceOnUse">';
  12976. } else {
  12977. var ptrn = '<pattern id="imgPtrn_' + shpId + '" patternContentUnits="objectBoundingBox" width="1" height="1">';
  12978. }
  12979. var duotoneNode = getTextByPathList(blipNode, ["a:duotone"])
  12980. var fillterNode = "";
  12981. var filterUrl = "";
  12982. if (duotoneNode !== undefined) {
  12983. //console.log("pic duotoneNode: ", duotoneNode)
  12984. var clr_ary = [];
  12985. Object.keys(duotoneNode).forEach(function (clr_type) {
  12986. //Object.keys(duotoneNode[clr_type]).forEach(function (clr) {
  12987. //console.log("blip pic duotone clr: ", duotoneNode[clr_type][clr], clr)
  12988. if (clr_type != "attrs") {
  12989. var obj = {};
  12990. obj[clr_type] = duotoneNode[clr_type];
  12991. //console.log("blip pic duotone obj: ", obj)
  12992. var hexClr = getSolidFill(obj, undefined, undefined, warpObj)
  12993. //clr_ary.push();
  12994. var color = tinycolor("#" + hexClr);
  12995. clr_ary.push(color.toRgb()); // { r: 255, g: 0, b: 0, a: 1 }
  12996. }
  12997. // })
  12998. })
  12999. if (clr_ary.length == 2) {
  13000. fillterNode = '<filter id="svg_image_duotone"> ' +
  13001. '<feColorMatrix type="matrix" values=".33 .33 .33 0 0' +
  13002. '.33 .33 .33 0 0' +
  13003. '.33 .33 .33 0 0' +
  13004. '0 0 0 1 0">' +
  13005. '</feColorMatrix>' +
  13006. '<feComponentTransfer color-interpolation-filters="sRGB">' +
  13007. //clr_ary.forEach(function(clr){
  13008. '<feFuncR type="table" tableValues="' + clr_ary[0].r / 255 + ' ' + clr_ary[1].r / 255 + '"></feFuncR>' +
  13009. '<feFuncG type="table" tableValues="' + clr_ary[0].g / 255 + ' ' + clr_ary[1].g / 255 + '"></feFuncG>' +
  13010. '<feFuncB type="table" tableValues="' + clr_ary[0].b / 255 + ' ' + clr_ary[1].b / 255 + '"></feFuncB>' +
  13011. //});
  13012. '</feComponentTransfer>' +
  13013. ' </filter>';
  13014. }
  13015. filterUrl = 'filter="url(#svg_image_duotone)"';
  13016. ptrn += fillterNode;
  13017. }
  13018. fill = escapeHtml(fill);
  13019. if (sx !== undefined && sx != 0) {
  13020. ptrn += '<image xlink:href="' + fill + '" x="0" y="0" width="' + sx + '" height="' + sy + '" ' + imgOpacity + ' ' + filterUrl + '></image>';
  13021. } else {
  13022. ptrn += '<image xlink:href="' + fill + '" preserveAspectRatio="none" width="1" height="1" ' + imgOpacity + ' ' + filterUrl + '></image>';
  13023. }
  13024. ptrn += '</pattern>';
  13025. //console.log("getSvgImagePattern(...) pic_dim:", pic_dim, ", fillColor: ", fill, ", blipNode: ", blipNode, ",sx: ", sx, ", sy: ", sy, ", clr_ary: ", clr_ary, ", ptrn: ", ptrn)
  13026. return ptrn;
  13027. }
  13028. function getBase64ImageDimensions(imgSrc) {
  13029. var image = new Image();
  13030. var w, h;
  13031. image.onload = function () {
  13032. w = image.width;
  13033. h = image.height;
  13034. };
  13035. image.src = imgSrc;
  13036. do {
  13037. if (image.width !== undefined) {
  13038. return [image.width, image.height];
  13039. }
  13040. } while (image.width === undefined);
  13041. //return [w, h];
  13042. }
  13043. function processMsgQueue(queue) {
  13044. for (var i = 0; i < queue.length; i++) {
  13045. processSingleMsg(queue[i].data);
  13046. }
  13047. }
  13048. function processSingleMsg(d) {
  13049. var chartID = d.chartID;
  13050. var chartType = d.chartType;
  13051. var chartData = d.chartData;
  13052. var data = [];
  13053. var chart = null;
  13054. switch (chartType) {
  13055. case "lineChart":
  13056. data = chartData;
  13057. chart = nv.models.lineChart()
  13058. .useInteractiveGuideline(true);
  13059. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  13060. break;
  13061. case "barChart":
  13062. data = chartData;
  13063. chart = nv.models.multiBarChart();
  13064. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  13065. break;
  13066. case "pieChart":
  13067. case "pie3DChart":
  13068. if (chartData.length > 0) {
  13069. data = chartData[0].values;
  13070. }
  13071. chart = nv.models.pieChart();
  13072. break;
  13073. case "areaChart":
  13074. data = chartData;
  13075. chart = nv.models.stackedAreaChart()
  13076. .clipEdge(true)
  13077. .useInteractiveGuideline(true);
  13078. chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; });
  13079. break;
  13080. case "scatterChart":
  13081. for (var i = 0; i < chartData.length; i++) {
  13082. var arr = [];
  13083. for (var j = 0; j < chartData[i].length; j++) {
  13084. arr.push({ x: j, y: chartData[i][j] });
  13085. }
  13086. data.push({ key: 'data' + (i + 1), values: arr });
  13087. }
  13088. //data = chartData;
  13089. chart = nv.models.scatterChart()
  13090. .showDistX(true)
  13091. .showDistY(true)
  13092. .color(d3.scale.category10().range());
  13093. chart.xAxis.axisLabel('X').tickFormat(d3.format('.02f'));
  13094. chart.yAxis.axisLabel('Y').tickFormat(d3.format('.02f'));
  13095. break;
  13096. default:
  13097. }
  13098. if (chart !== null) {
  13099. d3.select("#" + chartID)
  13100. .append("svg")
  13101. .datum(data)
  13102. .transition().duration(500)
  13103. .call(chart);
  13104. nv.utils.windowResize(chart.update);
  13105. isDone = true;
  13106. }
  13107. }
  13108. function setNumericBullets(elem) {
  13109. var prgrphs_arry = elem;
  13110. for (var i = 0; i < prgrphs_arry.length; i++) {
  13111. var buSpan = $(prgrphs_arry[i]).find('.numeric-bullet-style');
  13112. if (buSpan.length > 0) {
  13113. //console.log("DIV-"+i+":");
  13114. var prevBultTyp = "";
  13115. var prevBultLvl = "";
  13116. var buletIndex = 0;
  13117. var tmpArry = new Array();
  13118. var tmpArryIndx = 0;
  13119. var buletTypSrry = new Array();
  13120. for (var j = 0; j < buSpan.length; j++) {
  13121. var bult_typ = $(buSpan[j]).data("bulltname");
  13122. var bult_lvl = $(buSpan[j]).data("bulltlvl");
  13123. //console.log(j+" - "+bult_typ+" lvl: "+bult_lvl );
  13124. if (buletIndex == 0) {
  13125. prevBultTyp = bult_typ;
  13126. prevBultLvl = bult_lvl;
  13127. tmpArry[tmpArryIndx] = buletIndex;
  13128. buletTypSrry[tmpArryIndx] = bult_typ;
  13129. buletIndex++;
  13130. } else {
  13131. if (bult_typ == prevBultTyp && bult_lvl == prevBultLvl) {
  13132. prevBultTyp = bult_typ;
  13133. prevBultLvl = bult_lvl;
  13134. buletIndex++;
  13135. tmpArry[tmpArryIndx] = buletIndex;
  13136. buletTypSrry[tmpArryIndx] = bult_typ;
  13137. } else if (bult_typ != prevBultTyp && bult_lvl == prevBultLvl) {
  13138. prevBultTyp = bult_typ;
  13139. prevBultLvl = bult_lvl;
  13140. tmpArryIndx++;
  13141. tmpArry[tmpArryIndx] = buletIndex;
  13142. buletTypSrry[tmpArryIndx] = bult_typ;
  13143. buletIndex = 1;
  13144. } else if (bult_typ != prevBultTyp && Number(bult_lvl) > Number(prevBultLvl)) {
  13145. prevBultTyp = bult_typ;
  13146. prevBultLvl = bult_lvl;
  13147. tmpArryIndx++;
  13148. tmpArry[tmpArryIndx] = buletIndex;
  13149. buletTypSrry[tmpArryIndx] = bult_typ;
  13150. buletIndex = 1;
  13151. } else if (bult_typ != prevBultTyp && Number(bult_lvl) < Number(prevBultLvl)) {
  13152. prevBultTyp = bult_typ;
  13153. prevBultLvl = bult_lvl;
  13154. tmpArryIndx--;
  13155. buletIndex = tmpArry[tmpArryIndx] + 1;
  13156. }
  13157. }
  13158. //console.log(buletTypSrry[tmpArryIndx]+" - "+buletIndex);
  13159. var numIdx = getNumTypeNum(buletTypSrry[tmpArryIndx], buletIndex);
  13160. $(buSpan[j]).html(numIdx);
  13161. }
  13162. }
  13163. }
  13164. }
  13165. function getNumTypeNum(numTyp, num) {
  13166. var rtrnNum = "";
  13167. switch (numTyp) {
  13168. case "arabicPeriod":
  13169. rtrnNum = num + ". ";
  13170. break;
  13171. case "arabicParenR":
  13172. rtrnNum = num + ") ";
  13173. break;
  13174. case "alphaLcParenR":
  13175. rtrnNum = alphaNumeric(num, "lowerCase") + ") ";
  13176. break;
  13177. case "alphaLcPeriod":
  13178. rtrnNum = alphaNumeric(num, "lowerCase") + ". ";
  13179. break;
  13180. case "alphaUcParenR":
  13181. rtrnNum = alphaNumeric(num, "upperCase") + ") ";
  13182. break;
  13183. case "alphaUcPeriod":
  13184. rtrnNum = alphaNumeric(num, "upperCase") + ". ";
  13185. break;
  13186. case "romanUcPeriod":
  13187. rtrnNum = romanize(num) + ". ";
  13188. break;
  13189. case "romanLcParenR":
  13190. rtrnNum = romanize(num) + ") ";
  13191. break;
  13192. case "hebrew2Minus":
  13193. rtrnNum = hebrew2Minus.format(num) + "-";
  13194. break;
  13195. default:
  13196. rtrnNum = num;
  13197. }
  13198. return rtrnNum;
  13199. }
  13200. function romanize(num) {
  13201. if (!+num)
  13202. return false;
  13203. var digits = String(+num).split(""),
  13204. key = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM",
  13205. "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC",
  13206. "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
  13207. roman = "",
  13208. i = 3;
  13209. while (i--)
  13210. roman = (key[+digits.pop() + (i * 10)] || "") + roman;
  13211. return Array(+digits.join("") + 1).join("M") + roman;
  13212. }
  13213. var hebrew2Minus = archaicNumbers([
  13214. [1000, ''],
  13215. [400, 'ת'],
  13216. [300, 'ש'],
  13217. [200, 'ר'],
  13218. [100, 'ק'],
  13219. [90, 'צ'],
  13220. [80, 'פ'],
  13221. [70, 'ע'],
  13222. [60, 'ס'],
  13223. [50, 'נ'],
  13224. [40, 'מ'],
  13225. [30, 'ל'],
  13226. [20, 'כ'],
  13227. [10, 'י'],
  13228. [9, 'ט'],
  13229. [8, 'ח'],
  13230. [7, 'ז'],
  13231. [6, 'ו'],
  13232. [5, 'ה'],
  13233. [4, 'ד'],
  13234. [3, 'ג'],
  13235. [2, 'ב'],
  13236. [1, 'א'],
  13237. [/יה/, 'ט״ו'],
  13238. [/יו/, 'ט״ז'],
  13239. [/([א-ת])([א-ת])$/, '$1״$2'],
  13240. [/^([א-ת])$/, "$1׳"]
  13241. ]);
  13242. function archaicNumbers(arr) {
  13243. var arrParse = arr.slice().sort(function (a, b) { return b[1].length - a[1].length });
  13244. return {
  13245. format: function (n) {
  13246. var ret = '';
  13247. jQuery.each(arr, function () {
  13248. var num = this[0];
  13249. if (parseInt(num) > 0) {
  13250. for (; n >= num; n -= num) ret += this[1];
  13251. } else {
  13252. ret = ret.replace(num, this[1]);
  13253. }
  13254. });
  13255. return ret;
  13256. }
  13257. }
  13258. }
  13259. function alphaNumeric(num, upperLower) {
  13260. num = Number(num) - 1;
  13261. var aNum = "";
  13262. if (upperLower == "upperCase") {
  13263. aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toUpperCase();
  13264. } else if (upperLower == "lowerCase") {
  13265. aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toLowerCase();
  13266. }
  13267. return aNum;
  13268. }
  13269. function base64ArrayBuffer(arrayBuffer) {
  13270. var base64 = '';
  13271. var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  13272. var bytes = new Uint8Array(arrayBuffer);
  13273. var byteLength = bytes.byteLength;
  13274. var byteRemainder = byteLength % 3;
  13275. var mainLength = byteLength - byteRemainder;
  13276. var a, b, c, d;
  13277. var chunk;
  13278. for (var i = 0; i < mainLength; i = i + 3) {
  13279. chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
  13280. a = (chunk & 16515072) >> 18;
  13281. b = (chunk & 258048) >> 12;
  13282. c = (chunk & 4032) >> 6;
  13283. d = chunk & 63;
  13284. base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];
  13285. }
  13286. if (byteRemainder == 1) {
  13287. chunk = bytes[mainLength];
  13288. a = (chunk & 252) >> 2;
  13289. b = (chunk & 3) << 4;
  13290. base64 += encodings[a] + encodings[b] + '==';
  13291. } else if (byteRemainder == 2) {
  13292. chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];
  13293. a = (chunk & 64512) >> 10;
  13294. b = (chunk & 1008) >> 4;
  13295. c = (chunk & 15) << 2;
  13296. base64 += encodings[a] + encodings[b] + encodings[c] + '=';
  13297. }
  13298. return base64;
  13299. }
  13300. function IsVideoLink(vdoFile) {
  13301. /*
  13302. var ext = extractFileExtension(vdoFile);
  13303. if (ext.length == 3){
  13304. return false;
  13305. }else{
  13306. return true;
  13307. }
  13308. */
  13309. var urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
  13310. return urlregex.test(vdoFile);
  13311. }
  13312. function extractFileExtension(filename) {
  13313. return filename.substr((~-filename.lastIndexOf(".") >>> 0) + 2);
  13314. }
  13315. function escapeHtml(text) {
  13316. var map = {
  13317. '&': '&amp;',
  13318. '<': '&lt;',
  13319. '>': '&gt;',
  13320. '"': '&quot;',
  13321. "'": '&#039;'
  13322. };
  13323. return text.replace(/[&<>"']/g, function (m) { return map[m]; });
  13324. }
  13325. /////////////////////////////////////tXml///////////////////////////
  13326. /*
  13327. This is my custom tXml.js file
  13328. */
  13329. 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);
  13330. };
  13331. /*!
  13332. JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
  13333. <http://stuk.github.io/jszip-utils>
  13334. (c) 2014 Stuart Knightley, David Duponchel
  13335. Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
  13336. */
  13337. !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) });
  13338. // TinyColor v1.4.2
  13339. // https://github.com/bgrins/TinyColor
  13340. // 2020-09-25, Brian Grinstead, MIT License
  13341. !function (a) { function b(a, d) { if (a = a ? a : "", d = d || {}, a instanceof b) return a; if (!(this instanceof b)) return new b(a, d); var e = c(a); this._originalInput = a, this._r = e.r, this._g = e.g, this._b = e.b, this._a = e.a, this._roundA = P(100 * this._a) / 100, this._format = d.format || e.format, this._gradientType = d.gradientType, this._r < 1 && (this._r = P(this._r)), this._g < 1 && (this._g = P(this._g)), this._b < 1 && (this._b = P(this._b)), this._ok = e.ok, this._tc_id = O++ } function c(a) { var b = { r: 0, g: 0, b: 0 }, c = 1, e = null, g = null, i = null, j = !1, k = !1; return "string" == typeof a && (a = K(a)), "object" == typeof a && (J(a.r) && J(a.g) && J(a.b) ? (b = d(a.r, a.g, a.b), j = !0, k = "%" === String(a.r).substr(-1) ? "prgb" : "rgb") : J(a.h) && J(a.s) && J(a.v) ? (e = G(a.s), g = G(a.v), b = h(a.h, e, g), j = !0, k = "hsv") : J(a.h) && J(a.s) && J(a.l) && (e = G(a.s), i = G(a.l), b = f(a.h, e, i), j = !0, k = "hsl"), a.hasOwnProperty("a") && (c = a.a)), c = z(c), { ok: j, format: a.format || k, r: Q(255, R(b.r, 0)), g: Q(255, R(b.g, 0)), b: Q(255, R(b.b, 0)), a: c } } function d(a, b, c) { return { r: 255 * A(a, 255), g: 255 * A(b, 255), b: 255 * A(c, 255) } } function e(a, b, c) { a = A(a, 255), b = A(b, 255), c = A(c, 255); var d, e, f = R(a, b, c), g = Q(a, b, c), h = (f + g) / 2; if (f == g) d = e = 0; else { var i = f - g; switch (e = h > .5 ? i / (2 - f - g) : i / (f + g), f) { case a: d = (b - c) / i + (c > b ? 6 : 0); break; case b: d = (c - a) / i + 2; break; case c: d = (a - b) / i + 4 }d /= 6 } return { h: d, s: e, l: h } } function f(a, b, c) { function d(a, b, c) { return 0 > c && (c += 1), c > 1 && (c -= 1), 1 / 6 > c ? a + 6 * (b - a) * c : .5 > c ? b : 2 / 3 > c ? a + (b - a) * (2 / 3 - c) * 6 : a } var e, f, g; if (a = A(a, 360), b = A(b, 100), c = A(c, 100), 0 === b) e = f = g = c; else { var h = .5 > c ? c * (1 + b) : c + b - c * b, i = 2 * c - h; e = d(i, h, a + 1 / 3), f = d(i, h, a), g = d(i, h, a - 1 / 3) } return { r: 255 * e, g: 255 * f, b: 255 * g } } function g(a, b, c) { a = A(a, 255), b = A(b, 255), c = A(c, 255); var d, e, f = R(a, b, c), g = Q(a, b, c), h = f, i = f - g; if (e = 0 === f ? 0 : i / f, f == g) d = 0; else { switch (f) { case a: d = (b - c) / i + (c > b ? 6 : 0); break; case b: d = (c - a) / i + 2; break; case c: d = (a - b) / i + 4 }d /= 6 } return { h: d, s: e, v: h } } function h(b, c, d) { b = 6 * A(b, 360), c = A(c, 100), d = A(d, 100); var e = a.floor(b), f = b - e, g = d * (1 - c), h = d * (1 - f * c), i = d * (1 - (1 - f) * c), j = e % 6, k = [d, h, g, g, i, d][j], l = [i, d, d, h, g, g][j], m = [g, g, i, d, d, h][j]; return { r: 255 * k, g: 255 * l, b: 255 * m } } function i(a, b, c, d) { var e = [F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16))]; return d && e[0].charAt(0) == e[0].charAt(1) && e[1].charAt(0) == e[1].charAt(1) && e[2].charAt(0) == e[2].charAt(1) ? e[0].charAt(0) + e[1].charAt(0) + e[2].charAt(0) : e.join("") } function j(a, b, c, d, e) { var f = [F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16)), F(H(d))]; return e && f[0].charAt(0) == f[0].charAt(1) && f[1].charAt(0) == f[1].charAt(1) && f[2].charAt(0) == f[2].charAt(1) && f[3].charAt(0) == f[3].charAt(1) ? f[0].charAt(0) + f[1].charAt(0) + f[2].charAt(0) + f[3].charAt(0) : f.join("") } function k(a, b, c, d) { var e = [F(H(d)), F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16))]; return e.join("") } function l(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.s -= c / 100, d.s = B(d.s), b(d) } function m(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.s += c / 100, d.s = B(d.s), b(d) } function n(a) { return b(a).desaturate(100) } function o(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.l += c / 100, d.l = B(d.l), b(d) } function p(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toRgb(); return d.r = R(0, Q(255, d.r - P(255 * -(c / 100)))), d.g = R(0, Q(255, d.g - P(255 * -(c / 100)))), d.b = R(0, Q(255, d.b - P(255 * -(c / 100)))), b(d) } function q(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.l -= c / 100, d.l = B(d.l), b(d) } function r(a, c) { var d = b(a).toHsl(), e = (d.h + c) % 360; return d.h = 0 > e ? 360 + e : e, b(d) } function s(a) { var c = b(a).toHsl(); return c.h = (c.h + 180) % 360, b(c) } function t(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 120) % 360, s: c.s, l: c.l }), b({ h: (d + 240) % 360, s: c.s, l: c.l })] } function u(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 90) % 360, s: c.s, l: c.l }), b({ h: (d + 180) % 360, s: c.s, l: c.l }), b({ h: (d + 270) % 360, s: c.s, l: c.l })] } function v(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 72) % 360, s: c.s, l: c.l }), b({ h: (d + 216) % 360, s: c.s, l: c.l })] } function w(a, c, d) { c = c || 6, d = d || 30; var e = b(a).toHsl(), f = 360 / d, g = [b(a)]; for (e.h = (e.h - (f * c >> 1) + 720) % 360; --c;)e.h = (e.h + f) % 360, g.push(b(e)); return g } function x(a, c) { c = c || 6; for (var d = b(a).toHsv(), e = d.h, f = d.s, g = d.v, h = [], i = 1 / c; c--;)h.push(b({ h: e, s: f, v: g })), g = (g + i) % 1; return h } function y(a) { var b = {}; for (var c in a) a.hasOwnProperty(c) && (b[a[c]] = c); return b } function z(a) { return a = parseFloat(a), (isNaN(a) || 0 > a || a > 1) && (a = 1), a } function A(b, c) { D(b) && (b = "100%"); var d = E(b); return b = Q(c, R(0, parseFloat(b))), d && (b = parseInt(b * c, 10) / 100), a.abs(b - c) < 1e-6 ? 1 : b % c / parseFloat(c) } function B(a) { return Q(1, R(0, a)) } function C(a) { return parseInt(a, 16) } function D(a) { return "string" == typeof a && -1 != a.indexOf(".") && 1 === parseFloat(a) } function E(a) { return "string" == typeof a && -1 != a.indexOf("%") } function F(a) { return 1 == a.length ? "0" + a : "" + a } function G(a) { return 1 >= a && (a = 100 * a + "%"), a } function H(b) { return a.round(255 * parseFloat(b)).toString(16) } function I(a) { return C(a) / 255 } function J(a) { return !!V.CSS_UNIT.exec(a) } function K(a) { a = a.replace(M, "").replace(N, "").toLowerCase(); var b = !1; if (T[a]) a = T[a], b = !0; else if ("transparent" == a) return { r: 0, g: 0, b: 0, a: 0, format: "name" }; var c; return (c = V.rgb.exec(a)) ? { r: c[1], g: c[2], b: c[3] } : (c = V.rgba.exec(a)) ? { r: c[1], g: c[2], b: c[3], a: c[4] } : (c = V.hsl.exec(a)) ? { h: c[1], s: c[2], l: c[3] } : (c = V.hsla.exec(a)) ? { h: c[1], s: c[2], l: c[3], a: c[4] } : (c = V.hsv.exec(a)) ? { h: c[1], s: c[2], v: c[3] } : (c = V.hsva.exec(a)) ? { h: c[1], s: c[2], v: c[3], a: c[4] } : (c = V.hex8.exec(a)) ? { r: C(c[1]), g: C(c[2]), b: C(c[3]), a: I(c[4]), format: b ? "name" : "hex8" } : (c = V.hex6.exec(a)) ? { r: C(c[1]), g: C(c[2]), b: C(c[3]), format: b ? "name" : "hex" } : (c = V.hex4.exec(a)) ? { r: C(c[1] + "" + c[1]), g: C(c[2] + "" + c[2]), b: C(c[3] + "" + c[3]), a: I(c[4] + "" + c[4]), format: b ? "name" : "hex8" } : (c = V.hex3.exec(a)) ? { r: C(c[1] + "" + c[1]), g: C(c[2] + "" + c[2]), b: C(c[3] + "" + c[3]), format: b ? "name" : "hex" } : !1 } function L(a) { var b, c; return a = a || { level: "AA", size: "small" }, b = (a.level || "AA").toUpperCase(), c = (a.size || "small").toLowerCase(), "AA" !== b && "AAA" !== b && (b = "AA"), "small" !== c && "large" !== c && (c = "small"), { level: b, size: c } } var M = /^\s+/, N = /\s+$/, O = 0, P = a.round, Q = a.min, R = a.max, S = a.random; b.prototype = { isDark: function () { return this.getBrightness() < 128 }, isLight: function () { return !this.isDark() }, isValid: function () { return this._ok }, getOriginalInput: function () { return this._originalInput }, getFormat: function () { return this._format }, getAlpha: function () { return this._a }, getBrightness: function () { var a = this.toRgb(); return (299 * a.r + 587 * a.g + 114 * a.b) / 1e3 }, getLuminance: function () { var b, c, d, e, f, g, h = this.toRgb(); return b = h.r / 255, c = h.g / 255, d = h.b / 255, e = .03928 >= b ? b / 12.92 : a.pow((b + .055) / 1.055, 2.4), f = .03928 >= c ? c / 12.92 : a.pow((c + .055) / 1.055, 2.4), g = .03928 >= d ? d / 12.92 : a.pow((d + .055) / 1.055, 2.4), .2126 * e + .7152 * f + .0722 * g }, setAlpha: function (a) { return this._a = z(a), this._roundA = P(100 * this._a) / 100, this }, toHsv: function () { var a = g(this._r, this._g, this._b); return { h: 360 * a.h, s: a.s, v: a.v, a: this._a } }, toHsvString: function () { var a = g(this._r, this._g, this._b), b = P(360 * a.h), c = P(100 * a.s), d = P(100 * a.v); return 1 == this._a ? "hsv(" + b + ", " + c + "%, " + d + "%)" : "hsva(" + b + ", " + c + "%, " + d + "%, " + this._roundA + ")" }, toHsl: function () { var a = e(this._r, this._g, this._b); return { h: 360 * a.h, s: a.s, l: a.l, a: this._a } }, toHslString: function () { var a = e(this._r, this._g, this._b), b = P(360 * a.h), c = P(100 * a.s), d = P(100 * a.l); return 1 == this._a ? "hsl(" + b + ", " + c + "%, " + d + "%)" : "hsla(" + b + ", " + c + "%, " + d + "%, " + this._roundA + ")" }, toHex: function (a) { return i(this._r, this._g, this._b, a) }, toHexString: function (a) { return "#" + this.toHex(a) }, toHex8: function (a) { return j(this._r, this._g, this._b, this._a, a) }, toHex8String: function (a) { return "#" + this.toHex8(a) }, toRgb: function () { return { r: P(this._r), g: P(this._g), b: P(this._b), a: this._a } }, toRgbString: function () { return 1 == this._a ? "rgb(" + P(this._r) + ", " + P(this._g) + ", " + P(this._b) + ")" : "rgba(" + P(this._r) + ", " + P(this._g) + ", " + P(this._b) + ", " + this._roundA + ")" }, toPercentageRgb: function () { return { r: P(100 * A(this._r, 255)) + "%", g: P(100 * A(this._g, 255)) + "%", b: P(100 * A(this._b, 255)) + "%", a: this._a } }, toPercentageRgbString: function () { return 1 == this._a ? "rgb(" + P(100 * A(this._r, 255)) + "%, " + P(100 * A(this._g, 255)) + "%, " + P(100 * A(this._b, 255)) + "%)" : "rgba(" + P(100 * A(this._r, 255)) + "%, " + P(100 * A(this._g, 255)) + "%, " + P(100 * A(this._b, 255)) + "%, " + this._roundA + ")" }, toName: function () { return 0 === this._a ? "transparent" : this._a < 1 ? !1 : U[i(this._r, this._g, this._b, !0)] || !1 }, toFilter: function (a) { var c = "#" + k(this._r, this._g, this._b, this._a), d = c, e = this._gradientType ? "GradientType = 1, " : ""; if (a) { var f = b(a); d = "#" + k(f._r, f._g, f._b, f._a) } return "progid:DXImageTransform.Microsoft.gradient(" + e + "startColorstr=" + c + ",endColorstr=" + d + ")" }, toString: function (a) { var b = !!a; a = a || this._format; var c = !1, d = this._a < 1 && this._a >= 0, e = !b && d && ("hex" === a || "hex6" === a || "hex3" === a || "hex4" === a || "hex8" === a || "name" === a); return e ? "name" === a && 0 === this._a ? this.toName() : this.toRgbString() : ("rgb" === a && (c = this.toRgbString()), "prgb" === a && (c = this.toPercentageRgbString()), ("hex" === a || "hex6" === a) && (c = this.toHexString()), "hex3" === a && (c = this.toHexString(!0)), "hex4" === a && (c = this.toHex8String(!0)), "hex8" === a && (c = this.toHex8String()), "name" === a && (c = this.toName()), "hsl" === a && (c = this.toHslString()), "hsv" === a && (c = this.toHsvString()), c || this.toHexString()) }, clone: function () { return b(this.toString()) }, _applyModification: function (a, b) { var c = a.apply(null, [this].concat([].slice.call(b))); return this._r = c._r, this._g = c._g, this._b = c._b, this.setAlpha(c._a), this }, lighten: function () { return this._applyModification(o, arguments) }, brighten: function () { return this._applyModification(p, arguments) }, darken: function () { return this._applyModification(q, arguments) }, desaturate: function () { return this._applyModification(l, arguments) }, saturate: function () { return this._applyModification(m, arguments) }, greyscale: function () { return this._applyModification(n, arguments) }, spin: function () { return this._applyModification(r, arguments) }, _applyCombination: function (a, b) { return a.apply(null, [this].concat([].slice.call(b))) }, analogous: function () { return this._applyCombination(w, arguments) }, complement: function () { return this._applyCombination(s, arguments) }, monochromatic: function () { return this._applyCombination(x, arguments) }, splitcomplement: function () { return this._applyCombination(v, arguments) }, triad: function () { return this._applyCombination(t, arguments) }, tetrad: function () { return this._applyCombination(u, arguments) } }, b.fromRatio = function (a, c) { if ("object" == typeof a) { var d = {}; for (var e in a) a.hasOwnProperty(e) && ("a" === e ? d[e] = a[e] : d[e] = G(a[e])); a = d } return b(a, c) }, b.equals = function (a, c) { return a && c ? b(a).toRgbString() == b(c).toRgbString() : !1 }, b.random = function () { return b.fromRatio({ r: S(), g: S(), b: S() }) }, b.mix = function (a, c, d) { d = 0 === d ? 0 : d || 50; var e = b(a).toRgb(), f = b(c).toRgb(), g = d / 100, h = { r: (f.r - e.r) * g + e.r, g: (f.g - e.g) * g + e.g, b: (f.b - e.b) * g + e.b, a: (f.a - e.a) * g + e.a }; return b(h) }, b.readability = function (c, d) { var e = b(c), f = b(d); return (a.max(e.getLuminance(), f.getLuminance()) + .05) / (a.min(e.getLuminance(), f.getLuminance()) + .05) }, b.isReadable = function (a, c, d) { var e, f, g = b.readability(a, c); switch (f = !1, e = L(d), e.level + e.size) { case "AAsmall": case "AAAlarge": f = g >= 4.5; break; case "AAlarge": f = g >= 3; break; case "AAAsmall": f = g >= 7 }return f }, b.mostReadable = function (a, c, d) { var e, f, g, h, i = null, j = 0; d = d || {}, f = d.includeFallbackColors, g = d.level, h = d.size; for (var k = 0; k < c.length; k++)e = b.readability(a, c[k]), e > j && (j = e, i = b(c[k])); return b.isReadable(a, i, { level: g, size: h }) || !f ? i : (d.includeFallbackColors = !1, b.mostReadable(a, ["#fff", "#000"], d)) }; var T = b.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }, U = b.hexNames = y(T), V = function () { var a = "[-\\+]?\\d+%?", b = "[-\\+]?\\d*\\.\\d+%?", c = "(?:" + b + ")|(?:" + a + ")", d = "[\\s|\\(]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")\\s*\\)?", e = "[\\s|\\(]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")\\s*\\)?"; return { CSS_UNIT: new RegExp(c), rgb: new RegExp("rgb" + d), rgba: new RegExp("rgba" + e), hsl: new RegExp("hsl" + d), hsla: new RegExp("hsla" + e), hsv: new RegExp("hsv" + d), hsva: new RegExp("hsva" + e), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ } }(); "undefined" != typeof module && module.exports ? module.exports = b : "function" == typeof define && define.amd ? define(function () { return b }) : window.tinycolor = b }(Math);
  13342. }(huiJquery));