diff --git a/common/app/app.c b/common/app/app.c index 75294ff..229d3c4 100644 --- a/common/app/app.c +++ b/common/app/app.c @@ -17,6 +17,7 @@ void app_init() { tft_draw_rectangle(40,210,60,235,BLUE); tft_fill_rectangle(100,215,200,225,GREEN); tft_draw_line(10,215,310,225,RGB(0xFF,0,0xFF)); + tft_draw_circle(10,10,100, RED); } diff --git a/common/lowlevel/ll_tft.h b/common/lowlevel/ll_tft.h index e629020..8815d63 100644 --- a/common/lowlevel/ll_tft.h +++ b/common/lowlevel/ll_tft.h @@ -8,4 +8,4 @@ void ll_tft_draw_pixel(uint16_t x,uint16_t y,uint16_t color); void ll_tft_draw_rectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_t color); void ll_tft_fill_rectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_t color); void ll_tft_draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t *dat); - +void ll_tft_draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color); diff --git a/common/tft/tft.c b/common/tft/tft.c index f74b366..2604be0 100644 --- a/common/tft/tft.c +++ b/common/tft/tft.c @@ -33,3 +33,7 @@ void tft_fill_rectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_ void tft_draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t* dat) { ll_tft_draw_bitmap_unscaled(x,y,width,height,dat); } + +void tft_draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) { + ll_tft_draw_circle(x, y, r, color); +} diff --git a/common/tft/tft.h b/common/tft/tft.h index 2667613..ef25c58 100644 --- a/common/tft/tft.h +++ b/common/tft/tft.h @@ -18,3 +18,4 @@ void tft_draw_pixel(uint16_t x,uint16_t y,uint16_t color); void tft_draw_rectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_t color); void tft_fill_rectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_t color); void tft_draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t* dat); +void tft_draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color); diff --git a/discovery/src/ll_tft.c b/discovery/src/ll_tft.c index 4254f06..05bed62 100644 --- a/discovery/src/ll_tft.c +++ b/discovery/src/ll_tft.c @@ -28,6 +28,10 @@ void ll_tft_draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_ } +void ll_tft_draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) { + +} + diff --git a/emulator/qt/ll_tft.cpp b/emulator/qt/ll_tft.cpp index 861489a..8ba3ed3 100644 --- a/emulator/qt/ll_tft.cpp +++ b/emulator/qt/ll_tft.cpp @@ -5,7 +5,6 @@ extern "C" { #include "ll_tft.h" } - MainWindow* mainwindow; bool ll_tft_init() { @@ -20,7 +19,6 @@ void ll_tft_draw_line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16 mainwindow->draw_line(x1,y1,x2,y2,color); } - void ll_tft_clear(uint16_t color) { mainwindow->clear(color); } @@ -41,4 +39,8 @@ void ll_tft_draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_ mainwindow->draw_bitmap_unscaled(x,y,width,height,dat); } +void ll_tft_draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) { + mainwindow->draw_circle(x,y,r,color); +} + diff --git a/emulator/qt/mainwindow.cpp b/emulator/qt/mainwindow.cpp index 2dc85ce..711c58e 100644 --- a/emulator/qt/mainwindow.cpp +++ b/emulator/qt/mainwindow.cpp @@ -26,11 +26,7 @@ QRgb QRgbFromRGB565(uint16_t color) { } -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - image(DISPLAY_WIDTH,DISPLAY_HEIGHT,QImage::Format_RGB16), - ui(new Ui::MainWindow) -{ +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), image(DISPLAY_WIDTH,DISPLAY_HEIGHT, QImage::Format_RGB16), ui(new Ui::MainWindow){ ui->setupUi(this); image.fill(Qt::black); } @@ -99,6 +95,16 @@ void MainWindow::draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, ui update(); } +void MainWindow::draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) +{ + //render_mutex.lock(); + QPainter painter(&(image)); + painter.setPen(QColorFromRGB565(color)); + painter.drawEllipse(QPoint(x,y), r, r); + //render_mutex.unlock(); + update(); +} + void MainWindow::paintEvent(QPaintEvent *) { //render_mutex.lock(); diff --git a/emulator/qt/mainwindow.h b/emulator/qt/mainwindow.h index ce851e5..2e903dc 100644 --- a/emulator/qt/mainwindow.h +++ b/emulator/qt/mainwindow.h @@ -21,6 +21,7 @@ public: void draw_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); void fill_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); void draw_bitmap_unscaled(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t *dat); + void draw_circle(uint16_t x, uint16_t y, uint16_t r, uint16_t color); protected: