diff options
| author | Simon Tatham <anakin@pobox.com> | 2001-12-04 22:21:06 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2001-12-04 22:21:06 +0000 |
| commit | 5f69ebcb18554873c58d8532bcc38c603cd135ee (patch) | |
| tree | 6939a6994556e08236da21498f3bf4e62f9ffbcc /bk_whlp.c | |
| parent | 51f101e722f3f1610579bfe9ac2a6ffb2542fab6 (diff) | |
| download | halibut-5f69ebcb18554873c58d8532bcc38c603cd135ee.zip halibut-5f69ebcb18554873c58d8532bcc38c603cd135ee.tar.gz halibut-5f69ebcb18554873c58d8532bcc38c603cd135ee.tar.bz2 halibut-5f69ebcb18554873c58d8532bcc38c603cd135ee.tar.xz | |
In winhelp.c: allowed user to configure the Font section to their
liking, as planned. In bk_whlp.c, this has now allowed me to stop
emphasis and code from looking silly in section titles, and also
allowed me to implement an ersatz horizontal rule in the form of
eighty centred nonbreaking spaces in a strike-through font. I know
it's vile, but better suggestions are welcome.
I think the Windows Help backend is now pretty much Go: I was
getting intermittent screwups earlier but I think those were Samba
cache persistence problems rather than evil segfaults. All that's
really missing now is external context references.
[originally from svn r1453]
Diffstat (limited to 'bk_whlp.c')
| -rw-r--r-- | bk_whlp.c | 75 |
1 files changed, 57 insertions, 18 deletions
@@ -2,8 +2,6 @@ * Windows Help backend for Buttress * * TODO: - * - * - rules * - allow user to specify section contexts. */ @@ -21,6 +19,19 @@ struct bk_whlp_state { WHLP_TOPIC curr_topic; }; +/* + * Indexes of fonts in our standard font descriptor set. + */ +enum { + FONT_NORMAL, + FONT_EMPH, + FONT_CODE, + FONT_TITLE, + FONT_TITLE_EMPH, + FONT_TITLE_CODE, + FONT_RULE +}; + static void whlp_rdaddwc(rdstringc *rs, word *text); static int whlp_convert(wchar_t *s, char **result, int hard_spaces); static void whlp_mkparagraph(struct bk_whlp_state *state, @@ -47,6 +58,21 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, whlp_start_macro(h, "CB(\"btn_up\",\"&Up\",\"Contents()\")"); whlp_start_macro(h, "BrowseButtons()"); + whlp_create_font(h, "Times New Roman", WHLP_FONTFAM_SERIF, 24, + 0, 0, 0, 0); + whlp_create_font(h, "Times New Roman", WHLP_FONTFAM_SERIF, 24, + WHLP_FONT_ITALIC, 0, 0, 0); + whlp_create_font(h, "Courier New", WHLP_FONTFAM_FIXED, 24, + 0, 0, 0, 0); + whlp_create_font(h, "Arial", WHLP_FONTFAM_SERIF, 30, + WHLP_FONT_BOLD, 0, 0, 0); + whlp_create_font(h, "Arial", WHLP_FONTFAM_SERIF, 30, + WHLP_FONT_BOLD|WHLP_FONT_ITALIC, 0, 0, 0); + whlp_create_font(h, "Courier New", WHLP_FONTFAM_FIXED, 30, + WHLP_FONT_BOLD, 0, 0, 0); + whlp_create_font(h, "Courier New", WHLP_FONTFAM_SANS, 18, + WHLP_FONT_STRIKEOUT, 0, 0, 0); + /* * Loop over the source form registering WHLP_TOPICs for * everything. @@ -92,7 +118,7 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, for (p = sourceform; p; p = p->next) { if (p->type == para_Title) { whlp_begin_para(h, WHLP_PARA_NONSCROLL); - whlp_mkparagraph(&state, WHLP_FONT_TITLE, p->words, FALSE); + whlp_mkparagraph(&state, FONT_TITLE, p->words, FALSE); whlp_rdaddwc(&rs, p->words); whlp_end_para(h); } @@ -111,7 +137,7 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, if (p->type == para_Preamble) { whlp_para_attr(h, WHLP_PARA_SPACEBELOW, 12); whlp_begin_para(h, WHLP_PARA_SCROLL); - whlp_mkparagraph(&state, WHLP_FONT_NORMAL, p->words, FALSE); + whlp_mkparagraph(&state, FONT_NORMAL, p->words, FALSE); whlp_end_para(h); } } @@ -126,7 +152,7 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, if (p->type == para_Copyright) { whlp_para_attr(h, WHLP_PARA_SPACEBELOW, 12); whlp_begin_para(h, WHLP_PARA_SCROLL); - whlp_mkparagraph(&state, WHLP_FONT_NORMAL, p->words, FALSE); + whlp_mkparagraph(&state, FONT_NORMAL, p->words, FALSE); whlp_end_para(h); whlp_rdaddwc(&rs, p->words); } @@ -217,11 +243,11 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, whlp_begin_para(h, WHLP_PARA_NONSCROLL); if (p->kwtext) { - whlp_mkparagraph(&state, WHLP_FONT_TITLE, p->kwtext, FALSE); - whlp_set_font(h, WHLP_FONT_TITLE); + whlp_mkparagraph(&state, FONT_TITLE, p->kwtext, FALSE); + whlp_set_font(h, FONT_TITLE); whlp_text(h, ": "); /* FIXME: configurability */ } - whlp_mkparagraph(&state, WHLP_FONT_TITLE, p->words, FALSE); + whlp_mkparagraph(&state, FONT_TITLE, p->words, FALSE); whlp_end_para(h); lastsect = p; @@ -229,7 +255,20 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, break; case para_Rule: - /* FIXME: what do we do about rules? */ + whlp_para_attr(h, WHLP_PARA_SPACEBELOW, 12); + whlp_para_attr(h, WHLP_PARA_ALIGNMENT, WHLP_ALIGN_CENTRE); + whlp_begin_para(h, WHLP_PARA_SCROLL); + whlp_set_font(h, FONT_RULE); +#define TEN "\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0" +#define TWENTY TEN TEN +#define FORTY TWENTY TWENTY +#define EIGHTY FORTY FORTY + whlp_text(h, EIGHTY); +#undef TEN +#undef TWENTY +#undef FORTY +#undef EIGHTY + whlp_end_para(h); break; case para_Normal: @@ -245,7 +284,7 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, if (p->type == para_Bullet) { whlp_text(h, "\x95"); } else { - whlp_mkparagraph(&state, WHLP_FONT_NORMAL, p->kwtext, FALSE); + whlp_mkparagraph(&state, FONT_NORMAL, p->kwtext, FALSE); whlp_text(h, "."); } whlp_tab(h); @@ -254,11 +293,11 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, } if (p->type == para_BiblioCited) { - whlp_mkparagraph(&state, WHLP_FONT_NORMAL, p->kwtext, FALSE); + whlp_mkparagraph(&state, FONT_NORMAL, p->kwtext, FALSE); whlp_text(h, " "); } - whlp_mkparagraph(&state, WHLP_FONT_NORMAL, p->words, FALSE); + whlp_mkparagraph(&state, FONT_NORMAL, p->words, FALSE); whlp_end_para(h); break; @@ -276,7 +315,7 @@ void whlp_backend(paragraph *sourceform, keywordlist *keywords, if (!w->next) whlp_para_attr(h, WHLP_PARA_SPACEBELOW, 12); whlp_begin_para(h, WHLP_PARA_SCROLL); - whlp_set_font(h, WHLP_FONT_FIXED); + whlp_set_font(h, FONT_CODE); whlp_convert(w->text, &c, FALSE); whlp_text(h, c); sfree(c); @@ -302,11 +341,11 @@ static void whlp_navmenu(struct bk_whlp_state *state, paragraph *p) { whlp_begin_para(state->h, WHLP_PARA_NONSCROLL); whlp_start_hyperlink(state->h, (WHLP_TOPIC)p->private_data); if (p->kwtext) { - whlp_mkparagraph(state, WHLP_FONT_NORMAL, p->kwtext, TRUE); - whlp_set_font(state->h, WHLP_FONT_NORMAL); + whlp_mkparagraph(state, FONT_NORMAL, p->kwtext, TRUE); + whlp_set_font(state->h, FONT_NORMAL); whlp_text(state->h, ": "); /* FIXME: configurability */ } - whlp_mkparagraph(state, WHLP_FONT_NORMAL, p->words, TRUE); + whlp_mkparagraph(state, FONT_NORMAL, p->words, TRUE); whlp_end_hyperlink(state->h); whlp_end_para(state->h); @@ -381,10 +420,10 @@ static void whlp_mkparagraph(struct bk_whlp_state *state, case word_CodeQuote: case word_WkCodeQuote: if (towordstyle(text->type) == word_Emph) - newfont = WHLP_FONT_ITALIC; + newfont = deffont + FONT_EMPH; else if (towordstyle(text->type) == word_Code || towordstyle(text->type) == word_WeakCode) - newfont = WHLP_FONT_FIXED; + newfont = deffont + FONT_CODE; else newfont = deffont; if (newfont != currfont) { |