rendered paste body--- snow.c 2007-04-16 19:51:34.000000000 +0800
+++ firefly.c 2007-02-19 02:00:22.000000000 +0900
@@ -1,9 +1,10 @@
/**
*
- * Beryl snow plugin
+ * Beryl FireFly plugin
*
- * snow.c
+ * fireFlies.c
*
+ * Copyright (c) 2007 Kyle Mallory <kyle.mallory@utah.edu>
* Copyright (c) 2006 Eckhart P. <beryl@cornergraf.net>
* Copyright (c) 2006 Brian Jørgensen <qte@fundanemt.com>
*
@@ -37,76 +38,66 @@
#include <beryl.h>
// ------------------------------------------------------------ CONSTANTS -----------------------------------------------------
-#define MAX_SNOWFLAKES 10000
-
+#define MAX_FIREFLIES 10000
+#define GLOW_STAGES 5
// ------------------------------------------------------------ WRAPPERS -----------------------------------------------------
-#define GET_SNOW_DISPLAY(d) \
- ((SnowDisplay *) (d)->privates[displayPrivateIndex].ptr)
+#define GET_FIREFLY_DISPLAY(d) \
+ ((FireFlyDisplay *) (d)->privates[displayPrivateIndex].ptr)
-#define SNOW_DISPLAY(d) \
- SnowDisplay *sd = GET_SNOW_DISPLAY (d)
+#define FIREFLY_DISPLAY(d) \
+ FireFlyDisplay *sd = GET_FIREFLY_DISPLAY (d)
-#define GET_SNOW_SCREEN(s, sd) \
- ((SnowScreen *) (s)->privates[(sd)->screenPrivateIndex].ptr)
+#define GET_FIREFLY_SCREEN(s, sd) \
+ ((FireFlyScreen *) (s)->privates[(sd)->screenPrivateIndex].ptr)
-#define SNOW_SCREEN(s) \
- SnowScreen *ss = GET_SNOW_SCREEN (s, GET_SNOW_DISPLAY (s->display))
+#define FIREFLY_SCREEN(s) \
+ FireFlyScreen *ss = GET_FIREFLY_SCREEN (s, GET_FIREFLY_DISPLAY (s->display))
// ------------------------------------------------------------ OPTIONS -----------------------------------------------------
-#define SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES 0
-#define SNOW_DISPLAY_OPTION_SNOW_SIZE 1
-#define SNOW_DISPLAY_OPTION_SNOW_SPEED 2
-#define SNOW_DISPLAY_OPTION_SCREEN_BOXING 3
-#define SNOW_DISPLAY_OPTION_SCREEN_DEPTH 4
-#define SNOW_DISPLAY_OPTION_INITIATE 5
-#define SNOW_DISPLAY_OPTION_ON_TOP 6
-#define SNOW_DISPLAY_OPTION_USE_BLENDING 7
-#define SNOW_DISPLAY_OPTION_USE_TEXTURES 8
-#define SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY 9
-#define SNOW_DISPLAY_OPTION_SNOW_TEXTURES 10
-#define SNOW_DISPLAY_OPTION_SNOW_DIRECTION 11
-#define SNOW_DISPLAY_OPTION_ROTATION 12
-#define SNOW_DISPLAY_OPTION_NUM 13
-
-#define NUM_SNOW_DIRECTIONS 4
-
-#define SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY_DEFAULT 40
-#define SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES_DEFAULT 1500.0
-#define SNOW_DISPLAY_OPTION_SNOW_SIZE_DEFAULT 10.0
-#define SNOW_DISPLAY_OPTION_SNOW_SPEED_DEFAULT 85.0
-#define SNOW_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT 400.0
-#define SNOW_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT 1000.0
-#define SNOW_DISPLAY_OPTION_SNOW_TEXTURES_DEFAULT ""
-#define SNOW_DISPLAY_OPTION_INITIATE_KEY "F3"
-#define SNOW_DISPLAY_OPTION_INITIATE_MOD CompSuperMask
-#define SNOW_DISPLAY_OPTION_ON_TOP_DEFAULT FALSE
-#define SNOW_DISPLAY_OPTION_ROTATION_DEFAULT TRUE
-#define SNOW_DISPLAY_OPTION_USE_BLENDING_DEFAULT TRUE
-#define SNOW_DISPLAY_OPTION_USE_TEXTURES_DEFAULT TRUE
-#define SNOW_DISPLAY_OPTION_DIRECTION_DEFAULT 0
-
-static char *snowDirections[] = {
- N_("Top to bottom"),
- N_("Bottom to top"),
- N_("Right to left"),
- N_("Left to right")
-};
+#define FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES 0
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE 1
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED 2
+#define FIREFLY_DISPLAY_OPTION_SCREEN_BOXING 3
+#define FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH 4
+#define FIREFLY_DISPLAY_OPTION_INITIATE 5
+#define FIREFLY_DISPLAY_OPTION_ON_TOP 6
+#define FIREFLY_DISPLAY_OPTION_USE_BLENDING 7
+#define FIREFLY_DISPLAY_OPTION_USE_TEXTURES 8
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY 9
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES 10
+#define FIREFLY_DISPLAY_OPTION_NUM 11
+
+
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY_DEFAULT 40
+#define FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES_DEFAULT 1500.0
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE_DEFAULT 10.0
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED_DEFAULT 85.0
+#define FIREFLY_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT 400.0
+#define FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT 1000.0
+#define FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES_DEFAULT ""
+#define FIREFLY_DISPLAY_OPTION_INITIATE_KEY "F4"
+#define FIREFLY_DISPLAY_OPTION_INITIATE_MOD CompSuperMask
+#define FIREFLY_DISPLAY_OPTION_ON_TOP_DEFAULT FALSE
+#define FIREFLY_DISPLAY_OPTION_USE_BLENDING_DEFAULT TRUE
+#define FIREFLY_DISPLAY_OPTION_USE_TEXTURES_DEFAULT TRUE
+
-static char *snowTextures[] = {
- IMAGEDIR "/snowflake2.png"
+static char *fireFlyTextures[] = {
+ IMAGEDIR "/firefly1.png"
};
-#define N_SNOW_TEXTURES (sizeof (snowTextures) / sizeof (snowTextures[0]))
+#define N_FIREFLY_TEXTURES (sizeof (fireFlyTextures) / sizeof (fireFlyTextures[0]))
#define NUM_OPTIONS(s) (sizeof ((s)->opt) / sizeof (CompOption))
+static float glowCurve[GLOW_STAGES][4] = { { 0.0, 0.5, 0.5, 1.0 }, { 1.0, 1.0, 0.5, 0.75 }, { 0.75, 0.3, 1.2, 1.0 }, { 1.0, 0.7, 1.5, 1.0 }, { 1.0, 0.5, 0.5, 0.0 } };
+
static int displayPrivateIndex = 0;
-static int numFlakes;
-static int snowRotate;
-static int snowUpdateDelay;
-static float snowSize;
-static float snowSpeed;
+static int numFlies;
+static int fireFlyUpdateDelay;
+static float fireFlySize;
+static float fireFlySpeed;
static float boxing;
static float depth;
static Bool onTop;
@@ -115,115 +106,160 @@
static Bool displayListNeedsUpdating;
// ------------------------------------------------------------ STRUCTS -----------------------------------------------------
-typedef struct _SnowDisplay
-{
+typedef struct _FireFlyDisplay {
int screenPrivateIndex;
Bool useBlending;
Bool useTextures;
- int snowTexNFiles;
- CompOptionValue *snowTexFiles;
+ int fireFliesTexNFiles;
+ CompOptionValue *fireFliesTexFiles;
- float snowSize;
+ float fireFliesSize;
Bool displayListNeedsUpdating;
- CompOption opt[SNOW_DISPLAY_OPTION_NUM];
+ CompOption opt[FIREFLY_DISPLAY_OPTION_NUM];
-} SnowDisplay;
+} FireFlyDisplay;
-typedef struct _SnowScreen SnowScreen;
+typedef struct _FireFlyScreen FireFlyScreen;
-typedef struct _SnowTexture
-{
+typedef struct _FireFlyTexture {
CompTexture tex;
unsigned int width;
unsigned int height;
Bool loaded;
GLuint dList;
-} SnowTexture;
+} FireFlyTexture;
-typedef struct _SnowFlake
-{
+typedef struct _FireFly {
+ // fly position
float x;
float y;
float z;
- float xs;
- float ys;
- float zs;
- float ra; //rotation angle
- float rs; //rotation speed
-
- SnowTexture *tex;
-} SnowFlake;
-
-static void InitiateSnowFlake(SnowScreen * ss, SnowFlake * sf);
-static void setSnowflakeTexture(SnowScreen * ss, SnowFlake * sf);
-static void beginRendering(SnowScreen * ss, CompScreen * s);
-static void setupDisplayList(SnowScreen * ss);
-
-static void snowThink(SnowScreen * ss, SnowFlake * sf);
-static void snowMove(SnowFlake * sf);
+
+ // actual fly vector
+ float xs[4];
+ float ys[4];
+ float zs[4];
+
+ float lifespan; // age when fly will "die"
+ float age; // age in time
+ float lifecycle; // 0.0 to 1.0 over lifespan
+ float glowAlpha; // alpha, given life from tables
+ FireFlyTexture *tex;
+} FireFly;
-struct _SnowScreen
-{
- CompScreen *s;
+struct _FireFlyScreen {
+ CompScreen * s;
Bool active;
CompTimeoutHandle timeoutHandle;
- PaintScreenProc paintScreen;
- DrawWindowProc drawWindow;
- DrawWindowTextureProc drawWindowTexture;
+ PaintScreenProc paintScreen;
+ DrawWindowProc drawWindow;
+ DrawWindowTextureProc drawWindowTexture;
- SnowTexture *snowTex;
- int snowTexturesLoaded;
+ FireFlyTexture * fireFliesTex;
+ int fireFlyTexturesLoaded;
GLuint displayList;
- SnowFlake allSnowFlakes[MAX_SNOWFLAKES];
-};
-static void snowThink(SnowScreen * ss, SnowFlake * sf)
-{
- if (sf->y >= ss->s->height + boxing
- || sf->x <= -boxing
- || sf->y >= ss->s->width + boxing
- || sf->z <= -(depth / 500.0) || sf->z >= 1)
+ FireFly allFireFlies[MAX_FIREFLIES];
+} ;
- {
- InitiateSnowFlake(ss, sf);
- }
- snowMove(sf);
+static void InitiateFireFly(FireFlyScreen *ss, FireFly *sf);
+static void setFireFlyTexture(FireFlyScreen *ss, FireFly *sf);
+static void beginRendering(FireFlyScreen *ss, CompScreen *s);
+static void setupDisplayList(FireFlyScreen * ss);
+
+static void fireFlyMove(FireFly *sf);
+static void fireFlyThink(FireFlyScreen *ss, FireFly *sf);
+
+// ------------------------------------------------- HELPER FUNCTIONS ----------------------------------------------------
+
+int GetRand(int min, int max);
+int GetRand(int min, int max)
+{
+ return (rand() % (max - min + 1) + min);
}
-static void snowMove(SnowFlake * sf)
+float mmrand(int min, int max, float divisor);
+float mmrand(int min, int max, float divisor)
{
- float tmp = 1.0f / (100.0f - snowSpeed);
+ return ((float)GetRand(min, max)) / divisor;
+};
- sf->x += (sf->xs * (float)snowUpdateDelay) * tmp;
- sf->y += (sf->ys * (float)snowUpdateDelay) * tmp;
- sf->z += (sf->zs * (float)snowUpdateDelay) * tmp;
- sf->ra += ((float)snowUpdateDelay) / (10.0f - sf->rs);
+float bezierCurve(float p[4], float time) {
+ float a = p[0];
+ float b = p[0] + p[1];
+ float c = p[3] + p[2];
+ float d = p[3];
+
+ float h = time;
+ float i = 1.0 - time;
+
+ float out = (a*(i*i*i)) + (3.0*b*(i*i)*h) + (3.0*c*i*(h*h)) + (d*(h*h*h));
+ return out;
+}
+
+// ------------------------------------------------- CORE ANIMATION ------------------------------------------------------
+
+static void fireFlyMove(FireFly *sf)
+{
+ float xs = bezierCurve(sf->xs, sf->lifecycle);
+ float ys = bezierCurve(sf->ys, sf->lifecycle);
+ float zs = bezierCurve(sf->zs, sf->lifecycle);
+
+ sf->x += (float)(xs * (double)fireFlyUpdateDelay) / (100 - fireFlySpeed);
+ sf->y += (float)(ys * (double)fireFlyUpdateDelay) / (100 - fireFlySpeed);
+ sf->z += (float)(zs * (double)fireFlyUpdateDelay) / (100 - fireFlySpeed);
+}
+
+static void fireFlyThink(FireFlyScreen *ss, FireFly *sf)
+{
+ sf->age += 0.02;
+ sf->lifecycle = sf->age / sf->lifespan;
+
+ int glowStage = (sf->lifecycle * GLOW_STAGES);
+ sf->glowAlpha = bezierCurve(glowCurve[glowStage], sf->lifecycle);
+ if (sf->glowAlpha > 1.0)
+ sf->glowAlpha = 1.0;
+
+ if ( sf->y <= -boxing
+ || sf->y >= ss->s->height + boxing
+ || sf->x <= -boxing
+ || sf->x >= ss->s->width + boxing
+ || sf->z <= -(depth / 500.0)
+ || sf->z >= 1
+ || sf->age > sf->lifespan)
+
+ {
+ InitiateFireFly(ss,sf);
+ }
+ fireFlyMove(sf);
}
-static Bool stepSnowPositions(void *sc)
+static Bool stepFireFlyPositions(void *sc)
{
- CompScreen *s = sc;
-
- SNOW_SCREEN(s);
+ CompScreen * s = sc;
+ FIREFLY_SCREEN(s);
if (!ss->active)
return True;
int i = 0;
-
- SnowFlake *snowFlake = ss->allSnowFlakes;
-
- for (i = 0; i < numFlakes; i++)
- snowThink(ss, snowFlake++);
-
- if (ss->active && !onTop)
- {
+ for (i = 0; i < numFlies; i++)
+ fireFlyThink(ss, &ss->allFireFlies[i]);
+ if (ss->active && !onTop)//(ss->lastMsCount > 15)
+ {
+ // // TODO: I Don't quite know which of the following is easiest on
+ // // CPU/GPU cycles... ought to be the second, but I am no expert.
+ //
+ // //// if (ss->alpha > 0.0) {
+ // // damageScreen(s);
+ // // // XSync(s->display->display, FALSE);
+ // //// }
+ //
CompWindow *w;
-
for (w = s->windows; w; w = w->next)
{
if (w->type & CompWindowTypeDesktopMask)
@@ -237,153 +273,122 @@
return True;
}
-static Bool
-snowToggle(CompDisplay * d, CompAction * action, CompActionState state,
- CompOption * option, int nOption)
+
+static Bool fireFliesToggle (CompDisplay *d, CompAction *action, CompActionState state, CompOption *option, int nOption)
{
CompScreen *s;
Window xid;
- xid = getIntOptionNamed(option, nOption, "root", 0);
- s = findScreenAtDisplay(d, xid);
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+ s = findScreenAtDisplay (d, xid);
- if (s)
- {
- SNOW_SCREEN(s);
+ FIREFLY_SCREEN (s);
+ if (ss) {
ss->active = !ss->active;
if (!ss->active)
- damageScreen(s);
+ damageScreen(s);
}
return TRUE;
}
-// ------------------------------------------------- HELPER FUNCTIONS ----------------------------------------------------
-
-int GetRand(int min, int max);
-int GetRand(int min, int max)
-{
- return (rand() % (max - min + 1) + min);
-}
-
-float mmrand(int min, int max, float divisor);
-float mmrand(int min, int max, float divisor)
-{
- return ((float)GetRand(min, max)) / divisor;
-};
-
// ------------------------------------------------- RENDERING ----------------------------------------------------
-static void setupDisplayList(SnowScreen * ss)
+ static void
+setupDisplayList(FireFlyScreen *ss)
{
// ----------------- untextured list
- ss->displayList = glGenLists(1);
+ ss->displayList =glGenLists(1);
glNewList(ss->displayList, GL_COMPILE);
- glBegin(GL_QUADS);
+ glBegin (GL_QUADS);
- glColor4f(1.0, 1.0, 1.0, 1.0);
- glVertex3f(0, 0, -0.0);
- glColor4f(1.0, 1.0, 1.0, 1.0);
- glVertex3f(0, snowSize, -0.0);
- glColor4f(1.0, 1.0, 1.0, 1.0);
- glVertex3f(snowSize, snowSize, -0.0);
- glColor4f(1.0, 1.0, 1.0, 1.0);
- glVertex3f(snowSize, 0, -0.0);
+ glColor4f (1.0, 1.0, 1.0, 1.0); glVertex3f (0,0, -0.0);
+ glColor4f (1.0, 1.0, 1.0, 1.0); glVertex3f (0,fireFlySize, -0.0);
+ glColor4f (1.0, 1.0, 1.0, 1.0); glVertex3f (fireFlySize, fireFlySize, -0.0);
+ glColor4f (1.0, 1.0, 1.0, 1.0); glVertex3f (fireFlySize, 0, -0.0);
- glEnd();
+ glEnd ();
glEndList();
}
-static void beginRendering(SnowScreen * ss, CompScreen * s)
+static void
+beginRendering(FireFlyScreen *ss, CompScreen *s)
{
if (useBlending)
- glEnable(GL_BLEND);
+ glEnable (GL_BLEND);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- if (displayListNeedsUpdating)
+ if (displayListNeedsUpdating)
{
setupDisplayList(ss);
displayListNeedsUpdating = FALSE;
}
- glColor4f(1.0, 1.0, 1.0, 1.0);
- if (ss->snowTexturesLoaded && useTextures)
+ glColor4f (1.0, 1.0, 1.0, 1.0);
+ if (ss->fireFlyTexturesLoaded && useTextures)
{
int j = 0;
- for (j = 0; j < ss->snowTexturesLoaded; j++)
+ for (j = 0; j < ss->fireFlyTexturesLoaded; j++)
{
- enableTexture(ss->s, &ss->snowTex[j].tex,
- COMP_TEXTURE_FILTER_GOOD);
+ enableTexture (ss->s, &ss->fireFliesTex[j].tex, COMP_TEXTURE_FILTER_GOOD);
int i = 0;
- SnowFlake *snowFlake = ss->allSnowFlakes;
-
- for (i = 0; i < numFlakes; i++)
+ for (i = 0; i < numFlies; i++)
{
- if (snowFlake->tex == &ss->snowTex[j])
+ glColor4f (1.0, 1.0, 1.0, ss->allFireFlies[i].glowAlpha);
+ if (ss->allFireFlies[i].tex == &ss->fireFliesTex[j])
{
- glTranslatef(snowFlake->x, snowFlake->y, snowFlake->z);
- if (snowRotate)
- glRotatef(snowFlake->ra, 0, 0, 1);
- glCallList(ss->snowTex[j].dList);
- if (snowRotate)
- glRotatef(-snowFlake->ra, 0, 0, 1);
- glTranslatef(-snowFlake->x, -snowFlake->y, -snowFlake->z);
+ glTranslatef(ss->allFireFlies[i].x, ss->allFireFlies[i].y, ss->allFireFlies[i].z);
+ glCallList(ss->fireFliesTex[j].dList);
+ glTranslatef(-ss->allFireFlies[i].x, -ss->allFireFlies[i].y, -ss->allFireFlies[i].z);
}
- snowFlake++;
}
- disableTexture(ss->s, &ss->snowTex[j].tex);
+ disableTexture (ss->s, &ss->fireFliesTex[j].tex);
}
}
- else if (!ss->snowTexturesLoaded || !useTextures)
+ else if (!ss->fireFlyTexturesLoaded || !useTextures)
{
int i = 0;
- SnowFlake *snowFlake = ss->allSnowFlakes;
-
- for (i = 0; i < numFlakes; i++)
+ for (i = 0; i < numFlies; i++)
{
- glTranslatef(snowFlake->x, snowFlake->y, snowFlake->z);
- glRotatef(snowFlake->ra, 0, 0, 1);
+ glColor4f (1.0, 1.0, 1.0, ss->allFireFlies[i].glowAlpha);
+ glTranslatef(ss->allFireFlies[i].x, ss->allFireFlies[i].y, ss->allFireFlies[i].z);
glCallList(ss->displayList);
- glRotatef(-snowFlake->ra, 0, 0, 1);
- glTranslatef(-snowFlake->x, -snowFlake->y, -snowFlake->z);
- snowFlake++;
+ glTranslatef(-ss->allFireFlies[i].x, -ss->allFireFlies[i].y, -ss->allFireFlies[i].z);
}
}
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
if (useBlending)
{
- glDisable(GL_BLEND);
- glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ glDisable (GL_BLEND);
+ glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
}
}
-
// ------------------------------------------------- FUNCTIONS ----------------------------------------------------
-static Bool
-snowPaintScreen(CompScreen * s,
- const ScreenPaintAttrib * sa,
- const CompTransform * transform,
+static Bool fireFliesPaintScreen(CompScreen *s,
+ const ScreenPaintAttrib *sa,
+ const CompTransform *transform,
Region region, int output, unsigned int mask)
{
Bool status;
- SNOW_SCREEN(s);
+ FIREFLY_SCREEN(s);
if (!onTop && ss->active)
{
- // This line is essential. Without it the snow will be rendered above (some) other windows.
+ // This line is essential. Without it the fireFlies will be rendered above (some) other windows.
mask |= PAINT_SCREEN_ORDER_BACK_TO_FRONT_MASK;
}
UNWRAP(ss, s, paintScreen);
status = (*s->paintScreen) (s, sa, transform, region, output, mask);
- WRAP(ss, s, paintScreen, snowPaintScreen);
+ WRAP(ss, s, paintScreen, fireFliesPaintScreen);
if (onTop && ss->active)
{
@@ -399,213 +404,175 @@
return status;
}
-static Bool
-snowDrawWindow(CompWindow * w, const CompTransform *transform, const FragmentAttrib *attrib,
- Region region, unsigned int mask)
+static Bool fireFliesDrawWindow (CompWindow *w,
+ const CompTransform *transform,
+ const FragmentAttrib *attrib,
+ Region region, unsigned int mask)
{
int status;;
- SNOW_SCREEN(w->screen);
+ FIREFLY_SCREEN (w->screen);
// First draw Window as usual
- UNWRAP(ss, w->screen, drawWindow);
+ UNWRAP (ss, w->screen, drawWindow);
status = (*w->screen->drawWindow) (w, transform, attrib, region, mask);
- WRAP(ss, w->screen, drawWindow, snowDrawWindow);
+ WRAP (ss, w->screen, drawWindow, fireFliesDrawWindow);
// Check whether this is the Desktop Window
if (w->type & CompWindowTypeDesktopMask && ss->active && !onTop)
beginRendering(ss, w->screen);
-
+
return status;
}
-static void InitiateSnowFlake(SnowScreen * ss, SnowFlake * sf)
+static void InitiateFireFly(FireFlyScreen *ss, FireFly *sf)
{
- //TODO: possibly place snowflakes based on FOV, instead of a cube.
- SNOW_DISPLAY(ss->s->display);
- CompOption *o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_DIRECTION];
-
- if (strcmp(snowDirections[0], o->value.s) == 0)
- {
- sf->x = mmrand(-boxing, ss->s->width + boxing, 1);
- sf->xs = mmrand(-1, 1, 500);
- sf->y = mmrand(-300, 0, 1);
- sf->ys = mmrand(1, 3, 1);
- }
- else if (strcmp(snowDirections[1], o->value.s) == 0)
- {
- sf->x = mmrand(-boxing, ss->s->width + boxing, 1);
- sf->xs = mmrand(-1, 1, 500);
- sf->y = mmrand(ss->s->height, ss->s->height + 300, 1);
- sf->ys = -mmrand(1, 3, 1);
- }
- else if (strcmp(snowDirections[2], o->value.s) == 0)
- {
- sf->x = mmrand(ss->s->width, ss->s->width + 300, 1);
- sf->xs = -mmrand(1, 3, 1);
- sf->y = mmrand(-boxing, ss->s->height + boxing, 1);
- sf->ys = mmrand(-1, 1, 500);
- }
- else if (strcmp(snowDirections[3], o->value.s) == 0)
+ //TODO: possibly place fireflies based on FOV, instead of a cube.
+ sf->x = mmrand(-boxing, ss->s->width + boxing, 1);
+ sf->y = mmrand(-boxing, ss->s->height + boxing, 1);
+ sf->z = mmrand(-depth, 0.1, 5000);
+
+ sf->lifespan = mmrand(50,200, 100);
+ sf->age = 0.0;
+
+ // speed of firefly
+ int i = 0;
+ for (i = 0; i < 4; i++)
{
- sf->x = mmrand(-300, 0, 1);
- sf->xs = mmrand(1, 3, 1);
- sf->y = mmrand(-boxing, ss->s->height + boxing, 1);
- sf->ys = mmrand(-1, 1, 500);
+ sf->xs[i] = mmrand(-3000, 3000, 1000);
+ sf->ys[i] = mmrand(-3000, 3000, 1000);
+ sf->zs[i] = mmrand(-1000, 1000, 500000);
}
-
- sf->z = mmrand(-depth, 0.1, 5000);
- sf->zs = mmrand(-1000, 1000, 500000);
- sf->ra = mmrand(-1000, 1000, 50);
- sf->rs = mmrand(-1000, 1000, 1000);
}
-static void setSnowflakeTexture(SnowScreen * ss, SnowFlake * sf)
+static void setFireFlyTexture(FireFlyScreen *ss, FireFly *sf)
{
- if (ss->snowTexturesLoaded)
- sf->tex = &ss->snowTex[rand() % ss->snowTexturesLoaded];
+ if (ss->fireFlyTexturesLoaded)
+ sf->tex = &ss->fireFliesTex[rand() % ss->fireFlyTexturesLoaded];
}
-static void updateSnowTextures(CompScreen * s)
+static void updateFireFlyTextures(CompScreen *s)
{
- SNOW_SCREEN(s);
- SNOW_DISPLAY(s->display);
+ FIREFLY_SCREEN(s);
+ FIREFLY_DISPLAY(s->display);
int i = 0;
-
- for (i = 0; i < ss->snowTexturesLoaded; i++)
+ for (i = 0; i < ss->fireFlyTexturesLoaded; i++)
{
- finiTexture(s, &ss->snowTex[i].tex);
- glDeleteLists(ss->snowTex[i].dList, 1);
+ finiTexture (s, &ss->fireFliesTex[i].tex);
+ glDeleteLists(ss->fireFliesTex[i].dList,1);
}
- if (ss->snowTexturesLoaded)
- free(ss->snowTex);
- ss->snowTexturesLoaded = 0;
+ if (ss->fireFlyTexturesLoaded)
+ free(ss->fireFliesTex);
+ ss->fireFlyTexturesLoaded = 0;
- ss->snowTex = calloc(1, sizeof(SnowTexture) * sd->snowTexNFiles);
+ ss->fireFliesTex = calloc(1, sizeof(FireFlyTexture) * sd->fireFliesTexNFiles);
int count = 0;
-
- for (i = 0; i < sd->snowTexNFiles; i++)
+ for (i = 0; i < sd->fireFliesTexNFiles; i++)
{
- ss->snowTex[count].loaded =
- readImageToTexture(s, &ss->snowTex[count].tex,
- sd->snowTexFiles[i].s,
- &ss->snowTex[count].width,
- &ss->snowTex[count].height);
- if (!ss->snowTex[count].loaded)
+ ss->fireFliesTex[count].loaded = readImageToTexture (s, &ss->fireFliesTex[count].tex,
+ sd->fireFliesTexFiles[i].s, &ss->fireFliesTex[count].width, &ss->fireFliesTex[count].height);
+ if (!ss->fireFliesTex[count].loaded)
{
- printf("[Snow]: Texture not found : %s\n", sd->snowTexFiles[i].s);
+ printf("[FireFly]: Texture not found : %s\n", sd->fireFliesTexFiles[i].s);
continue;
}
- printf("[Snow]: Loaded Texture %s\n", sd->snowTexFiles[i].s);
- CompMatrix *mat = &ss->snowTex[count].tex.matrix;
- SnowTexture *sTex = &ss->snowTex[count];
+ printf("[FireFly]: Loaded Texture %s\n",sd->fireFliesTexFiles[i].s);
+ CompMatrix *mat = &ss->fireFliesTex[count].tex.matrix;
+ FireFlyTexture *sTex = &ss->fireFliesTex[count];
- sTex->dList = glGenLists(1);
+ sTex->dList =glGenLists(1);
glNewList(sTex->dList, GL_COMPILE);
- glBegin(GL_QUADS);
+ glBegin (GL_QUADS);
- glTexCoord2f(COMP_TEX_COORD_X(mat, 0), COMP_TEX_COORD_Y(mat, 0));
- glVertex2f(0, 0);
- glTexCoord2f(COMP_TEX_COORD_X(mat, 0),
- COMP_TEX_COORD_Y(mat, sTex->height));
- glVertex2f(0, snowSize * sTex->height / sTex->width);
- glTexCoord2f(COMP_TEX_COORD_X(mat, sTex->width),
- COMP_TEX_COORD_Y(mat, sTex->height));
- glVertex2f(snowSize, snowSize * sTex->height / sTex->width);
- glTexCoord2f(COMP_TEX_COORD_X(mat, sTex->width),
- COMP_TEX_COORD_Y(mat, 0));
- glVertex2f(snowSize, 0);
+ glTexCoord2f (COMP_TEX_COORD_X(mat, 0), COMP_TEX_COORD_Y(mat, 0));
+ glVertex2f (0,0);
+ glTexCoord2f (COMP_TEX_COORD_X(mat, 0), COMP_TEX_COORD_Y(mat, sTex->height));
+ glVertex2f (0,fireFlySize * sTex->height / sTex->width);
+ glTexCoord2f (COMP_TEX_COORD_X(mat, sTex->width), COMP_TEX_COORD_Y(mat, sTex->height));
+ glVertex2f (fireFlySize,fireFlySize * sTex->height / sTex->width);
+ glTexCoord2f (COMP_TEX_COORD_X(mat, sTex->width), COMP_TEX_COORD_Y(mat, 0));
+ glVertex2f (fireFlySize,0);
- glEnd();
+ glEnd ();
glEndList();
count++;
}
- ss->snowTexturesLoaded = count;
- if (count < sd->snowTexNFiles)
- ss->snowTex = realloc(ss->snowTex, sizeof(SnowTexture) * count);
+ ss->fireFlyTexturesLoaded = count;
+ if (count < sd->fireFliesTexNFiles)
+ ss->fireFliesTex = realloc(ss->fireFliesTex, sizeof(FireFlyTexture) * count);
- SnowFlake *snowFlake = ss->allSnowFlakes;
-
- for (i = 0; i < MAX_SNOWFLAKES; i++)
+ for (i = 0; i < MAX_FIREFLIES; i++)
{
- setSnowflakeTexture(ss, snowFlake++);
+ setFireFlyTexture(ss, &ss->allFireFlies[i]);
}
}
-static Bool snowInitScreen(CompPlugin * p, CompScreen * s)
+static Bool fireFliesInitScreen(CompPlugin *p, CompScreen *s)
{
- SNOW_DISPLAY(s->display);
-
- SnowScreen *ss = (SnowScreen *) calloc(1, sizeof(SnowScreen));
+ FIREFLY_DISPLAY(s->display);
+ FireFlyScreen *ss = (FireFlyScreen *) calloc(1, sizeof(FireFlyScreen));
ss->s = s;
s->privates[sd->screenPrivateIndex].ptr = ss;
int i = 0;
- SnowFlake *snowFlake = ss->allSnowFlakes;
-
- for (i = 0; i < MAX_SNOWFLAKES; i++)
+ for (i = 0; i < MAX_FIREFLIES; i++)
{
- InitiateSnowFlake(ss, snowFlake);
- setSnowflakeTexture(ss, snowFlake);
- snowFlake++;
+ InitiateFireFly(ss, &ss->allFireFlies[i]);
+ setFireFlyTexture(ss, &ss->allFireFlies[i]);
}
- updateSnowTextures(s);
+ updateFireFlyTextures(s);
setupDisplayList(ss);
ss->active = FALSE;
- addScreenAction(s, &sd->opt[SNOW_DISPLAY_OPTION_INITIATE].value.action);
+ addScreenAction (s, &sd->opt[FIREFLY_DISPLAY_OPTION_INITIATE].value.action);
- WRAP(ss, s, paintScreen, snowPaintScreen);
- WRAP(ss, s, drawWindow, snowDrawWindow);
+ WRAP(ss, s, paintScreen, fireFliesPaintScreen);
+ WRAP(ss, s, drawWindow, fireFliesDrawWindow);
- ss->timeoutHandle = compAddTimeout(snowUpdateDelay, stepSnowPositions, s);
+ ss->timeoutHandle=compAddTimeout(fireFlyUpdateDelay,stepFireFlyPositions,s);
return TRUE;
}
-static void snowFiniScreen(CompPlugin * p, CompScreen * s)
+static void fireFliesFiniScreen(CompPlugin *p, CompScreen *s)
{
- SNOW_SCREEN(s);
- SNOW_DISPLAY(s->display);
+ FIREFLY_SCREEN(s);
+ FIREFLY_DISPLAY(s->display);
compRemoveTimeout(ss->timeoutHandle);
int i = 0;
-
- for (i = 0; i < ss->snowTexturesLoaded; i++)
+ for (i = 0; i < ss->fireFlyTexturesLoaded; i++)
{
- finiTexture(s, &ss->snowTex[i].tex);
- glDeleteLists(ss->snowTex[i].dList, 1);
+ finiTexture (s, &ss->fireFliesTex[i].tex);
+ glDeleteLists(ss->fireFliesTex[i].dList,1);
}
- if (ss->snowTexturesLoaded)
- free(ss->snowTex);
+ if (ss->fireFlyTexturesLoaded)
+ free(ss->fireFliesTex);
//Restore the original function
UNWRAP(ss, s, paintScreen);
UNWRAP(ss, s, drawWindow);
- removeScreenAction(s,
- &sd->opt[SNOW_DISPLAY_OPTION_INITIATE].value.action);
+ removeScreenAction (s, &sd->opt[FIREFLY_DISPLAY_OPTION_INITIATE].value.action);
//Free the pointer
free(ss);
}
-static Bool
-snowSetDisplayOption(CompDisplay * display, char *name,
- CompOptionValue * value)
+static Bool fireFliesSetDisplayOption(CompDisplay *display, char *name, CompOptionValue *value)
{
CompOption *o;
int index;
- SNOW_DISPLAY(display);
+ FIREFLY_DISPLAY(display);
o = compFindOption(sd->opt, NUM_OPTIONS(sd), name, &index);
if (!o)
@@ -613,367 +580,296 @@
switch (index)
{
- case SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES:
- if (compSetFloatOption(o, value))
- {
- numFlakes =
- (int)sd->opt[SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES].value.f;
- return TRUE;
- }
- break;
-
- case SNOW_DISPLAY_OPTION_SNOW_DIRECTION:
- if (compSetStringOption(o, value))
- {
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_SNOW_SIZE:
- if (compSetFloatOption(o, value))
- {
- snowSize = sd->opt[SNOW_DISPLAY_OPTION_SNOW_SIZE].value.f;
- displayListNeedsUpdating = TRUE;
- CompScreen *s = display->screens;
-
- updateSnowTextures(s);
-
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_SNOW_SPEED:
- if (compSetFloatOption(o, value))
- {
- snowSpeed = sd->opt[SNOW_DISPLAY_OPTION_SNOW_SPEED].value.f;
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY:
- if (compSetIntOption(o, value))
- {
- CompScreen *s = display->screens;
+ case FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES:
+ if (compSetFloatOption (o, value))
+ {
+ numFlies = (int) sd->opt[FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES].value.f;
+ return TRUE;
+ }
+ break;
+ case FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE:
+ if (compSetFloatOption (o, value))
+ {
+ fireFlySize = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE].value.f;
+ displayListNeedsUpdating = TRUE;
+ CompScreen * s=display->screens;
+ updateFireFlyTextures(s);
- SNOW_SCREEN(s);
- snowUpdateDelay =
- sd->opt[SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY].value.i;
- if (ss->timeoutHandle)
- compRemoveTimeout(ss->timeoutHandle);
- ss->timeoutHandle =
- compAddTimeout(snowUpdateDelay, stepSnowPositions, s);
- return TRUE;
- }
- case SNOW_DISPLAY_OPTION_SCREEN_BOXING:
- if (compSetFloatOption(o, value))
- {
- boxing = sd->opt[SNOW_DISPLAY_OPTION_SCREEN_BOXING].value.f;
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_SCREEN_DEPTH:
- if (compSetFloatOption(o, value))
- {
- depth = sd->opt[SNOW_DISPLAY_OPTION_SCREEN_DEPTH].value.f;
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_SNOW_TEXTURES:
- if (compSetOptionList(o, value))
- {
- CompScreen *s = display->screens;
+ return TRUE;
+ }
+ break;
+ case FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED:
+ if (compSetFloatOption (o, value))
+ {
+ fireFlySpeed = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED].value.f;
+ return TRUE;
+ }
+ break;
+ case FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY:
+ if (compSetIntOption (o,value))
+ {
+ CompScreen * s = display->screens;
+ FIREFLY_SCREEN(s);
+ fireFlyUpdateDelay = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY].value.i;
+ if (ss->timeoutHandle)
+ compRemoveTimeout(ss->timeoutHandle);
+ ss->timeoutHandle=compAddTimeout(fireFlyUpdateDelay,stepFireFlyPositions,s);
+ return TRUE;
+ }
+ case FIREFLY_DISPLAY_OPTION_SCREEN_BOXING:
+ if (compSetFloatOption (o, value))
+ {
+ boxing = sd->opt[FIREFLY_DISPLAY_OPTION_SCREEN_BOXING].value.f;
+ return TRUE;
+ }
+ break;
+ case FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH:
+ if (compSetFloatOption (o, value))
+ {
+ depth = sd->opt[FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH].value.f;
+ return TRUE;
+ }
+ break;
+ // case FIREFLY_DISPLAY_OPTION_MAX_FRAMES:
+ // if (compSetFloatOption (o, value))
+ // return TRUE;
+ // break;
- sd->snowTexFiles =
- sd->opt[SNOW_DISPLAY_OPTION_SNOW_TEXTURES].value.list.
- value;
- sd->snowTexNFiles =
- sd->opt[SNOW_DISPLAY_OPTION_SNOW_TEXTURES].value.list.
- nValue;
+ case FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES:
+ if (compSetOptionList (o, value))
+ {
+ CompScreen * s=display->screens;
+ sd->fireFliesTexFiles = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES].value.list.value;
+ sd->fireFliesTexNFiles = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES].value.list.nValue;
- updateSnowTextures(s);
- return TRUE;
- }
- break;
+ updateFireFlyTextures(s);
+ return TRUE;
+ }
+ break;
- case SNOW_DISPLAY_OPTION_INITIATE:
- if (setDisplayAction(display, o, value))
- return TRUE;
- break;
- case SNOW_DISPLAY_OPTION_ON_TOP:
- if (compSetBoolOption(o, value))
- {
- onTop = sd->opt[SNOW_DISPLAY_OPTION_ON_TOP].value.b;
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_ROTATION:
- if (compSetBoolOption(o, value))
- {
- snowRotate = sd->opt[SNOW_DISPLAY_OPTION_ROTATION].value.b;
- return TRUE;
- }
- break;
- case SNOW_DISPLAY_OPTION_USE_BLENDING:
- if (compSetBoolOption(o, value))
- {
- useBlending = sd->opt[SNOW_DISPLAY_OPTION_USE_BLENDING].value.b;
- return TRUE;
- }
- case SNOW_DISPLAY_OPTION_USE_TEXTURES:
- if (compSetBoolOption(o, value))
- {
- useTextures = sd->opt[SNOW_DISPLAY_OPTION_USE_TEXTURES].value.b;
- return TRUE;
- }
- break;
- default:
- break;
+ case FIREFLY_DISPLAY_OPTION_INITIATE:
+ if (setDisplayAction (display, o, value))
+ return TRUE;
+ break;
+ case FIREFLY_DISPLAY_OPTION_ON_TOP:
+ if (compSetBoolOption (o, value))
+ {
+ onTop = sd->opt[FIREFLY_DISPLAY_OPTION_ON_TOP].value.b;
+ return TRUE;
+ }
+ break;
+ case FIREFLY_DISPLAY_OPTION_USE_BLENDING:
+ if (compSetBoolOption (o, value))
+ {
+ useBlending = sd->opt[FIREFLY_DISPLAY_OPTION_USE_BLENDING].value.b;
+ return TRUE;
+ }
+ case FIREFLY_DISPLAY_OPTION_USE_TEXTURES:
+ if (compSetBoolOption (o, value))
+ {
+ useTextures = sd->opt[FIREFLY_DISPLAY_OPTION_USE_TEXTURES].value.b;
+ return TRUE;
+ }
+ break;
+ default:
+ break;
}
return FALSE;
}
-static void snowDisplayInitOptions(SnowDisplay * sd)
+static void fireFliesDisplayInitOptions(FireFlyDisplay * sd)
{
CompOption *o;
- o = &sd->opt[SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES];
- o->advanced = False;
- o->name = "num_snowflakes";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Number of Snowflakes");
- o->longDesc = N_("Number of Snowflakes");
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES];
+ o->name = "num_fireflies";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
+ o->shortDesc = N_("Number of fireflies");
+ o->longDesc = N_("Number of fireflies");
o->type = CompOptionTypeFloat;
- o->value.f = SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES_DEFAULT;
+ o->value.f = FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES_DEFAULT;
o->rest.f.min = 0;
o->rest.f.max = 10000;
o->rest.f.precision = 1;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_SIZE];
- o->advanced = False;
- o->name = "snow_size";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Size of snowflakes");
- o->longDesc = N_("Size of snowflakes");
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE];
+ o->name = "fireFlies_size";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
+ o->shortDesc = N_("Size of fireflies");
+ o->longDesc = N_("Size of fireflies");
o->type = CompOptionTypeFloat;
- o->value.f = SNOW_DISPLAY_OPTION_SNOW_SIZE_DEFAULT;
+ o->value.f = FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE_DEFAULT;
o->rest.f.min = 0;
o->rest.f.max = 50;
o->rest.f.precision = 0.1;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_SPEED];
- o->advanced = False;
- o->name = "snow_speed";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Speed of falling snow");
- o->longDesc = N_("Speed of falling snow");
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED];
+ o->name = "fireFlies_speed";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
+ o->shortDesc = N_("Speed of fireflies");
+ o->longDesc = N_("Speed of fireflies");
o->type = CompOptionTypeFloat;
- o->value.f = SNOW_DISPLAY_OPTION_SNOW_SPEED_DEFAULT;
+ o->value.f = FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED_DEFAULT;
o->rest.f.min = 0;
o->rest.f.max = 100;
o->rest.f.precision = 1;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY];
- o->advanced = False;
- o->name = "snow_update_delay";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Update Delay");
- o->longDesc =
- N_
- ("Delay in ms between screen updates. Deacreasing this value may make snow fall more smoothly, but will also increase CPU usage.");
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY];
+ o->name = "fireFlies_update_delay";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
+ o->shortDesc = N_("Screen Update Delay");
+ o->longDesc = N_("Delay in ms between screen updates");
o->type = CompOptionTypeInt;
- o->value.i = SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY_DEFAULT;
+ o->value.i = FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY_DEFAULT;
o->rest.i.min = 10;
o->rest.i.max = 200;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SCREEN_BOXING];
- o->advanced = False;
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_SCREEN_BOXING];
o->name = "screen_boxing";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
o->shortDesc = N_("Screen Boxing");
- o->longDesc =
- N_
- ("How far outside the screen resolution snowflakes can be before being removed. Needed because of FOV.");
+ o->longDesc = N_("How far outside the screen resolution fireflies can be before being removed. Needed because of FOV.");
o->type = CompOptionTypeFloat;
- o->value.f = SNOW_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT;
+ o->value.f = FIREFLY_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT;
o->rest.f.min = -2000;
o->rest.f.max = 2000;
o->rest.f.precision = 1;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SCREEN_DEPTH];
- o->advanced = False;
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH];
o->name = "screen_depth";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
+ o->group=N_("Settings");
+ o->subGroup=N_("");
+ o->displayHints="";
o->shortDesc = N_("Screen Depth");
- o->longDesc =
- N_
- ("How deep into the screen snowflakes can be drawn before being removed.");
+ o->longDesc = N_("How deep into the screen fireflies can be drawn before being removed.");
o->type = CompOptionTypeFloat;
- o->value.f = SNOW_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT;
+ o->value.f = FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT;
o->rest.f.min = 0;
- o->rest.f.max = SNOW_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT * 2;
+ o->rest.f.max = FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT * 2;
o->rest.f.precision = 1;
- o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_TEXTURES];
- o->advanced = False;
- o->name = "snow_textures";
- o->group = N_("Textures");
- o->subGroup = N_("");
- o->displayHints = "file;image;pngonly;";
- o->shortDesc = N_("Snow Textures");
- o->longDesc = N_("Snow textures");
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES];
+ o->name = "fireFlies_textures";
+ o->group=N_("Textures");
+ o->subGroup=N_("");
+ o->displayHints="file;image;pngonly;";
+ o->shortDesc = N_("FireFly Textures");
+ o->longDesc = N_("FireFly textures");
o->type = CompOptionTypeList;
o->value.list.type = CompOptionTypeString;
- o->value.list.nValue = N_SNOW_TEXTURES;
- o->value.list.value = malloc(sizeof(CompOptionValue) * N_SNOW_TEXTURES);
+ o->value.list.nValue = N_FIREFLY_TEXTURES;
+ o->value.list.value =
+ malloc(sizeof(CompOptionValue) * N_FIREFLY_TEXTURES);
int i = 0;
-
- for (i = 0; i < N_SNOW_TEXTURES; i++)
- o->value.list.value[i].s = strdup(snowTextures[i]);
+ for (i = 0; i < N_FIREFLY_TEXTURES; i++)
+ o->value.list.value[i].s = strdup(fireFlyTextures[i]);
o->rest.s.string = 0;
o->rest.s.nString = 0;
- o = &sd->opt[SNOW_DISPLAY_OPTION_INITIATE];
- o->advanced = False;
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_INITIATE];
o->name = "Initiate";
- o->group = N_("Key Bindings");
- o->subGroup = N_("");
+ o->group = N_("Initiate");
+ o->subGroup = N_("Key Bindings");
o->displayHints = "";
- o->shortDesc = N_("snow toggle key");
- o->longDesc = N_("snow toggle key");
+ o->shortDesc = N_("FireFlies toggle key");
+ o->longDesc = N_("FireFlies toggle key");
o->type = CompOptionTypeAction;
- o->value.action.initiate = snowToggle;
+ o->value.action.initiate = fireFliesToggle;
o->value.action.terminate = 0;
o->value.action.bell = FALSE;
o->value.action.type = CompBindingTypeKey;
o->value.action.state = CompActionStateInitKey;
o->value.action.state |= CompActionStateInitButton;
- o->value.action.key.modifiers = SNOW_DISPLAY_OPTION_INITIATE_MOD;
+ o->value.action.key.modifiers = FIREFLY_DISPLAY_OPTION_INITIATE_MOD;
o->value.action.key.keysym =
- XStringToKeysym(SNOW_DISPLAY_OPTION_INITIATE_KEY);
+ XStringToKeysym (FIREFLY_DISPLAY_OPTION_INITIATE_KEY);
- o = &sd->opt[SNOW_DISPLAY_OPTION_ON_TOP];
- o->advanced = False;
- o->name = "snow_over_windows";
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_ON_TOP];
+ o->name = "fireFlies_over_windows";
o->group = N_("Settings");
o->subGroup = N_("");
o->displayHints = "";
- o->shortDesc = N_("Snow over windows.");
- o->longDesc = N_("Snow is drawn above windows.");
+ o->shortDesc = N_("Fireflies over windows");
+ o->longDesc = N_("Fireflies are drawn above windows.");
o->type = CompOptionTypeBool;
- o->value.b = SNOW_DISPLAY_OPTION_ON_TOP_DEFAULT;
-
- o = &sd->opt[SNOW_DISPLAY_OPTION_ROTATION];
- o->advanced = False;
- o->name = "snow_rotation";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Rotate flakes");
- o->longDesc = N_("Flakes rotate when checked.");
- o->type = CompOptionTypeBool;
- o->value.b = SNOW_DISPLAY_OPTION_ROTATION_DEFAULT;
-
- o = &sd->opt[SNOW_DISPLAY_OPTION_SNOW_DIRECTION];
- o->advanced = False;
- o->name = "snow_direction";
- o->group = N_("Settings");
- o->subGroup = N_("");
- o->displayHints = "";
- o->shortDesc = N_("Snow Direction");
- o->longDesc = N_("Select direction in which the snow should fly.");
- o->type = CompOptionTypeString;
- o->value.s =
- strdup(snowDirections[SNOW_DISPLAY_OPTION_DIRECTION_DEFAULT]);
- o->rest.s.string = snowDirections;
- o->rest.s.nString = NUM_SNOW_DIRECTIONS;
+ o->value.b = FIREFLY_DISPLAY_OPTION_ON_TOP_DEFAULT;
- o = &sd->opt[SNOW_DISPLAY_OPTION_USE_BLENDING];
- o->advanced = False;
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_USE_BLENDING];
o->name = "use_blending";
o->group = N_("Debug");
o->subGroup = N_("");
o->displayHints = "";
o->shortDesc = N_("Enable Blending");
- o->longDesc = N_("Enables alpha blending of snowflakes");
+ o->longDesc = N_("Enables alpha blending of fireflies");
o->type = CompOptionTypeBool;
- o->value.b = SNOW_DISPLAY_OPTION_USE_BLENDING_DEFAULT;
+ o->value.b = FIREFLY_DISPLAY_OPTION_USE_BLENDING_DEFAULT;
- o = &sd->opt[SNOW_DISPLAY_OPTION_USE_TEXTURES];
- o->advanced = False;
+ o = &sd->opt[FIREFLY_DISPLAY_OPTION_USE_TEXTURES];
o->name = "use_textures";
o->group = N_("Debug");
o->subGroup = N_("");
o->displayHints = "";
o->shortDesc = N_("Enable Textures");
- o->longDesc =
- N_
- ("Enables textured snowflakes. Otherwise color gradients are used.");
+ o->longDesc = N_("Enables textured fireflies. Otherwise color gradients are used.");
o->type = CompOptionTypeBool;
- o->value.b = SNOW_DISPLAY_OPTION_USE_TEXTURES_DEFAULT;
+ o->value.b = FIREFLY_DISPLAY_OPTION_USE_TEXTURES_DEFAULT;
}
-static CompOption *snowGetDisplayOptions(CompDisplay * display, int *count)
+static CompOption *fireFliesGetDisplayOptions(CompDisplay * display, int *count)
{
- if (display)
- {
- SNOW_DISPLAY(display);
+ if (display) {
+ FIREFLY_DISPLAY(display);
*count = NUM_OPTIONS(sd);
return sd->opt;
}
- else
- {
- SnowDisplay *sd = malloc(sizeof(SnowDisplay));
-
- snowDisplayInitOptions(sd);
+ else {
+ FireFlyDisplay *sd = malloc(sizeof(FireFlyDisplay));
+ fireFliesDisplayInitOptions(sd);
*count = NUM_OPTIONS(sd);
return sd->opt;
}
}
-static Bool snowInitDisplay(CompPlugin * p, CompDisplay * d)
+static Bool fireFliesInitDisplay(CompPlugin * p, CompDisplay * d)
{
- //Generate a snow display
- SnowDisplay *sd = (SnowDisplay *) malloc(sizeof(SnowDisplay));
-
+ //Generate a fireFlies display
+ FireFlyDisplay *sd = (FireFlyDisplay *) malloc(sizeof(FireFlyDisplay));
//Allocate a private index
sd->screenPrivateIndex = allocateScreenPrivateIndex(d);
//Check if its valid
- if (sd->screenPrivateIndex < 0)
- {
+ if (sd->screenPrivateIndex < 0) {
free(sd);
return FALSE;
}
- numFlakes = SNOW_DISPLAY_OPTION_NUM_SNOWFLAKES_DEFAULT;
- snowRotate = SNOW_DISPLAY_OPTION_ROTATION_DEFAULT;
- snowSize = SNOW_DISPLAY_OPTION_SNOW_SIZE_DEFAULT;
- snowSpeed = SNOW_DISPLAY_OPTION_SNOW_SPEED_DEFAULT;
- snowUpdateDelay = SNOW_DISPLAY_OPTION_SNOW_UPDATE_DELAY_DEFAULT;
- boxing = SNOW_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT;
- depth = SNOW_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT;
- onTop = SNOW_DISPLAY_OPTION_ON_TOP_DEFAULT;
+ numFlies = FIREFLY_DISPLAY_OPTION_NUM_FIREFLIES_DEFAULT;
+ fireFlySize = FIREFLY_DISPLAY_OPTION_FIREFLY_SIZE_DEFAULT;
+ fireFlySpeed = FIREFLY_DISPLAY_OPTION_FIREFLY_SPEED_DEFAULT;
+ fireFlyUpdateDelay = FIREFLY_DISPLAY_OPTION_FIREFLY_UPDATE_DELAY_DEFAULT;
+ boxing = FIREFLY_DISPLAY_OPTION_SCREEN_BOXING_DEFAULT;
+ depth = FIREFLY_DISPLAY_OPTION_SCREEN_DEPTH_DEFAULT;
+ onTop = FIREFLY_DISPLAY_OPTION_ON_TOP_DEFAULT;
displayListNeedsUpdating = FALSE;
- useBlending = SNOW_DISPLAY_OPTION_USE_BLENDING_DEFAULT;
- useTextures = SNOW_DISPLAY_OPTION_USE_TEXTURES_DEFAULT;
- snowDisplayInitOptions(sd);
-
- sd->snowTexFiles =
- sd->opt[SNOW_DISPLAY_OPTION_SNOW_TEXTURES].value.list.value;
- sd->snowTexNFiles =
- sd->opt[SNOW_DISPLAY_OPTION_SNOW_TEXTURES].value.list.nValue;
+ useBlending = FIREFLY_DISPLAY_OPTION_USE_BLENDING_DEFAULT;
+ useTextures = FIREFLY_DISPLAY_OPTION_USE_TEXTURES_DEFAULT;
+ fireFliesDisplayInitOptions(sd);
+
+ sd->fireFliesTexFiles = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES].value.list.value;
+ sd->fireFliesTexNFiles = sd->opt[FIREFLY_DISPLAY_OPTION_FIREFLY_TEXTURES].value.list.nValue;
//Record the display
d->privates[displayPrivateIndex].ptr = sd;
@@ -981,9 +877,9 @@
return TRUE;
}
-static void snowFiniDisplay(CompPlugin * p, CompDisplay * d)
+static void fireFliesFiniDisplay(CompPlugin * p, CompDisplay * d)
{
- SNOW_DISPLAY(d);
+ FIREFLY_DISPLAY(d);
//Free the private index
freeScreenPrivateIndex(d, sd->screenPrivateIndex);
@@ -991,7 +887,7 @@
free(sd);
}
-static Bool snowInit(CompPlugin * p)
+static Bool fireFliesInit(CompPlugin * p)
{
displayPrivateIndex = allocateDisplayPrivateIndex();
@@ -1001,36 +897,34 @@
return TRUE;
}
-static void snowFini(CompPlugin * p)
+static void fireFliesFini(CompPlugin * p)
{
if (displayPrivateIndex >= 0)
freeDisplayPrivateIndex(displayPrivateIndex);
}
-CompPluginDep snowDeps[] = {
- {CompPluginRuleAfterCategory, "imageformat"}
- ,
+CompPluginDep fireflyDeps[] = {
+ {CompPluginRuleAfterCategory, "imageformat"},
};
-CompPluginVTable snowVTable = {
- "snow",
- N_("Snow"),
- N_("XSnow for Beryl"),
- snowInit,
- snowFini,
- snowInitDisplay,
- snowFiniDisplay,
- snowInitScreen,
- snowFiniScreen,
- 0,
+CompPluginVTable fireFliesVTable = {
+ "firefly",
+ N_("FireFlies"),
+ N_("XFireFlies for Beryl"),
+ fireFliesInit,
+ fireFliesFini,
+ fireFliesInitDisplay,
+ fireFliesFiniDisplay,
+ fireFliesInitScreen,
+ fireFliesFiniScreen,
0,
- snowGetDisplayOptions,
- snowSetDisplayOption,
- 0, /*snowGetScreenOptions */
- 0, /*snowSetScreenOption */
0,
- snowDeps,
- sizeof(snowDeps) / sizeof(snowDeps[0]),
+ fireFliesGetDisplayOptions,
+ fireFliesSetDisplayOption,
+ 0, /*fireFliesGetScreenOptions */
+ 0, /*fireFliesSetScreenOption */
+ fireflyDeps,
+ sizeof(fireflyDeps) / sizeof(fireflyDeps[0]),
0,
0,
BERYL_ABI_INFO,
@@ -1043,5 +937,5 @@
CompPluginVTable *getCompPluginInfo(void)
{
- return &snowVTable;
+ return &fireFliesVTable;
}