#include "texd.h"
-bool pdf_doing_string;
-bool pdf_doing_text;
+boolean pdf_doing_string;
+boolean pdf_doing_text;
+static integer ten_pow[10] =
+{
+ 1,
+ 10,
+ 100,
+ 1000,
+ 10000,
+ 100000,
+ 1000000,
+ 10000000,
+ 100000000,
+ 1000000000
+};
+integer scaled_out;
+integer pdf_font_sum = 0;
HPDF_Doc yandy_pdf;
HPDF_Page yandy_page;
HPDF_Font yandy_font[1024];
-tree *avl_tree = NULL;
-struct tfm_map
+mapping_table * gentbl;
+
+#define mapping_size 31627
+
+struct _mapping_table
+{
+ mapping_entry * entries[mapping_size];
+};
+
+struct _mapping_entry
{
- char * tfm_name;
- unsigned int key;
+ mapping_entry * next;
+ char * key;
+ int val;
};
-int tfm_cmp(void * a, void * b)
+unsigned int font_name_hash(const char * s)
{
- struct tfm_map * aa = (struct tfm_map *) a;
- struct tfm_map * bb = (struct tfm_map *) b;
+ const char * p;
+ unsigned int h = 0, g;
- if (!aa || !bb)
- return 0;
+ for (p = s; *p != '\0'; p++)
+ {
+ h = (h << 4) + *p;
- return strcmp(aa->tfm_name, bb->tfm_name);
+ if ((g = h & 0xf0000000))
+ {
+ h = h ^ (g >> 24);
+ h = h ^ g;
+ }
+ }
+
+ return h;
}
-void tfm_print(void *d)
+mapping_table * font_name_hash_init (void)
{
- struct tfm_map * dd = (struct tfm_map *) d;
+ mapping_table * temp_table;
+ int i;
+
+ temp_table = (mapping_table *) malloc(sizeof(mapping_table));
+
+ for (i = 0; i < mapping_size; i++)
+ temp_table->entries[i] = NULL;
- if (dd)
- printf("{ %s => %d }\n", dd->tfm_name, dd->key);
+ return temp_table;
}
-void tfm_delete(void *d)
+void font_name_hash_free (mapping_table * tbl)
{
- struct tfm_map *dd = (struct tfm_map *) d;
+ int i;
+ mapping_entry *e, *next;
- if (dd)
- {
- free(dd);
- }
+ for (i = 0; i < mapping_size; i++)
+ for (e = tbl->entries[i]; e; e = next)
+ {
+ next = e->next;
+ free(e->key);
+ free(e);
+ }
+
+ free(tbl);
}
-void tfm_copy(void *src, void *dst)
+void font_name_hash_insert (mapping_table * tbl, const char *key, int val)
{
- struct tfm_map *s = (struct tfm_map *) src;
- struct tfm_map *d = (struct tfm_map *) dst;
- d->tfm_name = s->tfm_name;
- d->key = s->key;
+ int i;
+ mapping_entry * e;
+
+ i = font_name_hash(key) % mapping_size;
+ e = (mapping_entry *) malloc(sizeof(mapping_entry));
+ e->next = tbl->entries[i];
+ e->key = (char *) strdup(key);
+ e->val = val;
+ tbl->entries[i] = e;
}
-void init_tfm_map(void)
+int font_name_hash_lookup (mapping_table * tbl, const char *key)
{
- avl_tree = init_dictionnary(tfm_cmp, tfm_print, tfm_delete, tfm_copy);
+ int i;
+ mapping_entry *e;
+
+ i = font_name_hash(key) % mapping_size;
+
+ for (e = tbl->entries[i]; e; e = e-> next)
+ if (!strcmp(key, e->key))
+ return e->val;
+
+ return -1;
}
-void free_tfm_map(void)
+// report error.
+void pdf_error(const char * t, const char * p)
{
- delete_tree(avl_tree);
-}
+ normalize_selector();
+ print_err("Y&Y TeX error");
-int insert_font_index(char * name)
+ if (t != NULL)
+ {
+ print('(');
+ print_string(t);
+ print(')');
+ }
+
+ print_string(": ");
+ print_string(p);
+ succumb();
+}
+// char to string.
+char * pdf_char_to_string(unsigned char i)
{
- struct tfm_map nn;
- nn.tfm_name = name;
- nn.key = avl_tree->count + 1;
- return insert_elmt(avl_tree, &nn, sizeof(struct tfm_map));
+ char str[2];
+ str[0] = i;
+ str[1] = '\0';
+ return str;
}
-
-int get_font_index(char * name)
+// output one char: normal.
+void pdf_out(unsigned char i)
+{
+ HPDF_PageAttr attr = (HPDF_PageAttr) yandy_page->attr;
+ HPDF_Stream_WriteChar(attr->stream, i);
+}
+// octal number: 032, 009 etc.
+void pdf_print_octal(integer s)
{
- struct tfm_map nn;
- nn.tfm_name = name;
- nn.key = 0;
- if (is_present(avl_tree, &nn))
+ char buf[HPDF_INT_LEN + 1];
+ HPDF_PageAttr attr = (HPDF_PageAttr) yandy_page->attr;
+ sprintf(buf, "%03o", s);
+ HPDF_Stream_Write(attr->stream, (HPDF_BYTE *)buf, strlen(buf));
+}
+// output one char: normal or octal.
+void pdf_print_char(unsigned char s)
+{
+ // 32 = '', 92 = '\', 40 = '(', 41 = ')'
+ if ((s <= 32) || (s == 92) || (s == 40) || (s == 41) || (s > 127))
{
- if (get_data(avl_tree, &nn, sizeof(struct tfm_map)))
- return nn.key;
- else
- return 0;
+ pdf_out(92);
+ pdf_print_octal(s);
}
else
{
- return nn.key;
+ pdf_out(s);
}
}
-
-char * pdf_char_to_string(unsigned char i)
+// equivlent: pdf_print in pdfTeX.
+void pdf_print_string(char * s)
{
- char * str = (char *) malloc(2);
- str[0] = i;
- str[1] = 0;
- return str;
+ HPDF_PageAttr attr = (HPDF_PageAttr) yandy_page->attr;
+ HPDF_Stream_WriteStr(attr->stream, s);
}
-
-void pdf_out(unsigned char i)
+// print one integer value: signed or unsigned.
+void pdf_print_int(int s)
{
- char temp[2] = {i, '\0'};
+ char buf[HPDF_INT_LEN + 1];
HPDF_PageAttr attr = (HPDF_PageAttr) yandy_page->attr;
- HPDF_Stream_WriteStr(attr->stream, temp);
+ char* p = HPDF_IToA(buf, s, buf + HPDF_INT_LEN);
+ HPDF_Stream_Write(attr->stream, (HPDF_BYTE *)buf, (HPDF_UINT)(p - buf));
}
-
-void pdf_print_octal(integer n)
+// translate sp to bp.
+HPDF_REAL pdf_sp_to_bp(scaled s)
+{
+ // 1 bp = 65781.76 sp
+ return (HPDF_REAL) s / 65781.76;
+}
+// divides scaled s by scaled m.
+scaled divide_scaled(scaled s, scaled m, integer dd)
{
- unsigned int k = 0;
+ scaled q, r;
+ integer sign, i;
- do
- {
- dig[k] = n % 8;
- n = n / 8;
- incr(k);
- }
- while (n != 0);
+ sign = 1;
- if (k == 1)
+ if (s < 0)
{
- pdf_out('0');
- pdf_out('0');
+ sign = -sign;
+ s = -s;
}
- if (k == 2)
+ if (m < 0)
{
- pdf_out('0');
+ sign = -sign;
+ m = -m;
}
- while (k > 0)
+ if (m == 0)
+ pdf_error("arithmetic", "divided by zero");
+ else if (m >= 0x7FFFFFFF / 10)
+ pdf_error("arithmetic", "number too big");
+
+ q = s / m;
+ r = s % m;
+
+ for (i = 1; i <= dd; i++)
{
- decr(k);
- pdf_out('0' + dig[k]);
+ q = 10 * q + (10 * r) / m;
+ r = (10 * r) % m;
}
-}
-void pdf_print_char(unsigned char c)
-{
- if ((c < 32) || (c == 92) || (c == 40) || (c == 41) || (c > 127))
+ if (2 * r >= m)
{
- pdf_out(92);
- pdf_print_octal(c);
+ incr(q);
+ r = r - m;
}
+
+ scaled_out = sign * (s - (r / ten_pow[dd]));
+ return sign * q;
+}
+scaled round_xn_over_d(scaled x, integer n, integer d)
+{
+ boolean positive;
+ nonnegative_integer t, u, v;
+
+ if (x >= 0)
+ positive = true;
else
{
- pdf_out(c);
+ x = - (integer) x;
+ positive = false;
}
-}
-void pdf_print_string(char * s)
-{
- HPDF_PageAttr attr = (HPDF_PageAttr) yandy_page->attr;
- HPDF_Stream_WriteStr(attr->stream, s);
+ t = (x % 32767L) * n;
+ u = (x / 32768L) * n + (t / 32768L);
+ v = (u % d) * 32768L + (t % 32768L);
+
+ if (u / d >= 32768L)
+ arith_error = true;
+ else
+ u = 32768L * (u / d) + (v / d);
+
+ v = v % d;
+
+ if (2 * v >= d)
+ incr(u);
+
+ if (positive)
+ return u;
+ else
+ return -u;
}
+// advance char width
+void adv_char_width(internal_font_number f, eight_bits c)
+{
+ scaled w, s_out;
+ integer s;
-void hpdf_print_char(unsigned char c)
+ w = char_width(f, char_info(f, c));
+ divide_scaled(w, font_size[f], 4);
+ pdf_delta_h = pdf_delta_h + scaled_out;
+}
+// print real value
+void pdf_print(integer m, integer d)
{
- if ((c < 32) || (c == 92) || (c == 40) || (c == 41) || (c > 127))
+ if (m < 0)
{
- pdf_print_string(" [(!\\051)] TJ\012");
+ pdf_out('-');
+ m = -m;
}
- else
+
+ pdf_print_int(m / ten_pow[d]);
+ m = m % ten_pow[d];
+
+ if (m > 0)
{
- HPDF_Page_ShowText(yandy_page, pdf_char_to_string(c));
+ pdf_out('.');
+ decr(d);
+
+ while (m < ten_pow[d])
+ {
+ pdf_out('0');
+ decr(d);
+ }
+
+ while (m % 10 == 0)
+ m = m / 10;
+
+ pdf_print_int(m);
}
}
-
+// end the current string
void pdf_end_string(void)
{
if (pdf_doing_string)
pdf_doing_string = false;
}
}
-
+// begin to draw a string
void pdf_begin_string(internal_font_number f)
{
- scaled s, v;
+ scaled s_out, v, v_out;
+ integer s;
if (!pdf_doing_text)
- pdf_begin_text();
+// pdf_begin_text();
if (f != dvi_f)
{
pdf_font_def(f);
}
- {
- s = cur_h - pdf_delta_h;
- v = pdf_v - cur_v;
- }
-
- if ((f != pdf_f) || (v != 0) || (s >= 0100000))
- {
- pdf_end_string();
- //pdf_set_textmatrix();
- pdf_f = f;
- s = 0;
- }
+ s = divide_scaled(cur_h - pdf_delta_h, font_size[f], 3);
+ s_out = scaled_out;
- if (!pdf_doing_string)
+ if (abs(s) < 0100000)
{
- pdf_print_string(" [");
- if (s == 0)
- pdf_out('(');
- }
+ s_out = divide_scaled(round_xn_over_d(cur_h - pdf_delta_h, 1000, 1000),
+ font_size[f], 3);
- if (s != 0)
- {
- if (pdf_doing_string)
- pdf_out(')');
- //pdf_print_int(-s);
- pdf_out('(');
- pdf_delta_h = cur_h;
+ if (s < 0)
+ s_out = -s_out;
}
- pdf_doing_string = true;
+// if (cur_v - pdf_v >= )
}
-void pdf_begin_text(void)
-{
- HPDF_Page_BeginText(yandy_page);
- pdf_doing_text = true;
- pdf_f = null_font;
- pdf_doing_string = false;
-}
-
-void pdf_end_text(void)
+// end a text section.
+void pdf_end_text()
{
if (pdf_doing_text)
{
+ pdf_end_string();
HPDF_Page_EndText(yandy_page);
pdf_doing_text = false;
}
}
-
+// draw a rule.
+void pdf_set_rule(scaled x, scaled y, scaled w, scaled h)
+{
+}
void pdf_error_handler (HPDF_STATUS error_no, HPDF_STATUS detail_no, void * user_data)
{
- printf ("YANDYTEX ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no, (HPDF_UINT)detail_no);
+ printf ("Y&Y TeX error: error_no=%04X, detail_no=%u\n",
+ (HPDF_UINT)error_no,
+ (HPDF_UINT)detail_no);
longjmp(jumpbuffer, 1);
}
-void pdf_font_def(internal_font_number f)
+void pdf_font_def (internal_font_number f)
{
int k;
const char * fnt_name;
char * afm_name;
char * pfb_name;
- char buffer[256], cuffer[256], duffer[256];
+ char * fnt_buffer = (char *) malloc(length(font_name[f]) + 1);
- memset(buffer, 0, sizeof(buffer));
- memset(duffer, 0, sizeof(duffer));
- memset(cuffer, 0, sizeof(cuffer));
- memcpy(buffer, (const char *) str_pool + str_start[font_name[f]], length(font_name[f]));
- memcpy(duffer, (const char *) str_pool + str_start[font_name[f]], length(font_name[f]));
- memcpy(cuffer, (const char *) str_pool + str_start[font_name[f]], length(font_name[f]));
-
- //if ((k = get_font_index(buffer)) != 0)
- //{
- // printf("PDF_FONT_DEF2: %s-%d.\n", buffer,get_font_index(buffer));
- // HPDF_Page_SetFontAndSize(yandy_page, yandy_font[get_font_index(buffer)], (font_size[f] / 65535));
- //}
- //else
- k = get_font_index(buffer);
-
- if (k == 0)
+ memcpy(fnt_buffer, (const char *) str_pool + str_start[font_name[f]], length(font_name[f]));
+ fnt_buffer[length(font_name[f])] = '\0';
+
+ k = font_name_hash_lookup(gentbl, fnt_buffer);
+
+ if (k == -1)
{
- afm_name = kpse_find_file(strcat(buffer, ".afm"), kpse_afm_format, 0);
- printf("PDF_FONT_DEF3: %s.\n", afm_name);
- //printf("PDF_FONT_DEF3: %s.\n", pfb_name);
- pfb_name = kpse_find_file(strcat(duffer, ".pfb"), kpse_type1_format, 0);
- printf("PDF_FONT_DEF3: %s.\n", pfb_name);
+ afm_name = kpse_find_file(fnt_buffer, kpse_afm_format, 1);
+ pfb_name = kpse_find_file(fnt_buffer, kpse_type1_format, 1);
if (afm_name != NULL && pfb_name != NULL)
{
- printf("PDF_FONT_DEF4_NAME: %s.\n", cuffer);
- k = insert_font_index(cuffer);
- printf("PDF_FONT_DEF4: %d.\n", k);
+ font_name_hash_insert(gentbl, fnt_buffer, pdf_font_sum + 1);
+ pdf_font_sum += 1;
fnt_name = HPDF_LoadType1FontFromFile (yandy_pdf, afm_name, pfb_name);
- yandy_font[k] = HPDF_GetFont(yandy_pdf, fnt_name, NULL);
+ yandy_font[pdf_font_sum] = HPDF_GetFont(yandy_pdf, fnt_name, NULL);
+ HPDF_Page_SetFontAndSize(yandy_page, yandy_font[pdf_font_sum], (font_size[f] / 65535));
}
else
{
- k = 0; //get_font_index(buffer);
+ HPDF_Page_SetFontAndSize(yandy_page, yandy_font[0], (font_size[f] / 65535));
}
}
- HPDF_Page_SetFontAndSize(yandy_page, yandy_font[k], (font_size[f] / 65535));
+ else
+ {
+ HPDF_Page_SetFontAndSize(yandy_page, yandy_font[k], (font_size[f] / 65535));
+ }
+
+ free(fnt_buffer);
}
void pdf_ship_out(halfword p)
{
- integer page_loc;
char j, k;
- pool_pointer s;
- char old_setting;
if (tracing_output > 0)
{
max_h = width(p) + h_offset;
dvi_h = 0;
- pdf_delta_h = 0;
dvi_v = 0;
- pdf_delta_v = 0;
cur_h = h_offset;
dvi_f = null_font;
if (total_pages == 0)
{
- init_tfm_map();
- yandy_pdf = HPDF_New(pdf_error_handler, NULL);
- yandy_pdf->pdf_version = HPDF_VER_17;
- //HPDF_SetCompressionMode(yandy_pdf, HPDF_COMP_ALL);
- HPDF_SetInfoAttr(yandy_pdf, HPDF_INFO_PRODUCER, "Y&YTeX 2.2.3");
- yandy_font[0] = HPDF_GetFont(yandy_pdf, "Times-Roman", NULL);
+ gentbl = font_name_hash_init();
+ yandy_pdf = HPDF_New (pdf_error_handler, NULL);
+ HPDF_SetCompressionMode (yandy_pdf, HPDF_COMP_ALL);
+ yandy_pdf -> pdf_version = HPDF_VER_17;
+ HPDF_SetInfoAttr(yandy_pdf, HPDF_INFO_PRODUCER, "Y&Y TeX");
+ yandy_font[0] = HPDF_GetFont (yandy_pdf, "Times-Roman", NULL);
}
- //page_loc = dvi_offset + dvi_ptr;
- //dvi_out(bop);
yandy_page = HPDF_AddPage (yandy_pdf);
- HPDF_Page_SetSize(yandy_page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
+ HPDF_Page_SetSize (yandy_page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
- //for (k = 0; k <= 9; k++)
- // dvi_four(count(k));
- //
- //dvi_four(last_bop);
- //last_bop = page_loc;
cur_v = height(p) + v_offset;
temp_ptr = p;
else
pdf_hlist_out();
- //dvi_out(eop);
incr(total_pages);
cur_s = -1;
lab30:;
flush_node_list(p);
}
-/*
-void pdf_ship_out(pointer p)
-{
- integer i, j, k;
-
- if (tracing_output > 0)
- {
- print_nl("");
- print_ln();
- print_string("Completed box being shipped out");
- }
-
- if (term_offset > max_print_line - 9)
- print_ln();
- else if ((term_offset > 0) || (file_offset > 0))
- print_char(' ');
-
- print_char('[');
- j = 9;
-
- while((count(j) == 0) && (j > 0))
- decr(j);
-
- for (k = 0; k <= j; k++)
- {
- print_int(count(k));
-
- if (k < j)
- print_char('.');
- }
-
-#ifndef _WINDOWS
- fflush(stdout);
-#endif
-
- if (tracing_output > 0)
- {
- print_char(']');
- begin_diagnostic();
- show_box(p);
- end_diagnostic(true);
- }
-
- if ((height(p) > max_dimen) || (depth(p) > max_dimen) ||
- (height(p) + depth(p) + v_offset > max_dimen) ||
- (width(p) + h_offset > max_dimen))
- {
- print_err("Huge page cannot be shipped out");
- help2("The page just created is more than 18 feet tall or",
- "more than 18 feet wide, so I suspect something went wrong.");
- error();
-
- if (tracing_output <= 0)
- {
- begin_diagnostic();
- print_nl("The following box has been deleted:");
- show_box(p);
- end_diagnostic(true);
- }
-
- goto lab30;
- }
-
- if (height(p) + depth(p) + v_offset > max_v)
- max_v = height(p) + depth(p) + v_offset;
-
- if (width(p) + h_offset > max_h)
- max_h = width(p) + h_offset;
-
- pdf_h = 0;
- pdf_v = 0;
- cur_h = h_offset;
- pdf_f = null_font;
-
- if (output_file_name == 0)
- {
- if (job_name == 0)
- open_log_file();
-
- pack_job_name(".pdf");
-
- while(!b_open_out(dvi_file))
- {
- prompt_file_name("file name for output", ".pdf");
- }
-
- output_file_name = b_make_name_string(dvi_file);
- }
- if (total_pages == 0)
- {
- yandy_pdf = HPDF_New(pdf_error_handler, NULL);
- yandy_pdf->pdf_version = HPDF_VER_17;
- HPDF_SetCompressionMode(yandy_pdf, HPDF_COMP_ALL);
- }
- yandy_page = HPDF_AddPage (yandy_pdf);
- HPDF_Page_SetWidth (yandy_page, (HPDF_REAL)hsize / 65536);
- HPDF_Page_SetHeight (yandy_page, (HPDF_REAL)vsize / 65536);
-
- cur_v = height(p) + v_offset;
- temp_ptr = p;
-
- incr(total_pages);
- cur_s = -1;
-lab30:;
- if (tracing_output <= 0)
- print_char(']');
-
- dead_cycles = 0;
-
-#ifndef _WINDOWS
- fflush(stdout);
-#endif
-
- flush_node_list(p);
-}
-*/
void pdf_hlist_out (void)
{
scaled base_line;
scaled left_edge;
scaled save_h, save_v;
halfword this_box;
-/* glue_ord g_order; */
- int g_order; /* 95/Jan/7 */
-/* char g_sign; */
- int g_sign; /* 95/Jan/7 */
+ int g_order;
+ int g_sign;
halfword p;
- integer save_loc;
halfword leader_box;
scaled leader_wd;
scaled lx;
- bool outer_doing_leaders;
+ boolean outer_doing_leaders;
scaled edge;
real glue_temp;
real cur_glue;
p = list_ptr(this_box);
incr(cur_s);
- //if (cur_s > 0)
- // dvi_out(141);
-
- //if (cur_s > max_push)
- // max_push = cur_s;
-
- //save_loc = dvi_offset + dvi_ptr;
base_line = cur_v;
left_edge = cur_h;
lab21:
if (is_char_node(p))
{
- //HPDF_Page_BeginText(yandy_page);
- //HPDF_Page_SetTextMatrix(yandy_page, 1, 0, 0, 1, (cur_h/65536 + 72), (841.89 - (cur_v/65536 + 72)));
- //HPDF_Page_MoveTextPos(yandy_page, (cur_h/65536 + 72), (841.89 - (cur_v/65536 + 72)));
- //pdf_print_string(" [(");
do
{
f = font(p);
{
if (!font_used[f])
{
- //dvi_font_def(f);
- pdf_font_def(f);
- //if (dvi_f != null_font)
- // pdf_print_string(")] TJ\012");
- //pdf_print_string(" [(");
font_used[f] = true;
}
dvi_f = f;
}
-
- //pdf_print_char(c);
- if (!pdf_doing_text)
+
HPDF_Page_BeginText(yandy_page);
- HPDF_Page_MoveTextPos(yandy_page, (cur_h/65536 + 72), (841.89 - (cur_v/65536 + 72)));
- //HPDF_Page_ShowText(yandy_page, pdf_char_to_string(c));
- hpdf_print_char(c);
+ pdf_font_def(f);
+ HPDF_Page_MoveTextPos(yandy_page, pdf_sp_to_bp(cur_h) + 72, (841.89 - (pdf_sp_to_bp(cur_v) + 72)));
+ HPDF_Page_ShowText(yandy_page, pdf_char_to_string(c));
HPDF_Page_EndText(yandy_page);
- //pdf_begin_string(f);
- //pdf_print_char(c);
- //printf("HLISTOUT: %c.\n", c);
cur_h = cur_h + char_width(f, char_info(f, c));
- pdf_delta_h = pdf_delta_h + char_width(f, char_info(f, c));
p = link(p);
}
while(((p >= hi_mem_min)));
- //pdf_print_string(")] TJ\012");
- //HPDF_Page_EndText(yandy_page);
+
dvi_h = cur_h;
}
else
while (cur_h + leader_wd <= edge)
{
cur_v = base_line + shift_amount(leader_box);
- synch_v();
+ //synch_v();
+ dvi_v = cur_v;
save_v = dvi_v;
- synch_h();
+ //synch_h();
+ dvi_h = cur_h;
save_h = dvi_h;
temp_ptr = leader_box;
outer_doing_leaders = doing_leaders;
if ((rule_ht > 0) && (rule_wd > 0))
{
- //synch_h();
cur_v = base_line + rule_dp;
- //synch_v();
- //dvi_out(set_rule);
- //dvi_four(rule_ht);
- //dvi_four(rule_wd);
HPDF_Page_SetLineWidth(yandy_page, rule_ht / 65535);
HPDF_Page_MoveTo (yandy_page, (cur_h / 65535 + 72), (841.89 - cur_v / 65535 - 72));
HPDF_Page_LineTo (yandy_page, (cur_h / 65535 + 72 + rule_wd / 65535), (841.89 - cur_v / 65535 - 72));
p = link(p);
}
- //prune_movements(save_loc);
-
- //if (cur_s > 0)
- // dvi_pop(save_loc);
-
decr(cur_s);
}
/* following needs access to dvi_buf=zdvibuf see coerce.h */
/* char g_sign; */
int g_sign; /* 95/Jan/7 */
halfword p;
- integer save_loc;
+ //integer save_loc;
halfword leader_box;
scaled leader_ht;
scaled lx;
- bool outer_doing_leaders;
+ boolean outer_doing_leaders;
scaled edge;
real glue_temp;
real cur_glue;
p = list_ptr(this_box);
incr(cur_s);
- //if (cur_s > 0)
- // dvi_out(141);
-
- //if (cur_s > max_push)
- // max_push = cur_s;
-
- //save_loc = dvi_offset + dvi_ptr;
left_edge = cur_h;
cur_v = cur_v - height(this_box);
top_edge = cur_v;
else
{
cur_v = cur_v + height(p);
- synch_v();
+ //synch_v();
+ dvi_v = cur_v;
save_h = dvi_h;
save_v = dvi_v;
cur_h = left_edge + shift_amount(p);
while (cur_v + leader_ht <= edge)
{
cur_h = left_edge + shift_amount(leader_box);
- synch_h();
+ //synch_h();
+ dvi_h = cur_h;
save_h = dvi_h;
cur_v = cur_v + height(leader_box);
- synch_v();
+ //synch_v();
+ dvi_v = cur_v;
save_v = dvi_v;
temp_ptr = leader_box;
outer_doing_leaders = doing_leaders;
if ((rule_ht > 0) && (rule_wd > 0))
{
- //synch_h();
- //synch_v();
- //dvi_out(put_rule);
- //dvi_four(rule_ht);
- //dvi_four(rule_wd);
HPDF_Page_SetLineWidth(yandy_page, rule_ht / 65535);
- HPDF_Page_MoveTo (yandy_page, (cur_h / 65535 + 72), (841.89 - cur_v / 65535 - 72));
- HPDF_Page_LineTo (yandy_page, (cur_h / 65535 + 72 + rule_wd / 65535), (841.89 - cur_v / 65535 - 72));
- HPDF_Page_Stroke (yandy_page);
+ HPDF_Page_MoveTo(yandy_page, (cur_h / 65535 + 72), (841.89 - cur_v / 65535 - 72));
+ HPDF_Page_LineTo(yandy_page, (cur_h / 65535 + 72 + rule_wd / 65535), (841.89 - cur_v / 65535 - 72));
+ HPDF_Page_Stroke(yandy_page);
}
goto lab15;
p = link(p);
}
- //prune_movements(save_loc);
-
- //if (cur_s > 0)
- // dvi_pop(save_loc);
-
decr(cur_s);
}