14428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com/* 24428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com * Copyright 2013 Google Inc. 34428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com * 44428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com * Use of this source code is governed by a BSD-style license that can be 54428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com * found in the LICENSE file. 64428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com */ 74428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com 84428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com#include "SkBitmap.h" 94428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com 104428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com#include "Test.h" 114428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com 124856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.comstatic void test_bigwidth(skiatest::Reporter* reporter) { 134856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com SkBitmap bm; 144856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com int width = 1 << 29; // *4 will be the high-bit of 32bit int 154856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com 16a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org SkImageInfo info = SkImageInfo::MakeA8(width, 1); 17a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org REPORTER_ASSERT(reporter, bm.setInfo(info)); 18fa9e5fa42a555712fb7a29d08d2ae2bdef0ed68ecommit-bot@chromium.org info.fColorType = kRGB_565_SkColorType; 19a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org REPORTER_ASSERT(reporter, bm.setInfo(info)); 20f5e1f63461d0a4dcb4bd5d0388ec6d392b97e5f0skia.committer@gmail.com 214856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com // for a 4-byte config, this width will compute a rowbytes of 0x80000000, 224856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com // which does not fit in a int32_t. setConfig should detect this, and fail. 234856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com 244856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com // TODO: perhaps skia can relax this, and only require that rowBytes fit 254856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com // in a uint32_t (or larger), but for now this is the constraint. 264856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com 2728fcae2ec77eb16a79e155f8d788b20457f1c951commit-bot@chromium.org info.fColorType = kN32_SkColorType; 28a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org REPORTER_ASSERT(reporter, !bm.setInfo(info)); 294856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com} 304856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com 314428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com/** 324428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com * This test contains basic sanity checks concerning bitmaps. 334428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com */ 344428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.comDEF_TEST(Bitmap, reporter) { 354428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com // Zero-sized bitmaps are allowed 364428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com for (int width = 0; width < 2; ++width) { 374428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com for (int height = 0; height < 2; ++height) { 384428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com SkBitmap bm; 39a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org bool setConf = bm.setInfo(SkImageInfo::MakeN32Premul(width, height)); 404428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com REPORTER_ASSERT(reporter, setConf); 414428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com if (setConf) { 424428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com REPORTER_ASSERT(reporter, bm.allocPixels(NULL)); 434428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com } 442af6c1204de73a2513189007b9623fec0e296dc2halcanary@google.com REPORTER_ASSERT(reporter, SkToBool(width & height) != bm.empty()); 454428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com } 464428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com } 47f5e1f63461d0a4dcb4bd5d0388ec6d392b97e5f0skia.committer@gmail.com 484856964eae9cdb779baa08ef9e5646ccb9a3140dreed@google.com test_bigwidth(reporter); 494428734907480cdb4ccecb47152d7be8cd1aec32halcanary@google.com} 50