Beispiel #1
0
void ComponentOp2::SetOperator(char op)
{
  ComponentType inType = CT_NONE;
  if (op == '|' || op == '&')
    inType = CT_BOOL;
  else if (op == '=')
    inType = CT_NONE;
  else
    inType = CT_DOUBLE;

  if (inType == CT_NONE)
  {
    for (size_t i = 0; i < m_inputs.size(); i++)
    {
      if (m_inputs[i].comp == NULL)
        m_inputs[i].type = CT_NONE;
      else
        inType = m_inputs[i].type;
      m_inputs[i].dynamic = true;
    }
    for (size_t i = 0; i < m_inputs.size(); i++)
      if (m_inputs[i].dynamic)
        m_inputs[i].type = inType;
  }
  else
  {
    for (size_t i = 0; i < m_inputs.size(); i++)
      if (m_inputs[i].type != inType && inType != CT_NONE)
      {
        m_inputs[i].type = inType;
        m_inputs[i].dynamic = false;
        RemoveInput(m_inputs[i].comp);
      }
  }

  if (op == '|' || op == '&' || op == '<' || op == '>' || op == '=')
  {
    if (m_outputs[0].type != CT_BOOL)
      ClearOutputs();
    m_outputs[0].type = CT_BOOL;
  }
  else
  {
    if (m_outputs[0].type != CT_DOUBLE)
      ClearOutputs();
    m_outputs[0].type = CT_DOUBLE;
  }

  m_operator = op;
}
Beispiel #2
0
Datei: Op.cpp Projekt: eriser/es
COp::~COp()
{
	ClearInputs();
	ClearOutputs();
	ClearInternals();
	// rem: Hier m_uiIDMax_ nicht dekrementieren!
}
Beispiel #3
0
Datei: Op.cpp Projekt: eriser/es
COp & COp::operator = ( const COp &roOp )
{
	ClearInputs();
	ClearOutputs();
	InitInputs( roOp.m_uiCountIn ); // m_uiCountIn / m_ppoOpIn
	InitOutputs( roOp.m_uiCountOut ); // m_uiCountOut / m_pdValOut
	//for( unsigned int i=0; i<m_uiCountIn; ++i )
	//	m_poIn[i] = roOp.m_poIn[i];
	//for( unsigned int i=0; i<m_uiCountOut; ++i )
	//	m_pdOut[i] = roOp.m_pdOut[i];
	if( m_uiCountIn )
		OP_MEM_COPY( m_poIn, roOp.m_poIn, m_uiCountIn * sizeof(CLink) );
	if( m_uiCountOut )
		OP_MEM_COPY( m_pdOut, roOp.m_pdOut, m_uiCountOut * sizeof(double) );
	m_uiState = roOp.m_uiState;
	m_bIsNotValid = roOp.m_bIsNotValid;
	// m_uiID bleibt!
	m_uiFlags = roOp.m_uiFlags;
#ifdef OP_USE_INTERNALS
	/*
	// rem: Kann nur in der spezifischen Klasse im Konstruktur initialisiert werden.
	if( m_uiCountInternalInt != roOp.m_uiCountInternalInt )
		SetCountInternalInt( roOp.m_uiCountInternalInt );
	if( m_uiCountInternalUInt != roOp.m_uiCountInternalUInt )
		SetCountInternalUInt( roOp.m_uiCountInternalUInt );
	if( m_uiCountInternalFlt != roOp.m_uiCountInternalFlt )
		SetCountInternalFlt( roOp.m_uiCountInternalFlt );
	OP_MEM_COPY( m_pptPtrInternalInt, roOp.m_pptPtrInternalInt, m_uiCountInternalInt * sizeof(int *) );
	OP_MEM_COPY( m_pptPtrInternalUInt, roOp.m_pptPtrInternalUInt, m_uiCountInternalUInt * sizeof(unsigned int *) );
	OP_MEM_COPY( m_pptPtrInternalFlt, roOp.m_pptPtrInternalFlt, m_uiCountInternalFlt * sizeof(double *) );
	*/
	for( unsigned int i=0; i<m_uiCountInternalInt; ++i )
		*(m_pptPtrInternalInt[i]) = *(roOp.m_pptPtrInternalInt[i]);
	for( unsigned int i=0; i<m_uiCountInternalUInt; ++i )
		*(m_pptPtrInternalUInt[i]) = *(roOp.m_pptPtrInternalUInt[i]);
	for( unsigned int i=0; i<m_uiCountInternalFlt; ++i )
		*(m_pptPtrInternalFlt[i]) = *(roOp.m_pptPtrInternalFlt[i]);
	
#endif // OP_USE_INTERNALS
#ifdef OP_USE_RUNTIME_INFO
	m_oStrNameInstance = roOp.m_oStrNameInstance;
	m_oArrStrNameIn = roOp.m_oArrStrNameIn;
	m_oArrStrNameOut = roOp.m_oArrStrNameOut;
	m_oArrStrInfoIn = roOp.m_oArrStrInfoIn;
	m_oArrStrInfoOut = roOp.m_oArrStrInfoOut;
#ifdef OP_USE_ROUTINES
	m_oArrStrNameRoutine = roOp.m_oArrStrNameRoutine;
	m_oArrStrInfoRoutine = roOp.m_oArrStrInfoRoutine;
#endif // OP_USE_ROUTINES
#endif // OP_USE_RUNTIME_INFO


#ifdef OP_USE_USER_DATA
	m_pvData = roOp.m_pvData;
#endif // OP_USE_USER_DATA
	return *this;
}
Beispiel #4
0
LRESULT CFilterComposer::OnDestroy( UINT, WPARAM, LPARAM, BOOL& ) {

	// Stop running (if we are currently processing video)
	m_videoRunner.StopProcessing();

	// Free the loaded classifiers and outputsinks
	ClearActiveClassifiers();
    ClearStandardClassifiers();
    ClearCustomClassifiers();
    ClearOutputs();
    
    delete graphics;
	DeleteDC(hdcmem);
	DeleteObject(hbm);

    m_filterLibrary.DestroyWindow();

    PostQuitMessage( 0 );
	return 0;
}