1 #include "MTLUtils.h"
   2 
   3 #include <jni.h>
   4 #include <simd/simd.h>
   5 #include "common.h"
   6 #include "Trace.h"
   7 
   8 extern void J2dTraceImpl(int level, jboolean cr, const char *string, ...);
   9 void J2dTraceTraceVector(simd_float4 pt) {
  10     J2dTraceImpl(J2D_TRACE_VERBOSE, JNI_FALSE, "[%lf %lf %lf %lf]", pt.x, pt.y, pt.z, pt.w);
  11 }
  12 
  13 void checkTransform(float * position, simd_float4x4 transform4x4) {
  14     J2dTraceImpl(J2D_TRACE_VERBOSE, JNI_FALSE, "check transform: ");
  15 
  16     simd_float4 fpt = simd_make_float4(position[0], position[1], position[2], 1.f);
  17     simd_float4 fpt_trans = simd_mul(transform4x4, fpt);
  18     J2dTraceTraceVector(fpt);
  19     J2dTraceImpl(J2D_TRACE_VERBOSE, JNI_FALSE, "  ===>>>  ");
  20     J2dTraceTraceVector(fpt_trans);
  21     J2dTraceLn(J2D_TRACE_VERBOSE, " ");
  22 }
  23 
  24 static void traceMatrix(simd_float4x4 * mtx) {
  25     for (int row = 0; row < 4; ++row) {
  26         J2dTraceLn4(J2D_TRACE_VERBOSE, "  [%lf %lf %lf %lf]",
  27                     mtx->columns[0][row], mtx->columns[1][row], mtx->columns[2][row], mtx->columns[3][row]);
  28     }
  29 }
  30 
  31 void traceRaster(char * p, int width, int height, int stride) {
  32     for (int y = 0; y < height; ++y) {
  33         for (int x = 0; x < width; ++x) {
  34             char pix0 = p[y*stride + x*4];
  35             char pix1 = p[y*stride + x*4 + 1];
  36             char pix2 = p[y*stride + x*4 + 2];
  37             char pix3 = p[y*stride + x*4 + 3];
  38             J2dTrace4(J2D_TRACE_INFO, "[%d,%d,%d,%d], ", pix0, pix1, pix2, pix3);
  39         }
  40         J2dTraceLn(J2D_TRACE_INFO, "");
  41     }
  42 }
  43 
  44 void tracePoints(jint nPoints, jint *xPoints, jint *yPoints) {
  45     for (int i = 0; i < nPoints; i++)
  46         J2dTraceLn2(J2D_TRACE_INFO, "\t(%d, %d)", *(xPoints++), *(yPoints++));
  47 }