| @@ -76,6 +76,7 @@ float star[] = { | |||||
| -0.313000,-0.349000 | -0.313000,-0.349000 | ||||
| }; | }; | ||||
| float star_rot[sizeof(star)/sizeof(*star)]; | |||||
| /* Global variables */ | /* Global variables */ | ||||
| static int frame = 0; | static int frame = 0; | ||||
| @@ -89,8 +90,6 @@ int main(int argc, char **argv) | |||||
| unsigned int i; | unsigned int i; | ||||
| int transition = cucul_rand(0, TRANSITION_COUNT); | int transition = cucul_rand(0, TRANSITION_COUNT); | ||||
| /* Set up two canvases, a mask, and attach a display to the front one */ | /* Set up two canvases, a mask, and attach a display to the front one */ | ||||
| frontcv = cucul_create_canvas(0, 0); | frontcv = cucul_create_canvas(0, 0); | ||||
| backcv = cucul_create_canvas(0, 0); | backcv = cucul_create_canvas(0, 0); | ||||
| @@ -216,51 +215,86 @@ void do_transition(cucul_canvas_t *mask, int transition, float time) | |||||
| float muly = time*cucul_get_canvas_height(mask); | float muly = time*cucul_get_canvas_height(mask); | ||||
| int w2 = cucul_get_canvas_width(mask) / 2; | int w2 = cucul_get_canvas_width(mask) / 2; | ||||
| int h2 = cucul_get_canvas_height(mask) / 2; | int h2 = cucul_get_canvas_height(mask) / 2; | ||||
| float angle = (time*360)*3.14/180, x,y; | |||||
| unsigned int i; | |||||
| switch(transition) | switch(transition) | ||||
| { | { | ||||
| case TRANSITION_STAR: | case TRANSITION_STAR: | ||||
| /* Compute rotated coordinates */ | |||||
| for(i=0;i<(sizeof(star)/sizeof(*star))/2;i++) | |||||
| { | |||||
| x = star[OFFSET_X(i)]; | |||||
| y = star[OFFSET_Y(i)]; | |||||
| star_rot[OFFSET_X(i)] = x*cos(angle) - y*sin(angle); | |||||
| star_rot[OFFSET_Y(i)] = y*cos(angle) + x*sin(angle); | |||||
| } | |||||
| mulx*=1.8; | mulx*=1.8; | ||||
| muly*=1.8; | muly*=1.8; | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(0)]*mulx+w2, star[OFFSET_Y(0)]*muly+h2, | |||||
| star[OFFSET_X(1)]*mulx+w2, star[OFFSET_Y(1)]*muly+h2, | |||||
| star[OFFSET_X(9)]*mulx+w2, star[OFFSET_Y(9)]*muly+h2, | |||||
| star_rot[OFFSET_X(0)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(0)]*muly+h2, | |||||
| star_rot[OFFSET_X(1)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(1)]*muly+h2, | |||||
| star_rot[OFFSET_X(9)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(9)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(1)]*mulx+w2, star[OFFSET_Y(1)]*muly+h2, | |||||
| star[OFFSET_X(2)]*mulx+w2, star[OFFSET_Y(2)]*muly+h2, | |||||
| star[OFFSET_X(3)]*mulx+w2, star[OFFSET_Y(3)]*muly+h2, | |||||
| star_rot[OFFSET_X(1)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(1)]*muly+h2, | |||||
| star_rot[OFFSET_X(2)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(2)]*muly+h2, | |||||
| star_rot[OFFSET_X(3)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(3)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(3)]*mulx+w2, star[OFFSET_Y(3)]*muly+h2, | |||||
| star[OFFSET_X(4)]*mulx+w2, star[OFFSET_Y(4)]*muly+h2, | |||||
| star[OFFSET_X(5)]*mulx+w2, star[OFFSET_Y(5)]*muly+h2, | |||||
| star_rot[OFFSET_X(3)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(3)]*muly+h2, | |||||
| star_rot[OFFSET_X(4)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(4)]*muly+h2, | |||||
| star_rot[OFFSET_X(5)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(5)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(5)]*mulx+w2, star[OFFSET_Y(5)]*muly+h2, | |||||
| star[OFFSET_X(6)]*mulx+w2, star[OFFSET_Y(6)]*muly+h2, | |||||
| star[OFFSET_X(7)]*mulx+w2, star[OFFSET_Y(7)]*muly+h2, | |||||
| star_rot[OFFSET_X(5)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(5)]*muly+h2, | |||||
| star_rot[OFFSET_X(6)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(6)]*muly+h2, | |||||
| star_rot[OFFSET_X(7)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(7)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(7)]*mulx+w2, star[OFFSET_Y(7)]*muly+h2, | |||||
| star[OFFSET_X(8)]*mulx+w2, star[OFFSET_Y(8)]*muly+h2, | |||||
| star[OFFSET_X(9)]*mulx+w2, star[OFFSET_Y(9)]*muly+h2, | |||||
| star_rot[OFFSET_X(7)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(7)]*muly+h2, | |||||
| star_rot[OFFSET_X(8)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(8)]*muly+h2, | |||||
| star_rot[OFFSET_X(9)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(9)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(9)]*mulx+w2, star[OFFSET_Y(9)]*muly+h2, | |||||
| star[OFFSET_X(1)]*mulx+w2, star[OFFSET_Y(1)]*muly+h2, | |||||
| star[OFFSET_X(5)]*mulx+w2, star[OFFSET_Y(5)]*muly+h2, | |||||
| star_rot[OFFSET_X(9)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(9)]*muly+h2, | |||||
| star_rot[OFFSET_X(1)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(1)]*muly+h2, | |||||
| star_rot[OFFSET_X(5)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(5)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(9)]*mulx+w2, star[OFFSET_Y(9)]*muly+h2, | |||||
| star[OFFSET_X(5)]*mulx+w2, star[OFFSET_Y(5)]*muly+h2, | |||||
| star[OFFSET_X(7)]*mulx+w2, star[OFFSET_Y(7)]*muly+h2, | |||||
| star_rot[OFFSET_X(9)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(9)]*muly+h2, | |||||
| star_rot[OFFSET_X(5)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(5)]*muly+h2, | |||||
| star_rot[OFFSET_X(7)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(7)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| cucul_fill_triangle(mask, | cucul_fill_triangle(mask, | ||||
| star[OFFSET_X(1)]*mulx+w2, star[OFFSET_Y(1)]*muly+h2, | |||||
| star[OFFSET_X(3)]*mulx+w2, star[OFFSET_Y(3)]*muly+h2, | |||||
| star[OFFSET_X(5)]*mulx+w2, star[OFFSET_Y(5)]*muly+h2, | |||||
| star_rot[OFFSET_X(1)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(1)]*muly+h2, | |||||
| star_rot[OFFSET_X(3)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(3)]*muly+h2, | |||||
| star_rot[OFFSET_X(5)]*mulx+w2, | |||||
| star_rot[OFFSET_Y(5)]*muly+h2, | |||||
| "#"); | "#"); | ||||
| break; | break; | ||||