package Ġcom . noc lip . mar cin m alys z . s ag ac ross Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . PixelFormat Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Surface Holder Ċ Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL 1 0 Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Config Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Context Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Display Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 Ċ Ċ interface ĠSC GL View Delegate Ġ{ ĊĊĠĠĠ Ġfun Ġon View Draw () Ċ } Ċ Ċ class ĠSC GL View Ġ: ĠGL Surface View Ġ{ ĊĊĠĠĠ Ġvar Ġwrapper : ĠSC Game Wrapper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfield ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġfield Ġ= Ġvalue ; Ġrenderer ?. wrapper Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġdelegate : ĠSC GL View Delegate ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfield ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġfield Ġ= Ġvalue ; Ġrenderer ?. delegate Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġrenderer : ĠRenderer ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit ( false , Ġ 2 4 , Ġ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit ( false , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġtrans luc ent : ĠBoolean , Ġdepth : ĠInt , Ġstencil : ĠInt ) Ġ: Ġsuper ( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit ( trans luc ent , Ġdepth , Ġstencil ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( trans luc ent : ĠBoolean , Ġdepth : ĠInt , Ġstencil : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( trans luc ent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . holder . set Format ( PixelFormat . TRANSL UC ENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset EGL Context Factory ( Context Factory ()) ĊĊĠĠĠĠĠĠĠ Ġset EGL Config Chooser ( ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trans luc ent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Chooser ( 8 , Ġ 8 , Ġ 8 , Ġ 8 , Ġdepth , Ġstencil ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Chooser ( 5 , Ġ 6 , Ġ 5 , Ġ 0 , Ġdepth , Ġstencil ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpreserve EGL Context On Pause Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Renderer () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrenderer Ġ= ĠRenderer () ĊĊĠĠĠĠĠĠĠ Ġset Renderer ( renderer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Destroyed ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . surface Destroyed ( holder ) ĊĊĠĠĠĠĠĠĠ Ġrenderer ?. loaded Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠContext Factory Ġ: ĠE GL Context Factory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Context ( e gl : ĠE GL 1 0 , Ġdisplay : ĠE GL Display , Ġe gl Config : ĠE GL Config ): ĠE GL Context Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattrib _ list Ġ= Ġint ArrayOf ( EGL _ CONTEXT _ CLIENT _ VERSION , Ġ 2 , ĠE GL 1 0 . EGL _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġe gl . e gl Create Context ( display , Ġe gl Config , ĠE GL 1 0 . EGL _ NO _ CONTEXT , Ġattrib _ list ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdestroy Context ( e gl : ĠE GL 1 0 , Ġdisplay : ĠE GL Display , Ġcontext : ĠE GL Context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe gl . e gl Destroy Context ( display , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠE GL _ CONTEXT _ CLIENT _ VERSION Ġ= Ġ 0 x 3 0 9 8 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠConfig Chooser Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Red Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Green Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Blue Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Alpha Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Depth Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm Stencil Size : ĠInt ĊĠĠĠ Ġ) Ġ: ĠE GL Config Chooser Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Value Ġ= ĠInt Array ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchoose Config ( e gl : ĠE GL 1 0 , Ġdisplay : ĠE GL Display ): ĠE GL Config ? Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum _ config Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe gl . e gl Choose Config ( display , Ġs _ config Attribs 2 , Ġnull , Ġ 0 , Ġnum _ config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Configs Ġ= Ġnum _ config [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Configs Ġ<= Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" No Ġconfigs Ġmatch Ġconfig Spec ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfigs Ġ= ĠarrayOf Null s < EGL Config >( num Configs ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġe gl . e gl Choose Config ( display , Ġs _ config Attribs 2 , Ġconfigs , Ġnum Configs , Ġnum _ config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchoose Config ( e gl , Ġdisplay , Ġconfigs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġchoose Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe gl : ĠE GL 1 0 , Ġdisplay : ĠE GL Display , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs : ĠArray < EGL Config ?> ĊĠĠĠĠĠĠĠ Ġ): ĠE GL Config ? Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( config Ġin Ġconfigs ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf Ġ= Ġconfig !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ DEPTH _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ STENCIL _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġat Ġleast Ġm Depth Size Ġand Ġm Stencil Size Ġbits ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d Ġ< Ġm Depth Size Ġ|| Ġs Ġ< Ġm Stencil Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġwant Ġan Ġ* exact * Ġmatch Ġfor Ġred / green / blue / alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ RED _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ GREEN _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ BLUE _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe gl , Ġdisplay , Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ ALPHA _ SIZE , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġ== Ġm Red Size Ġ&& Ġg Ġ== Ġm Green Size Ġ&& Ġb Ġ== Ġm Blue Size Ġ&& Ġa Ġ== Ġm Alpha Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconfig ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfind Config Attrib ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe gl : ĠE GL 1 0 , Ġdisplay : ĠE GL Display , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig : ĠE GL Config , Ġattribute : ĠInt , ĠdefaultValue : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( e gl . e glGet Config Attrib ( display , Ġconfig , Ġattribute , Ġm Value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Value [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠE GL _ OPEN GL _ ES 2 _ BIT Ġ= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġs _ config Attribs 2 Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ RED _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ GREEN _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ BLUE _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ RENDER ABLE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL _ OPEN GL _ ES 2 _ BIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 0 . EGL _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠRenderer Ġ: ĠGL Surface View . Renderer Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġloaded Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġwrapper : ĠSC Game Wrapper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġdelegate : ĠSC GL View Delegate ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl : ĠGL 1 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! loaded ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate ?. on View Draw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper ?. render Game () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl : ĠGL 1 0 , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Dir Ġ= ĠEnvironment . get External Storage Directory (). toString () Ġ+ Ġ"/ S ag aC ross /" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper ?. initialize Engine ( width , Ġheight , Ġroot Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 , Ġconfig : ĠE GL Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }