fix: 缩放的屏幕,灯条颜色预览效果错误
This commit is contained in:
parent
1a3102257e
commit
3e54d30498
@ -98,24 +98,19 @@ async fn write_led_strip_configs(
|
||||
async fn get_led_strips_sample_points(
|
||||
config: LedStripConfig,
|
||||
) -> Result<Vec<screenshot::LedSamplePoints>, String> {
|
||||
let displays = DisplayInfo::all().map_err(|e| {
|
||||
error!("can not read led strip config: {}", e);
|
||||
e.to_string()
|
||||
});
|
||||
let display = displays?.into_iter().find(|d| d.id == config.display_id);
|
||||
|
||||
if let None = display {
|
||||
let screenshot_manager = ScreenshotManager::global().await;
|
||||
let channels = screenshot_manager.channels.read().await;
|
||||
if let Some(rx) = channels.get(&config.display_id) {
|
||||
let rx = rx.clone();
|
||||
let screenshot = rx.borrow().clone();
|
||||
let width = screenshot.width;
|
||||
let height = screenshot.height;
|
||||
let sample_points =
|
||||
Screenshot::get_sample_point(&config, width as usize, height as usize);
|
||||
Ok(sample_points)
|
||||
} else {
|
||||
return Err(format!("display not found: {}", config.display_id));
|
||||
}
|
||||
|
||||
let display = display.unwrap();
|
||||
|
||||
let config = screenshot::Screenshot::get_sample_point(
|
||||
config,
|
||||
display.width as usize,
|
||||
display.height as usize,
|
||||
);
|
||||
Ok(config)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
|
@ -42,7 +42,7 @@ impl Screenshot {
|
||||
}
|
||||
|
||||
pub fn get_sample_point(
|
||||
config: LedStripConfig,
|
||||
config: &LedStripConfig,
|
||||
width: usize,
|
||||
height: usize,
|
||||
) -> Vec<LedSamplePoints> {
|
||||
|
@ -45,19 +45,19 @@ export const DisplayView: Component<DisplayViewProps> = (props) => {
|
||||
class="absolute bg-slate-50/10 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded backdrop-blur w-1/3 min-w-[300px] text-black"
|
||||
/>
|
||||
<LedStripPart
|
||||
class="row-start-1 col-start-2 flex-row"
|
||||
class="row-start-1 col-start-2 flex-row overflow-hidden"
|
||||
config={ledStripConfigs().find((c) => c.border === 'Top')}
|
||||
/>
|
||||
<LedStripPart
|
||||
class="row-start-2 col-start-1 flex-col"
|
||||
class="row-start-2 col-start-1 flex-col overflow-hidden"
|
||||
config={ledStripConfigs().find((c) => c.border === 'Left')}
|
||||
/>
|
||||
<LedStripPart
|
||||
class="row-start-2 col-start-3 flex-col"
|
||||
class="row-start-2 col-start-3 flex-col overflow-hidden"
|
||||
config={ledStripConfigs().find((c) => c.border === 'Right')}
|
||||
/>
|
||||
<LedStripPart
|
||||
class="row-start-3 col-start-2 flex-row"
|
||||
class="row-start-3 col-start-2 flex-row overflow-hidden"
|
||||
config={ledStripConfigs().find((c) => c.border === 'Bottom')}
|
||||
/>
|
||||
</section>
|
||||
|
@ -34,10 +34,14 @@ export const Pixel: Component<PixelProps> = (props) => {
|
||||
}));
|
||||
return (
|
||||
<div
|
||||
class="inline-block flex-shrink w-2 h-2 aspect-square rounded-full border border-black"
|
||||
style={style()}
|
||||
class="flex-auto flex h-full w-full justify-center items-center relative"
|
||||
title={props.color}
|
||||
>
|
||||
<div
|
||||
class="absolute top-px h-2 w-2 rounded-full shadow-2xl shadow-black"
|
||||
style={style()}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -52,6 +56,7 @@ export const LedStripPart: Component<LedStripPartProps> = (props) => {
|
||||
if (!localProps.config || !samplePoints) {
|
||||
return;
|
||||
}
|
||||
|
||||
let pendingCount = 0;
|
||||
const unlisten = listen<{
|
||||
base64_image: string;
|
||||
@ -67,12 +72,6 @@ export const LedStripPart: Component<LedStripPartProps> = (props) => {
|
||||
}
|
||||
pendingCount++;
|
||||
|
||||
console.log({
|
||||
samplePoints,
|
||||
displayId: event.payload.display_id,
|
||||
border: localProps.config!.border,
|
||||
});
|
||||
|
||||
invoke<string[]>('get_one_edge_colors', {
|
||||
samplePoints,
|
||||
displayId: event.payload.display_id,
|
||||
@ -107,7 +106,6 @@ export const LedStripPart: Component<LedStripPartProps> = (props) => {
|
||||
if (_colors) {
|
||||
return <For each={_colors}>{(item) => <Pixel color={item} />}</For>;
|
||||
} else if (localProps.config) {
|
||||
return null;
|
||||
return (
|
||||
<For each={new Array(localProps.config.len).fill(undefined)}>
|
||||
{() => <Pixel color="transparent" />}
|
||||
|
Loading…
Reference in New Issue
Block a user