From b6063c778b9a3ae17d43d49e856a087714660dd1 Mon Sep 17 00:00:00 2001 From: Brian Whitman Date: Sun, 20 Oct 2024 13:00:17 -0400 Subject: [PATCH 1/2] smaller tulipbw.png --- tulip/fs/ex/g/tulipbw.png | Bin 7565 -> 7836 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tulip/fs/ex/g/tulipbw.png b/tulip/fs/ex/g/tulipbw.png index 9a45542be22498486e3a468547b14146939984ee..1163b51b9de7ac1db89798e24a5785d1b94d38f5 100644 GIT binary patch literal 7836 zcmaiZcUV)+_HF{9NL4|qR1ri40#XBnCQYeI4?XlyrArH;O2>REy$gIF9Z5hVp-BxO@6Sf)x4x z#eiJlKW;I8-hWa25Q_X}x(2*zUN0PZrA5J_V16hKFE6jc3kN62v&S0$3BPJ7^1Jx? zc|*j+0s{j@10RWcy>J#2my?qd151cWNQhi9M0|ri{p^B7Jbmx{TjYQ1Ja+Vjzi{>T zbM^A%{iADV@8$2O$j|>L(SOUo$LZ(l^go$Aeg8A9s|kwz=@Anb1&jSx`zlo7j~Al< z!qxFA^B;YvxWd1f|CjGSc@)I{B>z7K^Y5Ad%X>9dD2;;Hf0qqP!*0Du1pwUU(tfOB z6a?JNp{n&T4(`@{URM~ek$!BT^1F+AvA0lzPB#FAqiyAR*0Lsp)jK`Wr&)t&iUn*b;~geVKZz1dYl`w{V{dFKQshW6ESar z%Q>B+_pFU}1iigsreVt-`Tqn*JJe?f+*|V_&DU;#Pn4u0ojx|iX|yhH!_HtVZQNOF z(8lmmojH-sR8-u%-NCm3-+w!SSb}BjvT+eG(k1I>iJ(#51q&IA$_H4H7w$DoB7xui z1zByqJM24n%I=;_zCHTk7;d)WP%e=mKmW09t`+X+DlnV5`^!*pv9lSsSyyDBsbEl-~Efho6dfgZl~ zY!IJ>c%~*?n>uc{f6|NU46|j`ejR&+QheC-QS*Tp6G-|WW%~85 z7V#hgukztb8(5}UN1}WTI^O=v+d{JP$?&o%hutd?sV{@kbBgDwpgJnaliO*4;O`{ut9y-%Snyn(Me(ZOTRu`aMRqkZ#`Ex1CQ$2(oA9 zUDJ<$zOqp)z0_2(ZBFI5j>l^90w zjpRp9lj`gfFWxN9W=(I0Jl@cZnjUwq@bwa7sdTg(ST2d3EqhTAUOyq6(7sTAk@SQX z*LtTm%i7;Gn;{A0;hOjiN3zgQaAu|5u=?ayOmipPBIkf$m1@1|vAO3*deV`<*oAu2 zx0^C-;zmHi6Op?VZBbExHiL=YFP@gOm>GU@MU38N#@K|mY{Qf|0jlNm7Qm^pxz9Xz^uVFU7JUT?NJF$v5f@C&o|o?y&2E%X>o^P2rL4A1+bV+>Jc(;dJ9#$$4WF4f)jD>2DY-dL+vl$xN+H~( z2y6$CuGw!<+>5g1DSkq#y2tMg_$x%ghr?N+OqMm6Ftnf1Fcb^kZR@WKBpp_3ZddxW zi+X$nhqcQ37t=R!B;6^-N!QZzFS#T~|o zKq-!9#NUGE3t81F0pIB}KSb75##yy*>}`SV{$P#3zm(6LkaMEx?#V z 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 R;?J3@wz}TqYE@g*{{r57*unq+ literal 7565 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 B0g?a! From 408ada890519cd017dddcfd7cb9ebfa71a9a7bf8 Mon Sep 17 00:00:00 2001 From: Brian Whitman Date: Sun, 20 Oct 2024 13:34:10 -0400 Subject: [PATCH 2/2] simple screensaver --- tulip/fs/ex/g/tulipbw.png | Bin 7836 -> 2879 bytes tulip/fs/ex/screensaver.py | 69 +++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tulip/fs/ex/screensaver.py diff --git a/tulip/fs/ex/g/tulipbw.png b/tulip/fs/ex/g/tulipbw.png index 1163b51b9de7ac1db89798e24a5785d1b94d38f5..d1a7553349a9cff22bed0eb4950a1057cb2d1d07 100644 GIT binary patch literal 2879 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 delta 7450 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

d(i0L>t|i`3{hrUGf(3P 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 diff --git a/tulip/fs/ex/screensaver.py b/tulip/fs/ex/screensaver.py new file mode 100644 index 000000000..5ca25becb --- /dev/null +++ b/tulip/fs/ex/screensaver.py @@ -0,0 +1,69 @@ +import tulip, random, time + +every = 2500 +last = tulip.ticks_ms()-every +play = True + +def r(u): + return random.randint(0,u) + +def draw(): + tulip.bg_clear(36) + x = r(1024-128) + y = r(600-128) + tulip.bg_png(tulip.root_dir()+"sys/ex/g/tulipbw.png", x,y) + c0, c1, c2 = r(255)+1, r(255)+1, r(255)+1 + if(c0 == 36): c0 = 35 + if(c1 == 36): c1 = 35 + if(c2 == 36): c2 = 35 + tulip.bg_fill(x+50, y+60, c0) + tulip.bg_fill(x+30, y+60, c1) + tulip.bg_fill(x+95, y+60, c2) + + +def cb(x): + global last, every + if(tulip.ticks_ms()-last > every): + draw() + last = tulip.ticks_ms() + +def touchcb(up): + global play + if(not up): + play = False + +def keycb(key): + global play + play = False + +tulip.tfb_stop() + +tulip.frame_callback(cb) + +tulip.keyboard_callback(keycb) +tulip.touch_callback(touchcb) + +while play: + pass + +tulip.frame_callback() +tulip.keyboard_callback() +tulip.touch_callback() + +tulip.bg_clear() + +tulip.tfb_start() + + + + + + + + + + + + + +