/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠAlex ander ĠShe ve lev Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense ; Ċ Ġ* Ġ-------------------------------- ------- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . she ve lev . page _ turn ing _ lib . page _ curl ing Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . Color Int Ċ import Ġjava . lang . Unsupported OperationException Ċ Ċ /** Ċ Ġ* ĠStorage Ġclass Ġfor Ġpage Ġtextures Ġand Ġblend Ġcolors Ċ Ġ*/ Ċ class ĠC url Page Ġ{ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġcolor Front Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġvar Ġcolor Back Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġprivate Ġvar Ġtexture Front : ĠSmart Bitmap Ġ= Ġcreate Solid Texture ( color Back ) ĊĠĠĠ Ġprivate Ġvar Ġtexture Back : ĠSmart Bitmap Ġ= Ġcreate Solid Texture ( color Front ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġtextures Ġhave Ġchanged . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtextures Changed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġback Ġs iding Ġtexture Ġexists Ġand Ġit Ġdiffers Ġfrom Ġfront ĊĠĠĠĠ Ġ* Ġfacing Ġone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhas Back Texture : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtexture Front Ġ!= Ġtexture Back ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġfun Ġget Color ( side : ĠPage Side ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( side ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Front Ġ-> Ġcolor Front ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcolor Back ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetter Ġblend Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color ( color : ĠInt , Ġside : ĠPage Side ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( side ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Front Ġ-> Ġcolor Front Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Back Ġ-> Ġcolor Back Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Back Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Front Ġ= Ġcolor Back ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġtextures . ĠCreates ĠBitmap Ġsized Ġto Ġnearest Ġpower Ġof Ġtwo , Ġcopies ĊĠĠĠĠ Ġ* Ġoriginal ĠBitmap Ġinto Ġit Ġand Ġreturns Ġit . ĠRect F Ġgiven Ġas Ġparameter Ġis ĊĠĠĠĠ Ġ* Ġfilled Ġwith Ġactual Ġtexture Ġcoordinates Ġin Ġthis Ġnew Ġup scaled Ġtexture ĊĠĠĠĠ Ġ* ĠBitmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Texture ( texture Rect : ĠRect F , Ġside : ĠPage Side ): ĠSmart Bitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( side ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Front Ġ-> Ġcreate Texture ( texture Front . bitmap , Ġtexture Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Back Ġ-> Ġcreate Texture ( texture Back . bitmap , Ġtexture Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" This Ġvalue Ġis Ġnot Ġsupported : Ġ$ side ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetter Ġfor Ġtextures . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Texture ( source Texture : ĠSmart Bitmap , Ġside : ĠPage Side ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( side ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Front Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Front . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Front Ġ= Ġsource Texture ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Back . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Back Ġ= Ġsource Texture ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Side . Both Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Texture ( source Texture , ĠPage Side . Front ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Texture ( source Texture , ĠPage Side . Back ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtextures Changed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġthis ĠC url Page Ġinto Ġits Ġinitial Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Back Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġcolor Front Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġre cycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe cycles Ġand Ġfre es Ġunderlying ĠBit maps . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġre cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġtexture Front . recycle () ĊĠĠĠĠĠĠĠ Ġtexture Back . recycle () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreates Ġbitmap Ġas Ġsmall Ġas Ġpossible Ġfilled Ġwith Ġsolid Ġcolor ĊĠĠĠĠĠĠĠ Ġtexture Front Ġ= Ġcreate Solid Texture ( color Front ) ĊĠĠĠĠĠĠĠ Ġtexture Back Ġ= Ġcreate Solid Texture ( color Back ) ĊĊĠĠĠĠĠĠĠ Ġtextures Changed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalculates Ġthe Ġnext Ġhighest Ġpower Ġof Ġ 2 ( two ) Ġfor Ġa Ġgiven Ġinteger . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠgetNext Highest PO 2 ( pow : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġn Ġ= Ġpow ĊĠĠĠĠĠĠĠ Ġn Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġor Ġ( n Ġshr Ġ 3 2 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġn Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġtexture Ġfrom Ġgiven Ġbitmap ĊĠĠĠĠ Ġ* ĠGenerates Ġnearest Ġpower Ġof Ġtwo Ġsized ĠBitmap Ġfor Ġgive ĠBitmap . ĠReturns Ġthis ĊĠĠĠĠ Ġ* Ġnew ĠBitmap Ġusing Ġdefault Ġreturn Ġstatement Ġ+ Ġoriginal Ġtexture Ġcoordinates ĊĠĠĠĠ Ġ* Ġare Ġstored Ġinto ĠRect F . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Texture ( bitmap : ĠBitmap , Ġtexture Rect : ĠRect F ): ĠSmart Bitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġbitmap . width ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġbitmap . height ĊĊĠĠĠĠĠĠĠ Ġ// ĠBitmap Ġsize Ġexpanded Ġto Ġnext Ġpower Ġof Ġtwo . ĊĠĠĠĠĠĠĠ Ġval Ġnew W Ġ= ĠgetNext Highest PO 2 ( w ) ĊĠĠĠĠĠĠĠ Ġval Ġnew H Ġ= ĠgetNext Highest PO 2 ( h ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Tex Ġ= ĠBitmap . create Bitmap ( new W , Ġnew H , ĠBitmap . Config . RGB _ 5 6 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCanvas ( bitmap Tex ) ĊĠĠĠĠĠĠĠ Ġc . draw Bitmap ( bitmap , Ġ 0 f , Ġ 0 f , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCalculate Ġfinal Ġtexture Ġcoordinates . ĊĠĠĠĠĠĠĠ Ġval Ġtex X Ġ= Ġw . toFloat () Ġ/ Ġnew W ĊĠĠĠĠĠĠĠ Ġval Ġtex Y Ġ= Ġh . toFloat () Ġ/ Ġnew H ĊĠĠĠĠĠĠĠ Ġtexture Rect [ 0 f , Ġ 0 f , Ġtex X ] Ġ= Ġtex Y ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap Tex . to Smart ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġsmall Ġtexture Ġfilled Ġby Ġsolid Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Solid Texture (@ Color Int Ġcolor : ĠInt ): ĠSmart Bitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbmp Ġ= ĠBitmap . create Bitmap ( 1 , Ġ 1 , ĠBitmap . Config . RGB _ 5 6 5 ) ĊĠĠĠĠĠĠĠ Ġbmp . erase Color ( color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbmp . to Smart ( true ) ĊĠĠĠ Ġ} Ċ }