aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjaseg <jaseg@jaseg.net>2014-03-07 01:08:04 +0100
committerjaseg <jaseg@jaseg.net>2014-03-07 01:08:04 +0100
commit15b7221813a039df3e0690b3e2ed59a0561f2926 (patch)
tree87a0e1d031f07731e37cb53c043afd3ba4820adc
parentd16223fd257ccc1d7060e372eb3d950cf68f8d37 (diff)
downloadmatelight-15b7221813a039df3e0690b3e2ed59a0561f2926.tar.gz
matelight-15b7221813a039df3e0690b3e2ed59a0561f2926.tar.bz2
matelight-15b7221813a039df3e0690b3e2ed59a0561f2926.zip
New, fancy schmancy scrolling working as intended
-rw-r--r--host/bdf.c6
-rw-r--r--host/font.c7
-rw-r--r--host/font.h1
-rwxr-xr-xhost/server.py4
4 files changed, 9 insertions, 9 deletions
diff --git a/host/bdf.c b/host/bdf.c
index e6ab827..a95ed8b 100644
--- a/host/bdf.c
+++ b/host/bdf.c
@@ -283,7 +283,7 @@ int framebuffer_render_text(char *s, glyphtable_t *glyph_table, color_t *gbuf, s
glyph_t *g = glyph_table->data[c];
/* Is the glyph within the buffer's bounds? */
- if(x+g->width > offx && x < offx+gbufwidth){
+ //if(x+g->width > offx && x < offx+gbufwidth){
/* x-offx might be negative down to -g->width+1, but that's ok */
render_glyph(g, gbuf, gbufwidth, x-offx, 0, fg, bg);
if(style.strikethrough || style.underline){
@@ -291,7 +291,7 @@ int framebuffer_render_text(char *s, glyphtable_t *glyph_table, color_t *gbuf, s
/* g->y usually is a negative index of the glyph's baseline measured from the glyph's bottom */
int uly = gbufheight + g->y;
for(int i=0; i<g->width; i++){
- if(x+i >= offx){ /* Stay within the frame buffer's bounds */
+ if(x+i >= offx && x+i-offx < gbufwidth){ /* Stay within the frame buffer's bounds */
if(style.strikethrough)
gbuf[sty*gbufwidth + x + i - offx] = fg;
if(style.underline)
@@ -299,7 +299,7 @@ int framebuffer_render_text(char *s, glyphtable_t *glyph_table, color_t *gbuf, s
}
}
}
- }
+ //}
x += g->width;
}
return 0;
diff --git a/host/font.c b/host/font.c
index c1f1d22..59bc2ef 100644
--- a/host/font.c
+++ b/host/font.c
@@ -18,12 +18,13 @@ void render_glyph(glyph_t *g, color_t *buf, unsigned int bufwidth, int offx, uns
}
color_t *p = buf + (offy+y)*bufwidth + offx;
/* Take care to only render what's within the framebuffer's bounds */
- for(unsigned int x=0; (x < g->width) && (offx+x < bufwidth); x++){
+ for(int x=0; (x < g->width) && (offx+x < (int)bufwidth); x++){
if(offx + x >= 0){
color_t c = (data&(1<<(g->width-1))) ? fg : bg;
- *p++ = c;
- data <<= 1;
+ *p = c;
}
+ p++;
+ data <<= 1;
}
}
}
diff --git a/host/font.h b/host/font.h
index ad7f851..6a6f302 100644
--- a/host/font.h
+++ b/host/font.h
@@ -29,7 +29,6 @@ glyphtable_t *read_bdf(FILE *f);
void free_glyphtable(glyphtable_t *glyph_table);
-// Requires buf to point to a buffer at least of size glyph->width*glyph->height.
void render_glyph(glyph_t *g, color_t *buf, unsigned int bufwidth, int offx, unsigned int offy, color_t fg, color_t bg);
#endif//__FONT_H__
diff --git a/host/server.py b/host/server.py
index 679b13b..ef4ce32 100755
--- a/host/server.py
+++ b/host/server.py
@@ -50,7 +50,7 @@ def render_text(text, offset):
printlock = threading.Lock()
def printframe(fb):
- h,w,_ = fb.shape
+ w,h,_ = fb.shape
printlock.acquire()
print('\0337\033[H', end='')
print('Rendering frame @{}'.format(time()))
@@ -60,7 +60,7 @@ def printframe(fb):
def scroll(text):
""" Returns whether it could scroll all the text uninterrupted """
- log('Scrolling', text)
+ #log('Scrolling', text)
w,h = compute_text_bounds(text)
for i in range(-DISPLAY_WIDTH,w+1):
fb = render_text(text, i);