/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . gis . tile protocol . map Config Ċ Ċ interface ĠTile Predicate Ġ{ ĊĠĠĠ Ġfun Ġget FieldValue ( key : ĠString ): ĠInt Ċ } Ċ Ċ class ĠRule ( ĊĠĠĠ Ġval Ġmin Zoom : ĠInt , ĊĠĠĠ Ġval Ġmax Zoom : ĠInt , ĊĠĠĠ Ġval Ġfilters : ĠList <( Tile Predicate ) Ġ-> ĠBoolean >, ĊĠĠĠ Ġval Ġstyle : ĠStyle Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġpredicate ( feature : ĠTile Predicate , Ġzoom : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( max Zoom Ġ< Ġzoom Ġ|| Ġmin Zoom Ġ> Ġzoom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġfilters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! f ( feature )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRule Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmin Zoom : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmax Zoom : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfilters : ĠArrayList <( Tile Predicate ) Ġ-> ĠBoolean > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġstyle : ĠStyle ĊĊĠĠĠĠĠĠĠ Ġfun Ġmin Zoom ( min Zoom : ĠInt ) Ġ{ Ġthis . min Zoom Ġ= Ġmin Zoom Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġmax Zoom ( max Zoom : ĠInt ) Ġ{ Ġthis . max Zoom Ġ= Ġmax Zoom Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġstyle ( style : ĠStyle ) Ġ{ Ġthis . style Ġ= Ġstyle Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Filter Function ( filter : Ġ( Tile Predicate ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilters . add ( filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= ĠRule ( min Zoom !! , Ġmax Zoom !! , Ġfilters , Ġstyle ) ĊĠĠĠ Ġ} Ċ }