Esempio n. 1
0
static void add_scaled_fxnodeline(
                                  struct FXNodeLines **tofxnodeline,
                                  struct FXNodeLines *nodeline1,
                                  struct FXNodeLines *nodeline2,
                                  Place p,
                                  Place subtract
){
  struct FXNodeLines fxnodeline = *nodeline1;
  fxnodeline.l.p = p;

  R_ASSERT(p_Greater_Or_Equal(p,              nodeline1->l.p));
  R_ASSERT(p_Greater_Or_Equal(nodeline2->l.p, p));
  
  if (nodeline1->logtype != LOGTYPE_HOLD)
    fxnodeline.val = scale(p_float(p), p_float(nodeline1->l.p), p_float(nodeline2->l.p), nodeline1->val, nodeline2->val);

  add_fxnodeline(tofxnodeline, &fxnodeline, subtract);
}
Esempio n. 2
0
/**********************************************************************
  FUNCTION
    Finds the first element in the list at or after place 'place' and
    counter 'counter' for dividor 'dividor'. If no element is found
    after 'place' and 'counter/dividor', NULL is returned.
**********************************************************************/
void *ListFindElement3(
	const struct ListHeader3 *element,
	const Place *placement
){
	for(;element!=NULL;element=element->next)
          if(p_Greater_Or_Equal(element->p,*placement))
            return (void*)element;

	return NULL;
}
Esempio n. 3
0
static void CopyRange_fxnodelines(
                                  struct FXNodeLines **tofxnodeline,
                                  struct FXNodeLines *fromfxnodeline,
                                  struct FXNodeLines *last,
                                  Place p1,
                                  Place p2
){
	if(fromfxnodeline==NULL) return;

	if(p_Less_Than(fromfxnodeline->l.p, p1)){
          CopyRange_fxnodelines(tofxnodeline,
                                NextFXNodeLine(fromfxnodeline),
                                fromfxnodeline,
                                p1,
                                p2);
          return;
	}

        if (last!=NULL)
          if (p_Less_Than(last->l.p, p1))
            add_scaled_fxnodeline(tofxnodeline, last, fromfxnodeline, p1, p1);

        if(p_Greater_Or_Equal(fromfxnodeline->l.p, p2)) {
          if (last!=NULL)
            add_scaled_fxnodeline(tofxnodeline, last, fromfxnodeline, p2, p1);
          return;
        }

        add_fxnodeline(tofxnodeline, fromfxnodeline, p1);

	CopyRange_fxnodelines(tofxnodeline,
                              NextFXNodeLine(fromfxnodeline),
                              fromfxnodeline,
                              p1,
                              p2);
}