monochrome 2025.3.18__py3-none-macosx_10_9_x86_64.whl

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.
monochrome/__init__.py ADDED
@@ -0,0 +1,39 @@
1
+ """Monochrome: Viewer for monochromatic video and image data."""
2
+
3
+ from ._version import version as __version__
4
+ from .ipc import (
5
+ BitRange,
6
+ ColorMap,
7
+ OpacityFunction,
8
+ close_video,
9
+ export_video,
10
+ quit,
11
+ show,
12
+ show_file,
13
+ show_files,
14
+ show_flow,
15
+ show_image,
16
+ show_layer,
17
+ show_points,
18
+ show_video,
19
+ )
20
+ from .ipc import start_monochrome as launch
21
+
22
+ __all__ = [
23
+ "__version__",
24
+ "show",
25
+ "show_video",
26
+ "show_image",
27
+ "show_layer",
28
+ "show_points",
29
+ "show_file",
30
+ "show_files",
31
+ "show_flow",
32
+ "launch",
33
+ "export_video",
34
+ "close_video",
35
+ "quit",
36
+ "BitRange",
37
+ "ColorMap",
38
+ "OpacityFunction",
39
+ ]
monochrome/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ import sys
2
+
3
+ from .ipc import console_entrypoint as _main
4
+
5
+ if __name__ == "__main__":
6
+ sys.exit(_main())
monochrome/_version.py ADDED
@@ -0,0 +1,21 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
6
+ TYPE_CHECKING = False
7
+ if TYPE_CHECKING:
8
+ from typing import Tuple
9
+ from typing import Union
10
+
11
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
12
+ else:
13
+ VERSION_TUPLE = object
14
+
15
+ version: str
16
+ __version__: str
17
+ __version_tuple__: VERSION_TUPLE
18
+ version_tuple: VERSION_TUPLE
19
+
20
+ __version__ = version = '2025.3.18'
21
+ __version_tuple__ = version_tuple = (2025, 3, 18)
@@ -0,0 +1,239 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>Monochrome</string>
9
+ <key>CFBundleGetInfoString</key>
10
+ <string>Monochrome, a viewer for monochromatic video and image data</string>
11
+ <key>CFBundleIconFile</key>
12
+ <string>Monochrome.icns</string>
13
+ <key>CFBundleIdentifier</key>
14
+ <string>com.janlebert.monochrome</string>
15
+ <key>CFBundleInfoDictionaryVersion</key>
16
+ <string>6.0</string>
17
+ <key>CFBundleLongVersionString</key>
18
+ <string>2025.3.18</string>
19
+ <key>CFBundleName</key>
20
+ <string>Monochrome</string>
21
+ <key>CFBundlePackageType</key>
22
+ <string>APPL</string>
23
+ <key>CFBundleShortVersionString</key>
24
+ <string>2025.3.18</string>
25
+ <key>CFBundleSignature</key>
26
+ <string>????</string>
27
+ <key>CFBundleVersion</key>
28
+ <string>2025.3.18</string>
29
+ <key>CSResourcesFileMapped</key>
30
+ <true/>
31
+ <key>NSHumanReadableCopyright</key>
32
+ <string>Copyright © 2025 Jan Lebert. This software is released under the MIT License.</string>
33
+ <key>UTExportedTypeDeclarations</key>
34
+ <array>
35
+ <dict>
36
+ <key>UTTypeIdentifier</key>
37
+ <string>com.mpids.bmp.multirecorder.raw-data</string>
38
+ <key>UTTypeDescription</key>
39
+ <string>Monochrome Raw Data</string>
40
+ <key>UTTypeConformsTo</key>
41
+ <array>
42
+ <string>public.data</string>
43
+ </array>
44
+ <key>UTTypeTagSpecification</key>
45
+ <dict>
46
+ <key>public.filename-extension</key>
47
+ <array>
48
+ <string>dat</string>
49
+ </array>
50
+ <key>public.mime-type</key>
51
+ <string>application/octet-stream</string>
52
+ </dict>
53
+ </dict>
54
+ <dict>
55
+ <key>UTTypeIdentifier</key>
56
+ <string>org.numpy.raw-data</string>
57
+ <key>UTTypeDescription</key>
58
+ <string>NumPy Data</string>
59
+ <key>UTTypeConformsTo</key>
60
+ <array>
61
+ <string>public.data</string>
62
+ </array>
63
+ <key>UTTypeTagSpecification</key>
64
+ <dict>
65
+ <key>public.filename-extension</key>
66
+ <array>
67
+ <string>npy</string>
68
+ </array>
69
+ <key>public.mime-type</key>
70
+ <string>application/x-numpy-data</string>
71
+ </dict>
72
+ </dict>
73
+ <dict>
74
+ <key>UTTypeIdentifier</key>
75
+ <string>org.nema.dicom</string>
76
+ <key>UTTypeDescription</key>
77
+ <string>DICOM Image</string>
78
+ <key>UTTypeConformsTo</key>
79
+ <array>
80
+ <string>public.data</string>
81
+ <string>public.image</string>
82
+ </array>
83
+ <key>UTTypeTagSpecification</key>
84
+ <dict>
85
+ <key>public.filename-extension</key>
86
+ <array>
87
+ <string>dcm</string>
88
+ <string>dicom</string>
89
+ </array>
90
+ <key>public.mime-type</key>
91
+ <array>
92
+ <string>application/dicom</string>
93
+ </array>
94
+ </dict>
95
+ </dict>
96
+ </array>
97
+ <key>CFBundleDocumentTypes</key>
98
+ <array>
99
+ <dict>
100
+ <key>CFBundleTypeRole</key>
101
+ <string>Viewer</string>
102
+ <key>CFBundleTypeExtensions</key>
103
+ <array>
104
+ <string>dat</string>
105
+ </array>
106
+ <key>CFBundleTypeIconFile</key>
107
+ <string>Monochrome.icns</string>
108
+ <key>CFBundleTypeMIMETypes</key>
109
+ <array>
110
+ <string>application/octet-stream</string>
111
+ </array>
112
+ <key>CFBundleTypeName</key>
113
+ <string>Binary File</string>
114
+ <key>CFBundleTypeUTIs</key>
115
+ <array>
116
+ <string>com.mpids.bmp.multirecorder.raw-data</string>
117
+ </array>
118
+ <key>LSHandlerRank</key><string>Default</string>
119
+ </dict>
120
+ <dict>
121
+ <key>CFBundleTypeRole</key>
122
+ <string>Viewer</string>
123
+ <key>CFBundleTypeExtensions</key>
124
+ <array>
125
+ <string>npy</string>
126
+ </array>
127
+ <key>CFBundleTypeIconFile</key>
128
+ <string>npy-logo.icns</string>
129
+ <key>CFBundleTypeMIMETypes</key>
130
+ <array>
131
+ <string>application/x-numpy-data</string>
132
+ </array>
133
+ <key>CFBundleTypeName</key>
134
+ <string>NumPy data file</string>
135
+ <key>CFBundleTypeUTIs</key>
136
+ <array>
137
+ <string>org.numpy.raw-data</string>
138
+ </array>
139
+ <key>LSHandlerRank</key><string>Default</string>
140
+ </dict>
141
+ <dict>
142
+ <key>CFBundleTypeRole</key>
143
+ <string>Viewer</string>
144
+ <key>CFBundleTypeExtensions</key>
145
+ <array>
146
+ <string>tiff</string>
147
+ <string>tif</string>
148
+ <string>TIFF</string>
149
+ <string>TIF</string>
150
+ </array>
151
+ <key>CFBundleTypeIconFile</key>
152
+ <string>Monochrome.icns</string>
153
+ <key>CFBundleTypeMIMETypes</key>
154
+ <array>
155
+ <string>image/tiff</string>
156
+ </array>
157
+ <key>CFBundleTypeName</key>
158
+ <string>TIFF image</string>
159
+ <key>LSHandlerRank</key>
160
+ <string>Alternate</string>
161
+ <key>CFBundleTypeUTIs</key>
162
+ <array>
163
+ <string>public.tiff</string>
164
+ </array>
165
+ </dict>
166
+ <dict>
167
+ <key>CFBundleTypeRole</key>
168
+ <string>Viewer</string>
169
+ <key>CFBundleTypeExtensions</key>
170
+ <array>
171
+ <string>jpg</string>
172
+ <string>jpeg</string>
173
+ <string>JPG</string>
174
+ <string>JPEG</string>
175
+ </array>
176
+ <key>CFBundleTypeIconFile</key>
177
+ <string>Monochrome.icns</string>
178
+ <key>CFBundleTypeMIMETypes</key>
179
+ <array>
180
+ <string>image/jpeg</string>
181
+ </array>
182
+ <key>CFBundleTypeName</key>
183
+ <string>JPEG image</string>
184
+ <key>LSHandlerRank</key>
185
+ <string>Alternate</string>
186
+ <key>CFBundleTypeUTIs</key>
187
+ <array>
188
+ <string>public.jpeg</string>
189
+ </array>
190
+ </dict>
191
+ <dict>
192
+ <key>CFBundleTypeRole</key>
193
+ <string>Viewer</string>
194
+ <key>CFBundleTypeExtensions</key>
195
+ <array>
196
+ <string>png</string>
197
+ <string>PNG</string>
198
+ </array>
199
+ <key>CFBundleTypeIconFile</key>
200
+ <string>Monochrome.icns</string>
201
+ <key>CFBundleTypeMIMETypes</key>
202
+ <array>
203
+ <string>image/png</string>
204
+ </array>
205
+ <key>CFBundleTypeName</key>
206
+ <string>PNG image</string>
207
+ <key>LSHandlerRank</key>
208
+ <string>Alternate</string>
209
+ <key>CFBundleTypeUTIs</key>
210
+ <array>
211
+ <string>public.png</string>
212
+ </array>
213
+ </dict>
214
+ <dict>
215
+ <key>CFBundleTypeRole</key>
216
+ <string>Viewer</string>
217
+ <key>CFBundleTypeExtensions</key>
218
+ <array>
219
+ <string>dcm</string>
220
+ </array>
221
+ <key>CFBundleTypeIconFile</key>
222
+ <string>Monochrome.icns</string>
223
+ <key>CFBundleTypeMIMETypes</key>
224
+ <array>
225
+ <string>application/dicom</string>
226
+ <string>image/dicom</string>
227
+ </array>
228
+ <key>CFBundleTypeName</key>
229
+ <string>DICOM Image</string>
230
+ <key>LSItemContentTypes</key>
231
+ <array>
232
+ <string>org.nema.dicom</string>
233
+ </array>
234
+ <key>LSHandlerRank</key>
235
+ <string>Default</string>
236
+ </dict>
237
+ </array>
238
+ </dict>
239
+ </plist>
@@ -0,0 +1,90 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: fbs
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ from typing import Any
8
+ np = import_numpy()
9
+
10
+ class Array3DataChunkf(object):
11
+ __slots__ = ['_tab']
12
+
13
+ @classmethod
14
+ def GetRootAs(cls, buf, offset: int = 0):
15
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
16
+ x = Array3DataChunkf()
17
+ x.Init(buf, n + offset)
18
+ return x
19
+
20
+ @classmethod
21
+ def GetRootAsArray3DataChunkf(cls, buf, offset=0):
22
+ """This method is deprecated. Please switch to GetRootAs."""
23
+ return cls.GetRootAs(buf, offset)
24
+ # Array3DataChunkf
25
+ def Init(self, buf: bytes, pos: int):
26
+ self._tab = flatbuffers.table.Table(buf, pos)
27
+
28
+ # Array3DataChunkf
29
+ def Startidx(self):
30
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
31
+ if o != 0:
32
+ return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
33
+ return 0
34
+
35
+ # Array3DataChunkf
36
+ def Data(self, j: int):
37
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
38
+ if o != 0:
39
+ a = self._tab.Vector(o)
40
+ return self._tab.Get(flatbuffers.number_types.Float32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
41
+ return 0
42
+
43
+ # Array3DataChunkf
44
+ def DataAsNumpy(self):
45
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
46
+ if o != 0:
47
+ return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Float32Flags, o)
48
+ return 0
49
+
50
+ # Array3DataChunkf
51
+ def DataLength(self) -> int:
52
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
53
+ if o != 0:
54
+ return self._tab.VectorLen(o)
55
+ return 0
56
+
57
+ # Array3DataChunkf
58
+ def DataIsNone(self) -> bool:
59
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
60
+ return o == 0
61
+
62
+ def Array3DataChunkfStart(builder: flatbuffers.Builder):
63
+ builder.StartObject(2)
64
+
65
+ def Start(builder: flatbuffers.Builder):
66
+ Array3DataChunkfStart(builder)
67
+
68
+ def Array3DataChunkfAddStartidx(builder: flatbuffers.Builder, startidx: int):
69
+ builder.PrependUint64Slot(0, startidx, 0)
70
+
71
+ def AddStartidx(builder: flatbuffers.Builder, startidx: int):
72
+ Array3DataChunkfAddStartidx(builder, startidx)
73
+
74
+ def Array3DataChunkfAddData(builder: flatbuffers.Builder, data: int):
75
+ builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0)
76
+
77
+ def AddData(builder: flatbuffers.Builder, data: int):
78
+ Array3DataChunkfAddData(builder, data)
79
+
80
+ def Array3DataChunkfStartDataVector(builder, numElems: int) -> int:
81
+ return builder.StartVector(4, numElems, 4)
82
+
83
+ def StartDataVector(builder, numElems: int) -> int:
84
+ return Array3DataChunkfStartDataVector(builder, numElems)
85
+
86
+ def Array3DataChunkfEnd(builder: flatbuffers.Builder) -> int:
87
+ return builder.EndObject()
88
+
89
+ def End(builder: flatbuffers.Builder) -> int:
90
+ return Array3DataChunkfEnd(builder)
@@ -0,0 +1,90 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: fbs
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ from typing import Any
8
+ np = import_numpy()
9
+
10
+ class Array3DataChunku16(object):
11
+ __slots__ = ['_tab']
12
+
13
+ @classmethod
14
+ def GetRootAs(cls, buf, offset: int = 0):
15
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
16
+ x = Array3DataChunku16()
17
+ x.Init(buf, n + offset)
18
+ return x
19
+
20
+ @classmethod
21
+ def GetRootAsArray3DataChunku16(cls, buf, offset=0):
22
+ """This method is deprecated. Please switch to GetRootAs."""
23
+ return cls.GetRootAs(buf, offset)
24
+ # Array3DataChunku16
25
+ def Init(self, buf: bytes, pos: int):
26
+ self._tab = flatbuffers.table.Table(buf, pos)
27
+
28
+ # Array3DataChunku16
29
+ def Startidx(self):
30
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
31
+ if o != 0:
32
+ return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
33
+ return 0
34
+
35
+ # Array3DataChunku16
36
+ def Data(self, j: int):
37
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
38
+ if o != 0:
39
+ a = self._tab.Vector(o)
40
+ return self._tab.Get(flatbuffers.number_types.Uint16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2))
41
+ return 0
42
+
43
+ # Array3DataChunku16
44
+ def DataAsNumpy(self):
45
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
46
+ if o != 0:
47
+ return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint16Flags, o)
48
+ return 0
49
+
50
+ # Array3DataChunku16
51
+ def DataLength(self) -> int:
52
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
53
+ if o != 0:
54
+ return self._tab.VectorLen(o)
55
+ return 0
56
+
57
+ # Array3DataChunku16
58
+ def DataIsNone(self) -> bool:
59
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
60
+ return o == 0
61
+
62
+ def Array3DataChunku16Start(builder: flatbuffers.Builder):
63
+ builder.StartObject(2)
64
+
65
+ def Start(builder: flatbuffers.Builder):
66
+ Array3DataChunku16Start(builder)
67
+
68
+ def Array3DataChunku16AddStartidx(builder: flatbuffers.Builder, startidx: int):
69
+ builder.PrependUint64Slot(0, startidx, 0)
70
+
71
+ def AddStartidx(builder: flatbuffers.Builder, startidx: int):
72
+ Array3DataChunku16AddStartidx(builder, startidx)
73
+
74
+ def Array3DataChunku16AddData(builder: flatbuffers.Builder, data: int):
75
+ builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0)
76
+
77
+ def AddData(builder: flatbuffers.Builder, data: int):
78
+ Array3DataChunku16AddData(builder, data)
79
+
80
+ def Array3DataChunku16StartDataVector(builder, numElems: int) -> int:
81
+ return builder.StartVector(2, numElems, 2)
82
+
83
+ def StartDataVector(builder, numElems: int) -> int:
84
+ return Array3DataChunku16StartDataVector(builder, numElems)
85
+
86
+ def Array3DataChunku16End(builder: flatbuffers.Builder) -> int:
87
+ return builder.EndObject()
88
+
89
+ def End(builder: flatbuffers.Builder) -> int:
90
+ return Array3DataChunku16End(builder)
@@ -0,0 +1,90 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: fbs
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ from typing import Any
8
+ np = import_numpy()
9
+
10
+ class Array3DataChunku8(object):
11
+ __slots__ = ['_tab']
12
+
13
+ @classmethod
14
+ def GetRootAs(cls, buf, offset: int = 0):
15
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
16
+ x = Array3DataChunku8()
17
+ x.Init(buf, n + offset)
18
+ return x
19
+
20
+ @classmethod
21
+ def GetRootAsArray3DataChunku8(cls, buf, offset=0):
22
+ """This method is deprecated. Please switch to GetRootAs."""
23
+ return cls.GetRootAs(buf, offset)
24
+ # Array3DataChunku8
25
+ def Init(self, buf: bytes, pos: int):
26
+ self._tab = flatbuffers.table.Table(buf, pos)
27
+
28
+ # Array3DataChunku8
29
+ def Startidx(self):
30
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
31
+ if o != 0:
32
+ return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
33
+ return 0
34
+
35
+ # Array3DataChunku8
36
+ def Data(self, j: int):
37
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
38
+ if o != 0:
39
+ a = self._tab.Vector(o)
40
+ return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
41
+ return 0
42
+
43
+ # Array3DataChunku8
44
+ def DataAsNumpy(self):
45
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
46
+ if o != 0:
47
+ return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
48
+ return 0
49
+
50
+ # Array3DataChunku8
51
+ def DataLength(self) -> int:
52
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
53
+ if o != 0:
54
+ return self._tab.VectorLen(o)
55
+ return 0
56
+
57
+ # Array3DataChunku8
58
+ def DataIsNone(self) -> bool:
59
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
60
+ return o == 0
61
+
62
+ def Array3DataChunku8Start(builder: flatbuffers.Builder):
63
+ builder.StartObject(2)
64
+
65
+ def Start(builder: flatbuffers.Builder):
66
+ Array3DataChunku8Start(builder)
67
+
68
+ def Array3DataChunku8AddStartidx(builder: flatbuffers.Builder, startidx: int):
69
+ builder.PrependUint64Slot(0, startidx, 0)
70
+
71
+ def AddStartidx(builder: flatbuffers.Builder, startidx: int):
72
+ Array3DataChunku8AddStartidx(builder, startidx)
73
+
74
+ def Array3DataChunku8AddData(builder: flatbuffers.Builder, data: int):
75
+ builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0)
76
+
77
+ def AddData(builder: flatbuffers.Builder, data: int):
78
+ Array3DataChunku8AddData(builder, data)
79
+
80
+ def Array3DataChunku8StartDataVector(builder, numElems: int) -> int:
81
+ return builder.StartVector(1, numElems, 1)
82
+
83
+ def StartDataVector(builder, numElems: int) -> int:
84
+ return Array3DataChunku8StartDataVector(builder, numElems)
85
+
86
+ def Array3DataChunku8End(builder: flatbuffers.Builder) -> int:
87
+ return builder.EndObject()
88
+
89
+ def End(builder: flatbuffers.Builder) -> int:
90
+ return Array3DataChunku8End(builder)