moved snow to e_modules

SVN revision: 14007
This commit is contained in:
handyande 2005-03-30 15:03:43 +00:00 committed by handyande
parent c72121077a
commit 132c8f4469
8 changed files with 0 additions and 479 deletions

View File

@ -1,29 +0,0 @@
MAINTAINERCLEANFILES = Makefile.in
MODULE = snow
# data files for the module
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
files_DATA = \
tree.png \
flake-s.png \
flake-m.png \
flake-l.png \
module_icon.png
EXTRA_DIST = $(files_DATA)
# the module .so file
INCLUDES = -I. \
-I$(top_srcdir) \
-I$(includedir) \
-I$(top_srcdir)$(MODULE) \
-I$(top_srcdir)/src/bin \
-I$(top_srcdir)/src/lib \
-I$(top_srcdir)/src/modules \
@e_cflags@
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la
module_la_SOURCES = e_mod_main.c \
e_mod_main.h
module_la_LIBADD = @e_libs@ @dlopen_libs@
module_la_LDFLAGS = -module -avoid-version
module_la_DEPENDENCIES = $(top_builddir)/config.h

View File

@ -1,408 +0,0 @@
#include "e.h"
#include "e_mod_main.h"
/* TODO List:
*
*
*/
/* module private routines */
static Snow *_snow_init(E_Module *m);
static void _snow_shutdown(Snow *snow);
static E_Menu *_snow_config_menu_new(Snow *snow);
static int _snow_cb_animator(void *data);
static void _snow_trees_load(Snow *snow);
static void _snow_flakes_load(char type, Snow *snow);
static void _snow_cb_density_sparse(void *data, E_Menu *m, E_Menu_Item *mi);
static void _snow_cb_density_medium(void *data, E_Menu *m, E_Menu_Item *
i);
static void _snow_cb_density_dense(void *data, E_Menu *m, E_Menu_Item *mi);
static void _snow_cb_show_trees(void *data, E_Menu *m, E_Menu_Item *mi);
/* public module routines. all modules must have these */
void *
init(E_Module *m)
{
Snow *snow;
if (m->api->version < E_MODULE_API_VERSION)
{
e_error_dialog_show("Module API Error",
"Error initializing Module: Snow\n"
"It requires a minimum module API version of: %i.\n"
"The module API advertized by Enlightenment is: %i.\n"
"Aborting module.",
E_MODULE_API_VERSION,
m->api->version);
return NULL;
}
snow = _snow_init(m);
m->config_menu = _snow_config_menu_new(snow);
return snow;
}
int
shutdown(E_Module *m)
{
Snow *snow;
snow = m->data;
if (snow)
{
if (m->config_menu)
{
e_menu_deactivate(m->config_menu);
e_object_del(E_OBJECT(m->config_menu));
m->config_menu = NULL;
}
_snow_shutdown(snow);
}
return 1;
}
int
save(E_Module *m)
{
Snow *snow;
snow = m->data;
if (!snow) return 1;
e_config_domain_save("module.snow", snow->conf_edd, snow->conf);
return 1;
}
int
info(E_Module *m)
{
char buf[4096];
m->label = strdup("Snow");
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
m->icon_file = strdup(buf);
return 1;
}
int
about(E_Module *m)
{
e_error_dialog_show("Enlightenment Snow Module",
"This is a snow module that may replace xsnow.");
return 1;
}
/* module private routines */
static Snow *
_snow_init(E_Module *m)
{
Snow *snow;
Evas_List *managers, *l, *l2;
snow = calloc(1, sizeof(Snow));
if (!snow) return NULL;
snow->module = m;
snow->conf_edd = E_CONFIG_DD_NEW("Snow_Config", Config);
#undef T
#undef D
#define T Config
#define D snow->conf_edd
E_CONFIG_VAL(D, T, tree_count, INT);
E_CONFIG_VAL(D, T, flake_count, INT);
E_CONFIG_VAL(D, T, show_trees, INT);
snow->conf = e_config_domain_load("module.snow", snow->conf_edd);
if (!snow->conf)
{
snow->conf = E_NEW(Config, 1);
snow->conf->tree_count = 10;
snow->conf->flake_count = 60;
snow->conf->show_trees = 1;
}
E_CONFIG_LIMIT(snow->conf->show_trees, 0, 1);
managers = e_manager_list();
for (l = managers; l; l = l->next)
{
E_Manager *man;
man = l->data;
for (l2 = man->containers; l2; l2 = l2->next)
{
E_Container *con;
con = l2->data;
snow->cons = evas_list_append(snow->cons, con);
snow->canvas = con->bg_evas;
}
}
evas_output_viewport_get(snow->canvas, NULL, NULL, &snow->width, &snow->height);
if (snow->conf->show_trees) _snow_trees_load(snow);
_snow_flakes_load('s', snow);
_snow_flakes_load('m', snow);
_snow_flakes_load('l', snow);
snow->animator = ecore_animator_add(_snow_cb_animator, snow);
return snow;
}
static void
_snow_trees_free(Snow *snow)
{
while (snow->trees)
{
Evas_Object *tree;
tree = snow->trees->data;
evas_object_del(tree);
snow->trees = evas_list_remove_list(snow->trees, snow->trees);
}
}
static void
_snow_flakes_free(Snow *snow)
{
while (snow->flakes)
{
Snow_Flake *flake;
flake = snow->flakes->data;
evas_object_del(flake->flake);
snow->flakes = evas_list_remove_list(snow->flakes, snow->flakes);
free(flake);
}
}
static void
_snow_shutdown(Snow *snow)
{
free(snow->conf);
E_CONFIG_DD_FREE(snow->conf_edd);
while (snow->cons)
{
E_Container *con;
con = snow->cons->data;
snow->cons = evas_list_remove_list(snow->cons, snow->cons);
}
_snow_trees_free(snow);
_snow_flakes_free(snow);
if (snow->animator)
ecore_animator_del(snow->animator);
free(snow);
}
static E_Menu *
_snow_config_menu_new(Snow *snow)
{
E_Menu *mn;
E_Menu_Item *mi;
mn = e_menu_new();
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, "Sparse");
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (snow->conf->tree_count == 5) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _snow_cb_density_sparse, snow);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, "Medium");
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (snow->conf->tree_count == 10) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _snow_cb_density_medium, snow);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, "Dense");
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 2);
if (snow->conf->tree_count == 20) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _snow_cb_density_dense, snow);
mi = e_menu_item_new(mn);
e_menu_item_separator_set(mi, 1);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, "Show Trees");
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, snow->conf->show_trees);
e_menu_item_callback_set(mi, _snow_cb_show_trees, snow);
return mn;
}
static void
_snow_canvas_reset(Snow *snow)
{
_snow_trees_free(snow);
_snow_flakes_free(snow);
if (snow->conf->show_trees) _snow_trees_load(snow);
_snow_flakes_load('s', snow);
_snow_flakes_load('m', snow);
_snow_flakes_load('l', snow);
}
static void
_snow_cb_density_sparse(void *data, E_Menu *m, E_Menu_Item *mi)
{
Snow *snow;
snow = data;
snow->conf->tree_count = 5;
snow->conf->flake_count = 20;
_snow_canvas_reset(snow);
}
static void
_snow_cb_density_medium(void *data, E_Menu *m, E_Menu_Item *mi)
{
Snow *snow;
snow = data;
snow->conf->tree_count = 10;
snow->conf->flake_count = 60;
_snow_canvas_reset(snow);
}
static void
_snow_cb_density_dense(void *data, E_Menu *m, E_Menu_Item *mi)
{
Snow *snow;
snow = data;
snow->conf->tree_count = 20;
snow->conf->flake_count = 100;
_snow_canvas_reset(snow);
}
static void
_snow_cb_show_trees(void *data, E_Menu *m, E_Menu_Item *mi)
{
Snow *snow;
snow = data;
snow->conf->show_trees = e_menu_item_toggle_get(mi);
_snow_canvas_reset(snow);
}
static void
_snow_trees_load(Snow *snow) {
Evas_Object *o;
char buf[4096];
int tw, th, i;
snprintf(buf, sizeof(buf), "%s/tree.png", e_module_dir_get(snow->module));
o = evas_object_image_add(snow->canvas);
evas_object_image_file_set(o, buf, "");
evas_object_image_size_get(o, &tw, &th);
for (i = 0; i < snow->conf->tree_count; i++)
{
Evas_Coord tx, ty;
if (i != 0) {
o = evas_object_image_add(snow->canvas);
evas_object_image_file_set(o, buf, "");
}
evas_object_resize(o, tw, th);
evas_object_image_alpha_set(o, 1);
evas_object_image_fill_set(o, 0, 0, tw, th);
tx = random() % (snow->width - tw);
ty = random() % (snow->height - th);
evas_object_move(o, tx, ty);
evas_object_show(o);
snow->trees = evas_list_append(snow->trees, o);
}
}
static void
_snow_flakes_load(char type, Snow *snow) {
Evas_Object *o;
Evas_Coord xx, yy, ww, hh;
char buf[4096];
int tw, th, i;
Snow_Flake *flake;
evas_output_viewport_get(snow->canvas, &xx, &yy, &ww, &hh);
snprintf(buf, sizeof(buf), "%s/flake-%c.png", e_module_dir_get(snow->module),
type);
o = evas_object_image_add(snow->canvas);
evas_object_image_file_set(o, buf, "");
evas_object_image_size_get(o, &tw, &th);
for (i = 0; i < snow->conf->flake_count / 3; i++)
{
Evas_Coord tx, ty;
flake = malloc(sizeof(Snow_Flake));
if (i != 0) {
o = evas_object_image_add(snow->canvas);
evas_object_image_file_set(o, buf, "");
}
evas_object_resize(o, tw, th);
evas_object_image_alpha_set(o, 1);
evas_object_image_fill_set(o, 0, 0, tw, th);
tx = random() % ww;
ty = random() % hh;
evas_object_move(o, tx, ty);
evas_object_show(o);
flake->flake = o;
flake->start_time = ecore_time_get() + (double)(random() % (th * 10)) / (double) th;
switch (type) {
case 's':
flake->speed = 1;
break;
case 'm':
flake->speed = 2;
break;
case 'l':
flake->speed = 3;
break;
}
snow->flakes = evas_list_append(snow->flakes, flake);
}
}
static int
_snow_cb_animator(void *data)
{
Snow *snow;
Evas_List *next;
double d;
snow = data;
next = snow->flakes;
while (next)
{
Snow_Flake *flake;
Evas_Coord x, y;
flake = next->data;
d = ecore_time_get() - flake->start_time;
y = 30 * d * flake->speed;
evas_object_geometry_get(flake->flake, &x, NULL, NULL, NULL);
if (y > snow->height)
flake->start_time = ecore_time_get() + (double) (random() % 100) / (double) 100;
evas_object_move(flake->flake, x, y);
next = evas_list_next(next);
}
return 1;
}

View File

@ -1,42 +0,0 @@
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
typedef struct _Config Config;
typedef struct _Snow Snow;
typedef struct _Snow_Flake Snow_Flake;
struct _Config
{
int tree_count;
int flake_count;
int show_trees;
};
struct _Snow
{
E_Module *module;
Evas_List *cons;
Evas *canvas;
Ecore_Animator *animator;
Evas_List *trees;
Evas_List *flakes;
E_Config_DD *conf_edd;
Config *conf;
Evas_Coord width, height;
};
struct _Snow_Flake
{
Evas_Object *flake;
double start_time;
int speed;
};
EAPI void *init (E_Module *m);
EAPI int shutdown (E_Module *m);
EAPI int save (E_Module *m);
EAPI int info (E_Module *m);
EAPI int about (E_Module *m);
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.