* Copyright (C) 1997 Asger Alstrup
* and the LyX Team.
*
- *======================================================*/
+ * ======================================================*/
#include <config.h>
-#include <math.h> // fabs()
-#include <stdlib.h> // atoi()
+#include <cmath> // fabs()
+#include <cstdlib> // atoi()
#ifdef __GNUG__
#pragma implementation "FontInfo.h"
#endif
#include "FontInfo.h"
-#include "error.h"
+#include "debug.h"
#include "lyxrc.h" // lyxrc.use_scalable_fonts
+#include "support/lstrings.h"
+
extern LyXRC * lyxrc;
/// Load font close to this size
-LString FontInfo::getFontname(int size)
+string FontInfo::getFontname(int size)
{
if (!exist())
- return LString();
+ return string();
int closestind = -1;
double error = 100000;
if (sizes[i] == 0) {
// Scalable font should not be considered close
} else if (sizes[i] == size) {
- lyxerr.debug(LString("Exact font match with\n")
- + strings[i], Error::FONT);
+ lyxerr[Debug::FONT] << "Exact font match with\n"
+ << strings[i] << endl;
return strings[i];
} else if (fabs(sizes[i] - size - 0.1) < error) {
error = fabs(sizes[i] - size - 0.1);
if (scalable && lyxrc->use_scalable_fonts) {
// We can use scalable
- LString font = resize(strings[scaleindex], size);
- lyxerr.debug("Using scalable font to get\n"
- + font, Error::FONT);
+ string font = resize(strings[scaleindex], size);
+ lyxerr[Debug::FONT] << "Using scalable font to get\n"
+ << font << endl;
return font;
}
// Did any fonts get close?
if (closestind == -1) {
// No, and we are not allowed to use scalables, so...
- return LString();
+ return string();
}
// We use the closest match
- lyxerr.debug(LString("Using closest font match to get size ") + size
- + " with\n" + strings[closestind], Error::FONT);
+ lyxerr[Debug::FONT] << "Using closest font match to get size "
+ << size
+ << " with\n" << strings[closestind] << endl;
return strings[closestind];
}
/// Build newly sized font string
-LString FontInfo::resize(LString const & font, int size) const {
+string FontInfo::resize(string const & font, int size) const {
// Find the position of the size spec
- int cut=0, before=0, after=0;
- for (int i=0; i<font.length(); i++) {
+#warning rewrite to use std::string constructs
+ int cut = 0, before = 0, after = 0;
+ for (string::size_type i = 0; i < font.length(); ++i) {
if (font[i] == '-') {
- cut++;
- if (cut==7) {
+ ++cut;
+ if (cut == 7) {
before = i;
- } else if (cut==8) {
+ } else if (cut == 8) {
after = i;
break;
}
}
}
- LString head = font;
- head.substring(0, before);
- LString tail = font;
- tail.substring(after,tail.length()-1);
- return head + size + tail;
+ string head = font;
+ head.erase(before + 1, string::npos);
+ string tail = font;
+ tail.erase(0, after);
+ return head + tostr(size) + tail;
}
/// Set new pattern
-void FontInfo::setPattern(LString const & pat)
+void FontInfo::setPattern(string const & pat)
{
release();
init();
return;
if (pattern.empty()) {
- lyxerr.print("Can not use empty font name for font query.");
+ lyxerr << "Can not use empty font name for font query." << endl;
queried = true;
return;
}
} else {
release();
sizes = new int[matches];
- strings = new LString[matches];
+ strings = new string[matches];
// We have matches. Run them through
for(int i=0; i<matches; i++) {
- LString name(list[i]);
- sizes[i] = atoi(name.token('-',7).c_str());
+ string name(list[i]);
+ sizes[i] = atoi(token(name, '-',7).c_str());
strings[i] = name;
if (sizes[i] == 0) {
if (scaleindex == -1) {