large-image 1.31.2.dev50__tar.gz → 1.31.2.dev64__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {large_image-1.31.2.dev50/large_image.egg-info → large_image-1.31.2.dev64}/PKG-INFO +78 -78
  2. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/CompositeLayers.vue +8 -4
  3. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/FrameSelector.vue +2 -0
  4. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/HistogramEditor.vue +114 -42
  5. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64/large_image.egg-info}/PKG-INFO +78 -78
  6. large_image-1.31.2.dev64/large_image.egg-info/requires.txt +159 -0
  7. large_image-1.31.2.dev50/large_image.egg-info/requires.txt +0 -159
  8. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/LICENSE +0 -0
  9. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/NOTICE +0 -0
  10. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/README.rst +0 -0
  11. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/annotations.rst +0 -0
  12. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/api_index.rst +0 -0
  13. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/caching.rst +0 -0
  14. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/conf.py +0 -0
  15. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/config_options.rst +0 -0
  16. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/development.rst +0 -0
  17. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/dicomweb_assetstore.rst +0 -0
  18. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/format_examples_datastore.py +0 -0
  19. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/formats.rst +0 -0
  20. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/generate_format_table.py +0 -0
  21. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/getting_started.rst +0 -0
  22. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_annotation_config_options.rst +0 -0
  23. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_caching.rst +0 -0
  24. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_config_options.rst +0 -0
  25. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_index.rst +0 -0
  26. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/image_conversion.rst +0 -0
  27. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/index.rst +0 -0
  28. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/make_docs.sh +0 -0
  29. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/multi_source_specification.rst +0 -0
  30. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks/large_image_examples.ipynb +0 -0
  31. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks/zarr_sink_example.ipynb +0 -0
  32. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks.rst +0 -0
  33. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/plottable.rst +0 -0
  34. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/static/K.png +0 -0
  35. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/static/custom.css +0 -0
  36. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/tilesource_options.rst +0 -0
  37. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/upgrade.rst +0 -0
  38. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/__init__.py +0 -0
  39. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/__init__.py +0 -0
  40. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/base.py +0 -0
  41. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/cache.py +0 -0
  42. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/cachefactory.py +0 -0
  43. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/memcache.py +0 -0
  44. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/rediscache.py +0 -0
  45. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/config.py +0 -0
  46. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/constants.py +0 -0
  47. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/exceptions.py +0 -0
  48. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/__init__.py +0 -0
  49. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/base.py +0 -0
  50. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/geo.py +0 -0
  51. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/jupyter.py +0 -0
  52. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/resample.py +0 -0
  53. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/stylefuncs.py +0 -0
  54. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/tiledict.py +0 -0
  55. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/tileiterator.py +0 -0
  56. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/utilities.py +0 -0
  57. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/DualInput.vue +0 -0
  58. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/colors.json +0 -0
  59. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/components.py +0 -0
  60. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/SOURCES.txt +0 -0
  61. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/dependency_links.txt +0 -0
  62. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/not-zip-safe +0 -0
  63. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/top_level.txt +0 -0
  64. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/setup.cfg +0 -0
  65. {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.31.2.dev50
3
+ Version: 1.31.2.dev64
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -30,7 +30,7 @@ Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "memcac
30
30
  Provides-Extra: redis
31
31
  Requires-Dist: redis>=4.5.5; extra == "redis"
32
32
  Provides-Extra: converter
33
- Requires-Dist: large-image-converter>=1.31.2.dev50; extra == "converter"
33
+ Requires-Dist: large-image-converter>=1.31.2.dev64; extra == "converter"
34
34
  Provides-Extra: colormaps
35
35
  Requires-Dist: matplotlib; extra == "colormaps"
36
36
  Requires-Dist: tol_colors; extra == "colormaps"
@@ -44,109 +44,109 @@ Provides-Extra: performance
44
44
  Requires-Dist: psutil>=4.2.0; extra == "performance"
45
45
  Requires-Dist: simplejpeg; extra == "performance"
46
46
  Provides-Extra: bioformats
47
- Requires-Dist: large-image-source-bioformats>=1.31.2.dev50; extra == "bioformats"
47
+ Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "bioformats"
48
48
  Provides-Extra: deepzoom
49
- Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "deepzoom"
49
+ Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "deepzoom"
50
50
  Provides-Extra: dicom
51
- Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "dicom"
51
+ Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "dicom"
52
52
  Provides-Extra: dummy
53
- Requires-Dist: large-image-source-dummy>=1.31.2.dev50; extra == "dummy"
53
+ Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "dummy"
54
54
  Provides-Extra: gdal
55
- Requires-Dist: large-image-source-gdal>=1.31.2.dev50; extra == "gdal"
55
+ Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "gdal"
56
56
  Provides-Extra: mapnik
57
- Requires-Dist: large-image-source-mapnik>=1.31.2.dev50; extra == "mapnik"
57
+ Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "mapnik"
58
58
  Provides-Extra: multi
59
- Requires-Dist: large-image-source-multi>=1.31.2.dev50; extra == "multi"
59
+ Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "multi"
60
60
  Provides-Extra: nd2
61
- Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "nd2"
61
+ Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "nd2"
62
62
  Provides-Extra: ometiff
63
- Requires-Dist: large-image-source-ometiff>=1.31.2.dev50; extra == "ometiff"
63
+ Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "ometiff"
64
64
  Provides-Extra: openjpeg
65
- Requires-Dist: large-image-source-openjpeg>=1.31.2.dev50; extra == "openjpeg"
65
+ Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "openjpeg"
66
66
  Provides-Extra: openslide
67
- Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "openslide"
67
+ Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "openslide"
68
68
  Provides-Extra: pil
69
- Requires-Dist: large-image-source-pil>=1.31.2.dev50; extra == "pil"
69
+ Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "pil"
70
70
  Provides-Extra: rasterio
71
- Requires-Dist: large-image-source-rasterio>=1.31.2.dev50; extra == "rasterio"
71
+ Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "rasterio"
72
72
  Provides-Extra: test
73
- Requires-Dist: large-image-source-test>=1.31.2.dev50; extra == "test"
73
+ Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "test"
74
74
  Provides-Extra: tiff
75
- Requires-Dist: large-image-source-tiff>=1.31.2.dev50; extra == "tiff"
75
+ Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "tiff"
76
76
  Provides-Extra: tifffile
77
- Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "tifffile"
77
+ Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "tifffile"
78
78
  Provides-Extra: vips
79
- Requires-Dist: large-image-source-vips>=1.31.2.dev50; extra == "vips"
79
+ Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "vips"
80
80
  Provides-Extra: zarr
81
- Requires-Dist: large-image-source-zarr>=1.31.2.dev50; extra == "zarr"
81
+ Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "zarr"
82
82
  Provides-Extra: sources
83
- Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "sources"
84
- Requires-Dist: large-image-source-bioformats>=1.31.2.dev50; extra == "sources"
85
- Requires-Dist: large-image-source-test>=1.31.2.dev50; extra == "sources"
86
- Requires-Dist: large-image-source-zarr>=1.31.2.dev50; extra == "sources"
87
- Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "sources"
88
- Requires-Dist: large-image-source-vips>=1.31.2.dev50; extra == "sources"
89
- Requires-Dist: large-image-source-ometiff>=1.31.2.dev50; extra == "sources"
90
- Requires-Dist: large-image-source-gdal>=1.31.2.dev50; extra == "sources"
91
- Requires-Dist: large-image-source-tiff>=1.31.2.dev50; extra == "sources"
92
- Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "sources"
93
- Requires-Dist: large-image-source-dummy>=1.31.2.dev50; extra == "sources"
94
- Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "sources"
95
- Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "sources"
96
- Requires-Dist: large-image-source-multi>=1.31.2.dev50; extra == "sources"
97
- Requires-Dist: large-image-source-openjpeg>=1.31.2.dev50; extra == "sources"
98
- Requires-Dist: large-image-source-mapnik>=1.31.2.dev50; extra == "sources"
99
- Requires-Dist: large-image-source-pil>=1.31.2.dev50; extra == "sources"
100
- Requires-Dist: large-image-source-rasterio>=1.31.2.dev50; extra == "sources"
83
+ Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "sources"
84
+ Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "sources"
85
+ Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "sources"
86
+ Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "sources"
87
+ Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "sources"
88
+ Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "sources"
89
+ Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "sources"
90
+ Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "sources"
91
+ Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "sources"
92
+ Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "sources"
93
+ Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "sources"
94
+ Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "sources"
95
+ Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "sources"
96
+ Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "sources"
97
+ Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "sources"
98
+ Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "sources"
99
+ Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "sources"
100
+ Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "sources"
101
101
  Provides-Extra: all
102
- Requires-Dist: simplejpeg; extra == "all"
103
- Requires-Dist: large-image-source-bioformats>=1.31.2.dev50; extra == "all"
104
- Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "all"
105
- Requires-Dist: large-image-source-zarr>=1.31.2.dev50; extra == "all"
106
- Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "all"
107
- Requires-Dist: large-image-source-vips>=1.31.2.dev50; extra == "all"
108
- Requires-Dist: large-image-converter>=1.31.2.dev50; extra == "all"
109
- Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev50; extra == "all"
110
- Requires-Dist: large-image-source-dummy>=1.31.2.dev50; extra == "all"
111
- Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "all"
112
- Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "all"
113
- Requires-Dist: large-image-source-multi>=1.31.2.dev50; extra == "all"
114
102
  Requires-Dist: ipyleaflet; extra == "all"
115
- Requires-Dist: large-image-source-openjpeg>=1.31.2.dev50; extra == "all"
116
- Requires-Dist: pyvips; extra == "all"
117
- Requires-Dist: large-image-source-mapnik>=1.31.2.dev50; extra == "all"
118
- Requires-Dist: tol_colors; extra == "all"
119
- Requires-Dist: large-image-source-rasterio>=1.31.2.dev50; extra == "all"
120
- Requires-Dist: large-image-source-test>=1.31.2.dev50; extra == "all"
121
- Requires-Dist: redis>=4.5.5; extra == "all"
103
+ Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "all"
104
+ Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "all"
122
105
  Requires-Dist: ipyvue; extra == "all"
123
- Requires-Dist: large-image-source-gdal>=1.31.2.dev50; extra == "all"
124
- Requires-Dist: large-image-source-ometiff>=1.31.2.dev50; extra == "all"
125
- Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "all"
126
106
  Requires-Dist: aiohttp; extra == "all"
127
- Requires-Dist: large-image-source-tiff>=1.31.2.dev50; extra == "all"
128
- Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "all"
129
- Requires-Dist: large-image-source-tiff[all]>=1.31.2.dev50; extra == "all"
130
- Requires-Dist: matplotlib; extra == "all"
131
- Requires-Dist: large-image-source-pil[all]>=1.31.2.dev50; extra == "all"
132
- Requires-Dist: large-image-source-multi[all]>=1.31.2.dev50; extra == "all"
133
- Requires-Dist: large-image-source-pil>=1.31.2.dev50; extra == "all"
107
+ Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "all"
134
108
  Requires-Dist: psutil>=4.2.0; extra == "all"
109
+ Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "all"
110
+ Requires-Dist: large-image-source-pil[all]>=1.31.2.dev64; extra == "all"
111
+ Requires-Dist: large-image-source-multi[all]>=1.31.2.dev64; extra == "all"
112
+ Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "all"
113
+ Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "all"
114
+ Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "all"
115
+ Requires-Dist: large-image-source-tiff[all]>=1.31.2.dev64; extra == "all"
116
+ Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "all"
117
+ Requires-Dist: large-image-converter>=1.31.2.dev64; extra == "all"
118
+ Requires-Dist: simplejpeg; extra == "all"
119
+ Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "all"
120
+ Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev64; extra == "all"
121
+ Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "all"
122
+ Requires-Dist: matplotlib; extra == "all"
123
+ Requires-Dist: redis>=4.5.5; extra == "all"
124
+ Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "all"
125
+ Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "all"
126
+ Requires-Dist: pyvips; extra == "all"
127
+ Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "all"
128
+ Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "all"
129
+ Requires-Dist: tol_colors; extra == "all"
130
+ Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "all"
131
+ Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "all"
132
+ Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "all"
133
+ Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "all"
134
+ Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "all"
135
135
  Provides-Extra: common
136
+ Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "common"
137
+ Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "common"
136
138
  Requires-Dist: simplejpeg; extra == "common"
137
- Requires-Dist: large-image-source-test>=1.31.2.dev50; extra == "common"
138
- Requires-Dist: large-image-source-zarr>=1.31.2.dev50; extra == "common"
139
- Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "common"
140
- Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "common"
141
- Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev50; extra == "common"
142
- Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "common"
143
- Requires-Dist: psutil>=4.2.0; extra == "common"
144
- Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "common"
145
- Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "common"
139
+ Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "common"
140
+ Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev64; extra == "common"
146
141
  Requires-Dist: matplotlib; extra == "common"
147
- Requires-Dist: large-image-source-multi>=1.31.2.dev50; extra == "common"
148
- Requires-Dist: large-image-source-pil[all]>=1.31.2.dev50; extra == "common"
142
+ Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "common"
143
+ Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "common"
149
144
  Requires-Dist: tol_colors; extra == "common"
145
+ Requires-Dist: large-image-source-pil[all]>=1.31.2.dev64; extra == "common"
146
+ Requires-Dist: psutil>=4.2.0; extra == "common"
147
+ Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "common"
148
+ Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "common"
149
+ Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "common"
150
150
 
151
151
  Large Image
152
152
  ===========
@@ -8,6 +8,7 @@ module.exports = {
8
8
  'histogramParamStyle',
9
9
  'frameHistograms',
10
10
  'getFrameHistogram',
11
+ 'dtype',
11
12
  'layers',
12
13
  'layerMap',
13
14
  'active',
@@ -241,16 +242,18 @@ module.exports = {
241
242
  this.updateStyle();
242
243
  },
243
244
  updateLayerMin(layer, newVal) {
244
- const newMinVal = Number.isFinite(newVal) ? parseFloat(newVal) : undefined;
245
+ const valid = Number.isFinite(newVal);
246
+ const newMinVal = valid ? parseFloat(newVal) : newVal;
245
247
  this.compositeLayerInfo[layer].min = newMinVal;
246
248
  this.compositeLayerInfo = Object.assign({}, this.compositeLayerInfo); // for reactivity
247
- this.updateStyle();
249
+ if (valid) this.updateStyle();
248
250
  },
249
251
  updateLayerMax(layer, newVal) {
250
- const newMaxVal = Number.isFinite(newVal) ? parseFloat(newVal) : undefined;
252
+ const valid = Number.isFinite(newVal);
253
+ const newMaxVal = valid ? parseFloat(newVal) : newVal;
251
254
  this.compositeLayerInfo[layer].max = newMaxVal;
252
255
  this.compositeLayerInfo = Object.assign({}, this.compositeLayerInfo); // for reactivity
253
- this.updateStyle();
256
+ if (valid) this.updateStyle();
254
257
  },
255
258
  updateActiveLayers() {
256
259
  this.layers.forEach((layer) => {
@@ -449,6 +452,7 @@ module.exports = {
449
452
  :auto-range="autoRange"
450
453
  :current-min="min"
451
454
  :current-max="max"
455
+ :dtype="dtype"
452
456
  :active="active"
453
457
  :update-min="(v, d) => updateLayerMin(layerName, v, d)"
454
458
  :update-max="(v, d) => updateLayerMax(layerName, v, d)"
@@ -389,6 +389,7 @@ module.exports = {
389
389
  :histogram-param-style="histogramParamStyles[2]"
390
390
  :frame-histograms="frameHistograms"
391
391
  :get-frame-histogram="getFrameHistogram"
392
+ :dtype="metadata.dtype"
392
393
  :layers="metadata.channels"
393
394
  :layer-map="metadata.channelmap"
394
395
  :active="currentModeId === 2"
@@ -405,6 +406,7 @@ module.exports = {
405
406
  :histogram-param-style="histogramParamStyles[3]"
406
407
  :frame-histograms="frameHistograms"
407
408
  :get-frame-histogram="getFrameHistogram"
409
+ :dtype="metadata.dtype"
408
410
  :layers="metadata.bands"
409
411
  :layer-map="undefined"
410
412
  :active="currentModeId === 3"
@@ -1,4 +1,34 @@
1
1
  <script>
2
+ const dtypeAliases = {
3
+ i1: 'int8',
4
+ u1: 'uint8',
5
+ i2: 'int16',
6
+ u2: 'uint16',
7
+ i4: 'int32',
8
+ u4: 'uint32',
9
+ i8: 'int64',
10
+ u8: 'uint64',
11
+ f2: 'float16',
12
+ f4: 'float32',
13
+ f: 'float32',
14
+ f8: 'float64',
15
+ d: 'float64'
16
+ };
17
+
18
+ const dtypeRanges = {
19
+ int8: [-128, 127],
20
+ uint8: [0, 255],
21
+ int16: [-32768, 32767],
22
+ uint16: [0, 65535],
23
+ int32: [-2147483648, 2147483647],
24
+ uint32: [0, 4294967295],
25
+ int64: [-9.22e18, 9.22e18],
26
+ uint64: [0, 1.84e19],
27
+ float16: [-65500, 65500],
28
+ float32: [-3.4e38, 3.4e38],
29
+ float64: [-1.7e308, 1.7e308]
30
+ };
31
+
2
32
  function clamp(num, min, max) {
3
33
  return Math.min(Math.max(num, min), max);
4
34
  }
@@ -23,14 +53,19 @@ function makeDraggableSVG(svg, validateDrag, callback, xRange) {
23
53
 
24
54
  function startDrag(evt) {
25
55
  const target = evt.target;
56
+ Array.from(document.body.getElementsByClassName('range-editor')).forEach(
57
+ (el) => {
58
+ el.style.userSelect = 'none';
59
+ }
60
+ );
26
61
  if (target && target.classList.contains('draggable')) {
27
62
  selectedShape = target;
28
63
  posOffset = getMousePosition(evt);
29
64
  posOffset.x -= parseFloat(
30
- selectedShape.getAttributeNS(null, 'x1') || '0'
65
+ selectedShape.getAttribute('x1') || '0'
31
66
  );
32
67
  posOffset.y -= parseFloat(
33
- selectedShape.getAttributeNS(null, 'y1') || '0'
68
+ selectedShape.getAttribute('y1') || '0'
34
69
  );
35
70
  }
36
71
  }
@@ -46,20 +81,25 @@ function makeDraggableSVG(svg, validateDrag, callback, xRange) {
46
81
  coord.x = clamp(coord.x, xRange[0], xRange[1]);
47
82
  const [moveX, moveY] = validateDrag(selectedShape, coord);
48
83
  if (!moveX) {
49
- coord.x = parseFloat(selectedShape.getAttributeNS(null, 'x1') || '0');
84
+ coord.x = parseFloat(selectedShape.getAttribute('x1') || '0');
50
85
  }
51
86
  if (!moveY) {
52
- coord.y = parseFloat(selectedShape.getAttributeNS(null, 'y1') || '0');
87
+ coord.y = parseFloat(selectedShape.getAttribute('y1') || '0');
53
88
  }
54
89
 
55
- selectedShape.setAttributeNS(null, 'x1', `${coord.x}`);
56
- selectedShape.setAttributeNS(null, 'x2', `${coord.x}`);
57
- selectedShape.setAttributeNS(null, 'y1', `${coord.y}`);
90
+ selectedShape.setAttribute('x1', `${coord.x}`);
91
+ selectedShape.setAttribute('x2', `${coord.x}`);
92
+ selectedShape.setAttribute('y1', `${coord.y}`);
58
93
  callback(selectedShape, coord);
59
94
  }
60
95
  }
61
96
 
62
97
  function endDrag() {
98
+ Array.from(document.body.getElementsByClassName('range-editor')).forEach(
99
+ (el) => {
100
+ el.style.userSelect = 'auto';
101
+ }
102
+ );
63
103
  selectedShape = undefined;
64
104
  }
65
105
  }
@@ -75,6 +115,7 @@ module.exports = {
75
115
  'framedelta',
76
116
  'currentMin',
77
117
  'currentMax',
118
+ 'dtype',
78
119
  'autoRange',
79
120
  'active',
80
121
  'updateMin',
@@ -101,7 +142,7 @@ module.exports = {
101
142
  }
102
143
  },
103
144
  histogram() {
104
- this.xRange = [5, this.$refs.svg.clientWidth - 5];
145
+ this.xRange = [5, this.$refs.svg.clientWidth];
105
146
  this.vRange = [this.histogram.min, this.histogram.max];
106
147
  this.drawHistogram(
107
148
  this.simplifyHistogram(this.histogram.hist)
@@ -122,18 +163,42 @@ module.exports = {
122
163
  },
123
164
  autoRange() {
124
165
  this.initializePositions();
166
+ },
167
+ invert() {
168
+ this.drawHistogram(this.simplifyHistogram(this.histogram.hist));
169
+ if (this.invert) {
170
+ this.$refs.maxExclusionBox.setAttribute('visibility', 'hidden');
171
+ } else {
172
+ this.$refs.maxExclusionBox.setAttribute('visibility', 'visible');
173
+ }
125
174
  }
126
175
  },
127
176
  computed: {
128
177
  minVal() {
129
178
  if (!this.histogram) return 0;
130
179
  if (this.autoRange !== undefined) return Math.round(this.fromDistributionPercentage(this.autoRange / 100));
131
- return this.currentMin || parseFloat(this.histogram.min.toFixed(2));
180
+ if (this.currentMin === undefined) return parseFloat(this.histogram.min.toFixed(2));
181
+ return this.currentMin;
132
182
  },
133
183
  maxVal() {
134
184
  if (!this.histogram) return 1;
135
185
  if (this.autoRange !== undefined) return Math.round(this.fromDistributionPercentage((100 - this.autoRange) / 100));
136
- return this.currentMax || parseFloat(this.histogram.max.toFixed(2));
186
+ if (this.currentMax === undefined) return parseFloat(this.histogram.max.toFixed(2));
187
+ return this.currentMax;
188
+ },
189
+ invert() {
190
+ return this.currentMin > this.currentMax;
191
+ },
192
+ dtypeRange() {
193
+ // remove byte-order characters
194
+ let dtype = this.dtype.replace('>', '').replace('<', '').replace('=', '').replace('|', '');
195
+ if (dtypeAliases[dtype]) dtype = dtypeAliases[dtype];
196
+ const range = dtypeRanges[dtype];
197
+ if (range && range.length === 2) {
198
+ return range;
199
+ } else {
200
+ return [this.histogram.min, this.histogram.max];
201
+ }
137
202
  }
138
203
  },
139
204
  mounted() {
@@ -200,9 +265,13 @@ module.exports = {
200
265
  }
201
266
  const y1 = height;
202
267
 
203
- ctx.rect(x0, y0, (x1 - x0), (y1 - y0));
268
+ if (this.invert) {
269
+ ctx.rect(x0, 0, (x1 - x0), (y0)); // inverted colors
270
+ } else {
271
+ ctx.rect(x0, y0, (x1 - x0), (y1 - y0));
272
+ }
204
273
  }
205
- ctx.fillStyle = '#888';
274
+ ctx.fillStyle = '#aaa';
206
275
  ctx.fill();
207
276
  },
208
277
  xPositionToValue(xPosition) {
@@ -258,7 +327,7 @@ module.exports = {
258
327
  if (newMaxPosition !== currentMaxPosition) {
259
328
  this.setHandlePosition(
260
329
  this.$refs.maxHandle,
261
- newMaxPosition,
330
+ newMaxPosition - 5,
262
331
  this.$refs.maxExclusionBox,
263
332
  newMaxPosition,
264
333
  this.xRange[1] - newMaxPosition
@@ -271,9 +340,7 @@ module.exports = {
271
340
  const handleName = selected.getAttribute('name');
272
341
  const newValue = this.xPositionToValue(newLocation.x);
273
342
  if (handleName === 'min') {
274
- if (this.autoRange === undefined && newValue >= this.currentMax) {
275
- moveX = false;
276
- } else if (this.autoRange !== undefined) {
343
+ if (this.autoRange !== undefined) {
277
344
  const percentage = this.toDistributionPercentage(newValue);
278
345
  if (
279
346
  percentage >= 50 ||
@@ -283,9 +350,7 @@ module.exports = {
283
350
  }
284
351
  }
285
352
  } else if (handleName === 'max') {
286
- if (this.autoRange === undefined && newValue <= this.currentMin) {
287
- moveX = false;
288
- } else if (this.autoRange !== undefined) {
353
+ if (this.autoRange !== undefined) {
289
354
  const percentage = this.toDistributionPercentage(newValue);
290
355
  if (
291
356
  percentage <= 50 ||
@@ -309,22 +374,29 @@ module.exports = {
309
374
  newValue = parseFloat(parseFloat(newValue).toFixed(2));
310
375
  this.updateAutoRange(newValue);
311
376
  } else {
312
- if (name === 'min') {
313
- this.$refs.minExclusionBox.setAttributeNS(null, 'width', `${newLocation.x - 5}`);
314
- this.updateMin(newValue);
315
- } else if (name === 'max') {
316
- this.$refs.maxExclusionBox.setAttributeNS(null, 'x', `${newLocation.x}`);
317
- this.$refs.maxExclusionBox.setAttributeNS(null, 'width', `${this.xRange[1] - newLocation.x}`);
318
- this.updateMax(newValue);
377
+ if (name === 'min') this.updateMin(newValue);
378
+ if (name === 'max') this.updateMax(newValue);
379
+
380
+ // resize gray boxes
381
+ const minX = this.$refs.minHandle.getAttribute('x1');
382
+ const maxX = this.$refs.maxHandle.getAttribute('x1');
383
+ if (this.invert && minX - maxX > 0) {
384
+ this.$refs.minExclusionBox.setAttribute('x', `${maxX}`);
385
+ this.$refs.minExclusionBox.setAttribute('width', `${minX - maxX}`);
386
+ } else {
387
+ this.$refs.minExclusionBox.setAttribute('x', '0');
388
+ this.$refs.minExclusionBox.setAttribute('width', `${minX}`);
389
+ this.$refs.maxExclusionBox.setAttribute('x', `${maxX}`);
390
+ this.$refs.maxExclusionBox.setAttribute('width', `${this.xRange[1] - maxX}`);
319
391
  }
320
392
  }
321
393
  },
322
394
  setHandlePosition(handle, position, exclusionBox, exclusionBoxPosition, exclusionBoxWidth) {
323
- handle.setAttributeNS(null, 'x1', `${position}`);
324
- handle.setAttributeNS(null, 'x2', `${position}`);
325
- exclusionBox.setAttributeNS(null, 'x', `${exclusionBoxPosition}`);
395
+ handle.setAttribute('x1', `${position}`);
396
+ handle.setAttribute('x2', `${position}`);
397
+ exclusionBox.setAttribute('x', `${exclusionBoxPosition}`);
326
398
  if (exclusionBoxWidth >= 0) {
327
- exclusionBox.setAttributeNS(null, 'width', `${exclusionBoxWidth}`);
399
+ exclusionBox.setAttribute('width', `${exclusionBoxWidth}`);
328
400
  }
329
401
  },
330
402
  fromDistributionPercentage(percentage) {
@@ -367,8 +439,8 @@ module.exports = {
367
439
  type="number"
368
440
  class="input-80 min-input"
369
441
  :disabled="autoRange !== undefined"
370
- :min="histogram.min"
371
- :max="currentMax"
442
+ :min="dtypeRange[0]"
443
+ :max="dtypeRange[1]"
372
444
  :value="minVal"
373
445
  @input="(e) => updateFromInput('min', e.target.value)"
374
446
  >
@@ -396,6 +468,14 @@ module.exports = {
396
468
  height="30"
397
469
  opacity="0.2"
398
470
  />
471
+ <rect
472
+ ref="maxExclusionBox"
473
+ x="5"
474
+ y="0"
475
+ width="0"
476
+ height="30"
477
+ opacity="0.2"
478
+ />
399
479
  <line
400
480
  ref="minHandle"
401
481
  class="draggable"
@@ -417,14 +497,6 @@ module.exports = {
417
497
  >
418
498
  {{ +vRange[1].toFixed(2) || 1 }}
419
499
  </text>
420
- <rect
421
- ref="maxExclusionBox"
422
- x="5"
423
- y="0"
424
- width="0"
425
- height="30"
426
- opacity="0.2"
427
- />
428
500
  <line
429
501
  ref="maxHandle"
430
502
  class="draggable"
@@ -444,8 +516,8 @@ module.exports = {
444
516
  type="number"
445
517
  class="input-80 max-input"
446
518
  :disabled="autoRange !== undefined"
447
- :max="histogram.max"
448
- :min="currentMin"
519
+ :min="dtypeRange[0]"
520
+ :max="dtypeRange[1]"
449
521
  :value="maxVal"
450
522
  @input="(e) => updateFromInput('max', e.target.value)"
451
523
  >