Exemple #1
0
/////////////////////////////////////////////////////////
//
// pix_multiimage
//
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
pix_multiimage :: pix_multiimage(t_symbol *filename, t_floatarg baseImage, t_floatarg topImage, t_floatarg skipRate)
    	    	: m_numImages(0), m_curImage(-1), m_loadedCache(NULL)
{
  inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("img_num"));
  m_pixBlock.image = m_imageStruct;

  // make sure that there are some characters
  if (filename->s_name[0]) {
    if (skipRate == 0)  {
      if (topImage == 0)
	openMess(filename, 0, (int)baseImage, 1);
      else
	openMess(filename, (int)baseImage, (int)topImage, 1);
    }else openMess(filename, (int)baseImage, (int)topImage, (int)skipRate);
  }
}
Exemple #2
0
/////////////////////////////////////////////////////////
//
// multimodel
//
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
multimodel :: multimodel(t_symbol *filename, t_floatarg baseModel,
                         t_floatarg topModel, t_floatarg skipRate)
  :  m_loader(NULL),
     m_size_change_flag(false),
     m_position(256,3),
     m_texture (256,2),
     m_color   (256,4),
     m_normal  (256,3),
     m_infoOut(gem::RTE::Outlet(this)),
     m_drawType(GL_TRIANGLES)
{
  m_drawTypes.clear();
  m_drawTypes["default"]=m_drawType;
  m_drawTypes["point"]=GL_POINTS;
  m_drawTypes["points"]=GL_POINTS;
  m_drawTypes["line"]=GL_LINES;
  m_drawTypes["lines"]=GL_LINES;
  m_drawTypes["fill"]=GL_TRIANGLES;

  inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("mdl_num"));

  // make sure that there are some characters
  if (filename&&filename->s_name&&*filename->s_name) {
    openMess(filename->s_name, baseModel, topModel, skipRate);
  }
}
Exemple #3
0
/////////////////////////////////////////////////////////
//
// model
//
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
model :: model(t_symbol *filename) :
    m_loader(gem::plugins::modelloader::getInstance()),
    m_loaded(false)
{
    // make sure that there are some characters
    if (filename&&filename->s_name&&*filename->s_name) openMess(filename->s_name);
}
Exemple #4
0
vertex_program :: vertex_program(t_symbol *filename) :
    m_programType(GEM_PROGRAM_none),
    m_programID(0),
    m_programString(NULL), m_size(0),
    m_buf(std::string()),
    m_envNum(-1)
{
    openMess(filename);
}
Exemple #5
0
////////////////////////////////////////////////////////
// startRendering
//
/////////////////////////////////////////////////////////
void glsl_vertex :: startRendering()
{
  if(NULL!=m_shaderFilename)
    openMess(m_shaderFilename);

  if (m_shaderString == NULL)
    {
      error("need to load a shader");
      return;
    }
}
Exemple #6
0
/////////////////////////////////////////////////////////
//
// pix_image
//
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
pix_image :: pix_image(t_symbol *filename) :
  m_wantThread(true),
  m_loadedImage(NULL),
  m_id(gem::image::load::INVALID),
  m_infoOut(gem::RTE::Outlet(this))
{
  int ival=m_wantThread;
  gem::Settings::get("image.loading.thread", ival);
  m_wantThread=(ival!=0);

  if(filename!=&s_)openMess(filename->s_name);
  gem::image::load::poll();
}
Exemple #7
0
glsl_vertex :: glsl_vertex(t_symbol *filename) :
  m_shaderTarget(0),
  m_shader(0),
  m_shaderARB(0),
  m_compiled(0), m_size(0), 
  m_shaderString(NULL), 
  m_shaderFilename(NULL),
  m_shaderID(0)
{
  openMess(filename);

  // create an outlet to send shader object ID
  m_outShaderID = outlet_new(this->x_obj, &s_float);
}
Exemple #8
0
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
GemPathBase :: GemPathBase(int argc, t_atom *argv)
  : m_numDimens(1), m_array(NULL),
    m_out1(NULL)
{
  m_out1 = outlet_new(this->x_obj, 0);

  if (argc >= 2)
    openMess(atom_getsymbol(&argv[1]));
  if (argc >= 1)
    {
      m_numDimens = (int)atom_getfloat(&argv[0]);
      if (m_numDimens < 1) m_numDimens = 1;
      if (m_numDimens > 64)
	{
	  error("too many dimensions, must be below 64");
	  m_numDimens = 64;
	}
    }
}
Exemple #9
0
pix_movieDS :: pix_movieDS(t_symbol *filename) :
	m_haveMovie(FALSE),
	m_frame(NULL),
	m_csize(0),
	m_xsize(0),
	m_ysize(0),
	FilterGraph(NULL),
	VideoFilter(NULL),
	SampleFilter(NULL),
	NullFilter(NULL),
	SampleGrabber(NULL),
	MediaControl(NULL),
	MediaSeeking(NULL),
	MediaPosition(NULL)
{
	HRESULT	RetVal;

	m_dataSize[0]	= m_csize;
	m_dataSize[1]	= m_xsize;
	m_dataSize[2]	= m_ysize;

	// Initialize COM
	CoInitialize(NULL);

    // Create the base object of a filter graph
    RetVal	= CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
		IID_IGraphBuilder, (void **)&FilterGraph);

	if (RetVal != S_OK || NULL == FilterGraph)
	{
		error("Unable to create FilterGraph interface %d", RetVal);

		return;
	}

	// Get the IMediaControl interface for Run, Stop, Pause and keeps control states
	RetVal	= FilterGraph->QueryInterface(IID_IMediaControl, (void **)&MediaControl);

	if (RetVal != S_OK || NULL == MediaControl)
	{
		error("Unable to create MediaControl interface %d", RetVal);

		return;
	}

	// Get the IMediaSeeking interface for rewinding video at loop point
	// and set time format to frames
	RetVal	= FilterGraph->QueryInterface(IID_IMediaSeeking, (void **)&MediaSeeking);

	if (RetVal != S_OK || NULL == MediaSeeking)
	{
		error("Unable to create MediaSeeking interface %d", RetVal);

		return;
	}

	// Get the IMediaPosition interface for getting the current position of the clip
	RetVal	= FilterGraph->QueryInterface(IID_IMediaPosition, (void **)&MediaPosition);

	if (RetVal != S_OK || NULL == MediaPosition)
	{
		error("Unable to create MediaPosition interface %d", RetVal);

		return;
	}

	if (strlen(filename->s_name) > 0)
	{
		openMess(filename, GL_RGBA);
	}
}