package Ġcom . mapbox . maps . extension . style . layers Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . mapbox . bindgen . Value Ċ import Ġcom . mapbox . common . Logger Ċ import Ġcom . mapbox . maps . Layer Position Ċ import Ġcom . mapbox . maps . Style Manager Interface Ċ import Ġcom . mapbox . maps . extension . style . Style Contract Ċ import Ġcom . mapbox . maps . extension . style . Style Interface Ċ import Ġcom . mapbox . maps . extension . style . layers . generated .* Ċ import Ġcom . mapbox . maps . extension . style . layers . properties . PropertyValue Ċ import Ġcom . mapbox . maps . extension . style . layers . properties . generated . Visibility Ċ import Ġcom . mapbox . maps . extension . style . utils . unwrap Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġthe Ġdifferent ĠLayer Ġtypes Ċ Ġ*/ Ċ abstract Ġclass ĠLayer Ġ: ĠStyle Contract . Style Layer Extension Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠThe ĠID Ġof Ġthe ĠLayer . ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġval Ġlayer Id : ĠString ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSource ĠID Ġof Ġthe ĠLayer , Ġcould Ġbe Ġnull Ġfor Ġ[ Background Layer ] ĊĠĠ Ġ*/ ĊĠ Ġinternal Ġvar Ġinternal Source Id : ĠString ? Ġ= Ġnull ĊĊĠ Ġinternal Ġvar Ġdelegate : ĠStyle Manager Interface ? Ġ= Ġnull ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠProperties Ġof Ġthis Ġlayer . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġval Ġlayer Properties Ġby Ġlazy Ġ{ ĊĠĠĠ ĠHashMap < String , ĠProperty Value <* >> (). also Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠ Ġmap [" id "] Ġ= ĠProperty Value (" id ", Ġlayer Id ) ĊĠĠĠĠĠ Ġmap [" type "] Ġ= ĠProperty Value (" type ", ĠgetType ()) ĊĠĠĠĠĠ Ġinternal Source Id ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [" source "] Ġ= ĠProperty Value (" source ", Ġit ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe Ġtype Ġof Ġcurrent Ġlayer Ġas Ġa ĠString . ĊĠĠ Ġ*/ ĊĠ Ġ@ SuppressWarnings (" Hidden Abstract Method ") ĊĠ Ġinternal Ġabstract Ġfun ĠgetType (): ĠString ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe ĠVisibility Ġproperty ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġproperty Ġwrapper Ġvalue Ġaround ĠVIS IBILITY ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġval Ġvisibility : ĠVisibility ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġthe ĠVisibility Ġproperty ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġvisibility Ġvalue Ġof ĠVisibility ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġvisibility ( visibility : ĠVisibility ): ĠLayer ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġminimum Ġzoom Ġlevel Ġfor Ġthe Ġlayer . ĠAt Ġzoom Ġlevels Ġless Ġthan Ġthe Ġmin zoom , Ġthe Ġlayer Ġwill Ġbe Ġhidden . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠRange : ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġminimum : Ġ 0 ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġmaximum : Ġ 2 4 ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġval Ġmin Zoom : ĠDouble ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġthe Ġmin zoom Ġproperty ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmin Zoom Ġvalue Ġof Ġmin zoom ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġmin Zoom ( min Zoom : ĠDouble ): ĠLayer ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġmaximum Ġzoom Ġlevel Ġfor Ġthe Ġlayer . ĠAt Ġzoom Ġlevels Ġequal Ġto Ġor Ġgreater Ġthan Ġthe Ġmax zoom , Ġthe Ġlayer Ġwill Ġbe Ġhidden . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠRange : ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġminimum : Ġ 0 ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġmaximum : Ġ 2 4 ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġval Ġmax Zoom : ĠDouble ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġthe Ġmax zoom Ġproperty ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġmax Zoom Ġvalue Ġof Ġmax zoom ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġmax Zoom ( max Zoom : ĠDouble ): ĠLayer ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠBind Ġthe Ġlayer Ġto Ġthe ĠStyle . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġdelegate ĠThe Ġstyle Ġcontroller ĊĠĠ Ġ*/ ĊĠ Ġfun Ġbind To ( delegate : ĠStyle Interface ) Ġ{ ĊĠĠĠ Ġbind To ( delegate , Ġnull ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠBind Ġthe Ġlayer Ġto Ġthe Ġmap Ġcontroller . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġdelegate ĠThe Ġstyle Ġcontroller ĊĠĠ Ġ* Ġ@ param Ġposition Ġthe Ġposition Ġthat Ġthe Ġcurrent Ġlayer Ġis Ġadded Ġto ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġbind To ( delegate : ĠStyle Interface , Ġposition : ĠLayer Position ?) Ġ{ ĊĠĠĠ Ġthis . delegate Ġ= Ġdelegate ĊĊĠĠĠ Ġval Ġexpected Ġ= Ġdelegate . add Style Layer ( get Cached Layer Properties (), Ġposition ) ĊĠĠĠ Ġexpected . error ?. let Ġ{ ĊĠĠĠĠĠ Ġthrow ĠRuntimeException (" Add Ġlayer Ġfailed : Ġ$ it ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠLayer ĠProperties ĊĊĠ Ġprivate Ġfun Ġget Cached Layer Properties (): ĠValue Ġ{ ĊĠĠĠ Ġval Ġproperties Ġ= ĠHashMap < String , ĠValue >() ĊĠĠĠ Ġlayer Properties . values . forEach Ġ{ ĊĠĠĠĠĠ Ġproperties [ it . propertyName ] Ġ= Ġit . value ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠValue ( properties ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġset Property ( property : ĠProperty Value <* >) Ġ{ ĊĠĠĠ Ġlayer Properties [ property . propertyName ] Ġ= Ġproperty ĊĠĠĠ Ġupdate Property ( property ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Property ( property : ĠProperty Value <* >) Ġ{ ĊĠĠĠ Ġdelegate ?. let Ġ{ Ġstyle Delegate Ġ-> ĊĠĠĠĠĠ Ġval Ġexpected Ġ= Ġstyle Delegate . setStyle Layer Property ( ĊĠĠĠĠĠĠĠ Ġlayer Id , ĊĠĠĠĠĠĠĠ Ġproperty . propertyName , ĊĠĠĠĠĠĠĠ Ġproperty . value ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġexpected . error ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Set Ġlayer Ġproperty Ġ\" ${ property . propertyName }\" Ġfailed :\ n $ it \ n ${ property . value }") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġinline Ġfun Ġ< re ified ĠT > Ġget PropertyValue ( propertyName : ĠString ): ĠT ? Ġ{ ĊĠĠĠ Ġdelegate ?. let Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġit . getStyle Layer Property ( layer Id , ĠpropertyName ). unwrap () ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Get Ġlayer Ġproperty Ġfailed : Ġ${ e . message }") ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġit . getStyle Layer Property ( layer Id , ĠpropertyName ). toString ()) ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Couldn 't Ġget Ġ$ propertyName : Ġlayer Ġis Ġnot Ġadded Ġto Ġstyle Ġyet .") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġa Ġhuman Ġreadable Ġstring Ġthat Ġincludes Ġthe Ġcached Ġproperties Ġof Ġthe Ġlayer . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return ĠString ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"[ ${ layer Properties . values . join ToString Ġ{ Ġproperty Value Ġ-> Ġ"${ property Value . propertyName } Ġ= Ġ${ property Value . value }" Ġ}}} ]" ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠStatic Ġvariables Ġand Ġmethods . ĊĠĠ Ġ*/ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Mb gl - Layer " ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġto Ġget Ġa ĠLayer Ġprovided Ġby Ġthe ĠStyle ĠExtension Ġby Ġlayer Ġid . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer Id Ġthe Ġlayer Ġid Ċ Ġ* Ġ@ return ĠStyle Layer Plugin Ċ Ġ*/ Ċ fun ĠStyle Manager Interface . get Layer ( layer Id : ĠString ): ĠLayer ? Ġ{ ĊĠ Ġval Ġexpected Ġ= Ġthis . getStyle Layer Properties ( layer Id ) ĊĠ Ġexpected . value ?. let Ġ{ Ġvalue Ġ-> ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġval Ġmap Ġ= Ġvalue . contents Ġas ĠHashMap < String , ĠValue > ĊĠĠĠ Ġval Ġsource Ġ= Ġmap [" source "] ?. contents ?. let Ġ{ Ġit Ġas ĠString Ġ} ĊĠĠĠ Ġval Ġtype Ġ= Ġmap [" type "] ?. contents ?. let Ġ{ Ġit Ġas ĠString Ġ} ĊĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠ Ġ" background " Ġ-> ĠBackground Layer ( layer Id ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" circle " Ġ-> ĠCircle Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" fill - extr usion " Ġ-> ĠFill Extr usion Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" fill " Ġ-> ĠFill Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" heatmap " Ġ-> ĠHe atmap Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" h ill shade " Ġ-> ĠH ill shade Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" line " Ġ-> ĠLine Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" raster " Ġ-> ĠR aster Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" symbol " Ġ-> ĠSymbol Layer ( layer Id , Ġsource !! ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" location - indicator " Ġ-> ĠLocation Indicator Layer ( layer Id ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġ" sky " Ġ-> ĠSky Layer ( layer Id ). also Ġ{ Ġit . delegate Ġ= Ġthis Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . e (" Style Layer Plugin ", Ġ" Layer Ġtype : Ġ$ type Ġunknown .") ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġexpected . error ?. let Ġ{ ĊĠĠĠ ĠLogger . e (" Style Layer Plugin ", Ġ" Get Ġlayer Ġ$ layer Id Ġfailed : Ġ$ it ") ĊĠ Ġ} ĊĠ Ġreturn Ġnull Ċ } Ċ Ċ /** Ċ Ġ* ĠT ries Ġto Ġcast Ġthe ĠLayer Ġto ĠT , Ġthrows ĠClass CastException Ġif Ġit 's Ġanother Ġtype . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer Id Ġthe Ġlayer Ġid Ċ Ġ* Ġ@ return ĠT Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠLayer > ĠStyle Manager Interface . get Layer As ( layer Id : ĠString ): ĠT Ġ{ ĊĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠ Ġreturn Ġget Layer ( layer Id ) Ġas ĠT Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġto Ġadd Ġa ĠLayer Ġprovided Ġby Ġthe ĠStyle ĠExtension Ġto Ġthe ĠStyle . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer ĠThe Ġlayer Ġto Ġbe Ġadded Ċ Ġ* Ġ@ param Ġbelow Ġthe Ġlayer Ġid Ġthat Ġthe Ġcurrent Ġlayer Ġis Ġadded Ġbelow Ċ Ġ*/ Ċ fun ĠStyle Interface . add Layer Below ( layer : ĠStyle Contract . Style Layer Extension , Ġbelow : ĠString ?) Ġ{ ĊĠ Ġlayer . bind To ( this , ĠLayer Position ( null , Ġbelow , Ġnull )) Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġto Ġadd Ġa ĠLayer Ġprovided Ġby Ġthe ĠStyle ĠExtension Ġto Ġthe ĠStyle . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer ĠThe Ġlayer Ġto Ġbe Ġadded Ċ Ġ* Ġ@ param Ġabove Ġthe Ġlayer Ġid Ġthat Ġthe Ġcurrent Ġlayer Ġis Ġadded Ġabove Ċ Ġ*/ Ċ fun ĠStyle Interface . add Layer Above ( layer : ĠStyle Contract . Style Layer Extension , Ġabove : ĠString ?) Ġ{ ĊĠ Ġlayer . bind To ( this , ĠLayer Position ( above , Ġnull , Ġnull )) Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġto Ġadd Ġa ĠLayer Ġprovided Ġby Ġthe ĠStyle ĠExtension Ġto Ġthe ĠStyle . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer ĠThe Ġlayer Ġto Ġbe Ġadded Ċ Ġ* Ġ@ param Ġindex Ġthe Ġindex Ġthat Ġthe Ġcurrent Ġlayer Ġis Ġadded Ġon Ċ Ġ*/ Ċ fun ĠStyle Interface . add Layer At ( layer : ĠStyle Contract . Style Layer Extension , Ġindex : ĠInt ?) Ġ{ ĊĠ Ġlayer . bind To ( this , ĠLayer Position ( null , Ġnull , Ġindex )) Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġto Ġadd Ġa ĠLayer Ġprovided Ġby Ġthe ĠStyle ĠExtension Ġto Ġthe ĠStyle . Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayer ĠThe Ġlayer Ġto Ġbe Ġadded Ċ Ġ*/ Ċ fun ĠStyle Interface . add Layer ( layer : ĠStyle Contract . Style Layer Extension ) Ġ{ ĊĠ Ġlayer . bind To ( this ) Ċ }