From 146bae790b4c923f6863f72d44a0edf4b757ad81 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 17 Nov 2011 14:45:29 +0100 Subject: [PATCH] lcd4linux: add patch to scale text on dpf displays. --- lfs/lcd4linux | 3 +- src/patches/lcd4linux-scaletext-dpf.patch | 59 +++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/patches/lcd4linux-scaletext-dpf.patch diff --git a/lfs/lcd4linux b/lfs/lcd4linux index 76c3602192..b31b961b26 100644 --- a/lfs/lcd4linux +++ b/lfs/lcd4linux @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = lcd4linux -PAK_VER = 3 +PAK_VER = 4 DEPS = "dpfhack libmpdclient" @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/lcd4linux-scaletext-dpf.patch cd $(DIR_APP) && ./configure --with-plugins=all,!qnaplog,!dbus --prefix=/usr cd $(DIR_APP) && make cd $(DIR_APP) && make install diff --git a/src/patches/lcd4linux-scaletext-dpf.patch b/src/patches/lcd4linux-scaletext-dpf.patch new file mode 100644 index 0000000000..c075dc7b51 --- /dev/null +++ b/src/patches/lcd4linux-scaletext-dpf.patch @@ -0,0 +1,59 @@ +diff -rupN --exclude=.svn --exclude='*.log' --exclude=Makefile --exclude='*.m4' --exclude='*.in' --exclude=autom4te.cache --exclude='config*' --exclude='*.Po' --exclude='*.sh' lcd4linux/drv_dpf.c lcd4linux.1/drv_dpf.c +--- lcd4linux/drv_dpf.c 2011-11-14 14:41:40.859787820 +0100 ++++ lcd4linux.1/drv_dpf.c 2011-11-13 14:42:58.650315817 +0100 +@@ -160,12 +160,26 @@ static int drv_dpf_start2(const char *se + } + + /* Fixme: provider other fonts someday... */ +- if (XRES != 6 && YRES != 8) { ++ /* Overridden - we have scaled the textout drawing */ ++/* if (XRES != 6 && YRES != 8) { + error("%s: bad Font '%s' from %s (only 6x8 at the moment)", + Name, s, cfg_source()); + return -1; ++ } */ ++ ++ /* we dont want fonts below 6 width */ ++ if (XRES <6) { ++ error("%s: bad Font '%s' width '%d' using minimum of 6)", ++ Name,s,XRES); ++ XRES = 6; + } + ++ /* we dont want fonts below 8 height */ ++ if (YRES <8) { ++ error("%s: bad Font '%s' height '%d' using minimum of 8)", ++ Name,s,YRES); ++ YRES = 8; ++ } + + /* open communication with the display */ + if (drv_dpf_open(section) < 0) { +diff -rupN --exclude=.svn --exclude='*.log' --exclude=Makefile --exclude='*.m4' --exclude='*.in' --exclude=autom4te.cache --exclude='config*' --exclude='*.Po' --exclude='*.sh' lcd4linux/drv_generic_graphic.c lcd4linux.1/drv_generic_graphic.c +--- lcd4linux/drv_generic_graphic.c 2011-11-14 14:41:40.614375417 +0100 ++++ lcd4linux.1/drv_generic_graphic.c 2011-11-14 14:58:29.303285793 +0100 +@@ -259,15 +259,18 @@ static void drv_generic_graphic_render(c + } + + for (y = 0; y < YRES; y++) { +- int mask = 1 << XRES; ++ + for (x = 0; x < XRES; x++) { +- mask >>= 1; +- if (chr[y] & mask) +- drv_generic_graphic_FB[layer][(r + y) * LCOLS + c + x] = fg; +- else +- drv_generic_graphic_FB[layer][(r + y) * LCOLS + c + x] = bg; ++ int mask = 1 << 6; ++ mask >>= ((x*6)/(XRES))+1; ++ if (chr[(y*8)/(YRES)] & mask) ++ drv_generic_graphic_FB[layer][(r + y ) * LCOLS + c + x] = fg; ++ else ++ drv_generic_graphic_FB[layer][(r + y ) * LCOLS + c + x] = bg; ++ + } + } ++ + c += XRES; + txt++; + } -- 2.39.2