package Ġcom . le ha ine . little kt . tools . texture packer . template Ċ Ċ import Ġcom . le ha ine . little kt . tools . String Compare Ċ import Ġcom . le ha ine . little kt . tools . texture packer . Image Rect Data Ċ import Ġcom . le ha ine . little kt . tools . texture packer . Texture Pack er Config Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġjava . awt . image . Buffered Image Ċ Ċ /** Ċ Ġ* Ġ@ author ĠCol ton ĠDaily Ċ Ġ* Ġ@ date Ġ 1 / 3 1 / 2 0 2 2 Ċ Ġ*/ Ċ @ Serializable Ċ internal Ġdata Ġclass ĠAtlas Page ( ĊĠĠĠ Ġval Ġmeta : ĠMeta , ĊĠĠĠ Ġval Ġframes : ĠList < Frame >, Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġinternal Ġdata Ġclass ĠFrame ( ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" filename ") ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġframe : ĠRect , ĊĠĠĠĠĠĠĠ Ġval Ġrotated : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġtrimmed : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġsprite Source Size : ĠRect , ĊĠĠĠĠĠĠĠ Ġval Ġsource Size : ĠSize , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġinternal Ġdata Ġclass ĠRect ( val Ġx : ĠInt , Ġval Ġy : ĠInt , Ġval Ġw : ĠInt , Ġval Ġh : ĠInt ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġinternal Ġdata Ġclass ĠSize ( val Ġw : ĠInt , Ġval Ġh : ĠInt ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġinternal Ġdata Ġclass ĠMeta ( ĊĠĠĠĠĠĠĠ Ġval Ġapp : ĠString Ġ= Ġ" https :// little kt . com ", ĊĠĠĠĠĠĠĠ Ġval Ġversion : ĠString Ġ= Ġ" 1 . 0 ", ĊĠĠĠĠĠĠĠ Ġval Ġimage : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġval Ġformat : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġval Ġscale : ĠFloat Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠ Ġval Ġsize : ĠSize Ġ= ĠSize ( 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" related _ multi _ packs ") ĊĠĠĠĠĠĠĠ Ġval Ġrelated Multi Pack s : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġfun Ġcreate Atlas Page ( ĊĠĠĠ Ġimage : ĠBufferedImage , ĊĠĠĠ Ġimage Name : ĠString , ĊĠĠĠ Ġdata : ĠList < Image Rect Data >, ĊĠĠĠ Ġrelated Multi Pack s : ĠList < String >, ĊĠĠĠ Ġcrop Type : ĠTexture Pack er Config . Crop Type , Ċ ) Ġ= ĊĠĠĠ ĠAtlas Page ( create Meta ( image , Ġimage Name , Ġrelated Multi Pack s ), Ġdata . to Frames ( crop Type )) Ċ Ċ internal Ġfun Ġcreate Meta ( image : ĠBufferedImage , Ġimage Name : ĠString , Ġrelated Multi Pack s : ĠList < String >) Ġ= ĊĠĠĠ ĠAtlas Page . Meta ( ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġimage Name , ĊĠĠĠĠĠĠĠ Ġformat Ġ= Ġ" RGBA 8 8 8 8 ", ĊĠĠĠĠĠĠĠ Ġsize Ġ= ĠAtlas Page . Size ( image . width , Ġimage . height ), ĊĠĠĠĠĠĠĠ Ġrelated Multi Pack s Ġ= Ġrelated Multi Pack s ĊĠĠĠ Ġ) Ċ Ċ internal Ġfun ĠList < Image Rect Data >. to Frames ( crop Type : ĠTexture Pack er Config . Crop Type ): ĠList < Atlas Page . Frame > Ġ{ ĊĠĠĠ Ġval Ġoutput Ġ= Ġmutable ListOf < Atlas Page . Frame >() ĊĠĠĠ ĠforEach Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠ Ġoutput Ġ+= ĠAtlas Page . Frame ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġdata . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Ġ= ĠAtlas Page . Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . x Ġ+ Ġdata . extr ude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . y Ġ+ Ġdata . extr ude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . width Ġ- Ġdata . extr ude Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . height Ġ- Ġdata . extr ude Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotated Ġ= Ġdata . is Rot ated , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrimmed Ġ= Ġ( crop Type Ġ!= ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION Ġ&& Ġ( data . offset X Ġ!= Ġ 0 Ġ|| Ġdata . offset Y Ġ!= Ġ 0 )) Ġ|| Ġdata . region Width Ġ!= Ġdata . width Ġ- Ġdata . extr ude Ġ* Ġ 2 Ġ|| Ġdata . region Height Ġ!= Ġdata . height Ġ- Ġdata . extr ude Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsprite Source Size Ġ= ĠAtlas Page . Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crop Type Ġ== ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION ) Ġ 0 Ġelse Ġdata . offset X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crop Type Ġ== ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION ) Ġ 0 Ġelse Ġdata . offset Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . region Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . region Height ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Size Ġ= ĠAtlas Page . Size ( data . original Width , Ġdata . original Height ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdata . aliases . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ+= ĠAtlas Page . Frame ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Ġ= ĠAtlas Page . Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . x Ġ+ Ġdata . extr ude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . y Ġ+ Ġdata . extr ude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . width Ġ- Ġdata . extr ude Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . height Ġ- Ġdata . extr ude Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotated Ġ= Ġdata . is Rot ated , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrimmed Ġ= Ġ( crop Type Ġ!= ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION Ġ&& Ġ( data . offset X Ġ!= Ġ 0 Ġ|| Ġdata . offset Y Ġ!= Ġ 0 )) Ġ|| Ġdata . region Width Ġ!= Ġdata . width Ġ- Ġdata . extr ude Ġ* Ġ 2 Ġ|| Ġdata . region Height Ġ!= Ġdata . height Ġ- Ġdata . extr ude Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite Source Size Ġ= ĠAtlas Page . Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crop Type Ġ== ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION ) Ġ 0 Ġelse Ġdata . offset X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crop Type Ġ== ĠTexture Pack er Config . Crop Type . FLUSH _ POSITION ) Ġ 0 Ġelse Ġdata . offset Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . region Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . region Height ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Size Ġ= ĠAtlas Page . Size ( data . original Width , Ġdata . original Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoutput . sort With Ġ{ Ġo 1 , Ġo 2 Ġ-> ĠString Compare . compare Names ( o 1 . name , Ġo 2 . name ) Ġ} ĊĠĠĠ Ġreturn Ġoutput . toList () Ċ }