| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkBuffer.h" | 8 #include "SkBuffer.h" |
| 9 #include "SkCubicClipper.h" | 9 #include "SkCubicClipper.h" |
| 10 #include "SkErrorInternals.h" | 10 #include "SkErrorInternals.h" |
| (...skipping 1947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1958 /////////////////////////////////////////////////////////////////////////////// | 1958 /////////////////////////////////////////////////////////////////////////////// |
| 1959 | 1959 |
| 1960 /* | 1960 /* |
| 1961 Format in compressed buffer: [ptCount, verbCount, pts[], verbs[]] | 1961 Format in compressed buffer: [ptCount, verbCount, pts[], verbs[]] |
| 1962 */ | 1962 */ |
| 1963 | 1963 |
| 1964 size_t SkPath::writeToMemory(void* storage) const { | 1964 size_t SkPath::writeToMemory(void* storage) const { |
| 1965 SkDEBUGCODE(this->validate();) | 1965 SkDEBUGCODE(this->validate();) |
| 1966 | 1966 |
| 1967 if (nullptr == storage) { | 1967 if (nullptr == storage) { |
| 1968 const int byteCount = sizeof(int32_t) + fPathRef->writeSize(); | 1968 const int byteCount = sizeof(int32_t) * 2 + fPathRef->writeSize(); |
| 1969 return SkAlign4(byteCount); | 1969 return SkAlign4(byteCount); |
| 1970 } | 1970 } |
| 1971 | 1971 |
| 1972 SkWBuffer buffer(storage); | 1972 SkWBuffer buffer(storage); |
| 1973 | 1973 |
| 1974 int32_t packed = (fConvexity << kConvexity_SerializationShift) | | 1974 int32_t packed = (fConvexity << kConvexity_SerializationShift) | |
| 1975 (fFillType << kFillType_SerializationShift) | | 1975 (fFillType << kFillType_SerializationShift) | |
| 1976 (fFirstDirection << kDirection_SerializationShift) | | 1976 (fFirstDirection << kDirection_SerializationShift) | |
| 1977 (fIsVolatile << kIsVolatile_SerializationShift) | | 1977 (fIsVolatile << kIsVolatile_SerializationShift) | |
| 1978 kCurrent_Version; | 1978 kCurrent_Version; |
| 1979 | 1979 |
| 1980 buffer.write32(packed); | 1980 buffer.write32(packed); |
| 1981 buffer.write32(fLastMoveToIndex); |
| 1981 | 1982 |
| 1982 fPathRef->writeToBuffer(&buffer); | 1983 fPathRef->writeToBuffer(&buffer); |
| 1983 | 1984 |
| 1984 buffer.padToAlign4(); | 1985 buffer.padToAlign4(); |
| 1985 return buffer.pos(); | 1986 return buffer.pos(); |
| 1986 } | 1987 } |
| 1987 | 1988 |
| 1988 size_t SkPath::readFromMemory(const void* storage, size_t length) { | 1989 size_t SkPath::readFromMemory(const void* storage, size_t length) { |
| 1989 SkRBufferWithSizeCheck buffer(storage, length); | 1990 SkRBufferWithSizeCheck buffer(storage, length); |
| 1990 | 1991 |
| 1991 int32_t packed; | 1992 int32_t packed; |
| 1992 if (!buffer.readS32(&packed)) { | 1993 if (!buffer.readS32(&packed)) { |
| 1993 return 0; | 1994 return 0; |
| 1994 } | 1995 } |
| 1995 | 1996 |
| 1996 unsigned version = packed & 0xFF; | 1997 unsigned version = packed & 0xFF; |
| 1998 if (version >= kPathPrivLastMoveToIndex_Version && !buffer.readS32(&fLastMov
eToIndex)) { |
| 1999 return 0; |
| 2000 } |
| 1997 | 2001 |
| 1998 fConvexity = (packed >> kConvexity_SerializationShift) & 0xFF; | 2002 fConvexity = (packed >> kConvexity_SerializationShift) & 0xFF; |
| 1999 fFillType = (packed >> kFillType_SerializationShift) & 0xFF; | 2003 fFillType = (packed >> kFillType_SerializationShift) & 0xFF; |
| 2000 uint8_t dir = (packed >> kDirection_SerializationShift) & 0x3; | 2004 uint8_t dir = (packed >> kDirection_SerializationShift) & 0x3; |
| 2001 fIsVolatile = (packed >> kIsVolatile_SerializationShift) & 0x1; | 2005 fIsVolatile = (packed >> kIsVolatile_SerializationShift) & 0x1; |
| 2002 SkPathRef* pathRef = SkPathRef::CreateFromBuffer(&buffer); | 2006 SkPathRef* pathRef = SkPathRef::CreateFromBuffer(&buffer); |
| 2003 if (!pathRef) { | 2007 if (!pathRef) { |
| 2004 return 0; | 2008 return 0; |
| 2005 } | 2009 } |
| 2006 | 2010 |
| (...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3175 } | 3179 } |
| 3176 } while (!done); | 3180 } while (!done); |
| 3177 return SkToBool(tangents.count()) ^ isInverse; | 3181 return SkToBool(tangents.count()) ^ isInverse; |
| 3178 } | 3182 } |
| 3179 | 3183 |
| 3180 int SkPath::ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPo
int& p2, | 3184 int SkPath::ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPo
int& p2, |
| 3181 SkScalar w, SkPoint pts[], int pow2) { | 3185 SkScalar w, SkPoint pts[], int pow2) { |
| 3182 const SkConic conic(p0, p1, p2, w); | 3186 const SkConic conic(p0, p1, p2, w); |
| 3183 return conic.chopIntoQuadsPOW2(pts, pow2); | 3187 return conic.chopIntoQuadsPOW2(pts, pow2); |
| 3184 } | 3188 } |
| OLD | NEW |