Add a picture viewer

Change-Id: I35dd150f415119e80f7463515a70e2d9bd058a14
This commit is contained in:
Romain Goyet
2016-08-08 11:46:38 +02:00
parent ada53fed0d
commit 3cd4639f44
10 changed files with 124 additions and 0 deletions

4
.gitignore vendored
View File

@@ -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

View File

@@ -1,4 +1,5 @@
include apps/graph/Makefile
#include apps/picview/Makefile
app_objs += $(addprefix apps/,\
main.o\

View File

@@ -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();
}

18
apps/picview/Makefile Normal file
View File

@@ -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)

20
apps/picview/pic_view.cpp Normal file
View File

@@ -0,0 +1,20 @@
#include "pic_view.h"
#include <assert.h>
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; j<height; j++) {
for (int i=0; i<width; i++) {
ctx->setPixel(KDPoint(i,j), pixels[j*width+i]);
}
}
}

12
apps/picview/pic_view.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef PICVIEW_PIC_VIEW_H
#define PICVIEW_PIC_VIEW_H
#include <escher.h>
class PicView : public ChildlessView {
public:
PicView();
void drawRect(KDContext * ctx, KDRect rect) const override;
};
#endif

View File

@@ -0,0 +1,11 @@
#include "picview_app.h"
PicViewApp::PicViewApp() :
App(),
m_picViewController(PicViewController())
{
}
ViewController * PicViewApp::rootViewController() {
return &m_picViewController;
}

View File

@@ -0,0 +1,16 @@
#ifndef PICVIEW_PICVIEW_APP_H
#define PICVIEW_PICVIEW_APP_H
#include <escher.h>
#include "picview_controller.h"
class PicViewApp : public App {
public:
PicViewApp();
protected:
ViewController * rootViewController() override;
private:
PicViewController m_picViewController;
};
#endif

View File

@@ -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";
}
*/

View File

@@ -0,0 +1,15 @@
#ifndef PICVIEW_PICVIEW_CONTROLLER_H
#define PICVIEW_PICVIEW_CONTROLLER_H
#include <escher.h>
#include "pic_view.h"
class PicViewController : public ViewController {
public:
PicViewController();
View * view() override;
private:
PicView m_view;
};
#endif