当前位置: 首页>>代码示例>>C++>>正文


C++ Sk64类代码示例

本文整理汇总了C++中Sk64的典型用法代码示例。如果您正苦于以下问题:C++ Sk64类的具体用法?C++ Sk64怎么用?C++ Sk64使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Sk64类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getLengthSquared

// Returns the square of the Euclidian distance to (dx,dy) in *result.
static inline void getLengthSquared(SkScalar dx, SkScalar dy, Sk64 *result) {
    Sk64    dySqr;

    result->setMul(dx, dx);
    dySqr.setMul(dy, dy);
    result->add(dySqr);
}
开发者ID:jamorton,项目名称:blix,代码行数:8,代码来源:SkPoint.cpp

示例2: safeMul32

/** returns the product if it is positive and fits in 31 bits. Otherwise this
    returns 0.
 */
static int32_t safeMul32(int32_t a, int32_t b) {
    Sk64 size;
    size.setMul(a, b);
    if (size.is32() && size.isPos()) {
        return size.get32();
    }
    return 0;
}
开发者ID:,项目名称:,代码行数:11,代码来源:

示例3: GetMSecs

SkMSec SkTime::GetMSecs()
{
    UnsignedWide    wide;
    Sk64            s;

    ::Microseconds(&wide);
    s.set(wide.hi, wide.lo);
    s.div(1000, Sk64::kRound_DivOption);
    return s.get32();
}
开发者ID:bluebellzhy,项目名称:chromium,代码行数:10,代码来源:SkTime.cpp

示例4: isLengthNearlyZero

// Calculates the square of the Euclidian distance to (dx,dy) and stores it in
// *lengthSquared.  Returns true if the distance is judged to be "nearly zero".
//
// This logic is encapsulated in a helper method to make it explicit that we
// always perform this check in the same manner, to avoid inconsistencies
// (see http://code.google.com/p/skia/issues/detail?id=560 ).
static inline bool isLengthNearlyZero(SkScalar dx, SkScalar dy,
                                      Sk64 *lengthSquared) {
    Sk64 tolSqr;
    getLengthSquared(dx, dy, lengthSquared);

    // we want nearlyzero^2, but to compute it fast we want to just do a
    // 32bit multiply, so we require that it not exceed 31bits. That is true
    // if nearlyzero is <= 0xB504, which should be trivial, since usually
    // nearlyzero is a very small fixed-point value.
    SkASSERT(SK_ScalarNearlyZero <= 0xB504);

    tolSqr.set(0, SK_ScalarNearlyZero * SK_ScalarNearlyZero);
    return *lengthSquared <= tolSqr;
}
开发者ID:jamorton,项目名称:blix,代码行数:20,代码来源:SkPoint.cpp

示例5: Alloc

 static MipMap* Alloc(int levelCount, size_t pixelSize) {
     if (levelCount < 0) {
         return NULL;
     }
     Sk64 size;
     size.setMul(levelCount + 1, sizeof(MipLevel));
     size.add(sizeof(MipMap));
     size.add(pixelSize);
     if (!isPos32Bits(size)) {
         return NULL;
     }
     MipMap* mm = (MipMap*)sk_malloc_throw(size.get32());
     mm->fRefCnt = 1;
     mm->fLevelCount = levelCount;
     return mm;
 }
开发者ID:Beifeng,项目名称:WTL-DUI,代码行数:16,代码来源:SkBitmap.cpp

示例6: NewAllocate

SkMallocPixelRef* SkMallocPixelRef::NewAllocate(const SkImageInfo& info,
                                                size_t requestedRowBytes,
                                                SkColorTable* ctable) {
    if (!is_valid(info, ctable)) {
        return NULL;
    }

    int32_t minRB = info.minRowBytes();
    if (minRB < 0) {
        return NULL;    // allocation will be too large
    }
    if (requestedRowBytes > 0 && (int32_t)requestedRowBytes < minRB) {
        return NULL;    // cannot meet requested rowbytes
    }

    int32_t rowBytes;
    if (requestedRowBytes) {
        rowBytes = requestedRowBytes;
    } else {
        rowBytes = minRB;
    }

    Sk64 bigSize;
    bigSize.setMul(info.fHeight, rowBytes);
    if (!bigSize.is32()) {
        return NULL;
    }

    size_t size = bigSize.get32();
    void* addr = sk_malloc_flags(size, 0);
    if (NULL == addr) {
        return NULL;
    }

    return SkNEW_ARGS(SkMallocPixelRef, (info, addr, rowBytes, ctable, true));
}
开发者ID:CriGio,项目名称:platform_external_skia,代码行数:36,代码来源:SkMallocPixelRef.cpp

示例7: SkFindUnitQuadRoots

/** Trim A/B/C down so that they are all <= 32bits
    and then call SkFindUnitQuadRoots()
*/
static int Sk64FindFixedQuadRoots(const Sk64& A, const Sk64& B, const Sk64& C, SkFixed roots[2])
{
    int na = A.shiftToMake32();
    int nb = B.shiftToMake32();
    int nc = C.shiftToMake32();

    int shift = SkMax32(na, SkMax32(nb, nc));
    SkASSERT(shift >= 0);

    return SkFindUnitQuadRoots(A.getShiftRight(shift), B.getShiftRight(shift), C.getShiftRight(shift), roots);
}
开发者ID:AOSP-JF-MM,项目名称:platform_external_skia,代码行数:14,代码来源:SkGeometry.cpp

示例8: isPos32Bits

static bool isPos32Bits(const Sk64& value) {
    return !value.isNeg() && value.is32();
}
开发者ID:Beifeng,项目名称:WTL-DUI,代码行数:3,代码来源:SkBitmap.cpp

示例9: Length

SkScalar SkPoint::Length(SkScalar dx, SkScalar dy) {
    Sk64    tmp;
    getLengthSquared(dx, dy, &tmp);
    return tmp.getSqrt();
}
开发者ID:jamorton,项目名称:blix,代码行数:5,代码来源:SkPoint.cpp


注:本文中的Sk64类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。