summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/dvi.c
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-07-25 22:06:35 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-07-25 22:06:35 +0000
commitc44cc0e342ab0ab537882d1f6b312a770c519f18 (patch)
treebfe3d00b70fbc5b3301a19178818804d17548577 /Build/source/texk/dvipdfm-x/dvi.c
parent66279a58ec36789c4d363e2d4598176d99f43c66 (diff)
Place static variables into a single struct. Various minor improvements (S. Hirata).
git-svn-id: svn://tug.org/texlive/trunk@55945 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvi.c')
-rw-r--r--Build/source/texk/dvipdfm-x/dvi.c90
1 files changed, 7 insertions, 83 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvi.c b/Build/source/texk/dvipdfm-x/dvi.c
index 5317bfb8182..a4afab61bdb 100644
--- a/Build/source/texk/dvipdfm-x/dvi.c
+++ b/Build/source/texk/dvipdfm-x/dvi.c
@@ -2249,83 +2249,7 @@ dvi_vf_finish (void)
/* Scan various specials */
#include "dpxutil.h"
-
-/* This need to allow 'true' prefix for unit and
- * length value must be divided by current magnification.
- */
-static int
-read_length (double *vp, double mag, const char **pp, const char *endptr)
-{
- char *q;
- const char *p = *pp;
- double v, u = 1.0;
- const char *_ukeys[] = {
-#define K_UNIT__PT 0
-#define K_UNIT__IN 1
-#define K_UNIT__CM 2
-#define K_UNIT__MM 3
-#define K_UNIT__BP 4
-#define K_UNIT__PC 5
-#define K_UNIT__DD 6
-#define K_UNIT__CC 7
-#define K_UNIT__SP 8
- "pt", "in", "cm", "mm", "bp", "pc", "dd", "cc", "sp",
- NULL
- };
- int k, error = 0;
-
- q = parse_float_decimal(&p, endptr);
- if (!q) {
- *vp = 0.0; *pp = p;
- return -1;
- }
-
- v = atof(q);
- RELEASE(q);
-
- skip_white(&p, endptr);
- q = parse_c_ident(&p, endptr);
- if (q) {
- char *qq = q; /* remember this for RELEASE, because q may be advanced */
- if (strlen(q) >= strlen("true") &&
- !memcmp(q, "true", strlen("true"))) {
- u /= mag != 0.0 ? mag : 1.0; /* inverse magnify */
- q += strlen("true");
- }
- if (strlen(q) == 0) { /* "true" was a separate word from the units */
- RELEASE(qq);
- skip_white(&p, endptr);
- qq = q = parse_c_ident(&p, endptr);
- }
- if (q) {
- for (k = 0; _ukeys[k] && strcmp(_ukeys[k], q); k++);
- switch (k) {
- case K_UNIT__PT: u *= 72.0 / 72.27; break;
- case K_UNIT__IN: u *= 72.0; break;
- case K_UNIT__CM: u *= 72.0 / 2.54 ; break;
- case K_UNIT__MM: u *= 72.0 / 25.4 ; break;
- case K_UNIT__BP: u *= 1.0 ; break;
- case K_UNIT__PC: u *= 12.0 * 72.0 / 72.27 ; break;
- case K_UNIT__DD: u *= 1238.0 / 1157.0 * 72.0 / 72.27 ; break;
- case K_UNIT__CC: u *= 12.0 * 1238.0 / 1157.0 * 72.0 / 72.27 ; break;
- case K_UNIT__SP: u *= 72.0 / (72.27 * 65536) ; break;
- default:
- WARN("Unknown unit of measure: %s", q);
- error = -1;
- break;
- }
- RELEASE(qq);
- }
- else {
- WARN("Missing unit of measure after \"true\"");
- error = -1;
- }
- }
-
- *vp = v * u; *pp = p;
- return error;
-}
-
+/* For MAX_PWD_LEN */
#include "pdfencrypt.h"
static int
@@ -2486,19 +2410,19 @@ scan_special (double *wd, double *ht, double *xo, double *yo, int *lm,
else {
skip_white(&p, endptr);
if (!strcmp(kp, "width")) {
- error = read_length(&tmp, dvi_tell_mag(), &p, endptr);
+ error = dpx_util_read_length(&tmp, dvi_tell_mag(), &p, endptr);
if (!error)
*wd = tmp * dvi_tell_mag();
} else if (!strcmp(kp, "height")) {
- error = read_length(&tmp, dvi_tell_mag(), &p, endptr);
+ error = dpx_util_read_length(&tmp, dvi_tell_mag(), &p, endptr);
if (!error)
*ht = tmp * dvi_tell_mag();
} else if (!strcmp(kp, "xoffset")) {
- error = read_length(&tmp, dvi_tell_mag(), &p, endptr);
+ error = dpx_util_read_length(&tmp, dvi_tell_mag(), &p, endptr);
if (!error)
*xo = tmp * dvi_tell_mag();
} else if (!strcmp(kp, "yoffset")) {
- error = read_length(&tmp, dvi_tell_mag(), &p, endptr);
+ error = dpx_util_read_length(&tmp, dvi_tell_mag(), &p, endptr);
if (!error)
*yo = tmp * dvi_tell_mag();
} else if (!strcmp(kp, "default")) {
@@ -2519,7 +2443,7 @@ scan_special (double *wd, double *ht, double *xo, double *yo, int *lm,
qchr = *p; p++;
skip_white(&p, endptr);
}
- error = read_length(&tmp, 1.0, &p, endptr);
+ error = dpx_util_read_length(&tmp, 1.0, &p, endptr);
if (!error) {
double tmp1;
@@ -2527,7 +2451,7 @@ scan_special (double *wd, double *ht, double *xo, double *yo, int *lm,
if (p < endptr && *p == ',') {
p++; skip_white(&p, endptr);
}
- error = read_length(&tmp1, 1.0, &p, endptr);
+ error = dpx_util_read_length(&tmp1, 1.0, &p, endptr);
if (!error) {
*wd = tmp;
*ht = tmp1;