diff --git a/doc/api/next_api_changes/behavior/31021-AYS.rst b/doc/api/next_api_changes/behavior/31021-AYS.rst new file mode 100644 index 000000000000..aa5dc598cb26 --- /dev/null +++ b/doc/api/next_api_changes/behavior/31021-AYS.rst @@ -0,0 +1,7 @@ +Rendering of images now more accurate +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +There have been several fixes to improve the accuracy of how images are +resampled and placed during rendering. Some inaccuracies were up to a pixel off +in the output. The most apparent improvement is that the alignment of data +pixels with tick marks and grid lines is now reliable. Nearly all image output +has changed, but often only at a subtle level that is not obvious qualitatively. diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index 483526fcd0a0..898d55633d41 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -3,7 +3,6 @@ operations. """ -import math import os import logging from pathlib import Path @@ -207,12 +206,24 @@ def _resample( out = np.zeros(out_shape + data.shape[2:], data.dtype) # 2D->2D, 3D->3D. if resample is None: resample = image_obj.get_resample() + + # When an output pixel falls exactly on the edge between two input pixels, the Agg + # resampler will use the right input pixel as the nearest neighbor. We want the + # left input pixel to be chosen instead, so we flip the supplied transform. + if interpolation == 'nearest': + transform += Affine2D().translate(-out.shape[1], -out.shape[0]).scale(-1, -1) + _image.resample(data, out, transform, _interpd_[interpolation], resample, alpha, image_obj.get_filternorm(), image_obj.get_filterrad()) + + # Because we flipped the supplied transform, we then flip the output image back. + if interpolation == 'nearest': + out = np.flip(out, axis=(0, 1)) + return out @@ -393,10 +404,15 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0, if clipped_bbox is None: return None, 0, 0, None - out_width_base = clipped_bbox.width * magnification - out_height_base = clipped_bbox.height * magnification + # Define the magnified bbox after clipping + magnified_extents = clipped_bbox.extents * magnification + if ((not unsampled) and round_to_pixel_border): + # Round to the nearest output pixel + magnified_bbox = Bbox.from_extents((magnified_extents + 0.5).astype(int)) + else: + magnified_bbox = Bbox.from_extents(magnified_extents) - if out_width_base == 0 or out_height_base == 0: + if magnified_bbox.width == 0 or magnified_bbox.height == 0: return None, 0, 0, None if self.origin == 'upper': @@ -417,23 +433,10 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0, t = (t0 + (Affine2D() - .translate(-clipped_bbox.x0, -clipped_bbox.y0) - .scale(magnification))) - - # So that the image is aligned with the edge of the Axes, we want to - # round up the output width to the next integer. This also means - # scaling the transform slightly to account for the extra subpixel. - if ((not unsampled) and t.is_affine and round_to_pixel_border and - (out_width_base % 1.0 != 0.0 or out_height_base % 1.0 != 0.0)): - out_width = math.ceil(out_width_base) - out_height = math.ceil(out_height_base) - extra_width = (out_width - out_width_base) / out_width_base - extra_height = (out_height - out_height_base) / out_height_base - t += Affine2D().scale(1.0 + extra_width, 1.0 + extra_height) - else: - out_width = int(out_width_base) - out_height = int(out_height_base) - out_shape = (out_height, out_width) + .scale(magnification) + .translate(-magnified_bbox.x0, -magnified_bbox.y0))) + + out_shape = (int(magnified_bbox.height), int(magnified_bbox.width)) if not unsampled: if not (A.ndim == 2 or A.ndim == 3 and A.shape[-1] in (3, 4)): @@ -560,7 +563,10 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0, t = Affine2D().translate( int(max(subset.xmin, 0)), int(max(subset.ymin, 0))) + t - return output, clipped_bbox.x0, clipped_bbox.y0, t + return (output, + magnified_bbox.x0 / magnification, + magnified_bbox.y0 / magnification, + t) def make_image(self, renderer, magnification=1.0, unsampled=False): """ @@ -1061,21 +1067,24 @@ def make_image(self, renderer, magnification=1.0, unsampled=False): B[:, :, 0:3] = A B[:, :, 3] = 255 A = B - l, b, r, t = self.axes.bbox.extents - width = int(((round(r) + 0.5) - (round(l) - 0.5)) * magnification) - height = int(((round(t) + 0.5) - (round(b) - 0.5)) * magnification) + magnified_extents = (self.axes.bbox.extents * magnification + 0.5).astype(int) + l, b, r, t = magnified_extents / magnification + width = int((r - l) * magnification) + height = int((t - b) * magnification) invertedTransform = self.axes.transData.inverted() - x_pix = invertedTransform.transform( - [(x, b) for x in np.linspace(l, r, width)])[:, 0] - y_pix = invertedTransform.transform( - [(l, y) for y in np.linspace(b, t, height)])[:, 1] + x_pix_edges = invertedTransform.transform( + [(x, b) for x in np.linspace(l, r, width + 1)])[:, 0] + y_pix_edges = invertedTransform.transform( + [(l, y) for y in np.linspace(b, t, height + 1)])[:, 1] + x_pix_centers = (x_pix_edges[:-1] + x_pix_edges[1:]) / 2 + y_pix_centers = (y_pix_edges[:-1] + y_pix_edges[1:]) / 2 if self._interpolation == "nearest": x_mid = (self._Ax[:-1] + self._Ax[1:]) / 2 y_mid = (self._Ay[:-1] + self._Ay[1:]) / 2 - x_int = x_mid.searchsorted(x_pix) - y_int = y_mid.searchsorted(y_pix) + x_int = x_mid.searchsorted(x_pix_centers) + y_int = y_mid.searchsorted(y_pix_centers) # The following is equal to `A[y_int[:, None], x_int[None, :]]`, # but many times faster. Both casting to uint32 (to have an # effectively 1D array) and manual index flattening matter. @@ -1086,16 +1095,16 @@ def make_image(self, renderer, magnification=1.0, unsampled=False): else: # self._interpolation == "bilinear" # Use np.interp to compute x_int/x_float has similar speed. x_int = np.clip( - self._Ax.searchsorted(x_pix) - 1, 0, len(self._Ax) - 2) + self._Ax.searchsorted(x_pix_centers) - 1, 0, len(self._Ax) - 2) y_int = np.clip( - self._Ay.searchsorted(y_pix) - 1, 0, len(self._Ay) - 2) + self._Ay.searchsorted(y_pix_centers) - 1, 0, len(self._Ay) - 2) idx_int = np.add.outer(y_int * A.shape[1], x_int) x_frac = np.clip( - np.divide(x_pix - self._Ax[x_int], np.diff(self._Ax)[x_int], + np.divide(x_pix_centers - self._Ax[x_int], np.diff(self._Ax)[x_int], dtype=np.float32), # Downcasting helps with speed. 0, 1) y_frac = np.clip( - np.divide(y_pix - self._Ay[y_int], np.diff(self._Ay)[y_int], + np.divide(y_pix_centers - self._Ay[y_int], np.diff(self._Ay)[y_int], dtype=np.float32), 0, 1) f00 = np.outer(1 - y_frac, 1 - x_frac) @@ -1248,22 +1257,24 @@ def make_image(self, renderer, magnification=1.0, unsampled=False): if (padded_A[0, 0] != bg).all(): padded_A[[0, -1], :] = padded_A[:, [0, -1]] = bg - l, b, r, t = self.axes.bbox.extents - width = (round(r) + 0.5) - (round(l) - 0.5) - height = (round(t) + 0.5) - (round(b) - 0.5) - width = round(width * magnification) - height = round(height * magnification) + # Round to the nearest output pixels after magnification + l, b, r, t = (self.axes.bbox.extents * magnification + 0.5).astype(int) + width = r - l + height = t - b + vl = self.axes.viewLim - x_pix = np.linspace(vl.x0, vl.x1, width) - y_pix = np.linspace(vl.y0, vl.y1, height) - x_int = self._Ax.searchsorted(x_pix) - y_int = self._Ay.searchsorted(y_pix) + x_pix_edges = np.linspace(vl.x0, vl.x1, width + 1) + y_pix_edges = np.linspace(vl.y0, vl.y1, height + 1) + x_pix_centers = (x_pix_edges[:-1] + x_pix_edges[1:]) / 2 + y_pix_centers = (y_pix_edges[:-1] + y_pix_edges[1:]) / 2 + x_int = self._Ax.searchsorted(x_pix_centers) + y_int = self._Ay.searchsorted(y_pix_centers) im = ( # See comment in NonUniformImage.make_image re: performance. padded_A.view(np.uint32).ravel()[ np.add.outer(y_int * padded_A.shape[1], x_int)] .view(np.uint8).reshape((height, width, 4))) - return im, l, b, IdentityTransform() + return im, l / magnification, b / magnification, IdentityTransform() def _check_unsampled_image(self): return False diff --git a/lib/matplotlib/tests/baseline_images/test_axes/extent_units.png b/lib/matplotlib/tests/baseline_images/test_axes/extent_units.png index 28bde8bf76ec..605203b3c733 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/extent_units.png and b/lib/matplotlib/tests/baseline_images/test_axes/extent_units.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow.pdf b/lib/matplotlib/tests/baseline_images/test_axes/imshow.pdf index 64f4e3519717..f50aff2b4190 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/imshow.pdf and b/lib/matplotlib/tests/baseline_images/test_axes/imshow.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow.png b/lib/matplotlib/tests/baseline_images/test_axes/imshow.png index d709d9f03f47..d6f4bb78250e 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/imshow.png and b/lib/matplotlib/tests/baseline_images/test_axes/imshow.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow.svg b/lib/matplotlib/tests/baseline_images/test_axes/imshow.svg index b0bcc2358e3a..ba0ebee53d2c 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/imshow.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/imshow.svg @@ -6,11 +6,11 @@ - 2025-09-29T14:55:05.029228 + 2026-01-30T01:51:17.751114 image/svg+xml - Matplotlib v3.11.0.dev1393+gfd8d60293, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -37,48 +37,48 @@ L 103.104 41.472 z " style="fill: #ffffff"/> - + +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" id="image6eced6dc49" transform="scale(1 -1) translate(0 -265.68)" x="102.96" y="-41.76" width="266.4" height="265.68"/> - - + - + - + - + - + @@ -87,40 +87,40 @@ L 0 3.5 - - + - + - + - + - + @@ -148,7 +148,7 @@ L 369.216 41.472 - + diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.pdf b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.pdf index f4bbc73544a5..f0657a43bc00 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.pdf and b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.png b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.png index d6cdbd5c07f1..f548345db213 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.png and b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.svg b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.svg index d92dfd8613de..bbb76c51ab5e 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/imshow_clip.svg @@ -6,11 +6,11 @@ - 2025-09-29T14:55:05.618523 + 2026-01-30T01:51:18.376430 image/svg+xml - Matplotlib v3.11.0.dev1393+gfd8d60293, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -37,20 +37,20 @@ L 103.104 41.472 z " style="fill: #ffffff"/> - + +iVBORw0KGgoAAAANSUhEUgAAAXIAAAFxCAYAAABusCOnAAA3K0lEQVR4nO2dUXYbuRJkQYnu7oXM/rc1W3jdtsT50DkjIJKIZBaKsqFz75dgJFBFioJLocjMy9v//T+31vHz9tYP27+3n93c+zD3Pxn/HOYu49ztRda+dnOvMvdjGP9n5n/ernZtv/f/3nVO136Of75fJXa8h3/NvMb+p7Hvn/O/5H3p5z7WdrHvY+wvuU4//xZix3GY79fK905j394/5991Ttb28+/vOjeOb7L21l/HzH38g5sza29NYmVsY+U6SvfjcdHY7Lo29nOvi1tX3deQXucg2VsYcPFmLlxHX1Bl3/Dx6vYafxzu7NXF6r4v5p4k9iKx2WUBAOAPh4McAGBzrk5KaW2UU5yU8jF/6b4ef+2P0konYyTySElaCfLJ6zz2ppLH5/jfMKevZy61qOSha/8d5BKRR25zyUMlGpVa3rq1YS6RQN6MLPP2Po9VySPKJ3NpRSWQIK10Y/nohdheAnGyi8amEsft8dggn/T3XJBlgoxhxkvSSoit6hzrhCtWNJzkdvuXcwnyyGUaG6/jZZjLS//ZyySb/h8kVj+3/VCkFP2M80QOALA5HOQAAJvDQQ4AsDlXp4m3NuriThP/GPd69FwT/5i/dnOPa+JhrdHEdW3UtY2eHnTtx+2Iqnvre9HP/6caudHMVffWe+y166if/x5L4fugXY/7Rk28jeN+r6Cnj7HNxFqNXFGJs6Sn69jYBCu694q+rpxkRzwNqyHfm/8kk/QvxuqnawfJPHx89EKqbff7+Pu/DVp38jntY/Uzi/0QAOB7wUEOALA5HOQAAJtzXUm7d15xp4l/zH/q0xVNvLVRF8/S+/t5p4nrvqoxx7Vz3Vv19CVveK97J2n2P60X/Pd4w98HL/jjafZhvqJ7Ow28tVrq/OAFH2OfpXtX9lVSJ/hRHbyyrmJH130TOdoozHdS6bvPXtDE535vq5/f+YchXveVR+X+by63JHb4HGv6frIUAAA2g4McAGBzOMgBADbn+ifUT9G5vNzsMW945jnv9elME6+Upv3vTb3h89K06g13pWnV3/2zu45q4L/NG/7ef51p5KZWSaaR92ulLstKDZSLiX2W7h2034L3u1Ru9nf4xlsraeipXu3W9u9pQed2+nl2T7cX/azN97q86M+DEb6TXAieyAEANoeDHABgc65flXZvpZWClPIxf8xSmHX5qVgIK518nMXwzVgTWxO5pJBm/0vknN9mKXTlZUUCsdJKYhMcUunDviY2K017lv2wzedC7Er3IKEmtZxUxrZw0TzN3k36vdxaLfEwpuj7ErcqvfQ/whf97OleQ9q9hKrUMtyk92XyRA4AsDkc5AAAm8NBDgCwOdes2/3RtPu0NO27addmNPHWRl3caeI67zRxnVdN/N83r5n/9zZf6yyGrpu9jlfS7N/exrVfZilcKS/b68bp2sdjnaWwZD+UpWsp+iY2XMfYGrN7+hIy4XsemXa7N7HRYliI7fd1+nmLFsPL+/yPIXIUjCn6Sdq9jZUL8UQOALA5HOQAAJvDQQ4AsDnX6A3XsrDH0u6dJq57VTRx3SvzhvfzLq3+Y23vBZ+3XGtt1MR1/mdIyZ+XlP2ZlpvtytiKzr2UZq+a+bO84QfLy7aWecPnWnbw8q74yG8PziV7xVjjSV/Qvf8IzTz5NjvveNSuVdw211F/95B277d1sUGdNl5x1bI1djgKQt5EIUVflvJEDgCwORzkAACbc40VDXV8rNv9mRUMK5ZC3auXU5yU0lqtu73Ou04+KrX0kkiYM6nzIUU/WAqPpdm31trt7Zi0EuQSJ4FUqhLK3rlc0n+d2A+djFGwKi7JJZWqhZUOQb+roqEhWP+mgztjs1dW0XCUYeayiy4NlkF/S2PXIv3ZMRbDKLvo5/YzWH9WtFIiT+QAAJvDQQ4AsDkc5AAAm3PNutBXut0fTbuvaOIf8dfpnLMYOk38Y+3cfug0cZ133e11XjVxV35WdW+Xdl9Js/8Yd2tl35Kl8KzyshIfNXJjP1zQvd09VbvbP00jL/BVmrm1FLp7KFoVx3KzlVgn1I9adrQXaux8OrzU8Dn9jAj7qJzej5OStzyRAwBsDgc5AMDmcJADAGzONfOGu273qoMfTbuvaOI6r5q4lpvtSxC4lms6X+lu31ot7b5Ptdc5V342727/GVvyguu8aoRvRox0afU670rE3hmXfOTGn7vUvq2gvZc0cuGoRl7WwI9q5o9Xps07xhlROejcJjV9qYytPsL2n1vTyq21JO1eb8F4xS9SL1fL54437Uve8kQOALA5HOQAAJtzTS2FN2MpVNvgwbT7ipTS2iiBOClFYyvd7TMpxaXdq4XQdfIJ0oqxGKZp9oOFsCatNGsTFPnhzcS+G6kikVKs/bBgKaxYFVMbYEVaEUqVE92+G6TkD6nzOllJw8+qFPZTSUXA4Z7kkVXtt2OK/twy+DEv1503CIpFC7t/iFKKiQ0vjhR9AIBvBQc5AMDmcJADAGxOsB9aS2FiE3Rp9z72cU28tVEXd5p4a6O2ndkPfw4p+o9r4q2NunhIuw86eKeRJ93te237XdPuXZq96s1qIXQaeSF1PmjiTgfPYp0+XUjvr1gVY2nd+dpUp3fzJ6bkPyud3190Yd7MVSyEYeyrQ4wux5DiPl9bKS+r8cGq6JYG66uxIybvP0/kAACbw0EOALA5HOQAAJtzzcrNOr+3xv7rYt819vFStF+Vdt/r4BrrUvJbk7R7092+tSTtXjTzvvxs0MQ19miavcRbTVznK97wRI+OKfrzeyr5vd11Czp3SXvXtZXu9isa+RdxWvu2zDe+0JLNScxOM3fe79ZaLG/Rl8B1pWiTfZ2vPIvliRwAYHM4yAEANoeDHABgc+74yOd+71JswUfu2rN9xD6nfop6w/vYiibe2qiLR2+4auSPt2R7H+qaiDbnvOGVeika/yxveKqn6/hxfb1Ul6WgezuNvFLWtqKRlzTwZ+rlrn2b3obxdytDDZSKb7yNunjWkq053Vvvqf/8ZHVZTK2VtH5Kr/HbsrWjrzyL5YkcAGBzOMgBADbnmtkEe3vimaVpewlEJQ/tdn9W2r2TUnRckVJaU0vhXEppbZRTXEp+ayKfZKVo+9hKmn3zpWlPsxQmZWu9hOOv46QJJ588K53/7ryJ9aVqC/pJRWrJ0u77bYMGIlsVpBWbZp928jFrXScfk5KvW6Xp/E7m0PT9s+yIyWeLJ3IAgM3hIAcA2BwOcgCAzbn+Z8rWttba/7rxSmnaX2r9e+9jVbv2WvZXpN2rJh5L0TqN3Kfou3Kz1lKYlaLttV9nL2x39Om3+b5nWQrz1H8zTjRCG3uSRl6xKipB5z6xrO3TGNq3SYlVYxNc0tNLLdlkznS3D987V8ZWQist2UKze/e3HF8dd3iTQ4lbCeWJHABgczjIAQA2h4McAGBzrsELrpq5KTernvMxxd37yP8d2qqpb/xxH/mz0u4rmrjOO028tVEHL7Vkq5SXfUt07lAyttPj3iT2JG+4K1N79x6dj7aipxc08lK7tncvXpfK5c6ueWT+Uc5s3zbo3v4GQ+u0fmmSdu90b6eZ61z4fsyn0u+da9/mfOWV9IAAPnIAgO8FBzkAwOaEFP2fKoHc5qn0Kj/0Mk2wH97UztdXP6zZD123+5W0+18mdT7rdt/LKZml8FaxFLp0eLM2SAYqlxiZJkgpYe1j+8TYce5MuaQUa9Pu5zbBckr+s6SVZ2GklFK3+6yiYS9JhRR9keZMin7Ffph9JoZYfa0LnXxSO6KhIsPwRA4AsDkc5AAAm8NBDgCwOVEjD5r5PO0+pux39j0RsP59m2vmmf3QafNZadqjafcVTbw1SbtXTVz2GnTZpLu9Ky8bUuk7LduWnr0z34yWHfX2uRZvNfLMFlhYuxTbCY6lMrYLGnnaTchQ6hiUEFLr7YUnX98ZH+76E1L0JRVdP7f9j1JmPzR/C7GxvpqC/b6XLIWme9Dd65pJnsgBADaHgxwAYHM4yAEANueqafaqg/eaedTT5+Vlg66tsZ1mrpp48Hurj7zTxUPLNeMV19ilUrTGG2418dakJZvRxGVtXpp2Hpt5w0eN/PH0/rCP0cFT7d3p9gV9Xb3gp7V6q/jGk7VKqZ3bAkMqelJutuQNr7RvK5SidZq562b/Edvtm8W671XmK28Gk7Kf7lP4SPBEDgCwORzkAACbk9oPe6ml0vUnVDA09kOVQzKppZdIfqn90HS7V0vhUgXDkIbfxTsppbWx80cml7ju9qbCYUW2aK21F3edQtr9kq2xlHZv5JMnVT/MpZRCer/yVWn5B7v+BG/cQor+0QqGrbVBarmpLGm6AGVdfkpp9qGF0Dy2JsPIeNTBbDBP5AAAm8NBDgCwORzkAACbk2rkv27zTj6uVG0oJ3ubWwh1TjXxn8FS2NkP1UKodsTBUnhiKdqz0u6T8rK2u73p5LNUxtaUra1f5/417q61Wra3FB4tY5vbD29mLlvb5pi5lZT8NAX/rK4/IfYynzurFG1rVo8OHLSOpm//SeUWyteZ7NMaT+QAANvDQQ4AsDkc5AAAm3NVnVs71vfecE3Jj2n3vY9cPefztVqKVjXx4CPv9N1YinY+fnuba+KtLZSiba2Wdj+Um/W6d6m7vStjazznH9cxaxd85O6eomYuOrjTslfK5TrtfclHrvNzkfPM0rTDvnoLVhM/zxvev6Dby+P+7lJ52dbG91y+d+G6ldK0bjJJ2Z9esyVlbU/8DPBEDgCwORzkAACbw0EOALA5V1cvpbXW/n2f+8ij7v06ndN9e927UopW51XnjvVUOt07q58yxPoaKKX6KcbD7TRxnc9K0doytonf29YfcdepeMMzTXxFi6/UZTlcxvZxPV15Wq2VJd/4gjfcecUz7bp/zyvlZXW+0rZOcfsWvxclb/iT4IkcAGBzOMgBADbnmlkKf7nStMZi+FZIu1f7YUi7N3bErNv9bZBhklK0/TjII78p7d7JC66MbZJmH7pwD/fk11qbo5FPqqV1a9LKvPPK19kPzS/Wv6FM7Z3h2BWoYCmMpWgLcomTWgrlZfWWYqxc51a4jmGpFG2YH2rT+rUF6YgncgCAzeEgBwDYHA5yAIDNSe2HY2labz/8+T63H+p40LlFJ9b2be+iR48t2WRONPNeJ8tK0w46uNoPK93uV9Lubcf6xy2F5bZqhVR6r6fPLYUrrd7Wytiu2A9NGdtk7XSfE7lpmn24sIxf5rq3Tdkv6N42Jb+1UcsOXeY1dr60oq9nOnclnT/stWKDPAmeyAEANoeDHABgczjIAQA2504Z27kOnrVk+2W84U4jD6VnTbs2HQfdW/X0Pu0+6NpmHHRun7Lfz5fS7lPteq49LqXO2/R+v7Z/7S9vXrs+Wh73Y/y4B/00H7mLVZ17Ie2+UsbWabCXbCNX19bp562oe3fvo3rMS+nwC7p3pVRtyRu+ATyRAwBsDgc5AMDmXGNKvnT96aQX1+WnteMVDTU2drefp9LHLj9txMglIe1+iNV9xqGVWpa63R9Puy/FlkoBFCyFJblnpfqhWZvZD42tsfarvP+F/KwuQCtdfzT2YtLu71zp86tK15+KXBLkqsdlmezt7aWwW5bv/kWdfCwFG6O+TTyRAwBsDgc5AMDmcJADAGzO1XX5aU0shabLT2uj1h1Lz17mscZe2NodzXxIux+mQrf7m0u7N12AogZ+3H5ou92fmXbvYguaedCUS3q6iy2k2Uv8WuxcB492Q1PWVvcRrCZe0VlXuv7oo5lJww8d68Prm5dctRbDiu5dtR+eFfvN4IkcAGBzOMgBADaHgxwAYHNCGduQSt8Jaa5dW2tjWn7Wru3dpegHH7l6xU1pWqeDh3Zt4/BiU/Q1dj4udbtf8neb2LKP/Gbm5msz7bpP4a/o3Dqf6/aVcrP9a620ekuE1mfpsKa6bChjq/eo092Pu5Zb9pq53oTRwUs+ch8a2F3rriQX9G95so4ncgCAzeEgBwDYnJCi7yoaugqGH+PP3wVWuvzcjJTS2mgpjFJKm4+D5DFP2a9UJdT5UkXDJ6Xdp1KKS7sv3FNW/XDcd8F+6KQUXasWQiefZOn8Tk5JrIuHUbnEPW5l3e01vnsvxGnspZYFuSS+L3P/pL7fNrV+ofrkH8FKZyFS9AEAvhcc5AAAm8NBDgCwOXdS9I+Xph0shUmXn3dnIbypZm7GRuf+CO517yTN3urEoj0ai1vUoxf09LPsh5k+bfT1lxWrokmdD/q608Ezq2Jvc0x0b2spzOyIwz4LdkRbilbGWoaib/IjOnfQ7UMXoP5nR/Ro3av/2dHXqj9L3RtVKhmbNTj6Ezr5VLTsE3Xvyl48kQMAbA4HOQDA5nCQAwBszvUt8ZEfLU2btWt7f5vr6bZdm451TvYa9Omgszrt+vHysrp3aW2STj6WvK3EPq6J67zTxMN1Mt3bpdn/Sq5jU/Rdadosdq6nu1K1USc+UbHttGvbyq21dulj9f0OKfnzshThMq6tWqFk7Ep3+x3Ivj8D/ng6vA8+cgCAbwYHOQDA5kT7oUnDP7WiYd/l502llUJFw0KKfrABBnlkLsNk4xcj4cRU7n7dOLVW/dBUGkxkmZdBLvG2QBsbrltIsw92xMe7/gyyR5B3CvbDsG+/LrMbOr2hYMlTbeJlLj0GKUUrGAbpqI/Vnx1XOXGhC73Q39NTZZYvsg0OhR8L+7jGSdW9eCIHANgcDnIAgM3hIAcA2Jyrsxu2NurgQfc+qTRtLFMr/79UStNaPV33mWvmLgX//nXu73N/7f11d2NtNx5jCyxo4rqX08SzWL2nl1/H0uw/rnubxtpU+rDv+zw2dHxXzbxft6LoSjp8KFXbvdYgfMtWfTr868ts6mNe36c+DT/86eDxkrG23Oyf6C9c0a5P0s/DfZx4TzyRAwBsDgc5AMDmcJADAGzONStN23vHNdal4VdK06bt2s4qTZvp0b2/uKJzV69jdG9fWjcr+zrft5J2X0vRN5p4a8PriWVrvd970OLDvnMfeUjJf5c3w+nebqzfqwrq7w46uEnRf5HX+tJtplq1fn7Ug25u0aXW/4my91ne73vjw/cRNPGKwd6sTfbliRwAYHM4yAEANoeDHABgc6KP3NRTifVT5vVUSqVpnfe7teeVpnXt2oKunZSmHXTX+VyITTzb7STtfal+itHMVRO39V8yjdxp5pk3vJ8P+2ivNONtzzTzo+jPg9HBVT+/BYHd6PZatlbp4wu68O9qubZWMvag8J21XFtoyeb19OOxPJEDAGwOBzkAwOYEacWl4Wddf/o0/KwU7a0irTiLXhp7rDRttUNQyX5oYmN5XFfKdT7OO9Tr+FjafVqato8Nc0YeCffkLYXDvJtrbZRLsq4/K9JK/6u92ACt/VC62Yd0+KEMr+4zj/34h2FnM/c8nmb1q1zzpNT5QGJrHEretvlciE3uiSdyAIDN4SAHANgcDnIAgM25BrthqTTtPA0/b9c2+bq1Umnakh5dKU1baNcWrlNI709tgm7fBZ2+0u3eWQydJq7zqSbu5jNL4fC3BJ0z9sOC3VDvN7RKCwuMyKkaeV+OVj/v+sHt58Oc3EN2j8/gd1gGW7Fk7IklZK2WXbon12rP78sTOQDA5nCQAwBsDgc5AMDm5D7yIUVf9HOXhp96w+fCUlqatvfRZin6NnY+rsTqPdY853OtOt235Dn31+m91q4Ure7lNPGP+c/FMSW/oJln3vB+XjVxXft+TCNXwvdK9d1uHPT0F3mG6svwJl7wft62Z/sIOIWntTvLOEuPTqh4tr3unejch1P0/b48kQMAbA4HOQDA5lxVHvFdf8Zz31kMo93QjFOrn7MuVtL5xylfKVFiCxUNXZcfnV+Te5xVMZFSXIXDzKpoutsHC2Efq1JKGMub3MsymaWwm9d9Q4egofrhQkq+Sikqn3TzF3lmugXb4JB3L3Pm9+hwvwsaSEmK0Nfaz1X28fdQsRQ662LaEeio5CHj1KpYuKebfa10CAIA+FZwkAMAbA4HOQDA5lzz0rSd7h3shmacpLT3xFKcMl/RjW3Xn4KeXtHEk3uy9r3SvpnuPZ8LOvcvd0+Pd/JJ0+7f5tq108Q/9urGv8TDGeyIc6uiTdHX2ArBQmjS7jOb41mdiJSzbINLpV3lnLDar66djzMt3t7/is5d0LLXrIrdvD5yv9ghAADsBgc5AMDmcJADAGzONejeZuzbRjWf51ooY5u2WevL2K7o6Us6d+U6Rts+tWyA0d6zlmyD3ztJu6/4yF27NqeJtzbq4qqJq2ZuNfIx9uZ85A5t16Y/EK/So815w8+iWva1j8/0abuPri3sOxwTcz/6vbX2Hkue85P2bW383pY08sdjQ96BwBM5AMDmcJADAGxOsB/+lq4/qS2wcB0nw2TSRKFSopVEQrW6eeySXOJS9E1H+rt79dUPM2nFWRWd1FKRUprIJ0lsL5/cEmnlsNVPZUeRUsLrMbJH7DZ07JYCpkzAx3xhLyeX6D7OFlhKPfdrh+uE1zrfa61zjx+761TU51rZAFL0AQC+FRzkAACbw0EOALA5MUX/N3T9qXbjqXQIquj2Y43J+TXvjdtwT8dT6b3uPd9H16rd0JUJiNdRnXtecjVYCk3nnkwTDzq4S9FXS+Ggp/vYw5ZDZy9srfRYFPRdew+ydtCuNf398X1D7IvuZWKt7m1S8mVttcuP1ddNGrvOhfFCin5NX3dWRZOyn+zLEzkAwOZwkAMAbA4HOQDA5lzT9m2lFP0H51oTUcrMFa/jtOxM515L0Z/7vd3aU8vYvrnYpDRtPx907nlp2tih3pSqzbrbqw7ej50m3tqoi/8ca/TeKj5y0XcvrdPFRSI/FaN7Oy94qZRrO55Kn7ZVK/nIH7+H2j2ZcUWLT0rG3l7mOQDhHow27zT9cB09rOQeeCIHANgcDnIAgM3hIAcA2JxrUAv1H2xNlLkolbVVK+nEv6F920qtlXPbt1VqrbgyttpaTOY73Tj+LcFcp+Ajt+3ZWosael8/xWnirQ26+O1XopEbLuoVX6Gke3d/i8pi+7H60XX8Kn/zGq5j7rc1qWuisePwaP2Uuo/c3b8ZF/T0kk6fXMd7w7NWbw/ONZ7IAQC2h4McAGBzrllp2ltFWjnY9SfMrUggBfvhmq3RSBWVdP7kni5uX1dyQOWQsNZIIolVcYxNStN2ckmQUlxKfpNytEZKaW2UU1RKuUnscL8/rtO5lCBraGvzgrQyyCXjlJNadM7aDVsbZY0gu8jaXobR9H0bO5/T+TR1fiXt3ln9VKp4MXMnSiBe7nG2WD/miRwAYHM4yAEANoeDHABgc66l9Pik+ufFpt2bcSW2NZ/eb3Tjmi3Q7/u0bvcntW+zKfjJfKZl9zp41M/NWqOff4xN+VnVvc04aOKqr78Yi6Er7arp+wXdO7YlM+OkPZtPPZ9r4nFtEmt04xVLYSV13v4NoKBHV0rTVnX7ca1v4TfMJyn6Qxq+7HshRR8A4HvBQQ4AsDkc5AAAm5P6yH2KfpuOnW9c5yu+cR2npWkPavEl33iytuQNty3k/L7NpNm72HCd9O8Ot/tf3xkP2nwSe3Pz6nt3pWgV0cR777im5IcU/X7s5lpr7VV95C/3v74T23u6b8GPrrEvXaz8/JqU/Hid5mMPe8Mzz/ljc621O6VdH1/rNP7wCHs0dT6sfTzW+sbTfdHIAQC+FRzkAACbcy114xEuFavikv3QXCeRG45WJazYDfPrVCyF87V5h6BexpC5LGXfyCVBVhoqSiaSh5NHQop+QS4xZGn3vXxyuUqsru1kmUsieTgJJEgpbq3KIzIeLJGZlOLsic5uKPMrlsKVzkMrHesrFQ1Lkk1Ye5vHik1weHR2dkMZq90Q+yEAwDeDgxwAYHM4yAEANucaXFxnadkrqf8FS2FmPzx6nYrdMFy3YinM9jUdjlypWlumtrU7enXBUlixBTqr4gqaLu86+7hYo4m31trl6uyHRhNvLbEfOlug6sRz3diVqdV9P/buv0709ZKl0FkV5+OK3TBba0vVFjrW55r44/fkrhN++I1GHuYoYwsA8L3gIAcA2BwOcgCAzbmm7ds6gSjrWF/ybJvU8+w6zerG8/GKnl5Zm+nrXk83axfuIc0Gtt78L9K9HaLRXlqh233oLN+tdZq4xsrcTWNNGn7Uqud6etTa9f6Nnp75ynstW27/d+jemfZeStFf8JHX0uyNXn1iW7ixsjE+cgCAbw0HOQDA5tzpEGTGJUthIfW/KGNY++FC2n3FFrhmP7yZOV1rYjVlvyBzRAnnNp/T98ntu5JmrxJC/xkK1r/CvmrRezVp93qdXj7JUvRVejloP9T34XY9XpUwSBOv89ia1c9ZFef7hLWFzj0hPpNATDq86+RTsRuGcZai3/8QO7uhjC9BbUNaAQD4VnCQAwBsDgc5AMDm3Clj+3gqfUm7lgu72DNL4FauM3azeXxfnV/qEOTK8lasfpmF8KSSsYpqp8PrCd3hx+cI1eZvvV5duV+9B6ORp517nEbuNPHWWrt2lsKr7Gu78XgL4XtvPzQp+Pl1stjH5mKszLkuOSsp+qXUedWfzXXT8rLz+aiJP34dV6oW+yEAwDeHgxwAYHM4yAEANif6yIWLLU1rxqXYlXZzfly6p6P7Nm2V9vjatFyuwb/Wogb+rFT7Xp92PvHWgof70reCqzxyqFYdNPK5v9uWoi1o4h97Gd3baOZpmr3VyDW2ybyJXSkZ+yTPeSlFfyV20O3nHvN78yV9vfCHRJuij48cAOB7wUEOALA5d6oftvk4lUCOyTCVlPwwXriOUtm3Zj9ckC0K9//oPqcSOtTY3w/HOZUx1GKo8Y/eh0o4xvZopRS5x4qUonvrdZzUEvcpWBWl4dG77RDUpnPxOlns/XWttdPkkdbal3T9Kd1Da+3mfjCN/dDZDVsb5ZNgN8R+CADwveAgBwDYHA5yAIDNueo/XIwOXiovG/Y14xNT9FPb4DBnrH9l++H8OvG6bp/CRmfq3oOOnKQk34wefZvruZcgYi68iYrR4qNm291HopGP5WU1fT/RvV2HoIL9UHXuweoX7IWJpfDV6d4revr9+7sX662KMi5p2RVboI5v87nQ7d7slZSmHdLuM4385fMPlEETRyMHAPhecJADAGwOBzkAwOY80OrtWSn6hX0FW5rWUdC509K6hessSb9n6eAFS/ZNNGYtA3u7zOesZ1tfTPL3gL6scNC5Q7Dxqxv/evCGu273WTq8070zPf16mc7p49b7da6nV3Rv5zEP4xXPuSkTUClbq+NSbNDa52n4oexupsU/q31bF/vy8i5zMm4AALA1HOQAAJvDQQ4AsDm5Ru7mCm3hKnp0xQseWPCcV1gpP/u0uicVgv+7n9PXpprtbT6nvuz+fdJaKolGHvzHPUGLf1wjt97w4Nk2XvCkJdtQP8Vo4jqvmvK7i1X9vKB7p1r2q4ld8ZybfW1rNBmn5WZNSzn/9wDd15ebfVr7tkEjH+deKWMLAPC94CAHANica0jJF0oSiJtbsfMpK+Vmj+5b4DTLYHohN6fywjiMnc37X/nmdkOd11/HtSzyIEGd+caEe+zlkiS2Yikcugk93rlHx5VOPk5K0dg8JX8cv9sU/fnYlQnQ2CULobMqNpE50rT7/usszb6yr7MUZmn3faxaCo20EqyJ2A8BAL4VHOQAAJvDQQ4AsDmhjO1a2r2Zc6yUsS1wasf6L2JIh8+CXRssbeGn9Fqrvla1Y3Wbh/dU3qhhWtsKVkh0736sJQaixmkshcbW6CyDd8fd3pnG/G5S9F2p2ndjGbx/jy7WjIPNcX7dWsf6JPbVpNKnJW9v81ijmes1YxlbMw6auIR2e0VNfJ6G/ypzr5SxBQD4XnCQAwBsDgc5AMDm3EnRd2n3Zi6jks5fYCmdX/kTUucN0ftth3btRbXTXoILqcOad9xpj/qeOR/5wmNDqnu7Vm/60XPecH0TX+fadUiHd15xo4lrbKZz9/p0JfZj/v7Xd/cynnPrIy9o76XUednbtYHLrmNL0+ohopq5ScMPvnGThp+1b+vT8FUTV82cJ3IAgM3hIAcA2JwgrZxWefDUSoMLe/2JconRQGJ3nsdfwLBWpRT9dfdNfwXs5lwFw9YGK2Mo8aD2w/5GkmqHwVJo5mIXF2M/DL+Cd/+Q2A9955vHpRUnW+jeqTxiUvSdlBLWnmhVbBW5pN8rsQVa66KWh3Bp+JWKhokMc3kdZQ0rrZg0/CCtmDT8YD+k+iEAwPeCgxwAYHM4yAEANiem6Btc2dp784/u9WWWwS/Sy4Ns7IIrWeuZBa/ToEMndknR1616LTI0u9f0/leje9tSAMUUfad721i9rCkvq+9TsCqa1Pmsa87VzJnOPnlpV5OiXygLm5cCeHzf4T4KXX7eE2tfpTRt/DvEwdK0hVK0rbV26a4Tde657q0p+S4NX+eu2A8BAL4XHOQAAJvDQQ4AsDl3UvST8YOstHb7XSVjn4VLrQ/Kr4nNUvQr+6qPuX/Pg8dcdeR+n1DytlDGIZPMjS5uU+kLPvKYvv94mn2mMfu2ahXPtknRr7ZKG9rPZbGP7zt8ThfatVXWPq00rStT25LStK+Pt29TL7hLw4+xaOQAAN8KDnIAgM25xt9RDSfJLuW1f4DUkloKL27S7auWQvX+fc6HdP1gq+sGb/rrYSJ59Gn3+uuthA4WwzO/N5m9sr+sSaUPUoqTT8I+EluoSmir75mUfB2HqoorlQZDGQEXa65TqFKYdvlx92C6/GRrlyoaduPUblioaPiqUsvQISixHw7VD8V+eEFaAQD4VnCQAwBsDgc5AMDmxBT9b9xhJ7e7Pb5VKDfrXnyww/XaXXIPRntXjfDyPtdzVTPXywx6b/Z9vEwHaxTK+zodXHVhq4O7ErdNNdliir7RjZ0OXtKuM92+tHZ+3VLnHtXEV/R0d92gvS+Upu1L0b4mGvlCadrr69v//zrr+tOn4WtKPvZDAIBvBgc5AMDmcJADAGxOXsb2VtBOZ+t2pHj7N6NlV3Tv6KXu33TR5d/neuLl3Wul0UfepT7rddz3vfKZSN5T+5HJut1375tLH/+YP5g6X4iNa5PYo3p0QRNPr7NQxrYUezGxydo2pOgndbWHMraPl6bVOfV7n1Wa9kenl7fW2g+z9vVCGVsAgG8NBzkAwOZwkAMAbM71u5WMDTjdNdOyK7Eljbyv9eF1vlED1W/WXDMPOnEoYpHco4s9ifTPKL3uXXj/S37vxJvv9fQT15Y08mP76nxeMrYQ2+nRThPX+eD9di3YND6Jbc4bLjVQ+tK0Wbs2rZ/Sj88sTfvj5VNDV038ehn1dZ7IAQA2h4McAGBzgv2wJLV8lSxTkTwMlbT6yq/yH+PH5RIrw4S0++6eQqceo4+EhijyK2p46fO14SqF77uVTwolE/KuP/3XhdgsRf80++E4F0uufn6t6fsutmI3zO6pZlWcW1+dlNJak248fl+bWq9SSljr7IcS2kkX0X6YSC3dD8RVZZeF0rS9nPLXy6/pXGs8kQMAbA8HOQDA5nCQAwBsTp6ivxlpSzYTO3ShL2vkx2KDnvs+1whFQrujBXdrQwp+Yj8ctvEi+NE/jQSdO1xY4l25WaOZ5+3DKvbDybokNq7NYru9Q8nbcdzcvhVLYcmqWChN6zRxmc808Thf6HbfrX1R+6Fp1+bsha3dsyd2lkJTira1MS0/K03ba+Ya+9cL9kMAgG8FBzkAwOZwkAMAbM4fqZFnOrcrGetiS7q3aSWWrzXadWs13ft97rkNYrUrOZyZvwd5/UkliNMytkb3Tt7/sTTqV/nI5Z5KGnnhOk73zvR099orafeVUgBGE/9YW/CRh5+dbhzS7k1pWtW1Vfc+2K6ttTENP9PI+/EP0bljbKenX+bp+63xRA4AsD0c5AAAm7Mmrdj066S8Xim1vrC0JJcYCUSnVmSZglxipZYgpZhc+jAl5QnO6vqjmG9OXu3QxMs3wEktz7MfPh4brnOmVdGkzofXs2Ip7K9TSLu3UkprrTn7oX4wdb4buy4/rY0Siet835pUMCx0+WlttBS6Lj+tjZ1+oqXwl4x7q6LIMBdS9AEAvhUc5AAAm8NBDgCwOX+E/TBo4JlGW0mHP0rB7hbmK7q3Scn/CJ58fe8mhtjH7YbPxJexLejeX2Y/lOs47Tr7W8hZXehPKo/7cV1jKXTd7itp90YT13tINXH9WXJdf4Jm3uner3NNvLUkzX6hNK2zGGqXH2c//Fv2wX4IAPDN4CAHANgcDnIAgM05VyMvtPW6za28+b5HPeiJN9xq1+nabiCaeKl9W8Eb7se+bO1K+7Zhn6I33K61PnKdWylja/YtlLGtrM21azNXSLOP13FadnKdo2n3ThNvbfywZZq4drs3PvIX1a77MrbBRz5PnVefeNS9TWla066ttdEr/ter94b/6MaqiavnnCdyAIDN4SAHANicIK3YdPhQWnC+8Wlp9cXrWAmkItFkv/ZbuUTWOqllxVKYSS2PzuXTj7MkpZxV/TCJLUkrx9L5dbxWKdGMQ/XDpONOqRTAsW73pbT7gpTS2iinRLnEdO5RC+FF5ZPPsVY3zNLue0nkRyKXjPbDce5vkUvG6odyTxfshwAA3woOcgCAzeEgBwDYnNx+OGhJJ5aiddp1svZot/uwj9O5dWNN/w1p94/NffzD5Ots7PRzGV6yFP0nEd63nkqZA50vrK1o5PH77GJl3xNL0w73n3XuGfbNutDLeLiOL2NrdW+nmRfS7oMmnpamfe++9mn3Q2na0OVH0/DfprGqiWsH+1eje//1Oi9NG9P3x3Gvmat+jkYOAPDN4CAHANgcDnIAgM25Lvm9VaO12nXS+m2yT7q0oJ1eVNdTf7eNfVwzDx5zfZ8Oa+RJ7DA13u/RFPy7e1dKBR/0gof5BY3c6eClMraFWJ1fKpdrtOxyGdu+JVuip7ej3e4LafdZKVrnFY+laEXb7u6pUoo2eMETH3mve6smHtLu+9ige2uK/tvdr1uLmjlP5AAAm8NBDgCwOdF+WLEU6tKTfuXOLIWuyF+lKmEptiK1FOQSK7vo2kwesVLLk6hYRxeklVJ6/5OqH1ZT9K3cY6WV493tV6ofxgqHc2lFY4dx1rmnUMHQWQx1LnTY6e2Hptpha1LBMOnyo/bDMZVe0u6N1KJSyt8vP2X8uVbvAfshAMA3g4McAGBzOMgBADbngRT9zy9XrIorafbWjlgoL3tmKdqgmQ+5z7rWdBtK9PSLkd5XytaWqJT71duoWAh1rSkh+3VlbB+75t3rlkrTGquf0fzT7vZur2BrNLZBp4nLXk4T1/mKJq7zThNvTVLnE428H8fU+Xl3+9ZGzVznXKla1cSdNv/3RayK2A8BAL4XHOQAAJvDQQ4AsDnXYGSumMELbb1syr5MVnzlaeK/0U5PK0V7J35c696o57VvexoH27nZErf39rVp94/HLmnkTuM/0xtu2rdZLb7S3V7vKaTZj0PnDQ8lKpxGvlCK1nnFs7T7q9HINQ3/x8vcR66p9M5H/rcpRauxep1/RDMfUvRln38uaOQAAN8KDnIAgM3hIAcA2JxrxQd8SfT021z2LrXxqqxNKuuObaUS3btUilY18T7eeMGVWxBA58NS+7aqfl6psVNo53ZUTw/zT9LIl+7hSd7wtF6K09Ozlmz9XvranQ5e8obrnLZgm/vIQ7s206Itq58yeMONJq6xqolnPvK/D7Zv03opsVTtp2aumvgPNHIAgO8FBzkAwOaEFP1Kt/vUJvjwvolko2v7X401dV6v2w8K9sOYZj+/h9ZareuPmbMyjK3neyIlmeXxtWnsQtr9YatiVgb2qOSh4xVLod03kVJcJ5+kNO0gn6iFUKWVbl8npbQ2yikVKaW1Wtp9L6dkafe9nJLZD9Vi6Lr+qP2wl0/Ubqgp+2OHILEfSixP5AAAm8NBDgCwORzkAACbE+2HRq+OOreJzTL/C228Ypu1x+Z0K2dN1IBqir5t36bXNXp6KDnwu9LwO2y52WfZDWU+tRRWyuU6+6ErGZvp0c+yFLo0++SewgfItG+L5We7bvcae1HNvJJ232nkBU28teel3Tv7YehuH8rYPm4p7LXtNPbyeCxP5AAAm8NBDgCwORzkAACbc0cjH4djiv5CrOBig+73Pgb08UFTdnq63oOuHe5B5lTLdl7xTNc281Zff6ZeXtG2H1wX1q5o5F+Uzh8+e06n/13ecJdmv9KSLYy7bURjjqVpP8dOE29t1KNftUyt6Nyqofc6uGuNpvNZ2v2oc0t7tlctYzv3hqtv3JWmVd94r4lrrO6jsTyRAwBsDgc5AMDmhBR9S5qib7r+GDti1rlH9Ya+406wCerSo+n8mQ5jMp+t3fBuwINzX0TW3b45ucTtlUkp5jqlVPqkk0//zUq7/FTuoWIpdJLIiWn2Ie2+G7sKhq219nKZyzCuk49aBuP4M7YipbRW63ZfSbvv5ZSKlNLa8YqGNasi1Q8BAL41HOQAAJvDQQ4AsDnXm2hSF/UC9nqiiI+VtPtgMby/7O4/RA291zjlnkwnH1t6Vm4qTbNPWxM9Npde5+HJhJXStIW9KlbFSlnbmkburX6HS94merTV2/UbXegmtJJmbzVy093+Yzzv+hM08stcI3dp9z8SPd1ZDM9Mu+918YomrvOV0rRqIYxWxV/zWOyHAADfCw5yAIDN4SAHANicNEV/HD/ekk3LXAYtW73iQ6xcxrZkS9L5X+ah1gteiG1NtFWX+++3/bKytakO7jhaqvZEjdyl0uc+crevxs4952m52UIZ2zE2SbPv9rq8+tR5V35WW7I5HVznXkL52U/tV9PuVff+MaToq84tvnIzrx3qdW0/79qzfayde8GdJt7aqG07Tbw1LU3rveF97F+yj455IgcA2BwOcgCAzQnSSrAj9pKIShzGYugsgxqcKRGuO0+UXYyfT27YVjTMpBS5pUr1QyefLEkeC3xJF6BUWrnN5wtySa3z0HGrYlql0KXSOzvigoVQ0+5VArkYS6HaD3tpRVPnQ2y3l6bV2wqGF28/dHKJm2ttlFOclNKar2DopJSP+Hnafaxo2FkKk4qGfzmrIvZDAIDvBQc5AMDmcJADAGxOLGMbOux0epxJ32/Nl5eNGme3r1gGMwfe4U4+6ikMFsPu/t0+9ziahv9VZWsr5WYrawu6d8VuGOIr1sWCVTEvY2vKy2Yd7Ie5gqVwJc3edLdvzafdB9272yvrbl9Ku+8Oh1CmVg6Ov6SkbD/vNPGP++j19OOlaFfS7oOlsFvrNHGdj1ZF7IcAAN8KDnIAgM3hIAcA2Jxr0OreVQeffN1a/G+g94pr+r5Ju4/eb5/OP5TAVT20Upo2xPY5+s2TeNLtdf4ESl7w+QtYKkWbaeRuzmnZlRT9TOd2sa5dm86veMMX0uxt2r18X11Ltqy87NWk3buWbBVNvLWx3GyYC2Vsj3nDXXu2u2uNlq36eq+DO01c9/onpO+jkQMAfCs4yAEANoeDHABgc+6UsZ1XPlGNUP3fTk8MXvGhFK1sI3VZXDu3TH8e6r+slLFVJGDQ7Sua+JnFVQoXPuwbl/mSRp5dx/rIH6+JUvGRl8rLJu3a3PyZ3vBKvRRXfvaqNVFM+VlXL6U10cgvXk/vPd1xzpeb7XVxp4nrfOYNH2utPK6Jf8zP66c4HTz1nF/6+5e/O8iYJ3IAgM3hIAcA2Jxr+HVQ/Xym332p5K2xGNoOQK21i8oYR0vTCql1cZjUe3o4NLEyPsmbWFRsXDq827sil6S2xkqKfsF+uFRe1loI/dqvsBRW0ux1XqUUV352pbv9VbvbmDK2ebnZXloZpYlwT6a7vbMYVqQU3Xsl7V4thv1rVbvhP/p9bQAAsDUc5AAAm8NBDgCwOdF+6FL2VRB1JW9fVNSUtV2ssxe2lqXdG/28tbXStP09JS/nsNRdWbfiVMzK2FbWHtS918rYFlLps9hhLikvazTyYClUN+4XWAorafY677rb63zWkq3Xp1XXjpr54xZCtdn1Wrbue5alMLcqPt7tvpJ2r6/1n6E8rvw9o43wRA4AsDkc5AAAm8NBDgCwObUytlls99/CTQTokM4/pOg/rnO3lqTSB7/3zcTOhWPbnu3eP1zMnOPEDP1KSzbFp+yfo3tXfeSH0+6VlfKyBY08dEL8Am94mDOauK5VjdmVn3U698d831ZN0/fnurdLq/+INWn3Yd8Vb7jznM818dZGXXwl7d55xVUT/0cSEXgiBwDYHA5yAIDNuQZbnbMjBnnE6Q9a7XAee9GLSsq+ahW3fm/9ddZZDI3sEq5YtROeWcXwKJWyi6UOQfNx+rKPps5rfEWWKXTuSasSDvJIm87dHX+BpdB1s28tpugPlsIQe46lsNLdXtP3M2mlX/u32vdenIxR6RD0uJSi82em3f8Y5sYP3w+kFQCA7wUHOQDA5nCQAwBsTihjqzrgrdfFrSbeREN3/rxxeHvXe0jy4SvatkvRD4un2z5gKey01CdVpi3J8IVStOl1MpugmzuaOq/XrXSsN6nyum8lzd6l1bcWNfKvsBSqBp5ZCnstOytN2+vXlU4+ldK0QQMvaOZOE/+InXfu8Sn6Kxq5zs2tl1nafa+Lqyb+92WM5okcAGBzOMgBADaHgxwAYHOuqvPdxMN9GdLuZbXzlavQqosH7V1DvZgdfOcmtr9uqokXROhSq7cnUdPMz9G54z0U0uyVLM2+oJEP+RCJlu185OEWOm3YpdV/3IPRyJ/kDc90bucNd2n2WawrP6up55Xu9pVu9y4lv7XW/rrMr+PLyz6uieveThP/mH887b7XxVUT/3F5HcY8kQMAbA4HOQDA5vw/ILRFs71SPysAAAAASUVORK5CYII=" id="image06394bdc3e" transform="scale(1 -1) translate(0 -265.68)" x="102.96" y="-41.76" width="266.4" height="265.68"/> - - + @@ -86,7 +86,7 @@ z - + @@ -126,7 +126,7 @@ z - + @@ -161,7 +161,7 @@ z - + @@ -207,7 +207,7 @@ z - + @@ -264,12 +264,12 @@ z - - + @@ -282,7 +282,7 @@ L -3.5 0 - + @@ -296,7 +296,7 @@ L -3.5 0 - + @@ -310,7 +310,7 @@ L -3.5 0 - + @@ -324,7 +324,7 @@ L -3.5 0 - + @@ -567,7 +567,7 @@ L 189.5904 99.903958 L 186.92928 100.498154 L 184.26816 101.274256 z -" clip-path="url(#p94ac23f9ea)" style="fill: none; stroke: #440154; stroke-width: 1.5"/> +" clip-path="url(#p647eeecee3)" style="fill: none; stroke: #440154; stroke-width: 1.5"/> + - + diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_freqs.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_freqs.png index eb1a29a7a83c..2c458150af68 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_freqs.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_freqs.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_noise.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_noise.png index a9e3c4d20791..465a029c8e98 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_noise.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_angle_noise.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs.png index 6e3a21bcace3..a766ce6f0e42 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs_linear.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs_linear.png index 6e3a21bcace3..ffbaea3bfdfa 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs_linear.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_freqs_linear.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs.png index ce598a5fd2ab..7722f72e13c5 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs_linear.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs_linear.png index ce598a5fd2ab..74507682cbdd 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs_linear.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_freqs_linear.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise.png index 4d25d92b4010..c3b484da7a24 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise_linear.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise_linear.png index 4d25d92b4010..0f54ea20b947 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise_linear.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_magnitude_noise_linear.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise.png index 584cf973d51d..7c253e92f9f4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise_linear.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise_linear.png index 584cf973d51d..0d40e285c5c7 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise_linear.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_noise_linear.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_freqs.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_freqs.png index 2deeb4e12ac4..f11ccdc3fdce 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_freqs.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_freqs.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_noise.png b/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_noise.png index 5980e91135f5..c7ac679392e1 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_noise.png and b/lib/matplotlib/tests/baseline_images/test_axes/specgram_phase_noise.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/use_colorizer_keyword.png b/lib/matplotlib/tests/baseline_images/test_axes/use_colorizer_keyword.png index 9d6f8b9c6f63..24fb2e78b0ce 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_axes/use_colorizer_keyword.png and b/lib/matplotlib/tests/baseline_images/test_axes/use_colorizer_keyword.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_bbox_tight/bbox_inches_inset_rasterized.pdf b/lib/matplotlib/tests/baseline_images/test_bbox_tight/bbox_inches_inset_rasterized.pdf index 17a80ef876d1..46facee23546 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_bbox_tight/bbox_inches_inset_rasterized.pdf and b/lib/matplotlib/tests/baseline_images/test_bbox_tight/bbox_inches_inset_rasterized.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_extend_alpha.png b/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_extend_alpha.png index 68cbf3d341f3..411a2511dc54 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_extend_alpha.png and b/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_extend_alpha.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_keeping_xlabel.png b/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_keeping_xlabel.png index 410b9f5b0878..e3f82d44d3b4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_keeping_xlabel.png and b/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_keeping_xlabel.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_colors/light_source_shading_topo.png b/lib/matplotlib/tests/baseline_images/test_colors/light_source_shading_topo.png index dbfb1d425665..b014a8f1eaa5 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_colors/light_source_shading_topo.png and b/lib/matplotlib/tests/baseline_images/test_colors/light_source_shading_topo.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_colors/test_norm_abc.png b/lib/matplotlib/tests/baseline_images/test_colors/test_norm_abc.png index 7f621591e000..c2169461d075 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_colors/test_norm_abc.png and b/lib/matplotlib/tests/baseline_images/test_colors/test_norm_abc.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapH.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapH.png index b1081ba44d0a..189474e52df0 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapH.png and b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapH.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapV.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapV.png index b4a1133e5eda..231615afb00e 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapV.png and b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbars_no_overlapV.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_suptitle_colorbar.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_suptitle_colorbar.png index 582872077ee3..df4ecaf939c7 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_suptitle_colorbar.png and b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_suptitle_colorbar.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_supylabel_colorbar.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_supylabel_colorbar.png index 9754ac57ad65..cd6e38e62f00 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_supylabel_colorbar.png and b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_compressed_supylabel_colorbar.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/affine_fill_to_edges.png b/lib/matplotlib/tests/baseline_images/test_image/affine_fill_to_edges.png new file mode 100644 index 000000000000..88858eda5d94 Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_image/affine_fill_to_edges.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.pdf b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.pdf index ad7f762c7a0b..4fa9dc748b02 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.pdf and b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.png b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.png index eef9639a3324..0d2b7b459ecb 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.png and b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.svg b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.svg index 1e93d3be191b..268c9d14f605 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/bbox_image_inverted.svg @@ -6,11 +6,11 @@ - 2025-09-29T15:01:35.415119 + 2026-01-30T01:57:12.969851 image/svg+xml - Matplotlib v3.11.0.dev1393+gfd8d60293, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -38,54 +38,54 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAAfAAAAFxCAYAAACMQPqbAAAHvUlEQVR4nO3XMY7sxAKG0fLcfmREIPGABCT2wAYIWA97JScjehlPzNxu26wBtaWar+acFfylsvtrb7/++Ns5VvDYZy943r7AGcYY5wp38XjMXnCNZZ6p/n2cq9zFvX8X41jjLl5mDwAA/j0BB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAoNvbD1/P3nCJ7XHMnvC0bT9nT7jEtq9wF/0zjLHOMzUWeL9fjv4ZxhhjPPbZC562LXCGMXyBA0CSgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQNDtr++/mL3hEtsxe8HzXvbZC66xHefsCU/b3MW78vLon8Mz9X5sCzxPY/gCB4AkAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgCABB4AgAQeAIAEHgKDb/79bo+HbMXvB87Z99oJruIv3Y9vP2RMu4Zl6P1a4i5dF7mKNegPAByPgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQdPv7v8fsDdc4ttkLnrbtsxdcY1vgkVrhDGOMse3992KMNe7D+/1+rHCGMXyBA0CSgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQJCAA0CQgANAkIADQNBtfPs6e8Mlzn2bPeFpx9E/wxhjnPsC/wuP2QMussB7McYY4+yfY1vlLvbZA563LfJbu8AvLQB8PAIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBAg4AQQIOAEECDgBBtx+/+d/sDZe4759mT3ja41jj/9QK59gXOMMYYzz2Rc6xwH0cxzZ7wiX2BZ6pVe6ifxMA8AEJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABN1+/uqP2Rsu8XbcZk942v38NHvCJT4vcBdve/8MY4xxP9f4j77CM/U43MV7scpdrHEKAPhgBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAggQcAIIEHACCBBwAgm6/fPn77A2XeD3/M3vC01Y4wxhjfD4/zZ7wtNdjjbu4n7fZEy6xwrtxX+C9GGOMtwXejVXeb1/gABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAELTtf/50zh5xhfu5z57wtLfzPnvCJe7nMXvC014XOMMYY6zxRI3xem6zJzzt9fw0e8Il7mf/u+/1vM2ecIn+TQDAByTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQJOAAECTgABAk4AAQ9A8r07BhJj0o7QAAAABJRU5ErkJggg==" id="image71b1f6d208" transform="scale(1 -1) translate(0 -265.68)" x="57.6" y="-41.76" width="357.12" height="265.68"/> +iVBORw0KGgoAAAANSUhEUgAAAIAAAAAYCAYAAAAyC/XlAAAApElEQVR4nO3awQmAMAxGYStO4dkBHEJwAZd1C6fQKUQX8JIgseZ/373QQ/paxDKV5WqQwrpv5jXt+9vAn3RfbwDPPKd57kfzGgogjgEQxxUQxJp0T849KIA4CuAQ9UCLQAHEMQDi5K+ATDn3oADiUhVA/TR7UABx1RaA0xyDAohjAMSFXQG1fgtXRwHEuQrAAy0PCiCOARBXzmMw/xVMzvOgAOJumtkf3vy6cVcAAAAASUVORK5CYII=" id="imagedbcf58305a" transform="scale(1 -1) translate(0 -17.28)" x="46.08" y="-259.2" width="92.16" height="17.28"/> - - + - + - + - + - + - + @@ -94,47 +94,47 @@ L 0 3.5 - - + - + - + - + - + - + diff --git a/lib/matplotlib/tests/baseline_images/test_image/downsampling.png b/lib/matplotlib/tests/baseline_images/test_image/downsampling.png index 358e5ef2d88f..ecd912cb5bed 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/downsampling.png and b/lib/matplotlib/tests/baseline_images/test_image/downsampling.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/downsampling_speckle.png b/lib/matplotlib/tests/baseline_images/test_image/downsampling_speckle.png index 7c18bc89a9af..26d3fae92a6a 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/downsampling_speckle.png and b/lib/matplotlib/tests/baseline_images/test_image/downsampling_speckle.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.pdf b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.pdf index f5923c481fa7..f4d80f2a5ec4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.pdf and b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.png b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.png index 880cc891887b..301a55c03ad5 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.png and b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.svg b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.svg index dd6884710e69..47b489e391bb 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/image_alpha.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/image_alpha.svg @@ -6,11 +6,11 @@ - 2023-04-16T19:11:24.492650 + 2026-01-30T01:57:05.781655 image/svg+xml - Matplotlib v3.8.0.dev855+gc9636b5044.d20230417, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -37,7 +37,7 @@ L 72 150.352941 z " style="fill: #ffffff"/> - + @@ -239,7 +239,7 @@ L 229.552941 150.352941 z " style="fill: #ffffff"/> - + @@ -421,9 +421,9 @@ L 387.105882 150.352941 z " style="fill: #ffffff"/> - + +iVBORw0KGgoAAAANSUhEUgAAALYAAAC2CAYAAAB08HcEAAAC8klEQVR4nO3cMYqeBRSG0ftLCsHYOmBptiAIgqgIip2pBoug01gJdraDYJfUWo4MCFaDnSBYzAKyBMHOdCIopIh8KbIGufBwzgbe5uGW9zTfHpez4PjrtDE7549+WNmdmbmYq5Xdj0/vrezOzPxxfLey+9LKKvzPhE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJuk08+/Kt9V/nr66MTt37/63sjsz89OznQ+zT44vVnZnZq7nwcqui02SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbpDvHV6+sDB+vr8zO5dIr35mZ8093dh/MmzvDM/P4y3dWdl1skoRNkrBJEjZJwiZJ2CQJmyRhkyRskoRNkrBJEjZJwiZJ2CQJmyRhkyRskoRNkrBJEjZJwiZJ2CQJmyRhkyRskoRNkrBJEjZJwibp9Mvx7uXG8Mun243ZeX9+Xdl94Wxp92Zpd+Z465uVXRebJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEk6fXj8vPJt9fr0ycbs/Liy+sLD4/eV3T8v7q3szsx8f/XZyq6LTZKwSRI2ScImSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZukO5/P1crw2c3K7Hx0/42d4Zl5bb5e2X376reV3ZmZ278/WNl1sUkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbpOcW2THVhlsXJwAAAABJRU5ErkJggg==" id="image2b7b2b7d47" transform="scale(1 -1) translate(0 -131.04)" x="387.36" y="-150.48" width="131.04" height="131.04"/> + - + - + diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_bounds_handling.png b/lib/matplotlib/tests/baseline_images/test_image/image_bounds_handling.png new file mode 100644 index 000000000000..1296975ba64c Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_image/image_bounds_handling.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg b/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg index ac14e6b273f0..4d3d6a60a703 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg @@ -1,12 +1,23 @@ - - + + + + + + 2026-01-30T01:57:08.680939 + image/svg+xml + + + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ + + + + + - + @@ -15,7 +26,7 @@ L 460.8 345.6 L 460.8 0 L 0 0 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> @@ -24,272 +35,277 @@ L 369.216 307.584 L 369.216 41.472 L 103.104 41.472 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - - + + - +" style="stroke: #000000; stroke-width: 0.8"/> - + - - + + - + - + - + - - +" transform="scale(0.015625)"/> + - - - - + + + + - + - - + + - - +" transform="scale(0.015625)"/> + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - - + + - - +" transform="scale(0.015625)"/> + - - - + + + - + - - + + - - +" transform="scale(0.015625)"/> + - - - + + + - + - + - - - + + + - + - + - - - + + + @@ -298,151 +314,151 @@ z - +" style="stroke: #000000; stroke-width: 0.8"/> - + - + - - - - + + + + - + - + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + @@ -450,27 +466,27 @@ L -3.5 0 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - + - 2025-10-08T04:51:13.682947 + 2026-01-30T01:57:09.227057 image/svg+xml - Matplotlib v3.11.0.dev1425+gb39ccbe8f, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -37,20 +37,20 @@ L 103.104 41.472 z " style="fill: #ffffff"/> - + +iVBORw0KGgoAAAANSUhEUgAAAJQAAACUCAYAAAB1PADUAAABtklEQVR4nO3UMQ3CUABFUT6KujCwIwENaKgodiwgBg+tgG7kJj+QcxS84eaNy2vdTvyk9/KcPeHgPHsA/0VQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpARFSlCkBEVKUKQERUpQpMZt3LfZI/jO53GdPeHAQ5ESFClBkRIUKUGREhQpQZESFClBkRIUKUGREhQpQZESFClBkRIUKUGREhQpQZESFClBkRIUKUGREhQpQZESFClBkRIUKUGREhQpQZESFClBkRIUKUGREhSpHY7fCFESDBZUAAAAAElFTkSuQmCC" id="imagea26ae0a7fd" transform="scale(1 -1) translate(0 -106.56)" x="156.24" y="-147.6" width="106.56" height="106.56"/> - - + @@ -86,7 +86,7 @@ z - + @@ -115,7 +115,7 @@ z - + @@ -154,7 +154,7 @@ z - + @@ -201,7 +201,7 @@ z - + @@ -235,7 +235,7 @@ z - + @@ -277,12 +277,12 @@ z - - + @@ -295,7 +295,7 @@ L -3.5 0 - + @@ -308,7 +308,7 @@ L -3.5 0 - + @@ -321,7 +321,7 @@ L -3.5 0 - + @@ -334,7 +334,7 @@ L -3.5 0 - + @@ -347,7 +347,7 @@ L -3.5 0 - + @@ -381,7 +381,7 @@ L 369.216 41.472 - + diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.pdf b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.pdf index 8a09bd6a5a56..b8cd42f9dde4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.pdf and b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.png b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.png index 3ba3c6e53116..6c772a880861 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.png and b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.svg b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.svg index d977b05b0253..de9e2ca0d936 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.svg @@ -6,11 +6,11 @@ - 2025-07-10T19:29:50.453941 + 2026-02-03T19:56:08.323770 image/svg+xml - Matplotlib v3.11.0.dev1075+g945334b731, https://matplotlib.org/ + Matplotlib v3.11.0.dev1757+g00c32c31d, https://matplotlib.org/ @@ -39,7 +39,7 @@ z +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iKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDhABTFEURVEHiACmKIqiqANEAFMURVHUASKAKYqiKOoAEcAURVEUdYAIYIqiKIo6QAQwRVEURR0gApiiKIqiDtD/H4n4PyvD7BtNAAAAAElFTkSuQmCC" id="imagec134afec3b" transform="scale(1 -1) translate(0 -345.6)" x="122" y="-43.4" width="345.6" height="345.6"/> - - + + + + + + 2026-01-30T01:57:11.186332 + image/svg+xml + + + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ + + + + + - + @@ -15,7 +26,7 @@ L 460.8 345.6 L 460.8 0 L 0 0 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> @@ -24,64 +35,64 @@ L 342.6048 307.584 L 342.6048 41.472 L 129.7152 41.472 z -" style="fill:#ff0000;fill-opacity:0.5;"/> +" style="fill: #ff0000; fill-opacity: 0.5"/> - - + + - +" style="stroke: #000000; stroke-width: 0.8"/> - + - + - + - + - + - + - + @@ -90,61 +101,61 @@ L 0 3.5 - +" style="stroke: #000000; stroke-width: 0.8"/> - + - + - + - + - + - + - + - + @@ -152,28 +163,28 @@ L -3.5 0 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - - + + diff --git a/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png b/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png index 28a7ef2a66e9..8d3005b781db 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png and b/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.pdf b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.pdf index d93b352994ab..c7683cc6f939 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.pdf and b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.png b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.png index 0fadbb4b1cc4..292d3b1c0c2a 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.png and b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.svg b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.svg index e6638ad21189..977667d6abc2 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/imshow_masked_interpolation.svg @@ -6,11 +6,11 @@ - 2025-09-29T15:01:41.159575 + 2026-02-08T04:35:48.823370 image/svg+xml - Matplotlib v3.11.0.dev1393+gfd8d60293, https://matplotlib.org/ + Matplotlib v3.11.0.dev1781+g34b8e3347, https://matplotlib.org/ @@ -29,167 +29,167 @@ z " style="fill: #ffffff"/> - + +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" id="imagec211d42f6f" transform="scale(1 -1) translate(0 -50.4)" x="57.6" y="-55.44" width="51.12" height="50.4"/> - + +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" id="image83dbd7e4e1" transform="scale(1 -1) translate(0 -50.4)" x="118.8" y="-55.44" width="51.12" height="50.4"/> - + +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" id="imagedb195dd65f" transform="scale(1 -1) translate(0 -50.4)" x="180" y="-55.44" width="51.12" height="50.4"/> - + +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" id="image5d806340be" transform="scale(1 -1) translate(0 -50.4)" x="241.2" y="-55.44" width="51.12" height="50.4"/> - + +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" id="image7ce36a921e" transform="scale(1 -1) translate(0 -50.4)" x="302.4" y="-55.44" width="51.12" height="50.4"/> - + +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" id="image581ff47e8e" transform="scale(1 -1) translate(0 -50.4)" x="363.6" y="-55.44" width="51.12" height="50.4"/> - + +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" id="image6f0f0bd935" transform="scale(1 -1) translate(0 -51.12)" x="57.6" y="-149.04" width="51.12" height="51.12"/> - + +iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAYAAABVsFofAAAI8klEQVR4nO1cPY8ktxF97Obu3con2BJgSID/gQLDgX+APwArUeRUiQMHhkMpcWwBzgQoEiDn/gEODdj/wIEAA04dKJdwWp3u1D1NOujuGZL1Hpu8WSkSk92pfnxVLFYV2Rzuuv999mbE1gbYNhIZAIzOGRnrv3JYLAAMhENiCTuzQWEHwTs6ZbUez/cNgE8/hOLhAGAhnUYAS4y5zDnT/8JRYLdZDAXH4JzGFuwDBmqDwoaCd5U7LDHHppHk78NYdLAkaycrH1NsYihNzyyqBTahY+mcp9Fl2s4cWf+XTOWEw9+HW0FSxEEsnJGRk1kpnRkr2NYJqXKULW4cVqxrY978i3izkhtnjBiL8JzPJNHImTMVVjm5dOgsJmRGu0MVB2CdNCN3pp/i5q/t55gMck58mSrYnZQ5JKbYYLCsv+W4/LrjU2yLU2cyKZk+wjGS/gDg78MdVbh2siV2oGWXY3n4X9cfUCkveGnKt0W5vw+PL52IAlaIVyLiODJAZeDKbaOmyXmV2qM4WH/FsY/DL/GSeQsGM4NBGL1gNI7buUrHBXDHLXE0xjEbVjsGYsPaSvwCyxs224zjhF0A4L8Oj8xDHQEsWtgS3546OlLaeZm9TdEKVCPWP13utoesUF1vzPVYZUN7ustxHJQRP0f+9jQgonx2VhLtxnEG2rAuWOzuLIodBRYGC4DggxlHzbHZajUH4RxCEMiu84Of/p32B4A//+cdyxvtFizImbX61D5pgMP7b/1T2vLRf3+dYLm+cnz+q8XWnDNJR+iy9vR011WTKFY6jtum2v3y2MhoDUxk/tmJFeT2mlBrzxf7alJyKF2AdaK269hRexDICSdj8yxVQlxl5eyEODYZsrc5DmbVCXHMeEPyuHRcQK5vyfYnF+xub60t28vCzmG2G2Rs/vlyQ8lY2PY4BgCm4I1MpQPjllsKhj1Is3ScreXCfzVf0ooa2LHslu1+rodyn75257HGykfNNgDw83JZrVzPILZDoT/++118/PO/med/+vS3mL5cI6fHwV2OrBxxlu35ctPtYPeLf713OUMuOtdCtXRk36DUO9G35cR2fSnWvzhd6gIraz1G9ESekisHMe5vz0Hbi+d0skWzZpBS1IUV+noGda2zAO6YlNcvwcmHSJbIIYEtm1xjYx0rDD9jk+dB8DJ9SyJL9SmOfRujeP0p6KLWM8Nq8HyGhb4rI0faxtUdRqqfpjytxPdk1BjtkLb+VTmR9ThKO6/dBh+WynKYddrTQ0Cpge1YJi/7L1XswzvZl1vv/Oslm8PZ92gJWcywMFh3gE3lVNcBRyzHsXPkFHAuZrUJSMZcyH2Yi8jpmW2JZcL2meW6HiKF27EA4GOjc+i7XasRLmriQuwU9ruciK15M2qRNrDlJ/dYlh4Fhwl5ra9Mj4uuQkzTnNiV6DNuIPrSTx5L7XXfyVmQ66ORW45YxSreksPJgk/1UawzkZN+8m4+CnceHRnhYT065uA2sLC4/JppbXRUia1xeHcSYVy0Ws1xpnAwLOdl8ouz22yrO7zkKPNT9/QmEdVksTq5ecw4LhIjxHiZ3O2EAmsitVLvlc1G/6o4e+SHMq16ImcjZKWDEfHoU7zaBhup7duMelQX+5zhxDnooiGKGh2IsqHDQdwGwdxVDjjW1BzzLck+O2ZrCTriyOTKVoKNsLIzB7VBRKTBxvRH1QbF4YdiKa+lDyOUTmiVPwSW9m/bdAJ6HN4V382qFfhoOdZObZQpDrHPovvPztWM1v3kgx/YdVFiwFFTE9WT84wjCmL+2tBjA1lICqzP7vSwRaBVodpI0y1AhUMtRAQrbWgZh9iGuGQb4l2yWumUyviasC1OPUqHo8g9tEFxHI5j/cWPUxtJj8IjeU996qplD6zvvJT37EHEitq3X2nUt3+8Wl+jg9KxeRdUsWBKHX/cEbovO8jvUt/++JxWbURRyCv9G4xpw4oQbtT3MqllXh+uqQe1dGG8PakMxGbbpC6KteBz5JgTNrV8k6VzX2ZdRLaMRpf8LLAPviQnHJ9+8j55uLaf/eHDjPrCuQ/C9vHDSZ+hNkVLBPzziJtnC4YpINwOmJ+MmO8covz2jouNkypLubHjaNk/JZSNEejH6fjwh9eGVeiWiMefT7j97AvE+2dwr/4A409eQ3zjFue7mA9Sc9qxrI0Tx9f2Ur56/6eo3jnZ6tRhiRi/PiF+8RT/+PyveHv+PcbXn2A43VSdqnmt/l4sa9mqLHlzknNakRuwlT1OMsAFiKODe+UOv5l+B3f3KqIfgAgMCxtI7Nw78YLZ894HgN3iJ3ucvOj7IbmV3L5SJQMMQHg0Ivz4R3A/fIJw6xEejRjmiLio/htL04Rsk9ezlJM2TnxSqmk1zDqvaEdSZJebAeH1O7gYEZ1DHNZaxGbr5d/P0knsd1S28DTupdwvf/WXqB7WiZgFHNyaLg9zJtQxhoPI9S6JHMeIxSUMY4RDflE4wRlWB7AzDukc4nSF5WdC7dj8sGsqTrvk7BchVxAda22PoNWOYxtyY67Bcqh3S1EYAkeyqOqbaRJBANQxKLVDfjVNVrRBHa8SrHZO8V0xrSWAuSwDkYaAyZj1AJsYOziC3TjN5Rzhm/VyjtFH/1uAc9aOwdq7N++m/M1TDZiGqboURlOwI10Vt74qRniFbSKqWfOYkq8f+O2e9UeDQUp5bVDlE1krOp3Vw6v8WBx27bvlBJ7fXTuW72mqLuEw7nTHLXnZADds6bgar7hoyJznMSdptRnuynytRFSLPHP2Usf2RMPZ0S32KttUZgDwcZqIWNQeGZok5uWR6sOkYyuWHps02pbXnIQo1owDgOwvVha5P7rayQrf6GS3VLAHvB7p/4/JQp6scVm9SMDOkdBeBxoZR7H0nh24FCR0hdwcaO/hbhxMLsbBOBKZjy++sQakRhwZK7ByD0SXUhExXanWziFtK9MqfEOcIxQ5aizHqiNSY1hPKgksfyfUTqR7PoL3bOd7TplC6eV8pqg3II6j2C3NstXrkkp8kAPFprZlI9jxSXrlvAkHW0UTe7//h2aV9n9VD8LCLGQJ/QAAAABJRU5ErkJggg==" id="imageb009c9a4db" transform="scale(1 -1) translate(0 -51.12)" x="118.8" y="-149.04" width="51.12" height="51.12"/> - + +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" id="image8e5c15d305" transform="scale(1 -1) translate(0 -51.12)" x="180" y="-149.04" width="51.12" height="51.12"/> - + +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" id="image612af7cbf7" transform="scale(1 -1) translate(0 -51.12)" x="241.2" y="-149.04" width="51.12" height="51.12"/> - + +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" id="imagea3508ef7f8" transform="scale(1 -1) translate(0 -51.12)" x="302.4" y="-149.04" width="51.12" height="51.12"/> - + +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" id="image2b64b1f4d5" transform="scale(1 -1) translate(0 -51.12)" x="363.6" y="-149.04" width="51.12" height="51.12"/> - + +iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAYAAABVsFofAAADF0lEQVR4nO2bMW4TQRSGd9bjSAiJAoHENSgiUSLBERBVDkBJ4TvQRFyAEqWCM9AiIQpOQBCUFFYUR4BCvBSWnHlvPZ/fGHf5/2p25p834z/v/bNrb9LpjwdDV6Av2pOujklK5rqv8FZxUnWsL+IQb7XG9Sp+/RpvdV3nTlJ95/SZbjwkDiB/vbxjOvq0XLcn3dLzizFTjWYecf08G8OOjblX11yIM9kap1jTzKuPCQ4SByBxAPnb5b3qYO88x9eyGQN/sj5GXmFj+PWJy75SrB/0xtU8oQqJA8inf+5XB/1xSSlZcpHXUg7/wbXzlgUvbg3KHIDEAUgcQP7+667poNvysl59jb85fLtuv/h8VI/R8NgxfpyIcV8/fGfGZl+eVWOQBylzABIHkJ5+eGnyKlGambKKP11zqcaO2ZY1o9bg1x9xcTc3HBIHIHEA+efFbdORjK/UJ3pvIj+I+hh/vR73vJa9kVcpcwASByBxAPl8cct0mHrFuvbXMS7zBnddpbbFqYexnje6PxOqkDiA/PdiWh/1qUv5WY41lOOu643KCrmwBoRQ5gAkDkDiAHK/gLdwXBEOUb+IetMW7gC+MnKObc8eax58LaIXCeKQOICcF/5WF9hlWo94aWOTYnTdhvKgvWAJlrx46ZBVKHMAEgcgcQB52uA5eJRDDL4FiK3dFqdOHMXQj3q7QeIA8vTc9QTTfJyeDdwd1hvF2dPeyhL085Q5AIkDkDiAfHAOT74tjwE7P3bUY+7Fxxq4Q8N/At14SBxAPljU309pSc+P72fr9qPnxxCz5e61Hoa4n05mZujw6Hgjb1tMZQ5A4gAkDiA9fvIq/CsXHol9/TbcxrSD+zva6Ve9gkfpIM+JQ+IA8vTst+3h9z7WzWiJeYzSf28lWAzCn7xlfWUOQOIAJA4gT+YXpmPg92s3t4nXddve2Y3F7Jxf4JEc3xvdAihzABIHkIf5me3po6XjdIXSSdE07/lvlaIl6PcSXV9fdsUhcQASB5Cv5vP6aIPnJDyuC26LN5EHoee4vUX9yX0mZQ5A4gAkDuAfk1SyRDGUC3kAAAAASUVORK5CYII=" id="imaged45c7f7c37" transform="scale(1 -1) translate(0 -51.12)" x="57.6" y="-242.64" width="51.12" height="51.12"/> - + +iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABsklEQVR4nI2UMY7UQBBF36/uFUgzntEEJETADVaCG5CTbIiIOQCChCvABQgJCTfaEGlDAsQ1IAEJobFZN4Hb7mrbsyJozfevX69K457RU10kACSGT0NWNFlLAjOqrNngw5CTEcPhkB9OQEaAh1UQVX7UYU8yLcPSqp8kyOwqm3W8OWxmBcr0ESCWdQf2mdjt7+YAFSytQpga07QEJCt1a/eR+fl89YZ2F6bTNUW3TeC4C7Q74/ryNced0TbDOTYBPX7xLlXb3aLLdqeyIraNluGVxpP1GTx2zQrgP7erwcN1jt02LaZMDaPH7RDfF/9ulyaqhxTIzMflsxf77c0JSP2LRMld15KVzwIxbrocKACt6hlw9PI8U0JKxGb7BylhLmyuYQq7Rl83lzES8d7md9U4Dwy6r/xlPWHqAYj3Nz8XhQ9PPvLyy/PBo4RNiUDR788/8errBYEyUG+/PUtjYxgbvVZPcJt6DVSwQE98eOd7hvQEV5gDgnos+8GD6afhgUR8cPYjNxbTXCC4r6NAxiHegyCIj85+DQ/5LQZp+v8M+d2alLUwjJDvj2FYzgQNXf8AXD2vrUvE87wAAAAASUVORK5CYII=" id="imagec142451bba" transform="matrix(2.550857 0 0 2.550857 118.820571 242.941311)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="20" height="20"/> - + +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" id="imagee880ab7d38" transform="scale(1 -1) translate(0 -51.12)" x="180" y="-242.64" width="51.12" height="51.12"/> - + +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" id="image88739b51ab" transform="scale(1 -1) translate(0 -51.12)" x="241.2" y="-242.64" width="51.12" height="51.12"/> - + +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" id="image405a3abfdd" transform="scale(1 -1) translate(0 -51.12)" x="302.4" y="-242.64" width="51.12" height="51.12"/> - + +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" id="imageab2d6b52cb" transform="scale(1 -1) translate(0 -51.12)" x="363.6" y="-242.64" width="51.12" height="51.12"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/lib/matplotlib/tests/baseline_images/test_image/interp_alpha.png b/lib/matplotlib/tests/baseline_images/test_image/interp_alpha.png index 7129fba6d5b4..804cbc50d5f3 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/interp_alpha.png and b/lib/matplotlib/tests/baseline_images/test_image/interp_alpha.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.pdf b/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.pdf index 67e39f8cb112..d587fadb5013 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.pdf and b/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.svg b/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.svg index 6854b0ed81cf..4591ae25d848 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/interp_nearest_vs_none.svg @@ -6,11 +6,11 @@ - 2023-04-16T18:07:28.590874 + 2026-01-31T05:22:22.066367 image/svg+xml - Matplotlib v3.8.0.dev855+gc9636b5044, https://matplotlib.org/ + Matplotlib v3.11.0.dev1730+g53f57dd80, https://matplotlib.org/ @@ -37,7 +37,7 @@ L 72 114.545455 z " style="fill: #ffffff"/> - + @@ -215,9 +215,9 @@ L 315.490909 114.545455 z " style="fill: #ffffff"/> - + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAKUlEQVR4nGOs/8/wnwEJNKS4M6ADJgwRLIB6ihhvLVVAcdOCQ+cG2k0AwjIIhcEmydcAAAAASUVORK5CYII=" id="imageea92a82f40" transform="scale(1 -1) translate(0 -192)" x="312" y="-120" width="216" height="192"/> + - + diff --git a/lib/matplotlib/tests/baseline_images/test_image/mask_image.png b/lib/matplotlib/tests/baseline_images/test_image/mask_image.png index 4779a5ea67e3..934e42483498 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/mask_image.png and b/lib/matplotlib/tests/baseline_images/test_image/mask_image.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/mask_image.svg b/lib/matplotlib/tests/baseline_images/test_image/mask_image.svg index 0f9181a6c1c3..95b1fb40fea3 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/mask_image.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/mask_image.svg @@ -1,12 +1,23 @@ - - + + + + + + 2026-01-30T01:57:16.776745 + image/svg+xml + + + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ + + + + + - + @@ -15,7 +26,7 @@ L 576 432 L 576 0 L 0 0 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> @@ -24,100 +35,100 @@ L 274.909091 317.454545 L 274.909091 114.545455 L 72 114.545455 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - - + + +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> - +" style="stroke: #000000; stroke-width: 0.5"/> - + - +" style="stroke: #000000; stroke-width: 0.5"/> - + - + - + - + - + - + - + - + - + @@ -126,70 +137,70 @@ L 0 4 - +" style="stroke: #000000; stroke-width: 0.5"/> - + - +" style="stroke: #000000; stroke-width: 0.5"/> - + - + - + - + - + - + - + - + - + @@ -202,90 +213,90 @@ L 518.4 317.454545 L 518.4 114.545455 L 315.490909 114.545455 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - - + + +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> +" style="fill: none; stroke: #000000; stroke-linejoin: miter; stroke-linecap: square"/> - + - + - + - + - + - + - + - + - + - + @@ -294,60 +305,60 @@ L 518.4 114.545455 - + - + - + - + - + - + - + - + - + - + @@ -355,11 +366,11 @@ L 518.4 114.545455 - - + + - - + + diff --git a/lib/matplotlib/tests/baseline_images/test_image/mask_image_over_under.png b/lib/matplotlib/tests/baseline_images/test_image/mask_image_over_under.png index 5ff776ad3de5..7cdff0a5487c 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/mask_image_over_under.png and b/lib/matplotlib/tests/baseline_images/test_image/mask_image_over_under.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/nn_pixel_alignment.png b/lib/matplotlib/tests/baseline_images/test_image/nn_pixel_alignment.png new file mode 100644 index 000000000000..3821a8a517fa Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_image/nn_pixel_alignment.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/no_interpolation_origin.png b/lib/matplotlib/tests/baseline_images/test_image/no_interpolation_origin.png index c4b26de1a284..2ee3019d6294 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/no_interpolation_origin.png and b/lib/matplotlib/tests/baseline_images/test_image/no_interpolation_origin.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/nonuniform_and_pcolor.png b/lib/matplotlib/tests/baseline_images/test_image/nonuniform_and_pcolor.png index 0d6060411751..58d1ce37c42f 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/nonuniform_and_pcolor.png and b/lib/matplotlib/tests/baseline_images/test_image/nonuniform_and_pcolor.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/nonuniform_logscale.png b/lib/matplotlib/tests/baseline_images/test_image/nonuniform_logscale.png index da2c0467864e..7197b828fd51 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/nonuniform_logscale.png and b/lib/matplotlib/tests/baseline_images/test_image/nonuniform_logscale.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.pdf b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.pdf index e40335e22503..739de6ee17c7 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.pdf and b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg index a4fda6a4e839..7e8f573a1037 100644 --- a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg +++ b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg @@ -1,12 +1,23 @@ - - + + + + + + 2026-01-31T05:22:32.107077 + image/svg+xml + + + Matplotlib v3.11.0.dev1730+g53f57dd80, https://matplotlib.org/ + + + + + - + @@ -15,7 +26,7 @@ L 216 72 L 216 0 L 0 0 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> @@ -24,11 +35,11 @@ L 76.235294 60.977647 L 76.235294 11.742353 L 27 11.742353 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - - + + @@ -40,12 +51,12 @@ L 135.317647 64.08 L 135.317647 8.64 L 86.082353 8.64 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - + @@ -54,23 +65,23 @@ L 194.4 64.08 L 194.4 8.64 L 145.164706 8.64 z -" style="fill:#ffffff;"/> +" style="fill: #ffffff"/> - +" clip-path="url(#p6d7104f26b)" style="fill: none; stroke: #1f77b4; stroke-width: 20; stroke-linecap: square"/> - - + + - - + + diff --git a/lib/matplotlib/tests/baseline_images/test_image/rgba_antialias.png b/lib/matplotlib/tests/baseline_images/test_image/rgba_antialias.png index 73a8a0bf618a..4a2566720bdd 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/rgba_antialias.png and b/lib/matplotlib/tests/baseline_images/test_image/rgba_antialias.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/rgba_clean_edges.png b/lib/matplotlib/tests/baseline_images/test_image/rgba_clean_edges.png new file mode 100644 index 000000000000..467a757f933f Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_image/rgba_clean_edges.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/rotate_image.png b/lib/matplotlib/tests/baseline_images/test_image/rotate_image.png index 8825be74ec8f..1aa443ee55b6 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/rotate_image.png and b/lib/matplotlib/tests/baseline_images/test_image/rotate_image.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_image/upsampling.png b/lib/matplotlib/tests/baseline_images/test_image/upsampling.png index 94b2bec88e84..f5c68c973578 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_image/upsampling.png and b/lib/matplotlib/tests/baseline_images/test_image/upsampling.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_multivariate_colormaps/bivariate_cmap_shapes.png b/lib/matplotlib/tests/baseline_images/test_multivariate_colormaps/bivariate_cmap_shapes.png index 5aba927bbcf1..8553bf61700c 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_multivariate_colormaps/bivariate_cmap_shapes.png and b/lib/matplotlib/tests/baseline_images/test_multivariate_colormaps/bivariate_cmap_shapes.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.pdf b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.pdf index c154737fcf64..180b54f63bb4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.pdf and b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.png b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.png index 85ae7a6175fe..2e24a5215839 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.png and b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.svg b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.svg index f7d0baf1c6db..efe1f300e79a 100644 --- a/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.svg +++ b/lib/matplotlib/tests/baseline_images/test_patheffects/patheffect1.svg @@ -6,11 +6,11 @@ - 2025-10-08T04:52:19.019436 + 2026-01-30T01:57:34.442076 image/svg+xml - Matplotlib v3.11.0.dev1425+gb39ccbe8f, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -39,7 +39,7 @@ z +iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAt9klEQVR4nO3dX8g93VvX8Wueez/ggVAHBR4IiRgYBEVEJASJeFAgKCRR0EFQSIIHQiEKSoIiBgqGESEIghESBkpRIURCgR4oGBiFUBQKRSgoKIrffT+7g73XvWdmr1mz/s1ca13r/TqZvWf2rJm979/zW9/PWjNzTd99+66bwLyLvMubvIuIzJbXj23L9dvbS9p43Rbfxl777r3vcx/tvz/WXd3yi8fy8RvdV8v0eC9XkUczItfVcmu9b3vOPjWOH7uPb33OPorHvz2W13eRT+71Y/lptk1E5JMsl9fZ+2tg2977nH32jg/bPtM+AQAARkQHDACAAjpgAAAU0AEDAKCADhgAAAV0wAAAKKADBgBAAR0wAAAK6IABAFBABwwAgAI6YAAAFNABAwCggA4YAAAFdMAAACigAwYAQAEdMAAACuiAAQBQQAcMAIACOmAAABTQAQMAoIAOGAAABXTAAAAooAMGAEABHTAAAArogAEAUEAHDACAAjpgAAAU0AEDAKCADhgAAAV0wAAAKKADBgBAAR0wAAAK6IABAFBABwwAgAI6YAAAFNABAwCggA4YAAAFdMAAACigAwYAQAEdMAAACuiAAQBQQAcMAIACOmAAABTQAQMAoIAOGAAABXTAAAAooAMGAEABHTAAAArogAEAUEAHDACAAjpgAAAU0AEDAKCADhgAAAV0wAAAKKADBgBAAR0wAAAK6IABAFBABwwAgAI6YAAAFNABAwCggA4YAAAFdMAAACigAwYAQAEdMAAACuiAAQBQQAcMAIACOmAAABTQAQMAoIAOGAAABXTAAAAooAMGAEABHTAAAArogAEAUEAHDACAAjpgAAAU0AEDAKCADhgAAAV0wAAAKKADBgBAAR0wAAAK6IABAFBABwwAgAI6YAAAFNABAwCggA4YAAAFdMAAACigAwYAQAEdMAAACuiAAQBQQAcMAIACOmAAABTQAQMAoIAOGAAABXTAAAAooAMGAEABHTAAAArogAEAUEAHDACAAjpgAAAU0AEDAKCADhgAAAV0wAAAKKADBgBAAR0wAAAK6IABAFBABwwAgAI6YAAAFNABAwCggA4YAAAFdMAAACigAwYAQAEdMAAACuiAAQBQQAcMAIACOmAAABTQAQMAoIAOGAA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" id="image4b6dca1862" transform="scale(1 -1) translate(0 -345.6)" x="122.4" y="-43.2" width="345.6" height="345.6"/> - 2023-05-08T08:28:59.785389 + 2026-01-30T01:57:35.109776 image/svg+xml - Matplotlib v3.8.0.dev1016+gecc2e28867.d20230508, https://matplotlib.org/ + Matplotlib v3.11.0.dev1729+g1f7cad29d, https://matplotlib.org/ @@ -37,48 +37,48 @@ L 103.104 41.472 z " style="fill: #ffffff"/> - + +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" id="image46d953aa11" transform="scale(1 -1) translate(0 -265.68)" x="102.96" y="-41.76" width="266.4" height="265.68"/> - - + - + - + - + - + @@ -87,40 +87,40 @@ L 0 3.5 - - + - + - + - + - + @@ -129,25 +129,25 @@ L -3.5 0 +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #000000; stroke-width: 1.5"/> +" clip-path="url(#pb18bcc5e01)" style="fill: none; stroke: #ffffff; stroke-width: 3"/> - - - - + + + + + - - - + - - - + - - - + - - - + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - +" clip-path="url(#pb18bcc5e01)"/> - - - - - + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_png/pngsuite.png b/lib/matplotlib/tests/baseline_images/test_png/pngsuite.png index 8b567e0a0598..b845735b5355 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_png/pngsuite.png and b/lib/matplotlib/tests/baseline_images/test_png/pngsuite.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_tightlayout/tight_layout5.png b/lib/matplotlib/tests/baseline_images/test_tightlayout/tight_layout5.png index 5c176e83934c..15b0c247a793 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_tightlayout/tight_layout5.png and b/lib/matplotlib/tests/baseline_images/test_tightlayout/tight_layout5.png differ diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 02af308963a3..99f38e968e2e 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -16,6 +16,7 @@ colors, image as mimage, patches, pyplot as plt, style, rcParams) from matplotlib.image import (AxesImage, BboxImage, FigureImage, NonUniformImage, PcolorImage) +from matplotlib.patches import Rectangle from matplotlib.testing.decorators import check_figures_equal, image_comparison from matplotlib.transforms import Bbox, Affine2D, Transform, TransformedBbox import matplotlib.ticker as mticker @@ -23,6 +24,18 @@ import pytest +@pytest.fixture +def nonaffine_identity(): + """Non-affine identity transform for compositing with any affine transform""" + class NonAffineIdentityTransform(Transform): + input_dims = 2 + output_dims = 2 + + def inverted(self): + return self + return NonAffineIdentityTransform() + + @image_comparison(['interp_alpha.png'], remove_text=True) def test_alpha_interp(): """Test the interpolation of the alpha channel on RGBA images""" @@ -1679,7 +1692,7 @@ def test__resample_valid_output(): np.full(256, 0.9)]).reshape(1, -1)), ] ) -def test_resample_nonaffine(data, interpolation, expected): +def test_resample_nonaffine(data, interpolation, expected, nonaffine_identity): # Test that both affine and nonaffine transforms resample to the correct answer # If the array is constant, the tolerance can be tight @@ -1695,13 +1708,7 @@ def test_resample_nonaffine(data, interpolation, expected): # Create a nonaffine version of the same transform # by compositing with a nonaffine identity transform - class NonAffineIdentityTransform(Transform): - input_dims = 2 - output_dims = 2 - - def inverted(self): - return self - nonaffine_transform = NonAffineIdentityTransform() + affine_transform + nonaffine_transform = nonaffine_identity + affine_transform nonaffine_result = np.empty_like(expected) mimage.resample(data, nonaffine_result, nonaffine_transform, @@ -1873,3 +1880,115 @@ def test_interpolation_stage_rgba_respects_alpha_param(fig_test, fig_ref, intp_s (im_rgb, new_array_alpha.reshape((ny, nx, 1))), axis=-1 ), interpolation_stage=intp_stage ) + + +@image_comparison(['nn_pixel_alignment.png']) +def test_nn_pixel_alignment(nonaffine_identity): + fig, axs = plt.subplots(2, 3) + + for j, N in enumerate([3, 7, 11]): + # In each column, the plots use the same data array + data = np.arange(N**2).reshape((N, N)) % 4 + seps = np.arange(-0.5, N) + + for i in range(2): + if i == 0: + # Top row uses an affine transform + axs[i, j].imshow(data, cmap='Grays', interpolation='nearest') + else: + # Bottom row uses a non-affine transform + axs[i, j].imshow(data, cmap='Grays', interpolation='nearest', + transform=nonaffine_identity + axs[i, j].transData) + + axs[i, j].set_axis_off() + axs[i, j].vlines(seps, -1, N, lw=0.5, color='red', ls='dashed') + axs[i, j].hlines(seps, -1, N, lw=0.5, color='red', ls='dashed') + + +@image_comparison(['image_bounds_handling.png'], tol=0.006) +def test_image_bounds_handling(nonaffine_identity): + # TODO: The second and third panels in the bottom row show that the handling of + # image bounds is bugged for non-affine transforms and non-nearest-neighbor + # interpolation. If this bug gets fixed, the baseline image should be updated. + + fig, axs = plt.subplots(2, 3) + + N = 11 + + for j, interpolation in enumerate(['nearest', 'hanning', 'bilinear']): + data = np.arange(N**2).reshape((N, N)) + data = data / N**2 + (data % 4) / 6 + rotation = Affine2D().rotate_around(N/2-0.5, N/2-0.5, 1) + + for i in range(2): + transform = rotation + axs[i, j].transData + if i == 1: + # Bottom row uses a non-affine transform + transform = nonaffine_identity + transform + + axs[i, j].imshow(data, cmap='Grays', interpolation=interpolation, + transform=transform) + + axs[i, j].set_axis_off() + box = Rectangle((-0.5, -0.5), N, N, + edgecolor='red', facecolor='none', lw=0.5, ls='dashed', + transform=rotation + axs[i, j].transData) + axs[i, j].add_artist(box) + + +@image_comparison(['rgba_clean_edges.png'], tol=0.003) +def test_rgba_clean_edges(): + np.random.seed(19680801+9) # same as in test_upsampling() + data = np.random.rand(8, 8) + data = np.stack([data, data]) + data[1, 2:4, 2:4] = np.nan + + rotation = Affine2D().rotate_around(3.5, 3.5, 1) + + fig, axs = plt.subplots(1, 2) + + for i in range(2): + # Add background patches to check the fading to non-white colors + black = Rectangle((3.75, 2), 5, 5, color='black', zorder=0) + gray = Rectangle((0, -2), 3.75, 4, color='gray', zorder=0) + partly_black = Rectangle((3.75, -2), 5, 4, fc='black', ec='none', + alpha=0.5, zorder=0) + axs[i].add_patch(black) + axs[i].add_patch(gray) + axs[i].add_patch(partly_black) + + axs[i].imshow(data[i, ...], + interpolation='bilinear', interpolation_stage='rgba', + transform=rotation + axs[i].transData) + + axs[i].set_axis_off() + axs[i].set_xlim(-2.5, 9.5) + axs[i].set_ylim(-2.5, 9.5) + + +@image_comparison(['affine_fill_to_edges.png']) +def test_affine_fill_to_edges(): + # The two rows show the two settings of origin + # The three columns show the original and the two mirror flips + fig, axs = plt.subplots(2, 3) + + N = 7 + data = np.arange(N**2).reshape((N, N)) % 3 + + transform = [Affine2D(), + Affine2D().translate(0, -N + 1).scale(1, -1), + Affine2D().translate(-N + 1, 0).scale(-1, 1)] + + for j in range(3): + for i in range(2): + origin = 'upper' if i == 0 else 'lower' + + axs[i, j].imshow(data, cmap='Grays', + interpolation='hanning', origin=origin, + transform=transform[j] + axs[i, j].transData) + + axs[i, j].set_axis_off() + axs[i, j].vlines([-0.5, N - 0.5], -1, 2, lw=0.5, color='red') + axs[i, j].vlines([-0.5, N - 0.5], N - 3, N, lw=0.5, color='red') + axs[i, j].hlines([-0.5, N - 0.5], -1, 2, lw=0.5, color='red') + axs[i, j].hlines([-0.5, N - 0.5], N - 3, N, lw=0.5, color='red') diff --git a/lib/matplotlib/tests/test_png.py b/lib/matplotlib/tests/test_png.py index a7677b0d05ac..e24fe39e9ed1 100644 --- a/lib/matplotlib/tests/test_png.py +++ b/lib/matplotlib/tests/test_png.py @@ -7,7 +7,7 @@ from matplotlib import cm, pyplot as plt -@image_comparison(['pngsuite.png'], tol=0.09) +@image_comparison(['pngsuite.png'], style='default') def test_pngsuite(): files = sorted( (Path(__file__).parent / "baseline_images/pngsuite").glob("basn*.png")) @@ -20,10 +20,7 @@ def test_pngsuite(): if data.ndim == 2: # keep grayscale images gray cmap = cm.gray - # Using the old default data interpolation stage lets us - # continue to use the existing reference image - plt.imshow(data, extent=(i, i + 1, 0, 1), cmap=cmap, - interpolation_stage='data') + plt.imshow(data, extent=(i, i + 1, 0, 1), cmap=cmap, interpolation='nearest') plt.gca().patch.set_facecolor("#ddffff") plt.gca().set_xlim(0, len(files)) diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/anchored_locator_base_call.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/anchored_locator_base_call.png index 31c63d7df718..ad293669c14c 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/anchored_locator_base_call.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/anchored_locator_base_call.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid.png index a696787a0248..5ba5f11a4876 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid_each_left_label_mode_all.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid_each_left_label_mode_all.png index f9a4524b5812..958c8b53b320 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid_each_left_label_mode_all.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/image_grid_each_left_label_mode_all.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/imagegrid_cbar_mode.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/imagegrid_cbar_mode.png index 9cb576faa49a..156bfeb97e3d 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/imagegrid_cbar_mode.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/imagegrid_cbar_mode.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_axes.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_axes.png index 90498f5d441b..2c717df0f06a 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_axes.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_axes.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_locator.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_locator.png index 17a1460f6be4..6329a459b0d9 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_locator.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/inset_locator.png differ diff --git a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/rgb_axes.png b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/rgb_axes.png index 5cf6dc7e35c0..0159cf22c62d 100644 Binary files a/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/rgb_axes.png and b/lib/mpl_toolkits/axes_grid1/tests/baseline_images/test_axes_grid1/rgb_axes.png differ diff --git a/src/_image_resample.h b/src/_image_resample.h index 1b7af133de31..217f4a6ce86e 100644 --- a/src/_image_resample.h +++ b/src/_image_resample.h @@ -511,7 +511,7 @@ struct type_mapping std::conditional_t< std::is_same_v, fixed_blender_rgba_plain, - agg::blender_rgba_plain + agg::blender_rgba_pre > >; using pixfmt_type = std::conditional_t< @@ -708,11 +708,13 @@ void resample( using scanline_t = agg::scanline32_u8; using reflect_t = agg::wrap_mode_reflect; - using image_accessor_t = agg::image_accessor_wrap; + using image_accessor_wrap_t = agg::image_accessor_wrap; + using image_accessor_clip_t = agg::image_accessor_clip; using span_alloc_t = agg::span_allocator; using span_conv_alpha_t = span_conv_alpha; + using nn_affine_interpolator_t = accurate_interpolator_affine_nn<>; using affine_interpolator_t = agg::span_interpolator_linear<>; using arbitrary_interpolator_t = agg::span_interpolator_adaptor, lookup_distortion>; @@ -741,7 +743,8 @@ void resample( input_buffer.attach( (unsigned char *)input, in_width, in_height, in_width * itemsize); input_pixfmt_t input_pixfmt(input_buffer); - image_accessor_t input_accessor(input_pixfmt); + image_accessor_wrap_t input_accessor_wrap(input_pixfmt); + image_accessor_clip_t input_accessor_clip(input_pixfmt, color_type::no_color()); agg::rendering_buffer output_buffer; output_buffer.attach( @@ -755,14 +758,39 @@ void resample( rasterizer.clip_box(0, 0, out_width, out_height); agg::path_storage path; - if (params.is_affine) { - path.move_to(0, 0); - path.line_to(in_width, 0); - path.line_to(in_width, in_height); - path.line_to(0, in_height); - path.close_polygon(); - agg::conv_transform rectangle(path, params.affine); - rasterizer.add_path(rectangle); + if (params.is_affine && params.interpolation != NEAREST) { + if (params.affine.shx != 0 || params.affine.shy != 0) { + path.move_to(0, 0); + path.line_to(in_width, 0); + path.line_to(in_width, in_height); + path.line_to(0, in_height); + path.close_polygon(); + agg::conv_transform rectangle(path, params.affine); + rasterizer.add_path(rectangle); + } else { + // If there is no shear/rotation, bump out the rendering edges that are + // within a half pixel of a full pixel so that axes are visually filled. + // This bumping out is equivalent to treating any edge pixel that is at + // least half-covered by the source as fully covered by the source. + double left = 0; + double right = in_width; + double bottom = 0; + double top = in_height; + params.affine.transform(&left, &bottom); + params.affine.transform(&right, &top); + if (left > right) { std::swap(left, right); } + if (bottom > top) { std::swap(top, bottom); } + if (round(left) < left) { left = round(left); } + if (round(right) > right) { right = round(right); } + if (round(bottom) < bottom) { bottom = round(bottom); } + if (round(top) > top) { top = round(top); } + path.move_to(left, bottom); + path.line_to(right, bottom); + path.line_to(right, top); + path.line_to(left, top); + path.close_polygon(); + rasterizer.add_path(path); + } } else { path.move_to(0, 0); path.line_to(out_width, 0); @@ -774,22 +802,22 @@ void resample( if (params.interpolation == NEAREST) { if (params.is_affine) { - using span_gen_t = typename type_mapping_t::template span_gen_nn_type; + using span_gen_t = typename type_mapping_t::template span_gen_nn_type; using span_conv_t = agg::span_converter; using nn_renderer_t = agg::renderer_scanline_aa; - affine_interpolator_t interpolator(inverted); - span_gen_t span_gen(input_accessor, interpolator); + nn_affine_interpolator_t interpolator(inverted); + span_gen_t span_gen(input_accessor_clip, interpolator); span_conv_t span_conv(span_gen, conv_alpha); nn_renderer_t nn_renderer(renderer, span_alloc, span_conv); agg::render_scanlines(rasterizer, scanline, nn_renderer); } else { - using span_gen_t = typename type_mapping_t::template span_gen_nn_type; + using span_gen_t = typename type_mapping_t::template span_gen_nn_type; using span_conv_t = agg::span_converter; using nn_renderer_t = agg::renderer_scanline_aa; lookup_distortion dist( params.transform_mesh, in_width, in_height, out_width, out_height, true); arbitrary_interpolator_t interpolator(inverted, dist); - span_gen_t span_gen(input_accessor, interpolator); + span_gen_t span_gen(input_accessor_clip, interpolator); span_conv_t span_conv(span_gen, conv_alpha); nn_renderer_t nn_renderer(renderer, span_alloc, span_conv); agg::render_scanlines(rasterizer, scanline, nn_renderer); @@ -799,22 +827,22 @@ void resample( get_filter(params, filter); if (params.is_affine && params.resample) { - using span_gen_t = typename type_mapping_t::template span_gen_affine_type; + using span_gen_t = typename type_mapping_t::template span_gen_affine_type; using span_conv_t = agg::span_converter; using int_renderer_t = agg::renderer_scanline_aa; affine_interpolator_t interpolator(inverted); - span_gen_t span_gen(input_accessor, interpolator, filter); + span_gen_t span_gen(input_accessor_wrap, interpolator, filter); span_conv_t span_conv(span_gen, conv_alpha); int_renderer_t int_renderer(renderer, span_alloc, span_conv); agg::render_scanlines(rasterizer, scanline, int_renderer); } else { - using span_gen_t = typename type_mapping_t::template span_gen_filter_type; + using span_gen_t = typename type_mapping_t::template span_gen_filter_type; using span_conv_t = agg::span_converter; using int_renderer_t = agg::renderer_scanline_aa; lookup_distortion dist( params.transform_mesh, in_width, in_height, out_width, out_height, false); arbitrary_interpolator_t interpolator(inverted, dist); - span_gen_t span_gen(input_accessor, interpolator, filter); + span_gen_t span_gen(input_accessor_wrap, interpolator, filter); span_conv_t span_conv(span_gen, conv_alpha); int_renderer_t int_renderer(renderer, span_alloc, span_conv); agg::render_scanlines(rasterizer, scanline, int_renderer); diff --git a/src/_image_wrapper.cpp b/src/_image_wrapper.cpp index c062ef14a8f1..8944a2d44041 100644 --- a/src/_image_wrapper.cpp +++ b/src/_image_wrapper.cpp @@ -167,17 +167,12 @@ image_resample(py::array input_array, if (is_affine) { convert_trans_affine(transform, params.affine); - // If affine parameters will make subpixels visible, treat as nonaffine instead - if (params.affine.sx >= agg::image_subpixel_scale / 2 || params.affine.sy >= agg::image_subpixel_scale / 2) { - is_affine = false; - params.affine = agg::trans_affine(); // reset to identity affine parameters - } - } - if (!is_affine) { + params.is_affine = is_affine; + } else { transform_mesh = _get_transform_mesh(transform, output_array.shape()); params.transform_mesh = transform_mesh.data(); + params.is_affine = false; } - params.is_affine = is_affine; } if (auto resampler = diff --git a/src/agg_workaround.h b/src/agg_workaround.h index a167be97e171..ef989ac198a3 100644 --- a/src/agg_workaround.h +++ b/src/agg_workaround.h @@ -2,6 +2,7 @@ #define MPL_AGG_WORKAROUND_H #include "agg_pixfmt_rgba.h" +#include "agg_trans_affine.h" /********************************************************************** WORKAROUND: This class is to workaround a bug in Agg SVN where the @@ -42,4 +43,87 @@ struct fixed_blender_rgba_plain : agg::conv_rgba_plain } }; + +/********************************************************************** + This class provides higher-accuracy nearest-neighbor interpolation for + affine transforms than span_interpolator_linear by using + floating-point-based interpolation instead of integer-based +*/ + +template +class accurate_interpolator_affine_nn +{ +public: + typedef Transformer trans_type; + + enum subpixel_scale_e + { + subpixel_shift = SubpixelShift, + subpixel_scale = 1 << subpixel_shift + }; + + //-------------------------------------------------------------------- + accurate_interpolator_affine_nn() {} + accurate_interpolator_affine_nn(trans_type& trans) : m_trans(&trans) {} + accurate_interpolator_affine_nn(trans_type& trans, + double x, double y, unsigned len) : + m_trans(&trans) + { + begin(x, y, len); + } + + //---------------------------------------------------------------- + const trans_type& transformer() const { return *m_trans; } + void transformer(trans_type& trans) { m_trans = &trans; } + + //---------------------------------------------------------------- + void begin(double x, double y, unsigned len) + { + m_len = len - 1; + + m_stx1 = x; + m_sty1 = y; + m_trans->transform(&m_stx1, &m_sty1); + m_stx1 *= subpixel_scale; + m_sty1 *= subpixel_scale; + + m_stx2 = x + m_len; + m_sty2 = y; + m_trans->transform(&m_stx2, &m_sty2); + m_stx2 *= subpixel_scale; + m_sty2 *= subpixel_scale; + } + + //---------------------------------------------------------------- + void resynchronize(double xe, double ye, unsigned len) + { + m_len = len - 1; + + m_trans->transform(&xe, &ye); + m_stx2 = xe * subpixel_scale; + m_sty2 = ye * subpixel_scale; + } + + //---------------------------------------------------------------- + void operator++() + { + m_stx1 += (m_stx2 - m_stx1) / m_len; + m_sty1 += (m_sty2 - m_sty1) / m_len; + m_len--; + } + + //---------------------------------------------------------------- + void coordinates(int* x, int* y) const + { + // Truncate instead of round because this interpolator needs to + // match the definitions for nearest-neighbor interpolation + *x = int(m_stx1); + *y = int(m_sty1); + } + +private: + trans_type* m_trans; + unsigned m_len; + double m_stx1, m_sty1, m_stx2, m_sty2; +}; #endif