| |
| /* |
| * Copyright 2013 Google, Inc. |
| * |
| * 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 "SkTypes.h" |
| |
| // These functions dump 0, 1, and 2d arrays of data in a format that's |
| // compatible with Mathematica for quick visualization |
| |
| |
| template<class T> |
| inline void SkDebugDumpMathematica( const T val ) { |
| SkDEBUGFAIL("Need to specialize SkDebugDumpMathematica for your type, sorry."); |
| } |
| |
| template<class T> |
| inline void SkDebugDumpMathematica(const char *name, const T *array, int size) { |
| SkDebugf(name); |
| SkDebugf(" = {"); |
| for (int i=0 ; i < size ; i++) { |
| SkDebugDumpMathematica<T>(array[i]); |
| if (i != size-1) SkDebugf(", "); |
| } |
| SkDebugf("};\n"); |
| } |
| |
| template<class T> |
| inline void SkDebugDumpMathematica(const char *name, const T *array, int width, int height) { |
| SkDebugf(name); |
| SkDebugf(" = {\n"); |
| for (int i=0 ; i < height ; i++) { |
| SkDebugf(" {"); |
| for (int j = 0 ; j < width ; j++) { |
| SkDebugDumpMathematica<T>(array[i*width + j]); |
| if (j != width-1) { |
| SkDebugf(", "); |
| } |
| } |
| SkDebugf("}"); |
| if (i != height-1) { |
| SkDebugf(", \n"); |
| } |
| } |
| SkDebugf("\n};\n"); |
| } |
| |
| template<class T> |
| inline void SkDebugDumpMathematica( const char *name, const T val ) { |
| SkDebugf(name); |
| SkDebugf(" = "); |
| SkDebugDumpMathematica<T>(val); |
| SkDebugf(";\n"); |
| } |
| |
| template<> |
| inline void SkDebugDumpMathematica<uint8_t>( const uint8_t val ) { |
| SkDebugf("%u", val); |
| } |
| |
| template<> |
| inline void SkDebugDumpMathematica<unsigned int>( const unsigned int val ) { |
| SkDebugf("%u", val); |
| } |
| |
| template<> |
| inline void SkDebugDumpMathematica<int>( const int val ) { |
| SkDebugf("%d", val); |
| } |
| |
| template<> |
| inline void SkDebugDumpMathematica<size_t>( const size_t val ) { |
| SkDebugf("%u", val); |
| } |
| |
| template<> |
| void SkDebugDumpMathematica<const char *>( const char * val ) { |
| SkDebugf("%s", val); |
| } |
| |
| template<> |
| inline void SkDebugDumpMathematica<float>( float val ) { |
| SkDebugf("%f", val); |
| } |
| |
| |
| #endif |