/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 9 ĠRen ĠBind en Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 Ġuk . co . re nb inden . te ens y . world Ċ Ċ class ĠBits y Item ( ĊĠĠĠ Ġoverride Ġvar Ġid : ĠString , ĊĠĠĠ Ġoverride Ġvar Ġdrawing : ĠBits y Drawing , ĊĠĠĠ Ġvar Ġname : ĠString ?, ĊĠĠĠ Ġvar Ġdialog Id : ĠString ?, ĊĠĠĠ Ġvar Ġcolor : ĠInt ? Ċ ): ĠBits y Serializable , ĠBits y Mutable Image Resource Ġ{ ĊĊĠĠĠ Ġconstructor ( id : ĠString , Ġdrawing : ĠBits y Drawing , Ġname : ĠString , Ġdialog : ĠBits y Dialog , Ġcolor : ĠInt ?): ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ( id , Ġdrawing , Ġname , Ġdialog . id , Ġcolor ) ĊĊĠĠĠ Ġoverride Ġfun Ġserialize (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġoutput . append (" ITM Ġ$ id \ n ") ĊĠĠĠĠĠĠĠ Ġoutput . append ( drawing . serialize ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . append (" NAME Ġ$ name \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . append (" DL G Ġ$ dialog Id \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( color Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . append (" COL Ġ$ color \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoutput . append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdeserialize ( lines : ĠList < String >, Ġi : ĠInt ): ĠBits y Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġlines [ j ]. split (" Ġ" )[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdrawing Ġ= ĠBits y Drawing (" DR W _$ id ", Ġmutable ListOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lines [ j ]. split (" Ġ" )[ 0 ] Ġ== Ġ" DR W ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw ing Ġalready Ġexists . ĠBits y Ġdoesn 't Ġoutput Ġitems Ġthis Ġway Ġbut Ġis Ġable Ġto Ġparse Ġthem . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe 'll Ġdo Ġthese Ġin Ġthe Ġsecond Ġpass . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawing Id Ġ= Ġ" ITM _$ id " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Ġ= ĠBits y Drawing . deserialize ( lines , Ġj , Ġdrawing Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdialog Id : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( j Ġ< Ġlines . size Ġ&& Ġlines [ j ]. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Parts Ġ= Ġlines [ j ]. split (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( line Parts [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" COL " Ġ-> Ġcolor Ġ= Ġline Parts [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" DL G " Ġ-> Ġdialog Id Ġ= Ġline Parts [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NAME " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠRegex ("\\ s (. +) "). find ( lines [ j ]) ?. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBits y Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsize ( lines : ĠList < String >, Ġi : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ Ġ// Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lines [ j ]. split (" Ġ" )[ 0 ] Ġ== Ġ" DR W ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ+= ĠBits y Drawing . size ( lines , Ġj , Ġ" ITM _ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( j Ġ< Ġlines . size Ġ&& Ġlines [ j ]. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġj Ġ- Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