From cb0ed807678cf6aeb3e6306c64df17c131dda24f Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Sun, 29 Sep 2024 18:30:03 +0300 Subject: [PATCH] make field RenderingContext.rootLayer final users needs to pass it right to constructor instead of calling setRootLayer(). --- .../org/xhtmlrenderer/layout/SharedContext.java | 6 +++--- .../org/xhtmlrenderer/render/RenderingContext.java | 12 ++++++------ .../java/org/xhtmlrenderer/swing/RootPanel.java | 14 ++++---------- .../java/org/xhtmlrenderer/pdf/ITextRenderer.java | 7 +++---- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/flying-saucer-core/src/main/java/org/xhtmlrenderer/layout/SharedContext.java b/flying-saucer-core/src/main/java/org/xhtmlrenderer/layout/SharedContext.java index 4a567e7d3..3724f57a9 100644 --- a/flying-saucer-core/src/main/java/org/xhtmlrenderer/layout/SharedContext.java +++ b/flying-saucer-core/src/main/java/org/xhtmlrenderer/layout/SharedContext.java @@ -133,11 +133,11 @@ public LayoutContext newLayoutContextInstance() { } public RenderingContext newRenderingContextInstance(OutputDevice outputDevice, FontContext fontContext) { - return newRenderingContextInstance(outputDevice, fontContext, 0); + return newRenderingContextInstance(outputDevice, fontContext, null, 0); } - public RenderingContext newRenderingContextInstance(OutputDevice outputDevice, FontContext fontContext, int initialPageNo) { - return new RenderingContext(this, outputDevice, fontContext, initialPageNo); + public RenderingContext newRenderingContextInstance(OutputDevice outputDevice, FontContext fontContext, @Nullable Layer rootLayer, int initialPageNo) { + return new RenderingContext(this, outputDevice, fontContext, rootLayer, initialPageNo); } /* diff --git a/flying-saucer-core/src/main/java/org/xhtmlrenderer/render/RenderingContext.java b/flying-saucer-core/src/main/java/org/xhtmlrenderer/render/RenderingContext.java index 8e9777622..e401f49e7 100644 --- a/flying-saucer-core/src/main/java/org/xhtmlrenderer/render/RenderingContext.java +++ b/flying-saucer-core/src/main/java/org/xhtmlrenderer/render/RenderingContext.java @@ -31,6 +31,7 @@ import org.xhtmlrenderer.layout.Layer; import org.xhtmlrenderer.layout.SharedContext; +import javax.annotation.Nullable; import java.awt.*; /** @@ -49,17 +50,20 @@ public class RenderingContext implements CssContext { private int pageNo; private PageBox page; - private Layer rootLayer; + private final Layer rootLayer; private final int initialPageNo; /** * needs a new instance every run */ - public RenderingContext(SharedContext sharedContext, OutputDevice outputDevice, FontContext fontContext, int initialPageNo) { + public RenderingContext(SharedContext sharedContext, OutputDevice outputDevice, FontContext fontContext, + @Nullable Layer rootLayer, + int initialPageNo) { this.sharedContext = sharedContext; this.outputDevice = outputDevice; this.fontContext = fontContext; + this.rootLayer = rootLayer; this.initialPageNo = initialPageNo; } @@ -205,10 +209,6 @@ public Layer getRootLayer() { return rootLayer; } - public void setRootLayer(Layer rootLayer) { - this.rootLayer = rootLayer; - } - public int getInitialPageNo() { return initialPageNo; } diff --git a/flying-saucer-core/src/main/java/org/xhtmlrenderer/swing/RootPanel.java b/flying-saucer-core/src/main/java/org/xhtmlrenderer/swing/RootPanel.java index d23d77d2a..0bc9d74c5 100644 --- a/flying-saucer-core/src/main/java/org/xhtmlrenderer/swing/RootPanel.java +++ b/flying-saucer-core/src/main/java/org/xhtmlrenderer/swing/RootPanel.java @@ -223,17 +223,11 @@ public RenderingContext newRenderingContext(Graphics2D g) { XRLog.layout(Level.FINEST, "new context end"); - RenderingContext result = getSharedContext().newRenderingContextInstance( - new Java2DOutputDevice(g), new Java2DFontContext(g)); - - getSharedContext().getTextRenderer().setup(result.getFontContext()); - + Java2DFontContext fontContext = new Java2DFontContext(g); + getSharedContext().getTextRenderer().setup(fontContext); final Box rb = getRootBox(); - if (rb != null) { - result.setRootLayer(rb.getLayer()); - } - - return result; + Layer rootLayer = rb == null ? null : rb.getLayer(); + return getSharedContext().newRenderingContextInstance(new Java2DOutputDevice(g), fontContext, rootLayer, 0); } protected LayoutContext newLayoutContext(Graphics2D g) { diff --git a/flying-saucer-pdf/src/main/java/org/xhtmlrenderer/pdf/ITextRenderer.java b/flying-saucer-pdf/src/main/java/org/xhtmlrenderer/pdf/ITextRenderer.java index 63c14032e..d11cf1698 100644 --- a/flying-saucer-pdf/src/main/java/org/xhtmlrenderer/pdf/ITextRenderer.java +++ b/flying-saucer-pdf/src/main/java/org/xhtmlrenderer/pdf/ITextRenderer.java @@ -287,10 +287,9 @@ private Rectangle getInitialExtents(LayoutContext c) { } private RenderingContext newRenderingContext(int initialPageNo) { - RenderingContext result = _sharedContext.newRenderingContextInstance(_outputDevice, new ITextFontContext(), initialPageNo); - _sharedContext.getTextRenderer().setup(result.getFontContext()); - result.setRootLayer(_root.getLayer()); - return result; + ITextFontContext fontContext = new ITextFontContext(); + _sharedContext.getTextRenderer().setup(fontContext); + return _sharedContext.newRenderingContextInstance(_outputDevice, fontContext, _root.getLayer(), initialPageNo); } private LayoutContext newLayoutContext() {