[QGIS Commit] r11875 - in trunk/code_examples/4_adding_rasters_to_canvas: . cmake_find_rules

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sat Oct 31 18:20:17 EDT 2009


Author: timlinux
Date: 2009-10-31 18:20:16 -0400 (Sat, 31 Oct 2009)
New Revision: 11875

Added:
   trunk/code_examples/4_adding_rasters_to_canvas/CMakeLists.txt
   trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/
   trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGDAL.cmake
   trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGEOS.cmake
   trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindQGIS.cmake
Modified:
   trunk/code_examples/4_adding_rasters_to_canvas/mainwindow.cpp
Log:
Updates to make tut4 compile against qgis 1.0. Tut text still needs updating

Added: trunk/code_examples/4_adding_rasters_to_canvas/CMakeLists.txt
===================================================================
--- trunk/code_examples/4_adding_rasters_to_canvas/CMakeLists.txt	                        (rev 0)
+++ trunk/code_examples/4_adding_rasters_to_canvas/CMakeLists.txt	2009-10-31 22:20:16 UTC (rev 11875)
@@ -0,0 +1,116 @@
+cmake_minimum_required(VERSION 2.6)
+PROJECT(timtut4)
+SET(CMAKE_COLOR_MAKEFILE ON)
+# set path to additional CMake modules
+SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_find_rules ${CMAKE_MODULE_PATH})
+FIND_PACKAGE(QGIS REQUIRED)
+IF (NOT QGIS_FOUND)
+  MESSAGE (SEND_ERROR "QGIS dependency was not found!")
+ENDIF (NOT QGIS_FOUND)
+IF (WIN32)
+  # expect that classes are being imported by default
+  # Note: MSVC doesn't like when the macros are quotes
+  # and MSYS doesn't like them unqouted (bacause of braces)
+  # import qgis classes
+  IF (MSVC)
+    ADD_DEFINITIONS("-DGUI_EXPORT=__declspec(dllimport)")
+    ADD_DEFINITIONS("-DCORE_EXPORT=__declspec(dllimport)")
+  ELSE (MSVC)
+    ADD_DEFINITIONS("\"-DGUI_EXPORT=__declspec(dllimport)\"")
+    ADD_DEFINITIONS("\"-DCORE_EXPORT=__declspec(dllimport)\"")
+  ENDIF (MSVC)
+ELSE (WIN32)
+  ADD_DEFINITIONS(-DGUI_EXPORT=)
+  ADD_DEFINITIONS(-DCORE_EXPORT=)
+ENDIF (WIN32)
+
+FIND_PACKAGE(GDAL REQUIRED)
+IF (NOT GDAL_FOUND)
+  MESSAGE (SEND_ERROR "GDAL dependency was not found!")
+ENDIF (NOT GDAL_FOUND)
+
+FIND_PACKAGE(GEOS REQUIRED)
+IF (NOT GEOS_FOUND)
+  MESSAGE (SEND_ERROR "GEOS dependency was not found!")
+ENDIF (NOT GEOS_FOUND)
+
+IF (CMAKE_BUILD_TYPE MATCHES Debug)
+  ADD_DEFINITIONS(-Dtimtut4DEBUG=1)
+ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
+########################################################
+# Files
+
+SET (timtut4_SRCS
+     main.cpp
+     mainwindow.cpp
+)
+
+# This tut uses no UIs
+SET (timtut4_UIS 
+  mainwindowbase.ui
+)
+
+# This tut needs no MOC
+SET (timtut4_MOC_HDRS
+  mainwindow.h
+)
+
+
+SET (timtut4_RCCS
+ resources.qrc 
+)
+
+SET (QT_USE_QT3SUPPORT FALSE)
+SET (QT_USE_QTGUI TRUE)
+SET (QT_USE_QTSQL TRUE)
+SET (QT_USE_QTSVG TRUE)
+SET (QT_USE_QTXML TRUE)
+SET (QT_USE_QTNETWORK TRUE)
+FIND_PACKAGE(Qt4 REQUIRED)
+INCLUDE( ${QT_USE_FILE} )
+########################################################
+# Build
+
+QT4_WRAP_UI (timtut4_UIS_H  ${timtut4_UIS})
+
+QT4_WRAP_CPP (timtut4_MOC_SRCS  ${timtut4_MOC_HDRS})
+
+QT4_ADD_RESOURCES(timtut4_RCC_SRCS ${timtut4_RCCS})
+
+ADD_EXECUTABLE (timtut4 ${timtut4_SRCS} ${timtut4_MOC_SRCS} ${timtut4_RCC_SRCS} ${timtut4_UIS_H})
+
+INCLUDE_DIRECTORIES(
+     ${GDAL_INCLUDE_DIR}
+     ${GEOS_INCLUDE_DIR}
+     ${CMAKE_CURRENT_BINARY_DIR}
+     ${QT_INCLUDE_DIR}
+     ${QGIS_INCLUDE_DIR}
+     .
+)
+
+#This is probably no longer needed, but I will leave it in for Win machines for the moment
+IF(QT_QTSQL_FOUND)
+ FIND_LIBRARY(QT_QTSQL_LIBRARY NAMES QtSql QtSql4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
+ SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_QTSQL_LIBRARY})
+ENDIF(QT_QTSQL_FOUND)
+
+TARGET_LINK_LIBRARIES(timtut4
+  ${QT_LIBRARIES}
+  ${QGIS_CORE_LIBRARY} 
+  ${QGIS_GUI_LIBRARY}
+  ${GEOS_LIBRARY}
+  ${GDAL_LIBRARY}
+)
+
+IF (MSVC)
+  # Very important or you get all kinds of odd side
+  #effects like app crash on start up saying qtgui.dll
+  TARGET_LINK_LIBRARIES( timtut4
+                         qtmain
+                       )
+ENDIF (MSVC)
+
+########################################################
+# Install
+
+

