void IsometricGridDot::LoadFromSVG()

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();
}