in IsometricPatternMatcher/IsometricPattern.cpp [123:158]
void IsometricGridDot::LoadFromSVG(const std::string& gridFile) {
std::fstream svgFile;
svgFile.open(gridFile, std::fstream::in);
CHECK(svgFile.is_open()) << fmt::format(
"Unable to open Target SVG file, '{}'", gridFile);
std::string binaryPattern;
// look for surreal parameters line
std::string line;
while (!svgFile.eof()) {
getline(svgFile, line);
if (IsXmlParamsString(line) == false) continue;
bool success =
ParseXmlParamsString(line, binaryPattern, numberLayer_, gridRowsCols_,
horizontalSpacing_, verticalSpacing_, dotRadius_);
CHECK(success) << fmt::format("Unable to parse grid file {}",
gridFile.c_str());
break;
}
CHECK(!svgFile.eof()) << "Grid file {} does not contain target parameters.",
gridFile.c_str();
storageMapRows_ = numberLayer_ * 2 + 1;
Eigen::MatrixXi pattern0(1, storageMapRows_ * storageMapRows_);
for (int i = 0; i < binaryPattern.length(); i++) {
pattern0(0, i) = binaryPattern[i] - '0';
}
pattern0.resize(storageMapRows_, storageMapRows_);
patternGroup_ = makeIsometricPatternGroup(pattern0.adjoint());
Init();
}