package Ġcom . new bie chen . nb reader . ui . component . book . text . entity . resource Ċ Ċ import Ġcom . new bie chen . nb reader . ui . component . book . text . entity . resource . image . Text Image Ċ import Ġcom . new bie chen . nb reader . ui . component . book . text . entity . resource . image . Text Image Factory Ċ import Ġcom . new bie chen . nb reader . ui . component . book . text . parcel . Text Parcel Ċ import Ġcom . new bie chen . nb reader . u il ts . Log Helper Ċ Ċ /** Ċ Ġ* Ġ Ġauthor Ġ: Ġnew bie chen Ċ Ġ* Ġ Ġdate Ġ: Ġ 2 0 2 0 / 2 / 2 9 Ġ 1 2 : 1 2 ĠAM Ċ Ġ* Ġ Ġdescription Ġ: æĸĩæľ¬ èµĦæºĲ ä¿¡æģ¯ Ċ Ġ*/ Ċ Ċ class ĠText Resource ( resource Data : ĠByteArray ?) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Text Resource " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : åŃĺåľ¨ ä¸İ åħ¶ä»ĸ èµĦæºĲ éĩį åĲį çļĦ æĥħåĨµ ï¼Į è¯¥ å¦Ĥä½ķ å¤ĦçĲĨ ĊĠĠĠ Ġ// Ġ ç«ł èĬĤ ä¸Ń åĮħåĲ« çļĦæīĢæľī æłĩçŃ¾ ĊĠĠĠ Ġprivate Ġvar Ġm Resource Map : ĠMap < String , ĠAny ?> Ġ= Ġif Ġ( resource Data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġempty Map () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠText Resource Decoder ( resource Data ). decode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage ( resourceId : ĠString ): ĠText Image ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Resource Map [ resourceId ] Ġas ĠText Image ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Font ( resourceId : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġèİ·åıĸ Ġid Ġ å¯¹åºĶçļĦ Ġparagraph Ġ ç´¢å¼ķ ĊĠĠĠ Ġfun Ġget Paragraph Index ById () Ġ{ ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ æĸĩæľ¬ èµĦæºĲ è§£æŀĲ åĻ¨ Ċ } Ċ Ċ /** Ċ Ġ* Ġ æĸĩæľ¬ èµĦæºĲ è§£æŀĲ åĻ¨ Ċ Ġ*/ Ċ private Ġclass ĠText Resource Decoder ( resource Data : ĠByteArray ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Text Resource Decoder " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Parcel : ĠText Parcel Ġ= ĠText Parcel ( resource Data ) ĊĠĠĠ Ġprivate Ġvar Ġm Buffer Len Ġ= Ġresource Data . size ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿Ľè¡Į è§£æŀĲ æĵįä½ľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecode (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Attr Map Ġ= Ġmutable Map Of < String , ĠAny ?> () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( m Parcel . offset () Ġ< Ġm Buffer Len ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ å½ĵåīį ç´¢å¼ķ ä¸ĭçļĦ æłĩçŃ¾ ç±»åŀĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Type Ġ= Ġm Parcel . read Byte () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠçĶŁæĪĲ å¯¹åºĶçļĦ ĠText Tag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresource Info : ĠPair < String , ĠAny ?> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( attr Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Res Type . IMAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Info Ġ= Ġread Image Attr () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Helper . i ( TAG , Ġ" decode : Ġ$ attr Type ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Attr Map [ resource Info !!. first ] Ġ= Ġresource Info !!. second ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Attr Map ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Image Attr (): ĠPair < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Attr Ġ= ĠText Image Attr ( m Parcel ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( image Attr . id , ĠText Image Factory . getText Image ( image Attr . path )) ĊĠĠĠ Ġ} Ċ }