moving tram depend on time
[livewp] / applet / src / livewp-home-widget.h
1 /*
2  * This file is part of Live Wallpaper (livewp)
3  * 
4  * Copyright (C) 2010 Vlad Vasiliev
5  * Copyright (C) 2010 Tanya Makova
6  *       for the code
7  * 
8  * This software is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation; either version 2.1 of
11  * the License, or (at your option) any later version.
12  * 
13  * This software is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  * 
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this software; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22 */
23 /*******************************************************************************/
24 #ifndef Animation_Wallpaper_PLUGIN_H
25 #define Animation_Wallpaper_PLUGIN_H
26
27 #include <glib-object.h>
28
29 #include <libhildondesktop/libhildondesktop.h>
30
31 G_BEGIN_DECLS
32
33 typedef struct _AWallpaperPlugin AWallpaperPlugin;
34 typedef struct _AWallpaperPluginClass AWallpaperPluginClass;
35
36 #define Animation_Wallpaper_TYPE_HOME_PLUGIN (animation_wallpaper_plugin_get_type ())
37
38 #define Animation_Wallpaper_HOME_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
39                         Animation_Wallpaper_TYPE_HOME_PLUGIN, AWallpaperPlugin))
40
41 #define Animation_Wallpaper_HOME_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
42                         Animation_Wallpaper_TYPE_HOME_PLUGIN, AWallpaperPluginClass))
43
44 #define Animation_Wallpaper_IS_HOME_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
45                         Animation_Wallpaper_TYPE_HOME_PLUGIN))
46
47 #define Animation_Wallpaper_IS_HOME_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
48                         Animation_Wallpaper_TYPE_HOME_PLUGIN))
49
50 #define Animation_Wallpaper_HOME_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
51                         Animation_Wallpaper_TYPE_HOME_PLUGIN, AWallpaperPluginClass))
52
53
54 struct _AWallpaperPlugin
55 {
56     HDHomePluginItem hitem;
57     GObject *parent;
58     Animation_WallpaperPrivate *priv;
59 };
60
61 struct _AWallpaperPluginClass
62 {
63     HDHomePluginItemClass parent_class;
64
65 };
66
67 typedef struct {
68     GtkWidget * window;
69     GSList * static_actors;
70     GSList * dynamic_actors;
71     gint daytime;
72 } Scene;
73
74 typedef struct {
75     GtkWidget * widget;
76     gchar * name;
77     GtkWidget * image;
78     gint x;
79     gint y;
80     gint z;
81     double scale;
82     gboolean visible;
83
84 } Actor;
85
86 GType animation_wallpaper_plugin_get_type(void);
87
88 G_END_DECLS
89
90 void lw_settings(GtkWidget *widget, gpointer user_data);
91 MultiActor *multiactor_init(gchar * name, GSList * child, gint x, gint y, gint z, double scale, gboolean visible);
92 void multiactor_set_visible(MultiActor *ma, gboolean visible);
93 void multiactor_set_scale(MultiActor *ma, double scale);
94 void multiactor_set_position(MultiActor *ma, gint dx, gint dy, gint dz);
95 void actor_set_position_full(GtkWidget *actor, gint x, gint y, gint z);
96 gint read_config(Animation_WallpaperPrivate *priv);
97 void save_config(Animation_WallpaperPrivate *priv);
98
99 #endif