From 7083d8ed711d35312d61d0285f835f4079a5297a Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Fri, 25 Nov 2011 00:26:15 +0330 Subject: [PATCH] simplify font handling style struct, which was left from the GTK+ interface, was removed. Also background and foreground colors are customizable now. --- cnoor.c | 19 +++++-------------- config.h | 23 +++++++++-------------- txtwin.c | 34 ++++++++-------------------------- txtwin.h | 3 +-- 4 files changed, 23 insertions(+), 56 deletions(-) diff --git a/cnoor.c b/cnoor.c index de6e3a2..fb94290 100644 --- a/cnoor.c +++ b/cnoor.c @@ -25,33 +25,25 @@ static void ins_sura(struct quran *quran, struct quran *trans, int sura) int sajda = sajda_kind(sura, i + 1); if (juz) { sprintf(buf, "%d\n", juz); - txtwin_append(buf, "juz"); + txtwin_append(buf, FONT_JUZ); } quran_aya(quran, buf, LENGTH(buf), start + i); - txtwin_append(buf, "quran"); + txtwin_append(buf, FONT_QURAN); sprintf(buf, " %d ", i + 1); - txtwin_append(buf, "num"); + txtwin_append(buf, FONT_NUM); if (sajda != SAJDA_NONE) { char *s = sajda == SAJDA_RECOM ? "*" : "**"; - txtwin_append(s, "sajda"); + txtwin_append(s, FONT_SAJDA); } if (trans) { quran_aya(trans, buf, LENGTH(buf), start + i); txtwin_append("\n", NULL); - txtwin_append(buf, "trans"); + txtwin_append(buf, FONT_TRANS); } txtwin_append("\n\n", NULL); } } -static void set_tags(void) -{ - int i; - for (i = 0; i < LENGTH(styles); i++) - txtwin_tag(styles[i].name, styles[i].fg, - styles[i].bg, styles[i].font); -} - int show(int sura) { char name[128]; @@ -62,7 +54,6 @@ int show(int sura) if (TRANS_PATH) trans = quran_alloc(TRANS_PATH); txtwin_init(name); - set_tags(); ins_sura(quran, trans, sura); txtwin_loop(); txtwin_free(); diff --git a/config.h b/config.h index af00056..eff7e17 100644 --- a/config.h +++ b/config.h @@ -7,20 +7,15 @@ typedef unsigned int fbval_t; #define FB_VAL(r, g, b) fb_val((r), (g), (b)) /* you can get it from http://tanzil.info/download */ -#define QURAN_PATH "/path/to/quran.txt" +#define QURAN_PATH "/path/to/quran.txt" /* it should be a utf-8 file with one aya per line or NULL */ -#define TRANS_PATH "/path/to/translation.txt" +#define TRANS_PATH "/path/to/translation.txt" /* fonts and colors */ -static struct style { - char *name; - char *font; - char *fg; - char *bg; -} styles[] = { - {"quran", "me_quran 18", "#000000", "#DDDDFF"}, - {"trans", "DejaVu Sans 8", "#444455", "#FFFFFF"}, - {"num", "DejaVu Sans Mono 7", "#225599", "#FFFFFF"}, - {"juz", "DejaVu Sans Mono 7", "#229955", "#FFFFFF"}, - {"sajda", "DejaVu Sans Mono 7", "#992222", "#FFFFFF"}, -}; +#define COLOR_FG 0x000000 +#define COLOR_BG 0xd5ddff +#define FONT_QURAN "me_quran 17" +#define FONT_TRANS "DejaVu Sans 8" +#define FONT_NUM "DejaVu Sans Mono 7" +#define FONT_JUZ "DejaVu Sans Mono 7" +#define FONT_SAJDA "DejaVu Sans Mono 7" diff --git a/txtwin.c b/txtwin.c index fe420a2..3ca9f6e 100644 --- a/txtwin.c +++ b/txtwin.c @@ -22,14 +22,6 @@ #define PAGESTEPS 8 #define CTRLKEY(x) ((x) - 96) -static struct { - char name[1 << 4]; - char desc[1 << 8]; -} tags[1 << 4] = { - {"default", ""} -}; -static int ntags = 1; - static char name[128]; static PangoContext *context; static int width = 1; @@ -61,6 +53,9 @@ static void destroy_bitmap(FT_Bitmap *bitmap) g_slice_free(FT_Bitmap, bitmap); } +#define CR(a) (((a) >> 16) & 0x0000ff) +#define CG(a) (((a) >> 8) & 0x0000ff) +#define CB(a) ((a) & 0x0000ff) #define COLORMERGE(f, b, c) ((b) + (((f) - (b)) * (c) >> 8u)) static void view_write(int sr) @@ -72,9 +67,9 @@ static void view_write(int sr) for (r = 0; r < nr; r++) { for (c = 0; c < nc; c++) { int v = bitmap->buffer[(sr + r) * bitmap->pitch + c]; - int r = COLORMERGE(0xd5, 0x00, 255 - v); - int g = COLORMERGE(0xdd, 0x00, 255 - v); - int b = COLORMERGE(0xff, 0x00, 255 - v); + int r = COLORMERGE(CR(COLOR_FG), CR(COLOR_BG), v); + int g = COLORMERGE(CG(COLOR_FG), CG(COLOR_BG), v); + int b = COLORMERGE(CB(COLOR_FG), CB(COLOR_BG), v); buf[c] = FB_VAL(r, g, b); } fb_set(r, 0, buf, width); @@ -119,26 +114,13 @@ static int readkey(void) return b; } -void txtwin_append(char *s, char *tag) +void txtwin_append(char *s, char *font) { - int i; - int t = 0; - for (i = 0; i < ntags; i++) - if (tag && !strcmp(tag, tags[i].name)) - t = i; snprintf(pos, MAXTEXT - (pos - text), - "%s%s", tags[t].desc, s); + "%s", font, s); pos = strchr(pos, '\0'); } -void txtwin_tag(char *name, char *fg, char *bg, char *font) -{ - strcpy(tags[ntags].name, name); - snprintf(tags[ntags].desc, sizeof(tags[ntags].desc), - "", font); - ntags++; -} - static int getcount(int def) { int result = count ? count : def; diff --git a/txtwin.h b/txtwin.h index cdee048..7416112 100644 --- a/txtwin.h +++ b/txtwin.h @@ -2,5 +2,4 @@ void txtwin_init(char *name); void txtwin_gtk_init(int argc, char **argv); void txtwin_free(void); void txtwin_loop(void); -void txtwin_append(char *s, char *tag); -void txtwin_tag(char *name, char *fg, char *bg, char *font); +void txtwin_append(char *s, char *font); -- 2.11.4.GIT