mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
feat: add privisional G635L image and gif support
This commit is contained in:
@@ -164,7 +164,7 @@ impl AnimeImage {
|
||||
/// first_x
|
||||
/// ```
|
||||
///
|
||||
/// For G835L (inverted pattern - triangle grows then rectangle shifts):
|
||||
/// For G835L/G635L (inverted pattern - triangle grows then rectangle shifts):
|
||||
/// ```text
|
||||
/// ● <- Row 0: first_x = 0, width = 1
|
||||
/// ● <- Row 1: first_x = 0 (stagger), width = 1
|
||||
@@ -193,8 +193,8 @@ impl AnimeImage {
|
||||
// and then their offset grows by one every two rows
|
||||
(y - 9) / 2
|
||||
}
|
||||
AnimeType::G835L => {
|
||||
// G835L has inverted geometry - triangle at top-left, rectangle shifts right
|
||||
AnimeType::G635L | AnimeType::G835L => {
|
||||
// G835L/G635L have inverted geometry - triangle at top-left, rectangle shifts right
|
||||
// Triangle (rows 0-27): no cumulative shift, just alternating stagger
|
||||
// Rectangle (rows 28-67): shifts right by ~0.5px per row
|
||||
if y < 28 {
|
||||
@@ -245,8 +245,8 @@ impl AnimeImage {
|
||||
}
|
||||
38 - Self::first_x(anime_type, y) + y % 2
|
||||
}
|
||||
AnimeType::G835L => {
|
||||
// G835L rows GROW then stay constant (inverted from other devices)
|
||||
AnimeType::G635L | AnimeType::G835L => {
|
||||
// G835L/G635L rows GROW then stay constant (inverted from other devices)
|
||||
// Triangle (rows 0-27): pairs of rows with same length, 1→14
|
||||
// Rectangle (rows 28-67): constant 15 LEDs
|
||||
if y < 28 {
|
||||
@@ -270,6 +270,7 @@ impl AnimeImage {
|
||||
// 33.0 = Longest row LED count (physical) plus half-pixel offset
|
||||
AnimeType::GA401 => (33.0 + 0.5) * Self::scale_x(anime_type),
|
||||
AnimeType::GU604 => (38.0 + 0.5) * Self::scale_x(anime_type),
|
||||
AnimeType::G635L => (33.0 + 0.5) * Self::scale_x(anime_type),
|
||||
AnimeType::G835L => (33.0 + 0.5) * Self::scale_x(anime_type),
|
||||
_ => (35.0 + 0.5) * Self::scale_x(anime_type),
|
||||
}
|
||||
@@ -280,6 +281,7 @@ impl AnimeImage {
|
||||
match anime_type {
|
||||
AnimeType::GA401 => 55,
|
||||
AnimeType::GU604 => 62,
|
||||
AnimeType::G635L => 68,
|
||||
AnimeType::G835L => 68,
|
||||
_ => 61,
|
||||
}
|
||||
@@ -291,6 +293,7 @@ impl AnimeImage {
|
||||
// 54.0 = End column LED count (physical) plus one dead pixel
|
||||
AnimeType::GA401 => (54.0 + 1.0) * Self::scale_y(anime_type),
|
||||
AnimeType::GU604 => 62.0 * Self::scale_y(anime_type),
|
||||
AnimeType::G635L => 68.0 * Self::scale_y(anime_type),
|
||||
AnimeType::G835L => 68.0 * Self::scale_y(anime_type),
|
||||
// GA402 may not have dead pixels and require only the physical LED count
|
||||
_ => 61.0 * Self::scale_y(anime_type),
|
||||
@@ -449,7 +452,7 @@ impl AnimeImage {
|
||||
}
|
||||
|
||||
fn led_center(&self) -> Vec2 {
|
||||
if self.anime_type != AnimeType::G835L {
|
||||
if !matches!(self.anime_type, AnimeType::G635L | AnimeType::G835L) {
|
||||
return Vec2::new(20.0, 20.0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user