waveshare2in13v2: Simplify memory area configuration

Use Go's built-in "encoding/binary" package to encode the memory area
size and re-use the encoded positions for setting the counters.
pull/47/head
Michael Hanselmann 4 years ago committed by M-A
parent 0349dabcd3
commit 394037d235

@ -5,6 +5,7 @@
package waveshare2in13v2 package waveshare2in13v2
import ( import (
"encoding/binary"
"image" "image"
"image/draw" "image/draw"
@ -14,6 +15,13 @@ import (
// setMemoryArea configures the target drawing area (horizontal is in bytes, // setMemoryArea configures the target drawing area (horizontal is in bytes,
// vertical in pixels). // vertical in pixels).
func setMemoryArea(ctrl controller, area image.Rectangle) { func setMemoryArea(ctrl controller, area image.Rectangle) {
startX, endX := uint8(area.Min.X), uint8(area.Max.X-1)
startY, endY := uint16(area.Min.Y), uint16(area.Max.Y-1)
startEndY := [4]byte{}
binary.LittleEndian.PutUint16(startEndY[0:], startY)
binary.LittleEndian.PutUint16(startEndY[2:], endY)
ctrl.sendCommand(dataEntryModeSetting) ctrl.sendCommand(dataEntryModeSetting)
ctrl.sendData([]byte{ ctrl.sendData([]byte{
// Y increment, X increment; update address counter in X direction // Y increment, X increment; update address counter in X direction
@ -21,33 +29,16 @@ func setMemoryArea(ctrl controller, area image.Rectangle) {
}) })
ctrl.sendCommand(setRAMXAddressStartEndPosition) ctrl.sendCommand(setRAMXAddressStartEndPosition)
ctrl.sendData([]byte{ ctrl.sendData([]byte{startX, endX})
// Start
byte(area.Min.X),
// End
byte(area.Max.X - 1),
})
ctrl.sendCommand(setRAMYAddressStartEndPosition) ctrl.sendCommand(setRAMYAddressStartEndPosition)
ctrl.sendData([]byte{ ctrl.sendData(startEndY[:4])
// Start
byte(area.Min.Y % 0xFF),
byte(area.Min.Y / 0xFF),
// End
byte((area.Max.Y - 1) % 0xFF),
byte((area.Max.Y - 1) / 0xFF),
})
ctrl.sendCommand(setRAMXAddressCounter) ctrl.sendCommand(setRAMXAddressCounter)
ctrl.sendData([]byte{byte(area.Min.X)}) ctrl.sendData([]byte{startX})
ctrl.sendCommand(setRAMYAddressCounter) ctrl.sendCommand(setRAMYAddressCounter)
ctrl.sendData([]byte{ ctrl.sendData(startEndY[:2])
byte(area.Min.Y % 0xFF),
byte(area.Min.Y / 0xFF),
})
} }
type drawOpts struct { type drawOpts struct {

Loading…
Cancel
Save