package Ġg uru . n idi . simple 3 d . vector ize Ċ Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjavax . image io . Image IO Ċ Ċ actual Ġclass ĠImage ( val Ġimg : ĠBufferedImage ) Ġ: ĠAuto Closeable Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlazy Graph Ġ= Ġlazy Ġ{ Ġimg . create Graphics () Ġ} ĊĠĠĠ Ġprivate Ġval Ġgraph Ġby Ġlazy Graph ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lazy Graph . isInitialized ()) Ġgraph . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġval Ġwidth Ġget () Ġ= Ġimg . width ĊĠĠĠ Ġactual Ġval Ġheight Ġget () Ġ= Ġimg . height ĊĠĠĠ Ġactual Ġoperator Ġfun Ġget ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġimg . get RGB ( x , Ġy ) ĊĠĠĠ Ġactual Ġoperator Ġfun Ġset ( x : ĠInt , Ġy : ĠInt , Ġrgb : ĠInt ) Ġ= Ġimg . set RGB ( x , Ġy , Ġrgb ) ĊĠĠĠ Ġactual Ġfun Ġline ( x 0 : ĠInt , Ġy 0 : ĠInt , Ġx 1 : ĠInt , Ġy 1 : ĠInt , Ġrgb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgraph . color Ġ= ĠColor ( rgb , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġgraph . draw Line ( x 0 , Ġy 0 , Ġx 1 , Ġy 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Classpath ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( Image IO . read ( Thread . currentThread (). context ClassLoader . getResource AsStream ( name ))) ĊĠĠĠ Ġ} Ċ }