mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
Proper drawing of expressions
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
SFLAGS += -Ikandinsky/include -Iplatform/stm32f429
|
||||
objs += $(addprefix kandinsky/src/, line.o text.o font.o rect.o)
|
||||
objs += $(addprefix kandinsky/src/, line.o text.o font.o rect.o referential.o)
|
||||
|
||||
FREETYPE_PATH := /usr/local/Cellar/freetype/2.5.5
|
||||
LIBPNG_PATH := /usr/local/Cellar/libpng/1.6.17
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <kandinsky/color.h>
|
||||
#include <kandinsky/line.h>
|
||||
#include <kandinsky/rect.h>
|
||||
#include <kandinsky/referential.h>
|
||||
#include <kandinsky/text.h>
|
||||
#include <kandinsky/types.h>
|
||||
|
||||
|
||||
14
kandinsky/include/kandinsky/referential.h
Normal file
14
kandinsky/include/kandinsky/referential.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef KANDINSKY_REFERENTIAL_H
|
||||
#define KANDINSKY_REFERENTIAL_H
|
||||
|
||||
#include <kandinsky/types.h>
|
||||
#include <kandinsky/color.h>
|
||||
|
||||
void KDSetOrigin(KDPoint origin);
|
||||
KDPoint KDGetOrigin();
|
||||
|
||||
KDColor * KDPixelAddress(KDPoint p);
|
||||
|
||||
#define COLOR(p) *KDPixelAddress(p)
|
||||
|
||||
#endif
|
||||
@@ -10,6 +10,8 @@ typedef struct {
|
||||
KDCoordinate y;
|
||||
} KDPoint;
|
||||
|
||||
#define KDPOINT(xc,yc) ((KDPoint){.x=(KDCoordinate)(xc),.y=(KDCoordinate)(yc)})
|
||||
|
||||
typedef struct {
|
||||
KDCoordinate width;
|
||||
KDCoordinate height;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <kandinsky/line.h>
|
||||
#include <framebuffer.h>
|
||||
#include <kandinsky/referential.h>
|
||||
|
||||
void KDDrawLine(KDPoint p1, KDPoint p2) {
|
||||
for (KDCoordinate x = p1.x; x<p2.x; x++) {
|
||||
PIXEL(x, p1.y) = 0xFF;
|
||||
COLOR(KDPOINT(x, p1.y)) = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include <kandinsky/rect.h>
|
||||
#include <framebuffer.h>
|
||||
#include <kandinsky/referential.h>
|
||||
#include <string.h>
|
||||
|
||||
void KDFillRect(KDRect rect, KDColor color) {
|
||||
for (KDCoordinate y = rect.y ; y < (rect.y + rect.height); y++) {
|
||||
memset(PIXEL_ADDRESS(rect.x, y), color, rect.width);
|
||||
memset(KDPixelAddress((KDPoint){.x=rect.x, .y=y}), color, rect.width);
|
||||
}
|
||||
}
|
||||
|
||||
19
kandinsky/src/referential.c
Normal file
19
kandinsky/src/referential.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include <kandinsky/referential.h>
|
||||
|
||||
static KDPoint sOrigin = {.x = 0, .y = 0};
|
||||
|
||||
void KDSetOrigin(KDPoint origin) {
|
||||
sOrigin = origin;
|
||||
}
|
||||
|
||||
KDPoint KDGetOrigin() {
|
||||
return sOrigin;
|
||||
}
|
||||
|
||||
KDColor * KDPixelAddress(KDPoint p) {
|
||||
KDPoint origin = KDGetOrigin();
|
||||
return (KDColor *)(FRAMEBUFFER_ADDRESS
|
||||
+ FRAMEBUFFER_WIDTH*(p.y + origin.y)
|
||||
+ (p.x + origin.x));
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#include <kandinsky/text.h>
|
||||
#include <framebuffer.h>
|
||||
#include <kandinsky/referential.h>
|
||||
#include <string.h>
|
||||
#include "font.h"
|
||||
|
||||
void KDDrawChar(char character, KDPoint p) {
|
||||
for (int j=0; j<BITMAP_FONT_CHARACTER_HEIGHT;j++) {
|
||||
for (int i=0; i<BITMAP_FONT_CHARACTER_WIDTH;i++) {
|
||||
PIXEL(p.x+i, p.y+j) = 0xFF-bitmapFont[character-BITMAP_FONT_FIRST_CHARACTER][j][i];
|
||||
COLOR(KDPOINT(p.x+i, p.y+j)) = 0xFF-bitmapFont[character-BITMAP_FONT_FIRST_CHARACTER][j][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user