[LyX/2.3.x] Fix clipping for vector formats and when exporting from command line

Enrico Forestieri forenr at lyx.org
Fri Sep 25 19:02:23 UTC 2020


commit b561dfaf2ef73dff89f2c47c78ca68a533b49a4a
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Fri Sep 25 21:25:40 2020 +0200

    Fix clipping for vector formats and when exporting from command line
    
    This amends ea81faa9 that only took into account the postscript format
    and did not consider that without GUI an image is not available even if
    if it is actually cached. In this case we load the image for obtaining
    its dimensions in order to correct the clipping bounding box.
---
 src/insets/InsetGraphics.cpp |   11 +++++++++--
 status.23x                   |    3 +++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index 88ee9a0..cf5f9ac 100644
--- a/src/insets/InsetGraphics.cpp
+++ b/src/insets/InsetGraphics.cpp
@@ -93,6 +93,7 @@ TODO
 #include "support/Systemcall.h"
 
 #include <QProcess>
+#include <QtGui/QImage>
 
 #include <algorithm>
 #include <sstream>
@@ -320,13 +321,13 @@ void InsetGraphics::outBoundingBox(graphics::BoundingBox & bbox) const
 
 	FileName const file(params().filename.absFileName());
 
-	// No correction is necessary for a postscript image
+	// No correction is necessary for a vector image
 	bool const zipped = theFormats().isZippedFile(file);
 	FileName const unzipped_file = zipped ? unzipFile(file) : file;
 	string const format = theFormats().getFormatFromFile(unzipped_file);
 	if (zipped)
 		unzipped_file.removeFile();
-	if (Formats::isPostScriptFileFormat(format))
+	if (theFormats().getFormat(format)->vectorFormat())
 		return;
 
 	// Get the actual image dimensions in pixels
@@ -340,6 +341,12 @@ void InsetGraphics::outBoundingBox(graphics::BoundingBox & bbox) const
 			height = image->height();
 		}
 	}
+	// Even if cached, the image is not loaded without GUI
+	if  (width == 0 && height == 0) {
+		QImage image(toqstr(file.absFileName()));
+		width  = image.width();
+		height = image.height();
+	}
 	if (width == 0 || height == 0)
 		return;
 
diff --git a/status.23x b/status.23x
index 17fcf4c..82b1f2a 100644
--- a/status.23x
+++ b/status.23x
@@ -70,6 +70,9 @@ What's new
 
 - Fix output of titles in branches and other insets (follow-up to bug 11787).
 
+- Fix clipping of vector images and when exporting from command line
+  (follow-up to bug 11180).
+
 
 * USER INTERFACE
 


More information about the lyx-cvs mailing list