diff --git a/.gitignore b/.gitignore index bac5577ee..86ceb1e0c 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,9 @@ kandinsky/fonts/rasterizer kandinsky/src/font.c kandinsky/src/font.h +# No PicView generated files +apps/picview/image.raw +apps/picview/image.c + # Quiz output quiz/src/symbols.c diff --git a/apps/Makefile b/apps/Makefile index c781b4af3..7561b2c76 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,4 +1,5 @@ include apps/graph/Makefile +#include apps/picview/Makefile app_objs += $(addprefix apps/,\ main.o\ diff --git a/apps/main.cpp b/apps/main.cpp index 07b779451..f00a057ae 100644 --- a/apps/main.cpp +++ b/apps/main.cpp @@ -1,6 +1,15 @@ #include "graph/graph_app.h" +#define USE_PIC_VIEW_APP 0 +#if USE_PIC_VIEW_APP +#include "picview/picview_app.h" +#endif + void ion_app() { +#if USE_PIC_VIEW_APP + PicViewApp picViewApp = PicViewApp(); + picViewApp.run(); +#endif GraphApp graphApp = GraphApp(); graphApp.run(); } diff --git a/apps/picview/Makefile b/apps/picview/Makefile new file mode 100644 index 000000000..f08668d38 --- /dev/null +++ b/apps/picview/Makefile @@ -0,0 +1,18 @@ +app_objs += $(addprefix apps/picview/,\ + pic_view.o\ + picview_app.o\ + picview_controller.o\ +) + +apps/picview/pic_view.cpp: apps/picview/image.c + +apps/picview/image.c: apps/picview/image.raw + @echo "RAW2C $@" + @echo "const /* Needed otherwise the image will eat up all RAM */" > $@ + @xxd -i $^ >> $@ + +apps/picview/image.raw: apps/picview/image.png + @echo "PNG2RAW $@" + @ffmpeg -loglevel panic -vcodec png -i $^ -vcodec rawvideo -f rawvideo -pix_fmt rgb565 $@ + +products += $(addprefix apps/picview/, image.raw image.c) diff --git a/apps/picview/pic_view.cpp b/apps/picview/pic_view.cpp new file mode 100644 index 000000000..63622f46d --- /dev/null +++ b/apps/picview/pic_view.cpp @@ -0,0 +1,20 @@ +#include "pic_view.h" +#include + +PicView::PicView() : + ChildlessView() { +} + +#include "image.c" + +void PicView::drawRect(KDContext * ctx, KDRect rect) const { + KDColor * pixels = (KDColor *)apps_picview_image_raw; + KDCoordinate width = bounds().width(); + KDCoordinate height = bounds().height(); + assert(apps_picview_image_raw_len == width*height*sizeof(KDColor)); + for (int j=0; jsetPixel(KDPoint(i,j), pixels[j*width+i]); + } + } +} diff --git a/apps/picview/pic_view.h b/apps/picview/pic_view.h new file mode 100644 index 000000000..2aaa7b2d7 --- /dev/null +++ b/apps/picview/pic_view.h @@ -0,0 +1,12 @@ +#ifndef PICVIEW_PIC_VIEW_H +#define PICVIEW_PIC_VIEW_H + +#include + +class PicView : public ChildlessView { +public: + PicView(); + void drawRect(KDContext * ctx, KDRect rect) const override; +}; + +#endif diff --git a/apps/picview/picview_app.cpp b/apps/picview/picview_app.cpp new file mode 100644 index 000000000..9b28543c2 --- /dev/null +++ b/apps/picview/picview_app.cpp @@ -0,0 +1,11 @@ +#include "picview_app.h" + +PicViewApp::PicViewApp() : + App(), + m_picViewController(PicViewController()) +{ +} + +ViewController * PicViewApp::rootViewController() { + return &m_picViewController; +} diff --git a/apps/picview/picview_app.h b/apps/picview/picview_app.h new file mode 100644 index 000000000..e5e72725b --- /dev/null +++ b/apps/picview/picview_app.h @@ -0,0 +1,16 @@ +#ifndef PICVIEW_PICVIEW_APP_H +#define PICVIEW_PICVIEW_APP_H + +#include +#include "picview_controller.h" + +class PicViewApp : public App { +public: + PicViewApp(); +protected: + ViewController * rootViewController() override; +private: + PicViewController m_picViewController; +}; + +#endif diff --git a/apps/picview/picview_controller.cpp b/apps/picview/picview_controller.cpp new file mode 100644 index 000000000..5da1dc835 --- /dev/null +++ b/apps/picview/picview_controller.cpp @@ -0,0 +1,18 @@ +#include "picview_controller.h" + +PicViewController::PicViewController() : + ViewController(), + m_view(PicView()) +{ +} + +View * PicViewController::view() { + return &m_view; +} + +/* + +const char * PicViewController::title() const { + return "PicView"; +} +*/ diff --git a/apps/picview/picview_controller.h b/apps/picview/picview_controller.h new file mode 100644 index 000000000..fb70d093f --- /dev/null +++ b/apps/picview/picview_controller.h @@ -0,0 +1,15 @@ +#ifndef PICVIEW_PICVIEW_CONTROLLER_H +#define PICVIEW_PICVIEW_CONTROLLER_H + +#include +#include "pic_view.h" + +class PicViewController : public ViewController { +public: + PicViewController(); + View * view() override; +private: + PicView m_view; +}; + +#endif