From c2142436b958606e6f0fe0da160ae10d2b8ea321 Mon Sep 17 00:00:00 2001 From: sam Date: Fri, 7 Mar 2025 18:58:47 +1300 Subject: [PATCH] first commit --- .gitignore | 2 + build.bat | 2 + build.sh | 2 + kiva.sand | Bin 0 -> 12541 bytes main.odin | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++ mathew.sand | Bin 0 -> 12541 bytes odinfmt.json | 5 ++ out.sand | Bin 0 -> 5149 bytes rose.sand | Bin 0 -> 12541 bytes sam.sand | Bin 0 -> 12541 bytes 10 files changed, 174 insertions(+) create mode 100644 .gitignore create mode 100644 build.bat create mode 100755 build.sh create mode 100644 kiva.sand create mode 100644 main.odin create mode 100644 mathew.sand create mode 100644 odinfmt.json create mode 100644 out.sand create mode 100644 rose.sand create mode 100644 sam.sand diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0fa0f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +converter* +viewer* diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..dfc00ef --- /dev/null +++ b/build.bat @@ -0,0 +1,2 @@ +odin build . -out:converter +odin build . -out:viewer -define:MAKE_CONVERTER=false diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..dfc00ef --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +odin build . -out:converter +odin build . -out:viewer -define:MAKE_CONVERTER=false diff --git a/kiva.sand b/kiva.sand new file mode 100644 index 0000000000000000000000000000000000000000..990ce8ae481daedd6a4c9b835d7db63e805fba43 GIT binary patch literal 12541 zcmXw_qUsDcGD~Ay(cFDk`O>z=!6=2??rl*CL$n6Rf;G`Z{iE0 z^dizhKv1bFRjP2`@7y!_>wISB%$b=p=REVw+x}p+}l-fq5J433n5k)2I7BgTV^&(ZFv#9uANtGE;RLm>VIjd6SyGd15 z71e)2nj$|>vX*LE=SqFg1gxx-hP;v9gQczst9GWWxN0-h-w@Y4AGrb6Ec%6-ac9bc zQx7Wg9;s<+LH$PQ+xAwPU)5&2yO^k+O-iGFOW80?by?2ulrVtN{i39PzWDArsBe_I{|`xb^K^3A1TC~NS0B&+{W84i^y zTZ^@-vYbC6t&><<*d#U2S7~lj=~hW-q1`>CWxK!Fz+}wjsXSZOTRWx5mrMPyMVR>- z&#;!TxA?j^_dh1JElQdHQ|dYgVaT1f)fg}bh;eLQ_%F>d298&?aWdw>iB$hN89zo^`Z_58p4}n>vnHwX zU8p}T^_}(9k3!EC`HoWGg@5cv;%hPntxMhSRjZFn$Mo21TN$=;9?hLHa`8-hf0)!> zP#F%CssW=JrB%!BgjBy>(i<;*Ge@$BtF>&NmCCebMSg55jz+Q;|9V-@-;>%dBFs#c z#(p-{k%O^0bm1ttcOVi+CSH_ zTPmI7afP|CEaxd@&Bro&&3cSBu#E5g*J3@B@IPc*h?GETRudaGrY5-Ja@67|*Gpr2 zW0Aipb%WxrO=mYF3Z0eImL>U`0)pK`W*iy!>8Dz6C*!f^B3~@No^1@DV3qD+7pZO{ zx$JLLE&LU=jw1gqS*xh@vsIcKRAvFS2o$%c_AOMpl%wGyu(PkochYM6+tjUB8rot6 zKOoi-au=lDH&Mg|W@F0iuKiw2Odi**?d}Sd=2y}?WjO6~#8*d0zaqAVvR@%CWJM-f zYahKL5aT$z2Bh7bC6c0SOMZ)1`<2p|6FO$!WOM@w_0d=%E&~9<|=(k#zUpLC2oGdG!A1eUXw5Xn+#}-yHYPreIS5K zIp@i_8U0w_UrhZ}tPbGpnN7FVEIFEaMtY{iZ21{6MTqU41{_y zN@_dEfaaPapCDtl0dL)N(mn!cwB%kn_5Vo6WU|A8!<6%FNN{q^jn(Gx7}juiI9goW zQq+E#>YrEj|7y{-r0Q`cIy`&Q&A5=3st=bj*%G z@R78QB3A6_YA)*(pT$6Z8Mjv#`G;EVuT^Q*FOTqw{X(ic#$&aWgN$8sq+-Mm|19{@ zgSjb5KLM~`B9pe9TI9VlX0t`8jV1_1XP(kor&= z1^MMNaPBbXx<99ME0dYc@f)}61~873&wj1l1GyPP)F*^>TPRO4|CG*Yd118GJRl82 znu`2)7y$@;1k{)n+pDxss&s2LCc@oi!dF6;x?ft#e57>ECsf>)Qr}G^ns-w7!zI)b zffht9%|57s?1oBp*V-cg0aL>5;b7fdd%s$HO1h>;G~YAz8ipDxH1|kTcbudqTg9AA zNU`FqBgHw{RkF+HrElRR%)YDU4v?$^K4*`YruBBh>^RBV*I?$)+WdDN#s3~G1kTNl z;;PAEA6X8ruurRWdnNgiN^@^&ualmcz`x(NbWx|)`u?Q-g182<#2#3d^L6B=H8qb< z>Hu#^Lypz5S&fWm{4-h(uZwM*$=u&7%lTBsigP2WO23|}G6PY=;3B_Hx;KnK`J%K8 z$B|(oj$vu`OI5Q8SWTPc^9fw1G$;Ry44$!=;x$s+8adQ)GHgNQg`bs&ZzXJvzw3*9 zj9PK;Cu`GGhF_@kXO=QwDvcFxKW35)UNN-DKbE>~+-e3&!{8~bET$MsaKC0Lq*wq^ z;}LFi$tO-m?@ehNGXuTrOHP#^EwvRmko!PFUCcGuOr%csEa_W38@Wu)Wk9KKr~NgZ zL?SZ|ahkh(JYo;D#HF(NJWF<1qcWNf3pm|w~x0j;g z*T*pgW=Lelu1mF@#MCkO@LSajy(-NG+I@j^jU2@wHxbvY!F(@+mTtouHkM(VQ*RYH zD{hWd)#9q~iukULi~Lu~+6v~#sP+!2X|FAEfHTrTw+3xa)c|r<55wv$(ldu3@Rm`) zGIN=B_xE!}TZSG`38Lm3Xtljq7N33qW`^k;zfIbSwV17BKs_++6ML}_YrESS8Iki{ zv9(;Pj3Q;ly3~KOaG3)3Bv#(qm>06M$keXv2YhIm$J za^>4g+eDaxsbS?X*GCfpYu8?W8r5h!lBT?~CYoZKwcWfVBbJbR{>l;}a}cu3mbbxa z_=ay3Q*!>3C^JX918a=&IzfhRH=Iuw|1I@exYcuXdjPZ!hnNJQKjH}ixbQoYdd$s?lG=6x&;C`KhXB_> zSxUtnAyxH+NH|?;8qg0BDq~$zRW!U-fX@|Wgs&W;wlu;t0FmnNaq@EK*FDAmtkIUU#IHZ3D9_r30n5bM)EDRXpD^5YiyA}kc#^x zt%edUD(-hFD>lX|E3#|F)(>ZecT4|_Aw>=Xmf7%4>Xxarmx^gwf%=wOHY1sHSCPLX zZPUR8mvYQl>6#O-<+s2_044jN*$6G8AZ zpJ<0UflGW#ktd)u|B{x`pol*^S$T%j5Tsk3j4SD=IC6)<@+Y*~pPHIqRB5hD^%GUP zgOXgwI@)B?ft-rwL~#+rtg?=Zzoyj7kK-Z`@v}y|*{#cSD}P^$;V3aRusAnO%RaFU zvs8x8Bh~y%kZ@SE0Wdvi?>?5S9_Bw##vTY4^b^=6z{v7=QU|VvL_flR%81L)mC@VB z!!wtTVQjg5Q~G2m){Yh%pK|R7I;xuv)g)WoSz0#Bq;)(28eYQ;KoH;+(M6M!`X@SS z_>q?FAeEjZi)slOO+`j*OE$bLt~Oqcc1^u+CnYy$?&MI$WWxHI_jV^997a(8TW;r( z6n?7KmL%i7-0RqUdx7NB<63T#p}RbZ*#&@AJaRV1(PZrRQs2&7p+7^rnS_LXj+X5! z(!a&cjQWk8tI*}i0;shxRlG%qsYz4+Dxf!VG`kfC0cF+V1@%K zT+HC$tW}y(3A+=SktKdx_N&(3?oO4K+`@RpJeGE;d@6K}CD>HlNy!{ZRBp!((z_hJ0Ly^9)Jnr>P&eEou5}5$9#gF_Hp!Dy?+%q- zb1DC&zWSIJscwUZ{#hFP;@%viT8@583PaF9nT&ia}L>#=F^EQ63;y@ z>z}$^k#C#E=wv0Ni2YE@_FA5fc(5`vq^1+j=SZdaaP>t}KS5dtN3XWx?U8hQHr1~q z7oWmE;|Y=g(vFt#YmYf$d8ns$%~l`02wLuPh|3`OajDk2TO{m zyin#Gv=oOyDwssY&Xtj?IatDRj2a11Vi)clscC^73}z5E&#p_YHzaF}d3{tl$vklh z*F%vA2{)E6A{Bd~n8x{(6RB{E#5Ha}d0^?#iicG|Wh&-;8MX7cBA=&+q4{50`p?z+ z^;!&Xf&%#2e#LWeKWiYR223pS*QBT<{P9so|$1eiOy(=T=?77iUSzSc-%tyllg6` ze?VsK&4p0g1BaG4$jo*avK zdB46{m_5rk%!)ZAbvqfhwjLhPWXb!aXMN%}Y=ztLlRZGy{PCoFJmvmS`a9nYGRN-t z$SFWF`*)S5iKlB;XcMc*G>h`5B{XuXxkN7fB}siRsfiy?e4UoVa-arP8;k2TtU z{orX{kV$(URpbXs*94HwM_`PbK3*yl7Zmxwq*p)}Ge9qS2O2=B@0)#qYW zX+Gy=Rj3XJ{sdC6$Hx^x30gLQ)GH~VTw7w{E_C=Hr65G16$WP=puo22_ zID&J+SBd$eO|W79)FaKTQQ-?r=^dw zpUcz(Pp0}paUSfyGCAfYHZz9E#}e8>AvX|DkV^r8s@UC_ zWK6}MXubbNTDrl3JEWltzG`^WC=-08^lt=wIFhJ56!tCa^O9mHguzVHlz%#irW+hHILEuVLzCic}skSwDQW~6L6X*IrrIg|8KT| z`@!8ZW``LVeN;kx`Ec#Ycw!&^9r5vMX-?C6-(1RksI*NYAl(l*1LE00GL?>cn{QKb zA#u49`aev0|yrvx^Su<<#P0~4>NrpkvF_K8MWL4V=)JAdC zzy!k6Y1AWl{2=2$l9~=YW44vb;;8<(HoHzzm>6;&>IX=3tyC6(ymnpIolx$6tD?Mv zc37xmn8L|36!|Z49SmxZRcroJ&Be2&V>pMd8?Dvm$RtH$!N;Tm2^>ike=!KxQ4cMd zC=<8Z9BT`iD-o9gm4UhX^JLjkFwSduJ%}9VFXCHQQwNcVv5x zw2hA;Hipn4{Ii+pMF-xDXP{JXq`AJYKM|OtWaJuv!S|p>1O{@le9X8InnJyuBy&z# zT;z*Vw}IfsLPnd%Apj8kPw!Vok+b5@B>gch?Vr*&cT|xll42jwYPXM6W`dYu z0cDK(?@4g5&RoGuH^-odokRi*V#X|Szfx(w0V2s%yF$wrmJ-|jrKq#nTPF39GGrO_ z!>{4XWK6DGv_AYmtv;y54Av5V_3)Ral_|hh%>6Qa#U@N9A}Ya<4P#|w$syX!S0`&7 zpno6MVK0qwTl!?s+{kDj=GU5u$OFVS%`NhGVXo1?n@P_&mS|xw<(l@B$!j?H+&bEl z=!$Jh<}ZP4jx6%MQn5~@Jrv;OObY*CEd+&sygVTDQ~2l)oV$KiGY7(-q0|=xlJV8jJPiM42|@jPTmia^{61-)u!_!y;V{OuPe}WCvc_}) z(=l64C89QF@FAs{{6!hDCsCeFWK;X8CKbzFdP}8Ie64us3-$SWGH%xh!++85#SWm2 zw>=Ac0p;_prI{D#N*Kf7q@Hh=zF9*Ue42F6<*@x+zqT30*@{0+8e@or3zfUOD`omx zq5Ls#`88POCJ-kRcECYwezxv<_Z+~?Penh}W*1ouYW7^2wBr)wHZu3bMT|OD+NVUo zI9liafvTD5D#KZ&J1h3TsoYY=KqZ^Z)%NA`7_2x_uUta{RR0C)ti@bJJ^SHz;;SCttft7=m0K|A)zUr^51LQK zyTgR~Kt?HM|1HV43f9K9kf zJw#MUx#V~o@L39$^EaAk(|}wivK$4 zEtl4D+;9BeX&uv6Cl6@ zF!K2HHm3ssVj6k8XENa=ZMIKIb@u_3_ryB>&uW=;WSRF+#@_+xjgJQAG1yY{=r(*G zttmR-74d!Jd9~s->GI>HcHm5^$4To1{A3|Hxyay!M3C>|p&>qskaA@h z?k27ATS(v&cm)J?6QSLZ$S)}){#EW=8z=2|>T1ZcsOMLonj_Sur=cEb9&xrmp zIOLqP)R?MqbH~WAjYrX+Ya@T8=0~Mbdy@P-sV~*Lmw#1E!<-_&P^;Y}sjeJ?)kW!+ z`D?Au<}s_dryCLGSa+mmxtMcHnde%x*UQkI9>jAIX(MC!N>S)6ZT8#~2aqK8HRYW4 zr&@3JC_ltk++-QEb;Lr=)Jj$*85FkSKS_E3a2(a|B6HSqouAKt$xO<9r`5Jn%KQf2 zQsdz=TfdrmfVh0f4LrK=B=$!cwQt;)i=?Rshnk(FIsPadNX;^wBMTzg0xYP8B(wW) z<}itHla7)t(2U+#i|%`A8bp@ZEBJ5`Gdm%znUmUAlrsNDizef@Q3`sG!%#1(I*Wdq(ucU%7Kn+1GlvzRkC4-Xmg z5RTuc%T-EMzahBMfchocElbH6?p1Vh;Bowv>k}TEQ%b#j9U1x?Pe1rMt49rJ+)l0d z{nKt9iz8^ZDft|L%jEKBR4uFq7lz=k5j>Se@Vbw`GB|DBVcPDVNQAkI3ppMzr)s_B z55Ji>@E~?C9&B#`ATj&eq_r}Hev z4qW6o9PD#CsQr)hFOBEk4^`dOO3M%c#%V5AGLo@;0vemlJtl*v^`pOy_V-7Z^?A(E zxCQ_@-cD@`@y{>;78D(Ol~ktVP=5@6@5fLX#N`&g@z-SJBd)$|wox3egzxwd6FhgP zYkPPZYj7t^^2Jdy5Vt(KuGO;p0tr7^U#6Zp2epf|+DzeOi~hbksVx!Hx}wNGP0hW; MHGU2kl&A9l1IUo6T>t<8 literal 0 HcmV?d00001 diff --git a/main.odin b/main.odin new file mode 100644 index 0000000..bf7fd26 --- /dev/null +++ b/main.odin @@ -0,0 +1,163 @@ +package main + +import "core:encoding/cbor" +import "core:fmt" +import "core:image/png" +import "core:math/rand" +import "core:os" +import "core:strings" +import "core:time" +import rl "vendor:raylib" + +MAKE_CONVERTER :: #config(MAKE_CONVERTER, true) + +Pixel :: struct { + id: int, + pos: rl.Vector2, + already_moved: bool, + color: rl.Color, +} + +State :: struct { + seed: u64, + colors: map[int]rl.Color, +} +state: State + +SIZE :: 800 +SCALE :: 20 +DIVIDED :: SIZE / SCALE +pixels: [dynamic]Pixel + +get_pixel :: proc(pos: rl.Vector2) -> Maybe(^Pixel) { + for &pixel in pixels { + if pixel.pos == pos { + return &pixel + } + } + + return nil +} + +is_finished :: proc() -> bool { + return len(pixels) >= DIVIDED * DIVIDED +} + +main :: proc() { + rl.SetTraceLogLevel(.ERROR) + + when MAKE_CONVERTER { + if len(os.args) < 3 { + fmt.eprintln("Please provide input and output filenames!") + return + } + + state.seed = u64(time.time_to_unix(time.now())) + rand.reset(state.seed) + rl.SetConfigFlags({.WINDOW_HIDDEN}) + fmt.println("Beginning conversion...") + } else { + if len(os.args) < 2 { + fmt.eprintln("Please provide a sand image!") + return + } + + bytes, err := os.read_entire_file_or_err(os.args[1]) + if err != nil { + fmt.eprintln("Failed to read sand image:", err) + return + } + unmarshal_err := cbor.unmarshal(string(bytes), &state) + if unmarshal_err != nil { + fmt.eprintln("Failed to unmarshal sand image:", unmarshal_err) + } + rand.reset(state.seed) + } + + rl.InitWindow(SIZE, SIZE, strings.clone_to_cstring(os.args[1])) + when MAKE_CONVERTER { + img := rl.LoadImage(strings.clone_to_cstring(os.args[1])) + rl.ImageResize(&img, DIVIDED, DIVIDED) + } else { + rl.SetTargetFPS(120) + } + + for !rl.WindowShouldClose() { + for &pixel in pixels { + pixel.already_moved = false + } + + if !is_finished() { + pos := rl.Vector2{f32(rand.int_max(DIVIDED)), 0} + if _, found := get_pixel(pos).?; !found { + color: rl.Color + id := len(pixels) + when !MAKE_CONVERTER { + color = state.colors[id] + } + append(&pixels, Pixel{id = id, pos = pos, color = color}) + } + } + + when !MAKE_CONVERTER { + rl.BeginDrawing() + rl.ClearBackground(rl.BLACK) + } + for &pixel in pixels { + when !MAKE_CONVERTER { + rl.DrawRectangleV(pixel.pos * SCALE, {SCALE, SCALE}, pixel.color) + } + + if pixel.already_moved do continue + if pixel.pos.y >= DIVIDED - 1 do continue + + down := pixel.pos + {0, 1} + left := pixel.pos + {-1, 1} + right := pixel.pos + {1, 1} + if _, found := get_pixel(down).?; !found { + pixel.pos = down + pixel.already_moved = true + } else if _, found := get_pixel(left).?; !found { + if pixel.pos.x > 0 { + pixel.pos = left + pixel.already_moved = true + } + } + + if _, found := get_pixel(right).?; !found && !pixel.already_moved { + if pixel.pos.x >= DIVIDED - 1 do continue + pixel.pos = right + } + } + when !MAKE_CONVERTER { + rl.EndDrawing() + } + + when MAKE_CONVERTER { + if is_finished() { + for x in 0 ..< DIVIDED { + for y in 0 ..< DIVIDED { + pixel := get_pixel(rl.Vector2{f32(x), f32(y)}).? + color := rl.GetImageColor(img, i32(x), i32(y)) + pixel.color = color + state.colors[pixel.id] = color + } + } + + bytes, err := cbor.marshal(state) + if err != nil { + fmt.eprintln("Failed to marshal sand image:", err) + return + } + write_err := os.write_entire_file_or_err(os.args[2], bytes) + if write_err != nil { + fmt.eprintln("Failed to write sand image:", write_err) + return + } + + fmt.println("Conversion complete") + rl.CloseWindow() + } + } + } +} diff --git a/mathew.sand b/mathew.sand new file mode 100644 index 0000000000000000000000000000000000000000..5a755f597ff3ef726d393c80b017ab63be077437 GIT binary patch literal 12541 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 literal 0 HcmV?d00001 diff --git a/odinfmt.json b/odinfmt.json new file mode 100644 index 0000000..4137bac --- /dev/null +++ b/odinfmt.json @@ -0,0 +1,5 @@ +{ + "character_width": 110, + "tabs": false, + "tabs_width": 4 +} diff --git a/out.sand b/out.sand new file mode 100644 index 0000000000000000000000000000000000000000..50268248e0e5578a55365f65053acafdff9fad18 GIT binary patch literal 5149 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

X&bMs?q l+ZLAmN0~wUvo++yaqr#_Wq^8b@uHCF%t literal 0 HcmV?d00001 diff --git a/rose.sand b/rose.sand new file mode 100644 index 0000000000000000000000000000000000000000..7a72907529926b98bceb531da6abe311e538329e GIT binary patch literal 12541 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 literal 0 HcmV?d00001