void test_stamp_gen_nonlinear() { static float ones[] = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, }; static float halfs[] = { 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, }; static float zeros[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, }; heatmap_stamp_t* s1 = heatmap_stamp_gen_nonlinear(1, [](float){return 0.5f;}); heatmap_stamp_t* s2 = heatmap_stamp_gen_nonlinear(1, [](float){return -1.0f;}); heatmap_stamp_t* s3 = heatmap_stamp_gen_nonlinear(1, [](float){return 10.0f;}); ENSURE_THAT("the 1-radius nonlinear .5-stamp size is correct", s1->w == 3 && s1->h == 3); ENSURE_THAT("the 1-radius nonlinear -1-stamp size is correct", s2->w == 3 && s2->h == 3); ENSURE_THAT("the 1-radius nonlinear 10-stamp size is correct", s3->w == 3 && s3->h == 3); ENSURE_THAT("the 1-radius nonlinear .5-stamp data is correct", stamp_eq(s1, halfs)); ENSURE_THAT("the 1-radius nonlinear -1-stamp data is correct", stamp_eq(s2, ones)); ENSURE_THAT("the 1-radius nonlinear 10-stamp data is correct", stamp_eq(s3, zeros)); heatmap_stamp_free(s1); heatmap_stamp_free(s2); heatmap_stamp_free(s3); }
heatmap_stamp_t* heatmap_stamp_gen(unsigned r) { return heatmap_stamp_gen_nonlinear(r, linear_dist); }