/* Ċ Ġ* Ġ ĠTexture Vector TestCase . java Ċ Ġ* Ġ ĠWh ir ly G lo be Lib Ċ Ġ* Ċ Ġ* Ġ ĠCreated Ġby ĠSteve ĠG iff ord . Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 1 - 2 0 2 2 Ġmouse bird Ġconsult ing Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġcom . mouse bird consult ing . aut ot ester . TestCase s Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Log Ċ import Ġcom . mouse bird . map ly .* Ċ import Ġcom . mouse bird consult ing . aut ot ester . Framework . Map ly TestCase Ċ import Ġcom . mouse bird consult ing . aut ot ester . R Ċ import Ġok io .* Ċ import Ġjava . lang . Exception Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . math . PI Ċ import Ġkotlin . math . abs Ċ Ċ class ĠTexture Vector TestCase ( activity : ĠActivity ) Ġ: ĠMap ly TestCase ( activity , Ġ" Text ured ĠVector s ") Ġ{ ĊĠĠĠĠĊĠĠĠ Ġ// ĠGrid Ġsize Ġto Ġuse Ġfor Ġclipping ĊĠĠĠ Ġ// ĠSmall er Ġis Ġgoing Ġto Ġbe Ġmore Ġtriangles , Ġbut Ġlook Ġbetter ĊĠĠĠ Ġ// ĠMight Ġbe Ġbetter Ġto Ġuse Ġa Ġbigger Ġsize Ġfor Ġthe Ġpo les ĊĠĠĠ Ġprivate Ġval ĠClip Grid Size Ġ= Ġ 2 . 0 / 1 8 0 . 0 * ĠPI ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Countries ( control : ĠBaseController ) Ġ: ĠCollection < Component Object > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Mgr Ġ= Ġactivity . assets ĊĠĠĠĠĠĠĠ Ġval Ġis G lo be Ġ= Ġcontrol Ġis ĠG lo be Controller ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġicons Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( activity . resources , ĠR . drawable . dots ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( activity . resources , ĠR . drawable . test target ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( activity . resources , ĠR . drawable . st icker )) ĊĠĠĠĠĠĠĠ Ġval Ġtex s Ġ= Ġicons . map Ġ{ Ġcontrol . add Texture ( it , Ġnull , ĠThread Mode . Thread Current ) Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġpaths Ġ= Ġasset Mgr . list (" country _ json _ 5 0 m ") ?. sorted Descending () Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġval Ġt ess Objs Ġ= Ġarray ListOf ( ArrayList < Pair < String , Vector Object >> ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġin Ġ 2 0 Ġcountries Ġto Ġapply Ġa Ġtexture Ġto ĊĠĠĠĠĠĠĠ Ġval Ġnum Countries Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġval Ġnum Projection s Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( path Ġin Ġpaths ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmore Ġ= Ġasset Mgr . open (" country _ json _ 5 0 m /$ path "). use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġstream . source (). use Ġ{ Ġsource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . buffer (). use Ġ{ Ġbuffer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . read Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Object . createFrom Geo JSON ( json )?. let Ġ{ Ġvec Obj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvec Obj . selectable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWork Ġthrough Ġeach Ġindividual Ġloop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( this Vec Obj Ġin Ġvec Obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloop Obj Ġ= Ġthis Vec Obj . deep Copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCenter Ġof Ġthe Ġtexture Ġapplication ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter Ġ= Ġloop Obj . center () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= Ġloop Obj . attributes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs ?. set Double (" ve cc enter x ", Ġcenter . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs ?. set Double (" ve cc ent ery ", Ġcenter . y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġthis Clip Grid Lon Ġ= ĠClip Grid Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is G lo be ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġadjust Ġthe Ġgrid Ġclipping Ġsize Ġbased Ġon Ġthe Ġlatitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġhelps Ġa Ġlot Ġnear Ġthe Ġpo les . Ġ ĠOtherwise Ġwe 're Ġway Ġover sampling ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( center . x ) Ġ> Ġ 6 0 . 0 Ġ/ Ġ 1 8 0 . 0 Ġ* ĠPI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Clip Grid Lon Ġ*= Ġ 4 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( abs ( center . y ) Ġ> Ġ 4 5 . 0 Ġ/ Ġ 1 8 0 . 0 Ġ* ĠPI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Clip Grid Lon Ġ*= Ġ 2 . 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloop Obj . clip To Grid ( Point 2 d ( this Clip Grid Lon , ĠClip Grid Size )) ?. tes se late ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġpath . replace (". geojson "," ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ess Objs . last (). add ( Pair ( country , it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ>= Ġnum Countries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t ess Objs . size Ġ>= Ġnum Projection s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ use Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ess Objs . add ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ use Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! more ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( java Class . simple Name , Ġ" Failed Ġto Ġload Ġ$ path ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection s Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVector Info . Texture Projection . None , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVector Info . Texture Projection . Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVector Info . Texture Projection . Tangent Plane ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġt ess Objs . map Indexed Ġ{ Ġindex , Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvec Info Ġ= ĠVector Info (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Filled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Texture ( tex s [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Texture Projection ( projection s [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Tex Scale ( 1 6 . 0 , Ġ 1 6 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĠTree Set ( items . map Ġ{ Ġit . first Ġ}). join ToString (",") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ"${ projection s [ index ]} Ġ=> Ġ$ files ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġall Ġthe Ġvectors Ġat Ġonce Ġto Ġbe Ġmore Ġefficient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġgeometry Ġgets Ġgrouped Ġtogether , Ġwhich Ġis Ġnice Ġand Ġfast ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobjs Ġ= Ġitems . map Ġ{ Ġit . second Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol . add Vectors ( objs , Ġvec Info , ĠThread Mode . Thread Any ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp With Map ( map VC : ĠMap Controller ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Case . setUp With Map ( map VC ) ĊĠĠĠĠĠĠĠ Ġvector Objs . addAll ( build Countries ( map VC )) ĊĠĠĠĠĠĠĠ Ġmap VC . animate Position Geo (- Math . PI / 2 , 0 . 0 , 1 . 0 , 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp With G lo be ( glo be VC : ĠG lo be Controller ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Case . setUp With G lo be ( glo be VC ) ĊĠĠĠĠĠĠĠ Ġvector Objs . addAll ( build Countries ( glo be VC )) ĊĠĠĠĠĠĠĠ Ġglo be VC . animate Position Geo (- Math . PI / 2 , 0 . 0 , 1 . 0 , 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġshutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontroller ?. remove Objects ( vector Objs , ĠThread Mode . Thread Current ) ĊĠĠĠĠĠĠĠ Ġvector Objs . clear () ĊĠĠĠĠĠĠĠ Ġbase Case . shutdown () ĊĠĠĠĠĠĠĠ Ġsuper . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbase Case Ġ= ĠCar to Light TestCase ( activity ) ĊĠĠĠ Ġval Ġvector Objs Ġ= ĠArrayList < Component Object >() Ċ }