package Ġcom . pol ito . s ism ic . Inter actors Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġcom . github . mike phil . chart ing . components . Y Axis Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . github . mike phil . chart ing . data . Line Data Ċ import Ġcom . github . mike phil . chart ing . data . Line DataSet Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . IL ine DataSet Ċ import Ġcom . github . mike phil . chart ing . utils . Entry X Comparator Ċ import Ġcom . pol ito . s ism ic . Domain . P ill ar Domain Point Ċ import Ġcom . pol ito . s ism ic . Domain . P ill ar Layout State Ċ import Ġcom . pol ito . s ism ic . Domain . Plant Point Ċ import Ġcom . pol ito . s ism ic . Domain . Report State Ċ import Ġcom . pol ito . s ism ic . Inter actors . Helpers . Plant Edge Ċ import Ġcom . pol ito . s ism ic . Inter actors . Helpers . Plant Figure Ċ import Ġcom . pol ito . s ism ic . Inter actors . Helpers . S ism ic Building Calculator Helper Ċ import Ġcom . pol ito . s ism ic . R Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġit 0 0 0 3 9 7 1 Ġon Ġ 1 0 / 1 0 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠP ill ar Layout Interactor ( val ĠmContext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm S ism ic Building Calculator Helper Ġ: ĠS ism ic Building Calculator Helper Ġ= ĠS ism ic Building Calculator Helper ( mContext ) ĊĊĠĠĠ Ġfun Ġconvert List For Graph ( pill ar Layout State Ġ: ĠP ill ar Layout State , Ġfigure Ġ: ĠPl ant Figure ?): ĠLine Data ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdatasets Ġ= Ġmutable ListOf < IL ine DataSet >() ĊĠĠĠĠĠĠĠ Ġfigure ?. let Ġ{ Ġf Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġp ill ars Ġfrom Ġthe Ġp ill ar Ġlayout Ġpage Ġand Ġfilter Ġonly Ġthe Ġone Ġcontained Ġin Ġthe Ġfigure , Ġthen Ġmap Ġto Ġobject Ġto Ġbe Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Algorithm Ġfrom Ġhttps :// ro set tac ode . org / wiki / Ray - cast ing _ algorithm # Kotlin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatasets . addAll ( getP ill ar Layout Points ( pill ar Layout State ). map Ġ{ Ġcreate P ill ar Layout Dataset ( it , Ġf . contains ( it )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġinternal Plant Points Ġ= Ġget P ill ar Layout Points ( pill ar Layout State ). filter Ġ{ Ġfigure . contains ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġl ds P ill ar Points Ġ= Ġinternal Plant Points . map Ġ{ Ġcreate P ill ar Layout Dataset ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Plant Ġfigure Ġper imeter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġper imeter L ds Ġ= Ġf . edges . map Ġ{ Ġcreate Per imeter Dataset ( it , ĠmContext ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatasets . addAll ( per imeter L ds ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLine Data ( datasets . filter Ġ{ Ġit . entry Count Ġ> Ġ 0 Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget P ill ar Layout Points ( pill ar Layout State : ĠP ill ar Layout State ): ĠList < Plant Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp ill ar List Ġ= Ġmutable ListOf < Plant Point >() ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġp ill ar Layout State . pill ar X ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġp ill ar Layout State . pill ar Y ). map To ( pill ar List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPl ant Point (( i * pill ar Layout State . dist X ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġ* pill ar Layout State . dist Y )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġp ill ar List . distinct () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// to Ġvisualize Ġall Ġp ill ars , Ġin Ġgreen Ġthe Ġgood Ġones ĊĠĠĠ Ġprivate Ġfun Ġcreate P ill ar Layout Dataset ( pill ar Point : ĠPl ant Point , Ġinternal : ĠBoolean ): ĠLine DataSet Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Point Ġ= ĠEntry ( pill ar Point . x . toFloat (), Ġp ill ar Point . y . toFloat ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( internal ) Ġreturn ĠLine DataSet ( listOf ( entry Point ), Ġ" MS "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Radius Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Colors Ġ= ĠlistOf ( Context Compat . getColor ( mContext , ĠR . color . pill ar _ on )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Draw Circ les ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLine DataSet ( listOf ( entry Point ), Ġ" MS "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Radius Ġ= Ġ 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Colors Ġ= ĠlistOf ( Context Compat . getColor ( mContext , ĠR . color . pill ar _ off )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Draw Circ les ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// The Ġlegend Ġis Ġcustom Ġin Ġthe Ġchar , Ġbut Ġthis Ġis Ġuse Ġto Ġnot Ġreplicate Ġcode ĊĠĠĠ Ġprivate Ġfun Ġcreate Per imeter Dataset ( edge : ĠPl ant Edge , Ġcontext : ĠContext ): ĠLine DataSet Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġentry List Ġ= ĠlistOf < Entry >( Entry ( edge . s . x . toFloat (), Ġedge . s . y . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntry ( edge . e . x . toFloat (), Ġedge . e . y . toFloat ())) ĊĊĠĠĠĠĠĠĠ Ġ// MUST ĠBE ĠSORT ED ĠON ĠX , Ġor Ġcrash !! ĊĠĠĠĠĠĠĠ ĠCollections . sort ( entry List , ĠEntry X Comparator ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠLine DataSet ( entry List , Ġcontext . getString ( R . string . ril ie vo _ ester no )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Draw Circ les ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Radius Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Colors Ġ= ĠlistOf ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlineWidth Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Limit State Points In Graph ( report State : ĠReport State ): ĠList < P ill ar Domain Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm S ism ic Building Calculator Helper . get Limit State Points In Domain For P ill ar ( report State ) ĊĠĠĠ Ġ} ĊĊ Ċ }