File: compiz-elements.h

package info (click to toggle)
compiz-plugins-experimental 2%3A0.8.18-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 28,452 kB
  • sloc: ansic: 63,529; sh: 4,744; cpp: 1,379; makefile: 895
file content (148 lines) | stat: -rw-r--r-- 3,598 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/* Insert copyright */
#ifndef _COMPIZ_ELEMENTS_H
#define _COMPIZ_ELEMENTS_H

#include <compiz-core.h>

/* This is the number used to make sure that elements don't get all
   created in one place. Bigger number, more distance.
   Possibly fixable later. -> s->width? */
#define BIG_NUMBER		20000

#define ELEMENTS_ABIVERSION     20081215

typedef struct _ElementTypeInfo  ElementTypeInfo;
typedef struct _Element          Element;
typedef struct _ElementAnimation ElementAnimation;
typedef struct _ElementTexture   ElementTexture;

typedef void (*ElementInitiateProc) (CompScreen *s,
				     Element    *e);

typedef void (*ElementMoveProc) (CompScreen       *s,
				 ElementAnimation *anim,
				 Element          *e,
				 int              updateDelay);

typedef void (*ElementFiniProc) (CompScreen *s,
				 Element    *e);

/* Element Type management, extension plugins should call this to create
   a new 'type' of element in the core of elements on initDisplay.
   What is provided:
   * CompDisplay *
   * Element Name
   * Function pointer to element initialization function
   * Function pointer to element movement function
   * Fuction  pointer to fini function
 */

typedef struct _ElementsBaseFunctions
{
    Bool (*newElementType) (CompDisplay         *d,
			    char                *name,
			    char                *desc,
			    ElementInitiateProc initiate,
			    ElementMoveProc	move,
			    ElementFiniProc     fini);

    void (*removeElementType) (CompScreen *s,
			       char       *name);

    int (*getRand) (int min, int max);
    float (*mmRand) (int min, int max, float divisor);

    int (*boxing) (CompScreen *s);
    int (*depth) (CompScreen *s);
} ElementsBaseFunctions;

struct _ElementTypeInfo
{
    char *name;
    char *desc;

    ElementInitiateProc initiate;
    ElementMoveProc     move;
    ElementFiniProc     fini;

    struct _ElementTypeInfo *next;
};

struct _ElementTexture
{
    CompTexture tex;

    unsigned int width;
    unsigned int height;

    Bool   loaded;
    GLuint dList;		
};

struct _Element
{
    float x, y, z;
    float dx, dy, dz;
    float rSpeed;
    int   rDirection;
    int   rAngle;

    float opacity;
    float glowAlpha;	/* Needs to be painted */
    int   nTexture;

    void *ptr;		/* Extensions latch on to this */
};

struct _ElementAnimation
{
    char *type;
    char *desc;

    int nElement;
    int size;
    int speed;
    int id;		/* Uniquely idenitifies this animation */

    Bool rotate;

    Bool active;

    ElementTexture *texture;
    int            nTextures;

    Element         *elements;
    ElementTypeInfo *properties;

    struct _ElementAnimation *next;
};	

/* Resets an animation to defaults */
void initiateElement (CompScreen       *s,
		      ElementAnimation *anim,
		      Element          *ele,
		      Bool             rotate);

/* Calls the movement function pointer for an element in an element animation */
void elementMove (CompScreen       *s,
		  Element          *e,
		  ElementAnimation *anim,
		  int              updateDelay);

/* Used to update all element textures and settings */
void updateElementTextures (CompScreen *s,
			    Bool       changeTextures);

/* Utility Functions */
int elementsGetRand (int min, int max);
float elementsMmRand(int  min, int max, float divisor);
int elementsGetEBoxing (CompScreen *s);
int elementsGetEDepth (CompScreen *s);

/* Management of ElementAnimations */
ElementAnimation* elementsCreateAnimation (CompScreen *s,
					   char       *name);
void elementsDeleteAnimation (CompScreen       *s,
			      ElementAnimation *anim);

#endif