TEST () { GeglBuffer *buffer, *sub, *subsub, *foo; GeglRectangle subrect = {5, 5, 10, 10}; GeglRectangle foor = {0, 0, 10, 10}; GeglRectangle rect = {0, 0, 20, 20}; test_start (); buffer = gegl_buffer_new (&rect, babl_format ("Y float")); sub = gegl_buffer_create_sub_buffer (buffer, &subrect); vgrad (buffer); vgrad (sub); subsub = g_object_new (GEGL_TYPE_BUFFER, "source", sub, "x", 0, "y", 0, "width", 40, "height", 40, "shift-x", 0, "shift-y", 0, NULL); foo = gegl_buffer_create_sub_buffer (subsub, &foor); /*fill (subsub, 0.2);*/ print_buffer (buffer); print_buffer (foo); g_object_unref (sub); g_object_unref (subsub); g_object_unref (buffer); g_object_unref (foo); test_end (); }
TEST () { GeglBuffer *buffer2, *buffer; GeglRectangle bound = {0, 0, 20, 20}; GeglRectangle dest = {4, 4, 4, 6}; float *blank = g_malloc0 (100000); gchar *temp = g_malloc0 (100000); test_start (); buffer2 = gegl_buffer_new (&bound, babl_format ("Y float")); buffer = gegl_buffer_new (&bound, babl_format ("Y float")); vgrad (buffer2); gegl_buffer_set (buffer2, &dest, 1, babl_format ("Y float"), blank, GEGL_AUTO_ROWSTRIDE); print_buffer (buffer2); gegl_buffer_get (buffer2, &bound, 0.5, babl_format ("Y float"), temp, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE); gegl_buffer_set (buffer, &bound, 0, babl_format ("Y float"), temp, GEGL_AUTO_ROWSTRIDE); print_buffer (buffer); vgrad (buffer2); { GeglBufferIterator *iterator = gegl_buffer_iterator_new (buffer2, &dest, 1, babl_format ("Y float"), GEGL_BUFFER_WRITE, GEGL_ABYSS_NONE); while (gegl_buffer_iterator_next (iterator)) { int i; gfloat *d = iterator->data[0]; for (i = 0; i < iterator->length; i++) d[i] = 0; } } print_buffer (buffer2); gegl_buffer_get (buffer2, &bound, 0.5, babl_format ("Y float"), temp, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE); gegl_buffer_set (buffer, &bound, 0, babl_format ("Y float"), temp, GEGL_AUTO_ROWSTRIDE); print_buffer (buffer); g_object_unref (buffer); g_object_unref (buffer2); test_end (); }
void DGFiniteElement<D>:: GetGradientTrans (FlatMatrixFixWidth<D> grad, FlatVector<> coefs) const { Matrix<> gmat(D*grad.Height(), coefs.Size()); CalcGradientMatrix (gmat); FlatVector<> vgrad(gmat.Height(), &grad(0,0)); coefs = Trans (gmat) * vgrad; }
void DGFiniteElement<D>:: GetGradient (FlatVector<> coefs, FlatMatrixFixWidth<D> grad) const { Matrix<> gmat(D*grad.Height(), coefs.Size()); CalcGradientMatrix (gmat); FlatVector<> vgrad(gmat.Height(), &grad(0,0)); vgrad = gmat * coefs; }
TEST () { GeglBuffer *buffer; GeglRectangle rect = {0, 0, 20, 20}; test_start(); buffer = gegl_buffer_new (&rect, babl_format ("Y float")); vgrad (buffer); print_buffer (buffer); g_object_unref (buffer); test_end(); }
TEST () { GeglBuffer *buffer, *buffer2; GeglRectangle bound = {0, 0, 20, 20}; test_start (); buffer = gegl_buffer_new (&bound, babl_format ("Y float")); vgrad (buffer); buffer2 = gegl_buffer_dup (buffer); gegl_buffer_destroy (buffer); print_buffer (buffer2); gegl_buffer_destroy (buffer2); test_end (); }
TEST () { GeglBuffer *buffer, *buffer2; GeglRectangle bound = {0, 0, 20, 20}; test_start (); buffer = gegl_buffer_new (&bound, babl_format ("Y float")); vgrad (buffer); buffer2 = gegl_buffer_dup (buffer); checkerboard (buffer, 3, 0.0, 1.0); print_buffer (buffer); g_object_unref (buffer); g_object_unref (buffer2); test_end (); }
TEST () { GeglAbyssPolicy abyss_type = GEGL_ABYSS_BLACK; gint i, j; GeglBuffer *buffer, *buffer2; const Babl *format = babl_format ("Y float"); GeglRectangle query_rect = {0, 0, 13, 13}; GeglRectangle buffer_rect = {0, 0, 12, 12}; gfloat buf[query_rect.width * query_rect.height * sizeof(gfloat)]; gint x_offsets[] = {-query_rect.width - 6, -query_rect.width - 0, -query_rect.width + 1, -query_rect.width + 6, -1, buffer_rect.width - 6, buffer_rect.width - 1, buffer_rect.width - 0, buffer_rect.width + 6}; gint y_offsets[] = {-query_rect.height - 6, -query_rect.height - 0, -query_rect.height + 1, -query_rect.height + 6, -1, buffer_rect.height - 6, buffer_rect.height - 1, buffer_rect.height - 0, buffer_rect.height + 6}; test_start (); buffer = gegl_buffer_new (&buffer_rect, format); buffer2 = gegl_buffer_new (&query_rect, format); vgrad (buffer); // checkerboard (buffer, 2, 0.0f, 1.0f); for (i = 0; i < G_N_ELEMENTS(x_offsets); ++i) for (j = 0; j < G_N_ELEMENTS(y_offsets); ++j) { GeglRectangle cur_query_rect = query_rect; cur_query_rect.x = cur_query_rect.x + x_offsets[i]; cur_query_rect.y = cur_query_rect.y + y_offsets[j]; print (("%d,%d %dx%d\n", cur_query_rect.x, cur_query_rect.y, cur_query_rect.width, cur_query_rect.height)); gegl_buffer_get (buffer, &cur_query_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE, abyss_type); gegl_buffer_set (buffer2, &query_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE); print_buffer (buffer2); } g_object_unref (buffer); g_object_unref (buffer2); test_end (); }
TEST () { GeglBuffer *buffer, *buffer2; GeglRectangle bound = {0, 0, 20, 20}; GeglRectangle source = {2, 2, 5, 5}; GeglRectangle dest = {10, 10, 5, 5}; test_start (); buffer = gegl_buffer_new (&bound, babl_format ("Y float")); buffer2 = gegl_buffer_new (&bound, babl_format ("Y float")); vgrad (buffer); gegl_buffer_copy (buffer, &source, GEGL_ABYSS_NONE, buffer2, &dest); print_buffer (buffer2); g_object_unref (buffer); g_object_unref (buffer2); test_end (); }
TEST () { GeglBuffer *buffer, *buffer2; GeglRectangle bound = {0, 0, 20, 20}; test_start (); buffer = gegl_buffer_new (&bound, babl_format ("Y float")); vgrad (buffer); { GeglRectangle rect = *gegl_buffer_get_extent(buffer); rect.width-=10; rect.height-=10; buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer)); gegl_buffer_copy (buffer, &rect, buffer2, &rect); } print_buffer (buffer2); g_object_unref (buffer); g_object_unref (buffer2); test_end (); }
TEST () { GeglBuffer *buffer, *buffer2; GeglRectangle bound = {0, 0, 10, 10}; GeglRectangle bound2 = {0, 0, 20, 20}; GeglRectangle source = {-5, -5, 20, 20}; GeglRectangle dest = {0, 0, 20, 20}; const Babl *format = babl_format ("Y float"); gfloat buf[20 * 20 * sizeof(gfloat)]; test_start (); buffer = gegl_buffer_new (&bound, format); buffer2 = gegl_buffer_new (&bound2, format); vgrad (buffer); gegl_buffer_get (buffer, &source, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_CLAMP); gegl_buffer_set (buffer2, &dest, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE); print_buffer (buffer2); g_object_unref (buffer); g_object_unref (buffer2); test_end (); }