]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[script] Add support for loading the system logo image
authorCharlie Brej <cbrej@cs.man.ac.uk>
Tue, 30 Jun 2009 16:38:48 +0000 (17:38 +0100)
committerCharlie Brej <cbrej@cs.man.ac.uk>
Tue, 30 Jun 2009 16:38:48 +0000 (17:38 +0100)
This is done specifying the filename is special://logo. Not sure if this is the
best way of implementing but it is expandable to other special files.

src/plugins/splash/script/script-lib-image.c
themes/script/script.script

index cf051cabb7fe3111ae23deabd92502c58b9f1f36..81fa019b50837e7f3a9536c59d8c7ea52024d81f 100644 (file)
@@ -35,7 +35,23 @@ static script_return image_new (script_state* state, void* user_data)
  
  script_obj* script_obj_filename = script_obj_hash_get_element (state->local, "filename");
  filename = script_obj_as_string(script_obj_filename);
- asprintf(&path_filename, "%s/%s", data->image_dir, filename);
+ char* test_string = filename;
+ char* prefix_string = "special://";
+ while (*test_string && *prefix_string && *test_string == *prefix_string){
+    test_string++;
+    prefix_string++;
+    }
+ if (!*prefix_string) {
+    if (strcmp(test_string, "logo") == 0)
+        path_filename = strdup (PLYMOUTH_LOGO_FILE);
+    else
+        path_filename = strdup ("");
+    }
+ else
+    asprintf(&path_filename, "%s/%s", data->image_dir, filename);
  script_obj_unref(script_obj_filename);
  
  ply_image_t *image = ply_image_new (path_filename);
index 59a43e97998ee3bc2e42973cf96eaa8b1645c6b9..dccea015af30f4cfd71a330b67d8f8326d9fd5da 100644 (file)
@@ -1,4 +1,7 @@
 
+logo.image = ImageNew("special://logo");
+logo.sprite = SpriteNew();
+SpriteSetImage(logo.sprite, logo.image);
 
 
 index = 0;
@@ -19,11 +22,16 @@ fun refresh (){
         int_frame_index = MathInt(frame_index);
         SpriteSetImage (throbber_sprite, frame_image[int_frame_index]);
         SpriteSetX (throbber_sprite, 400 - ImageGetWidth(frame_image[int_frame_index])  / 2);
-        SpriteSetY (throbber_sprite, 300 - ImageGetHeight(frame_image[int_frame_index]) / 2);
+        SpriteSetY (throbber_sprite, 300);
         SpriteSetOpacity (throbber_sprite, 1);
+        SpriteSetX (logo.sprite, 400 - ImageGetWidth(logo.image)  / 2);
+        SpriteSetY (logo.sprite, 300 - ImageGetHeight(logo.image));
+        SpriteSetOpacity (logo.sprite, 1);
         }
     if (status != "normal"){
         SpriteSetOpacity (throbber_sprite, 0);
+        SpriteSetX (logo.sprite, 0);
+        SpriteSetY (logo.sprite, 0);
         }
     }