From ddf24772c32774c4f423473671fe0ec2dada1ddd Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 24 Nov 2021 09:53:19 -0600 Subject: [PATCH] tests: move bitmaptools files to their own directory --- .../{ => bitmaptools}/_bmp16.py | 0 .../{ => bitmaptools}/blend.py | 0 .../{ => bitmaptools}/blinka16.bmp | Bin .../bitmaptools/dither-atkinson.bmp | Bin 0 -> 153670 bytes .../bitmaptools/dither-floydstenberg.bmp | Bin 0 -> 153670 bytes .../bitmaptools/dither.py | 18 ++++++++++ .../bitmaptools/ellipse.bmp | Bin 0 -> 8330 bytes .../{ => bitmaptools}/minerva16.bmp | Bin tests/circuitpython-manual/dither.py | 31 ------------------ 9 files changed, 18 insertions(+), 31 deletions(-) rename tests/circuitpython-manual/{ => bitmaptools}/_bmp16.py (100%) rename tests/circuitpython-manual/{ => bitmaptools}/blend.py (100%) rename tests/circuitpython-manual/{ => bitmaptools}/blinka16.bmp (100%) create mode 100644 tests/circuitpython-manual/bitmaptools/dither-atkinson.bmp create mode 100644 tests/circuitpython-manual/bitmaptools/dither-floydstenberg.bmp create mode 100644 tests/circuitpython-manual/bitmaptools/dither.py create mode 100644 tests/circuitpython-manual/bitmaptools/ellipse.bmp rename tests/circuitpython-manual/{ => bitmaptools}/minerva16.bmp (100%) delete mode 100644 tests/circuitpython-manual/dither.py diff --git a/tests/circuitpython-manual/_bmp16.py b/tests/circuitpython-manual/bitmaptools/_bmp16.py similarity index 100% rename from tests/circuitpython-manual/_bmp16.py rename to tests/circuitpython-manual/bitmaptools/_bmp16.py diff --git a/tests/circuitpython-manual/blend.py b/tests/circuitpython-manual/bitmaptools/blend.py similarity index 100% rename from tests/circuitpython-manual/blend.py rename to tests/circuitpython-manual/bitmaptools/blend.py diff --git a/tests/circuitpython-manual/blinka16.bmp b/tests/circuitpython-manual/bitmaptools/blinka16.bmp similarity index 100% rename from tests/circuitpython-manual/blinka16.bmp rename to tests/circuitpython-manual/bitmaptools/blinka16.bmp diff --git a/tests/circuitpython-manual/bitmaptools/dither-atkinson.bmp b/tests/circuitpython-manual/bitmaptools/dither-atkinson.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1829b8e7aec2499efa949ec98731702fe2151693 GIT binary patch literal 153670 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 dULWN?yQ95 literal 0 HcmV?d00001 diff --git a/tests/circuitpython-manual/bitmaptools/dither-floydstenberg.bmp b/tests/circuitpython-manual/bitmaptools/dither-floydstenberg.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7481b040615b0342db477467306153e0a46cc0e GIT binary patch literal 153670 zcmeH~J(4R)a)jTK0wtR92D}DE8im!U^X63d2o$N26Ycwrdt_#zfo>Fl*T^zMW&C(} zWQB+IoB5Cb{Of=H!>@Y&`p56z{`md-Uw-}ipFhsO{Q8$)|MyP|@|MRbpU%4O8 z|Ni>*w}1Ne>tFxw{@>d?zka>Vr|u7Z(Fwfz4(fide#;jX_oc5@njWkBNX0+9#Ut`h2a{{Gms;s+Yo(vgq5;qLUc30OZ{Y#rw+^R;eYuc|xbJ>+G?2#{azwksbw z0jY>;*3?$2{m7e*y?mp7XYT$g_Z;uN{m&*~WeeHW#ruro?0ml?x2z~P36l^?r?8yqor~@x9jmnOpc8w|EUj-su+By}tUH8|d!Oy~R7J z{~F&~dh;vm(fX?+H+XdS*U;cyZ(+6BJ0kdJO~(A{SZ{it)pPT{;sj8>Ho_0vP?7uI z8a{gIZ!Uc}@7r^;z3K$C1^m0KUF5A@U|;U@1#sqhX21K~db6B0fz)2R=r>zgz3;b$ z;?KW&bR>4xw{G57nn06=*)b?h0D^}Uu9FUxuo9)g<4X684`IDx; zzojOC#%1v%Hb;yvjJ$P~IGi)Kv)k*IE5}=G-G0&p*rHTFwO3r*lXgZN&uH2!cIE56 z`caWA!u_P_?{Bfbvh0r=AoYpXX{;^fBw3E_M8mNa`)Ly>{Znas6-9S%iKA3@ zjJ%Gw*BQ-4Rp%0#TzUKXNfTg$v>)CEwj}qaV`r~NR(o{BN*C{$B5VIA&HvrMg^f5; zI`;sKPP`R^bA2bxR*3P}vm>uL-(9nx_Wja*RG+AIuSoa0uUx*JuP8s5=To(p;y-Qn z`+L}mu02uh!tCWXWj0x`IoT`xI%N|nM2|Q_d@J_*PoPxhVJl|smFXM67GxE6M;=#K zX2w>;(KSX0Zobc-FoCXgdG+*d=zBq)Gqbjn;j?IN9(AhemDRDZdTbHd=kG9qSvRT5 z+nN*c$#ytWmiEURlMHM7^Qd^?mN!p#{+1cDBd;?7={2fmt+BjIeFJ(v_l}Its`rki zM>J!`5)}$8`98;r*25`pzh89%(rKku#q^uEZQOw)ocGR%BQ|p;qDRH&yt3nLt5;>l z`1W6C0;y5jb;I(lv^}Ca@tnsZQzy3gt%n@@RWqJ2gU-^1Uyz7mmN50VurMj+t2b7!N#la)K@-j+xeHv+NRc~(d zOG$r`zaum6s`qPsw^fpoyg98Zdr}!5p~_R#J`s>Ujd2ZV=gf&Ew2&PKB75{rqe^wW zUrUMiyG^Nr7Nc!H)h#qn+KEY9?5M9(^;w;^vx@fI+B34O^zfyvzscXN%zi&-0xLxn zLpklkYNv=LQrdfmTy4vktkm8(XZ)DyRmvv1Y+-m);jJsgex5x6sW87s-B47zqIIG2 zN#C}(gsbm$#U46vRHCGl5iQWsiEIu1;^j=sV+W_*jmQfAwUIZ)#jYgj=K! zn{NcF^HxpGcKufLIkSKFuFQU|jI^E=A5|U^_RF#-TbqFGlbuPtVrv%goE-&=qN_JC zpYOg6kNy5qz8;u=VIvWkzHhL5{kfzs!>C@MLGW;O6vA`}bB{oOSN! z@e@b|Y^PP4TE|gg`Nw%OdFm@+%?#|E>)a};SiQ+&kzuwK7tZ%cAKX6Aozl{!aHp6Hzw5@kWVLFOb!r?${u7xBWhM0_*8JismR*e%kmeoRA=@N{=j9tULK$hi81@ z%+~GfU_L6cGkwL&``l@7_CA5qj>*d&{ZU;hXqDxQBlUJ*^B(Q;QO%a3Xit7Th0m&FE3^@#_T-GR)fp>3KZQx0eMc1|!wvF0Z|0jh zCs10U2B%`>rIM(XiYI23SG`cM+3USk?<^K4cM&d`L2&AZ;PSq%%C8o(zjH?0K5GJf z17;8HQdxA(7`W6|HW{kY2ThKhaHV>Xr#4R^Tv53Zj}O)uXJqyFSySJ1aTakKn&Tr>FU>`4|%97`-DtwPZ2*4+N&xaI*fgF zhrCNwxRTC20_%7R1(wr{d5g5Ug<|`C{sc5}ztKE3BbF*VFAKlUjMyfl^O`sP#DS-i zn0VAvv3zrvUSqH3ORX&4=TH8d`3#p5q^oj~94HRu-Czk2h!W%dXmP ziLGLzMTAorkern*TR-Wqenjw;+wZd{pm|#n=C25ERQ0)1R9R*Gma>^skL*-mnNjE5 zv10mlF2~5%=?9N28T_N(XHS0fOJ%)N1r*}6QW=r%s9Tw|XP>O*p1omGpYc61i6`G9 z0$&)sI_q)e`X+lX9ytN;fh}~iQc_NDvcwWauFlyeQkC_M`M%`Q3C`pZmk{CrMHOhW z8CPueexwHP+DrN~eNO3DUOhVfwnfgUkAgqexMEozJX}+gfGm<5PW%RmMA~&c59vCck@V0-n88 zN^NZ)S&I8T;(8{tEA=a{A4nqF9c8->Qaj~$$EpUbPx15KJMriVq~6}g)DErIF?JzO zS7a1hT919p_ZE<)CVTgsdaXJV8xf9|<*x8*3j6)o33Mf-J4%&j8%t-s`5BiO<2s9# zS3Pe|-NBsl#Wvf%h3XUG8d-k(4pqOO=S+av>+FipYWBQzPPK_x^&Ww-zLl+!HTua) zj*8^0-2C)t_XWMT@}q-Wndrno}*&mI}GBa3~yt6qJ%lVdZAh&s_vciQjgPari!RmD(_ldSxD z+rk!x3Sqo`@HzsEBW55+-`->N?9<(KJ+Q7aO-pyR_DhWVd>fN@TlW{zrqB%Qs|0OsXw_oN0rAI`9hX$K6ymR^%Kvm6|pB9 z*31aEMhg$(6=uKhfTl-^p)soAQ^&cgA8X3j#My+5Xp54++juM1tW_Q~_ruTXt^PA6 zP)hKiidC|u-RORKdQf@I;ONMrO!hCkI7j5zVa)&iB7Z-eg-Z#u^gETulQyw^o;3ka z+X_jguA#G5G}V-zW921;D%789@crzb``hY>^kmO(YJ29aDR17R38emPgwIl`o~}}l zR8IL1=%2Q0I>K?+>2~ECyTWCMHBt!QkRDqlSxbr0QXzt5b2)bZ4<+o*2WF?T~6 zuJXh>qW9nibtdcDzI-eCjVN)E)oqfW40UHtd~^2+Fni9GE~{MEG^=deN`~WTWt_D| zbll@a7^5hDdB)lLEZV2Ey>lio{w-MRZDFbc4sll)^*JA=*;S}(;xYceAn1YrggLs`+39!x^7Y<^{IUN zYrWRd&nn^NG|TPxaIM&2@EvR=mT1Pxe#Go|4^0{kIA<-$)H!dY`*hY3ojau} z@SmO8V{O9+6aL6`BM4s@@ zJYx2{$6BQ^n*MrwtlN4|sOn5B4`gR7WTIt{So^l-Dr#3}NALYOdje~n(0V*e9V=uj zqer&TnZ2!kb<@uoZbS4QXU~4~*97{^%gY^+ohY&+j(B0O!*^WPq`g8B<4k=Bjzb*x!&*`B)-8PA#LGelN^t=Rdq-yJmPaa&Raa;cJR zQ0wy;e>sy`m@_uoqd(UiAwY5#F0tk9=j;ivUp`XV=CtMRV~sP(f-N*&owB=?(Ib0r$oUf(wM^Y+U92Q^sJc3{J}Yh8 z0t+ubyy>s(vCe*3RE+1`zemoW|9f{p4^6#$T?wgZC8=#g09Mpg?%Dnz~1BI7+EuZX#X?0)yCoTJIEtl7)Y7+A+- zUH3kJ{_ouZt*nMEa_qsZWFd|p??hU~&u@+woBQf6`0~h;D~{tkxMu7%v-XI*OUyfW zj|oUWzq<;kjT%z1yz3sTK5jxXsta#=W`%6-_LW<}00&+0IeXXZzH+0!I)QoWeg0P3 zn^ZNoJaEuUC;Q-j#d(w~j$TpzEe{Oz;8yNGb`bKG9vgf61kh!izI>}Coo-c~`=GYF zbpFC|6WR8SbTz!UoxVkK!a8=W_|1K~xgti`;tOE+p21zc^s@zebq^SC zKh-fgWzTQl==LtV;`#}&4YS^*N!R5PYhm@+B0`*AVimi(G8*Y?=Q$J5 z{H-v$qz+Pg?(Zt)tYucDowyMVPG`Nj8)x3YsEQ`qsE%=5R@QAMTTtfLjDD_r_Q=gpqqZeHJh?5+Fp&T89P?M`&RTx*tXeSHGxeo2Wn zyLLbtb?v1jD(0@3iHcM`xiT&$YRxxdvLkj?aZ?z4Rt99+iXPXQVO!suKuuqh_soe9 zpF2nyv8q%JmF6PnF5D%nJAQljoq*Iz&6quV zF!!^b=mkqxvS*7&m11-ji#Rv%sZ8d{jU6*CyQ;Epa)BOCzNcficg6%ze>^X#Mh^9L zN=3hAk)y`nKu1@g`*>!JY-){6D{cB#Z1w1VR0y5ytC}6V-vpR-Zhb9ScOC1?&#%B1CmiGHDylh0we<55RxG-6RPPnf(l$!Q+AD%&?e zm2*{gNqeqe_cmiy(?2cQ#%=4Y2}nO{kcwRDsX8>{WCP46tMbahNxl0ehoj)B?kGi# zHmm#2z0D~U*pWMN+dg9gR?bRbt@=r!%DA#y-T+%-(jJ(VI=GTmvAH5K=Es65eO0*Y zXbD@DSuKCWZvWmBn5S;-j(ce@jO>&m0fuGrQ+ zC%_iW=TR4FicYx!R7N7V&-`s zcR|-#IYq`jDyFK*r*|g5j=IkGqc=O_N-~OY7jvW~tT@JZ;Wz_?xS?5|sj9pnrRXcva38Y>h;{Ex$w#UdI^%XtdfVryrsX0|} z9N$EESFuHPisiUgh?(K@u9rD?_Ld2tn6yWEyz7`!Lu@mxIlxJ6d4=RY#MjkCjS@rW zfe-Y2svBS1*=F>P+HXm6}@*W5!Gz9Rb-&*jIp^we!W zue{8=v)4~xo;+G!uL4M&>0yuek@D;wUi!Aj+Vqn@yQiJ_Zu6z?MI?E9&Gzm)ft+|v z-TrkNSZQ0u!YyqP$sV?;aew9HyLPmS-!Fn$Bp(d8x+Sy=T=p z;#(ZdG~$9pIzOtI@vSkzBf=8vDbUG_xJC( z8ILB=6_6U}a#ZuxII6Q}Y#V&!iQ|*M&&k*M%pJT>kIi!31f+1z->Q(ij_Gq0d^&UQ z*~dIb)aU%yA?VxBoWONF8+DHfpn~T=TleV0X4O`?gKY7atqf6PmAl71#Le5Mt$TFY z9M?}EC$GObY=QN^p6wW!+;m_QIdzwwJ^L2!P50w(*qQrJ0DWg2v@!QkC7IZF`qinQ zzD-!Npmoddetl;X=luR|mtB9$1gwcQ_YNrbJ@whIS!sB=gZ41J@g}!?S;vZrH=VK< z-{0%DclHFd1^w;4L!mmq@}Rg+bQUB0+6cY-U3%qL?%S9EFr8{s3=ZUOto;llDOEi0wea37z=jRhZ z51puz-mISV(vIY&m$( zKjy#?PnOXxKVvW|#wK)3;%8e7u7~lMgAC_0Cck?!0rW~`txRPzQ+E12uS`ccrjETr zSYzyGmm_=C=?F`YxrRyX^YIg48$MGl^Rt3PbSAd!{B>maR9CTjdQP4Z+*zHivZFal8)Y1$6B%>Qoa@LK-5c=i39uDDM~#m37ml4+pZYqudqsL_ zC%WRR92lQM9lb{ub3S|i@7`a^)D%ifbeeU%lq+;rl&9Dj?KsydKB9|d#Bh%h3o~ct zZFe^D@Aq>jU`4G{S8?19;Z_(U^-XYt#m_x(4cUx<^xfv}MCf8{kHA}b{hmAd-MuDI zs;3@kMy&gZb{!b2Dx5hIK`yg!%_l0skX8NmuFW`jeXBCQC+z!t<^;NOsZ?c9uv^{- z$FouzR}Lgwk$hxxFNh@$HgzZjtm8R%@vYpYs`m356F@<$llLO)6RYn;)p#ppgY0o~ znJt8$WCEo-l~<3VoM19a&gkNY`GaJ?UStB+#Tucdbks#FR*z0Rly)sD6Omt@AIGRC zqVw1jet!2`al7i6jM(~;{eFcBXe&@=rC3+np0r(83N>>p;x6{*O<6P3)%ReEWMJwi zY@qk~Iur0dppy1t<#kn$DqSy*?mLEcsna^gJzyApR~b>5{k+};x^`CXXuAqAqa1M_ z2IaJc-o?=p>s;NtIWN|gPhWQs>h)&7Z&VXNVe92xSX)$NZQ1!`4t(W}>z2K-r>nrM zPetp^&)v4tuR8&4jWtWvl=B9VTcOvwcZRBiLm5Sg+EaGqBwwfOd=sPA9bR|(`(`zP zR4f%On;+^X+SrU*_f?I1xn{J==U4ci$J2=is{H(wx1ZOZKyFOx=w0d2R382NiD!nf zCjCOq6+|o3v#woP?kR@Xp8dX^CV*7gxg=VW!?o_NJoQGRKG=^f`z#$~m7jUCnJcbWdaXH5Wor5zr7Am1p* z6`QNrr(To1*ki33-4&L^66+|cx2nI_1gxSh)aI-V`U*9^l?6q%*O(2oaE|x7*)viM zou|6*=XadItTYjwU1zp{=y+-iiLMwbru>ZRaeEyp*3R=gPJZ866IkhKb#0AXVBee4 zxkdz=*HLryI8u!Kl4Wc8J5RtnhNko8kkNTL?`$$>wCwa@?{N^Epz{2k=f3aG1f=L% zegDNFuYK@V5I2(T>X^*;j%IMYTZs^>B7DIHY2#-}mnmNbU1)6`JQh%=TDO2r4r-M)8d$;yunBT>b9b`w0_3`L1{E!5r~+e3s8z z+qTS9v5ectQuZgzdVj-u0&D|&z{%g8e&)Wg8^l~mMBI*-#gD#q8j(@i>s#;W&zb;Q zqyMFiD9ojN=CC>8H-j?u2E$pA{k+Qr*o;&^H%;++cLW|8`FOCx1X}U#fzkOcbKl>Y z6VP7dj^$R69b@wzfn*O8K`b$yF>kc(cbh=&h4+T7Q6%5OXGAtUoMW_nVm{w(+WULg z6JTrVWIHk@TbVguk<6ui#JIl4j=u8*ym7ff-macs#f^|K(c>?1W;cJK3 zB%=K7(>ZS(xXV3vc28iOfH#XBBEk-G5;snkwsGX${+__?6Bu`Fy?cA(ZlCO~xNQRU zw@urZJ9rz%M(+vSJ^}4rZe2!h=i3!~0@qJ~zk2-rt4jTMUPi9x+sHkEYbP-7nf$8G zzku4qYdJS=PvDvf_^+F{u(nQ*W8Ot_``i<_#{~M0@$WFq`!67q*ysHxpxxtdTY37g zK6hd}jd5;Udjj8?fVVHVtn6fECymMMw)X_SHi7(?)qmZHCZ{%%cV@P|C-Bt?@b@hL zzK#F-!p-ifhUh-`1im@}{?4(5+C1&qn$tVD&hO}+!1WVg?{cfy$zzt!5y!PVvnSvQ zut_?-jYe#1PvEQxc;964{~u@d+q`=MIRXCFW$)O+#B6&{;JgXUe*w?ywVC$>asvFd i0jZqyKVkGfpG%0f%`dk0{;&KboHnJ literal 0 HcmV?d00001 diff --git a/tests/circuitpython-manual/bitmaptools/dither.py b/tests/circuitpython-manual/bitmaptools/dither.py new file mode 100644 index 0000000000..13d0a5be6d --- /dev/null +++ b/tests/circuitpython-manual/bitmaptools/dither.py @@ -0,0 +1,18 @@ +import bitmaptools +import displayio +import _bmp16 + +if "/" in __file__: + here = __file__.rsplit("/", 1)[0] +else: + here = "." + +c = displayio.Colorspace.BGR565 + +b1 = _bmp16.loadbmp16(here + "/minerva16.bmp") +b3 = displayio.Bitmap(320, 240, 65536) + +bitmaptools.dither(b3, b1, c) +_bmp16.writebmp16(f"dither-atkinson.bmp", b3) +bitmaptools.dither(b3, b1, c, bitmaptools.DitherAlgorithm.FloydStenberg) +_bmp16.writebmp16(f"dither-floydstenberg.bmp", b3) diff --git a/tests/circuitpython-manual/bitmaptools/ellipse.bmp b/tests/circuitpython-manual/bitmaptools/ellipse.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c048cb17c73cdafcd4e35fe230dc834210de2003 GIT binary patch literal 8330 zcmc&(F>3-b6i(ZrYex~GLicXE3B{#Tmx3T&Z*&y5x;Z%ua)@q@9d8ovC%7pna&~ic zDO?93HEQrU?wRBz<(-_#y}b9nqX7``OyE>y!Ap;wFcX0*YD|LpE&!y(N06P z7RzdCiZ1w9Q!V96rosk;E@TQDrE(31`WTB}A8V*ru zC0@ELc_Hcztese2^ai&V`POq^TEa)IfpSO6+m_`HIK{z+_RbbHDc?5Ui`}d}*$4AA zXz%$XwkXZLU~C-mB=OSqxCg#ypdo0ab=W)y4FCopkDSgv(Q~tC5Fc|vRx*pl1~W(x zmOhvPrp_eiLo5y?mk%?60HXf|>A}+dF90f&oEu_sAi3Ny69^!hpLZZ!N$(qZ0C#(j z#5dc6=GJka#Fgc|379&Q+;ZyuL?2p49?(tXCC4txl9xG9fS8nYRR^Fl$*wSydNP3k zBDMXg=O6X@qxL`4{+D|Hq27O~;}7cii#qxJ{B{}`CV+DuKnNl=RfzwT{8dx literal 0 HcmV?d00001 diff --git a/tests/circuitpython-manual/minerva16.bmp b/tests/circuitpython-manual/bitmaptools/minerva16.bmp similarity index 100% rename from tests/circuitpython-manual/minerva16.bmp rename to tests/circuitpython-manual/bitmaptools/minerva16.bmp diff --git a/tests/circuitpython-manual/dither.py b/tests/circuitpython-manual/dither.py deleted file mode 100644 index 49a63c458c..0000000000 --- a/tests/circuitpython-manual/dither.py +++ /dev/null @@ -1,31 +0,0 @@ -import bitmaptools -import displayio -import _bmp16 - -if "/" in __file__: - here = __file__.rsplit("/", 1)[0] -else: - here = "." - -c = displayio.Colorspace.BGR565 - -b1 = _bmp16.loadbmp16(here + "/minerva16.bmp") -b3 = displayio.Bitmap(320, 240, 65536) - -for i in ( - 0, - 1 / 64, - 3 / 64, - 3 / 32, - 3 / 16, - 0.5, - 1 - 3 / 16, - 1 - 3 / 32, - 1 - 3 / 64, - 1 - 1 / 64, - 1, -): - bitmaptools.dither(b3, b1, c) - _bmp16.writebmp16(f"dither-atkinson.bmp", b3) - bitmaptools.dither(b3, b1, c, bitmaptools.DitherAlgorithm.FloydStenberg) - _bmp16.writebmp16(f"dither-floydstenberg.bmp", b3)