// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . util . ui Ċ Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Graphics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . Paint Ċ import Ġjavax . swing . border . Border Ċ import Ġkotlin . math . ceil Ċ Ċ open Ġclass ĠPaint Icon ( private Ġval Ġwidth : ĠInt , Ġprivate Ġval Ġheight : ĠInt , Ġprivate Ġval Ġpainter : ĠRegion Painter < Component ?> ) ĊĠ Ġ: ĠJ BC aching Scal able Icon < Paint Icon >() Ġ{ ĊĊĠ Ġconstructor ( size : ĠInt , Ġpainter : ĠRegion Painter < Component ?> ) Ġ: Ġthis ( size , Ġsize , Ġpainter ) ĊĠ Ġconstructor ( size : ĠInt , Ġpaint : ĠPaint ) Ġ: Ġthis ( size , Ġsize , Ġpaint ) ĊĠ Ġconstructor ( width : ĠInt , Ġheight : ĠInt , Ġpaint : ĠPaint ) Ġ: Ġthis ( width , Ġheight , ĠP ainter ( paint )) ĊĠ Ġconstructor ( icon : ĠPaint Icon ) Ġ: Ġthis ( icon . width , Ġicon . height , Ġicon . p ainter ) Ġ{ ĊĠĠĠ Ġis Icon Pre Scaled Ġ= Ġicon . is Icon Pre Scaled ĊĠĠĠ Ġborder Ġ= Ġicon . border ĊĠ Ġ} ĊĊĠ Ġvar Ġborder : ĠBorder ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġcopy () Ġ= ĠPaint Icon ( this ) ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġother Ġ=== Ġthis ĊĠ Ġoverride Ġfun ĠhashCode () Ġ= ĠSystem . identity HashCode ( this ) ĊĊĠ Ġoverride Ġfun Ġget Icon Width () Ġ= Ġceil ( scale Val ( width . toDouble ())). toInt () ĊĠ Ġoverride Ġfun Ġget Icon Height () Ġ= Ġceil ( scale Val ( height . toDouble ())). toInt () ĊĠ Ġoverride Ġfun Ġpaint Icon ( component : ĠComponent , Ġg : ĠGraphics , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġ( g Ġas ? ĠGraphics 2 D )?. let Ġ{ Ġpainter . paint ( it , Ġx , Ġy , Ġicon Width , Ġicon Height , Ġcomponent ) Ġ} ĊĠĠĠ Ġborder ?. paint Border ( component , Ġg , Ġx , Ġy , Ġicon Width , Ġicon Height ) ĊĠ Ġ} Ċ } ĊĊ Ċ private Ġclass ĠP ainter ( private Ġval Ġpaint : ĠPaint ) Ġ: ĠRegion Painter < Component ?> Ġ{ ĊĠ Ġoverride Ġfun Ġpaint ( g : ĠGraphics 2 D , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt , Ġcomponent : ĠComponent ?) Ġ{ ĊĠĠĠ Ġg . paint Ġ= Ġpaint ĊĠĠĠ Ġg . fillRect ( x , Ġy , Ġwidth , Ġheight ) ĊĠ Ġ} Ċ } Ċ