1/* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "SkBitmapSourceDeserializer.h" 9 10#include "SkBitmap.h" 11#include "SkFilterQuality.h" 12#include "SkImage.h" 13#include "SkImageSource.h" 14#include "SkReadBuffer.h" 15 16SkFlattenable* SkBitmapSourceDeserializer::CreateProc(SkReadBuffer& buffer) { 17 SkFilterQuality filterQuality; 18 if (buffer.isVersionLT(SkReadBuffer::kBitmapSourceFilterQuality_Version)) { 19 filterQuality = kHigh_SkFilterQuality; 20 } else { 21 filterQuality = (SkFilterQuality)buffer.readInt(); 22 } 23 SkRect src, dst; 24 buffer.readRect(&src); 25 buffer.readRect(&dst); 26 SkBitmap bitmap; 27 if (!buffer.readBitmap(&bitmap)) { 28 return nullptr; 29 } 30 bitmap.setImmutable(); 31 32 SkAutoTUnref<SkImage> image(SkImage::NewFromBitmap(bitmap)); 33 return SkImageSource::Create(image, src, dst, filterQuality); 34} 35