Skip to content

Commit af33129

Browse files
aykevldeadprogram
authored andcommitted
ili9341: st7735: st7789: add DrawBitmap method
This adds a new DrawBitmap method, which is meant to replace DrawRGBBitmap8.
1 parent 100aadf commit af33129

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

ili9341/ili9341.go

+15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"tinygo.org/x/drivers"
10+
"tinygo.org/x/drivers/pixel"
1011
)
1112

1213
type Config struct {
@@ -31,6 +32,9 @@ type Device struct {
3132
rd machine.Pin
3233
}
3334

35+
// Image buffer type used in the ili9341.
36+
type Image = pixel.Image[pixel.RGB565BE]
37+
3438
var cmdBuf [6]byte
3539

3640
var initCmd = []byte{
@@ -173,6 +177,8 @@ func (d *Device) EnableTEOutput(on bool) {
173177
}
174178

175179
// DrawRGBBitmap copies an RGB bitmap to the internal buffer at given coordinates
180+
//
181+
// Deprecated: use DrawBitmap instead.
176182
func (d *Device) DrawRGBBitmap(x, y int16, data []uint16, w, h int16) error {
177183
k, i := d.Size()
178184
if x < 0 || y < 0 || w <= 0 || h <= 0 ||
@@ -187,6 +193,8 @@ func (d *Device) DrawRGBBitmap(x, y int16, data []uint16, w, h int16) error {
187193
}
188194

189195
// DrawRGBBitmap8 copies an RGB bitmap to the internal buffer at given coordinates
196+
//
197+
// Deprecated: use DrawBitmap instead.
190198
func (d *Device) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error {
191199
k, i := d.Size()
192200
if x < 0 || y < 0 || w <= 0 || h <= 0 ||
@@ -200,6 +208,13 @@ func (d *Device) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error {
200208
return nil
201209
}
202210

211+
// DrawBitmap copies the bitmap to the internal buffer on the screen at the
212+
// given coordinates. It returns once the image data has been sent completely.
213+
func (d *Device) DrawBitmap(x, y int16, bitmap Image) error {
214+
width, height := bitmap.Size()
215+
return d.DrawRGBBitmap8(x, y, bitmap.RawBuffer(), int16(width), int16(height))
216+
}
217+
203218
// FillRectangle fills a rectangle at given coordinates with a color
204219
func (d *Device) FillRectangle(x, y, width, height int16, c color.RGBA) error {
205220
k, i := d.Size()

st7735/st7735.go

+9
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@ func (d *DeviceOf[T]) FillRectangle(x, y, width, height int16, c color.RGBA) err
305305
}
306306

307307
// DrawRGBBitmap8 copies an RGB bitmap to the internal buffer at given coordinates
308+
//
309+
// Deprecated: use DrawBitmap instead.
308310
func (d *DeviceOf[T]) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error {
309311
k, i := d.Size()
310312
if x < 0 || y < 0 || w <= 0 || h <= 0 ||
@@ -316,6 +318,13 @@ func (d *DeviceOf[T]) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error
316318
return nil
317319
}
318320

321+
// DrawBitmap copies the bitmap to the internal buffer on the screen at the
322+
// given coordinates. It returns once the image data has been sent completely.
323+
func (d *DeviceOf[T]) DrawBitmap(x, y int16, bitmap pixel.Image[T]) error {
324+
width, height := bitmap.Size()
325+
return d.DrawRGBBitmap8(x, y, bitmap.RawBuffer(), int16(width), int16(height))
326+
}
327+
319328
// FillRectangle fills a rectangle at a given coordinates with a buffer
320329
func (d *DeviceOf[T]) FillRectangleWithBuffer(x, y, width, height int16, buffer []color.RGBA) error {
321330
k, l := d.Size()

st7789/st7789.go

+9
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,8 @@ func (d *DeviceOf[T]) fillRectangle(x, y, width, height int16, c color.RGBA) err
382382
}
383383

384384
// DrawRGBBitmap8 copies an RGB bitmap to the internal buffer at given coordinates
385+
//
386+
// Deprecated: use DrawBitmap instead.
385387
func (d *DeviceOf[T]) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error {
386388
k, i := d.Size()
387389
if x < 0 || y < 0 || w <= 0 || h <= 0 ||
@@ -395,6 +397,13 @@ func (d *DeviceOf[T]) DrawRGBBitmap8(x, y int16, data []uint8, w, h int16) error
395397
return nil
396398
}
397399

400+
// DrawBitmap copies the bitmap to the internal buffer on the screen at the
401+
// given coordinates. It returns once the image data has been sent completely.
402+
func (d *DeviceOf[T]) DrawBitmap(x, y int16, bitmap pixel.Image[T]) error {
403+
width, height := bitmap.Size()
404+
return d.DrawRGBBitmap8(x, y, bitmap.RawBuffer(), int16(width), int16(height))
405+
}
406+
398407
// FillRectangleWithBuffer fills buffer with a rectangle at a given coordinates.
399408
func (d *DeviceOf[T]) FillRectangleWithBuffer(x, y, width, height int16, buffer []color.RGBA) error {
400409
i, j := d.Size()

0 commit comments

Comments
 (0)