rendered paste bodyFrom a0bae79626c6100bc1cd98a244bab62d1b49414e Mon Sep 17 00:00:00 2001
From: Danny Baumann <dannybaumann@web.de>
Date: Fri, 19 Dec 2008 09:36:19 +0100
Subject: [PATCH] Cleanup, compiz coding style.
---
autumn.c | 54 +++--
bubbles.c | 44 ++--
elements.c | 776 ++++++++++++++++++++++++++++++++---------------------------
fireflies.c | 83 ++++---
snow.c | 12 +-
stars.c | 49 +++--
6 files changed, 562 insertions(+), 456 deletions(-)
diff --git a/autumn.c b/autumn.c
index ee780c0..f11fc0f 100644
--- a/autumn.c
+++ b/autumn.c
@@ -4,11 +4,10 @@
void
initiateAutumnElement (CompScreen *s,
- Element *e)
+ Element *e)
{
- int i;
- float xSway = elementsMmRand(elementsGetAutumnSway( s),elementsGetAutumnSway( s),2.0);
- float ySway = elementsGetAutumnYSway(s) / 20.0;
+ int i;
+ float xSway, ySway;
AutumnElement *ae;
if (!e->ptr)
@@ -19,43 +18,52 @@ initiateAutumnElement (CompScreen *s,
ae = (AutumnElement *) e->ptr;
+ xSway = elementsMmRand (elementsGetAutumnSway (s),
+ elementsGetAutumnSway (s), 2.0);
+ ySway = elementsGetAutumnYSway (s) / 20.0;
+
for (i = 0; i < MAX_AUTUMN_AGE; i++)
- {
- ae->autumnFloat[0][i] = -xSway + (i * ((2 * xSway)/(MAX_AUTUMN_AGE-1)));
- }
+ ae->autumnFloat[0][i] = -xSway +
+ (i * ((2 * xSway) / (MAX_AUTUMN_AGE - 1)));
+
for (i = 0; i < (MAX_AUTUMN_AGE / 2); i++)
- {
- ae->autumnFloat[1][i] = -ySway + (i * ((2 * ySway)/(MAX_AUTUMN_AGE-1)));
- }
+ ae->autumnFloat[1][i] = -ySway +
+ (i * ((2 * ySway) / (MAX_AUTUMN_AGE - 1)));
+
for (; i < MAX_AUTUMN_AGE; i++)
- {
- ae->autumnFloat[1][i] = ySway - (i * ((2 * ySway)/(MAX_AUTUMN_AGE-1)));
- }
- ae->autumnAge[0] = elementsGetRand(0,MAX_AUTUMN_AGE-1);
- ae->autumnAge[1] = elementsGetRand(0,(MAX_AUTUMN_AGE/2)-1);
- e->x = elementsMmRand (0, s->width, 1);
ae->autumnChange = 1;
+ ae->autumnFloat[1][i] = ySway -
+ (i * ((2 * ySway) / (MAX_AUTUMN_AGE - 1)));
+
+ ae->autumnAge[0] = elementsGetRand (0, MAX_AUTUMN_AGE - 1);
+ ae->autumnAge[1] = elementsGetRand (0, (MAX_AUTUMN_AGE / 2) - 1);
+ ae->autumnChange = 1;
+
+ e->x = elementsMmRand (0, s->width, 1);
e->y = -elementsMmRand (100, BIG_NUMBER, 1);
e->dy = elementsMmRand (-2, -1, 5);
}
void
-autumnMove (CompScreen *s,
+autumnMove (CompScreen *s,
ElementAnimation *anim,
- Element *e,
- int updateDelay)
+ Element *e,
+ int updateDelay)
{
- float autumnSpeed = anim->speed/30.0f;
+ float autumnSpeed = anim->speed / 30.0f;
AutumnElement *ae = (AutumnElement *) e->ptr;
- if (!e->ptr)
+ if (!ae)
return;
- e->x += (ae->autumnFloat[0][ae->autumnAge[0]] * (float) updateDelay) * 0.0125;
- e->y += (ae->autumnFloat[1][ae->autumnAge[1]] * (float) updateDelay) * 0.0125 + autumnSpeed;
+ e->x += (ae->autumnFloat[0][ae->autumnAge[0]] * (float) updateDelay) / 80;
+ e->y += (ae->autumnFloat[1][ae->autumnAge[1]] * (float) updateDelay) / 80 +
+ autumnSpeed;
e->z += (e->dz * (float) updateDelay) * autumnSpeed / 100.0;
e->rAngle += ((float) updateDelay) / (10.1f - e->rSpeed);
+
ae->autumnAge[0] += ae->autumnChange;
ae->autumnAge[1] += 1;
+
if (ae->autumnAge[1] >= MAX_AUTUMN_AGE)
{
ae->autumnAge[1] = 0;
diff --git a/bubbles.c b/bubbles.c
index 5da95a3..8343dcd 100644
--- a/bubbles.c
+++ b/bubbles.c
@@ -4,13 +4,12 @@
void
initiateBubbleElement (CompScreen *s,
- Element *e)
+ Element *e)
{
- int i;
- float temp = elementsMmRand (elementsGetViscosity (s) / 2.0,
- elementsGetViscosity (s),50.0);
- float xSway = 1.0 - temp*temp * 1.0 / 4.0;
+ int i;
+ float temp, xSway;
BubbleElement *be;
+
if (!e->ptr)
e->ptr = calloc (1, sizeof (BubbleElement));
@@ -19,37 +18,40 @@ initiateBubbleElement (CompScreen *s,
be = (BubbleElement *) e->ptr;
+ temp = elementsMmRand (elementsGetViscosity (s) / 2.0,
+ elementsGetViscosity (s), 50.0);
+ xSway = 1.0 - temp * temp / 4.0;
+
for (i = 0; i < MAX_AUTUMN_AGE; i++)
- {
- be->bubbleFloat[0][i] =
- -xSway + (i * ((2 * xSway) / (MAX_AUTUMN_AGE-1)));
- }
+ be->bubbleFloat[0][i] = -xSway +
+ (i * ((2 * xSway) / (MAX_AUTUMN_AGE - 1)));
- be->bubbleAge[0] = elementsGetRand(0,MAX_AUTUMN_AGE-1);
+ be->bubbleAge[0] = elementsGetRand (0, MAX_AUTUMN_AGE - 1);
be->bubbleAge[1] = be->bubbleAge[0];
- e->x = elementsMmRand (0, s->width, 1);
be->bubbleChange = 1;
- e->y = elementsMmRand (s->height+100, s->height+ BIG_NUMBER,1);
+
+ e->x = elementsMmRand (0, s->width, 1);
+ e->y = elementsMmRand (s->height + 100, s->height + BIG_NUMBER, 1);
e->dy = elementsMmRand (-2, -1, 5);
}
void
-bubbleMove (CompScreen *s,
+bubbleMove (CompScreen *s,
ElementAnimation *anim,
- Element *e,
- int updateDelay)
+ Element *e,
+ int updateDelay)
{
- float bubblesSpeed = anim->speed / 30.0f;
+ float bubblesSpeed = anim->speed / 30.0f;
BubbleElement *be = (BubbleElement *) e->ptr;
- if (!e->ptr)
+ if (!be)
return;
- e->x += (be->bubbleFloat[0][be->bubbleAge[0]]
- * (float) updateDelay) * 0.125;
+ e->x += (be->bubbleFloat[0][be->bubbleAge[0]] * (float) updateDelay) / 8;
e->y += (e->dy * (float) updateDelay) * bubblesSpeed;
e->z += (e->dz * (float) updateDelay) * bubblesSpeed / 100.0;
e->rAngle += ((float) updateDelay) / (10.1f - e->rSpeed);
+
be->bubbleAge[0] += be->bubbleChange;
if (be->bubbleAge[0] >= MAX_AUTUMN_AGE)
{
@@ -65,14 +67,12 @@ bubbleMove (CompScreen *s,
void
bubbleFini (CompScreen *s,
- Element *e)
+ Element *e)
{
BubbleElement *be = (BubbleElement *) e->ptr;
if (be)
- {
free (be);
- }
e->ptr = NULL;
}
diff --git a/elements.c b/elements.c
index 2458316..26865ee 100644
--- a/elements.c
+++ b/elements.c
@@ -40,7 +40,8 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
**/
#include <compiz-core.h>
@@ -56,7 +57,7 @@ int
elementsGetRand (int min,
int max)
{
- return (rand() % (max - min + 1) + min);
+ return (rand () % (max - min + 1) + min);
}
float
@@ -64,7 +65,7 @@ elementsMmRand (int min,
int max,
float divisor)
{
- return ((float) elementsGetRand(min, max)) / divisor;
+ return ((float) elementsGetRand (min, max)) / divisor;
}
int elementsGetEBoxing (CompScreen *s)
@@ -81,15 +82,16 @@ int elementsGetEDepth (CompScreen *s)
* remove it and re-initiate it. Otherwise move it */
static void
-elementTestCreate (CompScreen *s,
- Element *ele,
+elementTestCreate (CompScreen *s,
+ Element *ele,
ElementAnimation *anim)
{
if (ele)
{
- if ((ele->y >= s->height + 200 || ele->x <= -200 ||
- ele->x >= s->width + 200 ||
- ele->y >= s->height + 200 ||
+ if ((ele->y >= s->height + 200 ||
+ ele->x <= -200 ||
+ ele->x >= s->width + 200 ||
+ ele->y >= s->height + 200 ||
ele->z <= -((float) elementsGetScreenDepth (s) / 500.0) ||
ele->z >= ((float)elementsGetScreenBoxing (s) / 5.0f)))
{
@@ -108,10 +110,10 @@ elementTestCreate (CompScreen *s,
*/
static Bool
-elementTestOffscreen (CompScreen *s,
+elementTestOffscreen (CompScreen *s,
ElementAnimation *anim)
{
- int i;
+ int i;
Element *e;
Bool ret = TRUE;
@@ -120,13 +122,14 @@ elementTestOffscreen (CompScreen *s,
e = &anim->elements[i];
if (e)
{
- if (!(e->y >= s->height + 200 || e->x <= -200||
- e->x >= s->width + 200 ||
- e->y >= s->height + 200 ||
- e->z <= -((float) elementsGetScreenDepth (s) / 500.0) ||
- e->z >= 1 ||
- e->y <= -((float)elementsGetScreenBoxing (s) / 5.0f))
- && e->opacity > 0.0f)
+ if (!(e->y >= s->height + 200 ||
+ e->x <= -200 ||
+ e->x >= s->width + 200 ||
+ e->y >= s->height + 200 ||
+ e->z <= -((float) elementsGetScreenDepth (s) / 500.0) ||
+ e->z >= 1 ||
+ e->y <= -((float) elementsGetScreenBoxing (s) / 5.0f)) &&
+ e->opacity > 0.0f)
{
ret = FALSE;
}
@@ -154,10 +157,10 @@ elementTestOffscreen (CompScreen *s,
/* Element Text Display Management */
-static void
+static void
elementsFreeTitle (CompScreen *s)
{
- ELEMENTS_SCREEN(s);
+ ELEMENTS_SCREEN (s);
if (!es->textPixmap)
return;
@@ -169,19 +172,19 @@ elementsFreeTitle (CompScreen *s)
damageScreen (s);
}
-static void
+static void
elementsRenderTitle (CompScreen *s,
- char *stringData)
+ char *stringData)
{
CompTextAttrib tA;
int stride;
void *data;
+ int ox1, ox2, oy1, oy2;
ELEMENTS_SCREEN (s);
elementsFreeTitle (s);
- int ox1, ox2, oy1, oy2;
getCurrentOutputExtents (s, &ox1, &oy1, &ox2, &oy2);
/* 75% of the output device es maximum width */
@@ -193,9 +196,8 @@ elementsRenderTitle (CompScreen *s,
tA.color[1] = elementsGetTitleFontColorGreen (s);
tA.color[2] = elementsGetTitleFontColorBlue (s);
tA.color[3] = elementsGetTitleFontColorAlpha (s);
-
- tA.style = TEXT_STYLE_NORMAL;
- tA.style |= TEXT_STYLE_BACKGROUND;
+
+ tA.style = TEXT_STYLE_NORMAL | TEXT_STYLE_BACKGROUND;
tA.backgroundHMargin = 10.0f;
tA.backgroundVMargin = 10.0f;
tA.backgroundColor[0] = elementsGetTitleBackColorRed (s);
@@ -207,7 +209,7 @@ elementsRenderTitle (CompScreen *s,
tA.renderMode = TextRenderNormal;
- tA.data = (void*)stringData;
+ tA.data = (void *) stringData;
initTexture (s, &es->textTexture);
@@ -232,21 +234,21 @@ elementsRenderTitle (CompScreen *s,
static void
elementsDrawTitle (CompScreen *s)
{
+ GLboolean wasBlend;
+ GLint oldBlendSrc, oldBlendDst;
+ float x, y, width, height;
+ int ox1, ox2, oy1, oy2, k;
+ CompMatrix *m;
+
ELEMENTS_SCREEN(s);
- GLboolean wasBlend;
- GLint oldBlendSrc, oldBlendDst;
- float width = es->textWidth;
- float height = es->textHeight;
+ width = es->textWidth;
+ height = es->textHeight;
- int ox1, ox2, oy1, oy2;
getCurrentOutputExtents (s, &ox1, &oy1, &ox2, &oy2);
- float x = ox1 + ((ox2 - ox1) / 2) - (width / 2);
- float y = oy1 + ((oy2 - oy1) * 3 / 4) + (height / 2);
-
- x = floor (x);
- y = floor (y);
+ x = floor (ox1 + ((ox2 - ox1) / 2) - (width / 2));
+ y = floor (oy1 + ((oy2 - oy1) * 3 / 4) + (height / 2));
glGetIntegerv (GL_BLEND_SRC, &oldBlendSrc);
glGetIntegerv (GL_BLEND_DST, &oldBlendDst);
@@ -258,9 +260,9 @@ elementsDrawTitle (CompScreen *s)
glColor4f(1.0f, 1.0f, 1.0f, 0.7f);
- enableTexture (s, &es->textTexture,COMP_TEXTURE_FILTER_GOOD);
+ enableTexture (s, &es->textTexture, COMP_TEXTURE_FILTER_GOOD);
- CompMatrix *m = &es->textTexture.matrix;
+ m = &es->textTexture.matrix;
if (es->renderTexture && es->eTexture)
{
@@ -299,17 +301,18 @@ elementsDrawTitle (CompScreen *s)
if (es->renderTexture && es->eTexture)
{
int border = 5;
- width = es->eTexture[es->nTexture].width;
+ width = es->eTexture[es->nTexture].width;
height = es->eTexture[es->nTexture].height;
glPushMatrix ();
- glColor4f((float)elementsGetTitleBackColorRed (s) / OPAQUE,
- (float)elementsGetTitleBackColorGreen (s) / OPAQUE,
- (float)elementsGetTitleBackColorBlue (s) / OPAQUE,
- (float)elementsGetTitleBackColorAlpha (s) / OPAQUE);
+ glColor4f ((float) elementsGetTitleBackColorRed (s) / OPAQUE,
+ (float) elementsGetTitleBackColorGreen (s) / OPAQUE,
+ (float) elementsGetTitleBackColorBlue (s) / OPAQUE,
+ (float) elementsGetTitleBackColorAlpha (s) / OPAQUE);
- glTranslatef (x + es->textWidth - width, y - height + (border / 2),
+ glTranslatef (x + es->textWidth - width,
+ y - height + (border / 2),
0.0f);
glRectf (0.0f, height, width, 0.0f);
glRectf (0.0f, 0.0f, width, -border);
@@ -327,7 +330,6 @@ glVertex2f (cos (rad) * border, sin (rad) * border);\
glVertex2f (cos ((k - 1) * (M_PI / 180.0f)) * border, \
sin ((k - 1) * (M_PI / 180.0f)) * border);\
}
- int k;
glTranslatef (border, border, 0.0f);
glBegin (GL_TRIANGLES);
@@ -374,9 +376,9 @@ glVertex2f (cos ((k - 1) * (M_PI / 180.0f)) * border, \
/* Element Animation Management */
static Bool
-elementsPropertiesForAnimation (CompDisplay *d,
+elementsPropertiesForAnimation (CompDisplay *d,
ElementAnimation *anim,
- char *name)
+ char *name)
{
ELEMENTS_DISPLAY (d);
@@ -384,7 +386,7 @@ elementsPropertiesForAnimation (CompDisplay *d,
for (info = ed->elementTypes; info; info = info->next)
{
- if (strcmp(info->name,name)==0)
+ if (!strcmp (info->name, name))
{
anim->properties = info;
return TRUE;
@@ -395,16 +397,19 @@ elementsPropertiesForAnimation (CompDisplay *d,
}
ElementAnimation *
-elementsCreateAnimation (CompScreen *s, char *name)
+elementsCreateAnimation (CompScreen *s,
+ char *name)
{
- ELEMENTS_SCREEN (s);
ElementAnimation *anim;
+ ELEMENTS_SCREEN (s);
+
if (!es->animations)
{
es->animations = calloc (1, sizeof (ElementAnimation));
if (!es->animations)
return NULL;
+
es->animations->next = NULL;
anim = es->animations;
}
@@ -416,15 +421,16 @@ elementsCreateAnimation (CompScreen *s, char *name)
anim->next = calloc (1, sizeof (ElementAnimation));
if (!anim->next)
return NULL;
+
anim->next->next = NULL;
anim = anim->next;
}
if (!elementsPropertiesForAnimation (s->display, anim, name))
{
- compLogMessage ("Elements",
- CompLogLevelWarn, "Could not find element movement pattern %s\n"
- " disabling this element", name);
+ compLogMessage ("elements", CompLogLevelWarn,
+ "Could not find element movement pattern %s, "
+ "disabling this element", name);
free (anim);
return NULL;
}
@@ -433,12 +439,13 @@ elementsCreateAnimation (CompScreen *s, char *name)
}
void
-elementsDeleteAnimation (CompScreen *s,
+elementsDeleteAnimation (CompScreen *s,
ElementAnimation *anim)
{
- ELEMENTS_SCREEN (s);
ElementAnimation *run;
+ ELEMENTS_SCREEN (s);
+
if (es->animations)
{
if (anim == es->animations)
@@ -469,21 +476,23 @@ elementsDeleteAnimation (CompScreen *s,
/* Type Info Management */
static Bool
-elementsCreateNewElementType (CompDisplay *d,
- char *name,
- char *desc,
+elementsCreateNewElementType (CompDisplay *d,
+ char *name,
+ char *desc,
ElementInitiateProc initiate,
ElementMoveProc move,
ElementFiniProc fini)
{
- ELEMENTS_DISPLAY (d);
ElementTypeInfo *info;
+ ELEMENTS_DISPLAY (d);
+
if (!ed->elementTypes)
{
ed->elementTypes = calloc (1, sizeof (ElementTypeInfo));
if (!ed->elementTypes)
return FALSE;
+
ed->elementTypes->next = NULL;
info = ed->elementTypes;
}
@@ -495,6 +504,7 @@ elementsCreateNewElementType (CompDisplay *d,
info->next = calloc (1, sizeof (ElementTypeInfo));
if (!info->next)
return FALSE;
+
info->next->next = NULL;
info = info->next;
}
@@ -510,36 +520,42 @@ elementsCreateNewElementType (CompDisplay *d,
static void
elementsRemoveElementType (CompScreen *s,
- char *name)
+ char *name)
{
+ ElementAnimation *anim, *next;
+ ElementTypeInfo *info;
+
ELEMENTS_DISPLAY (s->display);
ELEMENTS_SCREEN (s);
- ElementAnimation *anim;
- ElementAnimation *next;
for (anim = es->animations; anim; anim = next)
{
next = anim->next;
- if (strcmp(anim->type, name)==0)
+
+ if (!strcmp (anim->type, name))
{
int i;
+
for (i = 0; i < anim->nTextures; i++)
{
finiTexture (s, &anim->texture[i].tex);
glDeleteLists (anim->texture[i].dList, 1);
}
+
for (i = 0; i < anim->nElement; i++)
+ {
if (anim->properties->fini)
(*anim->properties->fini) (s, &anim->elements[i]);
+ }
+
free (anim->elements);
free (anim->texture);
elementsDeleteAnimation (s, anim);
}
}
- ElementTypeInfo *info;
for (info = ed->elementTypes; info; info = info->next)
- if (strcmp(info->name, name)==0)
+ if (!strcmp (info->name, name))
break;
if (info)
@@ -556,6 +572,7 @@ elementsRemoveElementType (CompScreen *s,
else
{
ElementTypeInfo *run;
+
for (run = ed->elementTypes; run; run = run->next)
{
if (run == info)
@@ -574,12 +591,12 @@ elementsRemoveElementType (CompScreen *s,
}
static Bool
-textureToAnimation (CompScreen *s,
+textureToAnimation (CompScreen *s,
ElementAnimation *anim,
- CompListValue *paths,
- CompListValue *iters,
- int size,
- int iter)
+ CompListValue *paths,
+ CompListValue *iters,
+ int size,
+ int iter)
{
ElementTexture *aTex;
CompMatrix *mat;
@@ -603,13 +620,15 @@ textureToAnimation (CompScreen *s,
{
initTexture (s, &anim->texture[texIter].tex);
anim->texture[texIter].loaded =
- readImageToTexture (s, &anim->texture[texIter].tex,
- paths->value[i].s,
- &anim->texture[texIter].width,
- &anim->texture[texIter].height);
+ readImageToTexture (s,
+ &anim->texture[texIter].tex,
+ paths->value[i].s,
+ &anim->texture[texIter].width,
+ &anim->texture[texIter].height);
+
if (!anim->texture[texIter].loaded)
{
- compLogMessage ("Elements", CompLogLevelWarn,
+ compLogMessage ("elements", CompLogLevelWarn,
"Texture for animation %s not found at"
" location %s or invalid",
anim->type, paths->value[i].s);
@@ -617,7 +636,7 @@ textureToAnimation (CompScreen *s,
}
else
{
- compLogMessage ("Elements", CompLogLevelInfo,
+ compLogMessage ("elements", CompLogLevelInfo,
"Loaded Texture %s for animation %s",
paths->value[i].s, anim->type);
}
@@ -655,47 +674,53 @@ textureToAnimation (CompScreen *s,
static Bool
createElementAnimation (CompScreen *s,
- int nElement,
- char *type,
- int size,
- int speed,
- int iter)
+ int nElement,
+ char *type,
+ int size,
+ int speed,
+ int iter)
{
ElementAnimation *anim = elementsCreateAnimation (s, type);
- if (anim)
+ CompListValue *paths, *iters;
+
+ if (!anim)
+ return FALSE;
+
+ paths = elementsGetElementImage (s);
+ iters = elementsGetElementIter (s);
+
+ anim->nElement = nElement;
+ anim->size = size;
+ anim->speed = speed;
+ anim->id = iter;
+ anim->type = type;
+ anim->nTextures = 0;
+
+ if (textureToAnimation (s, anim, paths, iters, size, iter) &&
+ anim->nTextures)
{
- CompListValue *paths = elementsGetElementImage (s);
- CompListValue *iters = elementsGetElementIter (s);
- anim->nElement = nElement;
- anim->size = size;
- anim->speed = speed;
- anim->id = iter;
- anim->type = type;
- anim->nTextures = 0;
- if (textureToAnimation (s, anim, paths, iters, size, iter)
- && anim->nTextures)
- {
- Element *e;
- anim->elements = realloc (anim->elements,
- sizeof (Element) * nElement);
- e = anim->elements;
- while (nElement--)
- {
- e->type = type;
- initiateElement (s, anim, e);
- e++;
- }
- anim->active = TRUE;
- return TRUE;
- }
- else
+ Element *e;
+
+ anim->elements = realloc (anim->elements,
+ sizeof (Element) * nElement);
+ /* FIXME: NULL check? */
+
+ e = anim->elements;
+ while (nElement--)
{
- if (anim->texture)
- free (anim->texture);
- elementsDeleteAnimation (s, anim);
- return FALSE;
+ e->type = type;
+ initiateElement (s, anim, e);
+ e++;
}
+ anim->active = TRUE;
+
+ return TRUE;
}
+
+ if (anim->texture)
+ free (anim->texture);
+ elementsDeleteAnimation (s, anim);
+
return FALSE;
}
@@ -705,20 +730,26 @@ static Bool
elementsRemoveTimeout (void *closure)
{
CompScreen *s = (CompScreen *) closure;
- int i;
+ int i;
ELEMENTS_SCREEN (s);
- es->renderText = FALSE;
+
+ es->renderText = FALSE;
es->renderTexture = FALSE;
+
elementsFreeTitle (s);
+
for (i = 0; i < es->ntTextures; i++)
{
finiTexture (s, &es->eTexture[i].tex);
glDeleteLists (es->eTexture[i].dList, 1);
}
+
free (es->eTexture);
es->eTexture = NULL;
+
damageScreen (s);
+
if (es->switchTimeout)
compRemoveTimeout (es->switchTimeout);
@@ -731,46 +762,51 @@ elementsSwitchTextures (void *closure)
CompScreen *s = (CompScreen *) closure;
ELEMENTS_SCREEN (s);
+
es->nTexture = ++es->nTexture % (es->ntTextures);
damageScreen (s);
+
return TRUE;
}
static void
-addDisplayTimeouts (CompScreen *s, Bool switchIt)
+addDisplayTimeouts (CompScreen *s,
+ Bool switchIt)
{
+ int time = elementsGetTitleDisplayTime (s);
+
ELEMENTS_SCREEN (s);
if (es->renderTimeout)
compRemoveTimeout (es->renderTimeout);
- es->renderTimeout = compAddTimeout (elementsGetTitleDisplayTime (s),
- elementsGetTitleDisplayTime (s) * 2.0,
+
+ es->renderTimeout = compAddTimeout (time, time * 2.0,
elementsRemoveTimeout, s);
if (switchIt)
{
if (es->switchTimeout)
compRemoveTimeout (es->switchTimeout);
- es->switchTimeout =
- compAddTimeout (elementsGetTitleDisplayTime (s) / es->ntTextures,
- (elementsGetTitleDisplayTime (s) / es->ntTextures * 2.0),
- elementsSwitchTextures, s);
+
+ es->switchTimeout = compAddTimeout (time / es->ntTextures,
+ time * 2 / es->ntTextures,
+ elementsSwitchTextures, s);
}
}
static Bool
-createTemporaryTexture (CompScreen *s,
+createTemporaryTexture (CompScreen *s,
CompListValue *paths,
CompListValue *iters,
- int iter,
- int size)
+ int iter,
+ int size)
{
- ELEMENTS_SCREEN (s);
-
CompMatrix *mat;
int i;
int texIter = 0;
+ ELEMENTS_SCREEN (s);
+
es->ntTextures = 0;
es->nTexture = 0;
@@ -800,20 +836,23 @@ createTemporaryTexture (CompScreen *s,
{
initTexture (s, &es->eTexture[texIter].tex);
- es->eTexture[texIter].loaded =
readImageToTexture (s, &es->eTexture[texIter].tex,
+ es->eTexture[texIter].loaded =
+ readImageToTexture (s,
+ &es->eTexture[texIter].tex,
paths->value[i].s,
&es->eTexture[texIter].width,
&es->eTexture[texIter].height);
+
if (!es->eTexture[texIter].loaded)
{
- compLogMessage ("Elements", CompLogLevelWarn,
+ compLogMessage ("elements", CompLogLevelWarn,
"Texture not found or invalid at %s",
paths->value[i].s);
return FALSE;
}
else
{
- compLogMessage ("Elements", CompLogLevelInfo,
+ compLogMessage ("elements", CompLogLevelInfo,
"Loaded Texture %s", paths->value[i].s);
}
@@ -858,19 +897,22 @@ elementsNextElement (CompDisplay *d,
int nOption)
{
CompScreen *s;
- CompListValue *cType, *cPath, *cIter;
- char *string;
- int i;
- Bool foundHigher = FALSE;
- ElementTypeInfo *info;
- s = findScreenAtDisplay (d,
- getIntOptionNamed (option, nOption, "root", -1));
+ Window xid;
- ELEMENTS_DISPLAY (d);
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+ s = findScreenAtDisplay (d, xid);
if (s)
{
+ CompListValue *cType, *cPath, *cIter;
+ char *string;
+ int i;
+ Bool foundHigher = FALSE;
+ ElementTypeInfo *info;
+
+ ELEMENTS_DISPLAY (d);
ELEMENTS_SCREEN (s);
+
cType = elementsGetElementType (s);
cPath = elementsGetElementImage (s);
cIter = elementsGetElementIter (s);
@@ -880,7 +922,7 @@ elementsNextElement (CompDisplay *d,
{
compLogMessage ("elements", CompLogLevelWarn,
"Options are not set correctly,"
- " cannot read this setting\n");
+ " cannot read this setting.");
return FALSE;
}
@@ -888,7 +930,7 @@ elementsNextElement (CompDisplay *d,
{
if (cIter->value[i].i > es->animIter)
{
- foundHigher = TRUE;
+ foundHigher = TRUE;
es->listIter = i;
es->animIter = cIter->value[i].i;
break;
@@ -905,7 +947,7 @@ elementsNextElement (CompDisplay *d,
{
for (info = ed->elementTypes; info; info = info->next)
{
- if (strcmp (info->name, cType->value[es->listIter].s)==0)
+ if (!strcmp (info->name, cType->value[es->listIter].s))
{
string = info->desc;
break;
@@ -915,24 +957,23 @@ elementsNextElement (CompDisplay *d,
if (string)
{
elementsRenderTitle (s, string);
- es->renderText = TRUE;
+ es->renderText = TRUE;
es->renderTexture =
- createTemporaryTexture (s, cPath, cIter, es->animIter,
- es->textHeight);
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ createTemporaryTexture (s, cPath, cIter,
+ es->animIter, es->textHeight);
+ addDisplayTimeouts (s, es->ntTextures > 1);
damageScreen (s);
-
}
}
else if (ed->textAvailable)
{
elementsRenderTitle (s, "No elements have been defined");
es->renderText = TRUE;
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ addDisplayTimeouts (s, es->ntTextures > 1);
}
}
- return TRUE;
+ return FALSE;
}
static Bool
@@ -942,20 +983,23 @@ elementsPrevElement (CompDisplay *d,
CompOption *option,
int nOption)
{
- CompScreen *s;
- CompListValue *cType, *cPath, *cIter;
- char *string;
- int i;
- Bool foundLower = FALSE;
- ElementTypeInfo *info;
- s = findScreenAtDisplay (d,
- getIntOptionNamed (option, nOption, "root", -1));
+ CompScreen *s;
+ Window xid;
- ELEMENTS_DISPLAY (d);
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+ s = findScreenAtDisplay (d, xid);
if (s)
{
+ CompListValue *cType, *cPath, *cIter;
+ char *string;
+ int i;
+ Bool foundLower = FALSE;
+ ElementTypeInfo *info;
+
+ ELEMENTS_DISPLAY (d);
ELEMENTS_SCREEN (s);
+
cType = elementsGetElementType (s);
cPath = elementsGetElementImage (s);
cIter = elementsGetElementIter (s);
@@ -965,7 +1009,7 @@ elementsPrevElement (CompDisplay *d,
{
compLogMessage ("elements", CompLogLevelWarn,
"Options are not set correctly,"
- " cannot read this settings\n");
+ " cannot read this setting.");
return FALSE;
}
@@ -973,7 +1017,7 @@ elementsPrevElement (CompDisplay *d,
{
if (cIter->value[i].i < es->animIter)
{
- foundLower = TRUE;
+ foundLower = TRUE;
es->listIter = i;
es->animIter = cIter->value[i].i;
break;
@@ -983,6 +1027,7 @@ elementsPrevElement (CompDisplay *d,
if (!foundLower)
{
int highest = 0;
+
for (i = 0; i < cIter->nValue; i++)
if (cIter->value[i].i > highest)
highest = cIter->value[i].i;
@@ -999,7 +1044,7 @@ elementsPrevElement (CompDisplay *d,
{
for (info = ed->elementTypes; info; info = info->next)
{
- if (strcmp (info->name, cType->value[es->listIter].s)==0)
+ if (!strcmp (info->name, cType->value[es->listIter].s))
{
string = info->desc;
break;
@@ -1009,11 +1054,11 @@ elementsPrevElement (CompDisplay *d,
if (string)
{
elementsRenderTitle (s, string);
- es->renderText = TRUE;
+ es->renderText = TRUE;
es->renderTexture =
- createTemporaryTexture (s, cPath, cIter, es->animIter,
- es->textHeight);
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ createTemporaryTexture (s, cPath, cIter,
+ es->animIter, es->textHeight);
+ addDisplayTimeouts (s, es->ntTextures > 1);
damageScreen (s);
}
@@ -1022,12 +1067,12 @@ elementsPrevElement (CompDisplay *d,
{
elementsRenderTitle (s, "No elements have been defined");
es->renderText = TRUE;
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ addDisplayTimeouts (s, es->ntTextures > 1);
}
}
- return TRUE;
+ return FALSE;
}
static Bool
@@ -1038,22 +1083,25 @@ elementsToggleSelected (CompDisplay *d,
int nOption)
{
CompScreen *s;
- char *string;
- Bool success = TRUE;
- ElementTypeInfo *info;
- s = findScreenAtDisplay (d,
- getIntOptionNamed (option, nOption, "root", -1));
-
- ELEMENTS_DISPLAY (d);
+ Window xid;
+
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+ s = findScreenAtDisplay (d, xid);
if (s)
{
- CompListValue *cIter = elementsGetElementIter (s);
- CompListValue *cType = elementsGetElementType (s);
- CompListValue *cPath = elementsGetElementImage (s);
- CompListValue *cCap = elementsGetElementCap (s);
- CompListValue *cSize = elementsGetElementSize (s);
- CompListValue *cSpeed = elementsGetElementSpeed (s);
+ char *string;
+ Bool success = TRUE;
+ ElementTypeInfo *info;
+ CompListValue *cIter = elementsGetElementIter (s);
+ CompListValue *cType = elementsGetElementType (s);
+ CompListValue *cPath = elementsGetElementImage (s);
+ CompListValue *cCap = elementsGetElementCap (s);
+ CompListValue *cSize = elementsGetElementSize (s);
+ CompListValue *cSpeed = elementsGetElementSpeed (s);
+ ElementAnimation *anim;
+
+ ELEMENTS_DISPLAY (d);
ELEMENTS_SCREEN (s);
if (!((cType->nValue == cIter->nValue) &&
@@ -1064,7 +1112,7 @@ elementsToggleSelected (CompDisplay *d,
{
compLogMessage ("elements", CompLogLevelWarn,
"Options are not set correctly,"
- " cannot read this settings\n");
+ " cannot read this setting.");
return FALSE;
}
@@ -1074,11 +1122,10 @@ elementsToggleSelected (CompDisplay *d,
{
elementsRenderTitle (s, "No elements have been defined\n");
es->renderText = TRUE;
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ addDisplayTimeouts (s, es->ntTextures > 1);
}
}
- ElementAnimation *anim;
for (anim = es->animations; anim; anim = anim->next)
{
if (anim->id == es->animIter)
@@ -1090,20 +1137,19 @@ elementsToggleSelected (CompDisplay *d,
if (!anim)
{
- success =
- createElementAnimation (s,
- cCap->value[es->listIter].i,
- cType->value[es->listIter].s,
- cSize->value[es->listIter].i,
- cSpeed->value[es->listIter].i,
- es->animIter);
+ success = createElementAnimation (s,
+ cCap->value[es->listIter].i,
+ cType->value[es->listIter].s,
+ cSize->value[es->listIter].i,
+ cSpeed->value[es->listIter].i,
+ es->animIter);
}
if (ed->textAvailable && elementsGetTitleOnToggle (s) && success)
{
for (info = ed->elementTypes; info; info = info->next)
{
- if (strcmp (info->name, cType->value[es->listIter].s)==0)
+ if (!strcmp (info->name, cType->value[es->listIter].s))
{
string = info->desc;
break;
@@ -1113,11 +1159,11 @@ elementsToggleSelected (CompDisplay *d,
if (string)
{
elementsRenderTitle (s, string);
- es->renderText = TRUE;
+ es->renderText = TRUE;
es->renderTexture =
- createTemporaryTexture (s, cPath, cIter, es->animIter,
- es->textHeight);
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ createTemporaryTexture (s, cPath, cIter,
+ es->animIter, es->textHeight);
+ addDisplayTimeouts (s, es->ntTextures > 1);
damageScreen (s);
}
@@ -1127,20 +1173,20 @@ elementsToggleSelected (CompDisplay *d,
elementsRenderTitle (s, "Error - Element image was not found"
" or is invalid");
es->renderText = TRUE;
- addDisplayTimeouts (s, es->ntTextures > 1 ? TRUE : FALSE);
+ addDisplayTimeouts (s, es->ntTextures > 1);
damageScreen (s);
}
}
- return TRUE;
+ return FALSE;
}
static void
setupDisplayList (CompScreen *s)
{
ELEMENTS_SCREEN (s);
-
+
es->displayList = glGenLists (1);
glNewList (es->displayList, GL_COMPILE);
glBegin (GL_QUADS);
@@ -1159,7 +1205,10 @@ setupDisplayList (CompScreen *s)
static void
beginRendering (CompScreen *s)
{
+ ElementAnimation *anim;
+
ELEMENTS_SCREEN (s);
+
glEnable (GL_BLEND);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@@ -1169,29 +1218,33 @@ beginRendering (CompScreen *s)
es->needUpdate = FALSE;
}
- ElementAnimation *anim;
-
for (anim = es->animations; anim; anim = anim->next)
{
int num = anim->nElement;
int i;
+
if (anim->nTextures > 0)
- for (i = 0; i < num; i++)
{
- Element *e = &anim->elements[i];
- int nTexture = e->nTexture % anim->nTextures;
- enableTexture (s, &anim->texture[nTexture].tex,
- COMP_TEXTURE_FILTER_GOOD);
- glColor4f (1.0, 1.0, 1.0, e->opacity);
- glTranslatef (e->x, e->y, e->z);
- glRotatef (e->rAngle, 0, 0, 1);
- glCallList (anim->texture[nTexture].dList);
- glRotatef (-e->rAngle, 0, 0, 1);
- glTranslatef (-e->x, -e->y, -e->z);
- disableTexture (s, &anim->texture[nTexture].tex);
+ for (i = 0; i < num; i++)
+ {
+ Element *e = &anim->elements[i];
+ int nTexture = e->nTexture % anim->nTextures;
+
+ enableTexture (s, &anim->texture[nTexture].tex,
+ COMP_TEXTURE_FILTER_GOOD);
+
+ glColor4f (1.0, 1.0, 1.0, e->opacity);
+ glTranslatef (e->x, e->y, e->z);
+ glRotatef (e->rAngle, 0, 0, 1);
+ glCallList (anim->texture[nTexture].dList);
+ glRotatef (-e->rAngle, 0, 0, 1);
+ glTranslatef (-e->x, -e->y, -e->z);
+
+ disableTexture (s, &anim->texture[nTexture].tex);
+ }
}
}
-
+
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glDisable (GL_BLEND);
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
@@ -1201,42 +1254,35 @@ beginRendering (CompScreen *s)
static Bool
elementsPaintOutput (CompScreen *s,
const ScreenPaintAttrib *sa,
- const CompTransform *transform,
+ const CompTransform *transform,
Region region,
- CompOutput *output,
+ CompOutput *output,
unsigned int mask)
{
Bool status;
ELEMENTS_SCREEN (s);
- Bool active = FALSE;
- if (es->animations)
- active = TRUE;
- if (active && elementsGetOverWindows (s))
+ if (es->animations && elementsGetOverWindows (s))
mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK;
UNWRAP (es, s, paintOutput);
status = (*s->paintOutput) (s, sa, transform, region, output, mask);
WRAP (es, s, paintOutput, elementsPaintOutput);
- if (active && elementsGetOverWindows (s))
+ if (es->renderText || (es->animations && elementsGetOverWindows (s)))
{
CompTransform sTransform = *transform;
- transformToScreenSpace (s, output, -DEFAULT_Z_CAMERA, &sTransform);
- glPushMatrix ();
- glLoadMatrixf (sTransform.m);
- beginRendering (s);
- glPopMatrix ();
- }
- if (es->renderText)
- {
- CompTransform sTransform = *transform;
transformToScreenSpace (s, output, -DEFAULT_Z_CAMERA, &sTransform);
glPushMatrix ();
glLoadMatrixf (sTransform.m);
- elementsDrawTitle (s);
+
+ if (es->animations && elementsGetOverWindows (s))
+ beginRendering (s);
+ if (es->renderText)
+ elementsDrawTitle (s);
+
glPopMatrix ();
}
@@ -1251,48 +1297,48 @@ elementsDrawWindow (CompWindow *w,
Region region,
unsigned int mask)
{
- Bool status;
+ Bool status;
+ CompScreen *s = w->screen;
- ELEMENTS_SCREEN (w->screen);
- Bool active = FALSE;
- if (es->animations)
- active = TRUE;
- UNWRAP (es, w->screen, drawWindow);
- status = (*w->screen->drawWindow) (w, transform, attrib, region, mask);
- WRAP (es, w->screen, drawWindow, elementsDrawWindow);
+ ELEMENTS_SCREEN (s);
+
+ UNWRAP (es, s, drawWindow);
+ status = (*s->drawWindow) (w, transform, attrib, region, mask);
+ WRAP (es, s, drawWindow, elementsDrawWindow);
- if (active && (w->type & CompWindowTypeDesktopMask) &&
- !elementsGetOverWindows (w->screen))
+ if (es->animations && (w->type & CompWindowTypeDesktopMask) &&
+ !elementsGetOverWindows (s))
{
- beginRendering (w->screen);
+ beginRendering (s);
}
return status;
}
void
-initiateElement (CompScreen *s,
+initiateElement (CompScreen *s,
ElementAnimation *anim,
- Element *e)
+ Element *e)
{
- e->z = elementsMmRand (-elementsGetScreenDepth (s), 0.1, 5000);
e->x = 0;
e->y = 0;
+ e->z = elementsMmRand (-elementsGetScreenDepth (s), 0.1, 5000);
e->dz = elementsMmRand (-500, 500, 500000);
e->rAngle = elementsMmRand (-1000, 1000, 50);
e->rSpeed = elementsMmRand (-2100, 2100, 700);
- e->opacity = 1.0f;
+
+ e->opacity = 1.0f;
e->nTexture = 0;
- e->ptr = NULL;
+ e->ptr = NULL;
if (anim->properties->initiate)
(*anim->properties->initiate) (s, e);
}
void
-elementMove (CompScreen *s,
- Element *e,
+elementMove (CompScreen *s,
+ Element *e,
ElementAnimation *anim,
- int updateDelay)
+ int updateDelay)
{
if (anim->properties->move)
(*anim->properties->move) (s, anim, e, updateDelay);
@@ -1300,75 +1346,73 @@ elementMove (CompScreen *s,
}
static Bool
-stepPositions(void *closure)
+stepPositions (void *closure)
{
- CompScreen *s = closure;
- Bool onTopOfWindows = elementsGetOverWindows (s);
- ELEMENTS_SCREEN(s);
+ CompScreen *s = (CompScreen *) closure;
+ ElementAnimation *anim;
- Bool active = FALSE;
- if (es->animations)
- active = TRUE;
+ ELEMENTS_SCREEN (s);
- if (!active)
+ if (!es->animations)
return TRUE;
- ElementAnimation *anim;
- if (es->animations)
+ for (anim = es->animations; anim; anim = anim->next)
{
- for (anim = es->animations; anim; anim = anim->next)
+ int i;
+
+ if (anim->active)
{
- int i;
- if (anim->active)
- {
- for (i = 0; i < anim->nElement; i++)
- elementTestCreate (s, &anim->elements[i], anim);
- }
- else
+ for (i = 0; i < anim->nElement; i++)
+ elementTestCreate (s, &anim->elements[i], anim);
+ }
+ else
+ {
+ if (elementTestOffscreen (s, anim))
{
- if (elementTestOffscreen (s, anim))
+ for (i = 0; i < anim->nTextures; i++)
{
- int i;
- for (i = 0; i < anim->nTextures; i++)
- {
- finiTexture (s, &anim->texture[i].tex);
- glDeleteLists (anim->texture[i].dList, 1);
- }
- free (anim->elements);
- free (anim->texture);
- elementsDeleteAnimation (s, anim);
- break;
+ finiTexture (s, &anim->texture[i].tex);
+ glDeleteLists (anim->texture[i].dList, 1);
}
+
+ free (anim->elements);
+ free (anim->texture);
+ elementsDeleteAnimation (s, anim);
+ break;
}
}
- if (active && !onTopOfWindows )
- {
- CompWindow *w;
- for (w = s->windows; w; w = w->next)
- {
- if (w->type & CompWindowTypeDesktopMask)
- addWindowDamage (w);
- }
- }
- else if (active)
+ }
+
+ if (!elementsGetOverWindows (s))
+ {
+ CompWindow *w;
+
+ for (w = s->windows; w; w = w->next)
{
- damageScreen (s);
+ if (w->type & CompWindowTypeDesktopMask)
+ addWindowDamage (w);
}
}
+ else
+ {
+ damageScreen (s);
+ }
return TRUE;
}
void
updateElementTextures (CompScreen *s,
- Bool changeTextures)
+ Bool changeTextures)
{
+ ElementAnimation *anim;
+
ELEMENTS_SCREEN (s);
- ElementAnimation *anim;
for (anim = es->animations; anim; anim = anim->next)
{
- int i;
+ int i, iter, nElement, size,speed;
+ char *type;
CompListValue *cType = elementsGetElementType (s);
CompListValue *cPath = elementsGetElementImage (s);
CompListValue *cCap = elementsGetElementCap (s);
@@ -1384,15 +1428,16 @@ updateElementTextures (CompScreen *s,
{
compLogMessage ("elements", CompLogLevelWarn,
"Options are not set correctly,"
- " cannot read this settings\n");
+ " cannot read this setting.");
return;
}
- int iter = anim->id;
- int nElement = cCap->value[anim->id].i;
- char * type = cType->value[anim->id].s;
- int size = cSize->value[anim->id].i;
- int speed = cSpeed->value[anim->id].i;
+ iter = anim->id;
+ nElement = cCap->value[anim->id].i;
+ type = cType->value[anim->id].s;
+ size = cSize->value[anim->id].i;
+ speed = cSpeed->value[anim->id].i;
+
for (i = 0; i < anim->nTextures; i++)
{
finiTexture (s, &anim->texture[i].tex);
@@ -1402,18 +1447,23 @@ updateElementTextures (CompScreen *s,
if (textureToAnimation (s, anim, cPath, cIter, size, iter))
{
Element *e;
- Bool initiate = FALSE;
+ Bool initiate = FALSE;
+
anim->type = type;
+
if (nElement != anim->nElement)
{
anim->nElement = nElement;
anim->elements = realloc (anim->elements,
sizeof (Element) * nElement);
+ /* FIXME: NULL check? */
initiate = TRUE;
}
- if (strcmp (type, anim->type)!=0)
+
+ if (strcmp (type, anim->type))
{
int i;
+
anim->type = type;
for (i = 0; i < anim->nElement; i++)
{
@@ -1422,16 +1472,17 @@ updateElementTextures (CompScreen *s,
}
initiate = TRUE;
}
- anim->size = size;
+
+ anim->size = size;
anim->speed = speed;
e = anim->elements;
+
while (nElement--)
{
e->type = type;
if (initiate)
- {
initiateElement (s, anim, e);
- }
+
e++;
}
}
@@ -1449,9 +1500,9 @@ static ElementsBaseFunctions elementsFunctions =
};
static void
-elementsScreenOptionChanged (CompScreen *s,
- CompOption *opt,
- ElementsScreenOptions num)
+elementsScreenOptionChanged (CompScreen *s,
+ CompOption *opt,
+ ElementsScreenOptions num)
{
switch (num)
{
@@ -1464,6 +1515,7 @@ elementsScreenOptionChanged (CompScreen *s,
{
ELEMENTS_SCREEN (s);
+
es->needUpdate = TRUE;
updateElementTextures (s, FALSE);
@@ -1472,13 +1524,13 @@ elementsScreenOptionChanged (CompScreen *s,
case ElementsScreenOptionUpdateDelay:
{
ELEMENTS_SCREEN (s);
-
+
if (es->timeoutHandle)
compRemoveTimeout (es->timeoutHandle);
es->timeoutHandle =
- compAddTimeout (elementsGetUpdateDelay (s),
- (float) elementsGetUpdateDelay (s) * 1.2,
- stepPositions, s);
+ compAddTimeout (elementsGetUpdateDelay (s),
+ (float) elementsGetUpdateDelay (s) * 1.2,
+ stepPositions, s);
}
break;
default:
@@ -1491,22 +1543,26 @@ elementsInitScreen (CompPlugin *p,
CompScreen *s)
{
ElementsScreen *es;
+ int delay;
+
ELEMENTS_DISPLAY (s->display);
- es = calloc (1, sizeof(ElementsScreen));
- s->base.privates[ed->privateIndex].ptr = es;
- es->needUpdate = FALSE;
- es->listIter = 0;
- es->animIter = 1;
- es->animations = NULL;
- es->textPixmap = None;
- es->textWidth = 0;
- es->textHeight = 0;
- es->renderText = FALSE;
+ es = calloc (1, sizeof (ElementsScreen));
+ if (!es)
+ return FALSE;
+
+ es->needUpdate = FALSE;
+ es->listIter = 0;
+ es->animIter = 1;
+ es->animations = NULL;
+ es->textPixmap = None;
+ es->textWidth = 0;
+ es->textHeight = 0;
+ es->renderText = FALSE;
es->renderTexture = FALSE;
es->renderTimeout = 0;
es->switchTimeout = 0;
- es->eTexture = NULL;
+ es->eTexture = NULL;
elementsSetElementTypeNotify (s, elementsScreenOptionChanged);
elementsSetElementImageNotify (s, elementsScreenOptionChanged);
@@ -1520,10 +1576,15 @@ elementsInitScreen (CompPlugin *p,
updateElementTextures (s, TRUE);
setupDisplayList (s);
- WRAP (es, s, paintOutput, elementsPaintOutput);
WRAP (es, s, drawWindow, elementsDrawWindow);
- es->timeoutHandle = compAddTimeout (elementsGetUpdateDelay (s),
- (float) elementsGetUpdateDelay (s) * 1.2,
- stepPositions, s);
+
+ delay = elementsGetUpdateDelay (s);
+ es->timeoutHandle = compAddTimeout (delay, (float) delay * 1.2,
+ stepPositions, s);
+
+ WRAP (es, s, paintOutput, elementsPaintOutput);
+ WRAP (es, s, drawWindow, elementsDrawWindow);
+
+ s->base.privates[ed->privateIndex].ptr = es;
return TRUE;
}
@@ -1550,15 +1611,18 @@ elementsFiniScreen (CompPlugin *p,
finiTexture (s, &es->eTexture[i].tex);
glDeleteLists (es->eTexture[i].dList, 1);
}
- free(es->eTexture);
+ free (es->eTexture);
}
elementsRemoveElementType (s, "autumn");
elementsRemoveElementType (s, "fireflies");
elementsRemoveElementType (s, "snow");
elementsRemoveElementType (s, "stars");
- elementsRemoveElementType (s, "bubbles");
UNWRAP (es, s, paintOutput);
+ elementsRemoveElementType (s, "bubbles");
+
+ UNWRAP (es, s, paintOutput);
UNWRAP (es, s, drawWindow);
+
free (es);
}
@@ -1568,10 +1632,13 @@ elementsInitDisplay (CompPlugin *p,
{
ElementsDisplay *ed;
CompOption *abi, *index;
+
if (!checkPluginABI ("core", CORE_ABIVERSION))
- return FALSE;
+ return FALSE;
ed = malloc (sizeof (ElementsDisplay));
+ if (!ed)
+ return FALSE;
ed->privateIndex = allocateScreenPrivateIndex (d);
if (ed->privateIndex < 0)
@@ -1587,39 +1654,43 @@ elementsInitDisplay (CompPlugin *p,
ed->elementTypes = NULL;
- abi = elementsGetAbiOption (d);
+ abi = elementsGetAbiOption (d);
index = elementsGetIndexOption (d);
- abi->value.i = ELEMENTS_ABIVERSION;
+ abi->value.i = ELEMENTS_ABIVERSION;
index->value.i = functionsPrivateIndex;
elementsSetNextElementKeyInitiate (d, elementsNextElement);
elementsSetPrevElementKeyInitiate (d, elementsPrevElement);
elementsSetToggleSelectedKeyInitiate (d, elementsToggleSelected);
- d->base.privates[displayPrivateIndex].ptr = ed;
+ d->base.privates[displayPrivateIndex].ptr = ed;
d->base.privates[functionsPrivateIndex].ptr = &elementsFunctions;
elementsCreateNewElementType (d, "autumn", "Autumn",
- initiateAutumnElement,
- autumnMove,
- autumnFini);
+ initiateAutumnElement,
+ autumnMove,
+ autumnFini);
+
elementsCreateNewElementType (d, "fireflies", "Fireflies",
- initiateFireflyElement,
- fireflyMove,
- fireflyFini);
- elementsCreateNewElementType (d, "snow", "Snow",
- initiateSnowElement,
- snowMove,
- snowFini);
+ initiateFireflyElement,
+ fireflyMove,
+ fireflyFini);
+
+ elementsCreateNewElementType (d, "snow", "Snow",
+ initiateSnowElement,
+ snowMove,
+ snowFini);
+
elementsCreateNewElementType (d, "stars", "Stars",
- initiateStarElement,
- starMove,
- starFini);
+ initiateStarElement,
+ starMove,
+ starFini);
+
elementsCreateNewElementType (d, "bubbles", "Bubbles",
- initiateBubbleElement,
- bubbleMove,
- bubbleFini);
+ initiateBubbleElement,
+ bubbleMove,
+ bubbleFini);
return TRUE;
}
@@ -1659,12 +1730,12 @@ elementsFini (CompPlugin *p)
freeDisplayPrivateIndex (functionsPrivateIndex);
}
-
-static CompBool elementsInitObject(CompPlugin *p,
- CompObject *o)
+static CompBool
+elementsInitObject(CompPlugin *p,
+ CompObject *o)
{
static InitPluginObjectProc dispTab[] = {
- (InitPluginObjectProc) 0, // InitCore
+ (InitPluginObjectProc) 0, /* InitCore */
(InitPluginObjectProc) elementsInitDisplay,
(InitPluginObjectProc) elementsInitScreen
};
@@ -1672,11 +1743,12 @@ static CompBool elementsInitObject(CompPlugin *p,
RETURN_DISPATCH(o, dispTab, ARRAY_SIZE(dispTab), TRUE, (p, o));
}
-static void elementsFiniObject(CompPlugin *p,
- CompObject *o)
+static void
+elementsFiniObject(CompPlugin *p,
+ CompObject *o)
{
static FiniPluginObjectProc dispTab[] = {
- (FiniPluginObjectProc) 0, // FiniCore
+ (FiniPluginObjectProc) 0, /* FiniCore */
(FiniPluginObjectProc) elementsFiniDisplay,
(FiniPluginObjectProc) elementsFiniScreen
};
@@ -1695,7 +1767,7 @@ CompPluginVTable elementsVTable = {
0
};
-CompPluginVTable*
+CompPluginVTable *
getCompPluginInfo (void)
{
return &elementsVTable;
diff --git a/fireflies.c b/fireflies.c
index c91efa7..c3c8907 100644
--- a/fireflies.c
+++ b/fireflies.c
@@ -1,33 +1,41 @@
+#include <math.h>
#include "elements-internal.h"
/* FIREFLIES SPECIFIC FUNCTIONS */
-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 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 float fireflyBezierCurve (float p[4], float time)
+static float
+fireflyBezierCurve (float p[4],
+ float time)
{
float out;
float a = p[0];
float b = p[0] + p[1];
float c = p[3] + p[2];
float d = p[3];
- float e = 1.0 - time;
- out = (a*(e*e*e)) + (3.0*b*(e*e)*time)
- + (3.0*c*e*(time*time)) + (d*(time*time*time));
+ float e = 1.0 - time;
+
+ out = (a * pow (e, 3)) + (3.0 * b * pow (e, 2) * time) +
+ (3.0 * c * e * pow (time, 2)) + (d * pow (time, 3));
+
return out;
}
void
initiateFireflyElement (CompScreen *s,
- Element *e)
+ Element *e)
{
- int i;
+ int i;
FireflyElement *fe;
+
if (!e->ptr)
e->ptr = calloc (1, sizeof (FireflyElement));
@@ -35,40 +43,47 @@ initiateFireflyElement (CompScreen *s,
return;
fe = (FireflyElement *) e->ptr;
- e->x = elementsMmRand(0, s->width, 1);
- e->y = elementsMmRand(0, s->height, 1);
- fe->lifespan = elementsMmRand(50,1000, 100);
- fe->age = 0.0;
- for (i = 0; i < 4; i++)
+
+ e->x = elementsMmRand (0, s->width, 1);
+ e->y = elementsMmRand (0, s->height, 1);
+
+ fe->lifespan = elementsMmRand (50,1000, 100);
+ fe->age = 0.0;
+
+ for (i = 0; i < 4; i++)
{
- fe->dx[i] = elementsMmRand(-3000, 3000, 200);
- fe->dy[i] = elementsMmRand(-2000, 2000, 200);
- fe->dz[i] = elementsMmRand(-1000, 1000, 500000);
+ fe->dx[i] = elementsMmRand (-3000, 3000, 200);
+ fe->dy[i] = elementsMmRand (-2000, 2000, 200);
+ fe->dz[i] = elementsMmRand (-1000, 1000, 500000);
}
}
void
-fireflyMove (CompScreen *s,
+fireflyMove (CompScreen *s,
ElementAnimation *anim,
- Element *e,
- int updateDelay)
+ Element *e,
+ int updateDelay)
{
- float ffSpeed = anim->speed / 700.0f;
+ float ffSpeed = anim->speed / 700.0f;
FireflyElement *fe = (FireflyElement *) e->ptr;
+ int glowStage;
+ float xs, ys, zs;
- if (!e->ptr)
+ if (!fe)
return;
- fe->age += 0.01;
+ fe->age += 0.01;
fe->lifecycle = (fe->age / 10) / fe->lifespan * (ffSpeed * 70);
- int glowStage = (fe->lifecycle * GLOW_STAGES);
- e->glowAlpha = fireflyBezierCurve(glowCurve[glowStage], fe->lifecycle);
- float xs = fireflyBezierCurve(fe->dx, fe->lifecycle);
- float ys = fireflyBezierCurve(fe->dy, fe->lifecycle);
- float zs = fireflyBezierCurve(fe->dz, fe->lifecycle);
- e->x += (float)(xs * (double)updateDelay) * ffSpeed;
- e->y += (float)(ys * (double)updateDelay) * ffSpeed;
- e->z += (float)(zs * (double)updateDelay) * ffSpeed;
+ glowStage = fe->lifecycle * GLOW_STAGES;
+ e->glowAlpha = fireflyBezierCurve (glowCurve[glowStage], fe->lifecycle);
+
+ xs = fireflyBezierCurve (fe->dx, fe->lifecycle);
+ ys = fireflyBezierCurve (fe->dy, fe->lifecycle);
+ zs = fireflyBezierCurve (fe->dz, fe->lifecycle);
+
+ e->x += xs * updateDelay * ffSpeed;
+ e->y += ys * updateDelay * ffSpeed;
+ e->z += zs * updateDelay * ffSpeed;
}
diff --git a/snow.c b/snow.c
index 9689817..78f8954 100644
--- a/snow.c
+++ b/snow.c
@@ -4,9 +4,10 @@
void
initiateSnowElement (CompScreen *s,
- Element *e)
+ Element *e)
{
int snowSway = elementsGetSnowSway (s);
+
switch (elementsGetWindDirection (s))
{
case WindDirectionNone:
@@ -39,12 +40,13 @@ initiateSnowElement (CompScreen *s,
}
void
-snowMove (CompScreen *s,
- ElementAnimation *anim,
- Element *e,
- int updateDelay)
+snowMove (CompScreen *s,
+ ElementAnimation *anim,
+ Element *e,
+ int updateDelay)
{
float snowSpeed = anim->speed / 500.0f;
+
e->x += (e->dx * (float) updateDelay) * snowSpeed;
e->y += (e->dy * (float) updateDelay) * snowSpeed;
e->z += (e->dz * (float) updateDelay) * snowSpeed;
diff --git a/stars.c b/stars.c
index 9cdbf1b..24135aa 100644
--- a/stars.c
+++ b/stars.c
@@ -2,43 +2,52 @@
/* STARS SPECIFIC FUNCTIONS */
-static float starBezierCurve(float p, float time)
+static float
+starBezierCurve (float p,
+ float time)
{
float out;
- out = p * (time+0.01) * 10;
+
+ out = p * (time + 0.01) * 10;
+
return out;
}
void
initiateStarElement (CompScreen *s,
- Element *e)
+ Element *e)
{
float init;
- e->dx = elementsMmRand(-50000, 50000, 5000);
- e->dy = elementsMmRand(-50000, 50000, 5000);
- e->dz = elementsMmRand(000, 200, 2000);
- e->x = s->width * .5 + elementsGetStarOffsetX (s); // X Offset
- e->y = s->height * .5 + elementsGetStarOffsetY (s); // Y Offset
- e->z = elementsMmRand(000, 0.1, 5000);
- init = elementsMmRand(0,100, 1);
+
+ e->dx = elementsMmRand (-50000, 50000, 5000);
+ e->dy = elementsMmRand (-50000, 50000, 5000);
+ e->dz = elementsMmRand (000, 200, 2000);
+ e->x = s->width / 2 + elementsGetStarOffsetX (s); /* X Offset */
+ e->y = s->height / 2 + elementsGetStarOffsetY (s); /* Y Offset */
+ e->z = elementsMmRand (000, 0.1, 5000);
+ init = elementsMmRand (0,100, 1);
+
e->x += init * e->dx;
e->y += init * e->dy;
}
void
-starMove (CompScreen *s,
- ElementAnimation *anim,
- Element *e,
- int updateDelay)
+starMove (CompScreen *s,
+ ElementAnimation *anim,
+ Element *e,
+ int updateDelay)
{
+ float xs, ys, zs;
float starsSpeed = anim->speed / 500.0f;
float tmp = 1.0f / (100.0f - starsSpeed);
- float xs = starBezierCurve(e->dx, tmp);
- float ys = starBezierCurve(e->dy, tmp);
- float zs = starBezierCurve(e->dz, tmp);
- e->x += (float)(xs * (double)updateDelay) * starsSpeed;
- e->y += (float)(ys * (double)updateDelay) * starsSpeed;
- e->z += (float)(zs * (double)updateDelay) * starsSpeed;
+
+ xs = starBezierCurve(e->dx, tmp);
+ ys = starBezierCurve(e->dy, tmp);
+ zs = starBezierCurve(e->dz, tmp);
+
+ e->x += xs * updateDelay * starsSpeed;
+ e->y += ys * updateDelay * starsSpeed;
+ e->z += zs * updateDelay * starsSpeed;
}
void
--
1.6.0.4