summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2015-12-31 18:00:39 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2015-12-31 18:00:39 +0000
commit719c7d532ccf8489fb218ed1337ecfd9c8e15f33 (patch)
treecf73bbc6e22635d3caf867e72aba979c5cf2785b
parent6b4d9d7bfada322717f25d0e190a11ff77fa62d1 (diff)
downloadswig-719c7d532ccf8489fb218ed1337ecfd9c8e15f33.tar.gz
htmldoc patch no longer needed since pdf docs are now generated by wkhtmltopdf
-rw-r--r--Doc/Manual/margin-left.patch277
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);
-+}