本文整理汇总了C++中Matrix2d::isIdentity方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix2d::isIdentity方法的具体用法?C++ Matrix2d::isIdentity怎么用?C++ Matrix2d::isIdentity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix2d
的用法示例。
在下文中一共展示了Matrix2d::isIdentity方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: drawPath_
bool GiGraphics::drawPath_(const GiContext* ctx, const MgPath& path, bool fill, const Matrix2d& matD)
{
int n = path.getCount();
if (n == 0 || isStopping())
return false;
const Point2d* pts = path.getPoints();
const char* types = path.getTypes();
Point2d ends, cp1, cp2;
bool matsame = matD.isIdentity();
rawBeginPath();
for (int i = 0; i < n; i++) {
switch (types[i] & ~kMgCloseFigure) {
case kMgMoveTo:
ends = matsame ? pts[i] : (pts[i] * matD);
rawMoveTo(ends.x, ends.y);
break;
case kMgLineTo:
ends = matsame ? pts[i] : (pts[i] * matD);
rawLineTo(ends.x, ends.y);
break;
case kMgBezierTo:
if (i + 2 >= n)
return false;
cp1 = matsame ? pts[i] : (pts[i] * matD);
cp2 = matsame ? pts[i+1] : (pts[i+1] * matD);
ends = matsame ? pts[i+2] : (pts[i+2] * matD);
rawBezierTo(cp1.x, cp1.y, cp2.x, cp2.y, ends.x, ends.y);
i += 2;
break;
case kMgQuadTo:
if (i + 1 >= n)
return false;
cp1 = matsame ? pts[i] : (pts[i] * matD);
ends = matsame ? pts[i+1] : (pts[i+1] * matD);
rawQuadTo(cp1.x, cp1.y, ends.x, ends.y);
i++;
break;
default:
return false;
}
if (types[i] & kMgCloseFigure)
rawClosePath();
}
return rawEndPath(ctx, fill);
}