lms-video/Gem/src/Controls/gemreceive.h
Santi Noreña e85d191b46 - Reestructuración de ficheros y directorios general
- merge v0.01 --> Añadido fileselector
- Añadidas fuentes de Gem y Pure Data
- pix2jpg incluído en Gem. Archivos de construcción de Gem modificados.
- Añadido fichero ompiling.txt con instrucciones de compilación
2013-02-04 18:00:17 +01:00

102 lines
2.4 KiB
C++

/*-----------------------------------------------------------------
LOG
GEM - Graphics Environment for Multimedia
ordered receive
Copyright (c) 2008-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
-----------------------------------------------------------------*/
#ifndef _INCLUDE__GEM_CONTROLS_GEMRECEIVE_H_
#define _INCLUDE__GEM_CONTROLS_GEMRECEIVE_H_
#include "Base/CPPExtern.h"
/*-----------------------------------------------------------------
-------------------------------------------------------------------
CLASS
gemreceive
[receive] with explicit order
DESCRIPTION
this object is really totally unrelated to Gem.
however, it is included here, in order to replace the current
(integrated) implementation of [gemhead] with an abstraction that makes use
of an ordered [receive]
the original object was [oreceive] in the iemguts library
-----------------------------------------------------------------*/
EXTERN_STRUCT _bind_element;
EXTERN_STRUCT _gemreceive_proxy;
typedef struct _bind_element t_bind_element;
typedef struct _gemreceive_proxy t_gemreceive_proxy;
class GEM_EXTERN gemreceive : public CPPExtern
{
CPPEXTERN_HEADER(gemreceive, CPPExtern);
public:
//////////
// Constructor
gemreceive(t_symbol*s, t_floatarg f=50.f);
protected:
//////////
// Destructor
virtual ~gemreceive();
//////////
// keyboard-button
virtual void receive(t_symbol*s, int argc, t_atom*argv);
//////////
// the symbol we are bound to
void nameMess(std::string);
t_symbol*m_name;
//////////
// the receive priority
void priorityMess(t_float f);
t_float m_priority;
//////////
// The receive outlet
t_outlet *m_outlet;
//////////
// inlet for priority
t_inlet*m_fltin;
private:
//////////
// Static member functions
static void proxyCallback(t_gemreceive_proxy*, t_symbol*s, int argc, t_atom*argv);
static t_gemreceive_proxy*find_key(t_symbol*);
static t_gemreceive_proxy*add_key(t_symbol*);
static void add_element(t_gemreceive_proxy*, t_bind_element*);
static t_gemreceive_proxy*proxy_list;
public:
static void bind(gemreceive*x, t_symbol*name, t_float priority);
static void unbind(gemreceive*x, t_symbol*name);
};
#endif // for header file