aboutsummaryrefslogtreecommitdiff
path: root/graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp')
-rw-r--r--graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp b/graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp
new file mode 100644
index 000000000000..424efbc134d9
--- /dev/null
+++ b/graphics/inkscape/files/patch-src_extension_internal_pdfinput_svg-builder.cpp
@@ -0,0 +1,72 @@
+--- src/extension/internal/pdfinput/svg-builder.cpp.orig 2025-12-26 00:35:50 UTC
++++ src/extension/internal/pdfinput/svg-builder.cpp
+@@ -32,6 +32,7 @@
+ #include <poppler/GfxState.h>
+ #include <poppler/Page.h>
+ #include <poppler/Stream.h>
++#include <poppler/goo/gmem.h>
+
+ #include "color.h"
+ #include "color/cms-util.h"
+@@ -1385,7 +1386,7 @@ void SvgBuilder::updateFont(GfxState *state, std::shar
+ sp_repr_css_set_property(_css_font, "font-variant", "normal");
+
+ // Writing mode
+- if ( font->getWMode() == 0 ) {
++ if ( font->getWMode() == _POPPLER_WMODE_HORIZONTAL ) {
+ sp_repr_css_set_property(_css_font, "writing-mode", "lr");
+ } else {
+ sp_repr_css_set_property(_css_font, "writing-mode", "tb");
+@@ -1397,7 +1398,7 @@ void SvgBuilder::updateTextShift(GfxState *state, doub
+ */
+ void SvgBuilder::updateTextShift(GfxState *state, double shift) {
+ double shift_value = -shift * 0.001 * fabs(state->getFontSize());
+- if (state->getFont()->getWMode()) {
++ if (state->getFont()->getWMode() != _POPPLER_WMODE_HORIZONTAL) {
+ _text_position[1] += shift_value;
+ } else {
+ _text_position[0] += shift_value;
+@@ -1451,7 +1452,7 @@ Inkscape::XML::Node* SvgBuilder::_flushTextText(GfxSta
+
+ // Text direction is a property of the <text> element.
+ auto font = state->getFont();
+- if (font->getWMode() == 1) {
++ if (font->getWMode() == _POPPLER_WMODE_VERTICAL) {
+ // Only set if vertical.
+ auto css_text = sp_repr_css_attr_new();
+ sp_repr_css_set_property(css_text, "writing-mode", "tb");
+@@ -1545,8 +1546,8 @@ Inkscape::XML::Node* SvgBuilder::_flushTextText(GfxSta
+ bool output_tspan =
+ next_it == _glyphs.end() ||
+ next_it->style_changed ||
+- (writing_mode == 0 && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) ||
+- (writing_mode == 1 && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1);
++ (writing_mode == _POPPLER_WMODE_HORIZONTAL && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) ||
++ (writing_mode == _POPPLER_WMODE_VERTICAL && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1);
+
+ if (output_tspan) {
+
+@@ -2093,7 +2094,11 @@ Inkscape::XML::Node *SvgBuilder::_createImage(Stream *
+ } else {
+ image_stream = new ImageStream(str, width, 1, 1);
+ }
++#if POPPLER_CHECK_VERSION(26, 0, 0)
++ image_stream->rewind();
++#else
+ image_stream->reset();
++#endif
+
+ // Convert grayscale values
+ unsigned char *buffer = new unsigned char[width];
+@@ -2119,7 +2124,11 @@ Inkscape::XML::Node *SvgBuilder::_createImage(Stream *
+ image_stream = new ImageStream(str, width,
+ color_map->getNumPixelComps(),
+ color_map->getBits());
++#if POPPLER_CHECK_VERSION(26, 0, 0)
++ image_stream->rewind();
++#else
+ image_stream->reset();
++#endif
+
+ // Convert RGB values
+ unsigned int *buffer = new unsigned int[width];