/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠDoc Ops ĠCon sort ium Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . do co ps . asci ido ctor j . extension . adr Ċ Ċ import Ġio . do co ps . asci ido ctor j . extension . adr . model . Ad r ĊĊ Ċ class ĠA dr Maker Ġ{ ĊĊĠĠĠ Ġfun Ġmake Ad r Svg ( adr : ĠA dr , Ġdrop Shadow : ĠBoolean Ġ= Ġtrue ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġsb . append ( make Title ( title Ġ= Ġad r . title )) ĊĠĠĠĠĠĠĠ Ġsb . append ( make Buttons ( adr Ġ= Ġad r )) ĊĠĠĠĠĠĠĠ Ġsb . append ( make Date And Status ( adr Ġ= Ġad r )) ĊĠĠĠĠĠĠĠ Ġvar Ġstart Y Ġ= Ġ 2 2 0 ĊĠĠĠĠĠĠĠ Ġsb . append ( make Context ( adr Ġ= Ġad r , Ġstart Y )) ĊĠĠĠĠĠĠĠ Ġstart Y Ġ+= Ġ( adr . context . size Ġ* Ġ 3 0 ) Ġ+ Ġ 4 0 ĊĠĠĠĠĠĠĠ Ġsb . append ( make Decision ( adr Ġ= Ġad r , Ġstart Y )) ĊĠĠĠĠĠĠĠ Ġstart Y Ġ+= Ġ( adr . decision . size Ġ* Ġ 3 0 ) Ġ+ Ġ 4 0 ĊĠĠĠĠĠĠĠ Ġsb . append ( make Con sequences ( adr Ġ= Ġad r , Ġstart Y )) ĊĠĠĠĠĠĠĠ Ġstart Y Ġ+= Ġ( adr . con sequences . size Ġ* Ġ 3 0 ) Ġ+ Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġsvg ( sb . toString (), Ġstart Y , Ġdrop Shadow ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Title ( title : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠ Ġ< text Ġx =" 4 8 5 " Ġy =" 4 0 " Ġclass =" title " Ġtext - anchor =" middle ">$ title </ text > ĊĠĠĠĠ Ġ< line Ġx 1 =" 2 0 " Ġy 1 =" 4 5 " Ġx 2 =" 9 7 0 " Ġy 2 =" 4 5 " Ġstroke ="# 8 B 8 B 9 0 " Ġ/> ĊĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmake Buttons ( adr : ĠA dr ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠ Ġ< g > ĊĠĠĠĠĠĠĠ Ġ< rect Ġx =" 9 0 " Ġy =" 5 5 " Ġfill ="# 5 6 8 BB F " Ġwidth =" 1 5 0 " Ġheight =" 3 0 " Ġrx =" 5 " Ġry =" 5 " Ġclass ="${ adr . status Class ( adr . status ," Pro posed ")} "/> ĊĠĠĠĠĠĠĠ Ġ< text Ġx =" 1 6 5 " Ġy =" 7 5 " Ġtext - anchor =" middle " Ġclass =" subtitle "> Pro posed </ text > ĊĠĠĠ Ġ</ g > ĊĠĠĠ Ġ< g > ĊĠĠĠĠĠĠĠ Ġ< rect Ġx =" 2 5 0 " Ġy =" 5 5 " Ġfill ="# 5 3 A 5 5 1 " Ġwidth =" 1 5 0 " Ġheight =" 3 0 " Ġrx =" 5 " Ġry =" 5 " Ġclass ="${ adr . status Class ( adr . status ," Accepted ")} "/> ĊĠĠĠĠĠĠĠ Ġ< text Ġx =" 3 2 5 " Ġy =" 7 5 " Ġtext - anchor =" middle " Ġclass =" subtitle "> Accepted </ text > ĊĠĠĠ Ġ</ g > ĊĠĠĠ Ġ< g > ĊĠĠĠĠĠĠĠ Ġ< rect Ġx =" 4 1 0 " Ġy =" 5 5 " Ġfill ="# F 5 C 3 4 4 " Ġwidth =" 1 5 0 " Ġheight =" 3 0 " Ġrx =" 5 " Ġry =" 5 " Ġclass ="${ adr . status Class ( adr . status ," Super se ded ")} "/> ĊĠĠĠĠĠĠĠ Ġ< text Ġx =" 4 8 5 " Ġy =" 7 5 " Ġtext - anchor =" middle " Ġclass =" subtitle "> Super se ded </ text > ĊĠĠĠ Ġ</ g > ĊĠĠĠ Ġ< g > ĊĠĠĠĠĠĠĠ Ġ< rect Ġx =" 5 7 0 " Ġy =" 5 5 " Ġfill ="# F 5 C 3 4 4 " Ġwidth =" 1 5 0 " Ġheight =" 3 0 " Ġrx =" 5 " Ġry =" 5 " Ġclass ="${ adr . status Class ( adr . status ," Deprecated ")} "/> ĊĠĠĠĠĠĠĠ Ġ< text Ġx =" 6 4 5 " Ġy =" 7 5 " Ġtext - anchor =" middle " Ġclass =" subtitle "> Deprecated </ text > ĊĠĠĠ Ġ</ g > ĊĠĠĠ Ġ< g > ĊĠĠĠĠĠĠĠ Ġ< rect Ġx =" 7 3 0 " Ġy =" 5 5 " Ġfill ="# CB 4 4 4 A " Ġwidth =" 1 5 0 " Ġheight =" 3 0 " Ġrx =" 5 " Ġry =" 5 " Ġclass ="${ adr . status Class ( adr . status ," Rejected ")} "/> ĊĠĠĠĠĠĠĠ Ġ< text Ġx =" 8 0 5 " Ġy =" 7 5 " Ġtext - anchor =" middle " Ġclass =" subtitle "> Rejected </ text > ĊĠĠĠ Ġ</ g > ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmake Date And Status ( adr : ĠA dr ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠ Ġ< text Ġx =" 2 0 " Ġy =" 1 1 0 " Ġclass =" context line "> ĊĠĠĠĠĠĠĠ Ġ< t span > Date : Ġ</ t span > ĊĠĠĠ Ġ< t span Ġclass =" content ">${ adr . date }</ t span > ĊĠĠĠ Ġ</ text > ĊĠĠĠ Ġ< text Ġx =" 2 0 " Ġy =" 1 4 0 "> ĊĠĠĠĠĠĠĠ Ġ< t span Ġclass =" status "> Status Ġ</ t span > ĊĠĠĠĠĠĠĠ Ġ< t span Ġx =" 2 0 " Ġdy =" 3 0 " Ġclass =" content ">${ adr . status }</ t span > ĊĠĠĠ Ġ</ text > ĊĠĠĠ Ġ< line Ġx 1 =" 2 0 " Ġy 1 =" 1 4 5 " Ġx 2 =" 9 7 0 " Ġy 2 =" 1 4 5 " Ġstroke ="# 8 B 8 B 9 0 " Ġ/> ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Context ( adr : ĠA dr , Ġstart Y : ĠInt Ġ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< text Ġx =" 2 0 " Ġy ="$ start Y "> ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< t span Ġclass =" status "> Context </ t span > """ ĊĊĠĠĠĠĠĠĠ Ġad r . context . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< t span Ġx =" 2 0 " Ġdy =" 3 0 " Ġclass =" content ">${ it . trim () }</ t span > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" </ text > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< line Ġx 1 =" 2 0 " Ġy 1 ="${ start Y + 5 }" Ġx 2 =" 9 7 0 " Ġy 2 ="${ start Y + 5 }" Ġstroke ="# 8 B 8 B 9 0 " Ġ/> ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġreturn Ġtext . trim Indent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Decision ( adr : ĠA dr , Ġstart Y : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< text Ġx =" 2 0 " Ġy ="$ start Y "> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< t span Ġclass =" status "> Decision </ t span > ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġad r . decision . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" < t span Ġx =" 2 0 " Ġdy =" 3 0 " Ġclass =" content ">$ it </ t span > """ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" </ text > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< line Ġx 1 =" 2 0 " Ġy 1 ="${ start Y + 5 }" Ġx 2 =" 9 7 0 " Ġy 2 ="${ start Y + 5 }" Ġstroke ="# 8 B 8 B 9 0 " Ġ/> ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġreturn Ġtext . trim Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmake Con sequences ( adr : ĠA dr , Ġstart Y : ĠInt ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< text Ġx =" 2 0 " Ġy ="$ start Y "> ĊĠĠĠĠĠĠĠ Ġ< t span Ġclass =" status "> Con sequences </ t span > ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġad r . con sequences . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< t span Ġx =" 2 0 " Ġdy =" 3 0 " Ġclass =" content ">$ it </ t span > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ""" </ text > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< line Ġx 1 =" 2 0 " Ġy 1 ="${ start Y + 5 }" Ġx 2 =" 9 7 0 " Ġy 2 ="${ start Y + 5 }" Ġstroke ="# 8 B 8 B 9 0 " Ġ/> ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġreturn Ġtext . trim Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġsvg ( body : ĠString , Ġheight : ĠInt Ġ= Ġ 5 5 0 , Ġdrop Shadow : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfilter Ġ= Ġ Ġ"" ĊĠĠĠĠĠĠĠ Ġif ( drop Shadow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġ""" filter =" url (# drop Shadow ) """" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" Ċ <? xml Ġversion =" 1 . 0 " Ġstandalone =" no "?> Ċ < svg Ġxmlns =" http :// www . w 3 . org / 2 0 0 0 / svg " Ġwidth =" 9 7 0 " Ġheight ="$ height " ĊĠĠĠĠ ĠviewBox =" 0 Ġ 0 Ġ 1 0 0 0 Ġ${ height + 3 0 }"> ĊĠĠĠ Ġ< filter Ġid =" drop Shadow " Ġheight =" 1 3 0 %"> ĊĠĠĠĠĠĠĠ Ġ< fe Gaussian Blur Ġin =" Source Alpha " Ġstd De viation =" 6 "/> ĊĠĠĠĠĠĠĠ Ġ< fe Offset Ġdx =" 5 " Ġdy =" 5 " Ġresult =" offset blur "/> ĊĠĠĠĠĠĠĠ Ġ< fe Component Transfer > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< fe Func A Ġtype =" linear " Ġslope =" 0 . 9 "/> ĊĠĠĠĠĠĠĠ Ġ</ fe Component Transfer > ĊĠĠĠĠĠĠĠ Ġ< fe Merge > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< fe Merge Node /> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< fe Merge Node Ġin =" Source Graphic "/> ĊĠĠĠĠĠĠĠ Ġ</ fe Merge > ĊĠĠĠ Ġ</ filter > ĊĠĠĠ Ġ< style > ĊĠĠĠĠĠĠĠ Ġ. title Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġbold Ġ 3 6 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill : Ġ# 2 8 2 9 3 D ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. status Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġbold Ġ 1 8 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġnormal Ġ 1 4 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġbold Ġ 1 8 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. context line Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġnormal Ġ 1 4 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. subtitle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont : Ġbold Ġ 1 8 px Ġ" Noto ĠSans ", sans - serif ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill : Ġwhite ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. un selected Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopacity : Ġ 0 . 4 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ</ style > ĊĠĠĠ Ġ< rect Ġid =" my Rect " Ġx =" 1 0 " Ġy =" 0 " Ġwidth =" 9 7 0 " Ġheight =" 9 7 %" Ġrx =" 5 " Ġry =" 5 " Ġ Ġfill ="# fffe fa " Ġ Ġclass =" card " Ġ$ filter /> ĊĠĠĠ Ġ$ body ĊĠĠĠ Ġ</ svg > ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} Ċ }