Exemplo n.º 1
0
CDList *
cd_list_add_after (void * ctx, CDList * list, CDScalarType type,
		   CDScalar data, CDScalar after)
{
  CDList * a = cd_list_find (ctx, list, type, after);
  return cd_list_add_after_item (ctx, list, data, a);
}
Exemplo n.º 2
0
CDList *
cd_list_add_before (void * ctx, CDList * list, CDScalarType type,
		    CDScalar data, CDScalar before)
{
  CDList * b = cd_list_find (ctx, list, type, before);
  return cd_list_add_before_item (ctx, list, data, b);
}
Exemplo n.º 3
0
CDList *
cd_list_remove (void * ctx, CDList * list, CDScalarType type, CDScalar data)
{
  CDList * l = cd_list_find (ctx, list, type, data);

  if (l == NULL) return list;

  if (l->prev) l->prev->next = l->next;
  if (l->next) l->next->prev = l->prev;

  if (l == list) return list->next;
  else return list;
}
Exemplo n.º 4
0
/*
 * gets layer below 'below'. If below is RemixNone, returns lowest layer
 */
RemixLayer *
_remix_track_get_layer_below (RemixEnv * env, RemixTrack * track,
                              RemixLayer * below)
{
  CDList * below_item;
  RemixLayer * layer;

  if (track->layers == NULL) return RemixNone;

  if (below == RemixNone) {
    layer = (RemixLayer *) track->layers->data.s_pointer;
  } else {
    below_item = cd_list_find (env, track->layers, CD_TYPE_POINTER,
			       CD_POINTER(below));
    if (below_item == NULL) return RemixNone;
    below_item = below_item->prev;
    if (below_item == NULL) return RemixNone;
    layer = (RemixLayer *) below_item->data.s_pointer;
  }

  return layer;
}
Exemplo n.º 5
0
/*
 * gets layer above 'above'. If above is RemixNone, returns topmost layer
 */
RemixLayer *
_remix_track_get_layer_above (RemixEnv * env, RemixTrack * track,
                              RemixLayer * above)
{
  CDList * above_item;
  RemixLayer * layer;

  if (track->layers == NULL) return RemixNone;

  if (above == RemixNone) {
    layer = (RemixLayer *)
      (cd_list_last (env, track->layers, CD_TYPE_POINTER)).s_pointer;
  } else {
    above_item = cd_list_find (env, track->layers, CD_TYPE_POINTER,
			       CD_POINTER(above));
    if (above_item == NULL) return RemixNone;
    above_item = above_item->next;
    if (above_item == NULL) return RemixNone;
    layer = (RemixLayer *) above_item->data.s_pointer;
  }

  return layer;
}