mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-22 00:06:12 -05:00
classes to support map canvas rendering
git-svn-id: http://svn.osgeo.org/qgis/trunk@38 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
2cce60a846
commit
6add40a8b2
11
src/Makefile
11
src/Makefile
@ -1,6 +1,6 @@
|
||||
#############################################################################
|
||||
# Makefile for building: qgis
|
||||
# Generated by qmake (1.03a) on: Sat Jul 20 08:36:25 2002
|
||||
# Generated by qmake (1.03a) on: Wed Jul 24 19:25:43 2002
|
||||
# Project: src.pro
|
||||
# Template: app
|
||||
# Command: $(QMAKE) src.pro
|
||||
@ -53,7 +53,8 @@ HEADERS = qgsdbsourceselectbase.ui.h \
|
||||
qgstable.h \
|
||||
qgsdbsourceselect.h \
|
||||
qgsnewconnection.h \
|
||||
qgsrect.h
|
||||
qgsrect.h \
|
||||
qgspoint.h
|
||||
SOURCES = main.cpp \
|
||||
qgisapp.cpp \
|
||||
qgsdatabaselayer.cpp \
|
||||
@ -63,7 +64,8 @@ SOURCES = main.cpp \
|
||||
qgsrasterlayer.cpp \
|
||||
qgsdbsourceselect.cpp \
|
||||
qgsnewconnection.cpp \
|
||||
qgsrect.cpp
|
||||
qgsrect.cpp \
|
||||
qgspoint.cpp
|
||||
OBJECTS = main.o \
|
||||
qgisapp.o \
|
||||
qgsdatabaselayer.o \
|
||||
@ -74,6 +76,7 @@ OBJECTS = main.o \
|
||||
qgsdbsourceselect.o \
|
||||
qgsnewconnection.o \
|
||||
qgsrect.o \
|
||||
qgspoint.o \
|
||||
qgsdbsourceselectbase.o \
|
||||
qgisappbase.o \
|
||||
qgsnewconnectionbase.o
|
||||
@ -210,6 +213,8 @@ qgsnewconnection.o: qgsnewconnection.cpp qgsnewconnection.h \
|
||||
|
||||
qgsrect.o: qgsrect.cpp qgsrect.h
|
||||
|
||||
qgspoint.o: qgspoint.cpp qgspoint.h
|
||||
|
||||
qgsdbsourceselectbase.h: qgsdbsourceselectbase.ui
|
||||
$(UIC) qgsdbsourceselectbase.ui -o qgsdbsourceselectbase.h
|
||||
|
||||
|
@ -100,6 +100,8 @@ QgisApp::addLayer ()
|
||||
|
||||
++it;
|
||||
}
|
||||
qApp->processEvents();
|
||||
mapCanvas->render();
|
||||
|
||||
}
|
||||
|
||||
|
@ -203,7 +203,7 @@
|
||||
<data format="XPM.GZ" length="661">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54105b19c8563600020b03103711c44d0303b04aac005546593911b74ce2d09151c60089046512a100641a14109419789f522203f6082e19385ba9d69a0b008e2682ef</data>
|
||||
</image>
|
||||
<image name="image5">
|
||||
<data format="XPM.GZ" length="5806">789c5d58c76e253b0eddf75718cd5d63a0573960300be79c730f6641aaaaeceb1caee3c3fcfb8887d7e32ed5e9067c4c8a922806c97ffd9a3bdbdb9efbf5d78fe7294f277ece5ff2d3dcafeee5f6f6e3dffff9d7df3f7e66d99cfe6b8bb9ece73f7efcdc9fcef9b99dfbbb5e89a34028c107be30e6f410c939e28bca077ce0b7917c3eb217cd273bd1f89b483e19cbe931b22fcab35e01b98be49f63ce5534df75a4bf13e9ef47f3df47f2f9b19cf7c6dc3f46f203e5be50807f46ebf988ece33cea4101be1bd9ab95f79d02e3db687c83f90605f84734fe4a79890ffe863ffa41017b9017b902fb5f57ded40a8cbf847ea3c0f8c81f12ed8f2fc05305f821ecb50af0f7687cb45f417c74ad021cfe193205c60fe08d02f2ab687e8ba75c0179745edc47e77dae5c2a05e4f06f3b28203f1b9f279d627d8302fc04f60a05e6cba3f9903f65a280bc88e63f8ef68ffc6251e07cb69557990272c46b5f28c04b8c6705ec1d45f67f63bd5e017b587fd52b205f86bc50802fc13e3ec4f710ede768bc1e5ac3f98a0272e42bccc39fb432f62f1d8ecf93acbe540aeca71ac7a7bf88f6b38af3a914e00bd1795bfeb102bc1ec7af473c0fa2801cf5a42e14e0c8a79e15d07f8af63fc57e7205e647fc75a502fa93b17d42bef954018efce97305e6bb1be73f81379502f3a11e0b3ee8b7e3fcf251fc13f2877305f4e16fa915904fc6e72d88df5e14e088c72e55809f8ef3cdbbc87f88076915903f47eb413c37f8a08ff386393b5f8ae21fe7eb6b05f859e4fff5e8fc517f3c3ed8bb8ee6bf1cdbf31cc90fc6f129e7517d97687d88676cd7e21df9d5d60ac879bc3e413ed5ac40fe21be5baf00477c369d02f6e08f365180c39f4da6803de46bdd2b30be8cea15f2455205e4cd787e427fe04e017be8ff955760beb5717d70a8576da180fc7cac4fa80f6da9803df4cfb256401ff953150ad8437cd59902e3d10f1a56603c8deb25e3fccb5481f1a8af4dae0047fcd5b902fa889f9215901f46f50ef51fe960f5351be73fbd41bf53408ef8403a227e5d3ae6d481d70accefc7fd5950bf9354010eff26b902f165f7af5a01fe0ade28a06ff70556408ef525a200c77e934e81f5219fc364cdecbe837c49d3ac48ac3e61fe345340be31e3d54c1ff5212dd2c2b87ff9e2a9f9e7d578d6dafadcd68c8bad8f71bfc271613e42bf4aab2ffbec8ce76962f106ffa5b502f612e379369363bf69ab80bd3de3999fed1fe799b202e32f8de7f9cc1f88af54f23eb17c368e820cb98df7f990dafe07e3456adc9b7f501021bf335e54a9c59fadaf2f5a5bbf473f4279b6fbd5a6727577827ae0d7bf7866f17c613c17f3aff3c6cbc4ec09d697e183bc335ea6a9c507fc9f150a70c473562ae0bf47e35562e3c5380a0afcb961bc98f957b0ffac5540fe64bcf299ad07fd2f6305e46cbc1a32cba77be3e100ad5ec2df9957403f315e0fb9d96f8d37696ef1837e93754d965b7f41bc7ddfff05f188eb83f977cd7893e7162f27332e85c5dbd28c0f85f50bf3d7c089d527c2f9e4a1da64f67e81fff3b42972ccc777c6dbbeb47a85fb6a1e1c965b3fba31ce5569f1b434e34d69f182fe90e761bfb6bf65e3925b3d64f4c7bc90597d149c6f5e2a20473fcbabaab3fd12fa475e378dddd719e78d7288f364f83fe7362bac1f9a3d5c58601fe79d7b05d687f3ccbbe01fcb278c2f1205ec1d1baf0bb32f383f94038bdf57e375929b7f4be36d65fef2b08ff0340e7f7ebf3718f5b12815b08ffc45bb307b2fc6dbb4b0f35e352e556debb3f951c02137fdbaee6cfd6ecf78d0b7f708fa47d128b01edc4782fbc5f6cfb67e5cf8b11ee427ae4b384f3f3fee4f6edf785316d6bf36c7fd8a500fcb523aebbf928efba3c77da2ec15b067fd35f721c2307e3ae37963f160fdba08729bdf78f9a52fcfe3fee4115f152b307ec5b8af4c9f37c7fd8ed371bf14e403aee7167f85f1b01ebbdfa0fea17c5b7f437dc3f6acdfa07fe17a64f98efb4edd7999ddff902f4daa00c77deefbbee366f71fdfb5767ec85f1c9fed17f9f5c7fb12ebfbbe4f09ead71ff735c407daa9d577eceffbbe4c62bc63b6f70ff215d709db8fddaff1e0823efc25499f0ae40ef541b23e11cb17d8935281f9917f782e59ffb4f751d36762e78ff54adb1782f513f243fabeb4f70323ff90bed67fec7d2a7debedbd617f0fe87befedbe8378efc2ebd4eefb0ef53fa47bd2597ea17e74c39077361ffc1d9ae58c3becfffbfebb3ffd8223c74e9c779debdde02edca59bb82b77ed6ec2ef4935fed40fdab7eeceddbb07f7e89edcb39bba17f7eadedcbbfb709f6ede2dfca9ef16838d3bb7e496dd8a5b756be1e775b7e136c30c6f6ecb6dbb1d1df1a51fb417c2acf7417bd7edb9fda0357107eed01db9e3f0d3963b71a73ae20ffb6afdc19db973f7db252e7599cb5de14a57b9da3561c4c4b5e4fe6f7f8188d82d93907713eaa8a7812ee892267445d77443b7e1b777740fff3db8797a743bf444cf34a5177aa5377aa70ffaa4795aa0455aa2655aa1555aa375f877e2de698336698bb6698776698fb07e3a08b60fe9888ee9844ee98ccee9b7e95342296594534125555453432d3b266696f0e8edc2c375e00bbee409e2e5ca4df89a6ff896eff89e1f82ee63f8cd133ff33468bff02bbff13b7ff027c33fbcc08b18b1c4cbbc32d35ee5355e0fda1bbcc95bbccd3bbccb7bbc0ffd033ee4a3a073cc277c0aed333ee7df413b0957b22ce4551172e78de7d9deb375b8e8b7e23047d016e27361f6e179eba50b8fd0412eb8904bde11ac5faee45a6ee456eed42b722f0fc2f2284ff21cd6b12d53799157b9943779970fe87fcabc2c048fadc8a22cc9b2acc8aafe3140d6c2ff75d9904dd9926dfc79c0eafb8eecca1e9dc8be1cc8a11cc9b19cc8a99cc979d0ff1d2ed9a96416635ff129799014219fabf08468a4f5ceebdf1b82efc3d7c9a6efbf62fe2b7e742e3ff80b7fe927fe2a685f43fbc6dffa3b7fef1f627dff68ebf34f41fbd95fe3e71bdef253cefdcb77067ec733effa57e9fd9b7f87ee47b0fde9e7fdbcbc7f5b1fe7a3aeca2ff8c5b08625bfec57fc34e8074f7dcb63fd30625e3efc1abf8571eb7e63ac0bfdfffef3c7ff00e7f464ef</data>
|
||||
<data format="XPM.GZ" length="3390">789c759649531c490c85effc8a0e74734cc85595595b4cccc1066f98d52bf6c41cb23668f6a5b10d13f3df27f55e81a11bfae1083ea4cc94944ab59f3f9bec6e6f4c9e3d5fba9c85d9b49db4fbe162f2acbb3a3ebefefb9fbffe5d5aceb249fc49bd9b64cb7f2c2defcc26ed64f3f4a437d03a8224f818cb17706a02ef809d095c824b9371507065827d1b1c4cb00bb831810fc09d09e7af1ac7c32a9eaf3fc169e6931cfe87e0cc04fbaf918bd17f00fbd48ff1d7b79c7ad8b7c959cdf8f466e486f1c9393837c1be0b2eeef6afc82e4d5af823dfb434c1fe96ecb2d13e05d726d8bf92b396f94b060e26d87bb273633d184fe3fa6440fe01dc9a606fc86e48195f4bf629391c833b13ec7b645fa4b83f3d03f7be66fc81e70f26d8af8daddc4901fbd12d67e807edc8ae19eb2be43ce17e82fbccf0813d90f334657f7c067b13f83b38378107729170bda0be5965c27e3b643fd6575e816b13ecebe4a2cd18cf7b7030c1fe8e5c0c19ee43f7c9f10291bf6c815b13ecdfc8e5e0b87f49ae52c7fe9981bb2a73bcdf0d706f02339ec184f53fc89573ec97cb911bcffe3d1879f0a8bf7e24872467bf7d3076499e64bc7fe4e7d2ca3b9ed792eb3e67fdf19e5d2c98637e811c8a9cf95d8c5ce5ec97376017f3657e87e4c615bc2ff49ff38d1f79059c9bc0e8075714dd98af0797550c0076bc6f5799c0e82717eaccb31e29b8318191bf6b4dd80ffdedba581fda0b639f98c017e4d28ffbe33d631cb07f4fc965e2585f47ae0bd64bf0ded19ee41cec4c60bc1f9f9bc0a8572c4631ded716b94e3df3bf223745c9f8d06fbe34c17e422e3bc6af2fc9d19ff317f3ce5726bc47bc8f58fe66cc1ff3ccb726f06b7067823fea9b2726ecbf42ae72cffbfd04c600841def33cf9baea41dfd9f9726ec87f996f726f8e3bcc2b5b1c3c09b23bb8af5c17c297cb4f37cac8fcd37facb1ab83281d12f4530818fc86d31faa35e456702e33d15bd098cfa158309e765e4180fee47101fc637eb8bf784f4f87d83fe2e6b13d6e3fecbae6d2ace63ccd32a3581f1de309ef8de8ec86d57737ff41bae8ff1e3fba0aa4d60ccdbaa3381319feac604c679f83a65ff246067c2796be42e04e41fd05f2137c11ffd1d0613fc316f9ba44f1b7edfbd00677dd2b0fee4dc04c67b6b2a13fc67e43e6b78ff980f4dddfb86f303fdd4f47dde327ff43f9e2fe3c5bc6e9bbe6e397ff17edbbe6f5bee87f7dff921363018f3303ef7a4e3fb42fedd30b88ee761dec62fcb5bc63c1df031de993d948a066db4d54e7b1d1edae6fd754ff775aa077aa8477aac277aaa677afe947ff4bed04b9de995fe88bfffd45f7aad435c71f384ff7ef47ea12f75257add45127fbfd1d545ffb8e3545fe96b7da36f1772bae1fa07feefe2ee6bfa7e3ec7db5316fcd7754337754bb71ff3ff1d4f8cef5c77f4837ed44ffa59bfe857ddbd1fff23fedff4bb269a6aa64ebde65a68a9d5786a2d3a5f4f1d44244823ad74d26b2977bb47ef3dd997e97c3db1e2400ee568cefb584ee454cee47cbe9e71c5855ccaec81f795fc909ff24baee586673ca88f9d71dffb85bc9415599557f23aae786367ccddef9db7bc9577b216e33893f7b22e1bd17b53b664fbb1fee4ee71ff9df8ef837c944ff259bed85fb47ecaff2ea6afb22bdfe4fb427dea27fc1349e3fed9a2ffe28ae8edc44b2e8594f3fe5cf17b0de277b1f255ace6bd9deec71f5456838460bea189ff01684317ba5895f2717fdb35f461101ff6c27e984a15fd0f1ec6b9581fd90e87328deb8ec2f1624ecbfffdb9f43f0b1c269c</data>
|
||||
</image>
|
||||
</images>
|
||||
<connections>
|
||||
|
13
src/qgscoordinatetransform.cpp
Normal file
13
src/qgscoordinatetransform.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
#include "qgspoint.h"
|
||||
#include "qgscoordinatetransform.h"
|
||||
|
||||
QgsCoordinateTransform::QgsCoordinateTransform(double mupp=0, double ymax = 0, double ymin=0, double xmin = 0) :
|
||||
mapUnitsPerPixel(mupp), yMax(ymax), yMin(ymin), xMin(xmin){
|
||||
}
|
||||
QgsCoordinateTransform::~QgsCoordinateTransform(){
|
||||
}
|
||||
QgsPoint QgsCoordinateTransform::transform(QgsPoint p){
|
||||
}
|
||||
|
||||
QgsPoint QgsCoordinateTransform::transform(double x, double y){
|
||||
}
|
18
src/qgscoordinatetransform.h
Normal file
18
src/qgscoordinatetransform.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef QGSCOORDINATETRANSFORM_H
|
||||
#define QGSCOORDINATETRANSFORM_H
|
||||
class QgsPoint;
|
||||
|
||||
class QgsCoordinateTransform{
|
||||
public:
|
||||
QgsCoordinateTransform();
|
||||
~QgsCoordinateTransform();
|
||||
QgsPoint transform(QgsPoint p);
|
||||
QgsPoint transform(double x, double y);
|
||||
private:
|
||||
double mapUnitsPerPixel;
|
||||
double yMax;
|
||||
double yMin;
|
||||
double xMin;
|
||||
|
||||
};
|
||||
#endif // QGSCOORDINATETRANSFORM_H
|
@ -20,12 +20,15 @@
|
||||
#include "qgsrect.h"
|
||||
#include "qgsmaplayer.h"
|
||||
#include "qgsdatabaselayer.h"
|
||||
#include "qgscoordinatetransform.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
|
||||
QgsMapCanvas::QgsMapCanvas(QWidget *parent, const char *name ) : QWidget(parent,name) {
|
||||
mapWindow = new QRect();
|
||||
coordXForm = new QgsCoordinateTransform();
|
||||
}
|
||||
QgsMapCanvas::~QgsMapCanvas(){
|
||||
delete coordXForm;
|
||||
delete mapWindow;
|
||||
}
|
||||
void QgsMapCanvas::addLayer(QgsMapLayer *lyr){
|
||||
@ -34,10 +37,23 @@ void QgsMapCanvas::addLayer(QgsMapLayer *lyr){
|
||||
if(layers.size() == 1){
|
||||
fullExtent = lyr->extent();
|
||||
}
|
||||
render();
|
||||
|
||||
// set zpos to something...
|
||||
//lyr->zpos = 0;
|
||||
}
|
||||
void QgsMapCanvas::render2(){
|
||||
QPainter *paint = new QPainter();
|
||||
paint->begin(this);
|
||||
currentExtent = fullExtent;
|
||||
QRect v = paint->viewport();
|
||||
// calculate the translation and scaling parameters
|
||||
if(currentExtent.height() > currentExtent.width())
|
||||
m_mupp = currentExtent.height()/v.height();
|
||||
else
|
||||
m_mupp = currentExtent.width()/v.width();
|
||||
coordXForm->
|
||||
|
||||
}
|
||||
void QgsMapCanvas::render(){
|
||||
QPainter *paint = new QPainter();
|
||||
paint->begin(this);
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include <qevent.h>
|
||||
#include "qgsrect.h"
|
||||
class QRect;
|
||||
|
||||
class QgsCoordinateTransform;
|
||||
class QgsMapLayer;
|
||||
|
||||
/*! \class QgsMapCanvas
|
||||
@ -43,6 +43,8 @@ public:
|
||||
/*! Draw the map using the symbology set for each layer
|
||||
*/
|
||||
void render();
|
||||
void render2();
|
||||
double mupp();
|
||||
private:
|
||||
void paintEvent(QPaintEvent *pe);
|
||||
//! map containing the layers by name
|
||||
@ -52,6 +54,9 @@ public:
|
||||
//! Current extent
|
||||
QgsRect currentExtent;
|
||||
QRect *mapWindow;
|
||||
QgsCoordinateTransform *coordXForm;
|
||||
double m_mupp;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
40
src/qgspoint.cpp
Normal file
40
src/qgspoint.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "qgspoint.h"
|
||||
QgsPoint::QgsPoint(){
|
||||
}
|
||||
|
||||
QgsPoint::QgsPoint(double x, double y) : m_x(x), m_y(y){
|
||||
|
||||
}
|
||||
|
||||
QgsPoint::~QgsPoint(){
|
||||
}
|
||||
|
||||
double QgsPoint::x() const {
|
||||
return m_x;
|
||||
}
|
||||
|
||||
double QgsPoint::y() const {
|
||||
return m_y;
|
||||
}
|
||||
|
||||
bool QgsPoint::operator==(const QgsPoint &other){
|
||||
if((m_x == other.x()) && (m_y == other.y()))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
bool QgsPoint::operator!=(const QgsPoint &other){
|
||||
if((m_x == other.x()) && (m_y == other.y()))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
QgsPoint & QgsPoint::operator=(const QgsPoint &other){
|
||||
if(&other != this){
|
||||
m_x = other.x();
|
||||
m_y = other.y();
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
57
src/qgspoint.h
Normal file
57
src/qgspoint.h
Normal file
@ -0,0 +1,57 @@
|
||||
#ifndef QGSPOINT_H
|
||||
#define QGSPOINT_H
|
||||
class QString;
|
||||
|
||||
class QgsPoint {
|
||||
private:
|
||||
//! x coordinate
|
||||
double m_x;
|
||||
//! y coordinate
|
||||
double m_y;
|
||||
|
||||
|
||||
public:
|
||||
/// Default constructor
|
||||
QgsPoint();
|
||||
|
||||
/*! Create a point from x,y coordinates
|
||||
* @param x x coordinate
|
||||
* @param y y coordinate
|
||||
*/
|
||||
QgsPoint(double x, double y);
|
||||
~QgsPoint();
|
||||
/*! Sets the x value of the point
|
||||
* @param x x coordinate
|
||||
*/
|
||||
void setX(double x);
|
||||
|
||||
/*! Sets the y value of the point
|
||||
* @param y y coordinate
|
||||
*/
|
||||
void setY(double y);
|
||||
|
||||
|
||||
/*! Get the x value of the point
|
||||
* @return x coordinate
|
||||
*/
|
||||
double x() const;
|
||||
/*! Get the y value of the point
|
||||
* @return y coordinate
|
||||
*/
|
||||
double y(void) const;
|
||||
//! equality operator
|
||||
bool operator==(const QgsPoint &other);
|
||||
|
||||
//! Inequality operator
|
||||
bool operator!=(const QgsPoint &other);
|
||||
|
||||
/// Assignment
|
||||
QgsPoint & operator=(const QgsPoint &other);
|
||||
};
|
||||
inline bool operator==(const QgsPoint &p1, const QgsPoint &p2){
|
||||
if((p1.x() == p2.x()) && (p1.y() == p2.y()))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
#endif //QGSPOINT_H
|
@ -20,7 +20,9 @@ HEADERS += qgsdbsourceselectbase.ui.h \
|
||||
qgstable.h \
|
||||
qgsdbsourceselect.h \
|
||||
qgsnewconnection.h \
|
||||
qgsrect.h
|
||||
qgsrect.h \
|
||||
qgspoint.h \
|
||||
qgscoordinatetransorm.h
|
||||
|
||||
INTERFACES += qgsdbsourceselectbase.ui qgisappbase.ui qgsnewconnectionbase.ui
|
||||
SOURCES += main.cpp \
|
||||
@ -32,4 +34,6 @@ SOURCES += main.cpp \
|
||||
qgsrasterlayer.cpp \
|
||||
qgsdbsourceselect.cpp \
|
||||
qgsnewconnection.cpp \
|
||||
qgsrect.cpp
|
||||
qgsrect.cpp \
|
||||
qgspoint.cpp \
|
||||
qgscoordinatetransform.cpp
|
||||
|
Loading…
x
Reference in New Issue
Block a user