diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2015-12-31 18:00:39 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2015-12-31 18:00:39 +0000 |
commit | 719c7d532ccf8489fb218ed1337ecfd9c8e15f33 (patch) | |
tree | cf73bbc6e22635d3caf867e72aba979c5cf2785b | |
parent | 6b4d9d7bfada322717f25d0e190a11ff77fa62d1 (diff) | |
download | swig-719c7d532ccf8489fb218ed1337ecfd9c8e15f33.tar.gz |
htmldoc patch no longer needed since pdf docs are now generated by wkhtmltopdf
-rw-r--r-- | Doc/Manual/margin-left.patch | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/Doc/Manual/margin-left.patch b/Doc/Manual/margin-left.patch deleted file mode 100644 index 8bef6305c..000000000 --- a/Doc/Manual/margin-left.patch +++ /dev/null @@ -1,277 +0,0 @@ -# This patch is against htmldoc 1.8.27, and it hacks in support for -# correctly indenting the <div class=""> sections in the SWIG manual. -# This patch should only be used until the 1.9 branch of htmldoc -# stabilizes, since the 1.9 branch includes true CSS1 support. -# -# This patch only affects the PDF generation, an unpatched htmldoc -# creates the one-page html documentation just fine. -# -diff -Naur htmldoc-1.8.27/htmldoc/htmldoc.cxx htmldoc-1.8.27-margin-left/htmldoc/htmldoc.cxx ---- htmldoc-1.8.27/htmldoc/htmldoc.cxx 2006-03-30 14:01:20.000000000 +0100 -+++ htmldoc-1.8.27-margin-left/htmldoc/htmldoc.cxx 2013-05-11 10:11:47.428435647 +0100 -@@ -65,6 +65,8 @@ - const char *__XOS2RedirRoot(const char *); - } - #endif -+ -+extern void parse_style(char *); - - - /* -@@ -1115,6 +1117,7 @@ - else if (compare_strings(argv[i], "--version", 6) == 0) - { - puts(SVERSION); -+ puts("Patched with margin-left.patch"); - return (0); - } - else if (compare_strings(argv[i], "--webpage", 3) == 0) -@@ -2403,6 +2406,10 @@ - } - else if (strcmp(temp, "--cookies") == 0) - file_cookies(temp2); -+ else if (strcmp(temp, "--stylesheet") == 0) -+ { -+ parse_style(temp2); -+ } - } - } - -diff -Naur htmldoc-1.8.27/htmldoc/Makefile htmldoc-1.8.27-margin-left/htmldoc/Makefile ---- htmldoc-1.8.27/htmldoc/Makefile 2005-10-28 21:32:59.000000000 +0100 -+++ htmldoc-1.8.27-margin-left/htmldoc/Makefile 2013-05-11 09:39:04.392367869 +0100 -@@ -36,7 +36,7 @@ - OBJS = gui.o file.o html.o htmldoc.o htmllib.o htmlsep.o \ - http.o http-addr.o http-addrlist.o http-support.o image.o \ - iso8859.o license.o md5.o progress.o ps-pdf.o rc4.o \ -- snprintf.o string.o toc.o util.o -+ snprintf.o string.o toc.o util.o style.o - - - # -diff -Naur htmldoc-1.8.27/htmldoc/ps-pdf.cxx htmldoc-1.8.27-margin-left/htmldoc/ps-pdf.cxx ---- htmldoc-1.8.27/htmldoc/ps-pdf.cxx 2006-08-01 17:58:50.000000000 +0100 -+++ htmldoc-1.8.27-margin-left/htmldoc/ps-pdf.cxx 2013-05-11 09:37:40.096364957 +0100 -@@ -160,6 +160,7 @@ - # undef page_t - #endif // __hpux - -+extern int lookup_div_class(uchar *); - - /* - * Output options... -@@ -4230,9 +4231,24 @@ - para->child = para->last_child = NULL; - } - -- parse_doc(t->child, left, right, bottom, top, x, y, page, NULL, -+ { -+ int num_indent = 0; -+ uchar *cname; -+ -+ if (cname = htmlGetVariable(t, (uchar *)"class")) { -+ num_indent = lookup_div_class(cname); -+ *left += 5.0f * num_indent; -+ *x = *left; -+ } -+ -+ parse_doc(t->child, left, right, bottom, top, x, y, page, NULL, - needspace); - -+ if (num_indent > 0) { -+ *left -= 5.0f * num_indent; -+ } -+ } -+ - if (para->child != NULL) - { - parse_paragraph(para, *left, *right, *bottom, *top, x, y, page, *needspace); -diff -Naur htmldoc-1.8.27/htmldoc/style.cxx htmldoc-1.8.27-margin-left/htmldoc/style.cxx ---- htmldoc-1.8.27/htmldoc/style.cxx 1970-01-01 01:00:00.000000000 +0100 -+++ htmldoc-1.8.27-margin-left/htmldoc/style.cxx 2013-05-11 09:37:40.096364957 +0100 -@@ -0,0 +1,185 @@ -+/* Extreamly simple parsing routines for CSS style sheets. -+ * We only parse div.class { } sections, and only look -+ * for margin-left: <num>em; -+ * -+ * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> -+ * -+ * Released under GNU GPL v2 or above. -+ */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <fcntl.h> -+#include <string.h> -+#include <ctype.h> -+ -+#include "types.h" -+ -+#define BUFF_SIZE 512 -+ -+struct div_entry { -+ uchar class_name[BUFF_SIZE]; -+ int indent; -+ struct div_entry *next; -+}; -+ -+static struct div_entry *head = 0; -+ -+/* These are the parsing states */ -+#define IGNORE_TILL_SEMI 0 -+#define IGNORE_TILL_CLOSE_BRACE 1 -+#define READING_DIV 2 -+#define READING_CLASS 3 -+#define READING_ATTRIBUTE 4 -+#define READING_NUM 5 -+#define CHECKING_ONLY_DIV 6 -+ -+static int at_eof = 0; -+ -+static int strucmp(uchar *a, uchar *b) { -+ int i; -+ for (i = 0; a[i] && b[i]; i++) { -+ if (a[i] < b[i]) return -1; -+ if (a[i] > b[i]) return 1; -+ } -+ /* This isn't right, but who cares...*/ -+ if (a[i] || b[i]) return 1; -+ return 0; -+} -+ -+static int read_word(FILE *f, const char *word) { -+ char c; -+ for (int idx = 0; word[idx]; idx++) { -+ c = getc(f); -+ if (c == EOF) { -+ at_eof = 1; -+ return 0; -+ } -+ if (c != word[idx]) -+ return 0; -+ } -+ return 1; -+} -+ -+int lookup_div_class(uchar *name) { -+ struct div_entry *node = head; -+ -+ while (node) { -+ if (strucmp(node->class_name, name) == 0) -+ return node->indent; -+ node = node->next; -+ } -+ -+ return 0; -+} -+ -+void parse_style(char *fname) { -+ FILE *f; -+ char c; -+ int state; -+ struct div_entry *cur = 0; -+ int class_idx = 0; -+ char num[BUFF_SIZE]; -+ int num_idx = 0; -+ -+ if (!fname) return; -+ -+ f = fopen(fname, "r"); -+ if (!f) { -+ fprintf(stderr, "Unable to parse style\n"); -+ return; -+ } -+ -+ state = READING_DIV; -+ while (!at_eof && (c = getc(f)) != EOF) { -+ switch (state) { -+ -+ case IGNORE_TILL_SEMI: -+ if (c == ';') -+ state = READING_ATTRIBUTE; -+ break; -+ -+ case IGNORE_TILL_CLOSE_BRACE: -+ if (c == '}') -+ state = READING_DIV; -+ break; -+ -+ case READING_DIV: -+ if (c != ' ' && c != '\t' && c != '\n') { -+ if (c == 'd' && read_word(f, "iv.")) { -+ state = READING_CLASS; -+ cur = (struct div_entry *) malloc(sizeof(struct div_entry)); -+ memset(cur, 0, sizeof(struct div_entry)); -+ class_idx = 0; -+ } else -+ state = IGNORE_TILL_CLOSE_BRACE; -+ } -+ break; -+ -+ case READING_CLASS: -+ if (isalpha(c)) { -+ if (class_idx >= BUFF_SIZE-1) { -+ fprintf(stderr, "class size %s too long\n", cur->class_name); -+ free(cur); -+ state = IGNORE_TILL_CLOSE_BRACE; -+ } else { -+ cur->class_name[class_idx++] = c; -+ } -+ } else { -+ if (c == '{') { -+ cur->next = head; -+ head = cur; -+ state = READING_ATTRIBUTE; -+ } else -+ state = CHECKING_ONLY_DIV; -+ } -+ break; -+ -+ case READING_ATTRIBUTE: -+ if (c != ' ' && c != '\t' && c != '\n') { -+ if (c == '}') -+ state = READING_DIV; -+ else { -+ if (c == 'm' && read_word(f, "argin-left:")) { -+ num_idx = 0; -+ memset(num, 0, sizeof(num)); -+ state = READING_NUM; -+ } else { -+ state = IGNORE_TILL_SEMI; -+ } -+ } -+ } -+ break; -+ -+ case READING_NUM: -+ if (isdigit(c)) { -+ if (num_idx >= BUFF_SIZE - 1) { -+ fprintf(stderr, "Number too long\n"); -+ state = IGNORE_TILL_SEMI; -+ } else { -+ num[num_idx++] = c; -+ } -+ } else if (c != ' ' && c != '\t') { -+ if (num_idx > 0 && c == 'e' && read_word(f, "m")) -+ cur->indent = atoi(num); -+ state = IGNORE_TILL_SEMI; -+ } -+ break; -+ -+ case CHECKING_ONLY_DIV: -+ if (c != ' ' && c != '\t' && c != '\n') { -+ if (c == '{') { -+ cur->next = head; -+ head = cur; -+ state = READING_ATTRIBUTE; -+ } else { -+ free(cur); -+ state = IGNORE_TILL_CLOSE_BRACE; -+ } -+ } -+ break; -+ } -+ } -+ -+ fclose(f); -+} |