Skip to content

Commit 7efbd3f

Browse files
committed
fix: sync palette cycle to renderer on config load
1 parent 705994a commit 7efbd3f

2 files changed

Lines changed: 43 additions & 1 deletion

File tree

src/app/mod.rs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ pub fn sync_renderer_caches(runtime_state: &RuntimeState, renderer: &mut Termina
8181
renderer.set_reverse_palette(runtime_state.reverse_palette);
8282
renderer.set_charset(runtime_state.current_charset());
8383
renderer.set_intensity_mapping(Some(runtime_state.intensity_mapping.clone()));
84+
renderer.set_palette_cycle(runtime_state.palette_cycle);
8485
renderer.set_window_frame(runtime_state.window_frame);
8586
renderer.set_dither_mode(runtime_state.dither_mode);
8687
}
@@ -1242,7 +1243,7 @@ pub fn export_webm_mode(
12421243
mod tests {
12431244
use super::*;
12441245
use crate::cli::{ColorMode, PauseStyle};
1245-
use crate::render::palette::{IntensityMapping, Palette};
1246+
use crate::render::palette::{IntensityMapping, Palette, PaletteCycle, PaletteCycleMode};
12461247
use crate::simulation::config::WindowFrame;
12471248
use crate::terminal::control::MouseInteractionMode;
12481249

@@ -1283,6 +1284,42 @@ mod tests {
12831284
assert_eq!(r.window_frame(), rs.window_frame);
12841285
}
12851286

1287+
#[test]
1288+
fn sync_renderer_caches_pushes_palette_cycle() {
1289+
let mut rs = RuntimeState::new(
1290+
42,
1291+
InitMode::Random,
1292+
Preset::Organic,
1293+
0,
1294+
0,
1295+
MouseInteractionMode::Disabled,
1296+
3.0,
1297+
IntensityMapping::linear(),
1298+
&SimConfig::default(),
1299+
PauseStyle::Vignette,
1300+
false,
1301+
false,
1302+
);
1303+
let mut r = TerminalRenderer::new(
1304+
80,
1305+
24,
1306+
Palette::Organic,
1307+
Charset::HalfBlock,
1308+
false,
1309+
false,
1310+
ColorMode::TrueColor,
1311+
None,
1312+
);
1313+
let non_identity = PaletteCycle {
1314+
cycles: 3,
1315+
mode: PaletteCycleMode::Wrap,
1316+
};
1317+
rs.palette_cycle = non_identity;
1318+
sync_renderer_caches(&rs, &mut r);
1319+
assert_eq!(r.palette_cycle().cycles, 3);
1320+
assert_eq!(r.palette_cycle().mode, PaletteCycleMode::Wrap);
1321+
}
1322+
12861323
#[test]
12871324
fn apply_live_params_syncs_sim_config_and_sigma() {
12881325
let mut rs = RuntimeState::new(

src/terminal/renderer.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,11 @@ impl TerminalRenderer {
266266
self.intensity_mapping.as_ref()
267267
}
268268

269+
/// Returns the active palette cycle.
270+
pub fn palette_cycle(&self) -> palette::PaletteCycle {
271+
self.palette_cycle
272+
}
273+
269274
/// Returns the active window frame style.
270275
pub fn window_frame(&self) -> crate::simulation::config::WindowFrame {
271276
self.window_frame

0 commit comments

Comments
 (0)