File: renderer.c

package info (click to toggle)
libvisual-plugins 1%3A0.4.0%2Bdfsg1-13
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,644 kB
  • sloc: ansic: 9,358; sh: 8,809; cpp: 871; makefile: 221; sed: 16
file content (69 lines) | stat: -rw-r--r-- 1,702 bytes parent folder | download | duplicates (7)
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
#include <config.h>

#include <time.h>
#include <sys/time.h>

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "main.h"
#include "renderer.h"
#include "compute.h"
#include "display.h"

#define wrap(a) ( a < 0 ? 0 : ( a > 255 ? 255 : a )) 

void _inf_init_renderer(InfinitePrivate *priv)
{
	int allocsize;

	allocsize = ((priv->plugwidth * priv->plugheight) + (priv->plugwidth * 2)) * NB_FCT * sizeof(t_interpol);

	priv->teff = 500;
	priv->tcol = 100;

	_inf_init_display(priv);
	_inf_generate_colors(priv);
	_inf_load_effects(priv);
	_inf_load_random_effect(priv, &priv->current_effect);

	priv->vector_field = (t_interpol*) visual_mem_malloc0(allocsize);
	visual_mem_set (priv->vector_field, 0, allocsize);

	_inf_generate_vector_field(priv, priv->vector_field);
}


void _inf_renderer(InfinitePrivate *priv)
{
	_inf_blur(priv, &priv->vector_field[priv->plugwidth*priv->plugheight*priv->current_effect.num_effect]);
	_inf_spectral(priv, &priv->current_effect, priv->pcm_data);
	_inf_curve(priv, &priv->current_effect);

	if (priv->t_last_color<=32) {
		_inf_change_color(priv, priv->old_color,
				priv->color,
				priv->t_last_color*8);
	}
	priv->t_last_color+=1;
	priv->t_last_effect+=1;
	if (priv->t_last_effect%priv->teff==0) {
		_inf_load_random_effect(priv, &priv->current_effect);
		priv->t_last_effect=0;
	}
	if (priv->t_last_color%priv->tcol==0) {
		priv->old_color=priv->color;
		priv->color=visual_random_context_int_range(priv->rcontext, 0, NB_PALETTES - 1);
		priv->t_last_color=0;
	}
}

void _inf_close_renderer(InfinitePrivate *priv)
{
	visual_mem_free(priv->surface1);
	visual_mem_free(priv->surface2);
	visual_mem_free(priv->vector_field);
}