summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/rmd_rectinsert.c
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src/rmd_rectinsert.c')
-rw-r--r--recordmydesktop/src/rmd_rectinsert.c398
1 files changed, 199 insertions, 199 deletions
diff --git a/recordmydesktop/src/rmd_rectinsert.c b/recordmydesktop/src/rmd_rectinsert.c
index bc70e44..1950d65 100644
--- a/recordmydesktop/src/rmd_rectinsert.c
+++ b/recordmydesktop/src/rmd_rectinsert.c
@@ -33,53 +33,53 @@
/**
* Collide two rectangles and dictate most sane action for insertion,
* as well as provide the updated rectangle(s)
-* \param wgeom1 resident rectangle
+* \param xrect1 resident rectangle
*
-* \param wgeom2 New rectangle
+* \param xrect2 New rectangle
*
-* \param wgeom_return Pointer to rectangles to be inserted
+* \param xrect_return Pointer to rectangles to be inserted
*
-* \param ngeoms number of entries in wgeom_return
+* \param nrects number of entries in xrect_return
*
* \retval 0 No collision
*
-* \retval 1 wgeom1 is covered by wgeom2
+* \retval 1 xrect1 is covered by xrect2
*
-* \retval 2 wgeom2 is covered by wgeom1
+* \retval 2 xrect2 is covered by xrect1
*
-* \retval -1 wgeom1 was broken (new is picked up in wgeom_return)
+* \retval -1 xrect1 was broken (new is picked up in xrect_return)
*
-* \retval -2 wgeom2 was broken (new is picked up in wgeom_return)
+* \retval -2 xrect2 was broken (new is picked up in xrect_return)
*
-* \retval -10 Grouping the two geoms is possible
+* \retval -10 Grouping the two rects is possible
*
*/
-static int CollideRects(WGeometry *wgeom1,
- WGeometry *wgeom2,
- WGeometry wgeom_return[],
- int *ngeoms) {
+static int CollideRects(XRectangle *xrect1,
+ XRectangle *xrect2,
+ XRectangle xrect_return[],
+ int *nrects) {
//1 fits in 2
- if((wgeom1->x>=wgeom2->x)&&
- (wgeom1->x+wgeom1->width<=wgeom2->x+wgeom2->width)&&
- (wgeom1->y>=wgeom2->y)&&
- (wgeom1->y+wgeom1->height<=wgeom2->y+wgeom2->height)){
- *ngeoms=0;
+ if((xrect1->x>=xrect2->x)&&
+ (xrect1->x+xrect1->width<=xrect2->x+xrect2->width)&&
+ (xrect1->y>=xrect2->y)&&
+ (xrect1->y+xrect1->height<=xrect2->y+xrect2->height)){
+ *nrects=0;
return 1;
}
//2 fits in 1
- else if((wgeom2->x>=wgeom1->x)&&
- (wgeom2->x+wgeom2->width<=wgeom1->x+wgeom1->width)&&
- (wgeom2->y>=wgeom1->y)&&
- (wgeom2->y+wgeom2->height<=wgeom1->y+wgeom1->height)){
- *ngeoms=0;
+ else if((xrect2->x>=xrect1->x)&&
+ (xrect2->x+xrect2->width<=xrect1->x+xrect1->width)&&
+ (xrect2->y>=xrect1->y)&&
+ (xrect2->y+xrect2->height<=xrect1->y+xrect1->height)){
+ *nrects=0;
return 2;
}
//no collision
- else if((wgeom1->x+wgeom1->width<wgeom2->x)||
- (wgeom2->x+wgeom2->width<wgeom1->x)||
- (wgeom1->y+wgeom1->height<wgeom2->y)||
- (wgeom2->y+wgeom2->height<wgeom1->y)){
- *ngeoms=0;
+ else if((xrect1->x+xrect1->width<xrect2->x)||
+ (xrect2->x+xrect2->width<xrect1->x)||
+ (xrect1->y+xrect1->height<xrect2->y)||
+ (xrect2->y+xrect2->height<xrect1->y)){
+ *nrects=0;
return 0;
}
else{
@@ -91,10 +91,10 @@ static int CollideRects(WGeometry *wgeom1,
//function should always start at the next element(which is logical since
//if any rect makes it to a points none of it's part collides with previous
//nodes on the list, too)
- int x1[2]={wgeom1->x,wgeom1->x+wgeom1->width};
- int y1[2]={wgeom1->y,wgeom1->y+wgeom1->height};
- int x2[2]={wgeom2->x,wgeom2->x+wgeom2->width};
- int y2[2]={wgeom2->y,wgeom2->y+wgeom2->height};
+ int x1[2]={xrect1->x,xrect1->x+xrect1->width};
+ int y1[2]={xrect1->y,xrect1->y+xrect1->height};
+ int x2[2]={xrect2->x,xrect2->x+xrect2->width};
+ int y2[2]={xrect2->y,xrect2->y+xrect2->height};
int enclosed[2][4],tot1,tot2;
enclosed[0][0]=(((x1[0]>=x2[0])&&(x1[0]<=x2[1])&&
(y1[0]>=y2[0])&&(y1[0]<=y2[1]))?1:0);
@@ -117,223 +117,223 @@ static int CollideRects(WGeometry *wgeom1,
if((tot1==2)&&(tot2==2)){//same width or height, which is the best case
//group
if((enclosed[1][0]&&enclosed[1][1])&&
- (wgeom1->width==wgeom2->width)){
- *ngeoms=1;
- wgeom_return[0].x = wgeom1->x;
- wgeom_return[0].y = wgeom1->y;
- wgeom_return[0].width = wgeom1->width;
- wgeom_return[0].height = wgeom2->height + wgeom2->y - wgeom1->y;
+ (xrect1->width==xrect2->width)){
+ *nrects=1;
+ xrect_return[0].x = xrect1->x;
+ xrect_return[0].y = xrect1->y;
+ xrect_return[0].width = xrect1->width;
+ xrect_return[0].height = xrect2->height + xrect2->y - xrect1->y;
return -10;
}
else if((enclosed[1][0]&&enclosed[1][2])&&
- (wgeom1->height==wgeom2->height)){
- *ngeoms=1;
- wgeom_return[0].x = wgeom1->x;
- wgeom_return[0].y = wgeom1->y;
- wgeom_return[0].width = wgeom2->width + wgeom2->x - wgeom1->x;
- wgeom_return[0].height = wgeom1->height;
+ (xrect1->height==xrect2->height)){
+ *nrects=1;
+ xrect_return[0].x = xrect1->x;
+ xrect_return[0].y = xrect1->y;
+ xrect_return[0].width = xrect2->width + xrect2->x - xrect1->x;
+ xrect_return[0].height = xrect1->height;
return -10;
}
else if((enclosed[1][3]&&enclosed[1][1])&&
- (wgeom1->height==wgeom2->height)){
- *ngeoms=1;
- wgeom_return[0].x = wgeom2->x;
- wgeom_return[0].y = wgeom2->y;
- wgeom_return[0].width = wgeom1->width + wgeom1->x - wgeom2->x;
- wgeom_return[0].height = wgeom2->height;
+ (xrect1->height==xrect2->height)){
+ *nrects=1;
+ xrect_return[0].x = xrect2->x;
+ xrect_return[0].y = xrect2->y;
+ xrect_return[0].width = xrect1->width + xrect1->x - xrect2->x;
+ xrect_return[0].height = xrect2->height;
return -10;
}
else if((enclosed[1][3]&&enclosed[1][2])&&
- (wgeom1->width==wgeom2->width)){
- *ngeoms=1;
- wgeom_return[0].x = wgeom2->x;
- wgeom_return[0].y = wgeom2->y;
- wgeom_return[0].width = wgeom2->width;
- wgeom_return[0].height = wgeom1->height + wgeom1->y - wgeom2->y;
+ (xrect1->width==xrect2->width)){
+ *nrects=1;
+ xrect_return[0].x = xrect2->x;
+ xrect_return[0].y = xrect2->y;
+ xrect_return[0].width = xrect2->width;
+ xrect_return[0].height = xrect1->height + xrect1->y - xrect2->y;
return -10;
}
//if control reaches here therewasn't a group and we go on
}
if(tot2==2){
- //break geom2
- wgeom_return[0].x = wgeom2->x;
- wgeom_return[0].y = wgeom2->y;
- wgeom_return[0].width = wgeom2->width;
- wgeom_return[0].height = wgeom2->height;
- *ngeoms=1;
+ //break rect2
+ xrect_return[0].x = xrect2->x;
+ xrect_return[0].y = xrect2->y;
+ xrect_return[0].width = xrect2->width;
+ xrect_return[0].height = xrect2->height;
+ *nrects=1;
if(enclosed[1][0]&&enclosed[1][1]){
- wgeom_return[0].y = y1[1];
- wgeom_return[0].height -= y1[1] - y2[0];
+ xrect_return[0].y = y1[1];
+ xrect_return[0].height -= y1[1] - y2[0];
}
else if(enclosed[1][0]&&enclosed[1][2]){
- wgeom_return[0].x = x1[1];
- wgeom_return[0].width -= x1[1] - x2[0];
+ xrect_return[0].x = x1[1];
+ xrect_return[0].width -= x1[1] - x2[0];
}
else if(enclosed[1][3]&&enclosed[1][1])
- wgeom_return[0].width -= x2[1] - x1[0];
+ xrect_return[0].width -= x2[1] - x1[0];
else if(enclosed[1][3]&&enclosed[1][2])
- wgeom_return[0].height -= y2[1] - y1[0];
+ xrect_return[0].height -= y2[1] - y1[0];
return -2;
}
else if(tot1==2){
//if the first one breaks(which is already inserted)
//then we reenter the part that was left and the one
//that was to be inserted
- wgeom_return[1].x = wgeom2->x;
- wgeom_return[1].y = wgeom2->y;
- wgeom_return[1].width = wgeom2->width;
- wgeom_return[1].height = wgeom2->height;
- wgeom_return[0].x = wgeom1->x;
- wgeom_return[0].y = wgeom1->y;
- wgeom_return[0].width = wgeom1->width;
- wgeom_return[0].height = wgeom1->height;
- *ngeoms=1;
+ xrect_return[1].x = xrect2->x;
+ xrect_return[1].y = xrect2->y;
+ xrect_return[1].width = xrect2->width;
+ xrect_return[1].height = xrect2->height;
+ xrect_return[0].x = xrect1->x;
+ xrect_return[0].y = xrect1->y;
+ xrect_return[0].width = xrect1->width;
+ xrect_return[0].height = xrect1->height;
+ *nrects=1;
if(enclosed[0][0]&&enclosed[0][1]){
- wgeom_return[0].y = y2[1];
- wgeom_return[0].height -= y2[1] - y1[0];
+ xrect_return[0].y = y2[1];
+ xrect_return[0].height -= y2[1] - y1[0];
}
else if(enclosed[0][0]&&enclosed[0][2]){
- wgeom_return[0].x = x2[1];
- wgeom_return[0].width -= x2[1] - x1[0];
+ xrect_return[0].x = x2[1];
+ xrect_return[0].width -= x2[1] - x1[0];
}
else if(enclosed[0][3]&&enclosed[0][1])
- wgeom_return[0].width -= x1[1] - x2[0];
+ xrect_return[0].width -= x1[1] - x2[0];
else if(enclosed[0][3]&&enclosed[0][2])
- wgeom_return[0].height -= y1[1] - y2[0];
+ xrect_return[0].height -= y1[1] - y2[0];
return -1;
}
else if(tot2==1){ //in which case there is also tot1==1
//but we rather not break that
- //break geom2 in two
- *ngeoms=2;
+ //break rect2 in two
+ *nrects=2;
if(enclosed[1][0]){
//first
- wgeom_return[0].x = x1[1];
- wgeom_return[0].y = y2[0];
- wgeom_return[0].width = wgeom2->width - x1[1] + x2[0];
- wgeom_return[0].height = wgeom2->height;
+ xrect_return[0].x = x1[1];
+ xrect_return[0].y = y2[0];
+ xrect_return[0].width = xrect2->width - x1[1] + x2[0];
+ xrect_return[0].height = xrect2->height;
//second
- wgeom_return[1].x = x2[0];
- wgeom_return[1].y = y1[1];
- wgeom_return[1].width = x1[1] - x2[0];
- wgeom_return[1].height = wgeom2->height - y1[1] + y2[0];
+ xrect_return[1].x = x2[0];
+ xrect_return[1].y = y1[1];
+ xrect_return[1].width = x1[1] - x2[0];
+ xrect_return[1].height = xrect2->height - y1[1] + y2[0];
}
else if(enclosed[1][1]){
//first
- wgeom_return[0].x = x2[0];
- wgeom_return[0].y = y2[0];
- wgeom_return[0].width = wgeom2->width - x2[1] + x1[0];
- wgeom_return[0].height = wgeom2->height;
+ xrect_return[0].x = x2[0];
+ xrect_return[0].y = y2[0];
+ xrect_return[0].width = xrect2->width - x2[1] + x1[0];
+ xrect_return[0].height = xrect2->height;
//second
- wgeom_return[1].x = x1[0];
- wgeom_return[1].y = y1[1];
- wgeom_return[1].width = x2[1] - x1[0];
- wgeom_return[1].height = wgeom2->height - y1[1] + y2[0];
+ xrect_return[1].x = x1[0];
+ xrect_return[1].y = y1[1];
+ xrect_return[1].width = x2[1] - x1[0];
+ xrect_return[1].height = xrect2->height - y1[1] + y2[0];
}
else if(enclosed[1][2]){
//first(same as [1][0])
- wgeom_return[0].x = x1[1];
- wgeom_return[0].y = y2[0];
- wgeom_return[0].width = wgeom2->width - x1[1] + x2[0];
- wgeom_return[0].height = wgeom2->height;
+ xrect_return[0].x = x1[1];
+ xrect_return[0].y = y2[0];
+ xrect_return[0].width = xrect2->width - x1[1] + x2[0];
+ xrect_return[0].height = xrect2->height;
//second
- wgeom_return[1].x = x2[0];
- wgeom_return[1].y = y2[0];
- wgeom_return[1].width = x1[1] - x2[0];
- wgeom_return[1].height = wgeom2->height - y2[1] + y1[0];
+ xrect_return[1].x = x2[0];
+ xrect_return[1].y = y2[0];
+ xrect_return[1].width = x1[1] - x2[0];
+ xrect_return[1].height = xrect2->height - y2[1] + y1[0];
}
else if(enclosed[1][3]){
//first(same as [1][1])
- wgeom_return[0].x = x2[0];
- wgeom_return[0].y = y2[0];
- wgeom_return[0].width = wgeom2->width - x2[1] + x1[0];
- wgeom_return[0].height = wgeom2->height;
+ xrect_return[0].x = x2[0];
+ xrect_return[0].y = y2[0];
+ xrect_return[0].width = xrect2->width - x2[1] + x1[0];
+ xrect_return[0].height = xrect2->height;
//second
- wgeom_return[1].x = x1[0];
- wgeom_return[1].y = y2[0];
- wgeom_return[1].width = x2[1] - x1[0];
- wgeom_return[1].height = wgeom2->height - y2[1] + y1[0];
+ xrect_return[1].x = x1[0];
+ xrect_return[1].y = y2[0];
+ xrect_return[1].width = x2[1] - x1[0];
+ xrect_return[1].height = xrect2->height - y2[1] + y1[0];
}
return -2;
}
else{//polygons collide but no point of one is in the other
- //so we just keep the two parts of geom2 that are outside geom1
+ //so we just keep the two parts of rect2 that are outside rect1
- //break geom2 in two
+ //break rect2 in two
//two cases:
- //geom2 crossing vertically geom1
- //and geom2 crossing horizontally geom1
+ //rect2 crossing vertically rect1
+ //and rect2 crossing horizontally rect1
//The proper one can be found by simply checking x,y positions
- *ngeoms=2;
- if(wgeom2->y<wgeom1->y){
+ *nrects=2;
+ if(xrect2->y<xrect1->y){
//common
- wgeom_return[0].x = wgeom_return[1].x = x2[0];
- wgeom_return[0].width = wgeom_return[1].width = wgeom2->width;
+ xrect_return[0].x = xrect_return[1].x = x2[0];
+ xrect_return[0].width = xrect_return[1].width = xrect2->width;
- wgeom_return[0].y = y2[0];
- wgeom_return[0].height = wgeom2->height - y2[1] + y1[0];
- wgeom_return[1].y = y1[1];
- wgeom_return[1].height = y2[1] - y1[1];
+ xrect_return[0].y = y2[0];
+ xrect_return[0].height = xrect2->height - y2[1] + y1[0];
+ xrect_return[1].y = y1[1];
+ xrect_return[1].height = y2[1] - y1[1];
}
else{
//common
- wgeom_return[0].y = wgeom_return[1].y = y2[0];
- wgeom_return[0].height = wgeom_return[1].height = wgeom2->height;
+ xrect_return[0].y = xrect_return[1].y = y2[0];
+ xrect_return[0].height = xrect_return[1].height = xrect2->height;
- wgeom_return[0].x = x2[0];
- wgeom_return[0].width = wgeom2->width - x2[1] + x1[0];
- wgeom_return[1].x = x1[1];
- wgeom_return[1].width = x2[1] - x1[1];
+ xrect_return[0].x = x2[0];
+ xrect_return[0].width = xrect2->width - x2[1] + x1[0];
+ xrect_return[1].x = x1[1];
+ xrect_return[1].width = x2[1] - x1[1];
}
return -2;
}
}
}
-int RectInsert(RectArea **root,WGeometry *wgeom){
+int RectInsert(RectArea **root,XRectangle *xrect){
int total_insertions=0;
RectArea *temp=NULL,*newnode=(RectArea *)malloc(sizeof(RectArea));
//align
//we do need to know boundaries
- wgeom->width+=(wgeom->width%2)|(wgeom->x%2);
- wgeom->height+=(wgeom->height%2)|(wgeom->y%2);
- wgeom->width+=(wgeom->width%2);
- wgeom->height+=(wgeom->height%2);
- wgeom->x-=wgeom->x%2;
- wgeom->y-=wgeom->y%2;
-// fprintf(stderr," %d %d %d %d\n",wgeom->x,
+ xrect->width+=(xrect->width%2)|(xrect->x%2);
+ xrect->height+=(xrect->height%2)|(xrect->y%2);
+ xrect->width+=(xrect->width%2);
+ xrect->height+=(xrect->height%2);
+ xrect->x-=xrect->x%2;
+ xrect->y-=xrect->y%2;
+// fprintf(stderr," %d %d %d %d\n",xrect->x,
- newnode->geom.x=wgeom->x;
- newnode->geom.y=wgeom->y;
- newnode->geom.width=wgeom->width;
- newnode->geom.height=wgeom->height;
+ newnode->rect.x=xrect->x;
+ newnode->rect.y=xrect->y;
+ newnode->rect.width=xrect->width;
+ newnode->rect.height=xrect->height;
newnode->prev=newnode->next=NULL;
if(*root==NULL){
*root=newnode;
total_insertions=1;
}
else{
- WGeometry wgeom_return[2];
+ XRectangle xrect_return[2];
- int ngeoms=0,insert_ok=1,i=0;
+ int nrects=0,insert_ok=1,i=0;
temp=*root;
while(insert_ok){ //if something is broken list does not procceed
//(except on -1 collres case)
- int collres = CollideRects(&temp->geom, wgeom, &wgeom_return[0], &ngeoms);
+ int collres = CollideRects(&temp->rect, xrect, &xrect_return[0], &nrects);
if((!collres))
insert_ok=1;
else{
- for(i=0;i<ngeoms;i++){
- wgeom_return[i].width += (wgeom_return[i].width % 2) |
- (wgeom_return[i].x % 2);
- wgeom_return[i].height += (wgeom_return[i].height % 2) |
- (wgeom_return[i].y % 2);
- wgeom_return[i].width += (wgeom_return[i].width % 2);
- wgeom_return[i].height += (wgeom_return[i].height % 2);
- wgeom_return[i].x -= wgeom_return[i].x % 2;
- wgeom_return[i].y -= wgeom_return[i].y % 2;
+ for(i=0;i<nrects;i++){
+ xrect_return[i].width += (xrect_return[i].width % 2) |
+ (xrect_return[i].x % 2);
+ xrect_return[i].height += (xrect_return[i].height % 2) |
+ (xrect_return[i].y % 2);
+ xrect_return[i].width += (xrect_return[i].width % 2);
+ xrect_return[i].height += (xrect_return[i].height % 2);
+ xrect_return[i].x -= xrect_return[i].x % 2;
+ xrect_return[i].y -= xrect_return[i].y % 2;
}
insert_ok=0;
switch(collres){
@@ -345,8 +345,8 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
free(temp);
- if((wgeom->width>0)&&(wgeom->height>0))
- total_insertions+=RectInsert(&temp1,wgeom);
+ if((xrect->width>0)&&(xrect->height>0))
+ total_insertions+=RectInsert(&temp1,xrect);
}
else{
temp->prev->next=newnode;
@@ -359,10 +359,10 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
if((*root)->next!=NULL){
(*root)=(*root)->next;
(*root)->prev=NULL;
- if((wgeom->width>0)&&(wgeom->height>0))
- total_insertions+=RectInsert(root,wgeom);
+ if((xrect->width>0)&&(xrect->height>0))
+ total_insertions+=RectInsert(root,xrect);
}
- else if((wgeom->width>0)&&(wgeom->height>0)){
+ else if((xrect->width>0)&&(xrect->height>0)){
*root=newnode;
total_insertions++;
}
@@ -379,12 +379,12 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
case -1://current node is broken and reinserted
//(in same pos)
//newnode is also reinserted
- if (wgeom_return[0].width > 0 &&
- wgeom_return[0].height > 0) {
- temp->geom.x = wgeom_return[0].x;
- temp->geom.y = wgeom_return[0].y;
- temp->geom.width = wgeom_return[0].width;
- temp->geom.height = wgeom_return[0].height;
+ if (xrect_return[0].width > 0 &&
+ xrect_return[0].height > 0) {
+ temp->rect.x = xrect_return[0].x;
+ temp->rect.y = xrect_return[0].y;
+ temp->rect.width = xrect_return[0].width;
+ temp->rect.height = xrect_return[0].height;
if(temp->next==NULL){
temp->next=newnode;
newnode->prev=temp;
@@ -412,49 +412,49 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
temp->next->prev=temp->prev;
temp->prev->next=temp->next;
total_insertions+=RectInsert(&temp->next,
- wgeom);
+ xrect);
}
free(temp);
}
break;
case -2://new is broken and reinserted
if(temp->next==NULL){
- total_insertions+=ngeoms;
- newnode->geom.x = wgeom_return[0].x;
- newnode->geom.y = wgeom_return[0].y;
- newnode->geom.width = wgeom_return[0].width;
- newnode->geom.height = wgeom_return[0].height;
+ total_insertions+=nrects;
+ newnode->rect.x = xrect_return[0].x;
+ newnode->rect.y = xrect_return[0].y;
+ newnode->rect.width = xrect_return[0].width;
+ newnode->rect.height = xrect_return[0].height;
temp->next=newnode;
newnode->prev=temp;
- if(ngeoms>1){
+ if(nrects>1){
RectArea *newnode1=
(RectArea *)malloc(sizeof(RectArea));
- newnode1->geom.x = wgeom_return[1].x;
- newnode1->geom.y = wgeom_return[1].y;
- newnode1->geom.width = wgeom_return[1].width;
- newnode1->geom.height = wgeom_return[1].height;
+ newnode1->rect.x = xrect_return[1].x;
+ newnode1->rect.y = xrect_return[1].y;
+ newnode1->rect.width = xrect_return[1].width;
+ newnode1->rect.height = xrect_return[1].height;
newnode->next=newnode1;
newnode1->prev=newnode;
newnode1->next=NULL;
}
}
else{
- for(i=0;i<ngeoms;i++){
- if(wgeom_return[i].width > 0 &&
- wgeom_return[i].height > 0)
+ for(i=0;i<nrects;i++){
+ if(xrect_return[i].width > 0 &&
+ xrect_return[i].height > 0)
total_insertions+=
- RectInsert(&temp->next, &wgeom_return[i]);
+ RectInsert(&temp->next, &xrect_return[i]);
}
}
break;
case -10://grouped
if(temp->prev==NULL){
if(temp->next==NULL){//empty list
- newnode->geom.x = wgeom_return[0].x;
- newnode->geom.y = wgeom_return[0].y;
- newnode->geom.width = wgeom_return[0].width;
- newnode->geom.height = wgeom_return[0].height;
+ newnode->rect.x = xrect_return[0].x;
+ newnode->rect.y = xrect_return[0].y;
+ newnode->rect.width = xrect_return[0].width;
+ newnode->rect.height = xrect_return[0].height;
*root=newnode;
free(temp);
@@ -464,17 +464,17 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
*root=temp->next;
(*root)->prev=NULL;
free(temp);
- if(wgeom_return[0].width > 0 &&
- wgeom_return[0].height > 0)
+ if(xrect_return[0].width > 0 &&
+ xrect_return[0].height > 0)
total_insertions+=
- RectInsert(root, &wgeom_return[0]);
+ RectInsert(root, &xrect_return[0]);
}
}
else if(temp->next==NULL){//last, enter anyway
- newnode->geom.x = wgeom_return[0].x;
- newnode->geom.y = wgeom_return[0].y;
- newnode->geom.width = wgeom_return[0].width;
- newnode->geom.height = wgeom_return[0].height;
+ newnode->rect.x = xrect_return[0].x;
+ newnode->rect.y = xrect_return[0].y;
+ newnode->rect.width = xrect_return[0].width;
+ newnode->rect.height = xrect_return[0].height;
temp->prev->next=newnode;
newnode->prev=temp->prev;
free(temp);
@@ -485,10 +485,10 @@ int RectInsert(RectArea **root,WGeometry *wgeom){
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
free(temp);
- if(wgeom_return[0].width > 0 &&
- wgeom_return[0].height > 0)
+ if(xrect_return[0].width > 0 &&
+ xrect_return[0].height > 0)
total_insertions+=
- RectInsert(&temp1, &wgeom_return[0]);
+ RectInsert(&temp1, &xrect_return[0]);
}
break;
}
© All Rights Reserved