Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: BUGFIX: cOsd::CanHandleAreas()



Hi,

Klaus Schmidinger wrote:

To have overlap detection work properly and to return reasonable error codes
to the user, CanHandleAreas() now first checks the alignment of all areas and
performs overlap detection afterwards.
I don't quite see what the advantage is in having an extra 'for' loop.
The error messages are still the same, aren't they?

Shouldn't

  for (int i = 0; i < NumAreas; i++) {
      if (Areas[i].x1 > Areas[i].x2 || Areas[i].y1 > Areas[i].y2 || Areas[i].x1 < 0 || Areas[i].y1 < 0)
         return oeWrongAlignment;
      for (int j = i + 1; j < NumAreas; j++) {
          if (Areas[i].Intersects(Areas[j]))
             return oeAreasOverlap;
          }
      }

do just the same?
Well, the difference is that your version might return early with oeAreasOverlap without having checked Area[j] for correct alignment first.

I think, it's better to first check all areas for alignment and then for overlapping as the latter "requires" the former.

Bye.
--
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl@gmx.de




Home | Main Index | Thread Index