Exemplo n.º 1
0
int SkChopCubicAtInflections(const SkPoint src[], SkPoint dst[10]) {
    SkScalar    tValues[2];
    int         count = SkFindCubicInflections(src, tValues);

    if (dst) {
        if (count == 0) {
            memcpy(dst, src, 4 * sizeof(SkPoint));
        } else {
            SkChopCubicAt(src, dst, tValues, count);
        }
    }
    return count + 1;
}
Exemplo n.º 2
0
static void oneOff(skiatest::Reporter* reporter, size_t x) {
    const SkDCubic& cubic = locals[x];
    const SkPoint skcubic[4] = {
        {static_cast<float>(cubic[0].fX), static_cast<float>(cubic[0].fY)},
        {static_cast<float>(cubic[1].fX), static_cast<float>(cubic[1].fY)},
        {static_cast<float>(cubic[2].fX), static_cast<float>(cubic[2].fY)},
        {static_cast<float>(cubic[3].fX), static_cast<float>(cubic[3].fY)}
    };
    SkScalar skinflect[2];
    int skin = SkFindCubicInflections(skcubic, skinflect);
    if (false) SkDebugf("%s %d %1.9g\n", __FUNCTION__, skin, skinflect[0]);
    SkTDArray<SkDQuad> quads;
    double precision = cubic.calcPrecision();
    CubicToQuads(cubic, precision, quads);
    if (false) SkDebugf("%s quads=%d\n", __FUNCTION__, quads.count());
}