Added: trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGDAL.cmake
===================================================================
--- trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGDAL.cmake	                        (rev 0)
+++ trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGDAL.cmake	2009-10-31 22:20:16 UTC (rev 11875)
@@ -0,0 +1,129 @@
+## Once run this will define: 
+## 
+## GDAL_FOUND       = system has GDAL lib
+##
+## GDAL_LIBRARY     = full path to the library
+##
+## GDAL_INCLUDE_DIR      = where to find headers 
+##
+## Magnus Homann
+
+
+IF(WIN32)
+
+  IF (MINGW)
+    FIND_PATH(GDAL_INCLUDE_DIR gdal.h /usr/local/include /usr/include c:/msys/local/include)
+    FIND_LIBRARY(GDAL_LIBRARY NAMES gdal PATHS /usr/local/lib /usr/lib c:/msys/local/lib)
+  ENDIF (MINGW)
+
+  IF (MSVC)
+    FIND_PATH(GDAL_INCLUDE_DIR gdal.h 
+       "$ENV{LIB_DIR}/include/gdal"
+       )
+    FIND_LIBRARY(GDAL_LIBRARY NAMES gdal PATHS 
+       "$ENV{LIB_DIR}/lib/"
+       )
+
+    # NOTE: under msvc you should add the following to your target link libraries
+    # list as they are required by gdal
+    #odbc32 odbccp32
+
+  ENDIF (MSVC)
+  
+  
+ELSE(WIN32)
+  IF(UNIX) 
+
+    # try to use framework on mac
+    IF (APPLE)
+      SET (GDAL_MAC_PATH /Library/Frameworks/GDAL.framework/unix/bin)
+    ENDIF (APPLE)
+
+    SET(GDAL_CONFIG_PREFER_PATH "$ENV{GDAL_HOME}/bin" CACHE STRING "preferred path to GDAL (gdal-config)")
+    FIND_PROGRAM(GDAL_CONFIG gdal-config
+      ${GDAL_CONFIG_PREFER_PATH}
+      ${GDAL_MAC_PATH}
+      /usr/local/bin/
+      /usr/bin/
+      )
+    # MESSAGE("DBG GDAL_CONFIG ${GDAL_CONFIG}")
+    
+    IF (GDAL_CONFIG) 
+      # set INCLUDE_DIR to prefix+include
+      EXEC_PROGRAM(${GDAL_CONFIG}
+        ARGS --prefix
+        OUTPUT_VARIABLE GDAL_PREFIX)
+      #SET(GDAL_INCLUDE_DIR ${GDAL_PREFIX}/include CACHE STRING INTERNAL)
+      FIND_PATH(GDAL_INCLUDE_DIR 
+        gdal.h 
+        ${GDAL_PREFIX}/include/gdal
+        ${GDAL_PREFIX}/include
+        /usr/local/include 
+        /usr/include 
+        )
+
+      ## extract link dirs for rpath  
+      EXEC_PROGRAM(${GDAL_CONFIG}
+        ARGS --libs
+        OUTPUT_VARIABLE GDAL_CONFIG_LIBS )
+
+      ## split off the link dirs (for rpath)
+      ## use regular expression to match wildcard equivalent "-L*<endchar>"
+      ## with <endchar> is a space or a semicolon
+      STRING(REGEX MATCHALL "[-][L]([^ ;])+" 
+        GDAL_LINK_DIRECTORIES_WITH_PREFIX 
+        "${GDAL_CONFIG_LIBS}" )
+        #      MESSAGE("DBG  GDAL_LINK_DIRECTORIES_WITH_PREFIX=${GDAL_LINK_DIRECTORIES_WITH_PREFIX}")
+
+      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
+      
+      IF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
+        STRING(REGEX REPLACE "[-][L]" "" GDAL_LINK_DIRECTORIES ${GDAL_LINK_DIRECTORIES_WITH_PREFIX} )
+      ENDIF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
+
+      ## split off the name
+      ## use regular expression to match wildcard equivalent "-l*<endchar>"
+      ## with <endchar> is a space or a semicolon
+      STRING(REGEX MATCHALL "[-][l]([^ ;])+" 
+        GDAL_LIB_NAME_WITH_PREFIX 
+        "${GDAL_CONFIG_LIBS}" )
+        #      MESSAGE("DBG  GDAL_LIB_NAME_WITH_PREFIX=${GDAL_LIB_NAME_WITH_PREFIX}")
+
+
+      ## remove prefix -l because we need the pure name
+      
+      IF (GDAL_LIB_NAME_WITH_PREFIX)
+        STRING(REGEX REPLACE "[-][l]" "" GDAL_LIB_NAME ${GDAL_LIB_NAME_WITH_PREFIX} )
+      ENDIF (GDAL_LIB_NAME_WITH_PREFIX)
+
+      IF (APPLE)
+        SET(GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES}/lib${GDAL_LIB_NAME}.dylib CACHE STRING INTERNAL)
+      ELSE (APPLE)
+       SET(GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES}/lib${GDAL_LIB_NAME}.so CACHE STRING INTERNAL)
+      ENDIF (APPLE)
+      
+    ELSE(GDAL_CONFIG)
+      MESSAGE("FindGDAL.cmake: gdal-config not found. Please set it manually. GDAL_CONFIG=${GDAL_CONFIG}")
+    ENDIF(GDAL_CONFIG)
+
+  ENDIF(UNIX)
+ENDIF(WIN32)
+
+
+IF (GDAL_INCLUDE_DIR AND GDAL_LIBRARY)
+   SET(GDAL_FOUND TRUE)
+ENDIF (GDAL_INCLUDE_DIR AND GDAL_LIBRARY)
+
+IF (GDAL_FOUND)
+
+   IF (NOT GDAL_FIND_QUIETLY)
+      MESSAGE(STATUS "Found GDAL: ${GDAL_LIBRARY}")
+   ENDIF (NOT GDAL_FIND_QUIETLY)
+
+ELSE (GDAL_FOUND)
+
+   MESSAGE(GDAL_INCLUDE_DIR=${GDAL_INCLUDE_DIR})
+   MESSAGE(GDAL_LIBRARY=${GDAL_LIBRARY})
+   MESSAGE(FATAL_ERROR "Could not find GDAL")
+
+ENDIF (GDAL_FOUND)

