view plugins/crazychat/face.h @ 12024:e67993da8a22

[gaim-migrate @ 14317] I strongly suspect CruiseControl is going to yell at me for this. A voice chat API, GUI + mediastreamer. This is what I'm using for Google Talk. This doesn't actually do anything at all. There's no code in the Jabber plugin yet to use this API (although it Works For Me). All it will do is compile and link. If you're lucky. To build this, you should install oRTP from Linphone, Speex and iLBC (also from linphone, I believe). To not build this, ./configure --disable-vv. Most of the configure.ac and Makefile.am hackery was lifted right out of Linphone with a few modifications. It seems to work if you have everything installed or if you --disable-vv. I haven't really tested not having everything installed and not --disabling-vv. It's kinda funky to include all of mediastreamer in the source tree like this, but linphone doesn't build it as a separate library. I'll probably wind up writing them a patch to build it as a .so so we can link it dynamically instead. This code certainly isn't finished. It'll adapt as I progress on the Google code, but it's certainly of more use here in CVS than in my personal tree. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Wed, 09 Nov 2005 08:07:20 +0000
parents ed017b9c532d
children
line wrap: on
line source

#ifndef __FACE_H__
#define __FACE_H__

#include <GL/gl.h>
#include <GL/glu.h>
#include "glm.h"

#define NUM_PARTS 10
#define DOG_SHARK_CHANGE 5
#define CRAZY_COUNT 12
#define MAX_EYE_POP 1.3
#define EYE_TIME 120
#define MAX_FILE_LEN 64
#define ANGLE_INC 60

typedef enum {DOG, SHARK} KIND;
typedef int BOOL;
typedef enum {UP, DOWN, CONST} DIRECTION;
typedef enum {NORMAL, CRAZY1, CRAZY2, CRAZY3} OUTPUT_MODE;

struct face_struct {
	char* name;
	KIND my_kind;
	void* char_struct;
	GLint* mat_indeces;
	GLMmat_str* materials;
	OUTPUT_MODE my_mode;
	int eye_count, crazy_count;	
	void (*draw_func)(struct face_struct*, GLfloat, GLfloat, BOOL, BOOL, GLfloat, DIRECTION, OUTPUT_MODE);
	float curr_z_angle, curr_eye_pop;
};

typedef struct face_struct* FACE;
typedef enum {APPENDAGE, HEAD, LIDS, LEFT_IRIS, RIGHT_IRIS, EYES, PUPIL, EXTRA1, EXTRA2, EXTRA3} PART;

FACE init_face(KIND kind);

FACE copy_face(FACE f);

void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode);

void change_materials(FACE face, int* mats, int num_change); 

#endif