shinestacker 1.0.4.post2__py3-none-any.whl → 1.2.0__py3-none-any.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 shinestacker might be problematic. Click here for more details.
- shinestacker/_version.py +1 -1
- shinestacker/algorithms/__init__.py +4 -1
- shinestacker/algorithms/align.py +128 -14
- shinestacker/algorithms/balance.py +362 -163
- shinestacker/algorithms/base_stack_algo.py +33 -4
- shinestacker/algorithms/depth_map.py +9 -12
- shinestacker/algorithms/multilayer.py +12 -2
- shinestacker/algorithms/noise_detection.py +8 -3
- shinestacker/algorithms/pyramid.py +57 -42
- shinestacker/algorithms/pyramid_auto.py +141 -0
- shinestacker/algorithms/pyramid_tiles.py +264 -0
- shinestacker/algorithms/stack.py +14 -11
- shinestacker/algorithms/stack_framework.py +17 -11
- shinestacker/algorithms/utils.py +180 -1
- shinestacker/algorithms/vignetting.py +23 -5
- shinestacker/config/constants.py +31 -5
- shinestacker/gui/action_config.py +6 -7
- shinestacker/gui/action_config_dialog.py +425 -258
- shinestacker/gui/base_form_dialog.py +11 -6
- shinestacker/gui/flow_layout.py +105 -0
- shinestacker/gui/gui_run.py +24 -19
- shinestacker/gui/main_window.py +4 -3
- shinestacker/gui/menu_manager.py +12 -2
- shinestacker/gui/new_project.py +28 -22
- shinestacker/gui/project_controller.py +40 -23
- shinestacker/gui/project_converter.py +6 -6
- shinestacker/gui/project_editor.py +21 -7
- shinestacker/gui/time_progress_bar.py +2 -2
- shinestacker/retouch/exif_data.py +5 -5
- shinestacker/retouch/shortcuts_help.py +4 -4
- shinestacker/retouch/vignetting_filter.py +12 -8
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/METADATA +20 -1
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/RECORD +37 -34
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/WHEEL +0 -0
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/entry_points.txt +0 -0
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/licenses/LICENSE +0 -0
- {shinestacker-1.0.4.post2.dist-info → shinestacker-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -10,7 +10,7 @@ class ShortcutsHelp(QDialog):
|
|
|
10
10
|
super().__init__(parent)
|
|
11
11
|
self.setWindowTitle("Shortcut Help")
|
|
12
12
|
self.resize(600, self.height())
|
|
13
|
-
self.
|
|
13
|
+
self.main_layout = QVBoxLayout(self)
|
|
14
14
|
main_widget = QWidget()
|
|
15
15
|
main_layout = QHBoxLayout(main_widget)
|
|
16
16
|
main_layout.setContentsMargins(0, 0, 0, 0)
|
|
@@ -28,14 +28,14 @@ class ShortcutsHelp(QDialog):
|
|
|
28
28
|
right_layout.setLabelAlignment(Qt.AlignLeft)
|
|
29
29
|
main_layout.addWidget(left_column)
|
|
30
30
|
main_layout.addWidget(right_column)
|
|
31
|
-
self.
|
|
31
|
+
self.main_layout.addWidget(main_widget)
|
|
32
32
|
self.create_form(left_layout, right_layout)
|
|
33
33
|
button_box = QHBoxLayout()
|
|
34
34
|
ok_button = QPushButton("OK")
|
|
35
35
|
ok_button.setFixedWidth(100)
|
|
36
36
|
ok_button.setFocus()
|
|
37
37
|
button_box.addWidget(ok_button)
|
|
38
|
-
self.
|
|
38
|
+
self.main_layout.addLayout(button_box)
|
|
39
39
|
ok_button.clicked.connect(self.accept)
|
|
40
40
|
|
|
41
41
|
def add_bold_label(self, layout, label):
|
|
@@ -44,7 +44,7 @@ class ShortcutsHelp(QDialog):
|
|
|
44
44
|
layout.addRow(label)
|
|
45
45
|
|
|
46
46
|
def create_form(self, left_layout, right_layout):
|
|
47
|
-
self.
|
|
47
|
+
self.main_layout.insertWidget(0, icon_container())
|
|
48
48
|
|
|
49
49
|
shortcuts = {
|
|
50
50
|
"M": "show master layer",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pylint: disable=C0114, C0115, C0116, E0611, W0221, R0902
|
|
2
2
|
from PySide6.QtCore import Qt
|
|
3
|
-
from PySide6.QtWidgets import QSpinBox, QCheckBox, QLabel, QHBoxLayout, QSlider
|
|
3
|
+
from PySide6.QtWidgets import QSpinBox, QCheckBox, QLabel, QHBoxLayout, QSlider, QComboBox
|
|
4
4
|
from .. config.constants import constants
|
|
5
5
|
from .. algorithms.vignetting import correct_vignetting
|
|
6
6
|
from .base_filter import OneSliderBaseFilter
|
|
@@ -20,11 +20,15 @@ class VignettingFilter(OneSliderBaseFilter):
|
|
|
20
20
|
self.threshold_initial_value = constants.DEFAULT_BLACK_THRESHOLD
|
|
21
21
|
self.threshold_format = "{:.1f}"
|
|
22
22
|
|
|
23
|
+
def get_subsample_factor(self):
|
|
24
|
+
return constants.FIELD_SUBSAMPLE_VALUES[
|
|
25
|
+
constants.FIELD_SUBSAMPLE_OPTIONS.index(self.subsample_box.currentText())]
|
|
26
|
+
|
|
23
27
|
def apply(self, image, strength):
|
|
24
28
|
return correct_vignetting(image, max_correction=strength,
|
|
25
29
|
black_threshold=self.threshold_slider.value(),
|
|
26
30
|
r_steps=self.r_steps_box.value(),
|
|
27
|
-
subsample=self.
|
|
31
|
+
subsample=self.get_subsample_factor(),
|
|
28
32
|
fast_subsampling=True)
|
|
29
33
|
|
|
30
34
|
def add_widgets(self, layout, dlg):
|
|
@@ -42,11 +46,10 @@ class VignettingFilter(OneSliderBaseFilter):
|
|
|
42
46
|
layout.addLayout(threshold_layout)
|
|
43
47
|
subsample_layout = QHBoxLayout()
|
|
44
48
|
subsample_label = QLabel("Subsample:")
|
|
45
|
-
self.subsample_box =
|
|
46
|
-
self.subsample_box.
|
|
47
|
-
self.subsample_box.
|
|
48
|
-
self.subsample_box.
|
|
49
|
-
self.subsample_box.valueChanged.connect(self.threshold_changed)
|
|
49
|
+
self.subsample_box = QComboBox()
|
|
50
|
+
self.subsample_box.addItems(constants.FIELD_SUBSAMPLE_OPTIONS)
|
|
51
|
+
self.subsample_box.setFixedWidth(150)
|
|
52
|
+
self.subsample_box.currentTextChanged.connect(self.threshold_changed)
|
|
50
53
|
self.fast_subsampling_check = QCheckBox("Fast subsampling")
|
|
51
54
|
self.fast_subsampling_check.setChecked(constants.DEFAULT_VIGN_FAST_SUBSAMPLING)
|
|
52
55
|
r_steps_label = QLabel("Radial steps:")
|
|
@@ -64,6 +67,7 @@ class VignettingFilter(OneSliderBaseFilter):
|
|
|
64
67
|
layout.addWidget(self.fast_subsampling_check)
|
|
65
68
|
|
|
66
69
|
def threshold_changed(self, val):
|
|
67
|
-
|
|
70
|
+
subsample = self.get_subsample_factor()
|
|
71
|
+
float_val = self.threshold_max_value * float(subsample) / self.threshold_max_range
|
|
68
72
|
self.threshold_label.setText(self.threshold_format.format(float_val))
|
|
69
73
|
self.param_changed(val)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shinestacker
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: ShineStacker
|
|
5
5
|
Author-email: Luca Lista <luka.lista@gmail.com>
|
|
6
6
|
License-Expression: LGPL-3.0
|
|
@@ -69,6 +69,25 @@ The GUI has two main working areas:
|
|
|
69
69
|
|
|
70
70
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/gui-retouch.png' width="600" referrerpolicy="no-referrer">
|
|
71
71
|
|
|
72
|
+
# Note for macOS users
|
|
73
|
+
|
|
74
|
+
**The following note is only relevant if you download the application as compressed archive from the [release page](https://github.com/lucalista/shinestacker/releases).**
|
|
75
|
+
|
|
76
|
+
The macOS system security protection prevent to run applications downloaded from the web that come from developers that don't hold an Apple Developer Certificate.
|
|
77
|
+
|
|
78
|
+
In order to prevent this, follow the instructions below:
|
|
79
|
+
|
|
80
|
+
1. Download the compressed archive ```shinestacker-macos.tar.gz``` in your ```Download``` folder.
|
|
81
|
+
2. Double-click the archive to uncompress it. You will find a new folder ```shinestacker```.
|
|
82
|
+
3. Open a terminal (*Applications > Utilities > Terminal*)
|
|
83
|
+
4. Type the folliwng command on the terminal:
|
|
84
|
+
```bash
|
|
85
|
+
xattr -cr ~/Downloads/shinestacker/shinestacker.app
|
|
86
|
+
```
|
|
87
|
+
5. Now you can double-click the Sine Stacker icon app in the ```shiestacker``` folder and it should run.
|
|
88
|
+
|
|
89
|
+
macOS adds a quarantine flag to all files downloaded from the internet. The above command removes that flag while preserving all other application functionality.
|
|
90
|
+
|
|
72
91
|
# Resources
|
|
73
92
|
|
|
74
93
|
🌍 [Website on WordPress](https://shinestacker.wordpress.com) • 📖 [Main documentation](https://shinestacker.readthedocs.io) • 📝 [Changelog](https://github.com/lucalista/shinestacker/blob/main/CHANGELOG.md)
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
shinestacker/__init__.py,sha256=uq2fjAw2z_6TpH3mOcWFZ98GoEPRsNhTAK8N0MMm_e8,448
|
|
2
|
-
shinestacker/_version.py,sha256=
|
|
3
|
-
shinestacker/algorithms/__init__.py,sha256=
|
|
4
|
-
shinestacker/algorithms/align.py,sha256=
|
|
5
|
-
shinestacker/algorithms/balance.py,sha256=
|
|
6
|
-
shinestacker/algorithms/base_stack_algo.py,sha256=
|
|
2
|
+
shinestacker/_version.py,sha256=5GblYyMbk8JySosj59Rvi2uzLqfP-DAs77ikwTafXT4,21
|
|
3
|
+
shinestacker/algorithms/__init__.py,sha256=1FwVJ3w9GGbFFkjYJRUedTvcdE4j0ieSgaH9RC9iCY4,877
|
|
4
|
+
shinestacker/algorithms/align.py,sha256=BsE3rp4EfJyWTTbC6U1leQQqURD724YLAmxY-1wM-ok,22558
|
|
5
|
+
shinestacker/algorithms/balance.py,sha256=rz_lmBwnJBYLnYt6yJ30BXWmMwpmmmA3rKUznEWY0eo,23463
|
|
6
|
+
shinestacker/algorithms/base_stack_algo.py,sha256=W-VSrCF0-lE_OOsxsnZvJ3BI0NqRKIRMciQV-ui5t_g,2515
|
|
7
7
|
shinestacker/algorithms/denoise.py,sha256=GL3Z4_6MHxSa7Wo4ZzQECZS87tHBFqO0sIVF_jPuYQU,426
|
|
8
|
-
shinestacker/algorithms/depth_map.py,sha256=
|
|
8
|
+
shinestacker/algorithms/depth_map.py,sha256=m0_Qm8FLDeSWyQEMNx29PzXp_VFGar7gY3jWxq_10t8,5713
|
|
9
9
|
shinestacker/algorithms/exif.py,sha256=SM4ZDDe8hCJ3xY6053FNndOiwzEStzdp0WrXurlcHVc,9429
|
|
10
|
-
shinestacker/algorithms/multilayer.py,sha256
|
|
11
|
-
shinestacker/algorithms/noise_detection.py,sha256=
|
|
12
|
-
shinestacker/algorithms/pyramid.py,sha256=
|
|
10
|
+
shinestacker/algorithms/multilayer.py,sha256=5aIaIU2GX1eoZbGL4z-Xo8XiFlCvIcZKRDYnbjjdojI,9906
|
|
11
|
+
shinestacker/algorithms/noise_detection.py,sha256=lP5iJLFA5xWN-tpyNDH9AWuoZsL7rKhrxwDcBBc9nCk,9250
|
|
12
|
+
shinestacker/algorithms/pyramid.py,sha256=lmd-lw4bzrpcfBaLnBXHuOJ9J7-5sWq4dC9p_EejqXA,8881
|
|
13
|
+
shinestacker/algorithms/pyramid_auto.py,sha256=ByDH7Xblqj4YfNwsCWwN3wv2xL6gYp2lFnvpNPSEawM,6161
|
|
14
|
+
shinestacker/algorithms/pyramid_tiles.py,sha256=SzjTSheme8MP8nQXfOu8QHbzrtpuQX2aIsBVr5aM4Mc,12165
|
|
13
15
|
shinestacker/algorithms/sharpen.py,sha256=h7PMJBYxucg194Usp_6pvItPUMFYbT-ebAc_-7XBFUw,949
|
|
14
|
-
shinestacker/algorithms/stack.py,sha256=
|
|
15
|
-
shinestacker/algorithms/stack_framework.py,sha256=
|
|
16
|
-
shinestacker/algorithms/utils.py,sha256=
|
|
17
|
-
shinestacker/algorithms/vignetting.py,sha256=
|
|
16
|
+
shinestacker/algorithms/stack.py,sha256=fLDps52QT8bsC3Pz8niU0h7cGc70q9goKsgA8wvu_Bg,5054
|
|
17
|
+
shinestacker/algorithms/stack_framework.py,sha256=YKk-JoLV6IVlTiCbo6e-Hg2dF3hdz4CE6WFIXhMXBy8,12818
|
|
18
|
+
shinestacker/algorithms/utils.py,sha256=jImR2XF73gsLRZMic0kv8cyCuO2Zq21tX4kUhaTcfzI,11301
|
|
19
|
+
shinestacker/algorithms/vignetting.py,sha256=stzrWTxJIIByq_mOI0ofE-7b0bL5MLm9dhlj_E-Kxv0,10165
|
|
18
20
|
shinestacker/algorithms/white_balance.py,sha256=PMKsBtxOSn5aRr_Gkx1StHS4eN6kBN2EhNnhg4UG24g,501
|
|
19
21
|
shinestacker/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
22
|
shinestacker/app/about_dialog.py,sha256=pkH7nnxUP8yc0D3vRGd1jRb5cwi1nDVbQRk_OC9yLk8,4144
|
|
@@ -26,7 +28,7 @@ shinestacker/app/project.py,sha256=W0u715LZne_PNJvg9msSy27ybIjgDXiEAQdJ7_6BjYI,2
|
|
|
26
28
|
shinestacker/app/retouch.py,sha256=ZQ-nRKnHo6xurcP34RNqaAWkmuGBjJ5jE05hTQ_ycis,2482
|
|
27
29
|
shinestacker/config/__init__.py,sha256=aXxi-LmAvXd0daIFrVnTHE5OCaYeK1uf1BKMr7oaXQs,197
|
|
28
30
|
shinestacker/config/config.py,sha256=eBko2D3ADhLTIm9X6hB_a_WsIjwgfE-qmBVkhP1XSvc,1636
|
|
29
|
-
shinestacker/config/constants.py,sha256=
|
|
31
|
+
shinestacker/config/constants.py,sha256=ncuiYyA5NgggkGbazQbccJHGzXJnl37AOyxEB-GLoB0,7116
|
|
30
32
|
shinestacker/config/gui_constants.py,sha256=5DR-ET1oeMMD7lIsjvAwSuln89A7I9wy9VuAeRo2G64,2575
|
|
31
33
|
shinestacker/core/__init__.py,sha256=IUEIx6SQ3DygDEHN3_E6uKpHjHtUa4a_U_1dLd_8yEU,484
|
|
32
34
|
shinestacker/core/colors.py,sha256=kr_tJA1iRsdck2JaYDb2lS-codZ4Ty9gdu3kHfiWvuM,1340
|
|
@@ -35,23 +37,24 @@ shinestacker/core/exceptions.py,sha256=2-noG-ORAGdvDhL8jBQFs0xxZS4fI6UIkMqrWekgk
|
|
|
35
37
|
shinestacker/core/framework.py,sha256=zCnJuQrHNpwEgJW23_BgS7iQrLolRWTAMB1oRp_a7Kk,7447
|
|
36
38
|
shinestacker/core/logging.py,sha256=9SuSSy9Usbh7zqmLYMqkmy-VBkOJW000lwqAR0XQs30,3067
|
|
37
39
|
shinestacker/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
shinestacker/gui/action_config.py,sha256
|
|
39
|
-
shinestacker/gui/action_config_dialog.py,sha256=
|
|
40
|
-
shinestacker/gui/base_form_dialog.py,sha256=
|
|
40
|
+
shinestacker/gui/action_config.py,sha256=-J4UCbXHHlIPxRDL0Veglt4brngJP7_zHvrWof9pzsM,16895
|
|
41
|
+
shinestacker/gui/action_config_dialog.py,sha256=USaF2QeQRNXgzLRbkV6hvVRzOMkMVyTtsAzEAMqCr-g,35191
|
|
42
|
+
shinestacker/gui/base_form_dialog.py,sha256=M_BvjpqUWe9YuecKg0pF3vUJ-1mqF24HjKujst2j3BA,753
|
|
41
43
|
shinestacker/gui/colors.py,sha256=m0pQQ-uvtIN1xmb_-N06BvC7pZYZZnq59ZSEJwutHuk,1432
|
|
44
|
+
shinestacker/gui/flow_layout.py,sha256=3yBU_z7VtvHKpx1H97CHVd81eq9pe1Dcja2EZBGGKcI,3791
|
|
42
45
|
shinestacker/gui/gui_images.py,sha256=e0KAXSPruZoRHrajfdlmOKBYoRJJQBDan1jgs7YFltY,5678
|
|
43
46
|
shinestacker/gui/gui_logging.py,sha256=kiZcrC2AFYCWgPZo0O5SKw-E5cFrezwf4anS3HjPuNw,8168
|
|
44
|
-
shinestacker/gui/gui_run.py,sha256=
|
|
45
|
-
shinestacker/gui/main_window.py,sha256=
|
|
46
|
-
shinestacker/gui/menu_manager.py,sha256=
|
|
47
|
-
shinestacker/gui/new_project.py,sha256=
|
|
48
|
-
shinestacker/gui/project_controller.py,sha256=
|
|
49
|
-
shinestacker/gui/project_converter.py,sha256=
|
|
50
|
-
shinestacker/gui/project_editor.py,sha256=
|
|
47
|
+
shinestacker/gui/gui_run.py,sha256=ahbl6xMFR78QrcBbEDMuaQpkxw6DBFtSX8DCMIyr_7I,15439
|
|
48
|
+
shinestacker/gui/main_window.py,sha256=kgozNZWqiPePZB5oX3Twdj_Z_f1RcdoLT2PFMzT0fRM,24361
|
|
49
|
+
shinestacker/gui/menu_manager.py,sha256=SvYV7Dmz4cqoFQtRrO4JQ0uECZ4rL3EQdQg5jNakV6Y,10015
|
|
50
|
+
shinestacker/gui/new_project.py,sha256=Iu8Gm3oRx6tCokv-Ywm_64wsNNxj_QhU1BsyoeLkJaQ,11211
|
|
51
|
+
shinestacker/gui/project_controller.py,sha256=ooHunFKY2-dRBoyx4r3T8vs7UOpGDZUHHaSSR5V8J_E,15821
|
|
52
|
+
shinestacker/gui/project_converter.py,sha256=bNyC1_D_MjcTOCPlQln6CIIlX818-sw_j2omrfQIGQs,7279
|
|
53
|
+
shinestacker/gui/project_editor.py,sha256=UPXNwjpKJi7lgaohlbtojkTkotXeGY7l_W8pVII-UM0,24208
|
|
51
54
|
shinestacker/gui/project_model.py,sha256=eRUmH3QmRzDtPtZoxgT6amKzN8_5XzwjHgEJeL-_JOE,4263
|
|
52
55
|
shinestacker/gui/select_path_widget.py,sha256=OfQImOmkzbvl5BBshmb7ePWrSGDJQ8VvyaAOypHAGd4,1023
|
|
53
56
|
shinestacker/gui/tab_widget.py,sha256=6iUifK-wu0EzjVFccKHirhA2fENglVi6xREKiD96aaY,2950
|
|
54
|
-
shinestacker/gui/time_progress_bar.py,sha256=
|
|
57
|
+
shinestacker/gui/time_progress_bar.py,sha256=4_5DT_EzFdVJi5bgd9TEpoTJXeU3M08CF91cZLi75Wc,3016
|
|
55
58
|
shinestacker/gui/ico/focus_stack_bkg.png,sha256=Q86TgqvKEi_IzKI8m6aZB2a3T40UkDtexf2PdeBM9XE,163151
|
|
56
59
|
shinestacker/gui/ico/shinestacker.icns,sha256=3IshIOv0uFexYsAEPkE9xiyuw8mB5X5gffekOUhFlt0,45278
|
|
57
60
|
shinestacker/gui/ico/shinestacker.ico,sha256=8IMRk-toObWUz8iDXA-zHBWQ8Ps3vXN5u5ZEyw7sP3c,109613
|
|
@@ -69,7 +72,7 @@ shinestacker/retouch/brush_preview.py,sha256=QKD3pL7n7YJbIibinUFYKv7lkyq_AWLpt6o
|
|
|
69
72
|
shinestacker/retouch/brush_tool.py,sha256=nxnEuvTioPNw1WeWsT20X1zl-LNZ8i-1ExOcihikEjk,8618
|
|
70
73
|
shinestacker/retouch/denoise_filter.py,sha256=TDUHzhRKlKvCa3D5SCYCZKTpjcl81kGwmONsgSDtO1k,440
|
|
71
74
|
shinestacker/retouch/display_manager.py,sha256=XPbOBmoYc_jNA791WkWkOSaFHb0ztCZechl2p2KSlwQ,9597
|
|
72
|
-
shinestacker/retouch/exif_data.py,sha256=
|
|
75
|
+
shinestacker/retouch/exif_data.py,sha256=WF40bTh0bwIqSQLMkGMCycEED06_q35-TqrBNAyaB-k,1889
|
|
73
76
|
shinestacker/retouch/file_loader.py,sha256=z02-A8_uDZxayI1NFTxT2GVUvEBWStchX9hlN1o5-0U,4784
|
|
74
77
|
shinestacker/retouch/filter_manager.py,sha256=SdYIZkZBUvuB6wDG0moGWav5sfEvIcB9ioUJR5wJFts,388
|
|
75
78
|
shinestacker/retouch/icon_container.py,sha256=6gw1HO1bC2FrdB4dc_iH81DQuLjzuvRGksZ2hKLT9yA,585
|
|
@@ -78,14 +81,14 @@ shinestacker/retouch/image_viewer.py,sha256=3ebrLHTDtGd_EbIT2nNFRUjH836rblmmK7jZ
|
|
|
78
81
|
shinestacker/retouch/io_gui_handler.py,sha256=pT-49uP0GROMOjZ70LoMLgXHnqSDq8ieAlAKGw0t1TM,11418
|
|
79
82
|
shinestacker/retouch/io_manager.py,sha256=JUAA--AK0mVa1PTErJTnBFjaXIle5Qs7Ow0Wkd8at0o,2437
|
|
80
83
|
shinestacker/retouch/layer_collection.py,sha256=Q7zoCYRn__jYkfrEC2lY1uKHWfOUbsJ27xaYHIoKVxo,5730
|
|
81
|
-
shinestacker/retouch/shortcuts_help.py,sha256
|
|
84
|
+
shinestacker/retouch/shortcuts_help.py,sha256=-beAkhxVia-wyuYMiAn2uQZxnUdSNadmZM77EdReoOk,3789
|
|
82
85
|
shinestacker/retouch/undo_manager.py,sha256=_ekbcOLcPbQLY7t-o8wf-b1uA6OPY9rRyLM-KqMlQRo,3257
|
|
83
86
|
shinestacker/retouch/unsharp_mask_filter.py,sha256=uFnth8fpZFGhdIgJCnS8x5v6lBQgJ3hX0CBke9pFXeM,3510
|
|
84
|
-
shinestacker/retouch/vignetting_filter.py,sha256=
|
|
87
|
+
shinestacker/retouch/vignetting_filter.py,sha256=MA97rQkSL0D-Nh-n2L4AiPR064RoTROkvza4tw84g9U,3658
|
|
85
88
|
shinestacker/retouch/white_balance_filter.py,sha256=glMBYlmrF-i_OrB3sGUpjZE6X4FQdyLC4GBy2bWtaFc,6056
|
|
86
|
-
shinestacker-1.0.
|
|
87
|
-
shinestacker-1.0.
|
|
88
|
-
shinestacker-1.0.
|
|
89
|
-
shinestacker-1.0.
|
|
90
|
-
shinestacker-1.0.
|
|
91
|
-
shinestacker-1.0.
|
|
89
|
+
shinestacker-1.2.0.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
|
|
90
|
+
shinestacker-1.2.0.dist-info/METADATA,sha256=01kq9TSpVY2_U67ZhjbPIORbMmWTOWpuiiOFty3IM1Y,6951
|
|
91
|
+
shinestacker-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
92
|
+
shinestacker-1.2.0.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
|
|
93
|
+
shinestacker-1.2.0.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
|
|
94
|
+
shinestacker-1.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|