/* * Copyright 2007 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file.
*/
/** 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) {
int64_t size = sk_64_mul(a, b); if (size > 0 && SkTFitsIn<int32_t>(size)) { return size;
} return 0;
}
/** We explicitly use this allocator for SkBimap pixels, so that we can freely assign memory allocated by one class to the other.
*/
uint8_t* SkMaskBuilder::AllocImage(size_t size, AllocType at) {
size_t aligned_size = SkSafeMath::Align4(size); unsigned flags = SK_MALLOC_THROW; if (at == kZeroInit_Alloc) {
flags |= SK_MALLOC_ZERO_INITIALIZE;
} returnstatic_cast<uint8_t*>(sk_malloc_flags(aligned_size, flags));
}
/** We explicitly use this allocator for SkBimap pixels, so that we can freely assign memory allocated by one class to the other.
*/ void SkMaskBuilder::FreeImage(void* image) {
sk_free(image);
}
SkMaskBuilder SkMaskBuilder::PrepareDestination(int radiusX, int radiusY, const SkMask& src) {
SkSafeMath safe;
// We can only deal with masks that fit in INT_MAX and sides that fit in int. if (!SkTFitsIn<int>(dstW) || !SkTFitsIn<int>(dstH) || toAlloc > INT_MAX || !safe) {
dst.bounds().setEmpty();
dst.rowBytes() = 0; return dst;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.