blob: a32b2e48bfbb9cf15182c475f217275b64271ba0 [file] [log] [blame]
/*
* Copyright 2022 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkDebugUtils_DEFINED
#define SkDebugUtils_DEFINED
#include "include/core/SkTileMode.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkDebug.h"
#include <array>
#include <cstdint>
static constexpr const char* SkTileModeToStr(SkTileMode tm) {
switch (tm) {
case SkTileMode::kClamp: return "Clamp";
case SkTileMode::kRepeat: return "Repeat";
case SkTileMode::kMirror: return "Mirror";
case SkTileMode::kDecal: return "Decal";
}
SkUNREACHABLE;
}
#if defined(SK_DEBUG)
inline void SkDumpBuffer(uint8_t const* const buffer, int w, int h, int rowBytes,
bool dumpActualValues = false) {
SkASSERT(buffer);
static constexpr char shades[] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
for (int y = 0; y < h; ++y) {
for (int x = 0; x < w; ++x) {
uint8_t pixelValue = buffer[y * rowBytes + x];
if (dumpActualValues) {
SkDebugf("%u\t", pixelValue);
} else {
int idx = static_cast<int>(pixelValue * std::size(shades) / 256);
SkASSERT(idx >= 0 && idx < (int)std::size(shades));
SkDebugf("%c", shades[idx]);
}
}
SkDebugf("\n");
}
}
#else
inline void SkDumpBuffer(uint8_t*, int, int, int) {}
#endif
#endif // SkDebugUtils_DEFINED