Moved graphics primitives into own trait
This commit is contained in:
parent
307b3d6e72
commit
eb74151b3b
|
@ -25,6 +25,7 @@ mod max6675;
|
||||||
mod st7735;
|
mod st7735;
|
||||||
|
|
||||||
use printer::UsartPrinter;
|
use printer::UsartPrinter;
|
||||||
|
use st7735::gfx::PrimitveGFX;
|
||||||
|
|
||||||
|
|
||||||
fn configure_clocks(rcc: &mut rcc::RCC) {
|
fn configure_clocks(rcc: &mut rcc::RCC) {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
pub trait PrimitveGFX {
|
||||||
|
type ColorType;
|
||||||
|
type CoordinateType;
|
||||||
|
|
||||||
|
|
||||||
|
fn draw_pixel(&mut self,
|
||||||
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
color: Self::ColorType);
|
||||||
|
|
||||||
|
fn fill_rect(&mut self,
|
||||||
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
w: Self::CoordinateType,
|
||||||
|
h: Self::CoordinateType,
|
||||||
|
color: Self::ColorType);
|
||||||
|
|
||||||
|
|
||||||
|
fn draw_fast_vline(&mut self,
|
||||||
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
h: Self::CoordinateType,
|
||||||
|
color: Self::ColorType);
|
||||||
|
|
||||||
|
fn draw_fast_hline(&mut self,
|
||||||
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
w: Self::CoordinateType,
|
||||||
|
color: Self::ColorType);
|
||||||
|
}
|
|
@ -7,9 +7,11 @@ use systick::delay_ms;
|
||||||
|
|
||||||
mod commands;
|
mod commands;
|
||||||
mod init;
|
mod init;
|
||||||
|
pub mod gfx;
|
||||||
|
|
||||||
use st7735::commands::*;
|
use st7735::commands::*;
|
||||||
|
|
||||||
|
|
||||||
const DEFAULT_WIDTH : u8 = 128;
|
const DEFAULT_WIDTH : u8 = 128;
|
||||||
// for 1.44" display
|
// for 1.44" display
|
||||||
const DEFAULT_HEIGHT_144 : u8 = 128;
|
const DEFAULT_HEIGHT_144 : u8 = 128;
|
||||||
|
@ -415,7 +417,23 @@ impl<SPIAddr, GPIOAddr> St7735IO<SPIAddr, GPIOAddr>
|
||||||
self.write_command(&Command::MADCTL(param));
|
self.write_command(&Command::MADCTL(param));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn draw_pixel(&mut self, x : u8, y : u8, color : u16) {
|
|
||||||
|
pub fn done(mut self) -> (St7735, PeripheralRef<spi::SPI, SPIAddr>, PeripheralRef<gpio::GPIO, GPIOAddr>) {
|
||||||
|
self.set_cs();
|
||||||
|
self.spi.set_enabled(false);
|
||||||
|
(self.st7735, self.spi, self.gpio)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl<SPIAddr, GPIOAddr> gfx::PrimitveGFX for St7735IO<SPIAddr, GPIOAddr>
|
||||||
|
where SPIAddr: Location,
|
||||||
|
GPIOAddr: Location {
|
||||||
|
type ColorType = u16;
|
||||||
|
type CoordinateType = u8;
|
||||||
|
|
||||||
|
fn draw_pixel(&mut self, x: Self::CoordinateType, y: Self::CoordinateType,
|
||||||
|
color: Self::ColorType) {
|
||||||
if x >= self.st7735.width || y >= self.st7735.height {
|
if x >= self.st7735.width || y >= self.st7735.height {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -430,7 +448,9 @@ impl<SPIAddr, GPIOAddr> St7735IO<SPIAddr, GPIOAddr>
|
||||||
self.set_cs();
|
self.set_cs();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fill_rect(&mut self, x : u8, y : u8, w : u8, h : u8, color: u16) {
|
fn fill_rect(&mut self, x: Self::CoordinateType, y: Self::CoordinateType,
|
||||||
|
w: Self::CoordinateType, h: Self::CoordinateType,
|
||||||
|
color: Self::ColorType) {
|
||||||
|
|
||||||
if x >= self.st7735.width || y >= self.st7735.height {
|
if x >= self.st7735.width || y >= self.st7735.height {
|
||||||
return;
|
return;
|
||||||
|
@ -464,17 +484,20 @@ impl<SPIAddr, GPIOAddr> St7735IO<SPIAddr, GPIOAddr>
|
||||||
self.set_cs();
|
self.set_cs();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn draw_fast_vline(&mut self, x : u8, y : u8, h : u8, color : u16) {
|
fn draw_fast_vline(&mut self,
|
||||||
self.fill_rect(x, y, 1, h, color);
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
h: Self::CoordinateType,
|
||||||
|
color: Self::ColorType) {
|
||||||
|
self.fill_rect(x, y, 1, h, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn draw_fast_hline(&mut self, x : u8, y : u8, w : u8, color : u16) {
|
fn draw_fast_hline(&mut self,
|
||||||
self.fill_rect(x, y, w, 1, color);
|
x: Self::CoordinateType,
|
||||||
|
y: Self::CoordinateType,
|
||||||
|
w: Self::CoordinateType,
|
||||||
|
color: Self::ColorType) {
|
||||||
|
self.fill_rect(x, y, w, 1, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn done(mut self) -> (St7735, PeripheralRef<spi::SPI, SPIAddr>, PeripheralRef<gpio::GPIO, GPIOAddr>) {
|
|
||||||
self.set_cs();
|
|
||||||
self.spi.set_enabled(false);
|
|
||||||
(self.st7735, self.spi, self.gpio)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue