NEW:update color calculation in printed thumbnails
Jira: none Change-Id: Ied8dfd9d10b2dbf57629fc7c78f2c39add073f2e (cherry picked from commit 6a8cf38a51778fbd054df3623454a97856b7de60)
This commit is contained in:
parent
47c442a61e
commit
4a0d2c9094
|
@ -4127,9 +4127,28 @@ void SelectMachineDialog::change_default_normal(int old_filament_id, wxColour te
|
||||||
unsigned char *new_px = (unsigned char *) m_preview_thumbnail_data.pixels.data() + 4 * (rr + c);
|
unsigned char *new_px = (unsigned char *) m_preview_thumbnail_data.pixels.data() + 4 * (rr + c);
|
||||||
if (no_light_px[3] == (255 - old_filament_id)) {
|
if (no_light_px[3] == (255 - old_filament_id)) {
|
||||||
new_px[3] = origin_px[3]; // alpha
|
new_px[3] = origin_px[3]; // alpha
|
||||||
for (size_t i = 0; i < 3; i++) {
|
int origin_rgb = origin_px[0] + origin_px[1] + origin_px[2];
|
||||||
unsigned char cur_single_color = i == 0 ? ams_color.Red() : (i == 1 ? ams_color.Green() : ams_color.Blue());
|
int no_light_px_rgb = no_light_px[0] + no_light_px[1] + no_light_px[2];
|
||||||
new_px[i] = std::clamp(cur_single_color + (origin_px[i] - no_light_px[i]),0,255);
|
unsigned char i = 0;
|
||||||
|
if (origin_rgb >= no_light_px_rgb) {//Brighten up
|
||||||
|
unsigned char cur_single_color = ams_color.Red();
|
||||||
|
new_px[i] = std::clamp(cur_single_color + (origin_px[i] - no_light_px[i]), 0, 255);
|
||||||
|
i++;
|
||||||
|
cur_single_color = ams_color.Green();
|
||||||
|
new_px[i] = std::clamp(cur_single_color + (origin_px[i] - no_light_px[i]), 0, 255);
|
||||||
|
i++;
|
||||||
|
cur_single_color = ams_color.Blue();
|
||||||
|
new_px[i] = std::clamp(cur_single_color + (origin_px[i] - no_light_px[i]), 0, 255);
|
||||||
|
} else {//Dimming
|
||||||
|
float ratio = origin_rgb / (float) no_light_px_rgb;
|
||||||
|
unsigned char cur_single_color = ams_color.Red();
|
||||||
|
new_px[i] = std::clamp((int)(cur_single_color * ratio), 0, 255);
|
||||||
|
i++;
|
||||||
|
cur_single_color = ams_color.Green();
|
||||||
|
new_px[i] = std::clamp((int) (cur_single_color * ratio), 0, 255);
|
||||||
|
i++;
|
||||||
|
cur_single_color = ams_color.Blue();
|
||||||
|
new_px[i] = std::clamp((int) (cur_single_color * ratio), 0, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue