kopia lustrzana https://github.com/corrscope/corrscope
Implement split stereo bar colors
rodzic
cecd875278
commit
4509e9b69d
|
@ -1,5 +1,9 @@
|
||||||
## 0.11.0 (unreleased)
|
## 0.11.0 (unreleased)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Implement split stereo bar colors (#491)
|
||||||
|
|
||||||
### Major Changes
|
### Major Changes
|
||||||
|
|
||||||
- Encode audio using libopus instead of aac (#487)
|
- Encode audio using libopus instead of aac (#487)
|
||||||
|
|
|
@ -239,6 +239,9 @@ class MainWindow(qw.QMainWindow, Ui_MainWindow):
|
||||||
map_gui(self, self.model)
|
map_gui(self, self.model)
|
||||||
|
|
||||||
self.model.update_widget["render_stereo"].append(self.on_render_stereo_changed)
|
self.model.update_widget["render_stereo"].append(self.on_render_stereo_changed)
|
||||||
|
self.model.update_widget["render__global_stereo_bars"].append(
|
||||||
|
self.on_stereo_bars_changed
|
||||||
|
)
|
||||||
|
|
||||||
# Bind config to UI.
|
# Bind config to UI.
|
||||||
if isinstance(cfg_or_path, Config):
|
if isinstance(cfg_or_path, Config):
|
||||||
|
@ -287,6 +290,11 @@ class MainWindow(qw.QMainWindow, Ui_MainWindow):
|
||||||
self.model.cfg.render_stereo is Flatten.Stereo
|
self.model.cfg.render_stereo is Flatten.Stereo
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def on_stereo_bars_changed(self):
|
||||||
|
bars = self.model.cfg.render.global_stereo_bars
|
||||||
|
self.render__stereo_bar_right_color.setVisible(bars)
|
||||||
|
self.render__stereo_bar_right_colorL.setVisible(bars)
|
||||||
|
|
||||||
# Closing active document
|
# Closing active document
|
||||||
|
|
||||||
def _cancel_render_if_active(self, title: str) -> bool:
|
def _cancel_render_if_active(self, title: str) -> bool:
|
||||||
|
|
|
@ -290,6 +290,11 @@ class MainWindow(QWidget):
|
||||||
):
|
):
|
||||||
self.render__global_stereo_bars.setText(tr("Stereo Bars"))
|
self.render__global_stereo_bars.setText(tr("Stereo Bars"))
|
||||||
|
|
||||||
|
with add_row(
|
||||||
|
s, tr("Right Color"), OptionalColorWidget
|
||||||
|
) as self.render__stereo_bar_right_color:
|
||||||
|
pass
|
||||||
|
|
||||||
with add_row(
|
with add_row(
|
||||||
s,
|
s,
|
||||||
tr("Grid Opacity"),
|
tr("Grid Opacity"),
|
||||||
|
|
|
@ -149,7 +149,9 @@ class Font(DumpableAttrs, always_dump="*"):
|
||||||
|
|
||||||
|
|
||||||
class RendererConfig(
|
class RendererConfig(
|
||||||
DumpableAttrs, always_dump="*", exclude="viewport_width viewport_height"
|
DumpableAttrs,
|
||||||
|
always_dump="*",
|
||||||
|
exclude="stereo_bar_right_color viewport_width viewport_height",
|
||||||
):
|
):
|
||||||
width: int
|
width: int
|
||||||
height: int
|
height: int
|
||||||
|
@ -188,6 +190,7 @@ class RendererConfig(
|
||||||
|
|
||||||
global_stereo_bars: bool = False
|
global_stereo_bars: bool = False
|
||||||
stereo_bar_color: str = "#88ffff"
|
stereo_bar_color: str = "#88ffff"
|
||||||
|
stereo_bar_right_color: Optional[str] = None
|
||||||
|
|
||||||
# Label settings
|
# Label settings
|
||||||
label_font: Font = attr.ib(factory=Font)
|
label_font: Font = attr.ib(factory=Font)
|
||||||
|
@ -516,18 +519,19 @@ def px_from_points(pt: Point) -> Pixel:
|
||||||
|
|
||||||
@attr.dataclass(cmp=False)
|
@attr.dataclass(cmp=False)
|
||||||
class StereoBar:
|
class StereoBar:
|
||||||
rect: Rectangle
|
left: Rectangle
|
||||||
|
right: Rectangle
|
||||||
x_center: float
|
x_center: float
|
||||||
x_range: float
|
x_range: float
|
||||||
|
|
||||||
def set_range(self, left: float, right: float):
|
def set_range(self, left: float, right: float):
|
||||||
left = -left
|
"""{left, right} are ≥ 0."""
|
||||||
|
|
||||||
x = self.x_center + left * self.x_range
|
self.left.set_x(self.x_center - left * self.x_range)
|
||||||
width = (right - left) * self.x_range
|
self.left.set_width(left * self.x_range)
|
||||||
|
|
||||||
self.rect.set_x(x)
|
# self.right.x should always be self.x_center.
|
||||||
self.rect.set_width(width)
|
self.right.set_width(right * self.x_range)
|
||||||
|
|
||||||
|
|
||||||
class AbstractMatplotlibRenderer(_RendererBase, ABC):
|
class AbstractMatplotlibRenderer(_RendererBase, ABC):
|
||||||
|
@ -859,15 +863,22 @@ class AbstractMatplotlibRenderer(_RendererBase, ABC):
|
||||||
y_bottom = ax.get_ylim()[0]
|
y_bottom = ax.get_ylim()[0]
|
||||||
|
|
||||||
h = abs(y_bottom) / 16
|
h = abs(y_bottom) / 16
|
||||||
stereo_rect = Rectangle((x_center, y_bottom - h), 0, 2 * h)
|
|
||||||
stereo_rect.set_color(cfg.stereo_bar_color)
|
|
||||||
stereo_rect.set_linewidth(0)
|
|
||||||
ax.add_patch(stereo_rect)
|
|
||||||
|
|
||||||
stereo_bar = StereoBar(stereo_rect, x_center, x_range)
|
def create_rect(color):
|
||||||
|
rect = Rectangle((x_center, y_bottom - h), 0, 2 * h)
|
||||||
|
rect.set_color(color)
|
||||||
|
rect.set_linewidth(0)
|
||||||
|
|
||||||
|
ax.add_patch(rect)
|
||||||
|
self._artists.append(rect)
|
||||||
|
return rect
|
||||||
|
|
||||||
|
left = create_rect(cfg.stereo_bar_color)
|
||||||
|
right = create_rect(cfg.stereo_bar_right_color or cfg.stereo_bar_color)
|
||||||
|
|
||||||
|
stereo_bar = StereoBar(left, right, x_center, x_range)
|
||||||
wave_to_stereo_bar.append(stereo_bar)
|
wave_to_stereo_bar.append(stereo_bar)
|
||||||
self._artists.append(stereo_rect)
|
|
||||||
else:
|
else:
|
||||||
wave_to_stereo_bar.append(None)
|
wave_to_stereo_bar.append(None)
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue