Пример SVG в C / C ++ - PullRequest
       17

Пример SVG в C / C ++

2 голосов
/ 31 августа 2009

Может ли кто-нибудь привести пример того, как загрузить файл .svg и отобразить его с помощью C / C ++ и любой библиотеки? Мне интересно, будете ли вы использовать SDL, Каир или что.

Ответы [ 4 ]

3 голосов
/ 31 августа 2009

Helltone,

проверить http://cairographics.org/cairomm/

Возможно, все будет немного проще.

2 голосов
/ 01 сентября 2009

Как сказал Павел, QtSvg - это путь, которому я верю. Его проще использовать, но в нашей команде мы столкнулись с проблемами производительности QtSvg, особенно в Linux. Поэтому мы решили напрямую проанализировать XML-файл SVG вручную и отобразить его, используя сам Qt. Это оказалось намного быстрее.

псевдокод: -

// Read the SVG file using XML parser (SAX)
void SvgReader::readFile()
{
  QFile file(<some svg filename>);
  if (!file.open(QFile::ReadOnly | QFile::Text)) {
    qWarning("Cannot open file");
    return;
  }
  QString localName;
  QXmlStreamAttributes attributes;
  pXml = new QXmlStreamReader(&file);
  pXml->setNamespaceProcessing(false);
  while (!pXml->atEnd()) {
    switch (pXml->readNext()) {
        case QXmlStreamReader::StartElement:
          localName = pXml->name().toString();
          if (localName.compare(<some element path>) == 0) {
            attributes = pXml->attributes();
            QStringRef data  = attributes.value(<some attribute name>);
            // parse/use your data;
          }
        // similarly other case statements 
    }
  }
}
1 голос
/ 01 сентября 2009

вы можете попробовать boost.svg_plot

1 голос
/ 31 августа 2009
Модуль

QtSvg может быть полезен.

...