本文整理汇总了C++中SkBitmap::flatten方法的典型用法代码示例。如果您正苦于以下问题:C++ SkBitmap::flatten方法的具体用法?C++ SkBitmap::flatten怎么用?C++ SkBitmap::flatten使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkBitmap
的用法示例。
在下文中一共展示了SkBitmap::flatten方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeBitmap
void SkOrderedWriteBuffer::writeBitmap(const SkBitmap& bitmap) {
bool encoded = false;
if (fBitmapEncoder != NULL) {
SkDynamicMemoryWStream pngStream;
if (fBitmapEncoder(&pngStream, bitmap)) {
encoded = true;
if (encoded) {
uint32_t offset = fWriter.bytesWritten();
// Write the length to indicate that the bitmap was encoded successfully.
size_t length = pngStream.getOffset();
this->writeUInt(length);
// Now write the stream.
if (pngStream.read(fWriter.reservePad(length), 0, length)) {
// Write the width and height in case the reader does not have a decoder.
this->writeInt(bitmap.width());
this->writeInt(bitmap.height());
} else {
// Writing the stream failed, so go back to original state to store another way.
fWriter.rewindToOffset(offset);
encoded = false;
}
}
}
}
if (!encoded) {
// Bitmap was not encoded. Record a zero, implying that the reader need not decode.
this->writeUInt(0);
if (fBitmapHeap) {
int32_t slot = fBitmapHeap->insert(bitmap);
fWriter.write32(slot);
// crbug.com/155875
// The generation ID is not required information. We write it to prevent collisions
// in SkFlatDictionary. It is possible to get a collision when a previously
// unflattened (i.e. stale) instance of a similar flattenable is in the dictionary
// and the instance currently being written is re-using the same slot from the
// bitmap heap.
fWriter.write32(bitmap.getGenerationID());
} else {
bitmap.flatten(*this);
}
}
}
示例2: Flatten
static void Flatten(SkWriteBuffer& buffer, const SkBitmap& bitmap) {
bitmap.flatten(buffer);
}