16997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com/* 26997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com * Copyright 2012 Google Inc. 36997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com * 46997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com * Use of this source code is governed by a BSD-style license that can be 56997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com * found in the LICENSE file. 66997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com */ 76997ebbe5cf06c938cc893e1d0217dc4048edf82reed@google.com 8889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com#include "SkImagePriv.h" 970e359055240d0de93da4ba71bf5833164fb394cmike@reedtribe.org#include "SkCanvas.h" 1070e359055240d0de93da4ba71bf5833164fb394cmike@reedtribe.org#include "SkPicture.h" 11889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com 1297af1a64ae6bdddd346d8babfd9f188279dd6644reed@google.comSkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef) { 13466f5f3e44e703ca58b43ac1c4ac3bfa0e1ff024commit-bot@chromium.org const SkImageInfo info = bm.info(); 14466f5f3e44e703ca58b43ac1c4ac3bfa0e1ff024commit-bot@chromium.org if (kUnknown_SkColorType == info.colorType()) { 15889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com return NULL; 16889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com } 17889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com 18889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com SkImage* image = NULL; 1997af1a64ae6bdddd346d8babfd9f188279dd6644reed@google.com if (canSharePixelRef || bm.isImmutable()) { 20e13af711d4ff9031c9ed3054a4c33a56a0c62e1fcommit-bot@chromium.org image = SkNewImageFromPixelRef(info, bm.pixelRef(), bm.rowBytes()); 21889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com } else { 22889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com bm.lockPixels(); 2370e359055240d0de93da4ba71bf5833164fb394cmike@reedtribe.org if (bm.getPixels()) { 24b947625800a26194fcf63d7b57dadb1a63677f6amike@reedtribe.org image = SkImage::NewRasterCopy(info, bm.getPixels(), bm.rowBytes()); 25889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com } 26889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com bm.unlockPixels(); 27889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com } 28889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com return image; 29889b09edfeb5f461ca283dfd08ee6b23560a7859reed@google.com} 30