package Ġio . un th rott led . dok i . util Ċ Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . util . ui . Animator Ċ import Ġcom . intellij . util . ui . Graphics Util Ċ import Ġcom . intellij . util . ui . Image Util Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġjava . awt . Alpha Composite Ċ import Ġjava . awt . Graphics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . Rectangle Ċ import Ġjava . awt . Window Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . J Layer ed Pane Ċ import Ġjavax . swing . Root Pane Container Ċ Ċ class ĠL AF Animator Ġ{ ĊĠ Ġprivate Ġvar Ġmy Alpha Ġ= Ġ 1 f ĊĠ Ġprivate Ġval Ġmy Map : ĠMutable Map < J Layer ed Pane , ĠJ Component > Ġ= ĠLinkedHashMap () ĊĠ Ġprivate Ġval Ġmy Animator : ĠAn imator ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġshow Snapshot (): ĠL AF Animator Ġ= ĠL AF Animator () ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ ĠWindow . get Windows () ĊĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġis ĠRoot Pane Container Ġ} ĊĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Showing Ġ} ĊĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġas ĠRoot Pane Container Ġ} ĊĠĠĠĠĠ Ġ. forEach Ġ{ Ġroot Pane Container Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġroot Pane Container Ġas ĠWindow ĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġwindow . bounds ĊĠĠĠĠĠĠĠ Ġval Ġlayer ed Pane Ġ= Ġroot Pane Container . layer ed Pane ĊĠĠĠĠĠĠĠ Ġval Ġimage : ĠBufferedImage Ġ= ĠImage Util . create Image ( ĊĠĠĠĠĠĠĠĠĠ Ġwindow . graphics Configuration , ĊĠĠĠĠĠĠĠĠĠ Ġbounds . width , ĊĠĠĠĠĠĠĠĠĠ Ġbounds . height , ĊĠĠĠĠĠĠĠĠĠ ĠBufferedImage . TYPE _ INT _ ARGB ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Graphics Ġ= Ġimage . graphics ĊĠĠĠĠĠĠĠ ĠGraphics Util . setup Ant ialias ing ( image Graphics ) ĊĠĠĠĠĠĠĠ Ġroot Pane Container . root Pane . paint ( image Graphics ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Layer Ġ= Ġobject Ġ: ĠJ Component () Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate UI () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpaint ( g : ĠGraphics ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew G Ġ= Ġg . create () Ġas ĠGraphics 2 D ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew G . composite Ġ= ĠAlpha Composite . getInstance ( Alpha Composite . SRC _ OVER , Ġmy Alpha ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . drawImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew G , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Bounds (): ĠRectangle Ġ= Ġlayer ed Pane . bounds ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġimage Layer . size Ġ= Ġlayer ed Pane . size ĊĠĠĠĠĠĠĠ Ġlayer ed Pane . add ( image Layer , ĠJ Layer ed Pane . DR AG _ LAYER ) ĊĠĠĠĠĠĠĠ Ġmy Map [ layer ed Pane ] Ġ= Ġimage Layer ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġmy Animator Ġ= Ġobject Ġ: ĠAn imator ( ĊĠĠĠĠĠ Ġ" Change L AF ", ĊĠĠĠĠĠĠ 6 0 , ĊĠĠĠĠĠĠ 8 0 0 , ĊĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġpaint Now ( frame : ĠInt , Ġtotal Frames : ĠInt , Ġcycle : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Alpha Ġ= ĊĠĠĠĠĠĠĠĠĠĠ 1 Ġ- Ġ( 1 Ġ- ĠMath . cos ( Math . PI Ġ* Ġframe Ġ/ Ġtotal Frames . toFloat ())). toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġdo Paint () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġresume () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Paint () ĊĠĠĠĠĠĠĠ Ġsuper . resume () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsuper . dispose () ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( layer ed Pane , Ġvalue ) Ġin Ġmy Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer ed Pane . remove ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer ed Pane . re validate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer ed Pane . rep aint () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy Map . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġpaint Cycle End () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠDis poser . dispose ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . paint Cycle End () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġhide Snapshot With Animation () Ġ{ ĊĠĠĠ Ġmy Animator . resume () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdo Paint () Ġ{ ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmy Map ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( key . is Showing ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue . re validate () ĊĠĠĠĠĠĠĠ Ġvalue . rep aint () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġperform With Animation ( animate : ĠBoolean , Ġaction To Perform : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠ Ġval Ġanim ator Ġ= Ġif Ġ( animate ) ĠL AF Animator . show Snapshot () Ġelse Ġnull ĊĠ Ġaction To Perform () ĊĠ Ġanim ator ?. hide Snapshot With Animation () Ċ } Ċ