package Ġcom . loan xu . photo editor . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . opengl . GLES 2 0 .* Ċ import Ġandroid . opengl . GL Utils . tex Image 2 D Ċ Ċ object ĠTexture Loader Ġ{ ĊĊĠĠĠ Ġfun Ġload Cube Map ( context : ĠContext , Ġcube Resources : ĠInt Array , Ġcube Resources Blend : ĠInt Array ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtexture Object Ids Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġgl Gen Textures ( 2 , Ġtexture Object Ids , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( texture Object Ids [ 0 ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠ Ġoptions . in Scaled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcube Bit maps Ġ= ĠarrayOf Null s < Bitmap >( 6 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcube Bit maps [ i ] Ġ= ĠBitmap Factory . decode Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Resources [ i ], Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cube Bit maps [ i ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl Delete Textures ( 1 , Ġtexture Object Ids , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ CUBE _ MAP , Ġtexture Object Ids [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ CUBE _ MAP , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ CUBE _ MAP , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) ĊĊĠĠĠĠĠĠĠ Ġ// set Ġimage Ġfor Ġcube Ġright Ġ-> Ġleft , Ġdown Ġ-> Ġup , Ġfront Ġ-> Ġback ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ X , Ġ 0 , Ġcube Bit maps [ 0 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ X , Ġ 0 , Ġcube Bit maps [ 1 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ Y , Ġ 0 , Ġcube Bit maps [ 2 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ Y , Ġ 0 , Ġcube Bit maps [ 3 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ Z , Ġ 0 , Ġcube Bit maps [ 4 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ Z , Ġ 0 , Ġcube Bit maps [ 5 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġ// Ġload Ġblend ĊĠĠĠĠĠĠĠ Ġval Ġcube Bit maps Blend Ġ= ĠarrayOf Null s < Bitmap >( 6 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcube Bit maps Blend [ i ] Ġ= ĠBitmap Factory . decode Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Resources Blend [ i ], Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cube Bit maps [ i ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl Delete Textures ( 1 , Ġtexture Object Ids , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ CUBE _ MAP , Ġtexture Object Ids [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ CUBE _ MAP , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ CUBE _ MAP , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) ĊĊĠĠĠĠĠĠĠ Ġ// set Ġimage Ġfor Ġcube Ġright Ġ-> Ġleft , Ġdown Ġ-> Ġup , Ġfront Ġ-> Ġback ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ X , Ġ 0 , Ġcube Bit maps Blend [ 0 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ X , Ġ 0 , Ġcube Bit maps Blend [ 1 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ Y , Ġ 0 , Ġcube Bit maps Blend [ 2 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ Y , Ġ 0 , Ġcube Bit maps Blend [ 3 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ NEGATIVE _ Z , Ġ 0 , Ġcube Bit maps Blend [ 4 ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ Z , Ġ 0 , Ġcube Bit maps Blend [ 5 ], Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( bitmap Ġin Ġcube Bit maps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ?. recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( bitmap Ġin Ġcube Bit maps Blend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ?. recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Texture ( context : ĠContext , Ġresource Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtexture Object Ids Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠ Ġgl Gen Textures ( 1 , Ġtexture Object Ids , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( texture Object Ids [ 0 ] Ġ== Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠ Ġoptions . in Scaled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( context . resources , Ġresource Id , Ġoptions ) ĊĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ 0 ]) ĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR _ MIP MAP _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ 2 D , Ġ 0 , Ġbitmap , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġbitmap . recycle () ĊĠĠĠĠĠĠĠ Ġgl Generate Mip map ( GL _ TEXTURE _ 2 D ) ĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Textures ( context : ĠContext , Ġresource Id : ĠInt Array ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtexture Object Ids Ġ= ĠInt Array ( resourceId . size ) ĊĠĠĠĠĠĠĠ Ġgl Gen Textures ( resourceId . size , Ġtexture Object Ids , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( texture Object Ids [ 0 ] Ġ== Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠ Ġoptions . in Scaled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresource Id . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( context . resources , Ġresource Id [ i ], Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR _ MIP MAP _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtex Image 2 D ( GL _ TEXTURE _ 2 D , Ġ 0 , Ġbitmap , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Generate Mip map ( GL _ TEXTURE _ 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtexture Object Ids ĊĠĠĠ Ġ} Ċ }