]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
put back Carbon UI as alternative highgui back-end (for MacOSX 10.5 users, where...
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Thu, 25 Mar 2010 22:45:32 +0000 (22:45 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Thu, 25 Mar 2010 22:45:32 +0000 (22:45 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2909 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/CMakeLists.txt
opencv/src/highgui/CMakeLists.txt
opencv/src/highgui/window_cocoa.mm

index 5223ce4f3ccfe1a6a5f6f57bb5be4e50ed36a9c0..e9fc0ca63a30b0e6c545dea9642c63821fa47fd9 100644 (file)
@@ -263,13 +263,19 @@ set(WITH_TIFF ON CACHE BOOL "Include TIFF support")
 \r
 if(UNIX)\r
     set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support")\r
-    set(WITH_UNICAP ON CACHE BOOL "Include Unicap support")\r
-    set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")\r
-    set(WITH_GTK ON CACHE BOOL "Include GTK support")\r
-    set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")\r
-    set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")\r
-    set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")\r
-    set(WITH_XINE ON CACHE BOOL "Include Xine support")\r
+    if(NOT APPLE)\r
+               set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)")\r
+       set(WITH_GTK ON CACHE BOOL "Include GTK support")\r
+       set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")\r
+       set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")\r
+       set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)")\r
+       endif()\r
+       set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")\r
+       set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")\r
+endif()\r
+\r
+if(APPLE)\r
+       set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa")\r
 endif()\r
 \r
 set(WITH_TBB OFF CACHE BOOL "Include TBB support")\r
@@ -1036,6 +1042,16 @@ message(STATUS "    GThread:                   ${HAVE_GTHREAD}")
 message(STATUS "")\r
 endif()\r
 \r
+if(APPLE)\r
+message(STATUS "")\r
+if(HAVE_CARBON)\r
+message(STATUS "  GUI Back-end:                Carbon")\r
+else()\r
+message(STATUS "  GUI Back-end:                Cocoa")\r
+endif()\r
+message(STATUS "")\r
+endif()        \r
+\r
 message(STATUS "  Image I/O: ")\r
 if(NOT WITH_JPEG OR JPEG_FOUND)\r
 message(STATUS "    JPEG:                      ${JPEG_FOUND}")\r
index 07710c23bae96e3a2eeca7184bbbf2bbb0d912ad..f4b64c02b014647670b8f656f04fa2ee93c03a73 100644 (file)
@@ -145,11 +145,18 @@ if(UNIX)
 endif()
 
 if(APPLE)
-    add_definitions(-DHAVE_QUICKTIME=1 -DHAVE_COCOA=1)
+    add_definitions(-DHAVE_QUICKTIME=1)
     if(NOT OPENCV_BUILD_3RDPARTY_LIBS)
         add_definitions(-DHAVE_IMAGEIO=1)
     endif()
-    set(highgui_srcs ${highgui_srcs} window_cocoa.mm cvcap_qt.mm)
+    set(highgui_srcs ${highgui_srcs} cvcap_qt.mm)
+    if(WITH_CARBON)
+        add_definitions(-DHAVE_CARBON=1)
+        set(highgui_srcs ${highgui_srcs} window_carbon.cpp)
+    else()
+        add_definitions(-DHAVE_COCOA=1)
+        set(highgui_srcs ${highgui_srcs} window_cocoa.mm)
+    endif()
 endif(APPLE)
 
 source_group("Src" FILES ${highgui_srcs} ${highgui_hdrs})
@@ -259,6 +266,9 @@ endif()
 
 if(APPLE)
        target_link_libraries(${the_target} "-framework QTKit -lbz2 -framework Cocoa -framework CoreFoundation -framework QuartzCore")
+       if(WITH_CARBON)
+               target_link_libraries(${the_target} "-framework Carbon -framework QuickTime")
+       endif()
 endif()
 
 install(TARGETS ${the_target}
index 1f9ce0af0d4acffe33e64a486bde78461bf6c631..06916a14eeaf2d63d810764ba62edc9726b8eb54 100644 (file)
@@ -92,12 +92,12 @@ static bool wasInitialized = false;
 
 static void icvCocoaCleanup(void)
 {
-    /*if( application )
+    if( application )
     {
         [application terminate:nil];
         application = 0;
         [pool release];
-    }*/
+    }
 }
 
 CV_IMPL int cvInitSystem( int argc, char** argv) 
@@ -154,23 +154,30 @@ CV_IMPL void cvDestroyAllWindows( void )
 CV_IMPL void cvShowImage( const char* name, const CvArr* arr)
 {
        CVWindow *window = cvGetWindow(name);
-       if(window) {
+    if(!window)
+    {
+        cvNamedWindow(name, CV_WINDOW_AUTOSIZE);
+        window = cvGetWindow(name);
+    }
+    
+       if(window)
+    {
         bool empty = [[window contentView] image] == nil;
         NSRect rect = [window frame];
         NSRect vrectOld = [[window contentView] frame];
         
                [[window contentView] setImageData:(CvArr *)arr];
-               if([window autosize] || empty) {
+               if([window autosize] || empty)
+        {
                        NSRect vrectNew = vrectOld;
             vrectNew.size = [[[window contentView] image] size];
             rect.size.width += vrectNew.size.width - vrectOld.size.width;
             rect.size.height += vrectNew.size.height - vrectOld.size.height;
                        [window setFrame:rect display:YES];
-               } else {
-                       [window display];
                }
+        else
+                       [window display];
        }
-       
 }
 
 CV_IMPL void cvResizeWindow( const char* name, int width, int height)
@@ -339,7 +346,14 @@ CV_IMPL int cvNamedWindow( const char* name, int flags )
     if( !wasInitialized )
         cvInitSystem(0, 0);
     
-       CVWindow *window = [[CVWindow alloc] initWithContentRect:NSMakeRect(0,0,200,200)
+       CVWindow *window = cvGetWindow(name);
+    if( window )
+    {
+        [window setAutosize:(flags == CV_WINDOW_AUTOSIZE)];
+        return 0;
+    }
+    
+    window = [[CVWindow alloc] initWithContentRect:NSMakeRect(0,0,200,200)
         styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|
         (!(flags & CV_WND_PROP_AUTOSIZE) ? NSResizableWindowMask : 0)
         backing:NSBackingStoreBuffered