f3d 2.5.0__cp310-cp310-win_amd64.whl → 3.0.0__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of f3d might be problematic. Click here for more details.

f3d/__init__.py CHANGED
@@ -2,10 +2,11 @@
2
2
  # Refer to python/__init__.py.in source file
3
3
 
4
4
  import os
5
- import sys
6
5
  import re
6
+ import sys
7
7
  import warnings
8
8
  from pathlib import Path
9
+ from typing import Any, Iterable, Mapping, Union
9
10
 
10
11
  F3D_ABSOLUTE_DLLS = [
11
12
  #
@@ -27,50 +28,43 @@ from .pyf3d import *
27
28
  # Automatically load plugins for the user
28
29
  Engine.autoload_plugins()
29
30
 
30
- # TODO: Delete this in 3.0, it's there for retrocompatibility with old class naming
31
- engine = Engine
32
- options = Options
33
- loader = Loader
34
- image = Image
35
- interactor = Interactor
36
- window = Window
37
- camera = Camera
38
- camera_state_t = CameraState
39
- utils = Utils
40
-
41
- __version__ = "2.5.0"
31
+ __version__ = "3.0.0"
42
32
 
43
33
 
44
34
  ################################################################################
45
35
  # monkey patch `options.update`
46
36
 
47
37
 
48
- def f3d_options_update(self, arg):
38
+ def _f3d_options_update(
39
+ self, arg: Union[Mapping[str, Any], Iterable[tuple[str, Any]]]
40
+ ) -> None:
49
41
  try:
50
42
  for k, v in arg.items():
51
43
  self[k] = v
52
44
  return
53
- except AttributeError:
45
+ except AttributeError: # `arg` doesn't have `.items()`
54
46
  pass
55
47
 
56
48
  try:
57
49
  for k, v in arg:
58
50
  self[k] = v
59
51
  return
60
- except AttributeError:
52
+ except TypeError: # `arg` isn't iterable
53
+ pass
54
+ except ValueError: # `arg` isn't iterable of pairs
61
55
  pass
62
56
 
63
- raise ValueError(f"cannot update {self} from {args}")
57
+ raise ValueError(f"cannot update {self} from {arg}")
64
58
 
65
59
 
66
- Options.update = f3d_options_update
60
+ Options.update = _f3d_options_update
67
61
 
68
62
 
69
63
  ################################################################################
70
64
  # add deprecated warnings
71
65
 
72
66
 
73
- def deprecated_decorator(f, reason):
67
+ def _deprecated_decorator(f, reason):
74
68
  def g(*args, **kwargs):
75
69
  warnings.warn(reason, DeprecationWarning, 2)
76
70
  return f(*args, **kwargs)
@@ -78,14 +72,15 @@ def deprecated_decorator(f, reason):
78
72
  return g
79
73
 
80
74
 
81
- def add_deprecation_warnings():
75
+ def _add_deprecation_warnings():
82
76
  for f3d_class in (
83
77
  Camera,
84
- Loader,
78
+ Scene,
85
79
  Options,
86
80
  Interactor,
87
81
  Engine,
88
82
  Window,
83
+ Image,
89
84
  ):
90
85
  for name, member in f3d_class.__dict__.items():
91
86
  if callable(member) and member.__doc__:
@@ -93,7 +88,7 @@ def add_deprecation_warnings():
93
88
  if m:
94
89
  reason = m.group(1) or ""
95
90
  msg = f"{f3d_class.__qualname__}.{name} is deprecated{reason}"
96
- setattr(f3d_class, name, deprecated_decorator(member, msg))
91
+ setattr(f3d_class, name, _deprecated_decorator(member, msg))
97
92
 
98
93
 
99
- add_deprecation_warnings()
94
+ _add_deprecation_warnings()
f3d/__init__.pyi ADDED
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations
2
+ from f3d.pyf3d import Camera
3
+ from f3d.pyf3d import CameraState
4
+ from f3d.pyf3d import Engine
5
+ from f3d.pyf3d import Image
6
+ from f3d.pyf3d import InteractionBind
7
+ from f3d.pyf3d import Interactor
8
+ from f3d.pyf3d import LibInformation
9
+ from f3d.pyf3d import Log
10
+ from f3d.pyf3d import Mesh
11
+ from f3d.pyf3d import Options
12
+ from f3d.pyf3d import ReaderInformation
13
+ from f3d.pyf3d import Scene
14
+ from f3d.pyf3d import Utils
15
+ from f3d.pyf3d import Window
16
+ import os as os
17
+ import pathlib
18
+ from pathlib import Path
19
+ import re as re
20
+ import sys as sys
21
+ import warnings as warnings
22
+ from . import pyf3d
23
+ __all__ = ['Camera', 'CameraState', 'Engine', 'F3D_ABSOLUTE_DLLS', 'F3D_RELATIVE_DLLS', 'Image', 'InteractionBind', 'Interactor', 'LibInformation', 'Log', 'Mesh', 'Options', 'Path', 'ReaderInformation', 'Scene', 'Utils', 'Window', 'abs_path', 'os', 'pyf3d', 're', 'root', 'sys', 'warnings']
24
+ def _add_deprecation_warnings():
25
+ ...
26
+ def _deprecated_decorator(f, reason):
27
+ ...
28
+ def _f3d_options_update(self, arg: typing.Union[typing.Mapping[str, typing.Any], typing.Iterable[tuple[str, typing.Any]]]) -> None:
29
+ ...
30
+ F3D_ABSOLUTE_DLLS: list = ['D:/a/f3d-superbuild/f3d-superbuild/fsbb/install/bin', 'D:/a/f3d-superbuild/f3d-superbuild/fsbb/install/lib', 'C:/Users/runneradmin/AppData/Local/Temp/tmpkv1xvk3o/build/bin']
31
+ F3D_RELATIVE_DLLS: list = list()
32
+ __version__: str = '3.0.0'
33
+ abs_path: str = 'C:/Users/runneradmin/AppData/Local/Temp/tmpkv1xvk3o/build/bin'
34
+ root: pathlib.WindowsPath # value = WindowsPath('C:/Users/runneradmin/AppData/Local/Temp/tmpkv1xvk3o/build/f3d')
f3d/bin/f3d.dll CHANGED
Binary file
f3d/bin/vcruntime140.dll CHANGED
Binary file
f3d/bin/zlib.dll CHANGED
Binary file
Binary file
f3d/pyf3d.pyi ADDED
@@ -0,0 +1,713 @@
1
+ """
2
+ f3d library bindings
3
+ """
4
+ from __future__ import annotations
5
+ import os
6
+ import typing
7
+ __all__ = ['Camera', 'CameraState', 'Engine', 'Image', 'InteractionBind', 'Interactor', 'LibInformation', 'Log', 'Mesh', 'Options', 'ReaderInformation', 'Scene', 'Utils', 'Window']
8
+ class Camera:
9
+ focal_point: tuple[float, float, float]
10
+ position: tuple[float, float, float]
11
+ state: CameraState
12
+ view_angle: float
13
+ view_up: tuple[float, float, float]
14
+ def azimuth(self, arg0: float) -> Camera:
15
+ ...
16
+ def dolly(self, arg0: float) -> Camera:
17
+ ...
18
+ def elevation(self, arg0: float) -> Camera:
19
+ ...
20
+ def pan(self, right: float, up: float, forward: float = 0.0) -> Camera:
21
+ ...
22
+ def pitch(self, arg0: float) -> Camera:
23
+ ...
24
+ def reset_to_bounds(self, zoom_factor: float = 0.9) -> Camera:
25
+ ...
26
+ def reset_to_default(self) -> Camera:
27
+ ...
28
+ def roll(self, arg0: float) -> Camera:
29
+ ...
30
+ def set_current_as_default(self) -> Camera:
31
+ ...
32
+ def yaw(self, arg0: float) -> Camera:
33
+ ...
34
+ def zoom(self, arg0: float) -> Camera:
35
+ ...
36
+ class CameraState:
37
+ focal_point: tuple[float, float, float]
38
+ position: tuple[float, float, float]
39
+ view_angle: float
40
+ view_up: tuple[float, float, float]
41
+ @typing.overload
42
+ def __init__(self) -> None:
43
+ ...
44
+ @typing.overload
45
+ def __init__(self, position: tuple[float, float, float], focal_point: tuple[float, float, float], view_up: tuple[float, float, float], view_angle: float) -> None:
46
+ ...
47
+ class Engine:
48
+ options: Options
49
+ @staticmethod
50
+ def autoload_plugins() -> None:
51
+ """
52
+ Automatically load internal plugins
53
+ """
54
+ @staticmethod
55
+ def create(offscreen: bool = False) -> Engine:
56
+ """
57
+ Create an engine with a automatic window
58
+ """
59
+ @staticmethod
60
+ def create_egl() -> Engine:
61
+ """
62
+ Create an engine with an EGL window (Windows/Linux only)
63
+ """
64
+ @staticmethod
65
+ def create_external_cocoa() -> Engine:
66
+ """
67
+ Create an engine with an existing COCOA context (macOS only)
68
+ """
69
+ @staticmethod
70
+ def create_external_egl() -> Engine:
71
+ """
72
+ Create an engine with an existing EGL context (Windows/Linux only)
73
+ """
74
+ @staticmethod
75
+ def create_external_glx() -> Engine:
76
+ """
77
+ Create an engine with an existing GLX context (Linux only)
78
+ """
79
+ @staticmethod
80
+ def create_external_osmesa() -> Engine:
81
+ """
82
+ Create an engine with an existing OSMesa context (Windows/Linux only)
83
+ """
84
+ @staticmethod
85
+ def create_external_wgl() -> Engine:
86
+ """
87
+ Create an engine with an existing WGL context (Windows only)
88
+ """
89
+ @staticmethod
90
+ def create_glx(arg0: bool) -> Engine:
91
+ """
92
+ Create an engine with an GLX window (Linux only)
93
+ """
94
+ @staticmethod
95
+ def create_none() -> Engine:
96
+ """
97
+ Create an engine with no window
98
+ """
99
+ @staticmethod
100
+ def create_osmesa() -> Engine:
101
+ """
102
+ Create an engine with an OSMesa window (Windows/Linux only)
103
+ """
104
+ @staticmethod
105
+ def create_wgl(arg0: bool) -> Engine:
106
+ """
107
+ Create an engine with an WGL window (Windows only)
108
+ """
109
+ @staticmethod
110
+ def get_lib_info() -> LibInformation:
111
+ ...
112
+ @staticmethod
113
+ def get_plugins_list(arg0: os.PathLike[str]) -> list[str]:
114
+ ...
115
+ @staticmethod
116
+ def get_readers_info() -> list[ReaderInformation]:
117
+ ...
118
+ @staticmethod
119
+ def get_rendering_backend_list() -> dict[str, bool]:
120
+ ...
121
+ @staticmethod
122
+ def load_plugin(arg0: str, arg1: list[os.PathLike[str]]) -> None:
123
+ """
124
+ Load a plugin
125
+ """
126
+ def set_cache_path(self, arg0: os.PathLike[str]) -> Engine:
127
+ """
128
+ Set the cache path directory
129
+ """
130
+ @property
131
+ def interactor(self) -> Interactor:
132
+ ...
133
+ @property
134
+ def scene(self) -> Scene:
135
+ ...
136
+ @property
137
+ def window(self) -> Window:
138
+ ...
139
+ class Image:
140
+ class ChannelType:
141
+ """
142
+ Members:
143
+
144
+ BYTE
145
+
146
+ SHORT
147
+
148
+ FLOAT
149
+ """
150
+ BYTE: typing.ClassVar[Image.ChannelType] # value = <ChannelType.BYTE: 0>
151
+ FLOAT: typing.ClassVar[Image.ChannelType] # value = <ChannelType.FLOAT: 2>
152
+ SHORT: typing.ClassVar[Image.ChannelType] # value = <ChannelType.SHORT: 1>
153
+ __members__: typing.ClassVar[dict[str, Image.ChannelType]] # value = {'BYTE': <ChannelType.BYTE: 0>, 'SHORT': <ChannelType.SHORT: 1>, 'FLOAT': <ChannelType.FLOAT: 2>}
154
+ def __eq__(self, other: typing.Any) -> bool:
155
+ ...
156
+ def __getstate__(self) -> int:
157
+ ...
158
+ def __hash__(self) -> int:
159
+ ...
160
+ def __index__(self) -> int:
161
+ ...
162
+ def __init__(self, value: int) -> None:
163
+ ...
164
+ def __int__(self) -> int:
165
+ ...
166
+ def __ne__(self, other: typing.Any) -> bool:
167
+ ...
168
+ def __repr__(self) -> str:
169
+ ...
170
+ def __setstate__(self, state: int) -> None:
171
+ ...
172
+ def __str__(self) -> str:
173
+ ...
174
+ @property
175
+ def name(self) -> str:
176
+ ...
177
+ @property
178
+ def value(self) -> int:
179
+ ...
180
+ class SaveFormat:
181
+ """
182
+ Members:
183
+
184
+ PNG
185
+
186
+ JPG
187
+
188
+ TIF
189
+
190
+ BMP
191
+ """
192
+ BMP: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.BMP: 3>
193
+ JPG: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.JPG: 1>
194
+ PNG: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.PNG: 0>
195
+ TIF: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.TIF: 2>
196
+ __members__: typing.ClassVar[dict[str, Image.SaveFormat]] # value = {'PNG': <SaveFormat.PNG: 0>, 'JPG': <SaveFormat.JPG: 1>, 'TIF': <SaveFormat.TIF: 2>, 'BMP': <SaveFormat.BMP: 3>}
197
+ def __eq__(self, other: typing.Any) -> bool:
198
+ ...
199
+ def __getstate__(self) -> int:
200
+ ...
201
+ def __hash__(self) -> int:
202
+ ...
203
+ def __index__(self) -> int:
204
+ ...
205
+ def __init__(self, value: int) -> None:
206
+ ...
207
+ def __int__(self) -> int:
208
+ ...
209
+ def __ne__(self, other: typing.Any) -> bool:
210
+ ...
211
+ def __repr__(self) -> str:
212
+ ...
213
+ def __setstate__(self, state: int) -> None:
214
+ ...
215
+ def __str__(self) -> str:
216
+ ...
217
+ @property
218
+ def name(self) -> str:
219
+ ...
220
+ @property
221
+ def value(self) -> int:
222
+ ...
223
+ BMP: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.BMP: 3>
224
+ BYTE: typing.ClassVar[Image.ChannelType] # value = <ChannelType.BYTE: 0>
225
+ FLOAT: typing.ClassVar[Image.ChannelType] # value = <ChannelType.FLOAT: 2>
226
+ JPG: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.JPG: 1>
227
+ PNG: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.PNG: 0>
228
+ SHORT: typing.ClassVar[Image.ChannelType] # value = <ChannelType.SHORT: 1>
229
+ TIF: typing.ClassVar[Image.SaveFormat] # value = <SaveFormat.TIF: 2>
230
+ __hash__: typing.ClassVar[None] = None
231
+ content: bytes
232
+ @staticmethod
233
+ def supported_formats() -> list[str]:
234
+ ...
235
+ def __eq__(self, arg0: Image) -> bool:
236
+ ...
237
+ @typing.overload
238
+ def __init__(self) -> None:
239
+ ...
240
+ @typing.overload
241
+ def __init__(self, arg0: os.PathLike[str]) -> None:
242
+ ...
243
+ @typing.overload
244
+ def __init__(self, arg0: int, arg1: int, arg2: int, arg3: Image.ChannelType) -> None:
245
+ ...
246
+ def __ne__(self, arg0: Image) -> bool:
247
+ ...
248
+ def _repr_png_(self) -> bytes:
249
+ ...
250
+ def all_metadata(self) -> list[str]:
251
+ ...
252
+ def compare(self, arg0: Image) -> float:
253
+ ...
254
+ def get_metadata(self, arg0: str) -> str:
255
+ ...
256
+ def normalized_pixel(self, arg0: tuple[int, int]) -> list[float]:
257
+ ...
258
+ def save(self, path: os.PathLike[str], format: Image.SaveFormat = Image.SaveFormat.PNG) -> Image:
259
+ ...
260
+ def save_buffer(self, format: Image.SaveFormat = Image.SaveFormat.PNG) -> bytes:
261
+ ...
262
+ def set_metadata(self, arg0: str, arg1: str) -> Image:
263
+ ...
264
+ def to_terminal_text(self) -> str:
265
+ ...
266
+ @property
267
+ def channel_count(self) -> int:
268
+ ...
269
+ @property
270
+ def channel_type(self) -> Image.ChannelType:
271
+ ...
272
+ @property
273
+ def channel_type_size(self) -> int:
274
+ ...
275
+ @property
276
+ def height(self) -> int:
277
+ ...
278
+ @property
279
+ def width(self) -> int:
280
+ ...
281
+ class InteractionBind:
282
+ class ModifierKeys:
283
+ """
284
+ Members:
285
+
286
+ ANY
287
+
288
+ NONE
289
+
290
+ CTRL
291
+
292
+ SHIFT
293
+
294
+ CTRL_SHIFT
295
+ """
296
+ ANY: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.ANY: 128>
297
+ CTRL: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.CTRL: 1>
298
+ CTRL_SHIFT: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.CTRL_SHIFT: 3>
299
+ NONE: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.NONE: 0>
300
+ SHIFT: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.SHIFT: 2>
301
+ __members__: typing.ClassVar[dict[str, InteractionBind.ModifierKeys]] # value = {'ANY': <ModifierKeys.ANY: 128>, 'NONE': <ModifierKeys.NONE: 0>, 'CTRL': <ModifierKeys.CTRL: 1>, 'SHIFT': <ModifierKeys.SHIFT: 2>, 'CTRL_SHIFT': <ModifierKeys.CTRL_SHIFT: 3>}
302
+ def __eq__(self, other: typing.Any) -> bool:
303
+ ...
304
+ def __getstate__(self) -> int:
305
+ ...
306
+ def __hash__(self) -> int:
307
+ ...
308
+ def __index__(self) -> int:
309
+ ...
310
+ def __init__(self, value: int) -> None:
311
+ ...
312
+ def __int__(self) -> int:
313
+ ...
314
+ def __ne__(self, other: typing.Any) -> bool:
315
+ ...
316
+ def __repr__(self) -> str:
317
+ ...
318
+ def __setstate__(self, state: int) -> None:
319
+ ...
320
+ def __str__(self) -> str:
321
+ ...
322
+ @property
323
+ def name(self) -> str:
324
+ ...
325
+ @property
326
+ def value(self) -> int:
327
+ ...
328
+ ANY: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.ANY: 128>
329
+ CTRL: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.CTRL: 1>
330
+ CTRL_SHIFT: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.CTRL_SHIFT: 3>
331
+ NONE: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.NONE: 0>
332
+ SHIFT: typing.ClassVar[InteractionBind.ModifierKeys] # value = <ModifierKeys.SHIFT: 2>
333
+ inter: str
334
+ mod: InteractionBind.ModifierKeys
335
+ def __init__(self, arg0: InteractionBind.ModifierKeys, arg1: str) -> None:
336
+ ...
337
+ def format(self) -> str:
338
+ ...
339
+ class Interactor:
340
+ @typing.overload
341
+ def add_binding(self, arg0: InteractionBind, arg1: str, arg2: str, arg3: typing.Callable[[], tuple[str, str]]) -> Interactor:
342
+ """
343
+ Add a binding command
344
+ """
345
+ @typing.overload
346
+ def add_binding(self, arg0: InteractionBind, arg1: list[str], arg2: str, arg3: typing.Callable[[], tuple[str, str]]) -> Interactor:
347
+ """
348
+ Add binding commands
349
+ """
350
+ def add_command(self, arg0: str, arg1: typing.Callable[[list[str]], None]) -> Interactor:
351
+ """
352
+ Add a command
353
+ """
354
+ def disable_camera_movement(self) -> Interactor:
355
+ """
356
+ Disable the camera interaction
357
+ """
358
+ def enable_camera_movement(self) -> Interactor:
359
+ """
360
+ Enable the camera interaction
361
+ """
362
+ def get_bind_groups(self) -> list[str]:
363
+ ...
364
+ def get_binding_documentation(self, arg0: InteractionBind) -> tuple[str, str]:
365
+ ...
366
+ def get_binds(self) -> list[InteractionBind]:
367
+ ...
368
+ def get_binds_for_group(self, arg0: str) -> list[InteractionBind]:
369
+ ...
370
+ def get_command_actions(self) -> list[str]:
371
+ """
372
+ Get all command actions
373
+ """
374
+ def init_bindings(self) -> Interactor:
375
+ """
376
+ Remove all bindings and add default bindings
377
+ """
378
+ def init_commands(self) -> Interactor:
379
+ """
380
+ Remove all commands and add all default command callbacks
381
+ """
382
+ def is_playing_animation(self) -> bool:
383
+ """
384
+ Returns True if the animation is currently started
385
+ """
386
+ def play_interaction(self, arg0: os.PathLike[str], arg1: float, arg2: typing.Callable[[], None]) -> bool:
387
+ """
388
+ Play an interaction file
389
+ """
390
+ def record_interaction(self, arg0: os.PathLike[str]) -> bool:
391
+ """
392
+ Record an interaction file
393
+ """
394
+ def remove_binding(self, arg0: InteractionBind) -> Interactor:
395
+ """
396
+ Remove interaction commands
397
+ """
398
+ def remove_command(self, arg0: str) -> Interactor:
399
+ """
400
+ Remove a command
401
+ """
402
+ def request_render(self) -> Interactor:
403
+ """
404
+ Request a render on the next event loop
405
+ """
406
+ def start(self, delta_time: float = 0.03333333333333333, user_callback: typing.Callable[[], None] = None) -> Interactor:
407
+ """
408
+ Start the interactor and the event loop
409
+ """
410
+ def start_animation(self) -> Interactor:
411
+ """
412
+ Start the animation
413
+ """
414
+ def stop(self) -> Interactor:
415
+ """
416
+ Stop the interactor and the event loop
417
+ """
418
+ def stop_animation(self) -> Interactor:
419
+ """
420
+ Stop the animation
421
+ """
422
+ def toggle_animation(self) -> Interactor:
423
+ """
424
+ Toggle the animation
425
+ """
426
+ def trigger_command(self, arg0: str) -> bool:
427
+ """
428
+ Trigger a command
429
+ """
430
+ class LibInformation:
431
+ @property
432
+ def build_date(self) -> str:
433
+ ...
434
+ @property
435
+ def build_system(self) -> str:
436
+ ...
437
+ @property
438
+ def compiler(self) -> str:
439
+ ...
440
+ @property
441
+ def copyrights(self) -> list[str]:
442
+ ...
443
+ @property
444
+ def license(self) -> str:
445
+ ...
446
+ @property
447
+ def modules(self) -> dict[str, bool]:
448
+ ...
449
+ @property
450
+ def version(self) -> str:
451
+ ...
452
+ @property
453
+ def version_full(self) -> str:
454
+ ...
455
+ @property
456
+ def vtk_version(self) -> str:
457
+ ...
458
+ class Log:
459
+ class VerboseLevel:
460
+ """
461
+ Members:
462
+
463
+ DEBUG
464
+
465
+ INFO
466
+
467
+ WARN
468
+
469
+ ERROR
470
+
471
+ QUIET
472
+ """
473
+ DEBUG: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.DEBUG: 0>
474
+ ERROR: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.ERROR: 3>
475
+ INFO: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.INFO: 1>
476
+ QUIET: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.QUIET: 4>
477
+ WARN: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.WARN: 2>
478
+ __members__: typing.ClassVar[dict[str, Log.VerboseLevel]] # value = {'DEBUG': <VerboseLevel.DEBUG: 0>, 'INFO': <VerboseLevel.INFO: 1>, 'WARN': <VerboseLevel.WARN: 2>, 'ERROR': <VerboseLevel.ERROR: 3>, 'QUIET': <VerboseLevel.QUIET: 4>}
479
+ def __eq__(self, other: typing.Any) -> bool:
480
+ ...
481
+ def __getstate__(self) -> int:
482
+ ...
483
+ def __hash__(self) -> int:
484
+ ...
485
+ def __index__(self) -> int:
486
+ ...
487
+ def __init__(self, value: int) -> None:
488
+ ...
489
+ def __int__(self) -> int:
490
+ ...
491
+ def __ne__(self, other: typing.Any) -> bool:
492
+ ...
493
+ def __repr__(self) -> str:
494
+ ...
495
+ def __setstate__(self, state: int) -> None:
496
+ ...
497
+ def __str__(self) -> str:
498
+ ...
499
+ @property
500
+ def name(self) -> str:
501
+ ...
502
+ @property
503
+ def value(self) -> int:
504
+ ...
505
+ DEBUG: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.DEBUG: 0>
506
+ ERROR: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.ERROR: 3>
507
+ INFO: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.INFO: 1>
508
+ QUIET: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.QUIET: 4>
509
+ WARN: typing.ClassVar[Log.VerboseLevel] # value = <VerboseLevel.WARN: 2>
510
+ @staticmethod
511
+ def print(arg0: Log.VerboseLevel, arg1: str) -> None:
512
+ ...
513
+ @staticmethod
514
+ def set_use_coloring(arg0: bool) -> None:
515
+ ...
516
+ @staticmethod
517
+ def set_verbose_level(level: Log.VerboseLevel, force_std_err: bool = False) -> None:
518
+ ...
519
+ class Mesh:
520
+ face_indices: list[int]
521
+ face_sides: list[int]
522
+ normals: list[float]
523
+ points: list[float]
524
+ texture_coordinates: list[float]
525
+ @typing.overload
526
+ def __init__(self) -> None:
527
+ ...
528
+ @typing.overload
529
+ def __init__(self, points: list[float], normals: list[float] = [], texture_coordinates: list[float] = [], face_sides: list[int] = [], face_indices: list[int] = []) -> None:
530
+ ...
531
+ class Options:
532
+ def __getitem__(self, arg0: str) -> bool | int | float | str | list[float]:
533
+ ...
534
+ def __init__(self) -> None:
535
+ ...
536
+ def __iter__(self) -> typing.Iterator[typing.Any]:
537
+ ...
538
+ def __len__(self) -> int:
539
+ ...
540
+ def __setitem__(self, arg0: str, arg1: bool | int | float | str | list[float]) -> None:
541
+ ...
542
+ def copy(self, arg0: Options, arg1: str) -> Options:
543
+ ...
544
+ def get_closest_option(self, arg0: str) -> tuple[str, int]:
545
+ ...
546
+ def is_same(self, arg0: Options, arg1: str) -> bool:
547
+ ...
548
+ def keys(self) -> list[str]:
549
+ ...
550
+ def toggle(self, arg0: str) -> Options:
551
+ ...
552
+ def update(self, arg: typing.Union[typing.Mapping[str, typing.Any], typing.Iterable[tuple[str, typing.Any]]]) -> None:
553
+ ...
554
+ class ReaderInformation:
555
+ @property
556
+ def description(self) -> str:
557
+ ...
558
+ @property
559
+ def extensions(self) -> list[str]:
560
+ ...
561
+ @property
562
+ def has_geometry_reader(self) -> bool:
563
+ ...
564
+ @property
565
+ def has_scene_reader(self) -> bool:
566
+ ...
567
+ @property
568
+ def mime_types(self) -> list[str]:
569
+ ...
570
+ @property
571
+ def name(self) -> str:
572
+ ...
573
+ @property
574
+ def plugin_name(self) -> str:
575
+ ...
576
+ class Scene:
577
+ @typing.overload
578
+ def add(self, file_path: os.PathLike[str]) -> Scene:
579
+ """
580
+ Add a file the scene
581
+ """
582
+ @typing.overload
583
+ def add(self, file_path_vector: list[os.PathLike[str]]) -> Scene:
584
+ """
585
+ Add multiple filepaths to the scene
586
+ """
587
+ @typing.overload
588
+ def add(self, file_name_vector: list[str]) -> Scene:
589
+ """
590
+ Add multiple filenames to the scene
591
+ """
592
+ @typing.overload
593
+ def add(self, mesh: Mesh) -> Scene:
594
+ """
595
+ Add a surfacic mesh from memory into the scene
596
+ """
597
+ def animation_time_range(self) -> tuple[float, float]:
598
+ ...
599
+ def clear(self) -> Scene:
600
+ ...
601
+ def load_animation_time(self, arg0: float) -> Scene:
602
+ ...
603
+ def supports(self, arg0: os.PathLike[str]) -> bool:
604
+ ...
605
+ class Utils:
606
+ @staticmethod
607
+ def collapse_path(arg0: os.PathLike[str], arg1: os.PathLike[str]) -> os.PathLike[str]:
608
+ ...
609
+ @staticmethod
610
+ def text_distance(arg0: str, arg1: str) -> int:
611
+ ...
612
+ class Window:
613
+ class Type:
614
+ """
615
+ Members:
616
+
617
+ NONE
618
+
619
+ EXTERNAL
620
+
621
+ GLX
622
+
623
+ WGL
624
+
625
+ COCOA
626
+
627
+ EGL
628
+
629
+ OSMESA
630
+
631
+ UNKNOWN
632
+ """
633
+ COCOA: typing.ClassVar[Window.Type] # value = <Type.COCOA: 4>
634
+ EGL: typing.ClassVar[Window.Type] # value = <Type.EGL: 5>
635
+ EXTERNAL: typing.ClassVar[Window.Type] # value = <Type.EXTERNAL: 1>
636
+ GLX: typing.ClassVar[Window.Type] # value = <Type.GLX: 2>
637
+ NONE: typing.ClassVar[Window.Type] # value = <Type.NONE: 0>
638
+ OSMESA: typing.ClassVar[Window.Type] # value = <Type.OSMESA: 6>
639
+ UNKNOWN: typing.ClassVar[Window.Type] # value = <Type.UNKNOWN: 8>
640
+ WGL: typing.ClassVar[Window.Type] # value = <Type.WGL: 3>
641
+ __members__: typing.ClassVar[dict[str, Window.Type]] # value = {'NONE': <Type.NONE: 0>, 'EXTERNAL': <Type.EXTERNAL: 1>, 'GLX': <Type.GLX: 2>, 'WGL': <Type.WGL: 3>, 'COCOA': <Type.COCOA: 4>, 'EGL': <Type.EGL: 5>, 'OSMESA': <Type.OSMESA: 6>, 'UNKNOWN': <Type.UNKNOWN: 8>}
642
+ def __eq__(self, other: typing.Any) -> bool:
643
+ ...
644
+ def __getstate__(self) -> int:
645
+ ...
646
+ def __hash__(self) -> int:
647
+ ...
648
+ def __index__(self) -> int:
649
+ ...
650
+ def __init__(self, value: int) -> None:
651
+ ...
652
+ def __int__(self) -> int:
653
+ ...
654
+ def __ne__(self, other: typing.Any) -> bool:
655
+ ...
656
+ def __repr__(self) -> str:
657
+ ...
658
+ def __setstate__(self, state: int) -> None:
659
+ ...
660
+ def __str__(self) -> str:
661
+ ...
662
+ @property
663
+ def name(self) -> str:
664
+ ...
665
+ @property
666
+ def value(self) -> int:
667
+ ...
668
+ COCOA: typing.ClassVar[Window.Type] # value = <Type.COCOA: 4>
669
+ EGL: typing.ClassVar[Window.Type] # value = <Type.EGL: 5>
670
+ EXTERNAL: typing.ClassVar[Window.Type] # value = <Type.EXTERNAL: 1>
671
+ GLX: typing.ClassVar[Window.Type] # value = <Type.GLX: 2>
672
+ NONE: typing.ClassVar[Window.Type] # value = <Type.NONE: 0>
673
+ OSMESA: typing.ClassVar[Window.Type] # value = <Type.OSMESA: 6>
674
+ UNKNOWN: typing.ClassVar[Window.Type] # value = <Type.UNKNOWN: 8>
675
+ WGL: typing.ClassVar[Window.Type] # value = <Type.WGL: 3>
676
+ height: int
677
+ size: tuple[int, int]
678
+ width: int
679
+ def get_display_from_world(self, arg0: tuple[float, float, float]) -> tuple[float, float, float]:
680
+ """
681
+ Get display coordinate point from world coordinate
682
+ """
683
+ def get_world_from_display(self, arg0: tuple[float, float, float]) -> tuple[float, float, float]:
684
+ """
685
+ Get world coordinate point from display coordinate
686
+ """
687
+ def render(self) -> bool:
688
+ """
689
+ Render the window
690
+ """
691
+ def render_to_image(self, no_background: bool = False) -> Image:
692
+ """
693
+ Render the window to an image
694
+ """
695
+ def set_icon(self, arg0: int, arg1: int) -> Window:
696
+ """
697
+ Set the icon of the window using a memory buffer representing a PNG file
698
+ """
699
+ def set_position(self, arg0: int, arg1: int) -> Window:
700
+ ...
701
+ def set_window_name(self, arg0: str) -> Window:
702
+ """
703
+ Set the window name
704
+ """
705
+ @property
706
+ def camera(self) -> Camera:
707
+ ...
708
+ @property
709
+ def offscreen(self) -> bool:
710
+ ...
711
+ @property
712
+ def type(self) -> Window.Type:
713
+ ...
@@ -1,5 +1,5 @@
1
1
  {
2
- "description" : "Assimp support (version 5.4.0)",
2
+ "description" : "Assimp support (version 5.4.3)",
3
3
  "name" : "assimp",
4
4
  "readers" :
5
5
  [
@@ -26,6 +26,14 @@
26
26
  "full_scene" : false,
27
27
  "mimetypes" : [ "application/vnd.brep" ],
28
28
  "name" : "BREP"
29
+ },
30
+ {
31
+ "description" : "Open CASCADE XBF",
32
+ "exclude_thumbnailer" : false,
33
+ "extensions" : [ "xbf" ],
34
+ "full_scene" : false,
35
+ "mimetypes" : [ "application/vnd.xbf" ],
36
+ "name" : "XBF"
29
37
  }
30
38
  ],
31
39
  "type" : "STATIC",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: f3d
3
- Version: 2.5.0
3
+ Version: 3.0.0
4
4
  Summary: F3D, a fast and minimalist 3D viewer
5
5
  Keywords: vtk,animations,fbx,step,stl,gltf,pbr,raytracing,rendering
6
6
  Author: Michael Migliore, Mathieu Westphal
@@ -19,7 +19,7 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
19
19
  Project-URL: Homepage, https://f3d.app
20
20
  Project-URL: Repository, https://github.com/f3d-app/f3d.git
21
21
  Project-URL: Changelog, https://github.com/f3d-app/f3d/blob/master/doc/CHANGELOG.md
22
- Requires-Python: >=3.8
22
+ Requires-Python: >=3.9
23
23
  Description-Content-Type: text/markdown
24
24
 
25
25
  [![CI](https://img.shields.io/github/actions/workflow/status/f3d-app/f3d/ci.yml?label=CI&logo=github)](https://github.com/f3d-app/f3d/actions/workflows/ci.yml) [![Packaging](https://img.shields.io/github/actions/workflow/status/f3d-app/f3d-superbuild/nightly.yml?label=Packaging&logo=github)](https://github.com/f3d-app/f3d-superbuild) [![codecov](https://codecov.io/gh/f3d-app/f3d/branch/master/graph/badge.svg?token=siwG82IXK7)](https://codecov.io/gh/f3d-app/f3d) [![Downloads](https://img.shields.io/github/downloads/f3d-app/f3d/total.svg)](https://github.com/f3d-app/f3d/releases) [![Sponsors](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/f3d-app) [![Discord](https://discordapp.com/api/guilds/1046005690809978911/widget.png?style=shield)](https://discord.f3d.app) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
@@ -33,7 +33,7 @@ F3D (pronounced `/fɛd/`) is a fast and minimalist 3D viewer desktop application
33
33
 
34
34
  It is fully controllable from the command line and support configuration files. It can provide thumbnails, support interactive hotkeys, drag&drop and integration into file managers.
35
35
 
36
- F3D also contains the libf3d, a simple library to render meshes, with C++ and Python Bindings, as well as experimental Java and Javascript bindings.
36
+ F3D also contains the libf3d, a simple library to render meshes, with a C++17 API, Python Bindings, and experimental Java and Javascript bindings.
37
37
 
38
38
  <img src="https://user-images.githubusercontent.com/3129530/194735416-3f386437-456c-4145-9b5e-6bb6451d7e9a.png" width="640">
39
39
 
@@ -55,24 +55,14 @@ If you need any help or want to discuss with other F3D users and developers, hea
55
55
 
56
56
  # Quickstart
57
57
 
58
- Open a file and visualize it interactively:
59
-
58
+ Open a file directly in F3D or from the command line by running:
60
59
  ```
61
60
  f3d /path/to/file.ext
62
- ```
63
-
64
- Open a file and save the rendering into an image file:
65
-
66
- ```
67
- f3d /path/to/file.ext --output=/path/to/img.png
68
- ```
61
+ ```
69
62
 
70
- Get help:
63
+ Optionally, append `--output=/path/to/img.png` to save the rendering into an image file.
71
64
 
72
- ```
73
- f3d --help
74
- man f3d # Linux only
75
- ```
65
+ See the [Quickstart Guide](doc/user/QUICKSTART.md) for more information about getting started with F3D.
76
66
 
77
67
  # Documentation
78
68
 
@@ -119,7 +109,7 @@ F3D as a community-driven, inclusive and beginner-friendly project. We love to s
119
109
 
120
110
  # Acknowledgments
121
111
 
122
- F3D was initially created by [Kitware SAS](https://www.kitware.eu/) and is relying on many awesome open source projects, including [VTK](https://vtk.org/), [OCCT](https://dev.opencascade.org/), [Assimp](https://www.assimp.org/), [Alembic](http://www.alembic.io/), [Draco](https://google.github.io/draco/), [OpenUSD](https://openusd.org/release/index.html), [OpenVDB](https://www.openvdb.org/) and [OSPRay](https://www.ospray.org/).
112
+ F3D was initially created by [Kitware SAS](https://www.kitware.eu/) and is relying on many awesome open source projects, including [VTK](https://vtk.org/), [OCCT](https://dev.opencascade.org/), [Assimp](https://www.assimp.org/), [Alembic](http://www.alembic.io/), [Draco](https://google.github.io/draco/), [OpenUSD](https://openusd.org/release/index.html), [OpenVDB](https://www.openvdb.org/), [OSPRay](https://www.ospray.org/) and [ImGui](https://github.com/ocornut/imgui/).
123
113
 
124
114
  # License
125
115
 
@@ -0,0 +1,18 @@
1
+ f3d/__init__.py,sha256=IOM89jiJy_2PewnpinOsxRnWnIfqtt1AbodnQXADUwk,2359
2
+ f3d/__init__.pyi,sha256=vRY91vJRulCqBGg0t7qgWhg0LRYa5ae1AXZegGtvlBc,1617
3
+ f3d/bin/f3d.dll,sha256=s8XRsvgT-wTKOTEVyxqM5TpAnEO1OiJPNP4bdjjj0eY,45559296
4
+ f3d/bin/vcruntime140.dll,sha256=2nLmZ3vRvNAcRTwZmKqhmur2ZZ9HdM9oSECdqCMqlbI,120432
5
+ f3d/bin/zlib.dll,sha256=9AD0fYyKsS2FNp3StD2GFbJEpZHXSf1D40sWw9xP5-s,90624
6
+ f3d/pyf3d.cp310-win_amd64.pyd,sha256=GktZ4jvd-y7n0shHKxloG5GRVALQUtuMHueaCM-8nTQ,444416
7
+ f3d/pyf3d.pyi,sha256=csVaE8f_V1a_tutHIQbgDGeHxJwhtsSjLpKkuhtl8XA,23779
8
+ f3d/share/f3d/plugins/alembic.json,sha256=NVQtyuR1lal_VH_I26KRBSBCmsfkqkEV1Bj6XI3uJl0,373
9
+ f3d/share/f3d/plugins/assimp.json,sha256=GqKaOghNOUrtiQOKpLeIzdSFo2V2Jb6l1K6UryFVQvo,1487
10
+ f3d/share/f3d/plugins/draco.json,sha256=hzBF8tw3JKAqjbLemSjDmznX9KKrAzGnTF1EwxKO4WM,629
11
+ f3d/share/f3d/plugins/exodus.json,sha256=EZBy7TcNwU36TqANuHPBpLCN9-y4KWecANCo8sKqF_Y,377
12
+ f3d/share/f3d/plugins/native.json,sha256=g-_Hx7TeSRmo8vYkJl4Mdh1tGAHRM1c_jfaKamtp6qg,4773
13
+ f3d/share/f3d/plugins/occt.json,sha256=_pvQ3iwAYf0qmcWBOKolAYSJcq7PKP5sWIP7rPevo0o,1121
14
+ f3d-3.0.0.dist-info/METADATA,sha256=IpZ8cdAih_gmfpNNqqLy4pCI0N3tgE8WlAbUmGZDkGM,7086
15
+ f3d-3.0.0.dist-info/WHEEL,sha256=yxQ6vqLV6BGCdqSh8_cFSPC6ooSNYEn3BaaiIZLFM6w,106
16
+ f3d-3.0.0.dist-info/licenses/LICENSE.md,sha256=iQPH5pY3-g7_35_kEdPo1N8f9jaWoMvYaVPpMZjtBAA,1602
17
+ f3d-3.0.0.dist-info/licenses/doc/THIRD_PARTY_LICENSES.md,sha256=SzJxIdNQrIeub-iOLyXmWsrDiOLk8aqGmW_b8U_sOoo,12594
18
+ f3d-3.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: scikit-build-core 0.9.8
2
+ Generator: scikit-build-core 0.10.7
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-win_amd64
5
5
 
@@ -0,0 +1,262 @@
1
+ # Third Party Copyrights and License within F3D application source
2
+
3
+ ## cxxopts.hpp:
4
+ ```
5
+ Copyright (c) 2014, 2015, 2016, 2017 Jarryd Beck
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
24
+ ```
25
+
26
+ ## json.hpp:
27
+ ```
28
+ __ _____ _____ _____
29
+ __| | __| | | | JSON for Modern C++
30
+ | | |__ | | | | | | version 3.10.5
31
+ |_____|_____|_____|_|___| https://github.com/nlohmann/json
32
+
33
+ Licensed under the MIT License <http://opensource.org/licenses/MIT>.
34
+ SPDX-License-Identifier: MIT
35
+ Copyright (c) 2013-2022 Niels Lohmann <http://nlohmann.me>.
36
+
37
+ Permission is hereby granted, free of charge, to any person obtaining a copy
38
+ of this software and associated documentation files (the "Software"), to deal
39
+ in the Software without restriction, including without limitation the rights
40
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
41
+ copies of the Software, and to permit persons to whom the Software is
42
+ furnished to do so, subject to the following conditions:
43
+
44
+ The above copyright notice and this permission notice shall be included in all
45
+ copies or substantial portions of the Software.
46
+
47
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
48
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
49
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
50
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
51
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
52
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
53
+ SOFTWARE.
54
+ ```
55
+
56
+ ## dmon.h:
57
+ ```
58
+ BSD 2-Clause License
59
+
60
+ Copyright (c) 2019, Sepehr Taghdisian (septag@protonmail.com)
61
+ All rights reserved.
62
+
63
+ Redistribution and use in source and binary forms, with or without
64
+ modification, are permitted provided that the following conditions are met:
65
+
66
+ * Redistributions of source code must retain the above copyright notice, this
67
+ list of conditions and the following disclaimer.
68
+
69
+ * Redistributions in binary form must reproduce the above copyright notice,
70
+ this list of conditions and the following disclaimer in the documentation
71
+ and/or other materials provided with the distribution.
72
+
73
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
74
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
75
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
76
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
77
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
78
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
79
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
80
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
81
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
82
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
83
+ ```
84
+
85
+ ## ImGui
86
+ ```
87
+ The MIT License (MIT)
88
+
89
+ Copyright (c) 2014-2024 Omar Cornut
90
+
91
+ Permission is hereby granted, free of charge, to any person obtaining a copy
92
+ of this software and associated documentation files (the "Software"), to deal
93
+ in the Software without restriction, including without limitation the rights
94
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
95
+ copies of the Software, and to permit persons to whom the Software is
96
+ furnished to do so, subject to the following conditions:
97
+
98
+ The above copyright notice and this permission notice shall be included in all
99
+ copies or substantial portions of the Software.
100
+
101
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
102
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
103
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
104
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
105
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
107
+ SOFTWARE.
108
+ ```
109
+
110
+ ## Inter-Regular.ttf
111
+ ```
112
+ Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)
113
+
114
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
115
+ This license is copied below, and is also available with a FAQ at:
116
+ http://scripts.sil.org/OFL
117
+
118
+ -----------------------------------------------------------
119
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
120
+ -----------------------------------------------------------
121
+
122
+ PREAMBLE
123
+ The goals of the Open Font License (OFL) are to stimulate worldwide
124
+ development of collaborative font projects, to support the font creation
125
+ efforts of academic and linguistic communities, and to provide a free and
126
+ open framework in which fonts may be shared and improved in partnership
127
+ with others.
128
+
129
+ The OFL allows the licensed fonts to be used, studied, modified and
130
+ redistributed freely as long as they are not sold by themselves. The
131
+ fonts, including any derivative works, can be bundled, embedded,
132
+ redistributed and/or sold with any software provided that any reserved
133
+ names are not used by derivative works. The fonts and derivatives,
134
+ however, cannot be released under any other type of license. The
135
+ requirement for fonts to remain under this license does not apply
136
+ to any document created using the fonts or their derivatives.
137
+
138
+ DEFINITIONS
139
+ "Font Software" refers to the set of files released by the Copyright
140
+ Holder(s) under this license and clearly marked as such. This may
141
+ include source files, build scripts and documentation.
142
+
143
+ "Reserved Font Name" refers to any names specified as such after the
144
+ copyright statement(s).
145
+
146
+ "Original Version" refers to the collection of Font Software components as
147
+ distributed by the Copyright Holder(s).
148
+
149
+ "Modified Version" refers to any derivative made by adding to, deleting,
150
+ or substituting -- in part or in whole -- any of the components of the
151
+ Original Version, by changing formats or by porting the Font Software to a
152
+ new environment.
153
+
154
+ "Author" refers to any designer, engineer, programmer, technical
155
+ writer or other person who contributed to the Font Software.
156
+
157
+ PERMISSION AND CONDITIONS
158
+ Permission is hereby granted, free of charge, to any person obtaining
159
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
160
+ redistribute, and sell modified and unmodified copies of the Font
161
+ Software, subject to the following conditions:
162
+
163
+ 1) Neither the Font Software nor any of its individual components,
164
+ in Original or Modified Versions, may be sold by itself.
165
+
166
+ 2) Original or Modified Versions of the Font Software may be bundled,
167
+ redistributed and/or sold with any software, provided that each copy
168
+ contains the above copyright notice and this license. These can be
169
+ included either as stand-alone text files, human-readable headers or
170
+ in the appropriate machine-readable metadata fields within text or
171
+ binary files as long as those fields can be easily viewed by the user.
172
+
173
+ 3) No Modified Version of the Font Software may use the Reserved Font
174
+ Name(s) unless explicit written permission is granted by the corresponding
175
+ Copyright Holder. This restriction only applies to the primary font name as
176
+ presented to the users.
177
+
178
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
179
+ Software shall not be used to promote, endorse or advertise any
180
+ Modified Version, except to acknowledge the contribution(s) of the
181
+ Copyright Holder(s) and the Author(s) or with their explicit written
182
+ permission.
183
+
184
+ 5) The Font Software, modified or unmodified, in part or in whole,
185
+ must be distributed entirely under this license, and must not be
186
+ distributed under any other license. The requirement for fonts to
187
+ remain under this license does not apply to any document created
188
+ using the Font Software.
189
+
190
+ TERMINATION
191
+ This license becomes null and void if any of the above conditions are
192
+ not met.
193
+
194
+ DISCLAIMER
195
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
196
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
197
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
198
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
199
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
200
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
201
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
202
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
203
+ OTHER DEALINGS IN THE FONT SOFTWARE.
204
+ ```
205
+
206
+
207
+ ### tinyfiledialogs
208
+ ```
209
+ SPDX-License-Identifier: Zlib
210
+ Copyright (c) 2014 - 2024 Guillaume Vareille http://ysengrin.com
211
+ ________________________________________________________________
212
+ | |
213
+ | 100% compatible C C++ -> You can rename this .c file as .cpp |
214
+ |________________________________________________________________|
215
+
216
+ ********* TINY FILE DIALOGS OFFICIAL WEBSITE IS ON SOURCEFORGE *********
217
+ _________
218
+ / \ tinyfiledialogs.c v3.18.2 [Jun 8, 2024] zlib licence
219
+ |tiny file| Unique code file created [November 9, 2014]
220
+ | dialogs |
221
+ \____ ___/ http://tinyfiledialogs.sourceforge.net
222
+ \| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
223
+ ____________________________________________
224
+ | |
225
+ | email: tinyfiledialogs at ysengrin.com |
226
+ |____________________________________________|
227
+ _________________________________________________________________________________
228
+ | |
229
+ | the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
230
+ |_________________________________________________________________________________|
231
+ _________________________________________________________
232
+ | |
233
+ | on windows: - since v3.6 char is UTF-8 by default |
234
+ | - if you want MBCS set tinyfd_winUtf8 to 0 |
235
+ | - functions like fopen expect MBCS |
236
+ |_________________________________________________________|
237
+
238
+ If you like tinyfiledialogs, please upvote my stackoverflow answer
239
+ https://stackoverflow.com/a/47651444
240
+
241
+ - License -
242
+ This software is provided 'as-is', without any express or implied
243
+ warranty. In no event will the authors be held liable for any damages
244
+ arising from the use of this software.
245
+ Permission is granted to anyone to use this software for any purpose,
246
+ including commercial applications, and to alter it and redistribute it
247
+ freely, subject to the following restrictions:
248
+ 1. The origin of this software must not be misrepresented; you must not
249
+ claim that you wrote the original software. If you use this software
250
+ in a product, an acknowledgment in the product documentation would be
251
+ appreciated but is not required.
252
+ 2. Altered source versions must be plainly marked as such, and must not be
253
+ misrepresented as being the original software.
254
+ 3. This notice may not be removed or altered from any source distribution.
255
+
256
+ __________________________________________
257
+ | ______________________________________ |
258
+ | | | |
259
+ | | DO NOT USE USER INPUT IN THE DIALOGS | |
260
+ | |______________________________________| |
261
+ |__________________________________________|
262
+ ```
@@ -1,16 +0,0 @@
1
- f3d/__init__.py,sha256=rV6tLQQxyc0-2IVC7s2NDheYezA0ROoBWhGzux_xCNw,2356
2
- f3d/bin/f3d.dll,sha256=siGdNXW-prfnvAEAaG2CLOHG6XmBHf-CViPnwDgd59s,44018688
3
- f3d/bin/vcruntime140.dll,sha256=AsaqDm5iRBGp8ZsDYKeGWrFZCOJgJFEOXDipwINiw1o,119888
4
- f3d/bin/zlib.dll,sha256=lnez1ZH6pNplAl5YZqRPx_y3wDDOXGJpf2lakBTesn0,90624
5
- f3d/pyf3d.cp310-win_amd64.pyd,sha256=EO_HLFJbCoRgxDeDEzFVA18s4sVk5z8lT1DVZ2Jh4Yk,363008
6
- f3d/share/f3d/plugins/alembic.json,sha256=NVQtyuR1lal_VH_I26KRBSBCmsfkqkEV1Bj6XI3uJl0,373
7
- f3d/share/f3d/plugins/assimp.json,sha256=L9k-1Ijro2NxpS1UKa27AWq5LUgVA2ecSspfEbMMaHc,1487
8
- f3d/share/f3d/plugins/draco.json,sha256=hzBF8tw3JKAqjbLemSjDmznX9KKrAzGnTF1EwxKO4WM,629
9
- f3d/share/f3d/plugins/exodus.json,sha256=EZBy7TcNwU36TqANuHPBpLCN9-y4KWecANCo8sKqF_Y,377
10
- f3d/share/f3d/plugins/native.json,sha256=g-_Hx7TeSRmo8vYkJl4Mdh1tGAHRM1c_jfaKamtp6qg,4773
11
- f3d/share/f3d/plugins/occt.json,sha256=ubbC6JELRYS81x_tJUWqgsdeSAIayyot97XlN5uttZI,893
12
- f3d-2.5.0.dist-info/METADATA,sha256=Rc6Nj2mjQCYJ5GfiwlAL0Mjc8Ic12OnJ9WCayVkShy8,6993
13
- f3d-2.5.0.dist-info/WHEEL,sha256=8TybILmvc4g4BmKapcD4VhTU9hdyS7zsuJOYB7QyjKk,105
14
- f3d-2.5.0.dist-info/licenses/LICENSE.md,sha256=iQPH5pY3-g7_35_kEdPo1N8f9jaWoMvYaVPpMZjtBAA,1602
15
- f3d-2.5.0.dist-info/licenses/doc/THIRD_PARTY_LICENSES.md,sha256=auqE-EAoL4LV9VnOsLfDVjPUb4OXJ3-NtUKfgDRBbtw,4035
16
- f3d-2.5.0.dist-info/RECORD,,
@@ -1,83 +0,0 @@
1
- # Third Party Copyrights and License within F3D application source
2
-
3
- ## cxxopts.hpp:
4
- ```
5
- Copyright (c) 2014, 2015, 2016, 2017 Jarryd Beck
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the "Software"), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in
15
- all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- THE SOFTWARE.
24
- ```
25
-
26
- ## json.hpp:
27
- ```
28
- __ _____ _____ _____
29
- __| | __| | | | JSON for Modern C++
30
- | | |__ | | | | | | version 3.10.5
31
- |_____|_____|_____|_|___| https://github.com/nlohmann/json
32
-
33
- Licensed under the MIT License <http://opensource.org/licenses/MIT>.
34
- SPDX-License-Identifier: MIT
35
- Copyright (c) 2013-2022 Niels Lohmann <http://nlohmann.me>.
36
-
37
- Permission is hereby granted, free of charge, to any person obtaining a copy
38
- of this software and associated documentation files (the "Software"), to deal
39
- in the Software without restriction, including without limitation the rights
40
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
41
- copies of the Software, and to permit persons to whom the Software is
42
- furnished to do so, subject to the following conditions:
43
-
44
- The above copyright notice and this permission notice shall be included in all
45
- copies or substantial portions of the Software.
46
-
47
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
48
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
49
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
50
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
51
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
52
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
53
- SOFTWARE.
54
- ```
55
-
56
- ## dmon.h:
57
- ```
58
- BSD 2-Clause License
59
-
60
- Copyright (c) 2019, Sepehr Taghdisian (septag@protonmail.com)
61
- All rights reserved.
62
-
63
- Redistribution and use in source and binary forms, with or without
64
- modification, are permitted provided that the following conditions are met:
65
-
66
- * Redistributions of source code must retain the above copyright notice, this
67
- list of conditions and the following disclaimer.
68
-
69
- * Redistributions in binary form must reproduce the above copyright notice,
70
- this list of conditions and the following disclaimer in the documentation
71
- and/or other materials provided with the distribution.
72
-
73
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
74
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
75
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
76
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
77
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
78
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
79
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
80
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
81
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
82
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
83
- ```