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
|
////////////////////////////////////////////////////////
//
// GEM - Graphics Environment for Multimedia
//
// Implementation file
//
// Copyright (c) 2004 tigital@mac.com
// For information on usage and redistribution, and for a DISCLAIMER
// * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS"
//
////////////////////////////////////////////////////////
#include "GEMglLoadMatrixf.h"
CPPEXTERN_NEW_WITH_ONE_ARG ( GEMglLoadMatrixf , t_floatarg, A_DEFFLOAT );
/////////////////////////////////////////////////////////
//
// GEMglLoadMatrixf
//
/////////////////////////////////////////////////////////
// Constructor
//
GEMglLoadMatrixf :: GEMglLoadMatrixf (t_floatarg arg0=0) //:
//matrix(static_cast<GLfloat>(arg0))
{
//m_inlet[0] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("matrix"));
m_inlet = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_list, gensym("list"));
}
/////////////////////////////////////////////////////////
// Destructor
//
GEMglLoadMatrixf :: ~GEMglLoadMatrixf () {
inlet_free(m_inlet);
}
//////////////////
// extension check
bool GEMglLoadMatrixf :: isRunnable(void) {
if(GLEW_VERSION_1_1)return true;
error("your system does not support OpenGL-1.1");
return false;
}
/////////////////////////////////////////////////////////
// Render
//
void GEMglLoadMatrixf :: render(GemState *state) {
glLoadMatrixf (m_matrix);
}
/////////////////////////////////////////////////////////
// Variables
//
void GEMglLoadMatrixf :: matrixMess (int argc, t_atom*argv) { // FUN
if(argc!=16){
error("need 16 (4x4) elements");
return;
}
int i;
for (i=0;i<16;i++) {
m_matrix[i]=static_cast<GLfloat>(atom_getfloat(argv+i));
}
setModified();
}
/////////////////////////////////////////////////////////
// static member functions
//
void GEMglLoadMatrixf :: obj_setupCallback(t_class *classPtr) {
//class_addmethod(classPtr, reinterpret_cast<t_method>(&GEMglLoadMatrixf::matrixMessCallback), gensym("matrix"), A_DEFFLOAT, A_NULL);
class_addmethod(classPtr, reinterpret_cast<t_method>(&GEMglLoadMatrixf::matrixMessCallback),
gensym("list"), A_GIMME, A_NULL);
}
void GEMglLoadMatrixf :: matrixMessCallback (void* data, t_symbol*,int argc, t_atom*argv){
GetMyClass(data)->matrixMess ( argc, argv );
}
|