}
}
+/**
+ * Parse an SVG string into a rectangle
+ */
+void Document::ParseSVG(const string & input, const Rect & bounds)
+{
+ using namespace pugi;
+
+ xml_document doc_xml;
+ xml_parse_result result = doc_xml.load(input.c_str());
+
+ if (!result)
+ Error("Couldn't parse SVG input - %s", result.description());
+
+ Debug("Loaded XML - %s", result.description());
+ SVGMatrix transform = {bounds.w, 0,bounds.x, 0,bounds.h,bounds.y};
+ ParseSVGNode(doc_xml, transform);
+}
+
/**
* Load an SVG into a rectangle
*/
xml_parse_result result = doc_xml.load(input);
if (!result)
- Fatal("Couldn't load \"%s\" - %s", filename.c_str(), result.description());
+ Error("Couldn't load \"%s\" - %s", filename.c_str(), result.description());
Debug("Loaded XML - %s", result.description());
x[0] = (relative) ? x[0] + dx : dx;
y[0] = (relative) ? y[0] + dy : dy;
+ x0 = x[0];
+ y0 = y[0];
//Debug("mmoveto %f,%f", Float(x[0]),Float(y[0]));
command = (command == "m") ? "l" : "L";
}
free(m_font_data);
}
- FILE *font_file = fopen("DejaVuSansMono.ttf", "rb");
+ FILE *font_file = fopen(font_filename.c_str(), "rb");
fseek(font_file, 0, SEEK_END);
size_t font_file_size = ftell(font_file);
fseek(font_file, 0, SEEK_SET);
{
kerning = stbtt_GetCodepointKernAdvance(&m_font, text[i-1], text[i]);
}
- x += Real(font_scale) * Real(left_side_bearing + kerning);
+ Debug("%c: lsb %d, kern %d, adv_width %d", text[i], left_side_bearing, kerning, advance_width);
+ x += Real(font_scale) * Real(kerning);
AddFontGlyphAtPoint(&m_font, text[i], font_scale, x, y);
x += Real(font_scale) * Real(advance_width);
}
{
AddGroup(start_index, end_index);
}
+ Debug("Added Glyph \"%c\" at %f %f, scale %f", (char)character, Float(x), Float(y), Float(scale));
stbtt_FreeShape(font, instructions);
}