From f52766e3d46097d997b88189092a8de36af85698 Mon Sep 17 00:00:00 2001 From: Gabriele Facciolo Date: Wed, 27 May 2015 09:52:47 +0200 Subject: [PATCH] some fixes --- glfw/__init__.py | 11 ++++++++--- glfw/glfw-3.0.4.bin.MAC64/libglfw.dylib | Bin 0 -> 205040 bytes piio/compile.mac64.sh | 11 +++++++++++ piio/iio.c | 8 +++++++- piio/piio.py | 14 ++++++++++++-- v.py | 16 ++++++++-------- 6 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 glfw/glfw-3.0.4.bin.MAC64/libglfw.dylib create mode 100644 piio/compile.mac64.sh diff --git a/glfw/__init__.py b/glfw/__init__.py index 3c6927e..cfca83a 100644 --- a/glfw/__init__.py +++ b/glfw/__init__.py @@ -46,16 +46,21 @@ lib_basename = 'glfw-3.0.4.bin.WIN32/lib-mingw/glfw3' elif sys.platform == 'darwin': lib_ext = '.dylib' - lib_basename = 'libglfw' -else: + lib_basename = 'glfw-3.0.4.bin.MAC64/libglfw' +else: # linux? lib_ext = '.so' lib_basename = 'libglfw' here = os.path.dirname(__file__) libfile = os.path.join(here, lib_basename+lib_ext) +# if the precompiled libs are not valid reset lib filename and build +if not os.path.exists(libfile): + lib_basename = 'libglfw' + libfile = os.path.join(here, lib_basename+lib_ext) + if os.path.exists(libfile): _glfw_file = libfile -else: +else: print 'BUILDING GLFW...' os.system('mkdir -p %s/build; cd %s/build; cmake -DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF ../glfw_src; make; cp src/libglfw%s %s '%(here,here, lib_ext, here)) print 'CLEANING BUILD...' diff --git a/glfw/glfw-3.0.4.bin.MAC64/libglfw.dylib b/glfw/glfw-3.0.4.bin.MAC64/libglfw.dylib new file mode 100644 index 0000000000000000000000000000000000000000..17850f176d93ab7c7b8c35dd502d822808703777 GIT binary patch literal 205040 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 U1^@9|X!iJue&_FTmx|;3U##FoKL7v# literal 0 HcmV?d00001 diff --git a/piio/compile.mac64.sh b/piio/compile.mac64.sh new file mode 100644 index 0000000..2ac465f --- /dev/null +++ b/piio/compile.mac64.sh @@ -0,0 +1,11 @@ +#WITHOUT EXR STATICALLY LINKED +#gcc-4.8 -std=c99 -c iio.c -I/usr/local/Cellar/libpng/1.5.14/include/ +#gcc-4.8 -std=c99 -c freemem.c +#gcc -dynamiclib -arch x86_64 -o MAC64/libiio.so iio.o freemem.o /usr/local/Cellar/libpng/1.5.18/lib/libpng.a /usr/local/Cellar/jpeg/8d/lib/libjpeg.a /usr/local/Cellar/libtiff/4.0.3/lib/libtiff.a /usr/local/Cellar/zlib/1.2.8/lib/libz.a + +#WITH EXR STATICALLY LINKED +gcc-4.8 -std=c99 -c iio.c -I/usr/local/Cellar/libpng/1.5.14/include/ -I/usr/local/include/OpenEXR -DI_CAN_HAS_LIBEXR -O3 -std=c99 -funroll-loops -Wno-unused -DNDEBUG +gcc-4.8 -std=c99 -c freemem.c -O3 +gcc -dynamiclib -arch x86_64 -o MAC64/libiio.so iio.o freemem.o /usr/local/lib/libImath.a /usr/local/lib/libIlmImf.a /usr/local/lib/libIex.a /usr/local/lib/libHalf.a /usr/local/lib/libIlmThread.a /usr/local/Cellar/zlib/1.2.8/lib/libz.a /usr/local/lib/libtiff.a /usr/local/lib/libjpeg.a /usr/local/Cellar/libpng/1.5.18/lib/libpng.a /usr/local/Cellar/zlib/1.2.8/lib/libz.a /usr/local/lib/libtiff.a /usr/local/lib/libjpeg.a /usr/local/Cellar/libpng/1.5.18/lib/libpng.a /usr/lib/libstdc++-static.a + + diff --git a/piio/iio.c b/piio/iio.c index 724689b..8da9dc4 100644 --- a/piio/iio.c +++ b/piio/iio.c @@ -638,7 +638,13 @@ static void inplace_flip_vertical(struct iio_image *x) static void inplace_transpose(struct iio_image *x) { - fail("inplace transpose not implemented"); + int w = x->sizes[0]; + int h = x->sizes[1]; + if (w != h) + fail("rectangular inplace transpose not implemented"); + for (int i = 0; i < w; i++) + for (int j = 0; j < i; j++) + inplace_swap_pixels(x, i, j, j, i); } static void inplace_reorient(struct iio_image *x, int orientation) diff --git a/piio/piio.py b/piio/piio.py index 82f6e4a..9f8347e 100644 --- a/piio/piio.py +++ b/piio/piio.py @@ -37,12 +37,22 @@ lib_basename = 'WIN64/iio' else: lib_basename = 'WIN32/iio' -else: # linux and osx +elif sys.platform.startswith('darwin'): # precompiled osx intel 64 bits + lib_basename = 'MAC64/libiio' + lib_ext = '.so' +else: # linux lib_basename = 'libiio' lib_ext = '.so' libiiofile= os.path.join(here, lib_basename+lib_ext) +### fallback if precompiled libraries are not usable +try: + os.stat(libiiofile) +except OSError: + lib_basename = 'libiio' + lib_ext = '.so' + libiiofile= os.path.join(here, lib_basename+lib_ext) ### HACK TO BUILD libiio ON THE FLY try: @@ -162,7 +172,7 @@ def read_tiled_buffers(filename): # generate the interlan memory to copy the tile data = ctypes.ARRAY(ctypes.c_float, N)() libiio.copy_tile(ptr, w, h, nch, data, x, y, ww, hh, out_nch) # only allow up to 4 channels - tiles.append( (data, x, y, ww,hh, out_nch) ) + tiles.append( [data, x, y, ww,hh, out_nch, -1] ) # -1 (the last field is a placeholder for the textureID) # free the memory diff --git a/v.py b/v.py index 5c8b888..8516f6a 100755 --- a/v.py +++ b/v.py @@ -736,7 +736,7 @@ def keyboard_callback(window, key, scancode, action, mods): glfw.glfwSetWindowShouldClose(window,1) global x0,y0,w0,h0 print(x0,y0,w0,h0) - exit(0) + sys.exit(0) @@ -774,8 +774,8 @@ def display( window ): # ideally winx,winy should be equal to D.w,D.h BUT if the # image is larger than the screen glutReshapeWindow(D.w,D.h) # will fail and winx,winy will be truncated to the size of the screen -# winx, winy= glfw.glfwGetFramebufferSize(window) - winx, winy= glfw.glfwGetWindowSize(window) + winx, winy= glfw.glfwGetFramebufferSize(window) +# winx, winy= glfw.glfwGetWindowSize(window) V.winx,V.winy=winx,winy glViewport(0, 0, winx, winy); @@ -998,7 +998,7 @@ def main(): from os import stat stat(sys.argv[1]) except OSError: - exit(1) + sys.exit(1) # otherwise use stdin as input (because it should be a pipe) else: sys.argv.append('-') @@ -1017,8 +1017,8 @@ def main(): # as we must find out the image size before creating the window D.imageBitmapTiles,D.w,D.h,D.nch,D.v_min,D.v_max = load_image(I1) D.filename = I1 - if I1 != '-': - from os import stat + from os import stat, path + if I1 != '-' and path.exists(I1): D.mtime = (stat(I1).st_mtime) V.data_min, V.data_max= D.v_min,D.v_max V.reset_scale_bias() @@ -1038,7 +1038,7 @@ def main(): from os import getcwd,chdir savepath = getcwd() if not glfw.glfwInit(): - exit() + sys.exit(1) chdir(savepath) @@ -1053,7 +1053,7 @@ def main(): if not window: glfw.glfwTerminate() - exit() + sys.exit(1) # Make the window's context current glfw.glfwMakeContextCurrent(window)