simplify font handling
[cnoor.git] / cnoor.c
blobfb942905f822d8a4a6d077d3ecb4a99febc4e0f7
1 /*
2 * cnoor - a small framebuffer/GTK+ Quran viewer
4 * Copyright (C) 2009-2011 Ali Gholami Rudi
6 * This program is released under GNU GPL version 2.
7 */
8 #include <ctype.h>
9 #include <stdlib.h>
10 #include <stdio.h>
11 #include <string.h>
12 #include "config.h"
13 #include "txtwin.h"
14 #include "quran.h"
15 #include "util.h"
17 static void ins_sura(struct quran *quran, struct quran *trans, int sura)
19 char buf[16 * 1024];
20 int start = sura_start(sura);
21 int ayas = sura_ayas(sura);
22 int i;
23 for (i = 0; i < ayas; i++) {
24 int juz = juz_start(sura, i + 1);
25 int sajda = sajda_kind(sura, i + 1);
26 if (juz) {
27 sprintf(buf, "%d\n", juz);
28 txtwin_append(buf, FONT_JUZ);
30 quran_aya(quran, buf, LENGTH(buf), start + i);
31 txtwin_append(buf, FONT_QURAN);
32 sprintf(buf, " %d ", i + 1);
33 txtwin_append(buf, FONT_NUM);
34 if (sajda != SAJDA_NONE) {
35 char *s = sajda == SAJDA_RECOM ? "*" : "**";
36 txtwin_append(s, FONT_SAJDA);
38 if (trans) {
39 quran_aya(trans, buf, LENGTH(buf), start + i);
40 txtwin_append("\n", NULL);
41 txtwin_append(buf, FONT_TRANS);
43 txtwin_append("\n\n", NULL);
47 int show(int sura)
49 char name[128];
50 struct quran *quran;
51 struct quran *trans = NULL;
52 sprintf(name, "%d(%s)", sura, sura_name(sura));
53 quran = quran_alloc(QURAN_PATH);
54 if (TRANS_PATH)
55 trans = quran_alloc(TRANS_PATH);
56 txtwin_init(name);
57 ins_sura(quran, trans, sura);
58 txtwin_loop();
59 txtwin_free();
60 if (trans)
61 quran_free(trans);
62 quran_free(quran);
63 return 0;
66 int main(int argc, char **argv)
68 int sura;
69 if (argc == 1 || !strcmp(argv[1], "-h")) {
70 printf("usage: %s sura_number\n", argv[0]);
71 return 0;
73 sura = atoi(argv[1]);
74 if (sura <= 0 || sura > 114) {
75 fprintf(stderr, "cnoor: invalid sura number\n");
76 return 1;
78 txtwin_gtk_init(argc, argv);
79 show(sura);
80 return 0;