diff --git a/build/make.linux64.lib.py b/build/make.linux64.lib.py index f043572..1b0dce6 100644 --- a/build/make.linux64.lib.py +++ b/build/make.linux64.lib.py @@ -17,7 +17,7 @@ builddir = "./build_linux64" doinstall = True #copies the build_output to the install dir when finished cc = "g++" #compiler cflags = "-fPIC" -libraries = "-l{} -lamscimglib4.linux64".format(libname) +libraries = "-l{} -lamscimglib4.linux64 -lpthread".format(libname) libdirs = "-L{} -L{}/lib -L{}/lib".format(builddir,commondir,depdir) linkerflags = "-static-libgcc -Wl,-rpath=." srcexts = [".c",".cpp"] diff --git a/build/make.mingw64.lib.py b/build/make.mingw64.lib.py index ba72a81..5d59868 100644 --- a/build/make.mingw64.lib.py +++ b/build/make.mingw64.lib.py @@ -17,9 +17,9 @@ builddir = "./build_mingw64" doinstall = True #copies the build_output to the install dir when finished cc = "x86_64-w64-mingw32-g++" #compiler cflags = "-fPIC -O3" -libraries = "-l{} -lamscimglib4.winx64".format(libname) +libraries = "-l{} -lamscimglib4.winx64 -lpthread".format(libname) libdirs = "-L{} -L{}/lib -L{}/lib".format(builddir,commondir,depdir) -linkerflags = "-static-libgcc -static-libstdc++ -Wl,-rpath=." +linkerflags = "--static -static-libgcc -static-libstdc++ -Wl,-rpath=." srcexts = [".c",".cpp"] binsrc = ["main.c","main.cpp"] #ignore these files when compiling the static library diff --git a/build/make.mingw64.test.py b/build/make.mingw64.test.py index 0ae463e..bd0ef51 100644 --- a/build/make.mingw64.test.py +++ b/build/make.mingw64.test.py @@ -19,7 +19,7 @@ cc = "x86_64-w64-mingw32-g++" #compiler cflags = "-fPIC -O3" libraries = "-l{} -lamscimglib4.winx64".format(libname) libdirs = "-L{} -L{}/lib -L{}/lib".format(builddir,commondir,depdir) -linkerflags = "-static-libgcc -static-libstdc++ -Wl,-rpath=." +linkerflags = "--static -static-libgcc -static-libstdc++ -Wl,-rpath=." srcexts = [".c",".cpp"] binsrc = ["main.c","main.cpp"] #ignore these files when compiling the static library diff --git a/build_linux64/libamscppimglib4.linux64.a b/build_linux64/libamscppimglib4.linux64.a index 6fda86b..b3c2a34 100644 Binary files a/build_linux64/libamscppimglib4.linux64.a and b/build_linux64/libamscppimglib4.linux64.a differ diff --git a/build_linux64/objstore/amscppimglib4_amsbitplane.o b/build_linux64/objstore/amscppimglib4_amsbitplane.o index 35e0749..c184851 100644 Binary files a/build_linux64/objstore/amscppimglib4_amsbitplane.o and b/build_linux64/objstore/amscppimglib4_amsbitplane.o differ diff --git a/build_linux64/objstore/amscppimglib4_amsimage.o b/build_linux64/objstore/amscppimglib4_amsimage.o index e3e8991..b127693 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_amspixel.o b/build_linux64/objstore/amscppimglib4_amspixel.o index d448041..214b296 100644 Binary files a/build_linux64/objstore/amscppimglib4_amspixel.o and b/build_linux64/objstore/amscppimglib4_amspixel.o differ diff --git a/build_linux64/objstore/amscppimglib4_intlutil.o b/build_linux64/objstore/amscppimglib4_intlutil.o index f499330..6f9dba3 100644 Binary files a/build_linux64/objstore/amscppimglib4_intlutil.o and b/build_linux64/objstore/amscppimglib4_intlutil.o differ diff --git a/build_linux64/objstore/amscppimglib4_template.o b/build_linux64/objstore/amscppimglib4_template.o index 8791256..938b43b 100644 Binary files a/build_linux64/objstore/amscppimglib4_template.o and b/build_linux64/objstore/amscppimglib4_template.o differ diff --git a/build_linux64/objstore/amscppimglib4_tests.o b/build_linux64/objstore/amscppimglib4_tests.o index dbd48b9..48af647 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 da5cbbb..d2c15ac 100644 Binary files a/build_linux64/tests and b/build_linux64/tests differ diff --git a/build_mingw64/libamscppimglib4.mingw64.a b/build_mingw64/libamscppimglib4.mingw64.a index dd0be5b..26da879 100644 Binary files a/build_mingw64/libamscppimglib4.mingw64.a and b/build_mingw64/libamscppimglib4.mingw64.a differ diff --git a/build_mingw64/objstore/amscppimglib4_amsbitplane.o b/build_mingw64/objstore/amscppimglib4_amsbitplane.o index ca1ebae..ad7deb9 100644 Binary files a/build_mingw64/objstore/amscppimglib4_amsbitplane.o and b/build_mingw64/objstore/amscppimglib4_amsbitplane.o differ diff --git a/build_mingw64/objstore/amscppimglib4_amsimage.o b/build_mingw64/objstore/amscppimglib4_amsimage.o index 5089bf8..e2951a3 100644 Binary files a/build_mingw64/objstore/amscppimglib4_amsimage.o and b/build_mingw64/objstore/amscppimglib4_amsimage.o differ diff --git a/build_mingw64/objstore/amscppimglib4_amspixel.o b/build_mingw64/objstore/amscppimglib4_amspixel.o index 0ce4dd6..7979226 100644 Binary files a/build_mingw64/objstore/amscppimglib4_amspixel.o and b/build_mingw64/objstore/amscppimglib4_amspixel.o differ diff --git a/build_mingw64/objstore/amscppimglib4_intlutil.o b/build_mingw64/objstore/amscppimglib4_intlutil.o index d7eedd6..8549f8d 100644 Binary files a/build_mingw64/objstore/amscppimglib4_intlutil.o and b/build_mingw64/objstore/amscppimglib4_intlutil.o differ diff --git a/build_mingw64/objstore/amscppimglib4_template.o b/build_mingw64/objstore/amscppimglib4_template.o index cf14878..04c7917 100644 Binary files a/build_mingw64/objstore/amscppimglib4_template.o and b/build_mingw64/objstore/amscppimglib4_template.o differ diff --git a/build_mingw64/objstore/amscppimglib4_tests.o b/build_mingw64/objstore/amscppimglib4_tests.o index c270647..1cdfb89 100644 Binary files a/build_mingw64/objstore/amscppimglib4_tests.o and b/build_mingw64/objstore/amscppimglib4_tests.o differ diff --git a/build_mingw64/tests.exe b/build_mingw64/tests.exe index 761c24c..44529d8 100644 Binary files a/build_mingw64/tests.exe and b/build_mingw64/tests.exe differ diff --git a/src/amscppimglib4/amscppimglib4_amsimage.cpp b/src/amscppimglib4/amscppimglib4_amsimage.cpp index 98feec7..7c44a7e 100644 --- a/src/amscppimglib4/amscppimglib4_amsimage.cpp +++ b/src/amscppimglib4/amscppimglib4_amsimage.cpp @@ -1,5 +1,6 @@ #include #include +#include namespace ams { @@ -458,4 +459,86 @@ namespace ams return data[Nc + 4*(I + Nx*J)]; } + + int read_image(const char *fname, amsimage* image) + { + int ret = amsimage_success; + int res; + amscimglib4_image *im2 = NULL; + + if(image==NULL) + { + ret = amsimage_failure; + printf("read_image: Error: image pointer is null.\n"); + return ret; + } + + res = amscimglib4_image_new(&im2,1,1); + if(res!=amscimglib4_success) + { + ret = amsimage_failure; + printf("read_image: Error: c image struct failed to allocate.\n"); + return ret; + } + + amscimglib4_readimage(fname,im2); + //you can NOT move buffers. The im2 buffers are created with malloc, not new. No pseudo-move-semantics for you! + + //copy buffers + res = image->resize(im2->sizex,im2->sizey); + if(res!=amsimage_success) + { + ret = amsimage_failure; + amscimglib4_image_delete(&im2); + printf("read_image: Error: c++ image failed to allocate.\n"); + return ret; + } + + //both structures have the same memory layout, so the internal copy function works + imglib4::amsimage_region_copy( + image->data,image->Nx,image->Ny, + im2->data,im2->sizex,im2->sizey, + 0,0 + ); + + + amscimglib4_image_delete(&im2); + + return ret; + } + + int write_image(const char *fname, amsimage* image) + { + int ret = amsimage_success; + int res; + amscimglib4_image *im2 = NULL; + + if(image==NULL) + { + ret = amsimage_failure; + printf("write_image: Error: image pointer is null.\n"); + return ret; + } + + res = amscimglib4_image_new(&im2,image->Nx,image->Ny); + if(res!=amscimglib4_success) + { + ret = amsimage_failure; + printf("write_image: Error: c image struct failed to allocate.\n"); + return ret; + } + + //both structures have the same memory layout, so the internal copy function works + imglib4::amsimage_region_copy( + im2->data,im2->sizex,im2->sizey, + image->data,image->Nx,image->Ny, + 0,0 + ); + + amscimglib4_writeimage(fname,im2); + + amscimglib4_image_delete(&im2); + return ret; + } + }; \ No newline at end of file