daemon03's picture
Upload 27 files
7c6501b verified
#include "union.h"
void unionOfImages(qtNode *t1, qtNode *t2, qtNode **res)
{
(*res) = malloc(sizeof(qtNode));
if (t1->topLeft != NULL && t2->topLeft != NULL)
{
unionOfImages(t1->topLeft, t2->topLeft, &(*res)->topLeft);
unionOfImages(t1->topRight, t2->topRight, &(*res)->topRight);
unionOfImages(t1->bottomLeft, t2->bottomLeft, &(*res)->bottomLeft);
unionOfImages(t1->bottomRight, t2->bottomRight, &(*res)->bottomRight);
}
else
{
if (t1->topLeft == NULL && t2->topLeft != NULL)
{
unionOfImages(t1, t2->topLeft, (&(*res)->topLeft));
unionOfImages(t1, t2->topRight, &(*res)->topRight);
unionOfImages(t1, t2->bottomLeft, &(*res)->bottomLeft);
unionOfImages(t1, t2->bottomRight, &(*res)->bottomRight);
}
else
{
if (t1->topLeft != NULL && t2->topLeft == NULL)
{
unionOfImages(t1->topLeft, t2, &(*res)->topLeft);
unionOfImages(t1->topRight, t2, &(*res)->topRight);
unionOfImages(t1->bottomLeft, t2, &(*res)->bottomLeft);
unionOfImages(t1->bottomRight, t2, &(*res)->bottomRight);
}
else
{
(*res)->topRight = NULL;
(*res)->topLeft = NULL;
(*res)->bottomLeft = NULL;
(*res)->bottomRight = NULL;
}
}
}
(*res)->area = min(t1->area, t2->area);
(*res)->p.blue = (t1->p.blue + t2->p.blue) / 2;
(*res)->p.red = (t1->p.red + t2->p.red) / 2;
(*res)->p.green = (t1->p.green + t2->p.green) / 2;
return;
}