diff --git a/build_linux64/libamscppimglib4.linux64.a b/build_linux64/libamscppimglib4.linux64.a index b3c2a34..2896382 100644 Binary files a/build_linux64/libamscppimglib4.linux64.a and b/build_linux64/libamscppimglib4.linux64.a differ diff --git a/build_linux64/objstore/amscppimglib4_amsimage.o b/build_linux64/objstore/amscppimglib4_amsimage.o index b127693..b5f9485 100644 Binary files a/build_linux64/objstore/amscppimglib4_amsimage.o and b/build_linux64/objstore/amscppimglib4_amsimage.o differ diff --git a/build_linux64/objstore/amscppimglib4_tests.o b/build_linux64/objstore/amscppimglib4_tests.o index 48af647..de569d8 100644 Binary files a/build_linux64/objstore/amscppimglib4_tests.o and b/build_linux64/objstore/amscppimglib4_tests.o differ diff --git a/build_linux64/tests b/build_linux64/tests index d2c15ac..7a6c8cc 100644 Binary files a/build_linux64/tests and b/build_linux64/tests differ diff --git a/include/amscppimglib4/amscppimglib4.hpp b/include/amscppimglib4/amscppimglib4.hpp index 2d29af3..939eab5 100644 --- a/include/amscppimglib4/amscppimglib4.hpp +++ b/include/amscppimglib4/amscppimglib4.hpp @@ -69,18 +69,17 @@ namespace ams uint8_t& operator()(int Nc, int I, int J); const uint8_t& operator()(int Nc, int I, int J) const; - - - void clear(); void setall(amspixel color); - int setallplane(int Ncp, uint8_t val); + + //todo int get_colorplane(int Ncp, amsbitplane* bp); int set_colorplane(int Ncp, const amsbitplane* bp); //applies image with alpha blending int apply_image(int I0, int J0, amsimage *img); + //applied color to any pixels where the bitplane's value is >= thresh int apply_bitplane_nz(int I0, int J0, amsbitplane* bp, amspixel color, uint8_t thresh); diff --git a/include/amscppimglib4/amscppimglib4_tests.hpp b/include/amscppimglib4/amscppimglib4_tests.hpp index be7ea56..c6d2524 100644 --- a/include/amscppimglib4/amscppimglib4_tests.hpp +++ b/include/amscppimglib4/amscppimglib4_tests.hpp @@ -3,7 +3,8 @@ namespace ams { - + void amscppimglib4_test1(); + void amscppimglib4_test2(); }; //end namespace ams diff --git a/src/amscppimglib4/amscppimglib4_amsimage.cpp b/src/amscppimglib4/amscppimglib4_amsimage.cpp index 7c44a7e..934dd9f 100644 --- a/src/amscppimglib4/amscppimglib4_amsimage.cpp +++ b/src/amscppimglib4/amscppimglib4_amsimage.cpp @@ -541,4 +541,46 @@ namespace ams return ret; } + void amsimage::clear() + { + this->setall(amspixel(0,0,0,0)); + } + + void amsimage_setall_tf( + int threadnum, + int nthreads, + amsimage *img, + const amspixel color + ) + { + int64_t I,I0,I1,Is,N,Ix,Iy; + + N = img->Nx*img->Ny; + Is = N/nthreads; Is = (Is<1) ? 1 : Is; + I0 = Is*threadnum; + I1 = (threadnum<(nthreads-1)) ? Is*(threadnum+1) : N; + + for(I=I0;INx; + Iy = I0/img->Ny; + + img->data[0 + 4*(Ix + img->Nx*Iy)] = color.R; + img->data[1 + 4*(Ix + img->Nx*Iy)] = color.G; + img->data[2 + 4*(Ix + img->Nx*Iy)] = color.B; + img->data[3 + 4*(Ix + img->Nx*Iy)] = color.A; + } + } + + void amsimage::setall(amspixel color) + { + imglib4::threaded_execute( + amsimage_setall_tf, + this->Nx*this->Ny, + this, + color + ); + return; + } + }; \ No newline at end of file diff --git a/src/amscppimglib4/amscppimglib4_tests.cpp b/src/amscppimglib4/amscppimglib4_tests.cpp index ce584dd..0e00d3c 100644 --- a/src/amscppimglib4/amscppimglib4_tests.cpp +++ b/src/amscppimglib4/amscppimglib4_tests.cpp @@ -3,7 +3,7 @@ namespace ams { - void amscppimglib_test1() + void amscppimglib4_test1() { amsimage img1, img2; @@ -14,6 +14,40 @@ namespace ams img2 = img1.transpose().flipx(); printf("img1:(%d,%d)\n",img2.width,img2.height); + return; + } + + void amscppimglib4_test2() + { + amsimage img,img2; + const char *fname = "../testimg/testpfp0.png"; + char fname2[500]; + + read_image(fname,&img); + printf("image loaded: %s (%d,%d)\n",fname,img.width,img.height); + + img2 = img.rotcw(); + sprintf(fname2,"../testimg/test_rotcw.png"); + write_image(fname2,&img2); + + img2 = img.rotccw(); + sprintf(fname2,"../testimg/test_rotccw.png"); + write_image(fname2,&img2); + + img2 = img.flipx(); + sprintf(fname2,"../testimg/test_flipx.png"); + write_image(fname2,&img2); + + img2 = img.flipy(); + sprintf(fname2,"../testimg/test_flipy.png"); + write_image(fname2,&img2); + + img2 = img.transpose(); + sprintf(fname2,"../testimg/test_transpose.png"); + write_image(fname2,&img2); + + + return; } diff --git a/src/main.cpp b/src/main.cpp index 6b540b1..e229bd4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,7 +6,8 @@ int main(int argc, char* argv[]) { int ret = 0; - amscppimglib_test1(); + //amscppimglib4_test1(); + amscppimglib4_test2(); return ret; } \ No newline at end of file diff --git a/testimg/test_flipx.png b/testimg/test_flipx.png new file mode 100644 index 0000000..1d90a8a Binary files /dev/null and b/testimg/test_flipx.png differ diff --git a/testimg/test_flipy.png b/testimg/test_flipy.png new file mode 100644 index 0000000..efc0982 Binary files /dev/null and b/testimg/test_flipy.png differ diff --git a/testimg/test_rotccw.png b/testimg/test_rotccw.png new file mode 100644 index 0000000..7444026 Binary files /dev/null and b/testimg/test_rotccw.png differ diff --git a/testimg/test_rotcw.png b/testimg/test_rotcw.png new file mode 100644 index 0000000..0b6d91e Binary files /dev/null and b/testimg/test_rotcw.png differ diff --git a/testimg/test_transpose.png b/testimg/test_transpose.png new file mode 100644 index 0000000..5299029 Binary files /dev/null and b/testimg/test_transpose.png differ diff --git a/testimg/testpfp0.bmp b/testimg/testpfp0.bmp new file mode 100644 index 0000000..47691cd Binary files /dev/null and b/testimg/testpfp0.bmp differ diff --git a/testimg/testpfp0.jpg b/testimg/testpfp0.jpg new file mode 100644 index 0000000..000b50f Binary files /dev/null and b/testimg/testpfp0.jpg differ diff --git a/testimg/testpfp0.png b/testimg/testpfp0.png new file mode 100644 index 0000000..1d4e780 Binary files /dev/null and b/testimg/testpfp0.png differ