SkMSec SkTime::GetMSecs() { UnsignedWide wide; Sk64 s; ::Microseconds(&wide); s.set(wide.hi, wide.lo); s.div(1000, Sk64::kRound_DivOption); return s.get32(); }
// 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; }