feature/gui-configuration:支持从 GUI 配置程序。 #4
| @@ -41,7 +41,7 @@ impl Screenshot { | ||||
|                 config.display_width, | ||||
|                 led_strip_config | ||||
|                     .global_start_position | ||||
|                     .abs_diff(led_strip_config.global_end_position), | ||||
|                     .abs_diff(led_strip_config.global_end_position) + 1, | ||||
|                 5, | ||||
|             ), | ||||
|             None => { | ||||
| @@ -56,7 +56,7 @@ impl Screenshot { | ||||
|                     config.display_width, | ||||
|                     led_strip_config | ||||
|                         .global_start_position | ||||
|                         .abs_diff(led_strip_config.global_end_position), | ||||
|                         .abs_diff(led_strip_config.global_end_position) + 1, | ||||
|                     5, | ||||
|                 ); | ||||
|                 points | ||||
| @@ -81,7 +81,7 @@ impl Screenshot { | ||||
|                     config.display_height, | ||||
|                     led_strip_config | ||||
|                         .global_start_position | ||||
|                         .abs_diff(led_strip_config.global_end_position), | ||||
|                         .abs_diff(led_strip_config.global_end_position) + 1, | ||||
|                     5, | ||||
|                 ); | ||||
|                 points | ||||
| @@ -103,7 +103,7 @@ impl Screenshot { | ||||
|                     config.display_height, | ||||
|                     led_strip_config | ||||
|                         .global_start_position | ||||
|                         .abs_diff(led_strip_config.global_end_position), | ||||
|                         .abs_diff(led_strip_config.global_end_position) + 1, | ||||
|                     5, | ||||
|                 ); | ||||
|                 points | ||||
| @@ -212,23 +212,6 @@ impl Screenshot { | ||||
|         colors | ||||
|     } | ||||
|  | ||||
|     pub fn get_top_colors(&self) -> Vec<LedColor> { | ||||
|         self.get_one_edge_colors(&self.sample_points.top) | ||||
|     } | ||||
|  | ||||
|     pub fn get_top_of_led_start_at(&self) -> usize { | ||||
|         self.config | ||||
|             .led_strip_of_borders.top | ||||
|             .and_then(|c| Some(c.global_start_position)) | ||||
|             .unwrap_or(0) | ||||
|     } | ||||
|     pub fn get_top_of_led_end_at(&self) -> usize { | ||||
|         self.config | ||||
|             .led_strip_of_borders.top | ||||
|             .and_then(|c| Some(c.global_end_position)) | ||||
|             .unwrap_or(0) | ||||
|     } | ||||
|  | ||||
|     pub async fn to_webp_base64(&self) -> String { | ||||
|         let bitmap = &self.bitmap; | ||||
|         let stride = bitmap.len() / self.config.display_height; | ||||
| @@ -280,6 +263,11 @@ impl Screenshot { | ||||
|             colors, | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|     pub fn get_config(&self) -> DisplayConfig { | ||||
|         self.config | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[derive(Clone, Serialize, Deserialize, Debug)] | ||||
|   | ||||
| @@ -38,4 +38,18 @@ impl Manager { | ||||
|             .await | ||||
|             .map_err(|error| anyhow::anyhow!("mqtt publish failed. {}", error)) | ||||
|     } | ||||
|  | ||||
|     pub async fn publish_led_sub_pixels(&self, payload: Vec<u8>) -> anyhow::Result<()> { | ||||
|  | ||||
|         self.mqtt | ||||
|             .client | ||||
|             .publish( | ||||
|                 "display-ambient-light/desktop/colors", | ||||
|                 rumqttc::QoS::AtLeastOnce, | ||||
|                 false, | ||||
|                 payload, | ||||
|             ) | ||||
|             .await | ||||
|             .map_err(|error| anyhow::anyhow!("mqtt publish failed. {}", error)) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -183,8 +183,11 @@ export const DraggableStrip: FC<DraggableStripProp> = ({ | ||||
|       <div | ||||
|         tw="border border-gray-700 h-3 w-full rounded-full" | ||||
|         css={css` | ||||
|           grid-column-start: ${(config?.global_start_position ?? 0) + 1}; | ||||
|           grid-column-end: ${(config?.global_end_position ?? 0) + 1}; | ||||
|           grid-column: ${Math.min( | ||||
|               config?.global_start_position ?? 0, | ||||
|               config?.global_end_position ?? 0, | ||||
|             ) + 1} / span | ||||
|             ${Math.abs(config?.global_start_position - config?.global_end_position) + 1}; | ||||
|           grid-row-start: ${index + 1}; | ||||
|           cursor: ew-resize; | ||||
|           transform: translateX(${boxTranslateX}px); | ||||
|   | ||||
| @@ -37,7 +37,7 @@ export const LedStripEditor: FC<LedStripEditorProps> = ({ | ||||
|         }); | ||||
|       } | ||||
|     } else { | ||||
|       onChange?.(new LedStripConfig(0, 0, 1)); | ||||
|       onChange?.(new LedStripConfig(0, 0, 0)); | ||||
|     } | ||||
|   }, [config, onChange]); | ||||
|   const removeLed = useCallback(() => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user