8000 Backport PR #12117: Fix Agg extent calculations for empty draws · matplotlib/matplotlib@bfa8b88 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit bfa8b88

Browse files
NelleVdstansby
authored andcommitted
Backport PR #12117: Fix Agg extent calculations for empty draws
1 parent 06e3dd0 commit bfa8b88

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

lib/matplotlib/tests/test_backend_pdf.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,11 @@ def test_failing_latex(tmpdir):
238238
plt.xlabel("$22_2_2$")
239239
with pytest.raises(RuntimeError):
240240
plt.savefig(path)
241+
242+
243+
def test_empty_rasterised():
244+
# Check that emtpy figures that are rasterised save to pdf files fine
245+
with PdfPages(io.BytesIO()) as pdf:
246+
fig, ax = plt.subplots()
247+
ax.plot([], [], rasterized=True)
248+
fig.savefig(pdf, format="pdf")

src/_backend_agg.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,15 @@ agg::rect_i RendererAgg::get_content_extents()
213213
}
214214
}
215215

216-
r.x1 = std::max(0, r.x1);
217-
r.y1 = std::max(0, r.y1);
218-
r.x2 = std::min(r.x2 + 1, (int)width);
219-
r.y2 = std::min(r.y2 + 1, (int)height);
216+
if (r.x1 == width && r.x2 == 0) {
217+
// The buffer is completely empty.
218+
r.x1 = r.y1 = r.x2 = r.y2 = 0;
219+
} else {
220+
r.x1 = std::max(0, r.x1);
221+
r.y1 = std::max(0, r.y1);
222+
r.x2 = std::min(r.x2 + 1, (int)width);
223+
r.y2 = std::min(r.y2 + 1, (int)height);
224+
}
220225

221226
return r;
222227
}

0 commit comments

Comments
 (0)
0