This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project gfxprim.git.
The branch, master has been updated via f4a9af195d3e128c3752825a1b568d32f9c1bfc8 (commit) via 671e87281d1facd1b67e02eb4ec22ec918be719e (commit) via 02e619a972aa0b3c53fab8c2ae0863f8335c5d9f (commit) via f75a8c4a88ce2805d3a6879e956945248dd5b075 (commit) via 04c28a7494aa96256e17537a97cc7fb78254a6f2 (commit) via d85d6ad1a7f73a6b37e5bc322daa26bf15453f71 (commit) via 54c4a75afdc2cae3b7e3dea64cff7ee29696d321 (commit) via 309a7bbfdc215e46a9e5a4782d13e6be20b374d5 (commit) via d6f5b7524dee82c9886c2605247d72991ee71840 (commit) from a38bd31917407a2fd2b4054c51f6421c2d79654f (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- http://repo.or.cz/w/gfxprim.git/commit/f4a9af195d3e128c3752825a1b568d32f9c1b...
commit f4a9af195d3e128c3752825a1b568d32f9c1bfc8 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 16:42:04 2013 +0100
loaders: PNM: Fix save_ascii_rgb888
The pointers should be incremented after we safe first pixel, not before.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/libs/loaders/GP_PNM.c b/libs/loaders/GP_PNM.c index 7e28f1b..de81c4b 100644 --- a/libs/loaders/GP_PNM.c +++ b/libs/loaders/GP_PNM.c @@ -990,14 +990,14 @@ static int save_ascii_rgb888(FILE *f, const GP_Context *ctx, }
for (x = 0; x < ctx->w; x++) { - addr+=3; - ret |= write_ascii_byte(f, addr[2]); ret |= write_ascii_byte(f, addr[1]); ret |= write_ascii_byte(f, addr[0]);
if (ret) return errno; + + addr+=3; }
if (GP_ProgressCallbackReport(cb, y, ctx->h, ctx->w)) {
http://repo.or.cz/w/gfxprim.git/commit/671e87281d1facd1b67e02eb4ec22ec918be7...
commit 671e87281d1facd1b67e02eb4ec22ec918be719e Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 16:43:26 2013 +0100
tests: loaders: Enable malloc canaries for SaveLoad
The PNG and TIFF loaders segfaults for currently unknown reasons.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/tests/loaders/SaveLoad.gen.c.t b/tests/loaders/SaveLoad.gen.c.t index 81478c0..6daac8b 100644 --- a/tests/loaders/SaveLoad.gen.c.t +++ b/tests/loaders/SaveLoad.gen.c.t @@ -125,7 +125,7 @@ const struct tst_suite tst_suite = { %% if not pt.is_unknown() {.name = "{{ fmt }} {{ pt.name }}", .tst_fn = test_{{ fmt }}_{{ pt.name }}, - .flags = TST_TMPDIR | TST_CHECK_MALLOC}, + .flags = TST_TMPDIR | TST_MALLOC_CANARIES}, %% endif %% endfor %% endfor
http://repo.or.cz/w/gfxprim.git/commit/02e619a972aa0b3c53fab8c2ae0863f8335c5...
commit 02e619a972aa0b3c53fab8c2ae0863f8335c5d9f Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 16:26:43 2013 +0100
tests: framework: Add TST_MALLOC_CANARIES flag.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/tests/framework/tst_job.c b/tests/framework/tst_job.c index 04b6714..f0607a8 100644 --- a/tests/framework/tst_job.c +++ b/tests/framework/tst_job.c @@ -413,10 +413,23 @@ void tst_job_run(struct tst_job *job) tst_malloc_check_start();
/* Run test */ - if (job->test->bench_iter) + if (job->test->bench_iter) { ret = tst_job_benchmark(job); - else - ret = job_run(job); + } else { + if (job->test->flags & TST_MALLOC_CANARIES) { + tst_malloc_canaries_set(MALLOC_CANARY_BEGIN); + ret = job_run(job); + + if (!ret) { + tst_malloc_canaries_set(MALLOC_CANARY_END); + ret = job_run(job); + } + + tst_malloc_canaries_set(MALLOC_CANARY_OFF); + } else { + ret = job_run(job); + } + }
if (job->test->flags & TST_CHECK_MALLOC) { tst_malloc_check_stop(); diff --git a/tests/framework/tst_test.h b/tests/framework/tst_test.h index 52db399..4d65b1b 100644 --- a/tests/framework/tst_test.h +++ b/tests/framework/tst_test.h @@ -48,6 +48,14 @@ enum tst_flags { * Check malloc for memory leaks. */ TST_CHECK_MALLOC = 0x02, + + /* + * Enable malloc canaries. Executes test twice, allocating PROT_NONE + * page first before, then after the allocated buffer. + * + * Implies TST_CHECK_MALLOC. + */ + TST_MALLOC_CANARIES = 0x06, };
struct tst_test {
http://repo.or.cz/w/gfxprim.git/commit/f75a8c4a88ce2805d3a6879e956945248dd5b...
commit f75a8c4a88ce2805d3a6879e956945248dd5b075 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 16:12:04 2013 +0100
tests: Fix whitespaces.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/tests/core/BlitConv.gen.c.t b/tests/core/BlitConv.gen.c.t index b6d02af..05be76a 100644 --- a/tests/core/BlitConv.gen.c.t +++ b/tests/core/BlitConv.gen.c.t @@ -71,7 +71,7 @@ static int check_filled(GP_Context *c, GP_Pixel p) } } } - + return 0; }
diff --git a/tests/core/Context.c b/tests/core/Context.c index 5715717..cf8374d 100644 --- a/tests/core/Context.c +++ b/tests/core/Context.c @@ -61,12 +61,12 @@ static int Context_Alloc_Free(void) tst_msg("Context->w != 100 (== %i)", c->w); return TST_FAILED; } - + if (c->h != 200) { tst_msg("Context->h != 200 (== %i)", c->h); return TST_FAILED; } - + if (c->offset != 0) { tst_msg("Context->offset != 0"); return TST_FAILED; @@ -112,17 +112,17 @@ static int subcontext_assert(const GP_Context *c, const GP_Context *sc, tst_msg("Context->bytes_per_row != SubContext->bytes_per_row"); return TST_FAILED; } - + if (sc->w != w) { tst_msg("SubContext->w != %u (== %i)", w, sc->w); return TST_FAILED; } - + if (sc->h != h) { tst_msg("SubContext->h != %u (== %i)", h, sc->h); return TST_FAILED; } - + if (sc->offset != 0) { tst_msg("SubContext->offset != 0"); return TST_FAILED; @@ -143,7 +143,7 @@ static int subcontext_assert(const GP_Context *c, const GP_Context *sc, sc->axes_swap, sc->x_swap, sc->y_swap); return TST_FAILED; } - + /* access the start and end of the pixel buffer */ *(char*)GP_PIXEL_ADDR(sc, 0, 0) = 0; *(char*)GP_PIXEL_ADDR(sc, sc->w - 1, sc->h - 1) = 0; @@ -194,7 +194,7 @@ static int SubContext_Create(void) }
GP_SubContext(c, &sc, 100, 100, 100, 100); - + ret = subcontext_assert(c, &sc, 100, 100);
if (ret) diff --git a/tests/core/GetSetBits.gen.c.t b/tests/core/GetSetBits.gen.c.t index 1f28cfd..5c33f89 100644 --- a/tests/core/GetSetBits.gen.c.t +++ b/tests/core/GetSetBits.gen.c.t @@ -88,7 +88,7 @@ static int setbits_{{ off }}_{{ len }}(void) canary2 = 0; p_get = patterns[i]; GP_SET_BITS({{ off }}, {{ len }}, p_get, val); - + p_exp = patterns[i] & {{ mask(off, len) }}; p_exp |= val<<{{ off }};
diff --git a/tests/core/Pixel.c b/tests/core/Pixel.c index e334a16..f2ea3c8 100644 --- a/tests/core/Pixel.c +++ b/tests/core/Pixel.c @@ -39,17 +39,17 @@ static int pixel_flags(void) tst_msg("RGB888 is RGB failed"); fail++; } - + if (GP_PixelHasFlags(GP_PIXEL_G1, GP_PIXEL_IS_RGB)) { tst_msg("G1 is RGB succeeded"); fail++; } - + if (!GP_PixelHasFlags(GP_PIXEL_RGBA8888, GP_PIXEL_HAS_ALPHA)) { tst_msg("RGBA8888 has Alpha failed"); fail++; } - + if (!GP_PixelHasFlags(GP_PIXEL_RGBA8888, GP_PIXEL_HAS_ALPHA | GP_PIXEL_IS_RGB)) { tst_msg("RGBA8888 has Alpha and is RGB failed"); diff --git a/tests/core/WritePixel.gen.c.t b/tests/core/WritePixel.gen.c.t index 9ec20c6..9c433a0 100644 --- a/tests/core/WritePixel.gen.c.t +++ b/tests/core/WritePixel.gen.c.t @@ -42,12 +42,12 @@ static void dump_buffer(const char *name, char *buf, unsigned int buf_len)
for (i = 0; i < buf_len; i++) { printf("%i", !!buf[i]); - + if (i != buf_len - 1) printf(", "); - + if (i % 26 == 25) - printf("n "); + printf("n "); }
printf("}n"); @@ -84,8 +84,8 @@ static int WritePixel{{ "_%i_%i_%i_%i"|format(pixelsize, offset, len, aligment) char gen_buf[{{ 25 * pixelsize//8 }}] = {};
/* - * Fill the compare buffer - */ + * Fill the compare buffer + */ %% for i in range(0, len) %% for j in range(0, pixelsize//8) gen_buf[{{aligment + offset * pixelsize//8 + i * pixelsize//8 + j}}] = 0xff; @@ -103,8 +103,8 @@ static int WritePixel{{ "_%i_%i_%i_%i_alloc"|format(pixelsize, offset, len, alig char *write_buf = malloc({{ 25 * pixelsize//8 }});
/* - * Fill the compare buffer - */ + * Fill the compare buffer + */ %% for i in range(0, len) %% for j in range(0, pixelsize//8) gen_buf[{{aligment + offset * pixelsize//8 + i * pixelsize//8 + j}}] = 0xff; @@ -115,7 +115,7 @@ static int WritePixel{{ "_%i_%i_%i_%i_alloc"|format(pixelsize, offset, len, alig tst_msg("Malloc failed :("); return TST_UNTESTED; } - + memset(write_buf, 0, {{ 25 * pixelsize//8 }});
GP_WritePixels_{{ pixelsize }}BPP(write_buf + {{aligment + offset * pixelsize//8}}, {{ len }}, 0xffffffff>>{{32 - pixelsize}}); diff --git a/tests/filters/FilterMirrorH.c b/tests/filters/FilterMirrorH.c index 8aa50ac..509da34 100644 --- a/tests/filters/FilterMirrorH.c +++ b/tests/filters/FilterMirrorH.c @@ -104,7 +104,7 @@ struct testcase testcase_2x2 = { 2, 3, 0, 1, }, - + .src = { 0, 1, 2, 3, @@ -121,7 +121,7 @@ struct testcase testcase_10x2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, }, - + .src = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, @@ -139,7 +139,7 @@ struct testcase testcase_2x3 = { 2, 3, 0, 1, }, - + .src = { 0, 1, 2, 3, @@ -159,7 +159,7 @@ struct testcase testcase_3x3 = { 3, 4, 5, 0, 1, 2, }, - + .src = { 0, 1, 2, 3, 4, 5, @@ -179,7 +179,7 @@ struct testcase testcase_4x4 = { 4, 5, 6, 7, 0, 1, 2, 3, }, - + .src = { 0, 1, 2, 3, 4, 5, 6, 7, @@ -202,7 +202,7 @@ struct testcase testcase_G1_16x2 = { 0x0f, 0xaa, 0xf0, 0xff, 0xff, 0xff, }, - + .src = { 0x0f, 0xff, 0xf0, 0xff, 0xaa, 0xff, @@ -222,7 +222,7 @@ static int test_abort(void) { int ret; GP_Context *c; - + c = GP_ContextAlloc(10, 10, GP_PIXEL_G8);
if (c == NULL) { @@ -275,11 +275,11 @@ const struct tst_suite tst_suite = { {.name = "MirrorH 1x1", .tst_fn = test_mirror_h, .data = &testcase_1x1}, - + {.name = "MirrorH 2x2", .tst_fn = test_mirror_h, .data = &testcase_2x2}, - + {.name = "MirrorH 10x2", .tst_fn = test_mirror_h, .data = &testcase_10x2}, @@ -291,7 +291,7 @@ const struct tst_suite tst_suite = { {.name = "MirrorH 3x3", .tst_fn = test_mirror_h, .data = &testcase_3x3}, - + {.name = "MirrorH 4x4", .tst_fn = test_mirror_h, .data = &testcase_3x3}, diff --git a/tests/filters/LinearConvolution.c b/tests/filters/LinearConvolution.c index 42ac872..9d685c9 100644 --- a/tests/filters/LinearConvolution.c +++ b/tests/filters/LinearConvolution.c @@ -97,7 +97,7 @@ static int test_h_lin_conv_box_3_raw(void) if (errno == ENOSYS) return TST_SKIPPED; } - + /* Check result */ //TODO
@@ -113,7 +113,7 @@ static int test_v_lin_conv_box_3_raw(void)
if (ret != TST_SUCCESS) return ret; - + // GP_SetDebugLevel(10);
/* Apply the convolution */ @@ -124,7 +124,7 @@ static int test_v_lin_conv_box_3_raw(void) if (errno == ENOSYS) return TST_SKIPPED; } - + /* Check result */ //TODO
diff --git a/tests/filters/common.c b/tests/filters/common.c index 35a6d13..86d129f 100644 --- a/tests/filters/common.c +++ b/tests/filters/common.c @@ -50,8 +50,8 @@ void dump_buffers(const char *pattern, const GP_Context *c) unsigned int idx = x + y * c->w; char p = ((char*)c->pixels)[idx];
- if (pattern[idx] != p) { - /* TODO: we expect background to be 0 */ + if (pattern[idx] != p) { + /* TODO: we expect background to be 0 */ if (p == 0) printf(" x "); else @@ -74,14 +74,14 @@ int compare_buffers(const char *pattern, const GP_Context *c) for (x = 0; x < c->w; x++) { for (y = 0; y < c->h; y++) { unsigned int idx = x + y * c->w; - + if (pattern[idx] != ((char*)c->pixels)[idx]) err++; } }
if (err) - dump_buffers(pattern, c); + dump_buffers(pattern, c);
return err; } diff --git a/tests/framework/tst_job.c b/tests/framework/tst_job.c index 1d0d754..04b6714 100644 --- a/tests/framework/tst_job.c +++ b/tests/framework/tst_job.c @@ -386,11 +386,11 @@ void tst_job_run(struct tst_job *job) }
/* Redirect stderr/stdout TODO: catch its output */ - if (freopen("/dev/null", "w", stderr) == NULL) - tst_warn("freopen(stderr) failed: %s", strerror(errno)); +// if (freopen("/dev/null", "w", stderr) == NULL) +// tst_warn("freopen(stderr) failed: %s", strerror(errno));
- if (freopen("/dev/null", "w", stdout) == NULL) - tst_warn("freopen(stdout) failed: %s", strerror(errno)); +// if (freopen("/dev/null", "w", stdout) == NULL) +// tst_warn("freopen(stdout) failed: %s", strerror(errno));
/* Create directory in /tmp/ and chdir into it. */ if (job->test->flags & TST_TMPDIR) diff --git a/tests/framework/tst_job.h b/tests/framework/tst_job.h index 171c0f0..140a9f8 100644 --- a/tests/framework/tst_job.h +++ b/tests/framework/tst_job.h @@ -21,7 +21,7 @@ *****************************************************************************/
/* - + Test job is an instance of running test.
*/ @@ -37,8 +37,8 @@
struct tst_job { const struct tst_test *test; - - /* + + /* * Pipe fd. * * In parent this points to the read side of the pipe so the parent @@ -48,19 +48,19 @@ struct tst_job { * send data to parent. */ int pipefd; - + int running:1; - + /* test execution time */ struct timespec start_time; struct timespec stop_time; - + /* test cpu time */ struct timespec cpu_time;
/* test pid */ int pid; - + /* test result */ enum tst_ret result;
diff --git a/tests/framework/tst_log.c b/tests/framework/tst_log.c index 658419e..b30dcb9 100644 --- a/tests/framework/tst_log.c +++ b/tests/framework/tst_log.c @@ -130,7 +130,7 @@ int tst_log_append(struct tst_job *job, FILE *f)
/* Append any test reports */ append_msg_json(job, f); - + /* If calculated include malloc report */ if (job->test->flags & TST_CHECK_MALLOC) append_malloc_stats_json(job, f); diff --git a/tests/framework/tst_log.h b/tests/framework/tst_log.h index 400d9e8..b7586ff 100644 --- a/tests/framework/tst_log.h +++ b/tests/framework/tst_log.h @@ -21,7 +21,7 @@ *****************************************************************************/
/* - + Logs finished job result into the file.
*/ diff --git a/tests/framework/tst_msg.h b/tests/framework/tst_msg.h index f144851..781573d 100644 --- a/tests/framework/tst_msg.h +++ b/tests/framework/tst_msg.h @@ -21,7 +21,7 @@ *****************************************************************************/
/* - + Code to store test messages into a data structure.
*/ diff --git a/tests/framework/tst_preload_FILE.h b/tests/framework/tst_preload_FILE.h index 0c1da0a..0691c7b 100644 --- a/tests/framework/tst_preload_FILE.h +++ b/tests/framework/tst_preload_FILE.h @@ -32,7 +32,7 @@ enum tst_file_call { * Describes which call on which file and how should fail. */ struct tst_fail_FILE { - /* + /* * File path to be failed, this is matched exactly against the path * passed to fopen(). * @@ -45,8 +45,8 @@ struct tst_fail_FILE {
/* if not zero, errno is set to this */ int err; - - /* + + /* * Which call should be failed. */ enum tst_file_call call; diff --git a/tests/framework/tst_test.h b/tests/framework/tst_test.h index b19e40d..52db399 100644 --- a/tests/framework/tst_test.h +++ b/tests/framework/tst_test.h @@ -38,7 +38,7 @@ enum tst_ret { };
enum tst_flags { - /* + /* * Create teporary directory and set it as CWD and * clean it after the test is finised. */ @@ -53,7 +53,7 @@ enum tst_flags { struct tst_test { /* test name */ const char *name; - /* + /* * Resurce path, file or directory which is copied to * test directory before test is executed. */ @@ -111,7 +111,7 @@ int tst_report(int level, const char *fmt, ...) int tst_msg(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
-/* +/* * Warning and Error are used in test framework to distinguish the type of test * internal problem. You shouldn't use this one unless the test exited with * TST_UNTESTED. diff --git a/tests/framework/tst_timespec.h b/tests/framework/tst_timespec.h index 27ab5cb..3ec03ee 100644 --- a/tests/framework/tst_timespec.h +++ b/tests/framework/tst_timespec.h @@ -21,7 +21,7 @@ *****************************************************************************/
/* - + Timespec manipulation utils.
*/ diff --git a/tests/gfx/Circle.c b/tests/gfx/Circle.c index 0015ebe..bb6f4e1 100644 --- a/tests/gfx/Circle.c +++ b/tests/gfx/Circle.c @@ -212,31 +212,31 @@ const struct tst_suite tst_suite = { .tests = { {.name = "Circle r=0", .tst_fn = test_circle, - .data = &testcase_circle_r_0}, + .data = &testcase_circle_r_0},
{.name = "Circle r=1", .tst_fn = test_circle, - .data = &testcase_circle_r_1}, + .data = &testcase_circle_r_1},
{.name = "Circle r=2", .tst_fn = test_circle, - .data = &testcase_circle_r_2}, + .data = &testcase_circle_r_2},
{.name = "Circle r=3", .tst_fn = test_circle, - .data = &testcase_circle_r_3}, + .data = &testcase_circle_r_3},
{.name = "Circle r=4", .tst_fn = test_circle, - .data = &testcase_circle_r_4}, - + .data = &testcase_circle_r_4}, + {.name = "Circle r=5 + clipping", .tst_fn = test_circle, - .data = &testcase_circle_r_5_clip}, + .data = &testcase_circle_r_5_clip},
{.name = "Circle r=6 + clipping", .tst_fn = test_circle, - .data = &testcase_circle_r_6_clip}, + .data = &testcase_circle_r_6_clip},
{.name = NULL} } diff --git a/tests/gfx/FillCircle.c b/tests/gfx/FillCircle.c index 3ab67b9..e885d4a 100644 --- a/tests/gfx/FillCircle.c +++ b/tests/gfx/FillCircle.c @@ -212,31 +212,31 @@ const struct tst_suite tst_suite = { .tests = { {.name = "FillCircle r=0", .tst_fn = test_circle, - .data = &testcase_circle_r_0}, + .data = &testcase_circle_r_0},
{.name = "FillCircle r=1", .tst_fn = test_circle, - .data = &testcase_circle_r_1}, + .data = &testcase_circle_r_1},
{.name = "FillCircle r=2", .tst_fn = test_circle, - .data = &testcase_circle_r_2}, + .data = &testcase_circle_r_2},
{.name = "FillCircle r=3", .tst_fn = test_circle, - .data = &testcase_circle_r_3}, + .data = &testcase_circle_r_3},
{.name = "FillCircle r=4", .tst_fn = test_circle, - .data = &testcase_circle_r_4}, - + .data = &testcase_circle_r_4}, + {.name = "FillCircle r=5 + clipping", .tst_fn = test_circle, - .data = &testcase_circle_r_5_clip}, + .data = &testcase_circle_r_5_clip},
{.name = "FillCircle r=6 + clipping", .tst_fn = test_circle, - .data = &testcase_circle_r_6_clip}, + .data = &testcase_circle_r_6_clip},
{.name = NULL} } diff --git a/tests/gfx/HLine.c b/tests/gfx/HLine.c index 14dfd51..db0ecb2 100644 --- a/tests/gfx/HLine.c +++ b/tests/gfx/HLine.c @@ -161,7 +161,7 @@ static struct testcase testcase_clipping_3 = { };
static struct testcase testcase_xyw_1 = { - .x = 1, + .x = 1, .y = 1, .lw = 0,
@@ -177,7 +177,7 @@ static struct testcase testcase_xyw_1 = { };
static struct testcase testcase_xyw_2 = { - .x = 1, + .x = 1, .y = 1, .lw = 2,
@@ -193,7 +193,7 @@ static struct testcase testcase_xyw_2 = { };
static struct testcase testcase_xyw_clipp_1 = { - .x = -10000, + .x = -10000, .y = 1, .lw = 20000,
@@ -246,15 +246,15 @@ const struct tst_suite tst_suite = { {.name = "HLine 1px", .tst_fn = test_hline, .data = &testcase_1_px}, - + {.name = "HLine 3px 1", .tst_fn = test_hline, .data = &testcase_3_px_1}, - + {.name = "HLine 3px 2", .tst_fn = test_hline, .data = &testcase_3_px_2}, - + {.name = "HLine clipping 1", .tst_fn = test_hline, .data = &testcase_clipping_1}, @@ -274,7 +274,7 @@ const struct tst_suite tst_suite = { {.name = "HLineXYW 2", .tst_fn = test_hline, .data = &testcase_xyw_2}, - + {.name = "HLineXYW clipping 1", .tst_fn = test_hline, .data = &testcase_xyw_clipp_1}, diff --git a/tests/gfx/HLineAA.c b/tests/gfx/HLineAA.c index d0f8656..3f67996 100644 --- a/tests/gfx/HLineAA.c +++ b/tests/gfx/HLineAA.c @@ -76,7 +76,7 @@ static struct testcase testcase_line_len_0_1 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }; @@ -91,7 +91,7 @@ static struct testcase testcase_line_len_0_2 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }; @@ -106,7 +106,7 @@ static struct testcase testcase_line_len_0_3 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }; @@ -121,7 +121,7 @@ static struct testcase testcase_line_len_0_4 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }; @@ -136,7 +136,7 @@ static struct testcase testcase_line_len_0_5 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }; @@ -151,7 +151,7 @@ static struct testcase testcase_line_len_05_1 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, } }; @@ -166,7 +166,7 @@ static struct testcase testcase_line_len_05_2 = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, } @@ -283,15 +283,15 @@ const struct tst_suite tst_suite = { {.name = "HLineAA len=0 4", .tst_fn = test_line, .data = &testcase_line_len_0_4}, - + {.name = "HLineAA len=0 5", .tst_fn = test_line, .data = &testcase_line_len_0_5}, - + {.name = "HLineAA len=0.5 1", .tst_fn = test_line, .data = &testcase_line_len_05_1}, - + {.name = "HLineAA len=0.5 2", .tst_fn = test_line, .data = &testcase_line_len_05_2}, @@ -311,11 +311,11 @@ const struct tst_suite tst_suite = { {.name = "LineAA len=1 4", .tst_fn = test_line, .data = &testcase_line_len_1_4}, - + {.name = "LineAA len=4 1", .tst_fn = test_line, .data = &testcase_line_len_4_1}, - + {.name = "LineAA len=4 2", .tst_fn = test_line, .data = &testcase_line_len_4_2}, diff --git a/tests/gfx/Line.c b/tests/gfx/Line.c index 5fcc4a3..fc806d7 100644 --- a/tests/gfx/Line.c +++ b/tests/gfx/Line.c @@ -79,7 +79,7 @@ static struct testcase testcase_line_1px = {
.pixmap = { 0, 0, 0, - 0, 1, 0, + 0, 1, 0, 0, 0, 0, } }; @@ -215,19 +215,19 @@ const struct tst_suite tst_suite = { {.name = "Line Horizontal", .tst_fn = test_line, .data = &testcase_line_horiz}, - + {.name = "Line Vertical", .tst_fn = test_line, .data = &testcase_line_vert}, - + {.name = "Line 45 degrees", .tst_fn = test_line, .data = &testcase_line_45}, - + {.name = "Line 15 degrees", .tst_fn = test_line, .data = &testcase_line_15}, - + {.name = "Line clipping", .tst_fn = test_line, .data = &testcase_line_clip}, @@ -236,7 +236,7 @@ const struct tst_suite tst_suite = { .tst_fn = test_line, .data = &testcase_line_large_xy, .timeout = 1}, - + {.name = NULL} } }; diff --git a/tests/gfx/LineAA.c b/tests/gfx/LineAA.c index f4a5d45..5373c24 100644 --- a/tests/gfx/LineAA.c +++ b/tests/gfx/LineAA.c @@ -79,7 +79,7 @@ static struct testcase testcase_line_1px = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, } }; @@ -142,15 +142,15 @@ const struct tst_suite tst_suite = { {.name = "LineAA 1px", .tst_fn = test_line, .data = &testcase_line_1px}, - + {.name = "LineAA 2px", .tst_fn = test_line, .data = &testcase_line_2px}, - + {.name = "LineAA 2px horizontal", .tst_fn = test_line, .data = &testcase_line_2px_h}, - + {.name = "LineAA 2px vertical", .tst_fn = test_line, .data = &testcase_line_2px_v}, diff --git a/tests/gfx/Polygon.c b/tests/gfx/Polygon.c index d846328..e0ff15c 100644 --- a/tests/gfx/Polygon.c +++ b/tests/gfx/Polygon.c @@ -35,7 +35,7 @@ struct testcase { /* polygon description */ unsigned int edge_count; GP_Coord edges[20]; - + /* expected result */ GP_Size w, h; const char pixmap[]; @@ -349,11 +349,11 @@ const struct tst_suite tst_suite = { {.name = "Triangle 6px Polygon", .tst_fn = test_polygon, .data = &testcase_6px_triangle}, - + {.name = "Triangle 1. Polygon", .tst_fn = test_polygon, .data = &testcase_triangle_1}, - + {.name = "Bow 4edges 7px", .tst_fn = test_polygon, .data = &testcase_bow_4edges_7px}, diff --git a/tests/gfx/PutPixelAA.c b/tests/gfx/PutPixelAA.c index 55f46de..22faee7 100644 --- a/tests/gfx/PutPixelAA.c +++ b/tests/gfx/PutPixelAA.c @@ -75,7 +75,7 @@ static struct testcase testcase_pixel_center = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, } }; @@ -89,7 +89,7 @@ static struct testcase testcase_pixel_hcenter = {
.pixmap = { 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, } @@ -130,15 +130,15 @@ const struct tst_suite tst_suite = { {.name = "PutPixelAA center", .tst_fn = test_pixel, .data = &testcase_pixel_center}, - + {.name = "PutPixelAA hcenter", .tst_fn = test_pixel, .data = &testcase_pixel_hcenter}, - + {.name = "PutPixelAA vcenter", .tst_fn = test_pixel, .data = &testcase_pixel_vcenter}, - + {.name = "PutPixelAA", .tst_fn = test_pixel, .data = &testcase_pixel}, diff --git a/tests/gfx/VLine.c b/tests/gfx/VLine.c index 03b2d62..61640c3 100644 --- a/tests/gfx/VLine.c +++ b/tests/gfx/VLine.c @@ -171,7 +171,7 @@ static struct testcase testcase_clipping_3 = { };
static struct testcase testcase_xyh_1 = { - .x = 1, + .x = 1, .y = 1, .lh = 0,
@@ -187,7 +187,7 @@ static struct testcase testcase_xyh_1 = { };
static struct testcase testcase_xyh_2 = { - .x = 1, + .x = 1, .y = 1, .lh = 2,
@@ -204,7 +204,7 @@ static struct testcase testcase_xyh_2 = { };
static struct testcase testcase_xyh_clipp_1 = { - .x = 1, + .x = 1, .y = -10000, .lh = 20000,
@@ -257,15 +257,15 @@ const struct tst_suite tst_suite = { {.name = "VLine 1px", .tst_fn = test_vline, .data = &testcase_1_px}, - + {.name = "VLine 3px 1", .tst_fn = test_vline, .data = &testcase_3_px_1}, - + {.name = "VLine 3px 2", .tst_fn = test_vline, .data = &testcase_3_px_2}, - + {.name = "VLine clipping 1", .tst_fn = test_vline, .data = &testcase_clipping_1}, @@ -277,7 +277,7 @@ const struct tst_suite tst_suite = { {.name = "VLine clipping 3", .tst_fn = test_vline, .data = &testcase_clipping_3}, - + {.name = "VLineXYH 1", .tst_fn = test_vline, .data = &testcase_xyh_1}, @@ -297,7 +297,7 @@ const struct tst_suite tst_suite = { {.name = "VLineXYH clipping 3", .tst_fn = test_vline, .data = &testcase_xyh_clipp_3}, - + {.name = NULL} } }; diff --git a/tests/gfx/common.c b/tests/gfx/common.c index 35a6d13..86d129f 100644 --- a/tests/gfx/common.c +++ b/tests/gfx/common.c @@ -50,8 +50,8 @@ void dump_buffers(const char *pattern, const GP_Context *c) unsigned int idx = x + y * c->w; char p = ((char*)c->pixels)[idx];
- if (pattern[idx] != p) { - /* TODO: we expect background to be 0 */ + if (pattern[idx] != p) { + /* TODO: we expect background to be 0 */ if (p == 0) printf(" x "); else @@ -74,14 +74,14 @@ int compare_buffers(const char *pattern, const GP_Context *c) for (x = 0; x < c->w; x++) { for (y = 0; y < c->h; y++) { unsigned int idx = x + y * c->w; - + if (pattern[idx] != ((char*)c->pixels)[idx]) err++; } }
if (err) - dump_buffers(pattern, c); + dump_buffers(pattern, c);
return err; } diff --git a/tests/gfx/gfx_benchmark.c b/tests/gfx/gfx_benchmark.c index c4cff7a..4d5674c 100644 --- a/tests/gfx/gfx_benchmark.c +++ b/tests/gfx/gfx_benchmark.c @@ -125,7 +125,7 @@ const struct tst_suite tst_suite = { .bench_iter = 10}, {.name = "Line 32BPP", .tst_fn = bench_line_32bpp, .bench_iter = 10}, - + {.name = "Circle 1BPP", .tst_fn = bench_circle_1bpp, .bench_iter = 10}, {.name = "Circle 2BPP", .tst_fn = bench_circle_2bpp, @@ -136,7 +136,7 @@ const struct tst_suite tst_suite = { .bench_iter = 10}, {.name = "Circle 32BPP", .tst_fn = bench_circle_32bpp, .bench_iter = 10}, - + {.name = NULL}, } };
http://repo.or.cz/w/gfxprim.git/commit/04c28a7494aa96256e17537a97cc7fb78254a...
commit 04c28a7494aa96256e17537a97cc7fb78254a6f2 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 16:10:07 2013 +0100
tests: FillRect: A few more testcases.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/tests/gfx/FillRect.c b/tests/gfx/FillRect.c index bd30ad5..87b720b 100644 --- a/tests/gfx/FillRect.c +++ b/tests/gfx/FillRect.c @@ -266,6 +266,60 @@ struct testcase testcase_rect_9d = { } };
+struct testcase testcase_rect_0a = { + .x1 = 2147483647, + .y1 = -2147483648, + .x2 = 2147483647, + .y2 = -2147483648, + + .w = 5, + .h = 5, + + .pixmap = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + } +}; + +struct testcase testcase_rect_0b = { + .x1 = -2147483648, + .y1 = 2147483647, + .x2 = -2147483648, + .y2 = 2147483647, + + .w = 5, + .h = 5, + + .pixmap = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + } +}; + +struct testcase testcase_rect_25 = { + .x1 = -2147483648, + .y1 = 2147483647, + .x2 = 2147483647, + .y2 = -2147483648, + + .w = 5, + .h = 5, + + .pixmap = { + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + } +}; + const struct tst_suite tst_suite = { .suite_name = "FillRect Testsuite", .tests = { @@ -321,6 +375,21 @@ const struct tst_suite tst_suite = { .data = &testcase_rect_9d, .timeout = 2},
+ {.name = "FillRect rect out of context 1", + .tst_fn = test_rect, + .data = &testcase_rect_0a, + .timeout = 2}, + + {.name = "FillRect rect out of context 2", + .tst_fn = test_rect, + .data = &testcase_rect_0b, + .timeout = 2}, + + {.name = "FillRect full rect", + .tst_fn = test_rect, + .data = &testcase_rect_25, + .timeout = 2}, + {.name = NULL} } };
http://repo.or.cz/w/gfxprim.git/commit/d85d6ad1a7f73a6b37e5bc322daa26bf15453...
commit d85d6ad1a7f73a6b37e5bc322daa26bf15453f71 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 15:52:15 2013 +0100
pywrap: filters: Add weighted median (disabled for now)
Note that the functions are disabled because the filter seems to be broken. I will enable them once the filter is working again.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/pylib/gfxprim/filters/__init__.py b/pylib/gfxprim/filters/__init__.py index 1ac3acb..9fd278c 100644 --- a/pylib/gfxprim/filters/__init__.py +++ b/pylib/gfxprim/filters/__init__.py @@ -150,5 +150,64 @@ def _init(module): module['ConvolutionEx'] = ConvolutionEx module['ConvolutionExAlloc'] = ConvolutionExAlloc
+ + # + # Special handling for weighted median parameters + # + def array_to_weights(weights): + h = len(weights) + w = len(weights[0]) + + # Assert that array is matrix of numbers + for i in range(0, h): + assert(len(weights[i]) == w) + + for j in weights[i]: + assert(isinstance(j, int) and j >= 0) + + # flatten the python array into C array + warr = c_filters.new_uint_array(w * h) + + for i in range(0, h): + for j in range(0, w): + c_filters.uint_array_setitem(warr, i * w + j, weights[i][j]) + + ret = c_filters.GP_MedianWeights(w, h, warr) + + return ret + + def uint_arr_del(w): + c_filters.delete_uint_array(w.weights) + + def WeightedMedian(src, dst, weights, callback=None): + """ + WeightedMedian(src, dst, weights, callback=None) + + Weighted variant of median filter. Weights is a two dimensional + array of positive integers that describe weights for neighbour pixels. + """ + w = array_to_weights(weights) + ret = c_filters.GP_FilterWeightedMedian(src, dst, w, callback) + uint_arr_del(w) + return ret + +# extend_submodule(FiltersSubmodule, 'WeightedMedian', WeightedMedian) +# module['WeightedMedian'] = WeightedMedian + + def WeightedMedianAlloc(src, weights, callback=None): + """ + WeightedMedianAlloc(src, weights, callback=None) + + Weighted variant of median filter. Weights is a two dimensional + array of positive integers that describe weights for neighbour pixels. + """ + w = array_to_weights(weights) + ret = c_filters.GP_FilterWeightedMedianAlloc(src, w, callback) + uint_arr_del(w) + return ret + +# extend_submodule(FiltersSubmodule, 'WeightedMedianAlloc', WeightedMedianAlloc) +# module['WeightedMedianAlloc'] = WeightedMedianAlloc + _init(locals()) del _init diff --git a/pylib/gfxprim/filters/filters.i b/pylib/gfxprim/filters/filters.i index 8bec204..b0f7f1a 100644 --- a/pylib/gfxprim/filters/filters.i +++ b/pylib/gfxprim/filters/filters.i @@ -110,6 +110,31 @@ FILTER_FUNC(Median); /* Weighted Median */ FILTER_FUNC(WeightedMedianEx); FILTER_FUNC(WeightedMedian); + +%array_functions(unsigned int, uint_array); + +%extend GP_MedianWeights { + ~GP_MedianWeights() { + free($self); + } + GP_MedianWeights(unsigned int w, unsigned int h, + unsigned int *weights) { + + GP_MedianWeights *ret = malloc(sizeof(GP_MedianWeights)); + + if (!ret) { + GP_DEBUG(1, "Malloc failed :("); + return NULL; + } + + ret->w = w; + ret->h = h; + ret->weights = weights; + + return ret; + } +}; + %include "GP_WeightedMedian.h"
/* Sigma filter */
http://repo.or.cz/w/gfxprim.git/commit/54c4a75afdc2cae3b7e3dea64cff7ee29696d...
commit 54c4a75afdc2cae3b7e3dea64cff7ee29696d321 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 15:10:47 2013 +0100
examples: py_simple: Remove pygtk_example
It never worked anyway.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/demos/py_simple/pygtk_example.py b/demos/py_simple/pygtk_example.py deleted file mode 100755 index 0c220b3..0000000 --- a/demos/py_simple/pygtk_example.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python - -import sys - -import pygtk -pygtk.require('2.0') -import gtk - -import gfxprim.core as core -import gfxprim.loaders as loaders -import gfxprim.filters as filters - -class HelloWorld: - def delete_event(self, widget, event, data=None): - return False - - def destroy(self, widget, data=None): - gtk.main_quit() - - def __init__(self): - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.window.set_title("PyGTK Example") - self.window.connect("delete_event", self.delete_event) - self.window.connect("destroy", self.destroy) - self.window.set_border_width(1) - - self.image = gtk.Image(); - self.window.add(self.image) - - self.window.show() - self.image.show() - - img = loaders.LoadImage(sys.argv[2]) - self.pixmap = gtk.gdk.Pixmap(None, img.w, img.h, 24) - self.gc = gtk.gdk.Drawable.new_gc(self.pixmap) - - img2 = img.Convert(core.core_c.GP_PIXEL_BGR888); - - self.pixmap.draw_rgb_image(self.gc, 0, 0, img2.w, img2.h, - gtk.gdk.RGB_DITHER_NONE, - img2._hacky_hacky_pixels_buffer()) - - self.image.set_from_pixmap(self.pixmap, None) - - - def main(self): - gtk.main() - -if __name__ == "__main__": - hello = HelloWorld() - hello.main()
http://repo.or.cz/w/gfxprim.git/commit/309a7bbfdc215e46a9e5a4782d13e6be20b37...
commit 309a7bbfdc215e46a9e5a4782d13e6be20b374d5 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 14:59:10 2013 +0100
loaders: PNG: Add support for 16 bit Grayscale.
Since we have PIXEL_G16 in config, we can make use of it.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/libs/loaders/GP_PNG.c b/libs/loaders/GP_PNG.c index 9e7ce53..937bb34 100644 --- a/libs/loaders/GP_PNG.c +++ b/libs/loaders/GP_PNG.c @@ -33,6 +33,7 @@ #include <string.h>
#include "../../config.h" +#include "core/GP_ByteOrder.h" #include "core/GP_Debug.h"
#include "GP_PNG.h" @@ -168,6 +169,11 @@ GP_Context *GP_ReadPNG(FILE *f, GP_ProgressCallback *callback) case 8: pixel_type = GP_PIXEL_G8; break; +#ifdef GP_PIXEL_G16 + case 16: + pixel_type = GP_PIXEL_G16; + break; +#endif } break; case PNG_COLOR_TYPE_RGB: @@ -234,9 +240,20 @@ GP_Context *GP_ReadPNG(FILE *f, GP_ProgressCallback *callback) goto err2; }
- if (color_type == PNG_COLOR_TYPE_GRAY) + if (color_type == PNG_COLOR_TYPE_GRAY && depth < 8) png_set_packswap(png);
+#if __BYTE_ORDER == __LITTLE_ENDIAN + /* + * PNG stores 16 bit values in big endian, turn + * on conversion to little endian if needed. + */ + if (depth > 8) { + GP_DEBUG(1, "Enabling byte swap for bpp = %u", depth); + png_set_swap(png); + } +#endif + uint32_t y; int p;
@@ -436,6 +453,12 @@ static int prepare_png_header(const GP_Context *src, png_structp png, bit_depth = 8; color_type = PNG_COLOR_TYPE_GRAY; break; +#ifdef GP_PIXEL_G16 + case GP_PIXEL_G16: + bit_depth = 16; + color_type = PNG_COLOR_TYPE_GRAY; + break; +#endif default: return 1; break; @@ -454,7 +477,7 @@ static int prepare_png_header(const GP_Context *src, png_structp png,
//png_set_packing(png);
- /* prepare for format conversion */ + /* prepare for format conversions */ switch (src->pixel_type) { case GP_PIXEL_RGB888: png_set_bgr(png); @@ -468,6 +491,17 @@ static int prepare_png_header(const GP_Context *src, png_structp png, break; }
+#if __BYTE_ORDER == __LITTLE_ENDIAN + /* + * PNG stores 16 bit values in big endian, turn + * on conversion to little endian if needed. + */ + if (bit_depth > 8) { + GP_DEBUG(1, "Enabling byte swap for bpp = %u", bit_depth); + png_set_swap(png); + } +#endif + return 0; }
http://repo.or.cz/w/gfxprim.git/commit/d6f5b7524dee82c9886c2605247d72991ee71...
commit d6f5b7524dee82c9886c2605247d72991ee71840 Author: Cyril Hrubis metan@ucw.cz Date: Sat Nov 16 14:48:16 2013 +0100
core, loaders: Move endian include to core.
This just moves the #ifdefs around including endian header to common place to core.
Signed-off-by: Cyril Hrubis metan@ucw.cz
diff --git a/include/core/GP_ByteOrder.h b/include/core/GP_ByteOrder.h new file mode 100644 index 0000000..f756d45 --- /dev/null +++ b/include/core/GP_ByteOrder.h @@ -0,0 +1,35 @@ +/***************************************************************************** + * This file is part of gfxprim library. * + * * + * Gfxprim is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2.1 of the License, or (at your option) any later version. * + * * + * Gfxprim is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with gfxprim; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301 USA * + * * + * Copyright (C) 2009-2013 Cyril Hrubis metan@ucw.cz * + * * + *****************************************************************************/ + +#ifndef CORE_GP_BYTE_ORDER_H +#define CORE_GP_BYTE_ORDER_H + +/* + * To get macros as __BYTE_ORDER __BIG_ENDIAN and __LITTLE_ENDIAN + */ +#ifdef __linux__ +# include <endian.h> +#else /* BSD Family */ +# include <machine/endian.h> +#endif + +#endif /* CORE_GP_BYTE_ORDER_H */ diff --git a/libs/loaders/GP_ByteUtils.c b/libs/loaders/GP_ByteUtils.c index 134c74e..b56c20d 100644 --- a/libs/loaders/GP_ByteUtils.c +++ b/libs/loaders/GP_ByteUtils.c @@ -22,12 +22,7 @@
#include <stdarg.h>
-#ifdef __linux__ -#include <endian.h> -#else /* BSD Family */ -#include <machine/endian.h> -#endif - +#include "core/GP_ByteOrder.h" #include "core/GP_Debug.h" #include "core/GP_Common.h"
-----------------------------------------------------------------------
Summary of changes: demos/py_simple/pygtk_example.py | 51 -------------- .../{backends/GP_AALib.h => core/GP_ByteOrder.h} | 18 +++--- libs/loaders/GP_ByteUtils.c | 7 +-- libs/loaders/GP_PNG.c | 38 ++++++++++- libs/loaders/GP_PNM.c | 4 +- pylib/gfxprim/filters/__init__.py | 59 +++++++++++++++++ pylib/gfxprim/filters/filters.i | 25 +++++++ tests/core/BlitConv.gen.c.t | 2 +- tests/core/Context.c | 14 ++-- tests/core/GetSetBits.gen.c.t | 2 +- tests/core/Pixel.c | 6 +- tests/core/WritePixel.gen.c.t | 16 ++-- tests/filters/FilterMirrorH.c | 20 +++--- tests/filters/LinearConvolution.c | 6 +- tests/filters/common.c | 8 +- tests/framework/tst_job.c | 27 ++++++-- tests/framework/tst_job.h | 14 ++-- tests/framework/tst_log.c | 2 +- tests/framework/tst_log.h | 2 +- tests/framework/tst_msg.h | 2 +- tests/framework/tst_preload_FILE.h | 6 +- tests/framework/tst_test.h | 14 +++- tests/framework/tst_timespec.h | 2 +- tests/gfx/Circle.c | 16 ++-- tests/gfx/FillCircle.c | 16 ++-- tests/gfx/FillRect.c | 69 ++++++++++++++++++++ tests/gfx/HLine.c | 14 ++-- tests/gfx/HLineAA.c | 24 ++++---- tests/gfx/Line.c | 12 ++-- tests/gfx/LineAA.c | 8 +- tests/gfx/Polygon.c | 6 +- tests/gfx/PutPixelAA.c | 10 ++-- tests/gfx/VLine.c | 16 ++-- tests/gfx/common.c | 8 +- tests/gfx/gfx_benchmark.c | 4 +- tests/loaders/SaveLoad.gen.c.t | 2 +- 36 files changed, 351 insertions(+), 199 deletions(-) delete mode 100755 demos/py_simple/pygtk_example.py copy include/{backends/GP_AALib.h => core/GP_ByteOrder.h} (86%)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos@gmail.com if you want to unsubscribe, or site admin admin@repo.or.cz if you receive no reply.