From fa16864a3e18950a5d4be4f2d155b50ebc5d0569 Mon Sep 17 00:00:00 2001 From: Luke D Jones Date: Tue, 6 Apr 2021 11:54:55 +1200 Subject: [PATCH] Tweak the diagonal to be more correct --- asusctl/examples/animatrix-diag-png.rs | 9 +- asusctl/examples/animatrix-grid.rs | 4 +- asusctl/examples/animatrix-png.rs | 4 +- asusctl/src/main.rs | 5 +- daemon/src/ctrl_anime.rs | 2 +- .../0.0.1/Category name translation.csv | 15 - .../0.0.2/Category name translation.csv | 18 - data/anime/Festive/{0.0.2 => }/Cupid.gif | Bin data/anime/Festive/{0.0.2 => }/Firework.gif | Bin data/anime/Festive/{0.0.1 => }/Halloween.gif | Bin .../Festive/{0.0.1 => }/Happy Holiday.gif | Bin .../Festive/{0.0.2 => }/Happy new year.gif | Bin data/anime/Festive/{0.0.2 => }/Lantern.gif | Bin .../Festive/{0.0.2 => }/Valentine's Day.gif | Bin .../Festive/{0.0.2 => }/Year of the Ox.gif | Bin data/anime/Folder order.csv | 16 - .../0.0.1/Category name translation.csv | 15 - .../0.0.2/Category name translation.csv | 15 - data/anime/Gaming/{0.0.1 => }/Bird.gif | Bin data/anime/Gaming/{0.0.1 => }/Controller.gif | Bin data/anime/Gaming/{0.0.1 => }/FPS.gif | Bin data/anime/Gaming/{0.0.2 => }/Fight.gif | Bin data/anime/Gaming/{0.0.1 => }/Keyboard.gif | Bin data/anime/Gaming/{0.0.1 => }/MOBA.gif | Bin data/anime/Gaming/{0.0.2 => }/UFO.gif | Bin .../Music/0.0.1/Category name translation.csv | 17 - data/anime/Music/{0.0.2 => }/DJ.gif | Bin data/anime/Music/{0.0.1 => }/Music-player.gif | Bin .../0.0.1/Category name translation.csv | 15 - .../{0.0.1 => }/For-those-who-dare.gif | Bin .../{0.0.1 => }/For-those-who-dare_2.gif | Bin .../ROG Gallery/{0.0.1 => }/Fragment.gif | Bin .../{0.0.1 => }/Infinite-triangle.gif | Bin .../ROG Gallery/{0.0.1 => }/Kaleidoscope1.gif | Bin .../ROG Gallery/{0.0.1 => }/Kaleidoscope2.gif | Bin data/anime/ROG Gallery/Kaleidoscope2.png | Bin 0 -> 7932 bytes data/anime/ROG Gallery/{0.0.1 => }/Sunset.gif | Bin .../Trend/0.0.1/Category name translation.csv | 15 - .../Trend/0.0.2/Category name translation.csv | 15 - data/anime/Trend/{0.0.1 => }/Dog.gif | Bin data/anime/Trend/{0.0.1 => }/Ski.gif | Bin data/anime/Trend/{0.0.2 => }/Wave.gif | Bin data/anime/anime.readme | 6 + data/anime/diagonal-template.png | Bin 0 -> 7326 bytes data/anime/diagonal-template.svg | 1292 +++++++++++++++++ rog-anime/src/anime_diagonal.rs | 119 +- rog-anime/src/anime_gif.rs | 4 +- rog-anime/src/anime_image.rs | 6 +- rog-anime/src/error.rs | 15 +- 49 files changed, 1379 insertions(+), 228 deletions(-) delete mode 100755 data/anime/Festive/0.0.1/Category name translation.csv delete mode 100755 data/anime/Festive/0.0.2/Category name translation.csv rename data/anime/Festive/{0.0.2 => }/Cupid.gif (100%) rename data/anime/Festive/{0.0.2 => }/Firework.gif (100%) rename data/anime/Festive/{0.0.1 => }/Halloween.gif (100%) rename data/anime/Festive/{0.0.1 => }/Happy Holiday.gif (100%) rename data/anime/Festive/{0.0.2 => }/Happy new year.gif (100%) rename data/anime/Festive/{0.0.2 => }/Lantern.gif (100%) rename data/anime/Festive/{0.0.2 => }/Valentine's Day.gif (100%) rename data/anime/Festive/{0.0.2 => }/Year of the Ox.gif (100%) delete mode 100755 data/anime/Folder order.csv delete mode 100755 data/anime/Gaming/0.0.1/Category name translation.csv delete mode 100755 data/anime/Gaming/0.0.2/Category name translation.csv rename data/anime/Gaming/{0.0.1 => }/Bird.gif (100%) rename data/anime/Gaming/{0.0.1 => }/Controller.gif (100%) rename data/anime/Gaming/{0.0.1 => }/FPS.gif (100%) rename data/anime/Gaming/{0.0.2 => }/Fight.gif (100%) rename data/anime/Gaming/{0.0.1 => }/Keyboard.gif (100%) rename data/anime/Gaming/{0.0.1 => }/MOBA.gif (100%) rename data/anime/Gaming/{0.0.2 => }/UFO.gif (100%) delete mode 100755 data/anime/Music/0.0.1/Category name translation.csv rename data/anime/Music/{0.0.2 => }/DJ.gif (100%) rename data/anime/Music/{0.0.1 => }/Music-player.gif (100%) delete mode 100755 data/anime/ROG Gallery/0.0.1/Category name translation.csv rename data/anime/ROG Gallery/{0.0.1 => }/For-those-who-dare.gif (100%) rename data/anime/ROG Gallery/{0.0.1 => }/For-those-who-dare_2.gif (100%) rename data/anime/ROG Gallery/{0.0.1 => }/Fragment.gif (100%) rename data/anime/ROG Gallery/{0.0.1 => }/Infinite-triangle.gif (100%) rename data/anime/ROG Gallery/{0.0.1 => }/Kaleidoscope1.gif (100%) rename data/anime/ROG Gallery/{0.0.1 => }/Kaleidoscope2.gif (100%) create mode 100644 data/anime/ROG Gallery/Kaleidoscope2.png rename data/anime/ROG Gallery/{0.0.1 => }/Sunset.gif (100%) delete mode 100755 data/anime/Trend/0.0.1/Category name translation.csv delete mode 100755 data/anime/Trend/0.0.2/Category name translation.csv rename data/anime/Trend/{0.0.1 => }/Dog.gif (100%) rename data/anime/Trend/{0.0.1 => }/Ski.gif (100%) rename data/anime/Trend/{0.0.2 => }/Wave.gif (100%) create mode 100644 data/anime/anime.readme create mode 100644 data/anime/diagonal-template.png create mode 100644 data/anime/diagonal-template.svg diff --git a/asusctl/examples/animatrix-diag-png.rs b/asusctl/examples/animatrix-diag-png.rs index 187a1b25..5d8d8fa3 100644 --- a/asusctl/examples/animatrix-diag-png.rs +++ b/asusctl/examples/animatrix-diag-png.rs @@ -10,17 +10,12 @@ fn main() -> Result<(), Box> { let args: Vec = env::args().into_iter().collect(); if args.len() != 3 { - println!( - "Usage: " - ); + println!("Usage: "); println!("e.g, asusctl/examples/doom_large.png 0.8"); exit(-1); } - let matrix = AniMeDiagonal::from_png( - Path::new(&args[1]), - args[2].parse::().unwrap(), - )?; + let matrix = AniMeDiagonal::from_png(Path::new(&args[1]), args[2].parse::().unwrap())?; client .proxies() diff --git a/asusctl/examples/animatrix-grid.rs b/asusctl/examples/animatrix-grid.rs index 2e42c1cc..8678f1cd 100644 --- a/asusctl/examples/animatrix-grid.rs +++ b/asusctl/examples/animatrix-grid.rs @@ -13,12 +13,12 @@ fn main() { let mut i = 0; for (y, row) in tmp.iter_mut().enumerate() { - if y % 2 == 0 && i + 1 != row.len() -1 { + if y % 2 == 0 && i + 1 != row.len() - 1 { i += 1; dbg!(i); } row[row.len() - i] = 0x22; - if i > 5{ + if i > 5 { row[row.len() - i + 5] = 0x22; } if i > 10 { diff --git a/asusctl/examples/animatrix-png.rs b/asusctl/examples/animatrix-png.rs index f2d0e98e..53bc88df 100644 --- a/asusctl/examples/animatrix-png.rs +++ b/asusctl/examples/animatrix-png.rs @@ -10,9 +10,7 @@ fn main() -> Result<(), Box> { let args: Vec = env::args().into_iter().collect(); if args.len() != 8 { - println!( - "Usage: " - ); + println!("Usage: "); println!("e.g, asusctl/examples/doom_large.png 0.9 0.9 0.4 0.0 0.0,0.8"); exit(-1); } diff --git a/asusctl/src/main.rs b/asusctl/src/main.rs index cfa05145..a7354c33 100644 --- a/asusctl/src/main.rs +++ b/asusctl/src/main.rs @@ -8,10 +8,7 @@ use daemon::{ ctrl_rog_bios::RogBiosSupportedFunctions, ctrl_supported::SupportedFunctions, }; use gumdrop::{Opt, Options}; -use rog_anime::{ - AniMeDataBuffer, ANIME_DATA_LEN, - AniMeImage, Vec2, -}; +use rog_anime::{AniMeDataBuffer, AniMeImage, Vec2, ANIME_DATA_LEN}; use rog_dbus::AuraDbusClient; use rog_types::{ aura_modes::{self, AuraEffect, AuraModeNum}, diff --git a/daemon/src/ctrl_anime.rs b/daemon/src/ctrl_anime.rs index 14f29051..e7e9e713 100644 --- a/daemon/src/ctrl_anime.rs +++ b/daemon/src/ctrl_anime.rs @@ -182,7 +182,7 @@ impl CtrlAnimeDisplay { } #[inline] - fn do_set_boot(&self, status: bool) { + fn do_set_boot(&self, status: bool) { let mut flush = [0; PACKET_SIZE]; flush[0] = DEV_PAGE; flush[1] = SET; diff --git a/data/anime/Festive/0.0.1/Category name translation.csv b/data/anime/Festive/0.0.1/Category name translation.csv deleted file mode 100755 index c1590249..00000000 --- a/data/anime/Festive/0.0.1/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,Festive -zh-tw,節慶 -zh-cn,节庆 -nl,Feestelijk -fr,Festif -de,Festlich -ja,フェスティバル -pt,Festivo -ru,Праздники -es,Festivo -it,Feste -cs,Slavnostní -ko,축제 -tr,Eğlence diff --git a/data/anime/Festive/0.0.2/Category name translation.csv b/data/anime/Festive/0.0.2/Category name translation.csv deleted file mode 100755 index 12c5b8d5..00000000 --- a/data/anime/Festive/0.0.2/Category name translation.csv +++ /dev/null @@ -1,18 +0,0 @@ -Language,String -en,Festive -zh-tw,節慶 -zh-cn,节庆 -nl,Feestelijk -fr,Festif -de,Festlich -ja,フェスティバル -pt,Festivo -ru,Праздники -es,Festivo -it,Feste -cs,Slavnostní -ko,축제 -tr,Eğlence -fi,Juhlava -nb,Festlig -sv,Festligt diff --git a/data/anime/Festive/0.0.2/Cupid.gif b/data/anime/Festive/Cupid.gif similarity index 100% rename from data/anime/Festive/0.0.2/Cupid.gif rename to data/anime/Festive/Cupid.gif diff --git a/data/anime/Festive/0.0.2/Firework.gif b/data/anime/Festive/Firework.gif similarity index 100% rename from data/anime/Festive/0.0.2/Firework.gif rename to data/anime/Festive/Firework.gif diff --git a/data/anime/Festive/0.0.1/Halloween.gif b/data/anime/Festive/Halloween.gif similarity index 100% rename from data/anime/Festive/0.0.1/Halloween.gif rename to data/anime/Festive/Halloween.gif diff --git a/data/anime/Festive/0.0.1/Happy Holiday.gif b/data/anime/Festive/Happy Holiday.gif similarity index 100% rename from data/anime/Festive/0.0.1/Happy Holiday.gif rename to data/anime/Festive/Happy Holiday.gif diff --git a/data/anime/Festive/0.0.2/Happy new year.gif b/data/anime/Festive/Happy new year.gif similarity index 100% rename from data/anime/Festive/0.0.2/Happy new year.gif rename to data/anime/Festive/Happy new year.gif diff --git a/data/anime/Festive/0.0.2/Lantern.gif b/data/anime/Festive/Lantern.gif similarity index 100% rename from data/anime/Festive/0.0.2/Lantern.gif rename to data/anime/Festive/Lantern.gif diff --git a/data/anime/Festive/0.0.2/Valentine's Day.gif b/data/anime/Festive/Valentine's Day.gif similarity index 100% rename from data/anime/Festive/0.0.2/Valentine's Day.gif rename to data/anime/Festive/Valentine's Day.gif diff --git a/data/anime/Festive/0.0.2/Year of the Ox.gif b/data/anime/Festive/Year of the Ox.gif similarity index 100% rename from data/anime/Festive/0.0.2/Year of the Ox.gif rename to data/anime/Festive/Year of the Ox.gif diff --git a/data/anime/Folder order.csv b/data/anime/Folder order.csv deleted file mode 100755 index 95e87243..00000000 --- a/data/anime/Folder order.csv +++ /dev/null @@ -1,16 +0,0 @@ -Language,Trend,Gaming,Festive,Music,ROG theme -cs,1,2,3,4,5 -de,1,2,3,4,5 -en,1,2,3,4,5 -es,1,2,3,4,5 -fr,1,2,3,4,5 -it,1,2,3,4,5 -ja,1,2,3,4,5 -ko,1,2,3,4,5 -nl,1,2,3,4,5 -pt,1,2,3,4,5 -ru,1,2,3,4,5 -tr,1,2,3,4,5 -zh-cn,1,2,3,4,5 -zh-tw,1,2,3,4,5 -default,1,2,3,4,5 diff --git a/data/anime/Gaming/0.0.1/Category name translation.csv b/data/anime/Gaming/0.0.1/Category name translation.csv deleted file mode 100755 index e0ea4444..00000000 --- a/data/anime/Gaming/0.0.1/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,Gaming -zh-tw,遊戲 -zh-cn,游戏 -nl,Gaming -fr,Jeu -de,Gaming -ja,ゲーム -pt,Jogos -ru,Игры -es,Juegos -it,Gaming -cs,Hraní -ko,게이밍 -tr,Oyun diff --git a/data/anime/Gaming/0.0.2/Category name translation.csv b/data/anime/Gaming/0.0.2/Category name translation.csv deleted file mode 100755 index e0ea4444..00000000 --- a/data/anime/Gaming/0.0.2/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,Gaming -zh-tw,遊戲 -zh-cn,游戏 -nl,Gaming -fr,Jeu -de,Gaming -ja,ゲーム -pt,Jogos -ru,Игры -es,Juegos -it,Gaming -cs,Hraní -ko,게이밍 -tr,Oyun diff --git a/data/anime/Gaming/0.0.1/Bird.gif b/data/anime/Gaming/Bird.gif similarity index 100% rename from data/anime/Gaming/0.0.1/Bird.gif rename to data/anime/Gaming/Bird.gif diff --git a/data/anime/Gaming/0.0.1/Controller.gif b/data/anime/Gaming/Controller.gif similarity index 100% rename from data/anime/Gaming/0.0.1/Controller.gif rename to data/anime/Gaming/Controller.gif diff --git a/data/anime/Gaming/0.0.1/FPS.gif b/data/anime/Gaming/FPS.gif similarity index 100% rename from data/anime/Gaming/0.0.1/FPS.gif rename to data/anime/Gaming/FPS.gif diff --git a/data/anime/Gaming/0.0.2/Fight.gif b/data/anime/Gaming/Fight.gif similarity index 100% rename from data/anime/Gaming/0.0.2/Fight.gif rename to data/anime/Gaming/Fight.gif diff --git a/data/anime/Gaming/0.0.1/Keyboard.gif b/data/anime/Gaming/Keyboard.gif similarity index 100% rename from data/anime/Gaming/0.0.1/Keyboard.gif rename to data/anime/Gaming/Keyboard.gif diff --git a/data/anime/Gaming/0.0.1/MOBA.gif b/data/anime/Gaming/MOBA.gif similarity index 100% rename from data/anime/Gaming/0.0.1/MOBA.gif rename to data/anime/Gaming/MOBA.gif diff --git a/data/anime/Gaming/0.0.2/UFO.gif b/data/anime/Gaming/UFO.gif similarity index 100% rename from data/anime/Gaming/0.0.2/UFO.gif rename to data/anime/Gaming/UFO.gif diff --git a/data/anime/Music/0.0.1/Category name translation.csv b/data/anime/Music/0.0.1/Category name translation.csv deleted file mode 100755 index 2ca9b78b..00000000 --- a/data/anime/Music/0.0.1/Category name translation.csv +++ /dev/null @@ -1,17 +0,0 @@ -Language,String -en,Music -zh-tw,音樂 -zh-cn,音乐 -nl,Muziek -fr,Musique -de,Musik -ja,ミュージック -pt,Música -ru,Музыка -es,Música -it,Musica -cs,Hudba -ko,음악 -tr,Müzik -, -, diff --git a/data/anime/Music/0.0.2/DJ.gif b/data/anime/Music/DJ.gif similarity index 100% rename from data/anime/Music/0.0.2/DJ.gif rename to data/anime/Music/DJ.gif diff --git a/data/anime/Music/0.0.1/Music-player.gif b/data/anime/Music/Music-player.gif similarity index 100% rename from data/anime/Music/0.0.1/Music-player.gif rename to data/anime/Music/Music-player.gif diff --git a/data/anime/ROG Gallery/0.0.1/Category name translation.csv b/data/anime/ROG Gallery/0.0.1/Category name translation.csv deleted file mode 100755 index 6ab5be52..00000000 --- a/data/anime/ROG Gallery/0.0.1/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,ROG Gallery -zh-tw,ROG 主題 -zh-cn,ROG 主题 -nl,ROG-thema -fr,Thème ROG -de,ROG-Thema -ja,ROG テーマ -pt,Tema ROG -ru,Тема ROG -es,Tema de ROG -it,Tema ROG -cs,Téma ROG -ko,ROG 테마 -tr,ROG teması diff --git a/data/anime/ROG Gallery/0.0.1/For-those-who-dare.gif b/data/anime/ROG Gallery/For-those-who-dare.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/For-those-who-dare.gif rename to data/anime/ROG Gallery/For-those-who-dare.gif diff --git a/data/anime/ROG Gallery/0.0.1/For-those-who-dare_2.gif b/data/anime/ROG Gallery/For-those-who-dare_2.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/For-those-who-dare_2.gif rename to data/anime/ROG Gallery/For-those-who-dare_2.gif diff --git a/data/anime/ROG Gallery/0.0.1/Fragment.gif b/data/anime/ROG Gallery/Fragment.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/Fragment.gif rename to data/anime/ROG Gallery/Fragment.gif diff --git a/data/anime/ROG Gallery/0.0.1/Infinite-triangle.gif b/data/anime/ROG Gallery/Infinite-triangle.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/Infinite-triangle.gif rename to data/anime/ROG Gallery/Infinite-triangle.gif diff --git a/data/anime/ROG Gallery/0.0.1/Kaleidoscope1.gif b/data/anime/ROG Gallery/Kaleidoscope1.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/Kaleidoscope1.gif rename to data/anime/ROG Gallery/Kaleidoscope1.gif diff --git a/data/anime/ROG Gallery/0.0.1/Kaleidoscope2.gif b/data/anime/ROG Gallery/Kaleidoscope2.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/Kaleidoscope2.gif rename to data/anime/ROG Gallery/Kaleidoscope2.gif diff --git a/data/anime/ROG Gallery/Kaleidoscope2.png b/data/anime/ROG Gallery/Kaleidoscope2.png new file mode 100644 index 0000000000000000000000000000000000000000..709083ad0ecb1fb66cd03dc4adab73e914fb0cc0 GIT binary patch literal 7932 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 literal 0 HcmV?d00001 diff --git a/data/anime/ROG Gallery/0.0.1/Sunset.gif b/data/anime/ROG Gallery/Sunset.gif similarity index 100% rename from data/anime/ROG Gallery/0.0.1/Sunset.gif rename to data/anime/ROG Gallery/Sunset.gif diff --git a/data/anime/Trend/0.0.1/Category name translation.csv b/data/anime/Trend/0.0.1/Category name translation.csv deleted file mode 100755 index 20321136..00000000 --- a/data/anime/Trend/0.0.1/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,Trend -zh-tw,潮流 -zh-cn,潮流 -nl,Trend -fr,Tendance -de,Trend -ja,トレンド -pt,Tendência -ru,В тренде -es,Tendencia -it,Tendenza -cs,Trend -ko,트렌드 -tr,Popüler diff --git a/data/anime/Trend/0.0.2/Category name translation.csv b/data/anime/Trend/0.0.2/Category name translation.csv deleted file mode 100755 index 20321136..00000000 --- a/data/anime/Trend/0.0.2/Category name translation.csv +++ /dev/null @@ -1,15 +0,0 @@ -Language,String -en,Trend -zh-tw,潮流 -zh-cn,潮流 -nl,Trend -fr,Tendance -de,Trend -ja,トレンド -pt,Tendência -ru,В тренде -es,Tendencia -it,Tendenza -cs,Trend -ko,트렌드 -tr,Popüler diff --git a/data/anime/Trend/0.0.1/Dog.gif b/data/anime/Trend/Dog.gif similarity index 100% rename from data/anime/Trend/0.0.1/Dog.gif rename to data/anime/Trend/Dog.gif diff --git a/data/anime/Trend/0.0.1/Ski.gif b/data/anime/Trend/Ski.gif similarity index 100% rename from data/anime/Trend/0.0.1/Ski.gif rename to data/anime/Trend/Ski.gif diff --git a/data/anime/Trend/0.0.2/Wave.gif b/data/anime/Trend/Wave.gif similarity index 100% rename from data/anime/Trend/0.0.2/Wave.gif rename to data/anime/Trend/Wave.gif diff --git a/data/anime/anime.readme b/data/anime/anime.readme new file mode 100644 index 00000000..56c66885 --- /dev/null +++ b/data/anime/anime.readme @@ -0,0 +1,6 @@ +See https://blog.joshwalsh.me/asus-anime-matrix/ for details on how +the diagonal layout works. + +`diagonal-template.*` is provided from the website above. It is best to +export the final file to 36px height - no scaling is done in asusd or +rog-anime crate for diagonal displays. diff --git a/data/anime/diagonal-template.png b/data/anime/diagonal-template.png new file mode 100644 index 0000000000000000000000000000000000000000..e2dc90d564020ba973a6d65487a57069d74e87b3 GIT binary patch literal 7326 zcmeHKXH-+$)(yQ^X@X)5MMOg?2?9?4EshZ1dyS17E)RTv=K@-wuww>DWA5ryVwmMzbwit?tj_ zpJ@u~lWkV|%#PCD`Fx*m6)0YafVT0+^^`%nysnl}sg=`ohHmB}HW57g4!8Co)}sH8 z#^#$H4QSTclSAfiqcH)CUyg>S?7@{yMh8d0<#_1Wp--?Hd4%ouW|Gx7%fQedmlz(Fn z_#M~o>yq$5s)jRWqI9P$wqjJUc)4cl& zQhk++$mt=1nAudsO!A4!_Pv-GQ4{6*RI3Aur4>%FJChMdGpS`CC60O)&Db4%ebr(^ zbA816$)HJjn;<%ApTRE5^bvz>@|nW}PoPt#h$rv^kseDUwDE^$5t3!-L4L5qap#xU z$by3V~cQM14a_v)n-3A@=`uD>a3^Ig?Am)Y2@)Vwidy}vX+uAC(o0mgr*=^lkv zh;`Y+SWcE>!>4Z4*?er`IPC~exSQ)3mquv+N-fRo;MbV&AqIIVV%{XKu-_eWvnYKK z@vLnc{s3TnMB$UEmed}-9i!!edIescdmDv15**@pm{W4eMU)lIEa(f0QS6@^IEX|{n_LRGoEIermZNL1Df62aN!K7mBmX@E8eD&}u=5po_^lk(9?hIVICAM~*fX06Pd7A15&67u+SBE+)j_B?OfIIN>x%-Z2bO>K(b zZ8OOSd#EPZ`L~I6YX=MfXR{hkJx+sZ+~VwqEW@Oe+JGGQuyX1O z(`EhPaCbPA!w#97|LEWywsOiU)XMq(LD_lkKM7}~XvdzN?|P)7Fu@+02?{aALG4oA zrj&SYzh7+xn~zsHwqztvYRU2l1-+Fz-&L$r*eR7*G3-*^BjO*!evkjfQ?;?ChW>U* zbXa@E3XHmup6u^_@ILjU=Pj+MO?mTp;I124~ zT>v9*?3hDvM*pQt~-UB|SgQCHGbAl2&lq0>Grcl;Eyd1y}s^W*O!Htb9F+$z^~ z4#4^s%7J3eQ@@xCuz~AR`bSMgT4eI zk^P!ETG2a>-A~Dy4prg273-T3s`2=W6CJxtrn2Etyv%Zler$EqhPXUHw2J!FHI!#z z;tnVHRNnR2yai)3J@{LGi5W6 z6s}apt&SXPYc)zzn-QsagtAEyS1Z9KOP7c*2)yHJ7<12*I{6WL>1gCG9VFVXPYrjg z%(DZGQOlZd;55m}iE<`iz+KNeWfg6Il0CIaa+Ht!u;}C-b>dQ+Wos*{%No@k#`gI^ zLP6&rME2&LapUJSqN>HJCR*0+W*O`_bc<@2TNSOX)@vu2&$&m=8Vmvgb#hvias_=j z=B0Qhz^wz96_lo)HJyv|jW-e(PgXw9G-{f!irssd!W6c*Ld|5kR zBKRZ&gY!I<=t4;hGZ&$kMZL`z_1LXPDo^;lCo+~{_ymhT8$1}E)|PogV4uzy@Lx~&a1i|F-S$Xfv!)(;rE|Uwua>L+Sy2>)MhLPPOi9O zggc)dkkdC^rKh*8j8O7<4Ta_w0kz0}R!mXT-U$KjFl(dYxd*QSfev-&?W5^66*5;d zuj)+(UJKp4lD3KNPi5@?cszf9qxD)dZ%}aIbeQJ&c_%XQhR6qBU}7@x;~Gi{Bvkopiy{f+QYKoaz-C@%rta!WzY|M}$sszOZlG80x!r z^AZF7x^*rXcLCg}?L9KkWG4{6P-w)EE+FeY12si+_j|MKR2Gm7fE2yS@tXIR;c70v zxNfl!QxPar$xatjOKiZL$iVG(yvK;Mp0q;iW z-6WP80r%ew6pQtA&g})5(O_k}&Vui!a@B<_m~&Z}@WUYhLev&9HXfy2;Mvz$w-r2CXhd`Aei`IF3LiQ5hk- zLp=bChtqMHmN$1k4mN6GjmKS@J6a{b@)WboZMwu_w<0rno9DK*+qJ{DrJudb;pE#X zGNqrqLqh2(YtC-e@+baKouS=Bjr^k>#>$<5;^aYOO{k=BmCO;g#gl=C9w|vePOQmm z0T)BY2h?yk+rlzS$`w~$=;x$=fF{0SyI{+^!`^f;>O!Xtwn4>Oce>l32hT$)-=GkN;9n0C}65zA$~5_tLAlaBhifzi*^yF##Cnprc>ok}L9g`2Ei z?#jzCtJVbo0E-+2hqE-s;r=?_GY|Dy*-4d$+bqRmng^})=|@fq$MTnP=yXk6iJ!6D z`+(Q35NTYQaX;z0*vl4lU+e;qyD0*4b$lu8T4dxO8a`@!VrkztNBO|&JOfpYd=xwJ zvX?T>g5^u?=;!o`5dxUIvtceMM0)D2ZOXayvObTT&j{=hr-jmT#zNZ-wB;((ibMairB?geBk7|#>Fz9w}v4g;I;|< zgeJ(r%o2$6_9X$4Do7P5SU-^B4+m-S0yTVzWUQ5*!4C-LnWypl}Er4rW?_X+d6ed?471CbtFg9Yc>qBluE$=oD`+;1(v{)!UD*2?8-f=Kw=-^b6_bGsZO0YdU5QJJPRW>nZOAq|bqEdTb{qQH$p_1X4flKqP% zokISHtY325n%OSr=R}z9f8+jQ{a5YV#!M?SGpwFB!EY-)V?9mKR(vecn?NCAw;$EW zL_9{700$Gus$?*d2*ZF~kz_pB6#-X;suJ)>0tWsQl(83$j`t#vwxF2cDikJ;DjKdz zLcv|ZXefpVMk4WKFdhY01w-LTGFcT0#gJjDKS5adQkbg5d;Xl&78H>Qg+LMrNLK_B zj3A#k-LpK3;CyF}4WD>R1|U zg5WC9e?}}l@pLlNK@((3@$w7&XTpX;C0Wz)TWrEmFfY7XSS9F%PfXTEPhL;On~iiW-VBpF9}cg_O`lleTz*!eL-25)4Jzzz|qfC{`7I00zfGp&-crzC6@~`;)P1kR_{uKlN%J{dse$(}@ z82DGlzt#0$ql@>So{r?jJm>{5J2on3Ulz05V|6t#)B}jLXtK31-*|kC{-812!{M!q zMOP^^kU7XjH#XDfnqlW;LCGq)?I~e)+fv4QIyMe%V;K`X_ksKda^I`IbEJAQ6; zwoRY$`s_P)P&L$YQ!fo|xE5!KeyxkXJ7mRfo>cEj3YYn0aoKH zEoY~-<>bF`a$r8qmqJ_B_vuCk*z``G^##f1i1gn-Ar2BXmp~LjFK^iDJg`u9zm%N^ zZM9Hxw{I-*DZYbJa*#Ntw93iB*EF`FmDk&rPPNsXbv)t{ykK~oqeMi;FygrX<0k(Q zc6JV}4JvQV)L3)GY0Bp{w87@)2dmwm4>ZibvU`+k_p#}<>$!D6R7GwcVN>KZi%ih1 V4GVjS3X?W~vA(%pnXb#3{{!-C;9dX# literal 0 HcmV?d00001 diff --git a/data/anime/diagonal-template.svg b/data/anime/diagonal-template.svg new file mode 100644 index 00000000..95b55d61 --- /dev/null +++ b/data/anime/diagonal-template.svg @@ -0,0 +1,1292 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THISWAY UP + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/rog-anime/src/anime_diagonal.rs b/rog-anime/src/anime_diagonal.rs index ac7e8464..31b22982 100644 --- a/rog-anime/src/anime_diagonal.rs +++ b/rog-anime/src/anime_diagonal.rs @@ -26,6 +26,7 @@ impl AniMeDiagonal { &mut self.0 } + /// Get a full diagonal row where `x` `y` is the starting point and `len` is the length of data. fn get_row(&self, x: usize, y: usize, len: usize) -> Vec { let mut buf = Vec::with_capacity(len); for i in 0..len { @@ -37,10 +38,7 @@ impl AniMeDiagonal { /// Generate the base image from inputs. The result can be displayed as is or /// updated via scale, position, or angle then displayed again after `update()`. - pub fn from_png( - path: &Path, - bright: f32, - ) -> Result { + pub fn from_png(path: &Path, bright: f32) -> Result { use pix::el::Pixel; let data = std::fs::read(path)?; let data = std::io::Cursor::new(data); @@ -53,8 +51,7 @@ impl AniMeDiagonal { match raster { png_pong::PngRaster::Graya8(ras) => { width = ras.width(); - for (y, row) in ras.pixels() - .chunks(width as usize).enumerate() { + for (y, row) in ras.pixels().chunks(width as usize).enumerate() { for (x, px) in row.iter().enumerate() { let v = ::from(px.one() * bright); matrix.0[y][x] = v; @@ -75,61 +72,61 @@ impl From<&AniMeDiagonal> for AniMeDataBuffer { fn from(anime: &AniMeDiagonal) -> Self { let mut buf = vec![0u8; ANIME_DATA_LEN]; - buf[1..=33].copy_from_slice(&anime.get_row(2, 3, 33)); - buf[34..=66].copy_from_slice(&anime.get_row(2, 2, 33)); - buf[68..=100].copy_from_slice(&anime.get_row(2, 1, 33)); - buf[101..=134].copy_from_slice(&anime.get_row(2, 0, 34)); - buf[136..=169].copy_from_slice(&anime.get_row(3, 0, 34)); - buf[170..=202].copy_from_slice(&anime.get_row(4, 0, 33)); - buf[204..=236].copy_from_slice(&anime.get_row(5, 0, 33)); - buf[237..=268].copy_from_slice(&anime.get_row(6, 0, 32)); - buf[270..=301].copy_from_slice(&anime.get_row(7, 0, 32)); - buf[302..=332].copy_from_slice(&anime.get_row(8, 0, 31)); - buf[334..=364].copy_from_slice(&anime.get_row(9, 0, 31)); - buf[365..=394].copy_from_slice(&anime.get_row(10, 0, 30)); - buf[396..=425].copy_from_slice(&anime.get_row(11, 0, 30)); - buf[426..=454].copy_from_slice(&anime.get_row(12, 0, 29)); - buf[456..=484].copy_from_slice(&anime.get_row(13, 0, 29)); - buf[485..=512].copy_from_slice(&anime.get_row(14, 0, 28)); - buf[514..=541].copy_from_slice(&anime.get_row(15, 0, 28)); - buf[542..=568].copy_from_slice(&anime.get_row(16, 0, 27)); - buf[570..=596].copy_from_slice(&anime.get_row(17, 0, 27)); - buf[597..=622].copy_from_slice(&anime.get_row(18, 0, 26)); - buf[624..=649].copy_from_slice(&anime.get_row(19, 0, 26)); - buf[650..=674].copy_from_slice(&anime.get_row(20, 0, 25)); - buf[676..=700].copy_from_slice(&anime.get_row(21, 0, 25)); - buf[701..=724].copy_from_slice(&anime.get_row(22, 0, 24)); - buf[726..=749].copy_from_slice(&anime.get_row(23, 0, 24)); - buf[750..=772].copy_from_slice(&anime.get_row(24, 0, 23)); - buf[774..=796].copy_from_slice(&anime.get_row(25, 0, 23)); - buf[797..=818].copy_from_slice(&anime.get_row(26, 0, 22)); - buf[820..=841].copy_from_slice(&anime.get_row(27, 0, 22)); - buf[842..=862].copy_from_slice(&anime.get_row(28, 0, 21)); - buf[864..=884].copy_from_slice(&anime.get_row(29, 0, 21)); - buf[885..=904].copy_from_slice(&anime.get_row(30, 0, 20)); - buf[906..=925].copy_from_slice(&anime.get_row(31, 0, 20)); - buf[926..=944].copy_from_slice(&anime.get_row(32, 0, 19)); - buf[946..=964].copy_from_slice(&anime.get_row(33, 0, 19)); - buf[965..=982].copy_from_slice(&anime.get_row(34, 0, 18)); - buf[984..=1001].copy_from_slice(&anime.get_row(35, 0, 18)); - buf[1002..=1018].copy_from_slice(&anime.get_row(36, 0, 17)); - buf[1020..=1036].copy_from_slice(&anime.get_row(37, 0, 17)); - buf[1037..=1052].copy_from_slice(&anime.get_row(38, 0, 16)); - buf[1054..=1069].copy_from_slice(&anime.get_row(39, 0, 16)); - buf[1070..=1084].copy_from_slice(&anime.get_row(40, 0, 15)); - buf[1086..=1100].copy_from_slice(&anime.get_row(41, 0, 15)); - buf[1101..=1114].copy_from_slice(&anime.get_row(42, 0, 14)); - buf[1116..=1129].copy_from_slice(&anime.get_row(43, 0, 14)); - buf[1130..=1142].copy_from_slice(&anime.get_row(44, 0, 13)); - buf[1144..=1156].copy_from_slice(&anime.get_row(45, 0, 13)); - buf[1157..=1168].copy_from_slice(&anime.get_row(46, 0, 12)); - buf[1170..=1181].copy_from_slice(&anime.get_row(47, 0, 12)); - buf[1182..=1192].copy_from_slice(&anime.get_row(48, 0, 11)); - buf[1194..=1204].copy_from_slice(&anime.get_row(49, 0, 11)); - buf[1205..=1214].copy_from_slice(&anime.get_row(50, 0, 10)); - buf[1216..=1225].copy_from_slice(&anime.get_row(51, 0, 10)); - buf[1226..=1234].copy_from_slice(&anime.get_row(52, 0, 9)); - buf[1236..=1244].copy_from_slice(&anime.get_row(53, 0, 9)); + buf[1..=32].copy_from_slice(&anime.get_row(0, 3, 32)); + buf[34..=66].copy_from_slice(&anime.get_row(0, 2, 33)); + buf[69..=101].copy_from_slice(&anime.get_row(1, 2, 33)); // ?! + buf[102..=134].copy_from_slice(&anime.get_row(1, 1, 33)); + buf[137..=169].copy_from_slice(&anime.get_row(2, 1, 33)); + buf[170..=202].copy_from_slice(&anime.get_row(2, 0, 33)); + buf[204..=236].copy_from_slice(&anime.get_row(3, 0, 33)); + buf[237..=268].copy_from_slice(&anime.get_row(4, 0, 32)); + buf[270..=301].copy_from_slice(&anime.get_row(5, 0, 32)); + buf[302..=332].copy_from_slice(&anime.get_row(6, 0, 31)); + buf[334..=364].copy_from_slice(&anime.get_row(7, 0, 31)); + buf[365..=394].copy_from_slice(&anime.get_row(8, 0, 30)); + buf[396..=425].copy_from_slice(&anime.get_row(9, 0, 30)); + buf[426..=454].copy_from_slice(&anime.get_row(10, 0, 29)); + buf[456..=484].copy_from_slice(&anime.get_row(11, 0, 29)); + buf[485..=512].copy_from_slice(&anime.get_row(12, 0, 28)); + buf[514..=541].copy_from_slice(&anime.get_row(13, 0, 28)); + buf[542..=568].copy_from_slice(&anime.get_row(14, 0, 27)); + buf[570..=596].copy_from_slice(&anime.get_row(15, 0, 27)); + buf[597..=622].copy_from_slice(&anime.get_row(16, 0, 26)); + buf[624..=649].copy_from_slice(&anime.get_row(17, 0, 26)); + buf[650..=674].copy_from_slice(&anime.get_row(18, 0, 25)); + buf[676..=700].copy_from_slice(&anime.get_row(19, 0, 25)); + buf[701..=724].copy_from_slice(&anime.get_row(20, 0, 24)); + buf[726..=749].copy_from_slice(&anime.get_row(21, 0, 24)); + buf[750..=772].copy_from_slice(&anime.get_row(22, 0, 23)); + buf[774..=796].copy_from_slice(&anime.get_row(23, 0, 23)); + buf[797..=818].copy_from_slice(&anime.get_row(24, 0, 22)); + buf[820..=841].copy_from_slice(&anime.get_row(25, 0, 22)); + buf[842..=862].copy_from_slice(&anime.get_row(26, 0, 21)); + buf[864..=884].copy_from_slice(&anime.get_row(27, 0, 21)); + buf[885..=904].copy_from_slice(&anime.get_row(28, 0, 20)); + buf[906..=925].copy_from_slice(&anime.get_row(29, 0, 20)); + buf[926..=944].copy_from_slice(&anime.get_row(30, 0, 19)); + buf[946..=964].copy_from_slice(&anime.get_row(31, 0, 19)); + buf[965..=982].copy_from_slice(&anime.get_row(32, 0, 18)); + buf[984..=1001].copy_from_slice(&anime.get_row(33, 0, 18)); + buf[1002..=1018].copy_from_slice(&anime.get_row(34, 0, 17)); + buf[1020..=1036].copy_from_slice(&anime.get_row(35, 0, 17)); + buf[1037..=1052].copy_from_slice(&anime.get_row(36, 0, 16)); + buf[1054..=1069].copy_from_slice(&anime.get_row(37, 0, 16)); + buf[1070..=1084].copy_from_slice(&anime.get_row(38, 0, 15)); + buf[1086..=1100].copy_from_slice(&anime.get_row(39, 0, 15)); + buf[1101..=1114].copy_from_slice(&anime.get_row(40, 0, 14)); + buf[1116..=1129].copy_from_slice(&anime.get_row(41, 0, 14)); + buf[1130..=1142].copy_from_slice(&anime.get_row(42, 0, 13)); + buf[1144..=1156].copy_from_slice(&anime.get_row(43, 0, 13)); + buf[1157..=1168].copy_from_slice(&anime.get_row(44, 0, 12)); + buf[1170..=1181].copy_from_slice(&anime.get_row(45, 0, 12)); + buf[1182..=1192].copy_from_slice(&anime.get_row(46, 0, 11)); + buf[1194..=1204].copy_from_slice(&anime.get_row(47, 0, 11)); + buf[1205..=1214].copy_from_slice(&anime.get_row(48, 0, 10)); + buf[1216..=1225].copy_from_slice(&anime.get_row(49, 0, 10)); + buf[1226..=1234].copy_from_slice(&anime.get_row(50, 0, 9)); + buf[1236..=1244].copy_from_slice(&anime.get_row(51, 0, 9)); AniMeDataBuffer::from_vec(buf) } diff --git a/rog-anime/src/anime_gif.rs b/rog-anime/src/anime_gif.rs index 13783721..7ef5b2cf 100644 --- a/rog-anime/src/anime_gif.rs +++ b/rog-anime/src/anime_gif.rs @@ -1,10 +1,12 @@ use serde_derive::{Deserialize, Serialize}; -use std::{fs::File, path::{Path}, time::Duration}; +use std::{fs::File, path::Path, time::Duration}; use crate::{error::AnimeError, AniMeDataBuffer, AniMeDiagonal}; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct AniMeFrame { + /// Precomputed data for the frame. This can be transferred directly to the + /// the `asusd` daemon over dbus or converted to USB packet with `AniMePacketType::from(buffer)` data: AniMeDataBuffer, delay: Duration, } diff --git a/rog-anime/src/anime_image.rs b/rog-anime/src/anime_image.rs index ffac92ee..d0972987 100644 --- a/rog-anime/src/anime_image.rs +++ b/rog-anime/src/anime_image.rs @@ -40,7 +40,7 @@ impl Led { const fn bright(&self) -> u8 { self.2 } - + fn set_bright(&mut self, a: u8) { self.2 = a; } @@ -239,9 +239,7 @@ impl AniMeImage { let data = std::fs::read(path)?; let data = std::io::Cursor::new(data); let decoder = png_pong::Decoder::new(data)?.into_steps(); - let png_pong::Step { raster, delay: _ } = decoder - .last() - .ok_or(AnimeError::NoFrames)??; + let png_pong::Step { raster, delay: _ } = decoder.last().ok_or(AnimeError::NoFrames)??; let width; let pixels = match raster { diff --git a/rog-anime/src/error.rs b/rog-anime/src/error.rs index 6bfa7e3f..3033eea4 100644 --- a/rog-anime/src/error.rs +++ b/rog-anime/src/error.rs @@ -1,7 +1,7 @@ -use std::error::Error; -use std::fmt; use gif::DecodingError; use png_pong::decode::Error as PngError; +use std::error::Error; +use std::fmt; #[derive(Debug)] pub enum AnimeError { @@ -9,7 +9,9 @@ pub enum AnimeError { Io(std::io::Error), Png(PngError), Gif(DecodingError), - Format + Format, + /// The input was incorrect size, expected size is `IncorrectSize(width, height)` + IncorrectSize(u32, u32), } impl fmt::Display for AnimeError { @@ -21,6 +23,11 @@ impl fmt::Display for AnimeError { AnimeError::Png(e) => write!(f, "PNG error: {}", e), AnimeError::Gif(e) => write!(f, "GIF error: {}", e), AnimeError::Format => write!(f, "PNG file is not 8bit greyscale"), + AnimeError::IncorrectSize(width, height) => write!( + f, + "The input image size is incorrect, expected {}x{}", + width, height + ), } } } @@ -43,4 +50,4 @@ impl From for AnimeError { fn from(err: DecodingError) -> Self { AnimeError::Gif(err) } -} \ No newline at end of file +}