/*
* Internal struct of a drawing: code n x1 y1 ... xn yn, where code is:
* 0 = end, 1 = line, 2 = polyline, 3 = square line, 4 = square polyline
+ * 5 = rounded thick line (i.e. dot for short line)
*/
};
+double const dot[] = {
+// 1, 0.5, 0.2, 0.5, 0.2,
+// 1, 0.4, 0.4, 0.6, 0.4,
+// 1, 0.5, 0.5, 0.5, 0.5,
+ 5, 0.4, 0.4, 0.6, 0.4,
+ 0
+};
+
+
double const ddot[] = {
- 1, 0.2, 0.5, 0.3, 0.5,
- 1, 0.7, 0.5, 0.8, 0.5,
+ 5, 0.0, 0.4, 0.3, 0.4,
+ 5, 0.6, 0.4, 1.0, 0.4,
0
};
};
-double const hlinesmall[] = {
- 1, 0.4, 0.5, 0.6, 0.5,
- 0
-};
-
-
double const ring[] = {
2, 5,
0.5, 0.8, 0.8, 0.5, 0.5, 0.2, 0.2, 0.5, 0.5, 0.8,
{"acute", slash, 0 },
{"tilde", tilde, 0 },
{"bar", hline, 0 },
- {"dot", hlinesmall, 0 },
+ {"dot", dot, 0 },
{"check", angle, 1 },
{"breve", parenth, 1 },
{"vec", arrow, 3 },
}
};
-static init_deco_table dummy;
+static init_deco_table dummy_deco_table;
deco_struct const * search_deco(docstring const & name)
return theFontMetrics(font).em();
}
+
+int mathed_font_x_height(FontInfo const & font)
+{
+ return theFontMetrics(font).xHeight();
+}
+
/* The math units. Quoting TeX by Topic, p.205:
*
* Spacing around mathematical objects is measured in mu units. A mu
int mathed_mu(FontInfo const & font, double mu)
{
MetricsBase mb(nullptr, font);
- return Length(mu, Length::MU).inPixels(mb);
+ return mb.inPixels(Length(mu, Length::MU));
}
int mathed_thinmuskip(FontInfo const & font) { return mathed_mu(font, 3.0); }
for (int i = 0; d[i]; ) {
int code = int(d[i++]);
- if (code & 1) { // code == 1 || code == 3
+ if (code & 1) { // code == 1 || code == 3 || code == 5
double xx = d[i++];
double yy = d[i++];
double x2 = d[i++];
int(x + xx + 0.5), int(y + yy + 0.5),
int(x + x2 + 0.5), int(y + y2 + 0.5),
pi.base.font.color());
+ if (code == 5) { // thicker, but rounded
+ pi.pain.line(
+ int(x + xx + 0.5+1), int(y + yy + 0.5-1),
+ int(x + x2 + 0.5-1), int(y + y2 + 0.5-1),
+ pi.base.font.color());
+ pi.pain.line(
+ int(x + xx + 0.5+1), int(y + yy + 0.5+1),
+ int(x + x2 + 0.5-1), int(y + y2 + 0.5+1),
+ pi.base.font.color());
+ }
} else {
int xp[32];
int yp[32];
- int const n = int(d[i++]);
- for (int j = 0; j < n; ++j) {
+ int const n2 = int(d[i++]);
+ for (int j = 0; j < n2; ++j) {
double xx = d[i++];
double yy = d[i++];
// lyxerr << ' ' << xx << ' ' << yy << ' ';
yp[j] = int(y + yy + 0.5);
// lyxerr << "P[" << j ' ' << xx << ' ' << yy << ' ' << x << ' ' << y << ']';
}
- pi.pain.lines(xp, yp, n, pi.base.font.color());
+ pi.pain.lines(xp, yp, n2, pi.base.font.color());
}
}
}