[QGIS Commit] r11876 - in trunk/code_examples/5_using_rubber_band_with_canvas: . cmake_find_rules

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sun Nov 1 01:44:16 EST 2009


Author: timlinux
Date: 2009-11-01 01:44:13 -0500 (Sun, 01 Nov 2009)
New Revision: 11876

Added:
   trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/
   trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGDAL.cmake
   trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGEOS.cmake
   trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindQGIS.cmake
Removed:
   trunk/code_examples/5_using_rubber_band_with_canvas/5_using_rubber_band_with_canvas.pro
Modified:
   trunk/code_examples/5_using_rubber_band_with_canvas/mainwindow.cpp
Log:
Updated tut5 to use cmake to build and to build against 1.0 api

Deleted: trunk/code_examples/5_using_rubber_band_with_canvas/5_using_rubber_band_with_canvas.pro
===================================================================
--- trunk/code_examples/5_using_rubber_band_with_canvas/5_using_rubber_band_with_canvas.pro	2009-10-31 22:20:16 UTC (rev 11875)
+++ trunk/code_examples/5_using_rubber_band_with_canvas/5_using_rubber_band_with_canvas.pro	2009-11-01 06:44:13 UTC (rev 11876)
@@ -1,40 +0,0 @@
-TEMPLATE = app
-TARGET = qgis_example5
-QT = qt3support sql network svg gui core xml
-LANGUAGE= C++
-linux-g++{
-  QGISDIR=[path to installed qgis]
-  QGISLIBDIR=$${QGISDIR}/lib
-  QGISSRCDIR=[path to qgis src directory]
-  QGISPLUGINDIR=$${QGISLIBDIR}/qgis
-  DEFINES += QGISPLUGINDIR=$${QGISPLUGINDIR}
-  LIBS = -L$${QGISLIBDIR} -lqgis_core -lqgis_raster -lproj -lqgis_gui
-}
-macx{
-  QGISDIR=/Users/timsutton/apps/qgis.app/Contents/MacOS/
-  QGISLIBDIR=$${QGISDIR}/lib
-  QGISSRCDIR=/Users/timsutton/dev/cpp/qgis/src/
-  QGISPLUGINDIR=$${QGISLIBDIR}/qgis
-  DEFINES += QGISPLUGINDIR=$${QGISPLUGINDIR}
-  LIBS = -L$${QGISLIBDIR} -lqgis_core -lqgis_gui -lqgis_raster
-}
-
-INCLUDEPATH = $${QGISDIR}/include/qgis \
-              $${QGISSRCDIR}/core \
-              $${QGISSRCDIR}/gui \
-              $${QGISSRCDIR}/plugins \
-              $${QGISSRCDIR}/providers \
-              $${QGISSRCDIR}/raster \
-              $${QGISSRCDIR}/ui 
-
-CONFIG += qt gui exceptions stl warn_on debug thread
-
-RESOURCES += resources.qrc
-
-FORMS += mainwindowbase.ui
-
-HEADERS = mainwindow.h
-
-SOURCES = main.cpp \
-          mainwindow.cpp
-

Added: trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGDAL.cmake
===================================================================
--- trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGDAL.cmake	                        (rev 0)
+++ trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGDAL.cmake	2009-11-01 06:44:13 UTC (rev 11876)
@@ -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/5_using_rubber_band_with_canvas/cmake_find_rules/FindGEOS.cmake
===================================================================
--- trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGEOS.cmake	                        (rev 0)
+++ trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindGEOS.cmake	2009-11-01 06:44:13 UTC (rev 11876)
@@ -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/5_using_rubber_band_with_canvas/cmake_find_rules/FindQGIS.cmake
===================================================================
--- trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindQGIS.cmake	                        (rev 0)
+++ trunk/code_examples/5_using_rubber_band_with_canvas/cmake_find_rules/FindQGIS.cmake	2009-11-01 06:44:13 UTC (rev 11876)
@@ -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/5_using_rubber_band_with_canvas/mainwindow.cpp
===================================================================
--- trunk/code_examples/5_using_rubber_band_with_canvas/mainwindow.cpp	2009-10-31 22:20:16 UTC (rev 11875)
+++ trunk/code_examples/5_using_rubber_band_with_canvas/mainwindow.cpp	2009-11-01 06:44:13 UTC (rev 11876)
@@ -36,10 +36,6 @@
 //
 #include "qgsmaptoolpan.h"
 #include "qgsmaptoolzoom.h"
-//
-// Std Includes
-//
-#include <deque.h>
 
 MainWindow::MainWindow(QWidget* parent, Qt::WFlags fl)
     : QMainWindow(parent,fl)
@@ -58,9 +54,7 @@
 
   // Create the Map Canvas
   mpMapCanvas= new QgsMapCanvas(0, 0);
-  qDebug(mpMapCanvas->extent().stringRep(2));
   mpMapCanvas->enableAntiAliasing(true);
-  mpMapCanvas->useQImageToRender(false);
   mpMapCanvas->setCanvasColor(QColor(255, 255, 255));
   mpMapCanvas->freeze(false);
   mpMapCanvas->setVisible(true);
@@ -124,7 +118,7 @@
 }
 void MainWindow::addLayer()
 {
-  QFileInfo myRasterFileInfo("data/Abarema_jupunba_projection.tif");
+  QFileInfo myRasterFileInfo("../data/Abarema_jupunba_projection.tif");
   QgsRasterLayer * mypLayer = new QgsRasterLayer(myRasterFileInfo.filePath(), 
       myRasterFileInfo.completeBaseName());
   if (mypLayer->isValid())
@@ -136,20 +130,25 @@
     qDebug("Layer is NOT valid");
     return;
   }
-  mypLayer->setColorRampingType(QgsRasterLayer::BLUE_GREEN_RED);
-  mypLayer->setDrawingStyle(QgsRasterLayer::SINGLE_BAND_PSEUDO_COLOR);
-  std::deque<QString> myLayerSet;
+  // 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 );
+  //create a layerset
+  QList<QgsMapCanvasLayer> myList;
+  // Add the layers to the Layer Set
+  myList.append(QgsMapCanvasLayer(mypLayer, TRUE));//bool visibility
+  // set the canvas to the extent of our layer
+  mpMapCanvas->setExtent(mypLayer->extent());
 
   // Add the Vector Layer to the Layer Registry
   QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE);
 
-  // Add the Layer to the Layer Set
-  myLayerSet.push_back(mypLayer->getLayerID());
-  mypLayer->setVisible(TRUE);
-  // set teh canvas to the extent of our layer
-  mpMapCanvas->setExtent(mypLayer->extent());
   // Set the Map Canvas Layer Set
-  mpMapCanvas->setLayerSet(myLayerSet);
+  mpMapCanvas->setLayerSet(myList);
 }
 void MainWindow::on_mpToolShowRubberBand_clicked()
 {



More information about the QGIS-commit mailing list