package Ġru . ser dj uk . z xs na . app . system Ċ Ċ import Ġjava . io . File Ċ import Ġjavax . swing . J FileChooser Ċ Ċ @ Experimental Unsigned Types Ċ class ĠApp File Ġ{ ĊĠĠĠ Ġprivate Ġfinal Ġval Ġproject Extension Ġ= Ġ". s np ". intern () ĊĠĠĠ Ġprivate Ġfinal Ġval Ġempty String Ġ= Ġ"". intern () ĊĠĠĠ Ġprivate Ġfinal Ġval Ġcho oser Ġ= Ġlazy Ġ{ ĠJ FileChooser () Ġ}. value Ċ Ċ // ĠĠĠ Ġfun Ġload Palette 4 bpp () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġlazy Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Open Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPalette Utils . convert Palette From ( cho oser . selected File . read Bytes ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}. value Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġsave Palette 4 bpp () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġlazy Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Save Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . write Bytes ( Palette Utils . convert Palette To ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}. value Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Data (): ByteArray ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Open Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ lazy Ġcho oser . selected File . read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ lazy Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Data ( byteArray : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Save Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . write Bytes ( byteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Project (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Open Dialog ( null ) Ġ== ĠJ FileChooser . FILES _ ONLY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow ĠNoSuch File Exception ( cho oser . selected File ) ĊĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Project ( data : ĠByteArray , Ġaddition To FileName : ĠString Ġ= Ġempty String , Ġextension : ĠString Ġ= Ġproject Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Save Dialog ( null ) Ġ== ĠJ FileChooser . FILES _ ONLY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . write Bytes ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠFile ("${ cho oser . selected File . absolute Path }$ addition To FileName $ extension ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . rename To ( name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( cho oser . selected File . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Images Sequence () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġimage System Ġ= Ġsystem . import < Image System >() Ġ?: Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġlazy Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġopen Selected Files () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage System . sequence Ġ= Ġlist Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage System . sequence Size Ġ= Ġimage System . sequence !!. size Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage System . sequence Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage System . sequence Size Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage System . sequence Counter Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġopen Selected Files (): ĠArray < File ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcho oser . file Selection Mode Ġ= ĠJ FileChooser . FILES _ AND _ DIRECT ORIES ĊĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cho oser . show Open Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġcho oser . selected Files ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠÑģÐ¾ Ñħ ÑĢÐ°Ð½ ÐµÐ½Ð¸Ðµ ĠÑģÐ¿ ÑĢÐ°Ð ¹ ÑĤ Ð¾Ð² Ġ 1 6 x 1 6 ĊĠĠĠ ĠÑĤÐ°Ðº - Ð¶Ðµ ĠÐ´Ð¾Ð»Ð¶ ÐµÐ½ ĠÐ±ÑĭÑĤÑĮ ĠÑģÐ¾ Ñħ ÑĢÐ°Ð½ ÐµÐ½ ĠÐ½ Ð¾Ð¼ ÐµÑĢ Ġ( Ñģ Ð¼ Ðµ Ñī ÐµÐ½Ð¸Ðµ ) ĠÐ¿ Ð°Ð» Ð¸ÑĤ ÑĢÑĭ Ġ 4 bpp ĠÐ¸Ð· Ġ 5 1 2 ĠÑĨ Ð²ÐµÑĤ Ð¾Ð² Ð¾Ð¹ ĠÐ¿ Ð°Ð» Ð¸ÑĤ ÑĢÑĭ Ġ( Ð¾Ð½ - Ð¶Ðµ ĠÐ½ Ð¾Ð¼ ÐµÑĢ ĠÑģÐ» Ð¾Ñı ) Ġ+ ĠÑģ Ð°Ð¼ Ð° ĠÐ¿ Ð°Ð» Ð¸ÑĤ ÑĢÐ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsave Data ( data : ĠByteArray , Ġaddition To FileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Save Dialog ( null ) Ġ== ĠJ FileChooser . FILES _ ONLY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew FileName Ġ= ĠFile ("${ cho oser . selected File . name Without Extension }$ addition To FileName "). absolute File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// FIX ME ĠÐ½Ðµ ĠÐ¼ Ð¾Ð³ Ñĥ ĠÐ´ Ð¾Ð¿ Ð¾Ð»Ð½ Ð¸ÑĤÑĮ ĠÐ¸Ð¼ Ñı ĠÑĦÐ°Ð¹ Ð»Ð° ĠÐ¿ÑĢÐ¸ ĠÑģÐ¾ Ñħ ÑĢÐ°Ð½ ÐµÐ½Ð¸Ð¸ Ġ- ĠÐł Ðķ Ð ¨ Ðĺ Ð¢ Ð ¬ Ġ! !!! Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . rename To ( new FileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . rename To ( new FileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . write Bytes ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcho oser . selected File . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( new FileName . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Multi Files Data ( data : ĠByteArray , ĠfileSize : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġfiles Data Ġ= Ġdata . s lic ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġcreate ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . is Multi Selection Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cho oser . show Save Dialog ( null ) Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . selected File . write Bytes ( data .) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcho oser . selected File . name Without Extension ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. value ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ val Ġfile Ġ= ĠApp File ()