Exemplo n.º 1
0
sraRegion *
sraRgnCreateRect(int x1, int y1, int x2, int y2) {
  sraSpanList *vlist, *hlist;
  sraSpan *vspan, *hspan;

  /* - Build the horizontal portion of the span */
  hlist = sraSpanListCreate();
  hspan = sraSpanCreate(x1, x2, NULL);
  sraSpanInsertAfter(hspan, &(hlist->front));

  /* - Build the vertical portion of the span */
  vlist = sraSpanListCreate();
  vspan = sraSpanCreate(y1, y2, hlist);
  sraSpanInsertAfter(vspan, &(vlist->front));

  sraSpanListDestroy(hlist);

  return (sraRegion*)vlist;
}
Exemplo n.º 2
0
static sraSpanList *
sraSpanListDup(const sraSpanList *src) {
  sraSpanList *newlist;
  sraSpan *newspan, *curr;

  if (!src) return NULL;
  newlist = sraSpanListCreate();
  curr = src->front._next;
  while (curr != &(src->back)) {
    newspan = sraSpanDup(curr);
    sraSpanInsertBefore(newspan, &(newlist->back));
    curr = curr->_next;
  }

  return newlist;
}
Exemplo n.º 3
0
sraSpanList *
sraSpanListDup(const sraSpanList *src)
{
    sraSpanList *newlist;
    sraSpan *newspan, *curr;

    if (IsBadReadPtr(src,sizeof(sraSpan))) return NULL;
    newlist = sraSpanListCreate();
    curr = src->front._next;
    while ((curr != &(src->back)) && (!IsBadReadPtr(curr,sizeof(sraSpan))))
    {
        newspan = sraSpanDup(curr);
        sraSpanInsertBefore(newspan, &(newlist->back));
        curr = curr->_next;
    }

    return newlist;
}
Exemplo n.º 4
0
sraRegion *
sraRgnCreate() {
  return (sraRegion*)sraSpanListCreate();
}