Added: trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGEOS.cmake
===================================================================
--- trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGEOS.cmake	                        (rev 0)
+++ trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindGEOS.cmake	2009-10-31 22:20:16 UTC (rev 11875)
@@ -0,0 +1,45 @@
+
+# CMake module to search for GEOS library
+#
+# If it's found it sets GEOS_FOUND to TRUE
+# and following variables are set:
+#    GEOS_INCLUDE_DIR
+#    GEOS_LIBRARY
+
+
+FIND_PATH(GEOS_INCLUDE_DIR geos.h 
+  /usr/local/include 
+  /usr/include 
+  #MSVC
+  "$ENV{LIB_DIR}/include"
+  #mingw
+  c:/msys/local/include
+  )
+
+FIND_LIBRARY(GEOS_LIBRARY NAMES geos PATHS 
+  /usr/local/lib 
+  /usr/lib 
+  #MSVC
+  "$ENV{LIB_DIR}/lib"
+  #mingw
+  c:/msys/local/lib
+  )
+
+IF (GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
+   SET(GEOS_FOUND TRUE)
+ENDIF (GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
+
+
+IF (GEOS_FOUND)
+
+   IF (NOT GEOS_FIND_QUIETLY)
+      MESSAGE(STATUS "Found GEOS: ${GEOS_LIBRARY}")
+   ENDIF (NOT GEOS_FIND_QUIETLY)
+
+ELSE (GEOS_FOUND)
+
+   IF (GEOS_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find GEOS")
+   ENDIF (GEOS_FIND_REQUIRED)
+
+ENDIF (GEOS_FOUND)

Added: trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindQGIS.cmake
===================================================================
--- trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindQGIS.cmake	                        (rev 0)
+++ trunk/code_examples/4_adding_rasters_to_canvas/cmake_find_rules/FindQGIS.cmake	2009-10-31 22:20:16 UTC (rev 11875)
@@ -0,0 +1,100 @@
+## Once run this will define: 
+## 
+## QGIS_FOUND       = system has QGIS lib
+##
+## QGIS_CORE_LIBRARY     = full path to the CORE library
+## QGIS_GUI_LIBRARY      = full path to the GUI library
+## QGIS_PLUGIN_DIR       = full path to where QGIS plugins are installed
+## QGIS_INCLUDE_DIR      = where to find headers 
+##
+## Tim Sutton
+
+#MESSAGE("Searching for QGIS")
+IF(WIN32)
+  #MESSAGE("Searching for QGIS in C:/program files/Quantum GIS")
+  IF (MINGW)
+  FIND_PATH(QGIS_PLUGIN_DIR libnortharrowplugin.dll 
+	  "C:/Program Files/Quantum GIS/plugins" 
+	  )
+  FIND_PATH(QGIS_INCLUDE_DIR qgsapplication.h 
+	  "C:/Program Files/Quantum GIS/include" 
+	  )
+  FIND_LIBRARY(QGIS_CORE_LIBRARY NAMES qgis_core PATHS 
+	  "C:/Program Files/Quantum GIS/" 
+	  )
+  FIND_LIBRARY(QGIS_GUI_LIBRARY NAMES qgis_gui PATHS 
+	  "C:/Program Files/Quantum GIS/" 
+	  )
+  ENDIF (MINGW)
+
+  IF (MSVC)
+  FIND_PATH(QGIS_PLUGIN_DIR libnortharrowplugin.dll 
+	  "C:/Program Files/Quantum GIS/lib/qgis" 
+	  )
+  FIND_PATH(QGIS_INCLUDE_DIR qgsapplication.h 
+	  "$ENV{LIB_DIR}/include/qgis" 
+	  )
+  FIND_LIBRARY(QGIS_CORE_LIBRARY NAMES qgis_core PATHS 
+	  "$ENV{LIB_DIR}/lib/" 
+	  )
+  FIND_LIBRARY(QGIS_GUI_LIBRARY NAMES qgis_gui PATHS 
+	  "$ENV{LIB_DIR}/lib/" 
+	  )
+  ENDIF (MSVC)
+
+ELSE(WIN32)
+  IF(UNIX) 
+
+    # try to use bundle on mac
+    IF (APPLE)
+      #MESSAGE("Searching for QGIS in /Applications/QGIS.app/Contents/MacOS")
+      SET (QGIS_MAC_PATH /Applications/QGIS1.0.0.app/Contents/MacOS)
+      SET (QGIS_LIB_DIR ${QGIS_MAC_PATH}/lib)
+      SET (QGIS_PLUGIN_DIR ${QGIS_MAC_PATH}/lib/qgis CACHE STRING INTERNAL)
+      # set INCLUDE_DIR to prefix+include
+      SET(QGIS_INCLUDE_DIR ${QGIS_MAC_PATH}/include/qgis CACHE STRING INTERNAL)
+      ## extract link dirs 
+      SET(QGIS_CORE_LIBRARY ${QGIS_LIB_DIR}/libqgis_core.dylib CACHE STRING INTERNAL)
+      SET(QGIS_GUI_LIBRARY ${QGIS_LIB_DIR}/libqgis_gui.dylib CACHE STRING INTERNAL)
+    ELSE (APPLE) # Unix / Linux
+      #MESSAGE("Searching for QGIS in /usr/bin; /usr/local/bin")
+      FIND_PATH(QGIS_PLUGIN_DIR libnortharrowplugin.so
+	      /usr/lib/qgis
+        /usr/local/lib/qgis
+	      "$ENV{LIB_DIR}/lib/qgis" 
+	      )
+      FIND_PATH(QGIS_INCLUDE_DIR qgis.h 
+       /usr/include/qgis
+       /usr/local/include/qgis
+	     "$ENV{LIB_DIR}/include/qgis" 
+       )
+      FIND_LIBRARY(QGIS_CORE_LIBRARY NAMES qgis_core PATHS 
+       /usr/lib
+       /usr/local/lib
+	     "$ENV{LIB_DIR}/lib" 
+       )
+       FIND_LIBRARY(QGIS_GUI_LIBRARY NAMES qgis_gui PATHS 
+       /usr/lib
+       /usr/local/lib
+	     "$ENV{LIB_DIR}/lib" 
+       )
+    ENDIF (APPLE)
+  ENDIF(UNIX)
+ENDIF(WIN32)
+
+
+IF (QGIS_INCLUDE_DIR AND QGIS_CORE_LIBRARY AND QGIS_GUI_LIBRARY)
+   SET(QGIS_FOUND TRUE)
+ENDIF (QGIS_INCLUDE_DIR AND QGIS_CORE_LIBRARY AND QGIS_GUI_LIBRARY)
+
+IF (QGIS_FOUND)
+   IF (NOT QGIS_FIND_QUIETLY)
+     MESSAGE(STATUS "Found QGIS Core: ${QGIS_CORE_LIBRARY}")
+     MESSAGE(STATUS "Found QGIS Gui: ${QGIS_GUI_LIBRARY}")
+     MESSAGE(STATUS "Found QGIS Plugins Dir: ${QGIS_PLUGIN_DIR}")
+   ENDIF (NOT QGIS_FIND_QUIETLY)
+ELSE (QGIS_FOUND)
+   IF (QGIS_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find QGIS")
+   ENDIF (QGIS_FIND_REQUIRED)
+ENDIF (QGIS_FOUND)

Modified: trunk/code_examples/4_adding_rasters_to_canvas/mainwindow.cpp
===================================================================
--- trunk/code_examples/4_adding_rasters_to_canvas/mainwindow.cpp	2009-10-31 22:04:09 UTC (rev 11874)
+++ trunk/code_examples/4_adding_rasters_to_canvas/mainwindow.cpp	2009-10-31 22:20:16 UTC (rev 11875)
@@ -34,10 +34,6 @@
 //
 #include "qgsmaptoolpan.h"
 #include "qgsmaptoolzoom.h"
-//
-// Std Includes
-//
-#include <deque.h>
 
 MainWindow::MainWindow(QWidget* parent, Qt::WFlags fl)
     : QMainWindow(parent,fl)
@@ -47,9 +43,8 @@
 
   // Create the Map Canvas
   mpMapCanvas= new QgsMapCanvas(0, 0);
-  qDebug(mpMapCanvas->extent().stringRep(2));
   mpMapCanvas->enableAntiAliasing(true);
-  mpMapCanvas->useQImageToRender(false);
+  mpMapCanvas->useImageToRender(false);
   mpMapCanvas->setCanvasColor(QColor(255, 255, 255));
   mpMapCanvas->freeze(false);
   mpMapCanvas->setVisible(true);
@@ -123,12 +118,14 @@
     return; 
   }
   
-  // use this line for a grayscale image (will be rendered as pseudocolor)
-  mypLayer->setDrawingStyle(QgsRasterLayer::SINGLE_BAND_PSEUDO_COLOR);
-  //or use this line for an RGB image
-  //mypLayer->setDrawingStyle(QgsRasterLayer::MULTI_BAND_COLOR);
+  // render strategy for grayscale image (will be rendered as pseudocolor)
+  mypLayer->setDrawingStyle( QgsRasterLayer::SingleBandPseudoColor );
+  mypLayer->setColorShadingAlgorithm( QgsRasterLayer::PseudoColorShader );
+  mypLayer->setContrastEnhancementAlgorithm(
+    QgsContrastEnhancement::StretchToMinimumMaximum, false );
+  mypLayer->setMinimumValue( mypLayer->grayBandName(), 0.0, false );
+  mypLayer->setMaximumValue( mypLayer->grayBandName(), 10.0 );
   
-  mypLayer->setColorRampingType(QgsRasterLayer::BLUE_GREEN_RED);
 
   // Add the Vector Layer to the Layer Registry
   QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE);



More information about the QGIS-commit mailing list