]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix SVG display again (bug#44655)
authorAlan Third <alan@idiocy.org>
Sun, 15 Nov 2020 17:21:03 +0000 (17:21 +0000)
committerAlan Third <alan@idiocy.org>
Wed, 18 Nov 2020 23:07:57 +0000 (23:07 +0000)
* src/image.c (svg_load_image): Fall back to
rsvg_handle_get_dimensions if we can't calculate the size of the
image.

src/image.c

index 3858f3c41f3b076bb6738ea2e3946bdfeff49510..fdb7ef874d7a59f44072312dce38934deb2d9201 100644 (file)
@@ -9903,30 +9903,21 @@ svg_load_image (struct frame *f, struct image *img, char *contents,
       viewbox_width = viewbox.x + viewbox.width;
       viewbox_height = viewbox.y + viewbox.height;
     }
-#else
-  /* The function used above to get the geometry of the visible area
-     of the SVG are only available in librsvg 2.46 and above, so in
-     certain circumstances this code path can result in some parts of
-     the SVG being cropped.  */
-  RsvgDimensionData dimension_data;
-
-  rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
 
-  viewbox_width = dimension_data.width;
-  viewbox_height = dimension_data.height;
+  if (viewbox_width == 0 || viewbox_height == 0)
 #endif
+  {
+    /* The functions used above to get the geometry of the visible
+       area of the SVG are only available in librsvg 2.46 and above,
+       so in certain circumstances this code path can result in some
+       parts of the SVG being cropped.  */
+    RsvgDimensionData dimension_data;
 
-  if (viewbox_width == 0 || viewbox_height == 0)
-    {
-      /* We do not have any usable dimensions, so make some up.  The
-         values below are supposedly the default values most web
-         browsers use for SVGs with no set size.  */
-      /* FIXME: At this stage we should perhaps consider rendering the
-         image out to a bitmap and getting the dimensions from
-         that.  */
-      viewbox_width = 300;
-      viewbox_height = 150;
-    }
+    rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
+
+    viewbox_width = dimension_data.width;
+    viewbox_height = dimension_data.height;
+  }
 
   compute_image_size (viewbox_width, viewbox_height, img->spec,
                       &width, &height);