From ee02f7fe02b71c3d376ad9c93bef70f2afe86f24 Mon Sep 17 00:00:00 2001 From: DSLitvinov Date: Fri, 2 Sep 2022 10:57:11 +0300 Subject: [PATCH] initial script --- mos-plymputh/lock.png | Bin 616 -> 613 bytes mos-plymputh/lock.svg | 8 +-- mos-plymputh/mos.plymouth | 5 +- mos-plymputh/mos.script | 143 +++++++++++++++++++++++++++++++++++++- 4 files changed, 149 insertions(+), 7 deletions(-) diff --git a/mos-plymputh/lock.png b/mos-plymputh/lock.png index 62d8fab9a38a58882c04c90ffe5ef5540d82ecef..1838bae03c35aa91928b39a5dbac4e8e7fd41407 100644 GIT binary patch delta 530 zcmV+t0`2|i1my&fUVrjQL_t(oh3%QYYZO5khM#Y9B%N3&X)Y4QN(8||iy(puLPRW6 zh^2*vh2Vc=X)hucBL3(^5rS5U@f0j9u24|qdo5HP#_ZnA+%4f`9$47fo%fxW*>9KG zU6aH-(d>1AT;?wDU`9U2fHUrX!pw%iK0v@&(x_>gSHNT7?SIrGNh;lzB;9oPO?Ow~ z_FB>nNsFc9TH#H1R?;0{rEs3M%jU82A>nms5o~fy2I@p=%?2JXuMINra}eSmM>d zF*R_DcPA;!%KedZhe;)|@MmY*8I9@iTWC80bNEhI1NTi0+&49F-_*c;Qv>%+ z4cs?1aNpFxee>T1-eESc^r;AV*VQ5A3;ZQujsCBO15b#)Y{r!Sl-V=pu7-aC0`w5w U9Pp=@01E&B07*qoM6N<$f@%o@oB#j- delta 533 zcmV+w0_y$c1n2~iUVrsTL_t(oh3%Qat4&c9hre~)o|z1Y!6jrQr3@Inq)3XC5d($> zMl$dpnfU`G8Bk;FSAZ7W_AsDo*J0b!#5;7B3~BZprpsZ_0+)B3ZIqqfWLeH zrJ3DhQn4jqy!QQ0CjGrA=_+uv75B@`&H&G%4HEii;O;A}o_sIqLS(#2y6o;BTRGlH zYGOT7gs-#~dVecvZ^nf)boUQoE=iYS;Amkp zI~)uJJdBOqfcqV}J4v}q><&JE2Yw{PwiyFIgYll&z!c$dt|!DzBfLFXj>Ig&q;hh}xs6T=tH5#K%d`ozPQ?lSoh-n9;AGc?S;E`;bBU&N&AEG~tHPzJ!lkLgrK!TD zsluhH!lkLgrK!TD`R{~R>F1F?76I?NCd9mfzX&W+{%kn#l-8TgHo1SwY#DRc!+!u7 Xtq+9j*$!HC00000NkvXXu0mjf8( diff --git a/mos-plymputh/mos.plymouth b/mos-plymputh/mos.plymouth index 81f5288..761d350 100644 --- a/mos-plymputh/mos.plymouth +++ b/mos-plymputh/mos.plymouth @@ -4,5 +4,6 @@ Description=MOS Plymouth theme. ModuleName=script [script] -ImageDir=DESTDIR/plymouth/themes/mos-plymputh -ScriptFile=DESTDIR/plymouth/themes/mos-plymputh/mos.script +ImageDir=/usr/share/plymouth/themes/mos-plymputh +ScriptFile=/usr/share/plymouth/themes/mos-plymputh/mos.script +UseFirmwareBackground=false diff --git a/mos-plymputh/mos.script b/mos-plymputh/mos.script index 8d1c8b6..85a5625 100644 --- a/mos-plymputh/mos.script +++ b/mos-plymputh/mos.script @@ -1 +1,142 @@ - +# background +fun imgscalelogo( image, scaleX, scaleY ) +{ + image.Scale( image.GetWidth() * scaleX, image.GetHeight() * scaleY ); +} + +# background +if( Window.GetWidth()/Window.GetHeight() > 1.5 ) +{ + logo.raw = Image("background16x9.png"); +} +else +{ + logo.raw = Image("background4x3.png"); +} + +logo.image = imgscalelogo( logo.raw, Window.GetWidth()/logo.raw.GetWidth(), Window.GetHeight()/logo.raw.GetHeight()); +logo.sprite = Sprite(logo.image); +logo.sprite.SetPosition(0, 0, 0); + +#----------------------------------------- Dialog -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth()) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth(); + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index]) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprites = []; +message_sprite_count = 0; +message_sprite_y = 10; + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprites[message_sprite_count] = Sprite(my_image); + message_sprites[message_sprite_count].SetPosition(10, message_sprite_y, 10000); + message_sprites[message_sprite_count].text = text; + message_sprite_count++; + message_sprite_y += my_image.GetHeight(); +} + +fun hide_message_callback (text) +{ + for (i = 0; i < message_sprite_count; i++) + { + if (message_sprites[i].text == text) + message_sprites[i] = NULL; + } +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); + +