From a6971c768ddb2596ac6e3db7c14461fbf18d71e6 Mon Sep 17 00:00:00 2001 From: Ogi Moore Date: Thu, 27 May 2021 21:57:07 -0700 Subject: [PATCH] Move and Update test-data repo into pyqtgraph repo To reduce complexity, and make it easier to add more images and tests, the images in the `test-data` repository should be merged with the main repository. Furthermore, we can remove a lot of the subprocess work in the image_testing.py file, as we no longer need to have it interact with git. The images are not the same. Images were regenerated with Qt6, and now have proper big and little endian handling thanks to @pijyoi Second commit is a slightly modified variant of 2e135ab282d6007b34a3854921be54d0e9efb241 authored by @pijyoi it is to convert qimages to RGBA8888 for testing. Image files were regenerated images for the big/little handling Fixed issue with bogus test from test_NonUniformImage and generated a new image --- .github/workflows/main.yml | 7 +- pyqtgraph/functions.py | 44 ++- .../graphicsItems/PlotItem/tests/__init__.py | 0 pytest.ini | 2 +- {pyqtgraph/tests => tests}/__init__.py | 0 {pyqtgraph/tests => tests}/conftest.py | 0 .../tests => tests/dockarea}/test_dock.py | 0 .../tests => tests/dockarea}/test_dockarea.py | 0 .../tests => tests/exporters}/__init__.py | 0 .../tests => tests/exporters}/test_csv.py | 0 .../tests => tests/exporters}/test_hdf5.py | 0 .../tests => tests/exporters}/test_image.py | 0 .../exporters}/test_matplotlib.py | 0 .../tests => tests/exporters}/test_svg.py | 0 .../graphicsItems/PlotItem}/test_PlotItem.py | 0 .../graphicsItems/ViewBox}/test_ViewBox.py | 0 .../ViewBox}/test_ViewBoxZoom.py | 0 .../graphicsItems}/test_ArrowItem.py | 0 .../graphicsItems}/test_AxisItem.py | 0 .../graphicsItems}/test_ErrorBarItem.py | 0 .../graphicsItems}/test_GraphicsItem.py | 0 .../graphicsItems}/test_ImageItem.py | 2 +- .../graphicsItems}/test_ImageItemFormat.py | 0 .../graphicsItems}/test_InfiniteLine.py | 2 +- .../graphicsItems}/test_LegendItem.py | 0 .../graphicsItems}/test_NonUniformImage.py | 4 +- .../graphicsItems}/test_PlotCurveItem.py | 2 +- .../graphicsItems}/test_PlotDataItem.py | 0 .../tests => tests/graphicsItems}/test_ROI.py | 37 +- .../graphicsItems}/test_ScatterPlotItem.py | 0 .../graphicsItems}/test_TextItem.py | 0 {pyqtgraph/tests => tests}/image_testing.py | 348 ++++-------------- tests/images/imageitem/bool.png | Bin 0 -> 622 bytes tests/images/imageitem/gradient_mono_byte.png | Bin 0 -> 660 bytes .../imageitem/gradient_mono_byte_levels.png | Bin 0 -> 1038 bytes tests/images/imageitem/gradient_mono_int.png | Bin 0 -> 1930 bytes .../imageitem/gradient_mono_int_levels.png | Bin 0 -> 670 bytes tests/images/imageitem/gradient_rgba_byte.png | Bin 0 -> 718 bytes .../imageitem/gradient_rgba_byte_levels.png | Bin 0 -> 671 bytes .../images/imageitem/gradient_rgba_float.png | Bin 0 -> 749 bytes .../gradient_rgba_float_additive.png | Bin 0 -> 9923 bytes .../imageitem/gradient_rgba_float_alpha.png | Bin 0 -> 12235 bytes tests/images/imageitem/init.png | Bin 0 -> 2086 bytes tests/images/imageitem/levels1.png | Bin 0 -> 647 bytes tests/images/imageitem/lut.png | Bin 0 -> 1963 bytes tests/images/imageitem/monochrome.png | Bin 0 -> 622 bytes .../resolution_with_downsampling_x.png | Bin 0 -> 1190 bytes .../resolution_with_downsampling_y.png | Bin 0 -> 1900 bytes .../resolution_without_downsampling.png | Bin 0 -> 1211 bytes .../images/nonuniform_image/colormap-3x3.png | Bin 0 -> 656 bytes tests/images/nonuniform_image/lut-3x3.png | Bin 0 -> 668 bytes tests/images/plotcurveitem/connectall.png | Bin 0 -> 885 bytes tests/images/plotcurveitem/connectarray.png | Bin 0 -> 788 bytes tests/images/plotcurveitem/connectfinite.png | Bin 0 -> 547 bytes tests/images/plotcurveitem/connectpairs.png | Bin 0 -> 770 bytes .../images/roi/baseroi/roi_getarrayregion.png | Bin 0 -> 6493 bytes .../roi_getarrayregion_anisotropic.png | Bin 0 -> 6021 bytes .../roi/baseroi/roi_getarrayregion_halfpx.png | Bin 0 -> 6636 bytes .../baseroi/roi_getarrayregion_img_trans.png | Bin 0 -> 8632 bytes .../baseroi/roi_getarrayregion_inverty.png | Bin 0 -> 8592 bytes .../roi/baseroi/roi_getarrayregion_resize.png | Bin 0 -> 6487 bytes .../roi/baseroi/roi_getarrayregion_rotate.png | Bin 0 -> 6838 bytes .../roi/ellipseroi/roi_getarrayregion.png | Bin 0 -> 10301 bytes .../roi_getarrayregion_anisotropic.png | Bin 0 -> 9370 bytes .../ellipseroi/roi_getarrayregion_halfpx.png | Bin 0 -> 10113 bytes .../roi_getarrayregion_img_trans.png | Bin 0 -> 9856 bytes .../ellipseroi/roi_getarrayregion_inverty.png | Bin 0 -> 9693 bytes .../ellipseroi/roi_getarrayregion_resize.png | Bin 0 -> 7748 bytes .../ellipseroi/roi_getarrayregion_rotate.png | Bin 0 -> 7921 bytes tests/images/roi/polylineroi/closed_clear.png | Bin 0 -> 627 bytes .../roi/polylineroi/closed_click_segment.png | Bin 0 -> 3029 bytes .../roi/polylineroi/closed_drag_handle.png | Bin 0 -> 2674 bytes .../polylineroi/closed_drag_new_handle.png | Bin 0 -> 3378 bytes .../roi/polylineroi/closed_drag_roi.png | Bin 0 -> 1606 bytes .../roi/polylineroi/closed_hover_handle.png | Bin 0 -> 1612 bytes .../roi/polylineroi/closed_hover_roi.png | Bin 0 -> 1717 bytes .../roi/polylineroi/closed_hover_segment.png | Bin 0 -> 3167 bytes tests/images/roi/polylineroi/closed_init.png | Bin 0 -> 1739 bytes .../roi/polylineroi/closed_setpoints.png | Bin 0 -> 1626 bytes .../roi/polylineroi/closed_setstate.png | Bin 0 -> 1739 bytes tests/images/roi/polylineroi/open_clear.png | Bin 0 -> 627 bytes .../roi/polylineroi/open_click_segment.png | Bin 0 -> 2005 bytes .../roi/polylineroi/open_drag_handle.png | Bin 0 -> 1737 bytes .../roi/polylineroi/open_drag_new_handle.png | Bin 0 -> 2548 bytes .../images/roi/polylineroi/open_drag_roi.png | Bin 0 -> 1067 bytes .../roi/polylineroi/open_hover_handle.png | Bin 0 -> 1055 bytes .../images/roi/polylineroi/open_hover_roi.png | Bin 0 -> 1171 bytes .../roi/polylineroi/open_hover_segment.png | Bin 0 -> 2123 bytes tests/images/roi/polylineroi/open_init.png | Bin 0 -> 1175 bytes .../images/roi/polylineroi/open_setpoints.png | Bin 0 -> 1066 bytes .../images/roi/polylineroi/open_setstate.png | Bin 0 -> 1175 bytes .../roi/polylineroi/roi_getarrayregion.png | Bin 0 -> 7925 bytes .../roi_getarrayregion_anisotropic.png | Bin 0 -> 7602 bytes .../polylineroi/roi_getarrayregion_halfpx.png | Bin 0 -> 7928 bytes .../roi_getarrayregion_img_trans.png | Bin 0 -> 13226 bytes .../roi_getarrayregion_inverty.png | Bin 0 -> 12888 bytes .../polylineroi/roi_getarrayregion_rotate.png | Bin 0 -> 6458 bytes .../images/roi/rectroi/roi_getarrayregion.png | Bin 0 -> 6722 bytes .../roi_getarrayregion_anisotropic.png | Bin 0 -> 6261 bytes .../roi/rectroi/roi_getarrayregion_halfpx.png | Bin 0 -> 6924 bytes .../rectroi/roi_getarrayregion_img_trans.png | Bin 0 -> 8773 bytes .../rectroi/roi_getarrayregion_inverty.png | Bin 0 -> 8716 bytes .../roi/rectroi/roi_getarrayregion_resize.png | Bin 0 -> 6609 bytes .../roi/rectroi/roi_getarrayregion_rotate.png | Bin 0 -> 6980 bytes .../imageview}/test_imageview.py | 0 .../parametertree}/test_Parameter.py | 0 .../parametertree}/test_parametertypes.py | 0 {pyqtgraph/tests => tests}/test_Point.py | 0 {pyqtgraph/tests => tests}/test_Vector.py | 0 .../tests => tests}/test_configparser.py | 0 {pyqtgraph/tests => tests}/test_exit_crash.py | 0 {pyqtgraph/tests => tests}/test_functions.py | 0 {pyqtgraph/tests => tests}/test_makeARGB.py | 0 {pyqtgraph/tests => tests}/test_qt.py | 0 {pyqtgraph/tests => tests}/test_ref_cycles.py | 0 {pyqtgraph/tests => tests}/test_reload.py | 0 .../tests => tests}/test_signalproxy.py | 7 +- .../tests => tests}/test_srttransform3d.py | 0 {pyqtgraph/tests => tests}/test_stability.py | 0 {pyqtgraph/tests => tests}/ui_testing.py | 2 +- {pyqtgraph/tests => tests}/uictest.ui | 0 .../tests => tests/util}/test_lru_cache.py | 0 .../tests => tests/widgets}/test_combobox.py | 0 .../widgets}/test_graphics_view.py | 0 .../widgets}/test_histogramlutwidget.py | 0 .../tests => tests/widgets}/test_spinbox.py | 0 .../widgets}/test_tablewidget.py | 0 127 files changed, 125 insertions(+), 332 deletions(-) delete mode 100644 pyqtgraph/graphicsItems/PlotItem/tests/__init__.py rename {pyqtgraph/tests => tests}/__init__.py (100%) rename {pyqtgraph/tests => tests}/conftest.py (100%) rename {pyqtgraph/dockarea/tests => tests/dockarea}/test_dock.py (100%) rename {pyqtgraph/dockarea/tests => tests/dockarea}/test_dockarea.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/__init__.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/test_csv.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/test_hdf5.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/test_image.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/test_matplotlib.py (100%) rename {pyqtgraph/exporters/tests => tests/exporters}/test_svg.py (100%) rename {pyqtgraph/graphicsItems/PlotItem/tests => tests/graphicsItems/PlotItem}/test_PlotItem.py (100%) rename {pyqtgraph/graphicsItems/ViewBox/tests => tests/graphicsItems/ViewBox}/test_ViewBox.py (100%) rename {pyqtgraph/graphicsItems/ViewBox/tests => tests/graphicsItems/ViewBox}/test_ViewBoxZoom.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ArrowItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_AxisItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ErrorBarItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_GraphicsItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ImageItem.py (99%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ImageItemFormat.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_InfiniteLine.py (98%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_LegendItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_NonUniformImage.py (94%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_PlotCurveItem.py (95%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_PlotDataItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ROI.py (92%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_ScatterPlotItem.py (100%) rename {pyqtgraph/graphicsItems/tests => tests/graphicsItems}/test_TextItem.py (100%) rename {pyqtgraph/tests => tests}/image_testing.py (54%) create mode 100644 tests/images/imageitem/bool.png create mode 100644 tests/images/imageitem/gradient_mono_byte.png create mode 100644 tests/images/imageitem/gradient_mono_byte_levels.png create mode 100644 tests/images/imageitem/gradient_mono_int.png create mode 100644 tests/images/imageitem/gradient_mono_int_levels.png create mode 100644 tests/images/imageitem/gradient_rgba_byte.png create mode 100644 tests/images/imageitem/gradient_rgba_byte_levels.png create mode 100644 tests/images/imageitem/gradient_rgba_float.png create mode 100644 tests/images/imageitem/gradient_rgba_float_additive.png create mode 100644 tests/images/imageitem/gradient_rgba_float_alpha.png create mode 100644 tests/images/imageitem/init.png create mode 100644 tests/images/imageitem/levels1.png create mode 100644 tests/images/imageitem/lut.png create mode 100644 tests/images/imageitem/monochrome.png create mode 100644 tests/images/imageitem/resolution_with_downsampling_x.png create mode 100644 tests/images/imageitem/resolution_with_downsampling_y.png create mode 100644 tests/images/imageitem/resolution_without_downsampling.png create mode 100644 tests/images/nonuniform_image/colormap-3x3.png create mode 100644 tests/images/nonuniform_image/lut-3x3.png create mode 100644 tests/images/plotcurveitem/connectall.png create mode 100644 tests/images/plotcurveitem/connectarray.png create mode 100644 tests/images/plotcurveitem/connectfinite.png create mode 100644 tests/images/plotcurveitem/connectpairs.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_anisotropic.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_halfpx.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_img_trans.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_inverty.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_resize.png create mode 100644 tests/images/roi/baseroi/roi_getarrayregion_rotate.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_anisotropic.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_halfpx.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_img_trans.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_inverty.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_resize.png create mode 100644 tests/images/roi/ellipseroi/roi_getarrayregion_rotate.png create mode 100644 tests/images/roi/polylineroi/closed_clear.png create mode 100644 tests/images/roi/polylineroi/closed_click_segment.png create mode 100644 tests/images/roi/polylineroi/closed_drag_handle.png create mode 100644 tests/images/roi/polylineroi/closed_drag_new_handle.png create mode 100644 tests/images/roi/polylineroi/closed_drag_roi.png create mode 100644 tests/images/roi/polylineroi/closed_hover_handle.png create mode 100644 tests/images/roi/polylineroi/closed_hover_roi.png create mode 100644 tests/images/roi/polylineroi/closed_hover_segment.png create mode 100644 tests/images/roi/polylineroi/closed_init.png create mode 100644 tests/images/roi/polylineroi/closed_setpoints.png create mode 100644 tests/images/roi/polylineroi/closed_setstate.png create mode 100644 tests/images/roi/polylineroi/open_clear.png create mode 100644 tests/images/roi/polylineroi/open_click_segment.png create mode 100644 tests/images/roi/polylineroi/open_drag_handle.png create mode 100644 tests/images/roi/polylineroi/open_drag_new_handle.png create mode 100644 tests/images/roi/polylineroi/open_drag_roi.png create mode 100644 tests/images/roi/polylineroi/open_hover_handle.png create mode 100644 tests/images/roi/polylineroi/open_hover_roi.png create mode 100644 tests/images/roi/polylineroi/open_hover_segment.png create mode 100644 tests/images/roi/polylineroi/open_init.png create mode 100644 tests/images/roi/polylineroi/open_setpoints.png create mode 100644 tests/images/roi/polylineroi/open_setstate.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion_anisotropic.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion_halfpx.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion_img_trans.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion_inverty.png create mode 100644 tests/images/roi/polylineroi/roi_getarrayregion_rotate.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_anisotropic.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_halfpx.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_img_trans.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_inverty.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_resize.png create mode 100644 tests/images/roi/rectroi/roi_getarrayregion_rotate.png rename {pyqtgraph/imageview/tests => tests/imageview}/test_imageview.py (100%) rename {pyqtgraph/parametertree/tests => tests/parametertree}/test_Parameter.py (100%) rename {pyqtgraph/parametertree/tests => tests/parametertree}/test_parametertypes.py (100%) rename {pyqtgraph/tests => tests}/test_Point.py (100%) rename {pyqtgraph/tests => tests}/test_Vector.py (100%) rename {pyqtgraph/tests => tests}/test_configparser.py (100%) rename {pyqtgraph/tests => tests}/test_exit_crash.py (100%) rename {pyqtgraph/tests => tests}/test_functions.py (100%) rename {pyqtgraph/tests => tests}/test_makeARGB.py (100%) rename {pyqtgraph/tests => tests}/test_qt.py (100%) rename {pyqtgraph/tests => tests}/test_ref_cycles.py (100%) rename {pyqtgraph/tests => tests}/test_reload.py (100%) rename {pyqtgraph/tests => tests}/test_signalproxy.py (97%) rename {pyqtgraph/tests => tests}/test_srttransform3d.py (100%) rename {pyqtgraph/tests => tests}/test_stability.py (100%) rename {pyqtgraph/tests => tests}/ui_testing.py (98%) rename {pyqtgraph/tests => tests}/uictest.ui (100%) rename {pyqtgraph/util/tests => tests/util}/test_lru_cache.py (100%) rename {pyqtgraph/widgets/tests => tests/widgets}/test_combobox.py (100%) rename {pyqtgraph/widgets/tests => tests/widgets}/test_graphics_view.py (100%) rename {pyqtgraph/widgets/tests => tests/widgets}/test_histogramlutwidget.py (100%) rename {pyqtgraph/widgets/tests => tests/widgets}/test_spinbox.py (100%) rename {pyqtgraph/widgets/tests => tests/widgets}/test_tablewidget.py (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 83924218..601b1136 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,11 +40,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - - name: Checkout test-data - uses: actions/checkout@v2 - with: - repository: pyqtgraph/test-data - path: .pyqtgraph/test-data - name: Setup Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: @@ -106,7 +101,7 @@ jobs: - name: Run Tests run: | mkdir $SCREENSHOT_DIR - pytest pyqtgraph examples -v \ + pytest tests examples -v \ --junitxml pytest.xml \ shell: bash - name: Upload Screenshots diff --git a/pyqtgraph/functions.py b/pyqtgraph/functions.py index 6abfecce..2926063d 100644 --- a/pyqtgraph/functions.py +++ b/pyqtgraph/functions.py @@ -1511,17 +1511,10 @@ def makeQImage(imgData, alpha=None, copy=True, transpose=True): return ndarray_to_qimage(imgData, imgFormat) -def imageToArray(img, copy=False, transpose=True): - """ - Convert a QImage into numpy array. The image must have format RGB32, ARGB32, or ARGB32_Premultiplied. - By default, the image is not copied; changes made to the array will appear in the QImage as well (beware: if - the QImage is collected before the array, there may be trouble). - The array will have shape (width, height, (b,g,r,a)). - """ - fmt = img.format() - img_ptr = img.bits() +def qimage_to_ndarray(qimg): + img_ptr = qimg.bits() - if QT_LIB.startswith('PyQt'): + if hasattr(img_ptr, 'setsize'): # PyQt sip.voidptr # sizeInBytes() was introduced in Qt 5.10 # however PyQt5 5.12 will fail with: # "TypeError: QImage.sizeInBytes() is a private method" @@ -1529,14 +1522,37 @@ def imageToArray(img, copy=False, transpose=True): # PyQt5 5.15, PySide2 5.12, PySide2 5.15 try: # 64-bits size - nbytes = img.sizeInBytes() + nbytes = qimg.sizeInBytes() except (TypeError, AttributeError): # 32-bits size - nbytes = img.byteCount() + nbytes = qimg.byteCount() img_ptr.setsize(nbytes) - arr = np.frombuffer(img_ptr, dtype=np.ubyte) - arr = arr.reshape(img.height(), img.width(), 4) + depth = qimg.depth() + if depth in (8, 24, 32): + dtype = np.uint8 + nchan = depth // 8 + elif depth in (16, 64): + dtype = np.uint16 + nchan = depth // 16 + else: + raise ValueError("Unsupported Image Type") + shape = qimg.height(), qimg.width() + if nchan != 1: + shape = shape + (nchan,) + return np.frombuffer(img_ptr, dtype=dtype).reshape(shape) + + +def imageToArray(img, copy=False, transpose=True): + """ + Convert a QImage into numpy array. The image must have format RGB32, ARGB32, or ARGB32_Premultiplied. + By default, the image is not copied; changes made to the array will appear in the QImage as well (beware: if + the QImage is collected before the array, there may be trouble). + The array will have shape (width, height, (b,g,r,a)). + """ + arr = qimage_to_ndarray(img) + + fmt = img.format() if fmt == img.Format_RGB32: arr[...,3] = 255 diff --git a/pyqtgraph/graphicsItems/PlotItem/tests/__init__.py b/pyqtgraph/graphicsItems/PlotItem/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pytest.ini b/pytest.ini index 550a2faa..f7244778 100644 --- a/pytest.ini +++ b/pytest.ini @@ -4,7 +4,7 @@ xvfb_height = 1080 # use this due to some issues with ndarray reshape errors on CI systems xvfb_colordepth = 24 xvfb_args=-ac +extension GLX +render -faulthandler_timeout = 30 +faulthandler_timeout = 60 filterwarnings = # re-enable standard library warnings diff --git a/pyqtgraph/tests/__init__.py b/tests/__init__.py similarity index 100% rename from pyqtgraph/tests/__init__.py rename to tests/__init__.py diff --git a/pyqtgraph/tests/conftest.py b/tests/conftest.py similarity index 100% rename from pyqtgraph/tests/conftest.py rename to tests/conftest.py diff --git a/pyqtgraph/dockarea/tests/test_dock.py b/tests/dockarea/test_dock.py similarity index 100% rename from pyqtgraph/dockarea/tests/test_dock.py rename to tests/dockarea/test_dock.py diff --git a/pyqtgraph/dockarea/tests/test_dockarea.py b/tests/dockarea/test_dockarea.py similarity index 100% rename from pyqtgraph/dockarea/tests/test_dockarea.py rename to tests/dockarea/test_dockarea.py diff --git a/pyqtgraph/exporters/tests/__init__.py b/tests/exporters/__init__.py similarity index 100% rename from pyqtgraph/exporters/tests/__init__.py rename to tests/exporters/__init__.py diff --git a/pyqtgraph/exporters/tests/test_csv.py b/tests/exporters/test_csv.py similarity index 100% rename from pyqtgraph/exporters/tests/test_csv.py rename to tests/exporters/test_csv.py diff --git a/pyqtgraph/exporters/tests/test_hdf5.py b/tests/exporters/test_hdf5.py similarity index 100% rename from pyqtgraph/exporters/tests/test_hdf5.py rename to tests/exporters/test_hdf5.py diff --git a/pyqtgraph/exporters/tests/test_image.py b/tests/exporters/test_image.py similarity index 100% rename from pyqtgraph/exporters/tests/test_image.py rename to tests/exporters/test_image.py diff --git a/pyqtgraph/exporters/tests/test_matplotlib.py b/tests/exporters/test_matplotlib.py similarity index 100% rename from pyqtgraph/exporters/tests/test_matplotlib.py rename to tests/exporters/test_matplotlib.py diff --git a/pyqtgraph/exporters/tests/test_svg.py b/tests/exporters/test_svg.py similarity index 100% rename from pyqtgraph/exporters/tests/test_svg.py rename to tests/exporters/test_svg.py diff --git a/pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py b/tests/graphicsItems/PlotItem/test_PlotItem.py similarity index 100% rename from pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py rename to tests/graphicsItems/PlotItem/test_PlotItem.py diff --git a/pyqtgraph/graphicsItems/ViewBox/tests/test_ViewBox.py b/tests/graphicsItems/ViewBox/test_ViewBox.py similarity index 100% rename from pyqtgraph/graphicsItems/ViewBox/tests/test_ViewBox.py rename to tests/graphicsItems/ViewBox/test_ViewBox.py diff --git a/pyqtgraph/graphicsItems/ViewBox/tests/test_ViewBoxZoom.py b/tests/graphicsItems/ViewBox/test_ViewBoxZoom.py similarity index 100% rename from pyqtgraph/graphicsItems/ViewBox/tests/test_ViewBoxZoom.py rename to tests/graphicsItems/ViewBox/test_ViewBoxZoom.py diff --git a/pyqtgraph/graphicsItems/tests/test_ArrowItem.py b/tests/graphicsItems/test_ArrowItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_ArrowItem.py rename to tests/graphicsItems/test_ArrowItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_AxisItem.py b/tests/graphicsItems/test_AxisItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_AxisItem.py rename to tests/graphicsItems/test_AxisItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_ErrorBarItem.py b/tests/graphicsItems/test_ErrorBarItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_ErrorBarItem.py rename to tests/graphicsItems/test_ErrorBarItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_GraphicsItem.py b/tests/graphicsItems/test_GraphicsItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_GraphicsItem.py rename to tests/graphicsItems/test_GraphicsItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_ImageItem.py b/tests/graphicsItems/test_ImageItem.py similarity index 99% rename from pyqtgraph/graphicsItems/tests/test_ImageItem.py rename to tests/graphicsItems/test_ImageItem.py index cc9b45f5..01a9f88d 100644 --- a/pyqtgraph/graphicsItems/tests/test_ImageItem.py +++ b/tests/graphicsItems/test_ImageItem.py @@ -5,7 +5,7 @@ import pytest from pyqtgraph.Qt import QtCore, QtGui, QtTest import numpy as np import pyqtgraph as pg -from pyqtgraph.tests import assertImageApproved, TransposedImageItem +from tests.image_testing import assertImageApproved, TransposedImageItem try: import cupy except ImportError: diff --git a/pyqtgraph/graphicsItems/tests/test_ImageItemFormat.py b/tests/graphicsItems/test_ImageItemFormat.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_ImageItemFormat.py rename to tests/graphicsItems/test_ImageItemFormat.py diff --git a/pyqtgraph/graphicsItems/tests/test_InfiniteLine.py b/tests/graphicsItems/test_InfiniteLine.py similarity index 98% rename from pyqtgraph/graphicsItems/tests/test_InfiniteLine.py rename to tests/graphicsItems/test_InfiniteLine.py index be3cb460..2e6ec8bc 100644 --- a/pyqtgraph/graphicsItems/tests/test_InfiniteLine.py +++ b/tests/graphicsItems/test_InfiniteLine.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore, QtTest -from pyqtgraph.tests import mouseDrag, mouseMove +from tests.ui_testing import mouseDrag, mouseMove pg.mkQApp() diff --git a/pyqtgraph/graphicsItems/tests/test_LegendItem.py b/tests/graphicsItems/test_LegendItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_LegendItem.py rename to tests/graphicsItems/test_LegendItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_NonUniformImage.py b/tests/graphicsItems/test_NonUniformImage.py similarity index 94% rename from pyqtgraph/graphicsItems/tests/test_NonUniformImage.py rename to tests/graphicsItems/test_NonUniformImage.py index 52b7c989..5b46a7d5 100644 --- a/pyqtgraph/graphicsItems/tests/test_NonUniformImage.py +++ b/tests/graphicsItems/test_NonUniformImage.py @@ -2,7 +2,7 @@ import numpy as np import pyqtgraph as pg from pyqtgraph.Qt import QtTest from pyqtgraph.graphicsItems.NonUniformImage import NonUniformImage -from pyqtgraph.tests import assertImageApproved +from tests.image_testing import assertImageApproved from pyqtgraph.colormap import ColorMap import pyqtgraph.functions as fn import pytest @@ -93,7 +93,7 @@ def test_NonUniformImage_colormap(): image = NonUniformImage(x, y, Z, border=fn.mkPen('g')) - cmap = ColorMap(pos=[0.0, 1.0], color=[(0.0, 0.0, 0.0, 1.0), (1.0, 1.0, 1.0, 1.0)]) + cmap = ColorMap(pos=[0.0, 1.0], color=[(0, 0, 0), (255, 255, 255)]) image.setColorMap(cmap) viewbox.addItem(image) diff --git a/pyqtgraph/graphicsItems/tests/test_PlotCurveItem.py b/tests/graphicsItems/test_PlotCurveItem.py similarity index 95% rename from pyqtgraph/graphicsItems/tests/test_PlotCurveItem.py rename to tests/graphicsItems/test_PlotCurveItem.py index 80dee478..ab807721 100644 --- a/pyqtgraph/graphicsItems/tests/test_PlotCurveItem.py +++ b/tests/graphicsItems/test_PlotCurveItem.py @@ -1,6 +1,6 @@ import numpy as np import pyqtgraph as pg -from pyqtgraph.tests import assertImageApproved +from tests.image_testing import assertImageApproved def test_PlotCurveItem(): diff --git a/pyqtgraph/graphicsItems/tests/test_PlotDataItem.py b/tests/graphicsItems/test_PlotDataItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_PlotDataItem.py rename to tests/graphicsItems/test_PlotDataItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_ROI.py b/tests/graphicsItems/test_ROI.py similarity index 92% rename from pyqtgraph/graphicsItems/tests/test_ROI.py rename to tests/graphicsItems/test_ROI.py index 044c178b..cb689749 100644 --- a/pyqtgraph/graphicsItems/tests/test_ROI.py +++ b/tests/graphicsItems/test_ROI.py @@ -3,9 +3,10 @@ import sys import numpy as np import pytest import pyqtgraph as pg +import platform from pyqtgraph.Qt import QtCore, QtGui, QtTest -from pyqtgraph.tests import assertImageApproved, mouseMove, mouseDrag, mouseClick, TransposedImageItem, resizeWindow -import pytest +from tests.image_testing import assertImageApproved +from tests.ui_testing import mouseMove, mouseDrag, mouseClick, resizeWindow app = pg.mkQApp() pg.setConfigOption("mouseRateLimit", 0) @@ -39,17 +40,20 @@ def test_getArrayRegion_axisorder(): def check_getArrayRegion(roi, name, testResize=True, transpose=False): + # on windows, edges corner pixels seem to be slightly different from other platforms + # giving a pxCount=2 for a fudge factor + if isinstance(roi, (pg.ROI, pg.RectROI)) and platform.system() == "Windows": + pxCount = 2 + else: + pxCount=-1 + + initState = roi.getState() - #win = pg.GraphicsLayoutWidget() win = pg.GraphicsView() win.show() resizeWindow(win, 200, 400) - # Don't use Qt's layouts for testing--these generate unpredictable results. - #vb1 = win.addViewBox() - #win.nextRow() - #vb2 = win.addViewBox() - + # Don't use Qt's layouts for testing--these generate unpredictable results. # Instead, place the viewboxes manually vb1 = pg.ViewBox() win.scene().addItem(vb1) @@ -97,7 +101,7 @@ def check_getArrayRegion(roi, name, testResize=True, transpose=False): vb2.enableAutoRange(True, True) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion', 'Simple ROI region selection.') + assertImageApproved(win, name+'/roi_getarrayregion', 'Simple ROI region selection.', pxCount=pxCount) with pytest.raises(TypeError): roi.setPos(0, False) @@ -106,38 +110,33 @@ def check_getArrayRegion(roi, name, testResize=True, transpose=False): rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion_halfpx', 'Simple ROI region selection, 0.5 pixel shift.') + assertImageApproved(win, name+'/roi_getarrayregion_halfpx', 'Simple ROI region selection, 0.5 pixel shift.', pxCount=pxCount) roi.setAngle(45) roi.setPos([3, 0]) rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion_rotate', 'Simple ROI region selection, rotation.') + assertImageApproved(win, name+'/roi_getarrayregion_rotate', 'Simple ROI region selection, rotation.', pxCount=pxCount) if testResize: roi.setSize([60, 60]) rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion_resize', 'Simple ROI region selection, resized.') + assertImageApproved(win, name+'/roi_getarrayregion_resize', 'Simple ROI region selection, resized.', pxCount=pxCount) img1.setPos(0, img1.height()) img1.setTransform(QtGui.QTransform().scale(1, -1).rotate(20), True) rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion_img_trans', 'Simple ROI region selection, image transformed.') + assertImageApproved(win, name+'/roi_getarrayregion_img_trans', 'Simple ROI region selection, image transformed.', pxCount=pxCount) vb1.invertY() rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - # on windows, one edge of one ROI handle is shifted slightly; letting this slide with pxCount=10 - if pg.Qt.QT_LIB in {'PyQt4', 'PySide'}: - pxCount = 10 - else: - pxCount=-1 assertImageApproved(win, name+'/roi_getarrayregion_inverty', 'Simple ROI region selection, view inverted.', pxCount=pxCount) roi.setState(initState) @@ -146,7 +145,7 @@ def check_getArrayRegion(roi, name, testResize=True, transpose=False): rgn = roi.getArrayRegion(data, img1, axes=(1, 2)) img2.setImage(rgn[0, ..., 0]) app.processEvents() - assertImageApproved(win, name+'/roi_getarrayregion_anisotropic', 'Simple ROI region selection, image scaled anisotropically.') + assertImageApproved(win, name+'/roi_getarrayregion_anisotropic', 'Simple ROI region selection, image scaled anisotropically.', pxCount=pxCount) # allow the roi to be re-used roi.scene().removeItem(roi) diff --git a/pyqtgraph/graphicsItems/tests/test_ScatterPlotItem.py b/tests/graphicsItems/test_ScatterPlotItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_ScatterPlotItem.py rename to tests/graphicsItems/test_ScatterPlotItem.py diff --git a/pyqtgraph/graphicsItems/tests/test_TextItem.py b/tests/graphicsItems/test_TextItem.py similarity index 100% rename from pyqtgraph/graphicsItems/tests/test_TextItem.py rename to tests/graphicsItems/test_TextItem.py diff --git a/pyqtgraph/tests/image_testing.py b/tests/image_testing.py similarity index 54% rename from pyqtgraph/tests/image_testing.py rename to tests/image_testing.py index e64df55e..54dd4901 100644 --- a/pyqtgraph/tests/image_testing.py +++ b/tests/image_testing.py @@ -3,68 +3,32 @@ """ Procedure for unit-testing with images: -1. Run unit tests at least once; this initializes a git clone of - pyqtgraph/test-data in ~/.pyqtgraph. - -2. Run individual test scripts with the PYQTGRAPH_AUDIT environment variable set: + Run individual test scripts with the PYQTGRAPH_AUDIT environment variable set: $ PYQTGRAPH_AUDIT=1 python pyqtgraph/graphicsItems/tests/test_PlotCurveItem.py - Any failing tests will display the test results, standard image, and the - differences between the two. If the test result is bad, then press (f)ail. - If the test result is good, then press (p)ass and the new image will be - saved to the test-data directory. - - To check all test results regardless of whether the test failed, set the - environment variable PYQTGRAPH_AUDIT_ALL=1. - -3. After adding or changing test images, create a new commit: - - $ cd ~/.pyqtgraph/test-data - $ git add ... - $ git commit -a - -4. Look up the most recent tag name from the `testDataTag` global variable - below. Increment the tag name by 1 and create a new tag in the test-data - repository: - - $ git tag test-data-NNN - $ git push --tags origin master - - This tag is used to ensure that each pyqtgraph commit is linked to a specific - commit in the test-data repository. This makes it possible to push new - commits to the test-data repository without interfering with existing - tests, and also allows unit tests to continue working on older pyqtgraph - versions. + Any failing tests will display the test results, standard image, and the + differences between the two. If the test result is bad, then press (f)ail. + If the test result is good, then press (p)ass and the new image will be + saved to the test-data directory. + To check all test results regardless of whether the test failed, set the + environment variable PYQTGRAPH_AUDIT_ALL=1. """ - -# This is the name of a tag in the test-data repository that this version of -# pyqtgraph should be tested against. When adding or changing test images, -# create and push a new tag and update this variable. To test locally, begin -# by creating the tag in your ~/.pyqtgraph/test-data repository. -testDataTag = 'test-data-8' - - import time import os import sys import inspect -import base64 -import subprocess as sp +import warnings import numpy as np -if sys.version[0] >= '3': - import http.client as httplib - import urllib.parse as urllib -else: - import httplib - import urllib -from ..Qt import QtGui, QtCore, QtTest, QT_LIB -from .. import functions as fn -from .. import GraphicsLayoutWidget -from .. import ImageItem, TextItem +from pathlib import Path + +from pyqtgraph.Qt import QtGui, QtCore +from pyqtgraph import functions as fn +from pyqtgraph import GraphicsLayoutWidget +from pyqtgraph import ImageItem, TextItem tester = None @@ -101,6 +65,21 @@ def getTester(): return tester +def getImageFromWidget(widget): + + # just to be sure the widget size is correct (new window may be resized): + QtGui.QApplication.processEvents() + + qimg = QtGui.QImage(widget.size(), QtGui.QImage.Format.Format_ARGB32) + qimg.fill(QtCore.Qt.GlobalColor.transparent) + painter = QtGui.QPainter(qimg) + widget.render(painter) + painter.end() + + qimg = qimg.convertToFormat(QtGui.QImage.Format.Format_RGBA8888) + return fn.qimage_to_ndarray(qimg).copy() + + def assertImageApproved(image, standardFile, message=None, **kwargs): """Check that an image test result matches a pre-approved standard. @@ -108,10 +87,6 @@ def assertImageApproved(image, standardFile, message=None, **kwargs): to compare the images and decide whether to fail the test or save the new image as the standard. - This function will automatically clone the test-data repository into - ~/.pyqtgraph/test-data. However, it is up to the user to ensure this repository - is kept up to date and to commit/push new images after they are saved. - Run the test with the environment variable PYQTGRAPH_AUDIT=1 to bring up the auditing GUI. @@ -131,43 +106,28 @@ def assertImageApproved(image, standardFile, message=None, **kwargs): comparison (see ``assertImageMatch()``). """ if isinstance(image, QtGui.QWidget): - w = image - - # just to be sure the widget size is correct (new window may be resized): + # just to be sure the widget size is correct (new window may be resized): QtGui.QApplication.processEvents() - graphstate = scenegraphState(w, standardFile) - qimg = QtGui.QImage(w.size(), QtGui.QImage.Format.Format_ARGB32) - qimg.fill(QtCore.Qt.GlobalColor.transparent) - painter = QtGui.QPainter(qimg) - w.render(painter) - painter.end() - - image = fn.imageToArray(qimg, copy=False, transpose=False) - - # the standard images seem to have their Red and Blue swapped - if sys.byteorder == 'little': - # transpose B,G,R,A to R,G,B,A - image = image[..., [2, 1, 0, 3]] - else: - # transpose A,R,G,B to A,B,G,R - image = image[..., [0, 3, 2, 1]] + graphstate = scenegraphState(image, standardFile) + image = getImageFromWidget(image) if message is None: code = inspect.currentframe().f_back.f_code message = "%s::%s" % (code.co_filename, code.co_name) - # Make sure we have a test data repo available, possibly invoking git - dataPath = getTestDataRepo() + # Make sure we have a test data repo available + dataPath = getTestDataDirectory() # Read the standard image if it exists stdFileName = os.path.join(dataPath, standardFile + '.png') if not os.path.isfile(stdFileName): stdImage = None else: - pxm = QtGui.QPixmap() - pxm.load(stdFileName) - stdImage = fn.imageToArray(pxm.toImage(), copy=True, transpose=False) + qimg = QtGui.QImage(stdFileName) + qimg = qimg.convertToFormat(QtGui.QImage.Format.Format_RGBA8888) + stdImage = fn.qimage_to_ndarray(qimg).copy() + del qimg # If the test image does not match, then we go to audit if requested. try: @@ -191,18 +151,13 @@ def assertImageApproved(image, standardFile, message=None, **kwargs): image = fn.downsample(image, sr[0], axis=(0, 1)).astype(image.dtype) assertImageMatch(image, stdImage, **kwargs) - + if bool(os.getenv('PYQTGRAPH_PRINT_TEST_STATE', False)): print(graphstate) - + if os.getenv('PYQTGRAPH_AUDIT_ALL') == '1': raise Exception("Image test passed, but auditing due to PYQTGRAPH_AUDIT_ALL evnironment variable.") except Exception: - - if stdFileName in gitStatus(dataPath): - print("\n\nWARNING: unit test failed against modified standard " - "image %s.\nTo revert this file, run `cd %s; git checkout " - "%s`\n" % (stdFileName, dataPath, standardFile)) if os.getenv('PYQTGRAPH_AUDIT') == '1' or os.getenv('PYQTGRAPH_AUDIT_ALL') == '1': sys.excepthook(*sys.exc_info()) getTester().test(image, stdImage, message) @@ -210,20 +165,18 @@ def assertImageApproved(image, standardFile, message=None, **kwargs): print('Saving new standard image to "%s"' % stdFileName) if not os.path.isdir(stdPath): os.makedirs(stdPath) - img = fn.makeQImage(image, alpha=True, transpose=False) - img.save(stdFileName) + qimg = fn.ndarray_to_qimage(image, QtGui.QImage.Format.Format_RGBA8888) + qimg.save(stdFileName) + del qimg else: if stdImage is None: raise Exception("Test standard %s does not exist. Set " "PYQTGRAPH_AUDIT=1 to add this image." % stdFileName) - else: - if os.getenv('TRAVIS') is not None: - saveFailedTest(image, stdImage, standardFile, upload=True) - elif os.getenv('CI') is not None: - standardFile = os.path.join(os.getenv("SCREENSHOT_DIR", "screenshots"), standardFile) - saveFailedTest(image, stdImage, standardFile) - print(graphstate) - raise + if os.getenv('CI') is not None: + standardFile = os.path.join(os.getenv("SCREENSHOT_DIR", "screenshots"), standardFile) + saveFailedTest(image, stdImage, standardFile) + print(graphstate) + raise def assertImageMatch(im1, im2, minCorr=None, pxThreshold=50., @@ -249,8 +202,8 @@ def assertImageMatch(im1, im2, minCorr=None, pxThreshold=50., pxThreshold : float Minimum value difference at which two pixels are considered different pxCount : int or None - Maximum number of pixels that may differ. Default is 0 for Qt4 and - 1% of image size for Qt5. + Maximum number of pixels that may differ. Default is 0, on Windows some + tests have a value of 2. maxPxDiff : float or None Maximum allowed difference between pixels avgPxDiff : float or None @@ -264,12 +217,7 @@ def assertImageMatch(im1, im2, minCorr=None, pxThreshold=50., assert im1.dtype == im2.dtype if pxCount == -1: - if QT_LIB in {'PyQt5', 'PySide2', 'PySide6', 'PyQt6'}: - # Qt5 generates slightly different results; relax the tolerance - # until test images are updated. - pxCount = int(im1.shape[0] * im1.shape[1] * 0.01) - else: - pxCount = 0 + pxCount = 0 diff = im1.astype(float) - im2.astype(float) if imgDiff is not None: @@ -292,9 +240,7 @@ def assertImageMatch(im1, im2, minCorr=None, pxThreshold=50., assert corr >= minCorr -def saveFailedTest(data, expect, filename, upload=False): - """Upload failed test images to web server to allow CI test debugging. - """ +def saveFailedTest(data, expect, filename): # concatenate data, expect, and diff into a single image ds = data.shape es = expect.shape @@ -310,7 +256,7 @@ def saveFailedTest(data, expect, filename, upload=False): diff = makeDiffImage(data, expect) img[2:2+diff.shape[0], -diff.shape[1]-2:-2] = diff - png = makePng(img) + png = makePng(data) # change `img` to `data` to save just the failed image directory = os.path.dirname(filename) if not os.path.isdir(directory): os.makedirs(directory) @@ -318,38 +264,15 @@ def saveFailedTest(data, expect, filename, upload=False): png_file.write(png) print("\nImage comparison failed. Test result: %s %s Expected result: " "%s %s" % (data.shape, data.dtype, expect.shape, expect.dtype)) - if upload: - uploadFailedTest(filename, png) - - -def uploadFailedTest(filename, png): - commit = runSubprocess(['git', 'rev-parse', 'HEAD']) - name = filename.split(os.path.sep) - name.insert(-1, commit.strip()) - filename = os.path.sep.join(name) - - host = 'data.pyqtgraph.org' - conn = httplib.HTTPConnection(host) - req = urllib.urlencode({'name': filename, - 'data': base64.b64encode(png)}) - conn.request('POST', '/upload.py', req) - response = conn.getresponse().read() - conn.close() - - print("Uploaded to: \nhttp://%s/data/%s" % (host, filename)) - if not response.startswith(b'OK'): - print("WARNING: Error uploading data to %s" % host) - print(response) def makePng(img): """Given an array like (H, W, 4), return a PNG-encoded byte string. """ io = QtCore.QBuffer() - qim = fn.makeQImage(img.transpose(1, 0, 2), alpha=False) + qim = fn.ndarray_to_qimage(img, QtGui.QImage.Format.Format_RGBX8888) qim.save(io, 'PNG') - png = bytes(io.data().data()) - return png + return bytes(io.data().data()) def makeDiffImage(im1, im2): @@ -467,155 +390,18 @@ class ImageTester(QtGui.QWidget): def getTestDataRepo(): - """Return the path to a git repository with the required commit checked - out. - - If the repository does not exist, then it is cloned from - https://github.com/pyqtgraph/test-data. If the repository already exists - then the required commit is checked out. - """ - global testDataTag - - if os.getenv("CI"): - dataPath = os.path.join(os.environ["GITHUB_WORKSPACE"], '.pyqtgraph', 'test-data') - else: - dataPath = os.path.join(os.path.expanduser('~'), '.pyqtgraph', 'test-data') - gitPath = 'https://github.com/pyqtgraph/test-data' - gitbase = gitCmdBase(dataPath) - - if os.path.isdir(dataPath): - # Already have a test-data repository to work with. - - # Get the commit ID of testDataTag. Do a fetch if necessary. - try: - tagCommit = gitCommitId(dataPath, testDataTag) - except NameError: - cmd = gitbase + ['fetch', '--tags', 'origin'] - print(' '.join(cmd)) - sp.check_call(cmd) - try: - tagCommit = gitCommitId(dataPath, testDataTag) - except NameError: - raise Exception("Could not find tag '%s' in test-data repo at" - " %s" % (testDataTag, dataPath)) - except Exception: - if not os.path.exists(os.path.join(dataPath, '.git')): - raise Exception("Directory '%s' does not appear to be a git " - "repository. Please remove this directory." % - dataPath) - else: - raise - - # If HEAD is not the correct commit, then do a checkout - if gitCommitId(dataPath, 'HEAD') != tagCommit: - print("Checking out test-data tag '%s'" % testDataTag) - sp.check_call(gitbase + ['checkout', testDataTag]) - - else: - print("Attempting to create git clone of test data repo in %s.." % - dataPath) - - parentPath = os.path.split(dataPath)[0] - if not os.path.isdir(parentPath): - os.makedirs(parentPath) - - if os.getenv('TRAVIS') is not None or os.getenv('CI') is not None: - # Create a shallow clone of the test-data repository (to avoid - # downloading more data than is necessary) - os.makedirs(dataPath) - cmds = [ - gitbase + ['init'], - gitbase + ['remote', 'add', 'origin', gitPath], - gitbase + ['fetch', '--tags', 'origin', testDataTag, - '--depth=1'], - gitbase + ['checkout', '-b', 'master', 'FETCH_HEAD'], - ] - else: - # Create a full clone - cmds = [['git', 'clone', gitPath, dataPath]] - - for cmd in cmds: - print(' '.join(cmd)) - rval = sp.check_call(cmd) - if rval == 0: - continue - raise RuntimeError("Test data path '%s' does not exist and could " - "not be created with git. Please create a git " - "clone of %s at this path." % - (dataPath, gitPath)) - - return dataPath + warnings.warn( + "Test data data repo has been merged with the main repo" + "use getTestDataDirectory() instead, this method will be removed" + "in a future version of pyqtgraph", + DeprecationWarning, stacklevel=2 + ) + return getTestDataDirectory() -def gitCmdBase(path): - return ['git', '--git-dir=%s/.git' % path, '--work-tree=%s' % path] - - -def gitStatus(path): - """Return a string listing all changes to the working tree in a git - repository. - """ - cmd = gitCmdBase(path) + ['status', '--porcelain'] - return runSubprocess(cmd, stderr=None, universal_newlines=True) - - -def gitCommitId(path, ref): - """Return the commit id of *ref* in the git repository at *path*. - """ - cmd = gitCmdBase(path) + ['show', ref] - try: - output = runSubprocess(cmd, stderr=None, universal_newlines=True) - except sp.CalledProcessError: - print(cmd) - raise NameError("Unknown git reference '%s'" % ref) - commit = output.split('\n')[0] - assert commit[:7] == 'commit ' - return commit[7:] - - -def runSubprocess(command, return_code=False, **kwargs): - """Run command using subprocess.Popen - - Similar to subprocess.check_output(), which is not available in 2.6. - - Run command and wait for command to complete. If the return code was zero - then return, otherwise raise CalledProcessError. - By default, this will also add stdout= and stderr=subproces.PIPE - to the call to Popen to suppress printing to the terminal. - - Parameters - ---------- - command : list of str - Command to run as subprocess (see subprocess.Popen documentation). - **kwargs : dict - Additional kwargs to pass to ``subprocess.Popen``. - - Returns - ------- - stdout : str - Stdout returned by the process. - """ - # code adapted with permission from mne-python - use_kwargs = dict(stderr=None, stdout=sp.PIPE) - use_kwargs.update(kwargs) - - p = sp.Popen(command, **use_kwargs) - output = p.communicate()[0] - - # communicate() may return bytes, str, or None depending on the kwargs - # passed to Popen(). Convert all to unicode str: - output = '' if output is None else output - output = output.decode('utf-8') if isinstance(output, bytes) else output - - if p.returncode != 0: - print(output) - err_fun = sp.CalledProcessError.__init__ - if 'output' in inspect.getfullargspec(err_fun).args: - raise sp.CalledProcessError(p.returncode, command, output) - else: - raise sp.CalledProcessError(p.returncode, command) - - return output +def getTestDataDirectory(): + dataPath = Path(__file__).absolute().parent / "images" + return dataPath.as_posix() def scenegraphState(view, name): @@ -632,7 +418,7 @@ def scenegraphState(view, name): def itemState(root): state = str(root) + '\n' - from .. import ViewBox + from pyqtgraph import ViewBox state += 'bounding rect: ' + str(root.boundingRect()) + '\n' if isinstance(root, ViewBox): state += "view range: " + str(root.viewRange()) + '\n' @@ -647,7 +433,7 @@ def transformStr(t): def indent(s, pfx): - return '\n'.join([pfx+line for line in s.split('\n')]) + return '\n'.join(pfx+line for line in s.split('\n')) class TransposedImageItem(ImageItem): diff --git a/tests/images/imageitem/bool.png b/tests/images/imageitem/bool.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6e95aff59e12ce0167599c3cb763932a26d239 GIT binary patch literal 622 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|S$S zr;B4q#hkZS9P^kJMOYn$f8OI!S9j;=-l8TPzIOkG=q(j{fqH?U!QaHM@7bKMd~zvk zzdk_8ZJDA)sHEkX#%(fI8^av@$v1xk cE+DWeXO+L!k@sA?dnJhL>FVdQ&MBb@0GIUHtpET3 literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/gradient_mono_byte_levels.png b/tests/images/imageitem/gradient_mono_byte_levels.png new file mode 100644 index 0000000000000000000000000000000000000000..86fc9a2686e9ebd1de71d6c49df1b673a99557b8 GIT binary patch literal 1038 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 KE)3`3%>M!5G@w8L literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/gradient_mono_int_levels.png b/tests/images/imageitem/gradient_mono_int_levels.png new file mode 100644 index 0000000000000000000000000000000000000000..b35c666f9f6bfbc534fff08630019c55be536a83 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|Qfl zr;B4q#hka-42upq2rxK4d33*N`r|nV;+UH!UXhKD%{3^kUJld&0tGIopIq3r?yF4B ziLX_Ezn-bAxc;=LGE3}RQpBNf8#Z=T9ic-?io=O8D{I%*Ng-=XKd`TPvR5 zAKN#yJgy%ELx%C|PRnWk*F zJENuY@Msn9?yr3t?!B_u9U38@^_ufn^285Gx%blR-nW#Bf>7-!-{ pfgwX!@Sk7%de%8cNCG*)SHtYGN>|Fx_*no*#M9N!Wt~$(69B2Z%!~j4 literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/gradient_rgba_byte.png b/tests/images/imageitem/gradient_rgba_byte.png new file mode 100644 index 0000000000000000000000000000000000000000..551a2ba531e8fb34772d6601e7f5eb4901209bca GIT binary patch literal 718 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|Qfo zr;B4q#hka-Z~HMhinv^4{&D~CpY7Y#d)=CSAN4KDw$+sM$hHbS$^$e22tLTmhRNO9 zw$_f_Jmvm({rNki|E~F5H)rO|%V*BW-2e08*Q1wz*B?J0x97vR$L;BQHEG|!P2K-u zo8Rx=|Nk$a`MGC`(Q5H*xiI;b%AI{5&Z>xUcDg26Zj?J6{NecuC!tjnTC`LYH+tNN zPytIFs!(6ZTc=Vo`SJs1ncyiT5Ct(%mgbloFFC0`);ug6)G?^3e}&AWT^S*e%DbfnGRtObLe# zKm+$oh8PG^_Q2k1D+G}Ga!5ZNn1S^I302~fL3839(pdbR8|1b&UuAXunL4hyC zc0_>u^LQ@Aci3$JhONOpP)Gx<1_uI$GGIs_QF<5+4QWW&!h!VLCU5r6{r^PtUVMJRUf_3G_;ujErptyK zJ$(Gv%>N`hr!Umwkd{iK=p=)U9y>OA%!p9&(Glt^7YbA4Ts@(s)AdlV>!Bk`505DU zm2BYhjA#YPtBG+6cem8Hs;qIsr4ViqP_4Nb$SjaWDa+TdTn{uLPp8aiqs0X2?z#Jx z?-K$`Kc0)rwmg`HKqU~@CQU3zo(OR;M>k09qaW0fU>S%zfo_A?4Rk8dA3!BAe**Pv v@EDH7k=#$a4c&hAnQxN&3rQXf4fU`2_eWb@yl!fA3MAy|>gTe~DWM4fo^}V$ literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/gradient_rgba_float.png b/tests/images/imageitem/gradient_rgba_float.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef8a8880223288853ac4ad305bbfae7e4d03d1f GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|V21 zPZ!6KiaBp@-SuJ$WN5uO`EhmszU_ZwS`rtPw%B<^zg9Y=HuKSj@7JW5fkptqkN$aS zdQsQ6?&E)VqHh2HZ?oRMDSrEHw&5{}(-O%&XHTlj%WpsK@3()84FCIYzqZe}t@yUI z`~1z?-!Gd_KbJ4qS@KtY&u#sApRe8je{!?N8gr_8jCcx+Iu*z?%2Mc!;~g#Odm z4+Sb>oiC46>Ai1iU(DsX!bwP|yXA;d;-1M9B2-kwI3Le#(NbB+<>{d#WG2Sh>3Zmx z5|9T}wrT=Unc_wdphTSLq<~hH5Jk>V52vJw8^B^f#Xz3uB)BO+Gm|G`Q^wv6v;ksY zjttF2N9s2$M g@9))`khFHdG@mgcZ@Jupd-Fj8p00i_>zopr0M{=b0{{R3 literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/gradient_rgba_float_additive.png b/tests/images/imageitem/gradient_rgba_float_additive.png new file mode 100644 index 0000000000000000000000000000000000000000..eb39dc5032c492020d4b0dc29874b72738541322 GIT binary patch literal 9923 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 literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/init.png b/tests/images/imageitem/init.png new file mode 100644 index 0000000000000000000000000000000000000000..f18796bd0ca602ece9f028cf478f93d5e3aa8fe1 GIT binary patch literal 2086 zcmaJ@eN@s}8m7$5Y0+kCvc+s>o8!lNh9Q%IO;U%({35@QpUp@}A(wBNRKx?sJ-rLQUr)L2az#WF5_cke{FY(FA2};Ku1r5@YF>7&FXFugc*czoX>C4ZxlU&U(fxeesKGF1Ssj`Mzrsf|BIsls92-ne|v zHEf?!xv^}V3tX$8Xk(5`*=)81{_yfTUNos-JC->)Ae=-Zfk+HS5_@rZj%ufV<>7-D z6@L&8ju^Tw0x|18_SIEw>Cf{<30|Vbi+)rVk4y9Iwix;|8E)%mmn`0BMjd=2``fjT z?)|=?aNB?5+DKRmnM}6W+n7d8X+r}X&^>)xM=~~jj>=@e)Qe+XTwK7G_V&8if!FJ+ zfVj3ciffvl24ZB-{QUj3rNXFUu!Op#9vsw2E5ilmbl!Yof&cFP+ngcRyPDQL*MIvX z+T$_=nLwq}8*rmpYwuV9F6RZWP402E=UJ>~D)rPUEIn!RVeF7FMgAC#M%T8MyXb4M zAt51PY$N%hl!X4OUwxhuY!zR=_3E3*$Vh@}?Pu=P^pI?>oO%N+rSJca^5gd9~YS2^CS}5Iy>7gosnw#66Ls~Zi%Z;?H`*1(~ z?Z}oMCy1bOT7<%|0^`H{vJV=fMm+ZZAyL7ITpk-A2UK(TM_KcRu4LlivzH=~FL3Y< z#}TsGj1tC~Ge^0DQZGcBM(PQLis2bqNhDnIwYRVjx>FelLmRUyP~6;68!x~Uj~Pew z>B6+*)EZ*kyr#2fSpU5+BMc~O|BiVMNv8y}!SbBh#l;Jw2@^NpvhmDM3iBe*ulmmm z)rSlW`90G?dbZtQdr$rTXEiU*>aNcuP*S^16@uD?D%9kev=b*y7u4p}_YODhz&`jj zl5|RZFvBvrw?4x-*yWee|Ac?#{)tJ@= zlF*}hruJs4&bfa7mT;?B{$($6tC|!<`}+`If(m`4QpEsx=67=z3qaJU2e|b3iivt{ zB}~me;AJXriw3db)~h(H&oN>9mV}QZb~wYgs2+l1u7~4Bd;H>Y8DLi3@t4gWm!3!> z4%%vX7(iK}cAv6N4@pYQMleYWf*BOb+3^XCJ6$fAiO9V;U!BQBtstCo;b138_aR-D z8W)}l6~LH=&Lq(dF9cY^%O*hapZ<_)=FD&fZAe5pfk{Kc$*e*}M@!TaGfpy^m+FnS zW-51Xe|L*Bh@klF(DtCihxJ*wgoNTi9?M1REMHW+1x&xEz4pb8!OeFmX4zG?>jG!UkDLY zR-UyF)AcEI#x8U^$F!D}pPz4$|Mpxmy>9?TRS(ZN>^Cm;^zdk1pqj4kU&3W)^(&(& zl-fWsW@P)q|2LvWe?ZuBK3CTnI?TUjxAp3x@(`vQK zW@{{&S8>HYn3~wP^&?s&lp9QWf}C8Od)AB!Q|Gl678dHVS*2uXUJ8)?{0CP627}>6 zj)pWQt@Q3yThJz3mpnQ8(q9MSU$vfpenwG|}4;SwXrOA7Tz-C_J5Gy76n9Hvjt~MxcHmu)ApS>GGV- z^O}Vtvu&R#C4PLIz!U#frbaDsqJS9ZFe7&S`}k*D?_U4poZrjy>ZOvuo1Ht_?dlYv z(lRuNM^zv8zx^I=|NMk;Z#aK}Qk;&^AtgmrqOinq*LLYWn=kFz?03gHmHB6W#YPW~ w?v@Qmgv>3OvzD(dEhcWgw%Q$%4jArTF<%!b8gu69-z6XsPgg&ebxsLQ07;F>asU7T literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/lut.png b/tests/images/imageitem/lut.png new file mode 100644 index 0000000000000000000000000000000000000000..81a17ee84de33bd0353abb9c86a9377f05ee950f GIT binary patch literal 1963 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 F1OUXs2!{Xw literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/resolution_with_downsampling_y.png b/tests/images/imageitem/resolution_with_downsampling_y.png new file mode 100644 index 0000000000000000000000000000000000000000..c3bf89bb81edef3e4693d0bd5361202ff859f1e1 GIT binary patch literal 1900 zcmXw43sjP47^WodwJgHdA=83d~Bp0))|Yz zVC)%y0jzy|>ZL&b{zbF+egV**y)zYpsVjyriH5N|#~PA8MN3$x?1^%g6C z9UeAHw>9@FeYS7Uvf+?hT3Twn<29tS<*%z#J&o*T z$9(<#gp~l4Rt=uT7V%IiSFPn z^G^g;Xy`Ewd;Wmul0{Pjf?zUc0)(D6yqCi`)+6S8mNmyOfW6dODO0WW(rnV5-JDJ< zAd}=&!|UbN(xxVaTh7pKge2o*?WRvYpy=v%7s15GO?hz?-D9oTE(70p+};&2y*a&m zJ4|87uwlrq#x>?b?b1b46TZT#n4AiEp!cIC=L zWp*&xV3Wj<-RS6m(TOLXVTK*fGBlA( za$LMLbbt2JsE<{JyRnBkimkHoce8dETE^fJEPORRGC*;~IN;@M@_f1G!J-3lwTB1r zhH@VWqp}E|)JtFtMotb$KK)FVKb0s-s_`a7O@vT%w~pH*g$Z6XA;h#urNI95_ovEB zdP76Cbbr>fpOC%NllSrE8MiFW3LN%qSmj==pk@y>AfY#bBDf{KA>hoqCrI6}7blWb*FAufXJePw%xOWA>d| zgDm)dt!DyqPkQ$#6kWeG6&)JN0bBnyGm`@EdBmV&XBE`qg}=Qa_@nDND7fA)|0V>} ze*7{V45J+xVE~35U)*m647(1^2_YSX<0AL9wGBXI&d3kZPLr@2BU!gz-20uM0hq66Mn%x)M&3jj0&{4-1$k`o-{&aGIB~r_cg%be8&`eY$r^?x zE`g;qv=)kApG!fbeAMPBq#Huu$*TrM8Ci2~Osiv5ul4h`D_2S|XA` zug|vT{F-qVM-!@c6+W&(ysA&a68d;9G=Rrf>6NGXsjVtL5gihSY~1O02Bl ScU)~3dK(=c8zu=kQ1&0yZ*F)1 literal 0 HcmV?d00001 diff --git a/tests/images/imageitem/resolution_without_downsampling.png b/tests/images/imageitem/resolution_without_downsampling.png new file mode 100644 index 0000000000000000000000000000000000000000..aafaed5d82fdc59dae6a8d6f35c827969cf978f9 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|QI0 zr;B4q#hkZSY%?Zj%N%?7-B)+Z(v0lCF>~%TaUDD=rfzJZA-bgd!J`EhoRL>nx*S~V z%EEf~#gf_bA}pl=1sSr7nwyo97J55sUDDX%Y4Q1{%pS|<1?#f^eJ#x5qvC`Jo){oyeXZGyX*Iz3uD>E}Qf35oa z@9*!~vuB?^ecIUAI5qOznKLC;bIW$`O+Mb2wRP9NegB@EoV-Y5+O%o+_SeUY9DRJe zKYH!82M-d~Uze7a&fXdozCLd4)huss@56@=uU@@6HL~vax7@6(SBKmAd)*#CJ3ISr zS@r*ae}Ps!KQ}kqMCxu{c|pO4L#^EN?P{$`UR>Cgd%N!Mudna!?p~ykwKZz{?byi3 zowdKq0!4P0zt7u#`~Lp=dZ0YeICV9(W5ah>o-xn66A>LP zEhi@@D?4}Iyt;pXem*@t{XEbBU@%mFe;2#E3=~Q)E-r58mwyM0hPwKqqEDBWdIRNj zyOQqjt5x@#b7NEL>Ba8-d~!BB_Ux&7b!Fuyo#o4yx3{&ey85b-nO$q@skPDD!@|SO z&CLAf+x>lTu=(P}i;Fb&0R!~S&CS~3>*m;2fBW(AasItMkufngMNd5T#{EAVzwA@` zrRM#@VuFX1oFZH}x;YXB6?K$aTw6AD2#g92p#bUlRNe>7-j}U^@MoIM{{MvqQU*MT Zf2A+u^;>`T?(K>o5l>e?mvv4FO#ts72=)K~ literal 0 HcmV?d00001 diff --git a/tests/images/nonuniform_image/colormap-3x3.png b/tests/images/nonuniform_image/colormap-3x3.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d25b390408527feec8aeb16ddceb0f41701676 GIT binary patch literal 656 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|S$j zr;B4q#hkZyHs-cC2si|8(6gOhyf?6M_9A|+g$#2nH!T(2rT=92_eYU49%LV$s|GX& z2p-6ubq;pl!}|ZUgX#8z{&(%)KQF7Wk$cX!Z&GRO`nZRg&o-WZvG`u|cNHC>LrRK+ zgD8}qbNl<>JN(;nt;;`5)j3`CmFxUxQGnZGY uu$hZ-CQcNfl#r+sVX3Q7WP_xHABWAgw+L=(wB^$V33$5txvXzO{&{Wx zcPC7Iqt|~h`u_g62Tz`k&>RCt{2-O+N}AP@ymrPKfaW%VJM)M;&5fDj9N&U4~{S8bI`=HOVC8b#dJ9$}H!rqqO`!cRxciq`u%i23p}C$I7OdzRJH3orV8IHlrPIss zz8$g^*Q-u1b-#GC2xH)hgN2!*2~3b-@I!T*mpIEAXC(Yp_kI^@Ekg~4ZL4kb5^x~{ z4k@*w^@!ZhIOeF5n&`0Vt*`@o&N=J*WUg=Kx%ZX4vdO34i?XV~_0)7rRfK!aCleL)otUNgJ$eAeKI`a#^mMv@ za4P22IaZ3AwD+Al^Wr>8QI>w6Ax=@gD(hF~pBeg!qT4K9pHA&G7O&bB0+uNHgMRzI z`vWkw9-XBEUWhTRT&U_!dDs3{TG7fC@qpA3C|{~uFt+?8kD}Er*3G+Hb$+;{mvyvj zZY~Q}@8p!GXm&ld)oR#&|Fl{~23e|%6&+(+UV#HkRkCz4{r;cGQpIfPM!ZxZVu(}H zrUTOI(*Z}I%Nua=E>9W6Iv|BWZ|8hlVNq6?!;0o!m$^s3v>;349*Zsni!g$0w!9Ky zf$UgxAy~u^VVmWcHKGf_qL<;>a*st9f<+gC1(Xr7En^0nfdC4P z*KWN~-LS%Q^Vjq*Oc9e41f4c;C`JTa?fG6V+%3@L%5hMsCE;Msy^5FfKK}FT`0nPo zVaHvjB87;S7KaU9*=vugI&ACex>s><)r!OGxWg=Kx5aG8db#a>lWF_*H^I-(&eMpl zTT&dC{kCp@e;n(~82ew&ZS9>~EjD+>$5?(}*zZuTm+;{KzWetta?j{=JQ}>*zh+Y4 z#1zRt2Gy(bW`=D#`}D8rea4$b@7Ac#5#XHu<;0O&Nnsxkbq3EXGguOPqg?G;aGI#T zPvH^%lkpQfS(iVtzoV`bdBrE}Zo{9_pJ5#APwlUTtE@kFq)B;_{EOF<#50l(+8wrk za?^LBQLx6<*Fi`7Le^fq`bu_j!gTIwccRaVU0<_n{;9ufW2)CYnyVXECz5-$@%!b= z(JR%yRN6(ZSh)U4&e59vN&hdp%X{cQPk!9o7kKWnWmxCD8qt@r&+ksjIQ?De@7aF4 zYwyq0i~bUJy{mI?{_#&~HH~k2gtlq?X8*g#cHyq{_Ggc(CH?>34hqY=;+A`QkG;m` zoVTZbG+a>*u-j{+_xpVCw#nw*Ikl%tE6YQlx7!|n+8f;K&Rv$D?s+?YTSEM<=(X+F z-}|pFO_{LtR>g`L@%t-Qmho&2QSTQM{{GozTGq3v+XeNncF26%^5qiqrOW>8HcYYi z8r0u^3UOS=zGT9S+m`WRH>QYYMO?h|+vxkN>C;lO?`#Cd{E~?&H$M5a@fv|RPbMUu z*>qM8m?k=mY@**qv)_wM_GBotY=E%L6Io<0IhGLUq1 zK=ZJ@@2O2G-5Q%*MQ$o}2a3f#s|u=#WA{SP%DH#Z%%$>JL!_x#GER{ zdA|B38@Ikp{WG;d&YCf^+w0n%3$A|Vw-)u7>X!sg>E3oiY0AMrUhG+t;g4rV1RUL= zG;dYkBaIfPV^=Sw z`up$XRTWqF8HRAbr~nAkoEGJm|a zx=4g6RBHO;gUi14&fB1uveR@8N91vS?VQ`or_W{GaA?ug{fC!||L5`7FMD^nd+u*Y d1TioOJe6K>wr>AVzuriYkf*Dk%Q~loCIBjr=Ar-q literal 0 HcmV?d00001 diff --git a/tests/images/plotcurveitem/connectpairs.png b/tests/images/plotcurveitem/connectpairs.png new file mode 100644 index 0000000000000000000000000000000000000000..255140b5a76cc2d53b836a40d5e22338b3c4c792 GIT binary patch literal 770 zcmV+d1O5DoP)&NH?uqMHxgkVuZu%N3M&+jG{B?OBSf<+0zg4tYn=$`TXPKj%yAXq#e1vwBbNsIFoj*!oeI}S#X4Q<+gC$knc{9;KD;LU()W%9HSK@svw?O&BJ8FkZt6SFL-BEoR zLBWzL{&L9>PMhR2imGA6#4@Y+*ZEIL)aPt!QI#A#vCJwycji+P^$AF3;$gt%r2@Nu_ zC?Qy6NEov`r$>|!EUFC8mNOP51d9@a1spNLPnAm{P^01^Xkq~X00000007X?FXVaZwp(4ArT_o{07*qoM6N<$g1*XG AdH?_b literal 0 HcmV?d00001 diff --git a/tests/images/roi/baseroi/roi_getarrayregion.png b/tests/images/roi/baseroi/roi_getarrayregion.png new file mode 100644 index 0000000000000000000000000000000000000000..440ebfdc8acf801bae875ed518506b8ac78c0e31 GIT binary patch literal 6493 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 WD*N?c1`|KukZ7pts1zyP_xnGZ5s3Q$ literal 0 HcmV?d00001 diff --git a/tests/images/roi/baseroi/roi_getarrayregion_img_trans.png b/tests/images/roi/baseroi/roi_getarrayregion_img_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..e59ddec78fc4171a27602b993b2b13407862ecce GIT binary patch literal 8632 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 ArT_o{ literal 0 HcmV?d00001 diff --git a/tests/images/roi/baseroi/roi_getarrayregion_inverty.png b/tests/images/roi/baseroi/roi_getarrayregion_inverty.png new file mode 100644 index 0000000000000000000000000000000000000000..a97fd068bd6ea01467563e58033ea54da92d6cd0 GIT binary patch literal 8592 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 WTxV_nv=LrJ5oxOFsa7f5M*IhCm=Hez literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion.png b/tests/images/roi/ellipseroi/roi_getarrayregion.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb1cfc7c36f684f0967e86fe1d36cf7fe8b987d GIT binary patch literal 10301 zcmb7q1yG#bk~V}O!CeQp;O_434DRk0+}+)Ry9XH{5S-u=B)9~3ch{Zo?%w;~-THQ` z{;D(cPSu$@Z=XI-Ki#Lhqm&h;kl^v*As`@-WTeGa!Ovj`2*^aZ58z*Bi7or!$0sLg z?Jp1z2pE5TAR)4Ha3LT_AY{Zv)ID=fbG=;Efq6rYK-Ef$G{5!G#Kceq2@oN)wK58= z4a(=4MKaG&4Yc1Xc3c4Hj|AWG>e000y`3b|IZO1d(Re>tvwqHo`-F;)-jFDKS2e0C zQ?-}S(6@abrY_y7D|hvrBlxAo!=dy3Xm|hH`u%G<-N!y=#Q$T={P=zIkiwa*FmP4HKD0al` z=qa$Lr)QMZ*}1p3clfEQigp+E7Kw+XwWOhewLy@IN|J}dAXl-R{CGq`@<&sBeSHim z5oqWFBPQts0X8}Gzh3RK=7UjK*gQMioPleroXEhvXz||7!m=wOqES3Gw7zb`X-h|| zBTp4KQetg~iG;NL^wiudI@hsk5Uv&uR8c7eP*G5Pjwn~k*FcUUK}TgIDN=%SetYrS zWoBh_b?W}QoR8ptCtp1zGr@qxTwKVLpPJk&1SX9(W(PaoTJt*^LT zk29DKeosw%e0o^Cx~lGeDH5ym|=ReBnl^jY;^ z3S1ltIg7sAarW)*hwi6Wf12bxt|&OFyTs19s*h`rTdpVKowt{zVwrb$9`<)0Ci4h^ z$^{sxG{<;%)bsI#qHrp@y5Hua>rMZFH&U%*E-P=h(kPXmTeIHG@YCwVt7Dzuuqhmi z$f5n+|JQeG`=R(pOiU|mhG}9UqTL5mMboC}6FYtPW<@wOf@3}l`C}w5Eo>%-#YU-a zuP+=uol4$Gffxc~H_z>eh{cH3nNa(%TRYYA-QJ^gA3)A8bR zP#|)ttsOK|&Xtzl{Ps9`iig)Jv^`u&tzlKzQVFZx6Fg zW)KIgBxfIAZ$`AysNLKp%2}>JZ)3@Nyd`TcPEQvBlG(A)H_=doR3tqc8rZe9!$U(s z&*zR$FV|&a5w3>*cp%G32^LCue=;wo{sqbMM2fqO56PNh!8!sHU83G27`78RSuZas zU0uz#bsX}!_!p-?h@LPE)r$2SsjN;GGj5MVEXJ&!wqhE8tW2Lgm>NVb5Tvh`xbm{N zT0P~zS3BC>AQL|hqpjW?q9I_53*IDN{$iS3^R{(lV`Ad0ww^iSQ?S_`mHsxjisQQb z^3u2-i^sy$4dAiQa{iS*ibk$O7%(Vz@jE}ZwskLS{{40RT3g##ETYV(SO6^^aGA}+ zX0gcpYipqC@zI~D`(#4^q`BdzRIO=PqutSBF_E))zm9SatuZ$;RqUTaJ+#07yt|tw zpCN2m=|iXpJVXUPOv^FRLI&gVeXZPan&p4gNY{#YK;t(+` zLZl+xa0j`y2L(SF2?nYh$}nY;xF}*^V!wckFQiCDf4}(d#aJerXk;M7pJ=Q(u*!s9 zX=J~}DKl17SF0ndP^IX6>JU{;6b&{KFUP^bX)l)@N~71)A|PJ(??Z~RXuKCNuZ!HX z7(ZE>+8*KxxE^2Pu>Jn0d5Rxc_Y>hw`ttI$wbh)52eQ#Z;@a26TEq*u zzNg3iaNF9#CPPHkob2auIVOQFzjnWe$9=SR57_s~cXhd^a|dwNFq%%zBj9p#CdB*9MpiHZMC%g4CTZIw40_4E!;K7xz|dm0bBF-clJs)93> ze!Qf-xgf!_sNe@%Kj0ymljRI>WZdvEr09&>gICTDBQARi#x^Eki%^$JO&E2SX?s z0PjwI?&)(c0+CA6CQP4B`+S30RBcgk260&v5NaGwgg-1QXrvg>7kP6|r zY8)A*-fxN|NK-_ut4~2qopMVN>T-9Y-4N(&?h=MePIe!vM;fIa6`*O^ai_CA7&mB{ zuh0*H%=1BJl5CfHVq=CC*d|=-JhUnE?U=tg~xyvX#sEk;gSJAZm}t5 z-j0RU^YwNy4B_y4I;~{_l+IwAA(Rgl%(%6}vtC^dT57ZvJrge-#F2} zThbpIO`Bq~oDU0aks@vD1qFxHB=D0*-b_IRZ-?@ zlrAj>djK^l^0=NPH&k4j|Dz9j3Pf1ncRp2%5QUf#nqkPx2Q)Ms8H|I~@v+lQZHDI#jWR0cM{=s;2 zIi#OkL%9GV@~J*s_2?t4Gc{|lR1!8b8%iW)RG4-f^`fpN8`-mVsO>mroT=9C5&aJ5 zWCz_chzmhlOR1eec}-CyN~T!yCmmuT19KBj`X|{I#C5&&6DCZhGz{+JXa=%`qR7<` zr*=2=l*5iU4%=YM@v4BWDCw=YlpFd8zsmN6e(L!Suk;^lTPwH;8^4&Kq~h%qCyj=e1IyyrPscE&c-fTu#|JEUDK(rlB^z*rU5PtU_wD*1U+8};EXajwx?;9QF zzWCAYoE8c@wN|^-C15mN;=YhGL9?IRL34If1_h;%l(Z|AFi4ZD;<^@9E~B#xKioow zAPw0CVVJQaSJ#g29^h(2-NvX#`g4d z{JT=^7#w{dphp0R+fi?DX_TsCW1*-OV^f{Y2Jzfa;PCmHIY@qDAxC5O;jGhLvaE|hap`1Qe8j`Vz)#pCiP^&9cvbujf#OD> zaki)tqeNN?3JR_T$JvVXID$iDc28eR<;SSBWS6pv$WFQhDz1g|vg{Jr5+G+aB-BKX z;CT4%RBHN@Rg>L^1GkQBPr=#*U?4A#Zg^7-6{zx*HKtFnkw3v8(@ofkd=ES zBjZJciE>EK3dh3JR#TfHxMMp*z{Gi`q?UW(P@e&jk=fYTE`d5ilF|L%-_Q+H8jNpM z%m~ueCY}#x%K6^ynHO)oV-l29E#HBv%Yj{wQ5e*zV)Bk;=ebe$_8~9oTW#q3__-ci zdMOTCA6S20#D2WmBJi`EHjX)QjO0s26%g_Dir@<>#;>TYZGPWAQ27Psoz2b4(RZdn zbnjRjrRrIATR#B?d}IFfBC_>V%&4UjT6_&DKfl;*w^+*!j&Lk2^KVtEHKiZP2~uQI zvcDz7rkd+k;c18l1HZWiG#ZpWmy|XUAbv*{W>9CVE+EMs=mmzZi36XTSVB|@>yFW? z>_hPYD|-5?MJqpYPd4Lkx5e2Bh5U2qNzB>A8x!FYAkw6s9F2t-k_pqYWY1Zb!oqfh z3dbmTF+&t7!o|)Y9K1wD87V~Kc2YJe^%OVup6c5!KGQq2wmU-N~wf?(D8(Fin%$w>HL=J)f3I=mYF zthnf(yT8oW=Dtku=|~S9u)L@(Mo1I#H4E1l7mk#Cf^S2W<4()X<+q5{*>@TB(v+k) zI*JVnLTj;>qCSvDS7IX#DqBg6{CJsr8Aw4TM#j9T{}ljvuS`0J+P^?`Xd)UpJRBoh zsx_;m`dj)9qxt@{t-V%kKNqmhMX{sj@4pY6n}rJ@<)+$O5YjevcJ2pi=0eHLvZ?!+ zK*Q?ZdTXkSvI^|Y*6R0BDI5U?hjjleGl~p1jGnf7pmjw_}xemfrmkY8um4VLsA+QIY~hS zMJ$*+|sJ zNIKsl0{TSjMpRIAC1AxlG_Z?}21temDk>st$fNK~%0MT|_gsI7<89muNBSn{qanu| zO-Wff?;$qc*1Nns90~Wvaf6(k!Z0v^o&vK7diwnO{3AV8TAosK0aQdrRt4lIAxCj! zt*)x_?94Ol@`3d3ydA^yGcWBIu+DK=8}TtKc0K?Z|3L<1m=Gtser^EfLpTz0{UYz8 z_BxMUbs3?FJWqJ`Lgf%%3qkP2QUnu7`!f&y`T@P?j}Xd7eMioCq_)U{9(#+Ed$SuW zwJ(iUj*islXZ0h(f0>^-YnYqsLwNXAU19lk_B#9P4aV!Fs=oS}h>k&CdWKfP84KRr zrC?uGg|wWsQQwu-jkm71_b;aI-yTLsy-L-B5eP(@qHcYxnY}d{`H86Rjr?Da>$uL> zm2{ITcQ7Htn>ZDG@hM<4^Zm3jJaXk2_xpzND;#6-t3GvDr#DO@C1;J*)5bjzrz zsB|CK2^BpV;{l~*8`gXqcQ-_$HZA#%2sA``0{i<%e+n}~UyD;IIgF3FN~n?0@KqBD z@|!(e@Z(8YqisojjNFCL`J&Tx<^g<#5AE#g^?k75uwwknr1nR<7%8(Yjmc zaj=Jegbg4hTGLQ<+2k|26{uAB8SK2JlYFb?Eo{O{q5o+C<2<`%P&Cr-`Hm(64-apY z^e%|XCWQO>!w&M}sAm|(uo@6p3NT4AE#izk7qZux`>`G_C20_Oorr|QA~|bX!e1YX zIux&eoYfhTdG=*eAkHwLM#r|PHpyH|D#3uu6VzYUF_y;a>-j}dF|p(5Q!ssBRZZO0 z{f||DKFcXj_(qG|_4*KpTRIf&aLQ26eZoErC1s{iX9R2On#)W3c8_l}MHPJ9w?-6r ziWIGu>w<>a;7;^Bl6TBTL3jXE>Kf@l$1B(oGb2)S?e_pN|=B!TEi(H3U?h| zUhPr%jovn(7Q8gw!I5b?!`tEE>Fe{g!{@Wj5o!X%fZV;Sc8Ejp7PZ>gtsY&Tkh7d2 zU!R(kau&b)cOI{?x^AV?Qas9w_qq07o9$zGmSElOK_LurUlaCkOfEf zqQ_?e_)<$V60nGg>j25r9TQV0X0sW*lAgNsXY{!#L z^|qUfQi1Ut>%Lfbcc-^-@!9hiN+3u;`@nF)YX$TGA+uK8G)UyZATF(>- zy{0-u^jGx8aW%)|P8~f#AaB9+(b8VM9u#kA8k&by2SABGK!I5FpCIUG~6= zygqxZxF8In&Y8VFwNd9q+S#YgwY^3=C4dz}@A^tRxM9Xr!o$suIm_zpY<$9#11_x`^bc^UPMm}Ci zl{~k{UWuMGbgBAr@;!E~HRVigR1ZzlaFyN9`}TVB+q}C7)`~TF_ZZZ!ztY2eA4ub3r@*I!kE-_KY{+a$A(o*urK9r!oh=s8%H=C)VUu9m2 za4_yEWD`s(C=@>O!kp-rW&^uyV<$#SD9-8ivE|2{W4J-2h9Z@YZ?|>9x{h(xRc*sD zB;L?!E7JPP#>Ry%k%Zmeu~Pi?C-l15o^KuQ1Mn%}L=Zthz@H>?YXAH8)GAt(r)xC+ z<57(|WNz2t`_6mrgvSPPiKhL%JOB@CXY)Lkf~j|`C0;t}R*KR~_v4`BwM82P6M3k# zVzZe!mZ68fq;59#6Hs;~9c~^v;Jv-8UZv5`=QWk4@b)&(A69>GwvxePWs21zcBoUk zg#w(c7;!q{WfNjxi1W?aaiq~-AojmtVwgK!H{^0OxIqzm$tssvi{19IzdFlnnbx8a z-hp<%AbacTTYZhZj`;(P&LOP&8ziPx?$Pb*)u};eF&U4x)l1_Pf$q|iu_1wpqP;G$ zG?2FCEEJZDiT$MKq5mF1#430#pFa@-2jB2|oxhJvc=bG!zmkdOUFunDyp+kqHg7WJ z`$TifwG|YGQ5Z^v91pZs)EJJw7*D`_ml; z&mN3lieDP2-h?%Y|MsD z<_YNX~jpTC=|btI3Cjex5(`qk7~k*WP~aIFQy zWV8wWV$yJO!h+aG%3yQBXAtlk3jMUC+q~j;V>Q@$4-Yx|6;rVAh{6an#us|p9pe3? zz#!dw%woN%iJso0{SUwOwc6*+2^a~aPYhrR~zU+&l6ofQ;rlE}&9iHWz)V%q3o zLYx;t#HJ>ryu7}wY{a$St|M(2<_;el7c3f+OhU`^{dIVJ&pYqIcduFM+AW}_z67=r zZxZ^7>zWTDedjE;s}aS0L<#@EvMs0!%68fDOu(6ES8qf zb-Ly2^~FC{ujQusx=W@iyv_ysa10S~SxX+%b@44GYrpFZbiZMNJRFT29E`+5Zsf~i z5r0*vC~&P=wLR|5=K#7-?B3DHx5h1yK8fC&c$XWyC4a?9{E7qecGFW$Ht&yI{)8bP zgOg9kbidln&{8#ezgQoyR_+A|eq86+dRSI=WRu_N110qG`(l_J z4O{Mf%6ql^D}e^Jxw$_ybYV7E1UzXtqIKupa{5$pHjyvLeB&o)v5L=8s-sBI`P(a@ zn_I8hG&?7Ju?lWn*2V^M7)ybk{r~$uQfT5O6AECF z*C>$T^Ds6#S#XGi6NrKRCbj3c^N#e-jUEPz#(AsR4EeivYdKk80s;y5=Job-7;MZ3 zb`I;0+~g(&*%1f7HxQEHAqSe>1qG?l@g#raiP$R8)=`qLxKJb&YQal^n zlGk?^VGjC z+0XNdAKTDyc_2n~pfyle7q=KD!WNA@I4BFFes1M7;6mSdty;F>N6?%89pE# zgcOq$tXB0qZsNH&3}HlGTN^L4N5A6r<$%bjg#+Ngh=YwSX(3JiE{BeTBW24U~94EI%;2B)M5>B7H)WL349$HD0MFydeB$LTulcw5lG^)RH8bP z*ywhM&Ssx?zjq}BCSPk@(qd2{JoRn@S(nOR96$MJj(hT`O(U*M(y*zLc10s5*EFS-9+ z*uON~Ggo!d14~T7R^beGz8#2jdbYN7nLSp7MARfCfn)4kTq$_!VV+^Q-NzI1R#p{# zUx4cBiJ3uAu*rBYXSnNn;2e32s1_D05$r!v^G}@&1H-QO#`~0#GMk$@SwouKD!iF_ z!&|>SYi{OG%!F(<0J+W!ZM>`eI6o7>LZmhlxdegmc0W(uPQG zRnhCDprC-1+4GrT5I!V0co>mZ`9>Z;if> zE*<>wSgd)_|5GIu06L0kL?G!IHX1RplEp+W9~iXfLMPH8-teYhG`^*c74-Jn_p#_i z&|;;TdTd24>cWthuO7OEWY$+yJEI_vtpd^fP5!%q{6ih(>YJC_LnC9$O}1%bAw9y_ zMjh1+4as8#Fei${iYMqHI-eE_SbNEf;g2V}?iL}jCd2Mw594Y3*Z5kxVFtNma<^xc zgibF^+E9e*|IQGhj9oYWh~#GCap!lS&80FMSV75h6mc7v5fyDY zG)y9Sb1~ck(+xfExaF+;Bl$f3M=#z()PGv?zs~I+?G>tFi+3q@O@Ye{OiT%5MjeQz z##*c4w#v5!s$%-#Y+62%+PUCGjm%Kn1M_&kgpV0vqFXBe*m^yjKzuygpUlTO>iN4< z+(@PEueljUbeHW3oSiC`8bQ>!GhRU|j;J^Xu~EC9iz{U1x%1;3X~Z6E zzV`UBD0dm#Q`xA-GAC!r+D&XDzV!b;4*G}WX=1#gXC=#&l$2Ap!Lyv0ke+6)E-WV@ zpPW4b^c;PXvA8)sJK}cwQ9&dtvB+xVECsWh#KmRvr`32E+4;00u z?7k-)Ro2$Vj~Ow4ObFTU9Zb~f!N$Upuwdp6p^Y`;j+Pr}XGRTW%a~sv9Ed=YR`xTk zh{hb-ME3dL*FHc;bFFY@Mvk;cR=G9$j=UXMT3Tubld=aQL5wLV9v_f!hb2FpdH;cjK%pUz5fdo?5gvAcANw-%h>c< z1%M)r-p>S*O&6ey$EbW!hA1@2oE}6~JFF4Y$2GFH(}<8W*XG~xz7wrRWMTo<;3`O;tcqyX;eiH>ljf>HXUUjAFTqxy|{WfU#c^ol%5RmlJh{ z-Cf6OU#kCxqD6MKNFj^eDp;8p(3;R~0D2)+uxa>rtONe#6_gkl7$b;h22;6l zlkxbdJ&w_MB`u^pcN%H%e=F#U7Ab4Mo3A&t6Kb_Uzrb@mfJf9KIVFWKPk@3VbZlpL zHwn*fAZn?w0;D`%2-Ck-wP?QwZfP)s!7>yPfz0eV4|5*r2H)Pc;5W5Mx1IlTssD{D zz5z)aTn|-QL-4Y33HufSHeA&<`~h$LnIZyVm*TNlMGgb-A}60hl0;6rqm6EfiD3Co zH}p>-tKsnyLckvXUy%5VCsyj#~!LcAmdX-ne zvlL^c(Q9xNkx4Q{or(d2fPW_xb(N^u-N}*}%(nSr5)2mc-F1ImAetnYzc5rv@8so7 zCIMr7`b{=zPM`i(jt(&_vVWKk2Z_dx@f^|Mxl_037|y_FiYlJ!lfGdiE340$B26)x z2dsbV4L!fnp5P&1)041O%qnA*m6avqfwj-Cr0!eSd8flwHzQ{BKLZLUaDxA@@T>p$ k2Jipqr~^-JGrkcE$SIv=fMhPg{eTcM5{lxrqDI000R$(@3jhEB literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion_anisotropic.png b/tests/images/roi/ellipseroi/roi_getarrayregion_anisotropic.png new file mode 100644 index 0000000000000000000000000000000000000000..1601298f1a13b2b18c0bd5325386864562bb3289 GIT binary patch literal 9370 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion_halfpx.png b/tests/images/roi/ellipseroi/roi_getarrayregion_halfpx.png new file mode 100644 index 0000000000000000000000000000000000000000..88165740a6f958bbfc0ae01b7571d0fd0bf326f1 GIT binary patch literal 10113 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion_img_trans.png b/tests/images/roi/ellipseroi/roi_getarrayregion_img_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba008c77b2117af92439807a100ab86c69b4843 GIT binary patch literal 9856 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%0AT}ewzYx{e2qALE?m**6h&=Hus*&u3# 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 GAO9DXhgkFg literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion_resize.png b/tests/images/roi/ellipseroi/roi_getarrayregion_resize.png new file mode 100644 index 0000000000000000000000000000000000000000..604d733c75a0b4d18c97d3a58a856667a7dc1d75 GIT binary patch literal 7748 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 aC3vbSU7R2JtpLZuAVpbKnJOu>p#K1|YQS#* literal 0 HcmV?d00001 diff --git a/tests/images/roi/ellipseroi/roi_getarrayregion_rotate.png b/tests/images/roi/ellipseroi/roi_getarrayregion_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..1f806959b3240783be99eb8565beaf666027d816 GIT binary patch literal 7921 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_clear.png b/tests/images/roi/polylineroi/closed_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..052010fbc590b38cc1bf0d4d33b12d69fd45edf1 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yu@pObhHwBu4M$1`kk47*5n0T@ zAXEavjQ7&yD;OAbsa4b7*A7kIQw+t0C l9Tg;4nnsBc5(bC(Uv@F|Pkiu=7no`oJYD@<);T3K0RV~-i!cBH literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_click_segment.png b/tests/images/roi/polylineroi/closed_click_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..dba7d2cc0c556780586723d3c38a92e451cd7aae GIT binary patch literal 3029 zcmZWrc|4SB8Y2BC=z#`3+L@6Yr6e$V@?@BLoy^W67!-HDbKh9|j%xmZ|OP8u8OSp)5tKb4ae zcuFJGx`F0|uhE?V78dZCKlK<(c8(Cx!5Hi5AVYK3r~|jsCxkhEZpuL85>npiNb1)- zd2u{N+glGm#hSS9J0gb|A$x{|ke8<-LmWRi29-3*<&d?s3755$4Mvr3K(O7~eDM;- z5Xoc8FH*kCO^4SfltI-V4>0GMS@5l^IgG4Xx*CR&vc&TT(tk?NXRCAglIG^4o{Z7$ z?e(Pc`@d$KBQsErcz$jkPMRyi&BQe{sCjg-p&qqad{d{dUkjd zU5;E?Se1KOQTwN4uCHm=#Fe3%n2Ze(?)c75gN6_`KR!7kr<7)XGSBeTlnJ9mQkT^n zt+kO$7|3tm(EO5JaBCLlro2ZRDqdgrX$aw<-%Urw zrIg;x$0a8-7>u(5LzA|wYVRk#u3o*$5#4H6xxTup9!RsC)n%1=WdnDDWe5uk|4m+# zNl)~FeiDrBVD=gq7-VN>!v(?AyHBJ#1w1k2wW_yo!Ve{7}G8hwIh`Q z>`;^ul!6K-?M7%~+Eb4#B{?igZ&i#93s=_F?F{2hJ32aQj6@#m{2!s&DRhlW-uO6lE!+du9|ZIlhU9p~T} z3e;N!P+8<_Ufz!c2652(&MA<&p`OuOPr~)VKs~STmc-DAk<>F6EZ%Xk1gGD0;nj`M z%s0V%xVzsI0{y&yMPU6W^FTyI#0~K|hX50l7d=(H%o*TcfznVGyJrzEkc26L{2HQA z;I+wDfEC%lEB{^5&jUWNQvw+q8zX?Mc(QI2#C$%IU5KJuQ8_`9CWS8mkJ+bpN#OB# zH-t2|z8P9w=E4O4qEL?s{Ame9*J==12OwoDAd#exJQ2fWaxa2s(wc&-gNP?LI#ji_ z>0lkr3M9kA!k~=RCDAUm-2QgV>G!Afd|ucSL$k~lC!C|#Xf*8+-Uj}L&M8+fFK%-~ znsr#mR7?pZ(8`qX`L_ZecQ(#a?=ta?`swxf5=f1uDcpDhSCrOHaGnH>D6(a!et}d6x1ESZfra9l~~L27v@Im0D^~jqoc=8Rn*DB zfxnLY_IrWLf;3;EM%2ELxuFwCK-N%JR@M#iOW4B>WP?QBzmm1E@RuD3>wG1P8?Ac^ z1K~^bb+9gl*sX!(braGKs|5^h-MV$-259x-S6@{*O0#_pQD?i!LGG!4rabSq0$*R@ z4QQ%mDTgE25LAiF=L@gYAx!+}^^`-Q}23=MWp@~1e*Xzy+Z=hz^x42_N9 zzrUwqu?ZF*8Gk9fm@Dg#$kmE&ArPJg@fWpAjNNf?=tJ;y@9oSd4_O@8h@Qd>3r~G3 z)s>>u`4txzw|iX!u2a4a2eWhDW0364lav)kJKOIX=WTB$l0hzh44cm@Xt`}xuP zvXp=={7Co%=~N?0o*i0oGK#~R#|WO8`SRs;@#K-^`(gF%NmihPVLk zZK-*2gQuyJYR6GcN$kC0W@s zo4c}QDC^(f+CUj5V-!jsBITga#rW0CM)cu+z3LzIZ!Yt5=@(n^ia*C;&p%E|N&<*z zX(0ch*cWgL%Ku$Wjk2Pm)LU-}GxQa}DLNl9-IRsLiGu)L4%S$3tKu3%=|w__Z-p-1 zCNk;uQ3nlF9~I%}UXV6n(|Ca43AVCiZwao%4nNT@KO?wReIzp&0PgL5xq{^)RIn#Q z^|6L{Y}=<5f)+G02XM%uB54`2CO;ooHbgOee}}%gG(aYk*<0jcnfqwnLKIx)XV(2P z6!zV_cRbw3(LXrjuz3EPc^dTHi00UV}z%TjuOnF_yx)!+{ zlZs=DZ39>wOV%ty{dC^k+~ogr)ZdPFyz}$&^7b*h9Z%1a=KVgBsWUUxwiV|v!{g(& z1rMb@VFBUX*cf<7<`4jHr<&la92)_ha90rW7dhq$55>>U&Sqw2LJV==e|`W=BjjGL z?$GDe;6Z@(lk3#Rm+iHuVS-KPTGuwG!#BkCO@Vpsl9Cc26#&Hj)J_ysP;|7fukT;c z)cW#TQ9xI4ad8pw)7!TvL}n7P?30NdF6rs%R4TPPS_CF|-#aKMC?cZi8(9+s0>K1w zgN-Dm_G@n%8+W%H^(?@(^Y5?QSM1?2KZyC6*ev>S<{^xPCGV5`7PPFdP&Z5Zbg?vCy zSD$z0-p1u8EFj;8YaRWl53?yA3JeKxZjH+2`8COy@f=JjKfLBrqX*mdvii%ot zY4L;*C^0;I&kg>0u(_@zyLrGJZES4p=chR1F$d%>2D;cd5A|cxRx@8wc8&+5UR709 zQ4DGb27@^|WNt*9krhv#X$bQ4^i1NhrZ1P8wiWa)6!Bg*itl-#gdf>w9DF6Z0=e3E zXX5bk*3^{n(Gn7tVJ4%ZqOvJ^=FRymvl8n|hs<>ba~ET;CX;DbT)wel-MkY)C~DDM zWGqQsH0lSG`G<1^k!gY(AbMEj1v=HIO;1lpD(0FU{`x(U7^=Zw(Rpgp)2qc?SI6yQ hRq5V+`acIh*Si1! literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_drag_handle.png b/tests/images/roi/polylineroi/closed_drag_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..4a635d4617dc2c37eead7f923913f2ceb55578b1 GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_hover_roi.png b/tests/images/roi/polylineroi/closed_hover_roi.png new file mode 100644 index 0000000000000000000000000000000000000000..e53577333459a6f324dc5a1c2b7315a00b2553a6 GIT binary patch literal 1717 zcmXw)c~DbF9LGa2NC-zo2!~i(OuzyUixg|{n5u{%LM1|Y5G@H3K!{+YQ4$QMv`7V% z0um-cK+9zbu>osnkV8WQT2KxR6F}59f`S}k5X&L-XJ`6m_U+DRKfm4Y?jP@+KM=In z%*5UVgTa{j`}t6zzx$yXW8v-SO}Pgh{^D@o+R7=-e2Cu94TW~KkD3g)gtd} z$5sD7;z*~svIJe*v9hwR$||W%X{d|y?6}yaP`567-2J0I8=cN#^0CsxBe)5*wQt~$ zJ?d}G_;1eUw`n$izU_}c)U~x^>YIj!(>Xrwm(1R0JqY4*$)DpXp<8M+QtliFoBz|n z^j7{q2gKR4lYtCdPStTV?@tyx_y{iYiEBaN?%fG1jYP=9sp5wD1`}MX^OLALS4f_$hF_I~{5 zCm`<@<3J|sKFHCIATODwliA@VN|1{@?L~6du}WBZyb}v@dcQ${whl=EnZ{ZTa*5mb zAm<4{UQ=fY@)-r3x${93$anh90<@dFUO{Hx5iH1!4sa`WqOBn3b4)Pua)4{AxU?YuLH5NP$Xt-z44L!puSZq1v^mJU&t(c?oPWL^ z*~*#$ zrc^DowpB#n(X4b?r6J8v8}H6Y&yYD`X@{B89${#bHhu%c>m$XO1$rS}=50u8WlBqg zn*CZ6Gc@p=Ol?ThGZS)!8miXB1eKkWNeo=mKzk+Zgl|N6?vFN!Nw3o|c!LInbecoY>!*6%nw5!1ZAG_pmI z;#Ab+MX?)x7JVwVYpiVJY1#7g8@iax!BB{6tibl(>j~> zwuW18-)7ja6P2&cFh_Xj5z5ndRfVaGZC!$8)2YEP>rq>W@j(Uh()hGnwN(FN&8;L{ zb5v8D#)Zor?L+(<8h3S6-W-tDYVUcgx-CBda?15jD$7TBGdY9)Ekgo_y!O_NtiM1=RtCF=ta}{D$iipC&SW>*P=B zICK5W3wM9?_EzPrP{q^h%478-?7_yI3$7{rrRGyIjmJIJlko|})SUL~jHzk#i973- z(l$42W^28@=g;sP_|v?KO*^(Z%xG}R0cl6!)RyGWJ(okBiaOpOe|Ebx?0UJE_5WY` c;Ewl%*j^(KS`2S9{D(09dxCtf?_#9=3;dofd;kCd literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_hover_segment.png b/tests/images/roi/polylineroi/closed_hover_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..ff15e5822e80cf3bd2f03af18296292933a0309d GIT binary patch literal 3167 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_setpoints.png b/tests/images/roi/polylineroi/closed_setpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..2f31114019551e081dd471ccea23a957fca3611d GIT binary patch literal 1626 zcmZwIdsI?M7yxh}sf4o45?!s_+&pc8wfQVeIgzG_Wntn)O0YCjFQ&F;Tbr=uqqH?^ z_1eR5%jltyS1k%3iJFz#v4<~A*3!ZXPcKQ$bhrKdfA2Z-&79wS-^|?kL$&AX7zO}AH!te=yzIU%xp&Rc!=_<7Sm7uPWpPNXKV^amA6n~{G^uY0z= zAG@`u*ZN9ybY_d8r~rF7x}=~bZLN1ftHCtxzhQ9!g-S1a6ciZfv&wu;2!f0pI3$(U z@viwe&t4OZAP&5;ZeKHDN4R(&Qp~U3Hx~c)>&Oo?Gcq$-BB7m)&1&iR@Ux-rCvAQK zt!EdinXGRD(Q{U(vF+Xlsr$rGOTb8DX5I7J34@_E_NMK-qpxzal@g+dP{VC`*GY%xX5}XqaG`3f(%0xM++Rv z2A1b901k4b0B__p0&k&AW#?G{4=JVt{}R(+iE4x`z&V&VaJGO5yiE;@X!3o5EuyS} z>4F)+KJJkH_7M*`>}2Sna&g6)(g<^P$1YFEXqyiu%L3ten7RXo*8=9jP@V^eT*k47 zVa8S{78LQJxH@4DS{rUWv)Wg&5qwpCYAknL%zwrTv7h|)$`XR^+?M0_Sqq)AnWv@LsdHu{bJJAcW+-U>T;+}J{ zFvF}>%c2ejNQm5Zwh;V`D3QCd3PNxe1VI=C(Q*h;qrD`oi*bw0XzD?!NL6JQ4eyA) z;w0AOrmJNJe{~ND^Ato;kxfx205L~EvAd3hom0e9kv8l);I=Hl{V|X^q1Zu1!t-jJ z#N)gMz%86-BuwPEi;DE+9|uH8fH8@%WnEJ&WLg&ih6k!;zU4X+?buy075QAgTSCnC zwz}XXesbYr1)0GNTLSa<=l9X@H(%J#NVM~ajZk~B-B}HDKf1uM(giNScr_mCm?}EJ z3M1V5)oSJq;Hph1F*}giPQxGI?UIqxl4qfe@amKxpCpZ5r$dH3V|#nEgXE{%ILqVe znNriP$GyFG+Ac?o8{)_=uli-?0ZriyZn{>QfZRnDa*McwV(Z+ znSvLSnwpxD;=xd=RI2p!^x9glx!+eEnkXClU~O$(d>ZS>(;P^~d(iV^ylWk(yW^x) zX%8ANk=*R_u>B)UrLL@;mlX6gM8%JDwN;t!)YL36``xCoWiZKL=i%J5p0yl4pR7=R z!<+!)*MWhiJ@54~qE(ajL#_1CI|skug0fpH-Q#ZBFIubX)4ST|&gZXAiU0bfSg!0B hh5G!@^J>F4;;P#hI{kvS!%u=h;P`Ixxy}|J{tu$Q_e%f( literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/closed_setstate.png b/tests/images/roi/polylineroi/closed_setstate.png new file mode 100644 index 0000000000000000000000000000000000000000..e99a6c58d881b42908ff5230e6e3f63048f5de02 GIT binary patch literal 1739 zcmXxleKb^Q7y$4wD>74wm`SLXl?|gBMOca0#Ktz++2N8q#k7XLMkV4UB-1fyC=^YylthSVpE+muJ?DMzJ-_=r&wbwak9#kE@4I_BX$^@$ zAS~bG<-vffOg)zpVKsAdY=Mi;aj$?V0)f0rJv9h<1*-`Jt@u42ZvJNq-YDe}+0iET z6MhQI2!`g~G(~djcU!bi6sP@wC;L9!c_-!_WAuoFp4?@gdh^UmP2IJvcg`qGOTO?i z+U4O%qOp`WWXmm7!fUg|RWk#;m@qaQiJlp^vr|Tt$L)+|~ovjP1z7|W_I?|h|PDvKZV%+H*th7-R49!T+(DcDQH9S*6I86k& z&rjC|@1`2tG*Gq~Si%}_#bG7W^z{sJO{8QghCcl0-=H5^UFZ&)wx8^StGKODy}(8X zV8&Y=@mE%gg_2k1q2`U@zz*ITz)2nO{_@&RR7Wbd-3uJ+V+7pMkp{elre+^1a7~B0 zNbyuMu*DlSd+i3ER2Trin}TNPjuNPSX>T;JogD$VzAX`$b_k*`wSEO0MPCMdwGBF< ze`yZU6>@*zTD#R4>NC`K-a^^2ZAi^+TEGkCn!vZlpuvufA}CVPVh`+6z7jZP3{K43 zIRc^?kKiyQQ{`}Y*1|F9+uPg{qV?s5z@bslw{^oa=-b)Id&vk*ODt_K@If8Kn8=J|i?*OmM$&E~vyClUix27|L>o^wne_+n z83i|ZRZc_89t9xvjO+Q*M1jYOULw=InnPx_sD7cL7J1HqC$A`pOj0#UW{rf_(oiAR z2gsp3B{ExkxPXU+G&DRjUYaQM!Fq_;w>_a`*4ePjfH|gshbT%Sb|d#FnKj3$04%Hq zj6L5=#58h$BC|N51vJzsJ3yKk#?XRvcJ4tk>s8n}z}!VZZr)QO)-VzYk);yAqU(UW z);ERPMmJ?Tp? zcM=De`o+4q7~3xJX5PLZJg5lnbMuRyXfIq$(GELx3JD1b;nx+lOi@S!1t5Q>4L+-|%7-cS`i29$)WDU0tr$~=C7h`!vMLDP2k)&}} z#D}S=m%Qp1FW7oLHPOf1?i;VYLN_ydva_s0QpZmi*dd=xZyLOR|Ni{UcvZjtiiq&= zk(O-Bbvxo#W)=?1Kf5?MI64~1?}U2gn(v`ee>2|bSRWr=kDu`X?5$2MIRG}4oVo+{14p6e$>#2k8hrC3aaa`TnyeY6yq9P lGdhH|44uKc}iF2=vuPB0sc;eJ)XWEf4ZZ|{{p~+HS_=g literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_clear.png b/tests/images/roi/polylineroi/open_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..052010fbc590b38cc1bf0d4d33b12d69fd45edf1 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yu@pObhHwBu4M$1`kk47*5n0T@ zAXEavjQ7&yD;OAbsa4b7*A7kIQw+t0C l9Tg;4nnsBc5(bC(Uv@F|Pkiu=7no`oJYD@<);T3K0RV~-i!cBH literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_click_segment.png b/tests/images/roi/polylineroi/open_click_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..f99e663a0082f5d0e2c4b7638b4aa80338b53a4b GIT binary patch literal 2005 zcmZ8i2{fDO8jjFXV`%AO3!P>x6KYGS8?B`nTT5%wT1qKBsoIwim!qb2Q8$*V8vAyP z8iN>(P>oVFAxx~}8e**_mL_dQf|DN7+dv4Bo^F7I%?|q*4{hsen#x+-muVqzb zVKCU&PL6i&VC{!O1`giOVgJSi%dtpDuNWBYD2YpUirOvO$`JzNd=Jxh>IBhHHs_>0vJS)_Kg3nJm+ zPI6}w`$?^J%zfi!6m@*O*C9uqH*??TioStrbQA_jYAy)5Z@lViPeJc8OiEZtB$9Dk ziPgWLR`1=Yp{eQS>Z+RPg+Zi5=;tvB@$tK>tdi8!BfU+T+5sb^o#0p=Ba7j&=~^3e zwn99fr<3NRd9|;wP0i=wo0)qRzMX{E;mLbjbFUKx3A0b`Nr(pV6z==?FMSNwkFN!V zg`Gbx;pjxQZd}pn7*|mOdTtq|!zrf6>d?I*udU`AV;@CGMqZ=E+iHS6@_1Q27 znfn+3jH&6w{Jf#B1R^UtTV6rI1&~WhN-8NSjhz~~j!|W;L_M1Jrfx!va{ z0MzCC=H|+K7oW&K%pO>Y4hg9T)ml0_W~QdT1Jzh8mOv|UJJ17i|8LKK_d+Y3!w(A$1=I`* zn@gk7Tx);8N@2bI{C4&a!Qe*6#uRNGDy2Zkeh%l08WrW`&cVi;8$Z2^63N_0?wd7B}h{1pY#ADMQ>GjrmUvsQsWLe z2$ip@sR=b3(5zh1|D)n!Wc-~wHo)Nw8r-zpMjyD=^56Mp1!1P~CRC%icg0T6-RB~A=ezyQ)iqRA6Fx3g7Z7`Uk_0^HV{SP^@+IbP>R^pG>Fl8eP{=9KFH4pNx z<;@6fN)#V|xZM)fe7kY(aBFaY-R7ZSrxd++sF^ItFCs2VeEA0mgOS_Buz{r*Ub$tg P2+BCwyV{X2`#<_OOt;yh literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_drag_handle.png b/tests/images/roi/polylineroi/open_drag_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..50cfeed514261adad79bdfb0e95a2fdf638937ef GIT binary patch literal 1737 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_drag_roi.png b/tests/images/roi/polylineroi/open_drag_roi.png new file mode 100644 index 0000000000000000000000000000000000000000..a3fe2d6a5d486306ff33094fb5577d686eacd281 GIT binary patch literal 1067 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|WD2 zPZ!6KiaBp@*k{Zsl{x|tG}>2U=` zx!c56I(v6NdZr*UXHBlN;6WvkRTd)AqF=aLwPP+>NxV_*IQ;pE^Ufz9iUd3xGzTG%-<;tOpi=*4}_g{To`~BpnqPI&Ey8VuqD@oo`a*bY+(JhiYaglD& z7T2zA9v8(lM+FCIfPAvgHC;9L$C)o*4t;za-S#)`{cPj(Rk9~0yec{M`1sS;_x*bM z`uWdkw|%|W$}PP1n*8>Be!lPL&evDJyEAoj`s(#31%CZFE&O=>-s-2_ubU5F%t|+P za|=5^e}Cc2OAiVPQ&V$_x4mJDkCm%`{`2+vKU=r#`IBPt>C3mo=R3;Qnn=yA%MYzd z{+pe)EN1Vn!oP<@D)ZL9`McrSM4p-R=j-mh_$h0@HpB62j5_IeBrw@smU++h}e*N^^+}_vh{9fCCKbaPr zv@Y6hxw+lqLTBZ(&mI(~UV{sNA2A<`v%_{ZBa3 z9LL)F%brCs&WS%v<%;W`@8TDOH}&kkefZLblMCB#)@aP$6SsV({+YwfpP$W4eclx{ z&sO`{^X~2W-+8ZJ>+)NET zRT^Bmg$K4Iin?BW{go?sWBl28kI>LN`(k7E?J<9$tEU&YW5b7EU*9R__T0R-;`@z9 zNrkVk9elVlI6ZDpMlZjCh0oo*>*f2?rKP1GzrK8Z{r|5I58u;0 z?(+H4()DeJKUU{&zkT@Oh8h2kNcFny-o5+r>w^gap;tjFLPMJmCj7a#ecQHEn{=|; zP0j7^N5ur`r6l+f2*&`S$yZK0kZ1ay1P;gu3^o9P<4mbCme>HRc^_TnK*Y8h{ zzcD-gzwJ_>3m6Xkk6(JZcj4LDMreZT*`YpZ~~Ig)I)0v(vf% zZ`<~3*S{ZG>#gp;?cKfFS1bDxYfFB8nbp{6pLZuie%<=(>3(x|6#V&d>H5-knO|A? z_itD0)l}}R-I15_A`N2=8 zY9jx?{G8{Wzw2jF=G9ZtXD{84S5rIH#{2Z!TRrz(?WWez+wx-f-1`^#^Yiqgr%!^! zmu}zlyHK)b@tpiAL8p$m?5yAad*Zu9U7ab>+r`$uzpH)r*<<}m#~u^!+_#V3*Cs9c z^1a;tlHr=r)#3d4x5Hw$uB!cU>%)il*VpTp`c_@oHF4sv8xg-#DoVCQz5a7Pez~;s zY_r_?b7~Ci@7vWFn3tFR|K}$kyCG<;q{NNN9|ce6zc;!X^>%hMd;Q+3ulsL-${U7h ZZ}NYyezmW8(Z)6q*VEO{Wt~$(6993rKg$3B literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_hover_segment.png b/tests/images/roi/polylineroi/open_hover_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..53c6df6c53d84aa0fadae7dafb33910a20892e43 GIT binary patch literal 2123 zcmZuzc|6ql8y^~tR9eSUm?diGMTEr?a)dQAt_&MF8dj*5RSdDDb!?PdlW|O_$bFS# zOcT~%9J!S-8h692Tv`DwTCk|bqu90al@_OZpgD%rR9$6 z9u-htdGVc!dL44qALxSv4L-rP(;>)?}m3yLwFHra}g(m{@|5ET8M)C;i* zet!|d#;VM>3)w&7B}Pt(rA!7*ZN@c^)l3Ggk4`U6r=AxUh8<_yfPifOFory zb*+OQC^X;aId2N+<|VMTpfoZ%TUKQ)Z=Ks#fLXqmmYNl|Ge#HC{_Hh9nXA(9 zSi{>WOfD!{RJQL%2;Pl;ZrxaVst_p#x17^qN%tL7;6o2-^-wD#IZ4yK1 zf}vx^Q)9k`O4!1x<_;@$oMkFL@6NrqWiVosQ|%c;LY92y{LZHTsvqs>QX@!=IEgk@ zQFDv0|CujLP&WFZc~=nx&hKg*JgD(!Eo{D=(qv?~7EeNzd|vOzT9cC%9=W)z?5+=q z6%5ViDXH6mPAcjw*8rU5Ky}u)cXOUDjp9;=w>-`1m`fEG{3{^jOu`mV79jAmddED7dFs%;_~LWPDu zD?$xF$K6iFW9)vLFocX+1XPJ&g7zK*6lQ0-F- zy+Csiz++p+Uc$zXl9fbOu|4qJ&IA$p4XvpON5CJ>)Ug6-H~ia&3SpW%Ixq-oP;*`3 zgegNUlzJ{+%H!MA7gbSK}MW9 zc9T0)^2Xfj87LrA6K7eF5!=~~rU0Z`{L(sY;+zS_?NyWCAni~DX)P^f8aRO}{m}3D ze5fN>M??hTri(LnDoJg757hazejjEFLPe#(09#0v`^Y^5nyFn$WX8enSz3c*${=8q z9lIZi6auarMMcpV*wo@A@*xm@HgJd%;6yrq3tWm8HX?>4!8K?s#1K>A&j=9D5@jr;U|SheR-CC zG(D;@ zT&N^j6w~BdF+2;iF;)}}?+0*G|CQvufkVsAPR;lcWGzi3?MA@9wUWyWCG_g(DpPXv zRkR>`iT%QY9^=^E+n#$K;-#Oy=Kly3`t-JDX+c{_+Li8R9{HfZgd{M^I{OsYR3$h> z@uVqqClHw+Z3W%gR5XC{OUv69tE?<{rE?kK45}Ow>9Ov^7bSH0m<88C_PNP1DCkOK z(5d+WtKI|vx$ubBQk1gqD7o|h_M3G zLZdU!L%RAT;hqebrlaFr2X|WK40Ajn=UnPCN(s@~ALp6RaD(pjn7Ka&Y->r%E-ujg zHgl?x8X(l(mS1&DKmaUE|H2?G5^WDp+tAp{_!J5t#o<(6OM_(r@|Vitd!zmj3;RLh z*4=Fq2xQSinQak(>?aI&x8PCuyfwSPkD^e3`&uEY2T@{T ztIgm3O?Q)9r*etN=W?IM?p#hKom!OI&Pj|R(cb`(+`2_aFN@4qUB zI!5dc3|zGGF5JnQyRN7-$gW!(H(E5_Y-p@})mXz|yl&<;uJ0H$7wJ~ij%@b%TPgix z{9rFoWL&?=b)8>yS9R?#vh_u$xDiK5sr{N6p3*!2{r!C$4%cwjj;g1LT*)%No2k|H zvd!=dySTHnG-ZDN!(JJk({p3*?H>)tZhMU_ec|zVt`sIQ^hv|Z^)J85oMd=;nW0cQ z@UnMa5EcpKEHNY7WMpLMw`MykdTfh^H4?|2uE%N|Ve&~6^hsU6t^O1ey|G5MsYw%u zn~+La{4Lb_O?zIXOb8|{7bSm3d;bH)-RZp{D|=<`VV8wPjA-2AOupwxKr@ sb5VlPF~fK~<5L9rq~iZxPt$mlvzV2k(`ugtz}Eo+XJKnzdBG$4KezP{4*&oF literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_init.png b/tests/images/roi/polylineroi/open_init.png new file mode 100644 index 0000000000000000000000000000000000000000..38cf15d6a4bc79fc6f2a0b254eb5df5678715d11 GIT binary patch literal 1175 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|Sev zr;B4q#hkY{_GeFFmpT4%_h%Q~qbjVTj!R=sICghf9Z{U=!j-3Vl+VzrRP?!y-al3; znUakU1Xk@X+2kbURk$I^*;XaE`-^yIFpt09O982M*OrHGmA~D+{`!|Y-*>A2JhZp+ zU4@n?(0+y=|5s0&d!zWpg^!(`-#!&R-w-P@f4=qh9UCUZ_uLDUy0+Xr->&vkN?zKs zVhbBPyXxQHrca*y^XQA*ubYJ5K7G1#=FIBg;JJs7o$#nrHEW8xUVi2E(vOZa-zA2w zzM8iACtFye@=Lj}K#{3luF-p@0EM-thOG|0D5k&o&++O&8Ai)+_5kBefO zx0GC?mt=H{j0z6Y0I7VsZB?rJJxK|RqGxA{4<{8C{(5ya{D=9Mbz3)-$=XKU-}H26 zaD4p!eLudu+bKX+Iug<rec7x*+yIEZNKdrxCW$1#C7-GxZiiu z)6-vneRp%pzU0f#&NeSzyw!KMRl7ACdwt!P7hlDfK7S)4B_${QdJa!t&y`c$+O>UK zpC4%KS5pg{Hr={i+qLlXpP!rD#dAV#|N7+@yDQ}H=h$Uo>+1_YKI-R}{}&$32+Y|B avVY66sClWkY!eFv<#bP1KbLh*2~7anST}kA literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/open_setpoints.png b/tests/images/roi/polylineroi/open_setpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2d59310da9ddd0c769d09a6e6bbd032798869e GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#S9GG!XV7ZFl&wk0|WCN zPZ!6KiaBp@oX-|XmpT6N=2^DMK|Vnqt{F?-JaTe85?o}UK5?F_SJj8(3+o%x_5bm^ z*}Mo1Sn=Ok;F0Q=grjY{I=%#O{dN5^Md$ImZyQW6dp4Wj zgan=}@0a)Y_5c6v)zudTxwW+$ul`ESUVUqpjOtgz`S~VN?VI@fW)vP?bv5g4+3$dD zhXRfAB2pv8To>xv0a>nrC028tqGdupiU+ON3D3Ke5w~ZD{ml9E?MvU?S+5@_bLrTO zoUK{?XV0BqAG818#e#=VPR^faCo7jwFyq$SZTU)qx0GC?mt=H{Yn#VK zG0joIK^h>RF>VJMZ{`V0$=rGyn6ma3Kl539F~e-Ow6yfyyz)C6cHMpV?AfyqRUcnn z-G6W2-ThBztcc(7A#%Tc&HJ-yoA19De>^{;`CvkRetyN>*I!RA2JhZp+ zU4@n?(0+y=|5s0&d!zWpg^!(`-#!&R-w-P@f4=qh9UCUZ_uLDUy0+Xr->&vkN?zKs zVhbBPyXxQHrca*y^XQA*ubYJ5K7G1#=FIBg;JJs7o$#nrHEW8xUVi2E(vOZa-zA2w zzM8iACtFye@=Lj}K#{3luF-p@0EM-thOG|0D5k&o&++O&8Ai)+_5kBefO zx0GC?mt=H{j0z6Y0I7VsZB?rJJxK|RqGxA{4<{8C{(5ya{D=9Mbz3)-$=XKU-}H26 zaD4p!eLudu+bKX+Iug<rec7x*+yIEZNKdrxCW$1#C7-GxZiiu z)6-vneRp%pzU0f#&NeSzyw!KMRl7ACdwt!P7hlDfK7S)4B_${QdJa!t&y`c$+O>UK zpC4%KS5pg{Hr={i+qLlXpP!rD#dAV#|N7+@yDQ}H=h$Uo>+1_YKI-R}{}&$32+Y|B avVY66sClWkY!eFv<#bP1KbLh*2~7anST}kA literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/roi_getarrayregion.png b/tests/images/roi/polylineroi/roi_getarrayregion.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf424e4ebe1caf7725d739681e5d4ba2a23c9ff GIT binary patch literal 7925 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/roi_getarrayregion_anisotropic.png b/tests/images/roi/polylineroi/roi_getarrayregion_anisotropic.png new file mode 100644 index 0000000000000000000000000000000000000000..19009071492853907022449412752b5ed9cdaa1b GIT binary patch literal 7602 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/roi_getarrayregion_halfpx.png b/tests/images/roi/polylineroi/roi_getarrayregion_halfpx.png new file mode 100644 index 0000000000000000000000000000000000000000..f5af5fc3c3a2d3090bb8132dec3f254536ab4fad GIT binary patch literal 7928 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/roi_getarrayregion_img_trans.png b/tests/images/roi/polylineroi/roi_getarrayregion_img_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cf8a1c66723ea1d23a1fb13ee66120e6ce31df GIT binary patch literal 13226 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/polylineroi/roi_getarrayregion_rotate.png b/tests/images/roi/polylineroi/roi_getarrayregion_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..7961c675dbc134a026881026a2f04c0465556fe7 GIT binary patch literal 6458 zcmd^EWmJ@FoF^3tX=!N?W+au67)nA?aR|v_2$3APN(rNM33E;m^4!Y63p(DefBy`5}rTXQsxK_Sz8M|2|E{vDLgzp$+2lV&0SGl zQC{H`j%3oJ5&S>Dbzj)IH~akU8w^JJn_ai(&d!C>RQ=encY;g!#HvI*UY9cuc^)*) zss2<6m6MY*Ad1iMX+9fMn3|r3m6nxNC+6o1aW)M zf|3$Ce0VqoX-D2|fS8`dr!uAxcDyFeDV&l=(lpIhA{U;gW$aXx!;g-RPT(0Kr)0um z;tc`66ez_ZaUPMY9G48K1TAf0?(RiiEnm5I#8d*dBC$B!gu;`}De9$84hK&jVLf!D zEQGW|N>fu)I~SkS&QTAYs_WpCcj};-cC3Zoy$j>fL-RgomKBm(IN?|FCBr93)psip z?j_1bMMXVa%Bn1YJYIkK)wlc(#b>MzlL(lZ>Oc89l}21-oWhHy+fpozJ0QJycpC)V z+80K#@Gj4S`ueHnqu~O*;jOK$n#A7TJDkYVZM|s%iW~Kiv)9)5#s%Se7^-eD9^|=H z*(Vi&EhuPLNDh#BSw>*oJ!7^&UsdDQJ=b7aO%x3mfW-;uTM5zBvA`3#Z}uuQkUg8XcVzCi53^i+ zlA-P-{3FQMGaS5dz!@oTdne88CyV>JH z-Gmr6!C$Wxaj!r(EM5`DSCB{-;F5 zv_{SB8av_9h{zC+A(dtui)M0#4wIiKzHQ>_0{U%BLf0IPQlNqO2$kyHh`$T z8_C~o7Xz;ifLqvi6c|2IKRc2CZZJvy_E8e+VfPDo!$o*MaeK)t;wyQ~Wj?=SJmX?v z!QiRDoDaoK=4_{yn4nA$Cd2q|wf_o0Fqnbxlzfq%%I1_@>Q<}@L9em1U=L?5`_Y=v z`5u=ot(i4$>`2LoPWzo0sC8+Wa;Tscb>C~dP&P7B-KOnbM8x4 z!LLU7RXgU%j%RiY5&WT_wsS)y@u;|_-GN`ov!6_%wB)vA;xCuV$0K6e1m=^I2!Bw@ zab$CA*i-(LrVqL%<*d<`^O;5NS2npO%kx5pA+>W|T($>)U=dA|T;a)*1sHFqnW;n> z0#_pr>tXZ?=Dp|7tquE-Wj2L}7WLanC6gwu~)!`-N`EK#yTnKz^1lV*|;IY}+ z%^QnXQsOjM02-v)OnDWP9B$<&8yJhSV4vmQ(F1Wo*s`7wcEF@W65g*k|8%!sesE*9 zp|+%?q@v>Y3kmb{war>OIy&JLeHiTR*Y3eVNcxZHQW%O$E%*~O$lcxjmo+|-ha;iW z3ClScFF@P+gfZIHXCk)p9vUwr-tMoLF}IKdk?mf=F$i+62rPb}OlIim>q`Li9=SRG zegEJJJNsE^dvs>Nyqeq54iZUR*tKO(=ycRUb(`z*9*Jsd@j$*Wub6&5`oVMM`r^aT z=^C$uE7y;q{=4{)t)nL=2mbb1=>bw-7_8xArPe@hMC%AqQ&Ycs_3FrNZEY=1N9c+2 z9aGaJb}qKb@$r~+Z#TEXGj~nR=hYof*n@*7PdSlkX=ziYxyt_du*!yphN`Ns3h@aE z+i%e5%ORI?Js@zN1NfNV&i9_&+}yc2`!pJniM_Q#X*+-8(vrSp?hi9zC*4?hS&fp3 zURD$}a~Jyo}Ae)#icY-!E< z{L`xAojxzHgQcZgsME0r=x}!gNMf>sLPA2 zk)zW0)Wwyf-@cXE)O!Eu&x{xa$&y`>vYo)X4VGNLuBb|UBm1LiY>cD4=~i{ITn|)n zZ&-u--BAc#yC?kzdKW6323gf{;}+R-%NgxDC0@;kovD(s`GL6?)BV3th#`p&uh3rz zf>4J*&CSgX40;NZ)E}XWY$^zf$kV0f^Fsfs~(YiZX= zh)1mZqesObKL#GJ6>d7zmN_&Bb;iGJE&)f_u8Mmxa9Kc2Rkx{lOgE;}^S5yHVQ(FR zk9BypTIsfA`du+G+RYR0LaptWFY5xCHho)sp^x}RT4a048`9HB?Q3K81nW6j86O`n zp7&HvS~@9}+P6A8C_XF72@}u2hwF_9MX*pw7>|X3u9-oLRs7VozBL-!Jg+Ez@an24 z{fZ#LiPqg?sD}-jIg}tVB0i@@P43eWtH1#hdULdxAnm9FrO>;oul9RJX3WX=3&lZF zM~YqaK{P>vL&vpoaa2q!fB0co*!kJv{I9*#LvM|yXN)xjcg-2d7K+u!k~tt(91$)} z0<2&bt6RX%&d#W|XI8B8;+i(L+-#~|qqKNL^+5n<{^KZ#!?1Pgf`eD^SVsWKQXf}w+jHjn3udGwYS5rt%Uf!U`Su)qkeiC9_68|_V z+o}t?p&{=&?)e+pFUw|L+Lb}e;a6?Y^z+20TJl6KLc{rnE~KQ6W01Or?x7WLg!Js5-`2coRF-E(;^>RZXMj zY*qxh6D=$(q#T-5zwy-x+^b1U`NYmqB3bAv$ZD{xpsT&cDqHg_V3#`Z+PTP6DojPo za^tu#Ema^6eM}*Bqvayu28Xo0>Z8$*Zh4_&J;Ci>Sbn`Z=U;Q5WrQ3CCFl==eSK$G zjZ}T#@?%c)!`XZqKOA1MY79g`q2H5UzHaZ3(S?gG_siJ($jiqp{=d$;<5}+ zQcD9wPvmzQxfU9t@jY#X(M_akuBBFEK7RURdW+j%uAu#yL=}h0U?PM&30@CiejwMmN=_ zN!dNHvB{#|hf<2dBVFXoY%HLe_H?g#GXW3Wo$7UgW*Ws|GrligH!AK>Q+NUAV3YeD z#F}xs5J+vgZ4{em2l)Dqp`j(l-U|}J=y<1#Q$Bd_;WUB8%$Zz??^&V0Qj`FSl@(~d zK6O+n((oEC^4;p0N0&fT1={DV(rzGqZr-?Y9||oq$%??;)6%8wdxxzlE%uYFVoLA# zj}lPM>puF!xj)GFGJnTD^|f1sGhrJW8!yTzvi<#iC=}{3R*E>VZaGMODki#fo+@S> z&g}k2d85XyXVP7?mk)w}7jGC$4!39SxO4j+AGBx`iua@x0lGiA#-twgSOd%`k5 z4X52-PTp>lbANNas8>7!4*oD7NT=;x?ya%WwoQd!Xq+L_4j$l`i0vqkZdudELC`%n z*mw{@6eA1>keE{3vlf~xunez&)0zZEZ<&wZ%(z!x!77XUP~_lyceG-fsOYb<=;-M6 z^+zg<*D^Mk)42S+tf6ZAqvqPXxPBo+TS29Cz`L2d)W12hv!Wdc{VFX(pMmUDT--Yr zUMU|Qvh2dq{jdtt%1f3$+F917AxhEUDZ-|Ncve`&-*u20t$Guw5=g={9n4j!piql)IX<0Ab1Sions>!iJvE#OnvE{2fqghu zqNRP1C@N!jVWLylm4SglSQiyYT!<-?-BPECO~lEg*B=Txk9rCED?uf|xs{cbK*5%>u8geZ z3U7cN(sHz)=m|Nr*k1z5E?=c!c2JDvvO6VFdTyS1E;IcWUX4b6ON_1YW29n+QTPTD zZmr-s;k%Tm=;xRsQ04lCTm30F?EM5AW^ozilEkoov}uIJP$YY6@8$dYf(^+`}CtHjlrOz#-iP473$7 zh?zCM4q0HPB!6IA^^EcN4D&!0q5DD|<>f+OkclF}=*w(FKzl4xB8lWnEm0}R3wHVt zYf5V4d$KW+LL}iyAwwF{-4tUO2S~t{?fo)N_||DVKauiJ2CMlAm9B0ZFOw76=Y&U1 z#m8gE9U$)Kr^C~=j64ec<=6$a(289l9t44zgW8dE&<65mHOb?OOs<<{ln6ySl~CTm zHwLA`)HC6D;R)v5Hd<%dz+V?cBydKQyX1u?IWIuGoFrvf+o#VV;-(pnDCOVd%_iO+ zS?b6p3vUM6I#6lx{Q1FAeSOx-KBWZy&3vDszRYb^JeYl0U8ZT{P6i!NI}aekYxgobC$P z7wo?>@EDx;bSDmebo>*;XL$Q|6uc+JJ&*24eC!{<#oxG8h;Ec&8W;hVckTBDJB04P zf=@OCVBp)$_rsb_<}oEDeb~mMA6b_UTk%0tDx<}2eB@{ z*~jC`SCAdG@UF{Ui-X6n($a3F0dr^9ViM5_n*o=Ql6nFLWG2lP)fUTJ|t1#liMPM=7+t=WzzfV!C%k>8khAYr!NI}236QRpLH6U_xG>|Q zBoY`Ijm2OFv25(@%4tA{TQ~2yE~lm})cLs7q1KHFU{nmYN#k4=$44mOJaH|xUyGPyG2_912P$tt%b_~hr1 zTKKl*rl{QO1f3b}-P1u4xxCe+*;ADhVKdUex&ByJ^P}(GDQK73`p0K;Zf5^RG(uIf zaS5$L#MI9CCG3(TJ67@-7LwXdQw3PKwvP&AntN}g)SDx1)ASk7*3FOu!+C0ZdAZ#* zH_T>>{>2}-H+L7}*+INZfXBWd_XD17muR2WDI-;vlX6d4MNRV5H?3H>U`NEkJI?6A zW`ChH07~e3(LLkh;_@E8tylDO90Lh(W4&FVmGb0IT=O3hXglS{zBHtnFcqs{TFx|e;9&>mCCP@N34|kC8ECnyQmH$Zt>)Q`eT#ztT z(&OX3wSkLsNK$B*-`?t7AYLO*nG+on*9JR|ev-2m4H`M~CZqqdJI^pxDvSlXiGJV#SGn_tE(6)hXkezgj$WR?!qK8B=2uTc@31cP zXUd~H9k8oOeWzF(A^G6*s?!IPIzL21fw-|eD$rWVnhQOgJyXAi_;0ximYj}^1H;V* jQaS#|(}cPf62-Oh5)-xfqH*9bgv{W!iB7qeWB7jnS-<$# literal 0 HcmV?d00001 diff --git a/tests/images/roi/rectroi/roi_getarrayregion.png b/tests/images/roi/rectroi/roi_getarrayregion.png new file mode 100644 index 0000000000000000000000000000000000000000..13b308e7ae1cbd14daf01486ad0c026a7c6643ea GIT binary patch literal 6722 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 literal 0 HcmV?d00001 diff --git a/tests/images/roi/rectroi/roi_getarrayregion_anisotropic.png b/tests/images/roi/rectroi/roi_getarrayregion_anisotropic.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0a825fbfb8faa1243c3683212b289056200ece GIT binary patch literal 6261 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 Z!n zHR-GOH@;+;v$5q)Mt%I^(2L2vlw-1Ue=+~R1XTZj z5^bxma5}#^TyM_>^8{^Zy3zuHMLm6edaedHZj|&?ST!Kd#6v`GcWovce0-dwev+g7 z0O9asZKhOOQSk{lE-r3AckIIlqMfa+tt%}EL@Z)sWkq~`9Y$V?TYtDsVz6dNm}>AW z>Dk-cOSkPz>^U1IhV+u^o0_t~NF=h<`^>$Ku(Px0nF|UDAsrkY`Q`d*3=(Xrt_Od# zOwY(Dy}v2E5n51CP-5ub-}u+nppk>}^3aE)nh$JT^j-powz=hgv9z9d$dn3oFTR?z__4D(9E zHAsRNJlx#k2cOE)WW{MQ*Vw}~TFhbk=x7X#L4SUC10ZAN-u3qwRfhoJ7<#>o&fG4K zL5W5!uk^>g@1IM<_=V6QM5H;PUX~qweqQ3ql;#Pm%jnq}qls^UT~ln3R>1x8FO!8u zV8jJ{QguY3m#VCr)4`bGJbSo8OE`(qGumI%59#z2$VG2F+Zvd$#*|Otjh4(+36PPi zv}w%(!(F>-_u%e@-3=aoGCwVkSP^}A(bb3WcLmpziYa9Ei8!iecwV>~{e(wDHdwdp z>({R&{^UO%(X&`axoT=9vR$z;0BTh|A&xw0_$@OK6reVw7Xek15~I8m#;rM%myJ)? z^9@>7JMbu%zU(}MX>@hdP^=Fm5)AL|*+~6{e~Ruzvky1y%6$=j zBSKDx_N0(uVjx=qNuHX~MWZ_W`Wxio@byg~DMZn8H9tFL7BcwqQ+#5(VlP(yrU8X4f+I;Wq25^al=W-JET{@ z2+v_I`+M5??qev>>u0OEQk+kzg&rPM2=IxbxC=s_M>doX?=d7@9y&z7I6uwux+rDx ze*y49=~xkO7`0)SBM%xR8nXf1dD?3Qy;NP~XNkxBfWDAb(aNLrMn7Bb5+IZ*LZBu` zrN6^vn@%H&-q9|Tdz;QDX0SeG;#C?c7XMbPo1S}ZtnAQ&O z#XY9ki@M#^$1l7c*nhfhECNrn#v61X4i%<3FRc~Sv?xDjkMAw6D_b)m-w<-Nm%fTe zJjdc2`Ai7+BYUL&=GXAkH9|~)hL+U<|Fi`6YGDq@HXSpNl9Gu1CV2)Vq{CKs)5hdIiEUaaOcnQsUi)!paNmV6y`m`^L7j7Cqsaw?aWP5eE8GCYz2?$Ji4ZR`FUk@ zZsUz$DBrvmI=ZRUg|qtYzlN`~x2XVHlt?sOSD5DH!mx2<_<^%V^aYnm`1Zlh$`XAw zC%BQrQEz9M5$-zDWPMoX5&rP@?(l5rUgje&7{yTeb^BVpn+w$ z_cm!5MU_c}a<2$aJ-hv?`&u!~X|-GMfAV literal 0 HcmV?d00001 diff --git a/tests/images/roi/rectroi/roi_getarrayregion_halfpx.png b/tests/images/roi/rectroi/roi_getarrayregion_halfpx.png new file mode 100644 index 0000000000000000000000000000000000000000..956796d0923b44e52f3567a3f6b49cfbef8c7508 GIT binary patch literal 6924 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 RkzQ|+sVb{06)XPX|9>JFC};ox literal 0 HcmV?d00001 diff --git a/tests/images/roi/rectroi/roi_getarrayregion_img_trans.png b/tests/images/roi/rectroi/roi_getarrayregion_img_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..7a12ba7a99145bea295190f735ba6589a05c7fad GIT binary patch literal 8773 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 E4~;k;d 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 Vw)PcYf!8~TG*opUWy&w!{udJlx9tD` literal 0 HcmV?d00001 diff --git a/tests/images/roi/rectroi/roi_getarrayregion_resize.png b/tests/images/roi/rectroi/roi_getarrayregion_resize.png new file mode 100644 index 0000000000000000000000000000000000000000..881517fe91002bab8500c9d5df508277ffe9cb48 GIT binary patch literal 6609 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 NeQgu18lYp$zX1*