/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 ĠN ich olas ĠB ily k Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ac orn ui . component Ċ Ċ import Ġcom . ac orn ui . async . catch Ċ import Ġcom . ac orn ui . async . then Ċ import Ġcom . ac orn ui . core . asset . Asset Type Ċ import Ġcom . ac orn ui . core . asset . Cached Group Ċ import Ġcom . ac orn ui . core . asset . cached Group Ċ import Ġcom . ac orn ui . core . asset . load And Cache Ċ import Ġcom . ac orn ui . core . di . Owned Ċ import Ġcom . ac orn ui . core . graphic . Blend Mode Ċ import Ġcom . ac orn ui . core . graphic . Texture Ċ import Ġcom . ac orn ui . logging . Log Ċ import Ġcom . ac orn ui . math . Int Rectangle Ro Ċ import Ġcom . ac orn ui . math . Rectangle Ro Ċ Ċ /** Ċ Ġ* ĠA ĠUi Component Ġrepresenting Ġa Ġsingle ĠTexture . Ċ Ġ* Ġ@ author Ġnb ily k Ċ Ġ*/ Ċ open Ġclass ĠTexture Component ( owner : ĠOwn ed ) Ġ: ĠDrawable Component ( owner ) Ġ{ ĊĊ ĉ override Ġval Ġdrawable : ĠSprite Ġ= ĠSprite () ĊĊ ĉ /** Ċĉ Ġ* ĠIf Ġtrue , Ġthe Ġnormal Ġand Ġindices Ġwill Ġbe Ġreversed . Ċĉ Ġ*/ Ċ ĉ var Ġuse As Back Face : ĠBoolean Ċĉ ĉ get () Ġ= Ġdrawable . use As Back Face Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ drawable . use As Back Face Ġ= Ġvalue Ċĉ ĉ } ĊĊ ĉ val Ġnatural Width : ĠFloat Ċĉ ĉ get () Ġ= Ġdrawable . natural Width ĊĊ ĉ val Ġnatural Height : ĠFloat Ċĉ ĉ get () Ġ= Ġdrawable . natural Height ĊĊ ĉ var Ġblend Mode : ĠBlend Mode Ċĉ ĉ get () Ġ= Ġdrawable . blend Mode Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ drawable . blend Mode Ġ= Ġvalue Ċĉĉ ĉ window . request Render () Ċĉ ĉ } ĊĊ ĉ constructor Ġ( owner : ĠOwn ed , Ġpath : ĠString ) Ġ: Ġthis ( owner ) Ġ{ Ċĉ ĉ this . path Ġ= Ġpath Ċ ĉ } ĊĊ ĉ constructor Ġ( owner : ĠOwn ed , Ġtexture : ĠTexture ) Ġ: Ġthis ( owner ) Ġ{ Ċĉ ĉ this . texture Ġ= Ġtexture Ċ ĉ } ĊĊ ĉ private Ġvar Ġcached : ĠCached Group ? Ġ= Ġnull ĊĊ ĉ private Ġvar Ġ_ path : ĠString ? Ġ= Ġnull ĊĊ ĉ /** Ċĉ Ġ* ĠLoads Ġa Ġtexture Ġfrom Ġthe Ġgiven Ġpath . Ċĉ Ġ*/ Ċ ĉ var Ġpath : ĠString ? Ċĉ ĉ get () Ġ= Ġ_ path Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ if Ġ(_ path Ġ== Ġvalue ) Ġreturn Ċĉĉ ĉ cached ?. dispose () Ċĉĉ ĉ cached Ġ= Ġcached Group () Ċĉĉ ĉ if Ġ( value Ġ!= Ġnull ) Ġ{ Ċĉĉĉ ĉ load And Cache ( value , ĠAsset Type . TEXTURE , Ġcached !! ). then Ġ{ Ċĉĉĉĉ ĉ _ set Texture ( it ) Ċĉĉĉ ĉ } Ġcatch ( error Handler ) Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ _ set Texture ( null ) Ċĉĉ ĉ } Ċĉ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠSets Ġthe Ġtexture Ġdirectly , Ġas Ġopposed Ġto Ġloading Ġa ĠTexture Ġfrom Ġthe Ġasset Ġmanager . Ċĉ Ġ*/ Ċ ĉ var Ġtexture : ĠTexture ? Ċĉ ĉ get () Ġ= Ġdrawable . texture Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ path Ġ= Ġnull Ċĉĉ ĉ _ set Texture ( value ) Ċĉ ĉ } ĊĊ ĉ protected Ġopen Ġfun Ġ_ set Texture ( value : ĠTexture ?) Ġ{ Ċĉ ĉ if Ġ( drawable . texture Ġ== Ġvalue ) Ġreturn Ċĉ ĉ val Ġold Texture Ġ= Ġdrawable . texture Ċĉ ĉ if Ġ( isActive ) Ċĉĉ ĉ old Texture ?. ref Dec () Ċĉ ĉ drawable . texture Ġ= Ġvalue Ċĉ ĉ if Ġ( isActive ) Ċĉĉ ĉ drawable . texture ?. ref Inc () Ċĉ ĉ invalidate Layout () Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠIf Ġtrue , Ġthe Ġtexture 's Ġregion Ġis Ġrotated . Ċĉ Ġ*/ Ċ ĉ val Ġis Rot ated : ĠBoolean Ċĉ ĉ get () Ġ= Ġdrawable . is Rot ated ĊĊ ĉ override Ġfun Ġon Activated () Ġ{ Ċĉ ĉ super . on Activated () Ċĉ ĉ drawable . texture ?. ref Inc () Ċ ĉ } ĊĊ ĉ override Ġfun Ġon De activated () Ġ{ Ċĉ ĉ super . on De activated () Ċĉ ĉ drawable . texture ?. ref Dec () Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠSets Ġthe ĠUV Ġcoordinates Ġof Ġthe Ġimage Ġto Ġdisplay . Ċĉ Ġ*/ Ċ ĉ fun Ġset Uv ( u : ĠFloat , Ġv : ĠFloat , Ġu 2 : ĠFloat , Ġv 2 : ĠFloat , Ġis Rot ated : ĠBoolean Ġ= Ġfalse ) Ġ{ Ċĉ ĉ drawable . set Uv ( u , Ġv , Ġu 2 , Ġv 2 , Ġis Rot ated ) Ċĉ ĉ invalidate ( Validation Flags . LAYOUT ) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠSets Ġthe Ġregion Ġof Ġthe Ġtexture Ġto Ġdisplay . Ċĉ Ġ*/ Ċ ĉ fun Ġset Region ( x : ĠFloat , Ġy : ĠFloat , Ġwidth : ĠFloat , Ġheight : ĠFloat , Ġis Rot ated : ĠBoolean Ġ= Ġfalse ) Ġ{ Ċĉ ĉ drawable . set Region ( x , Ġy , Ġwidth , Ġheight , Ġis Rot ated ) Ċĉ ĉ invalidate ( Validation Flags . LAYOUT ) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠSets Ġthe Ġregion Ġof Ġthe Ġtexture Ġto Ġdisplay . Ċĉ Ġ*/ Ċ ĉ fun Ġset Region ( region : ĠRectangle Ro , Ġis Rot ated : ĠBoolean Ġ= Ġfalse ) Ġ{ Ċĉ ĉ set Region ( region . x , Ġregion . y , Ġregion . width , Ġregion . height , Ġis Rot ated ) Ċ ĉ } ĊĊ ĉ fun Ġset Region ( region : ĠInt Rectangle Ro , Ġis Rot ated : ĠBoolean Ġ= Ġfalse ) Ġ{ Ċĉ ĉ set Region ( region . x . toFloat (), Ġregion . y . toFloat (), Ġregion . width . toFloat (), Ġregion . height . toFloat (), Ġis Rot ated ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġdispose () Ġ{ Ċĉ ĉ path Ġ= Ġnull Ċĉ ĉ super . dispose () Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ġ{ ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠThe Ġerror Ġhandler Ġwhen Ġloading Ġtextures Ġvia Ġ[ Texture Component . path ] Ġand Ġthe Ġtexture Ġis Ġnot Ġfound . Ċĉĉ Ġ*/ Ċĉ ĉ var ĠerrorHandler : Ġ( e : ĠThrowable ) Ġ-> ĠUnit Ġ= Ġ{ ĠLog . error ( it ) Ġ} Ċ ĉ } Ċ } Ċ Ċ fun ĠOwn ed . texture C ( init : ĠComponent Init < Texture Component > Ġ= Ġ{} ): ĠTexture Component Ġ{ Ċ ĉ val Ġtexture Component Ġ= ĠTexture Component ( this ) Ċ ĉ texture Component . init () Ċ ĉ return Ġtexture Component Ċ } Ċ Ċ fun ĠOwn ed . texture C ( path : ĠString , Ġinit : ĠComponent Init < Texture Component > Ġ= Ġ{} ): ĠTexture Component Ġ{ Ċ ĉ val Ġtexture Component Ġ= ĠTexture Component ( this ) Ċ ĉ texture Component . path Ġ= Ġpath Ċ ĉ texture Component . init () Ċ ĉ return Ġtexture Component Ċ } Ċ Ċ fun ĠOwn ed . texture C ( texture : ĠTexture , Ġinit : ĠComponent Init < Texture Component > Ġ= Ġ{} ): ĠTexture Component Ġ{ Ċ ĉ val Ġtexture Component Ġ= ĠTexture Component ( this ) Ċ ĉ texture Component . texture Ġ= Ġtexture Ċ ĉ texture Component . init () Ċ ĉ return Ġtexture Component Ċ } ĊĊ