From 507dd0a60dd12c61ff2088db419187efc928c010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 7 Dec 2017 01:41:11 +0100 Subject: Properly copy images for the XML output. Use the exact same mechanism that is used for the HTML/LaTeX/... output, which is findAndCopyImage() in docparser.cpp, because that one works, unlike the method here. Not sure why that function doesn't handle XML as well. Also not sure how to integrate this into the automated tests. --- src/xmldocvisitor.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp index 55c2b38..93765b1 100644 --- a/src/xmldocvisitor.cpp +++ b/src/xmldocvisitor.cpp @@ -770,17 +770,22 @@ void XmlDocVisitor::visitPre(DocImage *img) visitPreStart(m_t, "image", FALSE, this, img->children(), baseName, TRUE, img->type(), img->width(), img->height()); // copy the image to the output dir - QFile inImage(img->name()); - QFile outImage(Config_getString(XML_OUTPUT)+"/"+baseName.data()); - if (inImage.open(IO_ReadOnly)) + FileDef *fd; + bool ambig; + if ((fd=findFileDef(Doxygen::imageNameDict,img->name(),ambig))) { - if (outImage.open(IO_WriteOnly)) + QFile inImage(fd->absFilePath()); + QFile outImage(Config_getString(XML_OUTPUT)+"/"+baseName.data()); + if (inImage.open(IO_ReadOnly)) { - char *buffer = new char[inImage.size()]; - inImage.readBlock(buffer,inImage.size()); - outImage.writeBlock(buffer,inImage.size()); - outImage.flush(); - delete[] buffer; + if (outImage.open(IO_WriteOnly)) + { + char *buffer = new char[inImage.size()]; + inImage.readBlock(buffer,inImage.size()); + outImage.writeBlock(buffer,inImage.size()); + outImage.flush(); + delete[] buffer; + } } } } -- cgit v0.12