Fix range comparision operators implementation

This commit is contained in:
Behdad Esfahbod 2017-09-15 14:26:17 -04:00
parent 5bbdffd2c2
commit a79f367c3f
1 changed files with 6 additions and 7 deletions

View File

@ -96,9 +96,6 @@ FcRangePromote (double v, FcValuePromotionBuffer *vbuf)
FcBool
FcRangeIsInRange (const FcRange *a, const FcRange *b)
{
if (!a || !b)
return FcFalse;
return a->begin >= b->begin && a->end <= b->end;
}
@ -107,20 +104,22 @@ FcRangeCompare (FcOp op, const FcRange *a, const FcRange *b)
{
switch ((int) op) {
case FcOpEqual:
return a->begin == b->begin && a->end == b->end;
case FcOpContains:
case FcOpListing:
return FcRangeIsInRange (a, b);
case FcOpNotEqual:
return a->begin != b->begin || a->end != b->end;
case FcOpNotContains:
return !FcRangeIsInRange (a, b);
case FcOpLess:
return a->begin < b->begin;
return a->end < b->begin;
case FcOpLessEqual:
return a->begin <= b->begin;
return a->end <= b->begin;
case FcOpMore:
return a->end > b->end;
return a->begin > b->end;
case FcOpMoreEqual:
return a->end >= b->end;
return a->begin >= b->end;
default:
break;
}