shinestacker 1.1.0__py3-none-any.whl → 1.2.1__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 +149 -34
- shinestacker/algorithms/balance.py +364 -166
- shinestacker/algorithms/base_stack_algo.py +6 -0
- shinestacker/algorithms/depth_map.py +1 -1
- shinestacker/algorithms/multilayer.py +22 -13
- shinestacker/algorithms/noise_detection.py +7 -8
- shinestacker/algorithms/pyramid.py +3 -2
- shinestacker/algorithms/pyramid_auto.py +141 -0
- shinestacker/algorithms/pyramid_tiles.py +199 -44
- shinestacker/algorithms/stack.py +20 -20
- shinestacker/algorithms/stack_framework.py +136 -156
- shinestacker/algorithms/utils.py +175 -1
- shinestacker/algorithms/vignetting.py +26 -8
- shinestacker/config/constants.py +31 -6
- shinestacker/core/framework.py +12 -12
- shinestacker/gui/action_config.py +59 -7
- shinestacker/gui/action_config_dialog.py +427 -283
- shinestacker/gui/base_form_dialog.py +11 -6
- shinestacker/gui/gui_images.py +10 -10
- shinestacker/gui/gui_run.py +1 -1
- shinestacker/gui/main_window.py +6 -5
- shinestacker/gui/menu_manager.py +16 -2
- shinestacker/gui/new_project.py +26 -22
- shinestacker/gui/project_controller.py +43 -27
- shinestacker/gui/project_converter.py +2 -8
- shinestacker/gui/project_editor.py +50 -27
- shinestacker/gui/tab_widget.py +3 -3
- shinestacker/retouch/exif_data.py +5 -5
- shinestacker/retouch/shortcuts_help.py +4 -4
- shinestacker/retouch/vignetting_filter.py +12 -8
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/METADATA +1 -1
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/RECORD +38 -37
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/WHEEL +0 -0
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/entry_points.txt +0 -0
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/licenses/LICENSE +0 -0
- {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/top_level.txt +0 -0
|
@@ -25,14 +25,14 @@ class ExifData(BaseFormDialog):
|
|
|
25
25
|
def add_bold_label(self, label):
|
|
26
26
|
label = QLabel(label)
|
|
27
27
|
label.setStyleSheet("font-weight: bold")
|
|
28
|
-
self.
|
|
28
|
+
self.form_layout.addRow(label)
|
|
29
29
|
|
|
30
30
|
def create_form(self):
|
|
31
|
-
self.
|
|
31
|
+
self.form_layout.addRow(icon_container())
|
|
32
32
|
|
|
33
33
|
spacer = QLabel("")
|
|
34
34
|
spacer.setFixedHeight(10)
|
|
35
|
-
self.
|
|
35
|
+
self.form_layout.addRow(spacer)
|
|
36
36
|
self.add_bold_label("EXIF data")
|
|
37
37
|
shortcuts = {}
|
|
38
38
|
if self.exif is None:
|
|
@@ -47,6 +47,6 @@ class ExifData(BaseFormDialog):
|
|
|
47
47
|
else:
|
|
48
48
|
d = f"{d}"
|
|
49
49
|
if "<<<" not in d and k != 'IPTCNAA':
|
|
50
|
-
self.
|
|
50
|
+
self.form_layout.addRow(f"<b>{k}:</b>", QLabel(d))
|
|
51
51
|
else:
|
|
52
|
-
self.
|
|
52
|
+
self.form_layout.addRow("-", QLabel("Empty EXIF dictionary"))
|
|
@@ -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,21 +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=VvDq5py76uDFeq6tv3EFMgTHX4rtDyt6nw0tPm3Wrkk,21
|
|
3
|
+
shinestacker/algorithms/__init__.py,sha256=1FwVJ3w9GGbFFkjYJRUedTvcdE4j0ieSgaH9RC9iCY4,877
|
|
4
|
+
shinestacker/algorithms/align.py,sha256=PvjxHgP4Q19jmt6LS3nGcimCOywHglmxXMlfxo7dCjc,22641
|
|
5
|
+
shinestacker/algorithms/balance.py,sha256=Rj4dPvEiXBb0VNJPJd60wYYgevlO7xmg7H9Onxmabbs,23508
|
|
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=
|
|
13
|
-
shinestacker/algorithms/
|
|
10
|
+
shinestacker/algorithms/multilayer.py,sha256=SfF51orenT3k15St_EUJcwnfOZ8Y5X5ZhStOWygjn1g,9838
|
|
11
|
+
shinestacker/algorithms/noise_detection.py,sha256=Ku0xgc_FFHzycSObDNXAux5scP3PVBeffGoYVdNJci0,9180
|
|
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
|
|
14
15
|
shinestacker/algorithms/sharpen.py,sha256=h7PMJBYxucg194Usp_6pvItPUMFYbT-ebAc_-7XBFUw,949
|
|
15
|
-
shinestacker/algorithms/stack.py,sha256=
|
|
16
|
-
shinestacker/algorithms/stack_framework.py,sha256=
|
|
17
|
-
shinestacker/algorithms/utils.py,sha256=
|
|
18
|
-
shinestacker/algorithms/vignetting.py,sha256=
|
|
16
|
+
shinestacker/algorithms/stack.py,sha256=UN2XHb-x-qXtescUCsOLK8GKSYx26AFpKa2xCMJKhVo,4997
|
|
17
|
+
shinestacker/algorithms/stack_framework.py,sha256=Y1uuXYbpCFuPYWumMhx040Q4FkylPwKkz6iXz8ay2aY,11831
|
|
18
|
+
shinestacker/algorithms/utils.py,sha256=jImR2XF73gsLRZMic0kv8cyCuO2Zq21tX4kUhaTcfzI,11301
|
|
19
|
+
shinestacker/algorithms/vignetting.py,sha256=3E-ulzw8dggAefyJwzQI056J5IGlV_vV2zPrO0DGVGk,10208
|
|
19
20
|
shinestacker/algorithms/white_balance.py,sha256=PMKsBtxOSn5aRr_Gkx1StHS4eN6kBN2EhNnhg4UG24g,501
|
|
20
21
|
shinestacker/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
22
|
shinestacker/app/about_dialog.py,sha256=pkH7nnxUP8yc0D3vRGd1jRb5cwi1nDVbQRk_OC9yLk8,4144
|
|
@@ -27,32 +28,32 @@ shinestacker/app/project.py,sha256=W0u715LZne_PNJvg9msSy27ybIjgDXiEAQdJ7_6BjYI,2
|
|
|
27
28
|
shinestacker/app/retouch.py,sha256=ZQ-nRKnHo6xurcP34RNqaAWkmuGBjJ5jE05hTQ_ycis,2482
|
|
28
29
|
shinestacker/config/__init__.py,sha256=aXxi-LmAvXd0daIFrVnTHE5OCaYeK1uf1BKMr7oaXQs,197
|
|
29
30
|
shinestacker/config/config.py,sha256=eBko2D3ADhLTIm9X6hB_a_WsIjwgfE-qmBVkhP1XSvc,1636
|
|
30
|
-
shinestacker/config/constants.py,sha256=
|
|
31
|
+
shinestacker/config/constants.py,sha256=M8sKfZdGBhWY_wuJ40F_CEPtspPoYhrva4WFHX5bD6s,7145
|
|
31
32
|
shinestacker/config/gui_constants.py,sha256=5DR-ET1oeMMD7lIsjvAwSuln89A7I9wy9VuAeRo2G64,2575
|
|
32
33
|
shinestacker/core/__init__.py,sha256=IUEIx6SQ3DygDEHN3_E6uKpHjHtUa4a_U_1dLd_8yEU,484
|
|
33
34
|
shinestacker/core/colors.py,sha256=kr_tJA1iRsdck2JaYDb2lS-codZ4Ty9gdu3kHfiWvuM,1340
|
|
34
35
|
shinestacker/core/core_utils.py,sha256=ulJhzen5McAb5n6wWNA_KB4U_PdTEr-H2TCQkVKUaOw,1421
|
|
35
36
|
shinestacker/core/exceptions.py,sha256=2-noG-ORAGdvDhL8jBQFs0xxZS4fI6UIkMqrWekgk2c,1618
|
|
36
|
-
shinestacker/core/framework.py,sha256=
|
|
37
|
+
shinestacker/core/framework.py,sha256=9uAvITAmzWnKFApLNtPf6Ah7nGJAxQ3I5nw_b2sVGQA,7628
|
|
37
38
|
shinestacker/core/logging.py,sha256=9SuSSy9Usbh7zqmLYMqkmy-VBkOJW000lwqAR0XQs30,3067
|
|
38
39
|
shinestacker/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
shinestacker/gui/action_config.py,sha256=
|
|
40
|
-
shinestacker/gui/action_config_dialog.py,sha256=
|
|
41
|
-
shinestacker/gui/base_form_dialog.py,sha256=
|
|
40
|
+
shinestacker/gui/action_config.py,sha256=xwJfNJwYbccL9M74NObjUc4_-EBVoHN5qDdToE19rMs,19075
|
|
41
|
+
shinestacker/gui/action_config_dialog.py,sha256=0j6oJfNGdZ9b9-ns0k7fM_iiD9jlMmVeCEEfzO3drpw,35134
|
|
42
|
+
shinestacker/gui/base_form_dialog.py,sha256=M_BvjpqUWe9YuecKg0pF3vUJ-1mqF24HjKujst2j3BA,753
|
|
42
43
|
shinestacker/gui/colors.py,sha256=m0pQQ-uvtIN1xmb_-N06BvC7pZYZZnq59ZSEJwutHuk,1432
|
|
43
44
|
shinestacker/gui/flow_layout.py,sha256=3yBU_z7VtvHKpx1H97CHVd81eq9pe1Dcja2EZBGGKcI,3791
|
|
44
|
-
shinestacker/gui/gui_images.py,sha256=
|
|
45
|
+
shinestacker/gui/gui_images.py,sha256=k39DpdsxcmYoRdHNNZj6OpFAas0GOHS4JSG542wfheg,5728
|
|
45
46
|
shinestacker/gui/gui_logging.py,sha256=kiZcrC2AFYCWgPZo0O5SKw-E5cFrezwf4anS3HjPuNw,8168
|
|
46
|
-
shinestacker/gui/gui_run.py,sha256=
|
|
47
|
-
shinestacker/gui/main_window.py,sha256=
|
|
48
|
-
shinestacker/gui/menu_manager.py,sha256=
|
|
49
|
-
shinestacker/gui/new_project.py,sha256=
|
|
50
|
-
shinestacker/gui/project_controller.py,sha256=
|
|
51
|
-
shinestacker/gui/project_converter.py,sha256=
|
|
52
|
-
shinestacker/gui/project_editor.py,sha256=
|
|
47
|
+
shinestacker/gui/gui_run.py,sha256=KZakfz8AkdagObB-0fLy9JUNau0hIreBHrjdf4ZRXYs,15440
|
|
48
|
+
shinestacker/gui/main_window.py,sha256=7zO1U_wGXsg7Owlre21PWwG9CMP5OcEey-aLtH4na0M,24404
|
|
49
|
+
shinestacker/gui/menu_manager.py,sha256=ZsND0e-vM263-6unwKUtYAtLbb4YgvIQabh5lCiT2ow,10179
|
|
50
|
+
shinestacker/gui/new_project.py,sha256=rlEaMTaxZ9eo5sZP5_zJx-vxPk9t8-I6X_aoYyVT2uQ,11171
|
|
51
|
+
shinestacker/gui/project_controller.py,sha256=9uNlt8fghS6QYyUpPyEw54Ia5RxwXLp1FaOtKxKArb8,15905
|
|
52
|
+
shinestacker/gui/project_converter.py,sha256=bNyC1_D_MjcTOCPlQln6CIIlX818-sw_j2omrfQIGQs,7279
|
|
53
|
+
shinestacker/gui/project_editor.py,sha256=mv_gJHhllAqjttueLKFnJotrtshDpCwh0TYfG6EGBnA,24965
|
|
53
54
|
shinestacker/gui/project_model.py,sha256=eRUmH3QmRzDtPtZoxgT6amKzN8_5XzwjHgEJeL-_JOE,4263
|
|
54
55
|
shinestacker/gui/select_path_widget.py,sha256=OfQImOmkzbvl5BBshmb7ePWrSGDJQ8VvyaAOypHAGd4,1023
|
|
55
|
-
shinestacker/gui/tab_widget.py,sha256=
|
|
56
|
+
shinestacker/gui/tab_widget.py,sha256=VgRmuktWXCgbXbV7c1Tho0--W5_EmmzXPfzRZgwhGfg,2965
|
|
56
57
|
shinestacker/gui/time_progress_bar.py,sha256=4_5DT_EzFdVJi5bgd9TEpoTJXeU3M08CF91cZLi75Wc,3016
|
|
57
58
|
shinestacker/gui/ico/focus_stack_bkg.png,sha256=Q86TgqvKEi_IzKI8m6aZB2a3T40UkDtexf2PdeBM9XE,163151
|
|
58
59
|
shinestacker/gui/ico/shinestacker.icns,sha256=3IshIOv0uFexYsAEPkE9xiyuw8mB5X5gffekOUhFlt0,45278
|
|
@@ -71,7 +72,7 @@ shinestacker/retouch/brush_preview.py,sha256=QKD3pL7n7YJbIibinUFYKv7lkyq_AWLpt6o
|
|
|
71
72
|
shinestacker/retouch/brush_tool.py,sha256=nxnEuvTioPNw1WeWsT20X1zl-LNZ8i-1ExOcihikEjk,8618
|
|
72
73
|
shinestacker/retouch/denoise_filter.py,sha256=TDUHzhRKlKvCa3D5SCYCZKTpjcl81kGwmONsgSDtO1k,440
|
|
73
74
|
shinestacker/retouch/display_manager.py,sha256=XPbOBmoYc_jNA791WkWkOSaFHb0ztCZechl2p2KSlwQ,9597
|
|
74
|
-
shinestacker/retouch/exif_data.py,sha256=
|
|
75
|
+
shinestacker/retouch/exif_data.py,sha256=WF40bTh0bwIqSQLMkGMCycEED06_q35-TqrBNAyaB-k,1889
|
|
75
76
|
shinestacker/retouch/file_loader.py,sha256=z02-A8_uDZxayI1NFTxT2GVUvEBWStchX9hlN1o5-0U,4784
|
|
76
77
|
shinestacker/retouch/filter_manager.py,sha256=SdYIZkZBUvuB6wDG0moGWav5sfEvIcB9ioUJR5wJFts,388
|
|
77
78
|
shinestacker/retouch/icon_container.py,sha256=6gw1HO1bC2FrdB4dc_iH81DQuLjzuvRGksZ2hKLT9yA,585
|
|
@@ -80,14 +81,14 @@ shinestacker/retouch/image_viewer.py,sha256=3ebrLHTDtGd_EbIT2nNFRUjH836rblmmK7jZ
|
|
|
80
81
|
shinestacker/retouch/io_gui_handler.py,sha256=pT-49uP0GROMOjZ70LoMLgXHnqSDq8ieAlAKGw0t1TM,11418
|
|
81
82
|
shinestacker/retouch/io_manager.py,sha256=JUAA--AK0mVa1PTErJTnBFjaXIle5Qs7Ow0Wkd8at0o,2437
|
|
82
83
|
shinestacker/retouch/layer_collection.py,sha256=Q7zoCYRn__jYkfrEC2lY1uKHWfOUbsJ27xaYHIoKVxo,5730
|
|
83
|
-
shinestacker/retouch/shortcuts_help.py,sha256
|
|
84
|
+
shinestacker/retouch/shortcuts_help.py,sha256=-beAkhxVia-wyuYMiAn2uQZxnUdSNadmZM77EdReoOk,3789
|
|
84
85
|
shinestacker/retouch/undo_manager.py,sha256=_ekbcOLcPbQLY7t-o8wf-b1uA6OPY9rRyLM-KqMlQRo,3257
|
|
85
86
|
shinestacker/retouch/unsharp_mask_filter.py,sha256=uFnth8fpZFGhdIgJCnS8x5v6lBQgJ3hX0CBke9pFXeM,3510
|
|
86
|
-
shinestacker/retouch/vignetting_filter.py,sha256=
|
|
87
|
+
shinestacker/retouch/vignetting_filter.py,sha256=MA97rQkSL0D-Nh-n2L4AiPR064RoTROkvza4tw84g9U,3658
|
|
87
88
|
shinestacker/retouch/white_balance_filter.py,sha256=glMBYlmrF-i_OrB3sGUpjZE6X4FQdyLC4GBy2bWtaFc,6056
|
|
88
|
-
shinestacker-1.1.
|
|
89
|
-
shinestacker-1.1.
|
|
90
|
-
shinestacker-1.1.
|
|
91
|
-
shinestacker-1.1.
|
|
92
|
-
shinestacker-1.1.
|
|
93
|
-
shinestacker-1.1.
|
|
89
|
+
shinestacker-1.2.1.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
|
|
90
|
+
shinestacker-1.2.1.dist-info/METADATA,sha256=6Cdeb52FCCmc0H48Ru2ydN6McvhemfdzB9Ye2bdCMhw,6951
|
|
91
|
+
shinestacker-1.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
92
|
+
shinestacker-1.2.1.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
|
|
93
|
+
shinestacker-1.2.1.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
|
|
94
|
+
shinestacker-1.2.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|