/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 2 1 ĠE li or Ġ" M allow igi " ĠB ou kh ob za Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . m allow igi . colors Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . thought works . x stream . X Stream Ċ import Ġjava . awt . Color Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠPre defined Colors : ĠThis Ġis Ġthe Ġservice Ġcontaining Ġthe Ġpredefined Ġcolors Ġfrom Ġthe ĠXML Ġfile Ċ Ġ* Ċ Ġ*/ Ċ class ĠPre defined Colors Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠCOL ORS _ XML Ġ= Ġ"/ config / colors . xml " ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġval Ġinstance : ĠPre defined Colors ĊĠĠĠĠĠ Ġget () Ġ= ĠApplication Manager . getApplication (). getService ( Pre defined Colors :: class . java ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġlateinit Ġvar Ġsvg Colors : ĠMutable Map < Int , ĠString ?> ĊĠ Ġprivate Ġlateinit Ġvar Ġsvg Names : ĠMutable Map < String ?, ĠInt > ĊĊĠ Ġprivate Ġlateinit Ġvar Ġjava Colors : ĠMutable Map < Int , ĠString > ĊĠ Ġprivate Ġlateinit Ġvar Ġjava Names : ĠMutable Map < String , ĠInt > ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġsvg Name Ġfrom ĠColor ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġcolor ĊĠĠ Ġ* Ġ@ return ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfind SVG Name ( color : ĠColor ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġrgb Ġ= Ġto Color ( color . rgb ) ĊĠĠĠ Ġreturn Ġsvg Colors [ rgb ] ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġa Ġsvg Color Ġfrom Ġa Ġname ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġname ĊĠĠ Ġ* Ġ@ return ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfind SVG Color ( name : ĠString ?): ĠColor ? Ġ{ ĊĠĠĠ Ġval Ġcode Ġ= Ġsvg Names [ name ] Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn ĠColor ( code ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġjava Name Ġfrom Ġcolor ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġcolor ĊĠĠ Ġ* Ġ@ return ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfind Java Name ( color : ĠColor ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġrgb Ġ= Ġto Color ( color . rgb ) ĊĠĠĠ Ġreturn Ġjava Colors [ rgb ] ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġjava Ġcolor Ġfrom Ġname ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġname ĊĠĠ Ġ* Ġ@ return ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfind Java Color ( name : ĠString ): ĠColor ? Ġ{ ĊĠĠĠ Ġval Ġcode Ġ= Ġjava Names [ name ] Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn ĠColor ( code ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLoad Ġcolors Ġfrom ĠXML ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġload Colors () Ġ{ ĊĠĠĠ Ġparse Colors From XML (). also Ġ{ ĊĠĠĠĠĠ Ġload SVG Colors ( it ) ĊĠĠĠĠĠ Ġload Java Colors ( it ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġload SVG Colors ( colors : ĠColors ) Ġ{ ĊĠĠĠ Ġsvg Colors Ġ= ĠTreeMap () ĊĠĠĠ Ġsvg Names Ġ= ĠTreeMap () ĊĊĠĠĠ Ġfor Ġ( col : ĠSingle Color Ġin Ġcolors . svg Colors !! ) Ġ{ ĊĠĠĠĠĠ Ġ( svg Colors Ġas ĠTreeMap < Int , ĠString ?> )[ col . color Int ] Ġ= Ġcol . name ĊĠĠĠĠĠ Ġ( svg Names Ġas ĠTreeMap < String ?, ĠInt >) [ col . name ] Ġ= Ġcol . color Int ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġload Java Colors ( colors : ĠColors ) Ġ{ ĊĠĠĠ Ġjava Colors Ġ= ĠTreeMap () ĊĠĠĠ Ġjava Names Ġ= ĠTreeMap () ĊĊĠĠĠ Ġfor Ġ( col : ĠSingle Color Ġin Ġcolors . java Colors !! ) Ġ{ ĊĠĠĠĠĠ Ġ( java Colors Ġas ĠTreeMap < Int , ĠString >) [ col . color Int ] Ġ= Ġcol . name ĊĠĠĠĠĠ Ġ( java Names Ġas ĠTreeMap < String , ĠInt >) [ col . name ] Ġ= Ġcol . color Int ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġparse Colors From XML (): ĠColors Ġ{ ĊĠĠĠ Ġval Ġxml Ġ= ĠPre defined Colors :: class . java . getResource ( COLORS _ XML ) ĊĠĠĠ Ġval Ġx Stream Ġ= ĠX Stream () ĊĠĠĠ ĠX Stream . setup Default Security ( x Stream ) ĊĠĠĠ Ġx Stream . allow Types By Wildcard ( array Of (" com . m allow igi . colors .* ")) ĊĠĠĠ Ġx Stream . alias (" colors ", ĠColors :: class . java ) ĊĠĠĠ Ġx Stream . alias (" color ", ĠSingle Color :: class . java ) ĊĠĠĠ Ġx Stream . use Attribute For ( Single Color :: class . java , Ġ" name ") ĊĠĠĠ Ġx Stream . use Attribute For ( Single Color :: class . java , Ġ" code ") ĊĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġx Stream . from XML ( xml ) Ġas ĠColors ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠ ĠColors () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġto Color ( rgb : ĠInt ): ĠInt Ġ= Ġrgb Ġand Ġ 0 xffffff ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġload Colors () ĊĠ Ġ} Ċ } Ċ