瀏覽代碼

LibPDF: Allow show_text to return errors

Errors can (and do) occur when trying to render text, and so far we've
silently ignored them, making us think that all is well when it isn't.
Letting show_text return errors will allow us to inform the user about
these errors instead of having to hiding them.
Rodrigo Tobar 2 年之前
父節點
當前提交
db9fa7ff07
共有 2 個文件被更改,包括 5 次插入4 次删除
  1. 4 3
      Userland/Libraries/LibPDF/Renderer.cpp
  2. 1 1
      Userland/Libraries/LibPDF/Renderer.h

+ 4 - 3
Userland/Libraries/LibPDF/Renderer.cpp

@@ -483,7 +483,7 @@ RENDERER_HANDLER(text_next_line)
 RENDERER_HANDLER(text_show_string)
 RENDERER_HANDLER(text_show_string)
 {
 {
     auto text = MUST(m_document->resolve_to<StringObject>(args[0]))->string();
     auto text = MUST(m_document->resolve_to<StringObject>(args[0]))->string();
-    show_text(text);
+    TRY(show_text(text));
     return {};
     return {};
 }
 }
 
 
@@ -510,7 +510,7 @@ RENDERER_HANDLER(text_show_string_array)
             auto shift = next_shift / 1000.0f;
             auto shift = next_shift / 1000.0f;
             m_text_matrix.translate(-shift * text_state().font_size * text_state().horizontal_scaling, 0.0f);
             m_text_matrix.translate(-shift * text_state().font_size * text_state().horizontal_scaling, 0.0f);
             auto str = element.get<NonnullRefPtr<Object>>()->cast<StringObject>()->string();
             auto str = element.get<NonnullRefPtr<Object>>()->cast<StringObject>()->string();
-            show_text(str);
+            TRY(show_text(str));
         }
         }
     }
     }
 
 
@@ -724,7 +724,7 @@ PDFErrorOr<void> Renderer::set_graphics_state_from_dict(NonnullRefPtr<DictObject
     return {};
     return {};
 }
 }
 
 
-void Renderer::show_text(DeprecatedString const& string)
+PDFErrorOr<void> Renderer::show_text(DeprecatedString const& string)
 {
 {
     auto& text_rendering_matrix = calculate_text_rendering_matrix();
     auto& text_rendering_matrix = calculate_text_rendering_matrix();
 
 
@@ -748,6 +748,7 @@ void Renderer::show_text(DeprecatedString const& string)
     auto delta_x = glyph_position.x() - original_position.x();
     auto delta_x = glyph_position.x() - original_position.x();
     m_text_rendering_matrix_is_dirty = true;
     m_text_rendering_matrix_is_dirty = true;
     m_text_matrix.translate(delta_x / text_rendering_matrix.x_scale(), 0.0f);
     m_text_matrix.translate(delta_x / text_rendering_matrix.x_scale(), 0.0f);
+    return {};
 }
 }
 
 
 PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> Renderer::load_image(NonnullRefPtr<StreamObject> image)
 PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> Renderer::load_image(NonnullRefPtr<StreamObject> image)

+ 1 - 1
Userland/Libraries/LibPDF/Renderer.h

@@ -114,7 +114,7 @@ private:
     void begin_path_paint();
     void begin_path_paint();
     void end_path_paint();
     void end_path_paint();
     PDFErrorOr<void> set_graphics_state_from_dict(NonnullRefPtr<DictObject>);
     PDFErrorOr<void> set_graphics_state_from_dict(NonnullRefPtr<DictObject>);
-    void show_text(DeprecatedString const&);
+    PDFErrorOr<void> show_text(DeprecatedString const&);
     PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> load_image(NonnullRefPtr<StreamObject>);
     PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> load_image(NonnullRefPtr<StreamObject>);
     PDFErrorOr<void> show_image(NonnullRefPtr<StreamObject>);
     PDFErrorOr<void> show_image(NonnullRefPtr<StreamObject>);
     void show_empty_image(int width, int height);
     void show_empty_image(int width, int height);