blob: bde47e71eba07853b720d75be2ce6bae779d5cf8 [file] [log] [blame]
reed@google.com6997ebb2012-07-30 19:50:31 +00001/*
2 * Copyright 2012 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
reed@google.com889b09e2012-07-27 21:10:42 +00008#include "SkImagePriv.h"
mike@reedtribe.org70e35902012-07-29 20:38:16 +00009#include "SkCanvas.h"
10#include "SkPicture.h"
reed@google.com889b09e2012-07-27 21:10:42 +000011
reed@google.com97af1a62012-08-28 12:19:02 +000012SkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef) {
commit-bot@chromium.org466f5f32014-05-27 21:30:37 +000013 const SkImageInfo info = bm.info();
14 if (kUnknown_SkColorType == info.colorType()) {
reed@google.com889b09e2012-07-27 21:10:42 +000015 return NULL;
16 }
17
18 SkImage* image = NULL;
reed@google.com97af1a62012-08-28 12:19:02 +000019 if (canSharePixelRef || bm.isImmutable()) {
commit-bot@chromium.orge13af712014-01-13 20:39:14 +000020 image = SkNewImageFromPixelRef(info, bm.pixelRef(), bm.rowBytes());
reed@google.com889b09e2012-07-27 21:10:42 +000021 } else {
22 bm.lockPixels();
mike@reedtribe.org70e35902012-07-29 20:38:16 +000023 if (bm.getPixels()) {
mike@reedtribe.orgb9476252012-11-15 02:37:45 +000024 image = SkImage::NewRasterCopy(info, bm.getPixels(), bm.rowBytes());
reed@google.com889b09e2012-07-27 21:10:42 +000025 }
26 bm.unlockPixels();
27 }
28 return image;
29}