X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fmath%2Fchart-geometry.c;h=7029ddd73714a1f453c85943d4048a7387fce438;hb=f49d8549666763efac0d3cbda14e29de29976542;hp=1265a61eb872a1713813d406ba80096251acb916;hpb=e0c5553451a33f2f3bcbd877da0b0e8551d09ff8;p=pspp
diff --git a/src/math/chart-geometry.c b/src/math/chart-geometry.c
index 1265a61eb8..7029ddd737 100644
--- a/src/math/chart-geometry.c
+++ b/src/math/chart-geometry.c
@@ -26,19 +26,22 @@
#include "gl/minmax.h"
#include "gl/xvasprintf.h"
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
static const double standard_tick[] = {1, 2, 5, 10};
-/*
+/*
Find a set {LOWER, INTERVAL, N_TICKS} such that:
LOWER <= LOWDBL,
LOWER + INTERVAL > LOWDBL,
-
+
LOWER + N_TICKS * INTERVAL < HIGHDBL
LOWER + (N_TICKS + 1) * INTERVAL >= HIGHDBL
INTERVAL = X * 10^N
- where: N is integer
+ where: N is integer
and X is an element of {1, 2, 5}
In other words:
@@ -87,6 +90,39 @@ chart_get_scale (double high, double low,
}
}
+/*
+ Generate a format string which can be passed to printf like functions,
+ which will produce a string in scientific notation representing a real
+ number. N_DECIMALS is the number of decimal places EXPONENT is the
+ value of the exponent.
+*/
+static inline char *
+gen_pango_markup_scientific_format_string (int n_decimals, int exponent)
+{
+ /* TRANSLATORS: This is a format string which, when presented to
+ printf like functions, will create a pango markup string to
+ display real number in scientific notation.
+
+ In its untranslated form, it will display similar to "1.23 x 10^4". You
+ can leave it untranslated if this is how scientific notation is usually
+ presented in your language.
+
+ Some locales (such as German) prefer the centered dot rather than the
+ multiplication sign between the mantissa an exponent. In which
+ case, you can change "#215;" to "#8901;" or other unicode code
+ point as appropriate.
+
+ The . in this string does not and should not be changed, since
+ that is taken care of by the stdc library.
+
+ For information on Pango markup, see
+ http://developer.gnome.org/pango/stable/PangoMarkupFormat.html
+
+ For tables of unicode code points, see http://unicode.org/charts
+ */
+ return xasprintf(_("%%.%dlf×10%d"), n_decimals, exponent);
+}
+
/*
* Compute the optimum format string and the scaling
* for the tick drawing on a chart axis
@@ -138,7 +174,7 @@ chart_get_ticks_format (const double lower, const double interval,
/* log10(0.2E9) = 8.30, log10(0.5E9) = 8.69, log10(1.0E9) = 9 */
/* 0.2 and 0.5 need one decimal more. For stability subtract 0.1 */
nrdecs = MIN(8,(int)(ceil(logshift-logintv-0.1)));
- format_string = xasprintf("%%.%dlf⋅10%d",nrdecs,logshift);
+ format_string = gen_pango_markup_scientific_format_string (nrdecs, logshift);
}
}
else /* logmax and logintv are < 0 */
@@ -153,9 +189,9 @@ chart_get_ticks_format (const double lower, const double interval,
{
logshift = (int)logmax-1;
nrdecs = MIN(8,(int)(ceil(logshift-logintv-0.1)));
- format_string = xasprintf("%%.%dlf⋅10%d",nrdecs,logshift);
+ format_string = gen_pango_markup_scientific_format_string (nrdecs, logshift);
}
- }
+ }
*scale = pow(10.0,-(double)logshift);
return format_string;
}