From 8df097d72a476a13208922a8f2ed683cf98d262c Mon Sep 17 00:00:00 2001 From: foamyguy Date: Thu, 9 Jun 2022 21:12:26 -0500 Subject: [PATCH 1/2] bitmaptools rotate example --- bitmaptools/Billie.bmp | Bin 0 -> 4360 bytes bitmaptools/Billie.bmp.license | 3 ++ bitmaptools/bitmaptools_rotate_bmp.py | 49 ++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 bitmaptools/Billie.bmp create mode 100644 bitmaptools/Billie.bmp.license create mode 100644 bitmaptools/bitmaptools_rotate_bmp.py diff --git a/bitmaptools/Billie.bmp b/bitmaptools/Billie.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c174c210e3a6557a9d152e0e01ab60ad052c4bef GIT binary patch literal 4360 zcma)9O>ZMv6}?HN<76gw{1Jb}E`L;&Q)QQ9lkTo6mmS9=SoMMhFt8aGhz2xBvjB}? zfrJo9NC*ju$3J;c5^eF0NPurcT%X6aBL_PEg@|RDa$j?9J$lt%z zkVl_6k-vSVAb+6zyE4Y-hKU8{`sx4y!lF1e(~kDyqq-Tr(ges z{PJNzzW3R_{PwjYdFLA?`N^w8`Rlif^4c)((m`B)9J|R>8aG~bvc3U zrBX?bj*cXk%ZX)Kva_=zQ340dqj<(HN!TrtBxN_7&Cy+^>4F`u2>+IG6fe(rckd_3 zQsgQz-E21FU7Dus_!x=OD4L04$p`iuw2O?ESUj_gqG)Nbyfd^*L%Uql5{ovAA`p?6 z18I`5o6lx6GoxM14c5@Eh|OrPzz$mN(v)4AVUsxGL%>FcmVBw9ozGG_V3E$*$z>G9 zc=QrjJaP%Q@or5!GqmX(gR)AZh(w8ESFCCXE(FBwECZMRaGpo6VFDLB2@~ENNqdHME-`-@kV+ z+60-rYwf^>Xj?nUz1`i9ZE42@`Bv=^dy96`E$uKiFq+u4BspYgZ`Tg7&<=x~#n@;^ z^}vU3Xy?9SRYDmy3o_<*pA7H?I|O+}-Ym##?L;@VV}fk7qgc4~e`|-dmkA}Q_VOhN zGP<>PR+)BS0ktzz?GVdY-_Q<;78+xfB*RK;MeV&AWJr=h-qOyM(asflxrB8k!v<)F z#$RiPcgajwvcXc47(}~GJD^2~u8bbmK_*rc4)TuC&Q^j@-gSZ?_BribCkSF!>jVKT ziI8`m*A5Z{v6}<|-2c(eoY-fzqX~j~$h1SXFz*=bmUgg!5RFVbT*(Y869lo(XeW*t zR{8;a*V?%>dZ2dZo4gaNT7ZQK8SU-bxk@6XHQKpO5KK6GM!N^NZ06y z-O^4RQ#-NdsEqas6XPJU=u9+VHfU-5mUc+XL4(a!vSKL{lXtKzw~C8mpVLnKjCL55 zg~oVY1z?lpQ0P8N%K`gQaEeiEzIa?Lmhs72rGQq!4Zq}hgIbF!OWxyhx!h`D|4>Ea zze>ffR4PSW1zeS4A)n80ut1)*PEJo;r|IC4X0_78r&1}kD{Z0+1>i->88U-q)dTP<))Q+6I`L^wY?tZ z1~(APoEoPHhhhVNIGRi+)9J+pHcivXBGr*5 zTWwfUdAPt^KMRK81h5Qfz!w0wOKQV{Sj-UEY7pT4(~BLYzMQtIDYOFfD;4&Dr5~{0 z0k(#T>CDzRK45$o8eZfHWO`tWzyb`Xs?*>u?X?>#R)dWF4tay{wsw9Vh9hDZq~(4G z*w*O?Iv9<7-}czr_;~$(x8r&02csQqJ5@VyFrZi%fI~r$j@|A9UNW&DEov6D(`vcy z$g^!Oi-GGpTpBjs(8n8YXa_Zm*!rm5X>>d=`|f~iXxR4p80mZJU$~3B)DGe{>NFaS zKES?%6$ilsi;)i8OHHbFkPu;SE%5MzfOwQG%c1AtX^a?N)ebaF-devQ_;kCR9&7+@ zw}C3s=z|z*XuaQ28-SHYBMgR|pX2*&FYHKz*aFt(P3_b|8!rSl9Qo=7f7l&k1aHb> zO#LFr;H`xrIHWVi+_35gZm%7VI~Y;yMmr1Yq0V3M!z5&Gz+(5?qwzTc+nLY-S-C)2yR21lI?{U2X0f0NYwfI(0~Ri%RTco2008mFR;}cZ_N*7KHrk1z zeMq=`a(Z@3D3#8P-fW_H6=5xCv%G@@5y6Ulxm-iN8o*!^;wo87upq}x?R=delGUMQ z9TjWU8p<22MM-JG0QvwEJJchF<{fh>>Sj$6XiiZff1+ya3&7YM~w7m|%WZzEUBW zb(!^;NI=&o7u61y^D>SPa(fnvG>bioJgP8@dk)a+{SJ@2*nP&RG5dS4`UrSz1auo< z?d$%~oO)H0nBg))=@L2I-lXJW9;SKfg>W+M@YD-h9$Dgp{oI{BYwu2O|M11_Q!joO F`7dHL7WDuC literal 0 HcmV?d00001 diff --git a/bitmaptools/Billie.bmp.license b/bitmaptools/Billie.bmp.license new file mode 100644 index 0000000..d1064fb --- /dev/null +++ b/bitmaptools/Billie.bmp.license @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: Copyright (c) 2018 Adafruit Industries +# +# SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/bitmaptools/bitmaptools_rotate_bmp.py b/bitmaptools/bitmaptools_rotate_bmp.py new file mode 100644 index 0000000..d2bf17f --- /dev/null +++ b/bitmaptools/bitmaptools_rotate_bmp.py @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: Copyright (c) 2022 Tim Cocks +# +# SPDX-License-Identifier: MIT +""" +Use bitmaptools.rotozoom() to rotate a bmp image. +""" +import math +import bitmaptools +import board +import displayio +import adafruit_imageload + +# use the builtin display +display = board.DISPLAY + +# load bmp image into a Bitmap and Palette objects +source_bitmap, source_palette = adafruit_imageload.load("Billie.bmp", + bitmap=displayio.Bitmap, + palette=displayio.Palette) +# Create a TileGrid to show the bitmap +source_tile_grid = displayio.TileGrid(source_bitmap, pixel_shader=source_palette) + +# Create destination Bitmap object to hold the rotated image +dest_bitmap = displayio.Bitmap(source_bitmap.height, source_bitmap.height, len(source_palette)) + +# Create a TileGrid to show the destination Bitmap with the rotated image in it +dest_tile_grid = displayio.TileGrid(dest_bitmap, pixel_shader=source_palette) + +# take from source bitmap, put into destination bitmap. +# default values for x,y locations and clipping so whole image is used +# angle argument accepts radians. You can use math module to convert from degrees +bitmaptools.rotozoom(dest_bitmap, source_bitmap, angle=math.radians(270)) + +# move the rotated image tilegrid over to the right some +dest_tile_grid.x = 100 + +# Create a Group to show the TileGrids +group = displayio.Group() + +# Add the TileGrids to the Group +group.append(source_tile_grid) +group.append(dest_tile_grid) + +# Add the Group to the Display +display.show(group) + +# Loop forever so you can enjoy your image +while True: + pass From 9fbf780632e93abea47e1375d9bf8474b3580b81 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Thu, 9 Jun 2022 21:17:46 -0500 Subject: [PATCH 2/2] bitmaptools rotate animated example --- .../bitmaptools_rotate_bmp_animated.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 bitmaptools/bitmaptools_rotate_bmp_animated.py diff --git a/bitmaptools/bitmaptools_rotate_bmp_animated.py b/bitmaptools/bitmaptools_rotate_bmp_animated.py new file mode 100644 index 0000000..bfa4521 --- /dev/null +++ b/bitmaptools/bitmaptools_rotate_bmp_animated.py @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: Copyright (c) 2022 Tim Cocks +# +# SPDX-License-Identifier: MIT +""" +Use bitmaptools.rotozoom() to rotate a bmp image in a circle animated. +""" +import math +import bitmaptools +import board +import displayio +import adafruit_imageload + +# use the builtin display +display = board.DISPLAY + +# load bmp image into a Bitmap and Palette objects +source_bitmap, source_palette = adafruit_imageload.load("Billie.bmp", + bitmap=displayio.Bitmap, + palette=displayio.Palette) +# Create a TileGrid to show the bitmap +source_tile_grid = displayio.TileGrid(source_bitmap, pixel_shader=source_palette) + +# Create destination Bitmap object to hold the rotated image +dest_bitmap = displayio.Bitmap(source_bitmap.height, source_bitmap.height, len(source_palette)) + +# Create a TileGrid to show the destination Bitmap with the rotated image in it +dest_tile_grid = displayio.TileGrid(dest_bitmap, pixel_shader=source_palette) + +# move the rotated image tilegrid over to the right some +dest_tile_grid.x = 100 + +# Create a Group to show the TileGrids +group = displayio.Group() + +# Add the TileGrids to the Group +group.append(source_tile_grid) +group.append(dest_tile_grid) + +# Add the Group to the Display +display.show(group) + +# Loop forever so you can enjoy your image +while True: + # loop over all the degrees from 0-360 + for angle_deg in range(360): + # erase previous frame + dest_bitmap.fill(0) + + # take from source bitmap, put into destination bitmap. + # default values for x,y locations and clipping so whole image is used + # angle argument accepts radians. You can use math module to convert from degrees + bitmaptools.rotozoom(dest_bitmap, source_bitmap, angle=math.radians(angle_deg))