diff --git a/src/Makefile b/src/Makefile index ee95f031e29..435683b179b 100644 --- a/src/Makefile +++ b/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 diff --git a/src/qgisapp.cpp b/src/qgisapp.cpp index 18dac1174b4..affdf0705ca 100644 --- a/src/qgisapp.cpp +++ b/src/qgisapp.cpp @@ -100,6 +100,8 @@ QgisApp::addLayer () ++it; } + qApp->processEvents(); + mapCanvas->render(); } diff --git a/src/qgisappbase.ui b/src/qgisappbase.ui index a8dace78baf..06127a7cac9 100644 --- a/src/qgisappbase.ui +++ b/src/qgisappbase.ui @@ -203,7 +203,7 @@ 789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54105b19c8563600020b03103711c44d0303b04aac005546593911b74ce2d09151c60089046512a100641a14109419789f522203f6082e19385ba9d69a0b008e2682ef - 789c5d58c76e253b0eddf75718cd5d63a0573960300be79c730f6641aaaaeceb1caee3c3fcfb8887d7e32ed5e9067c4c8a922806c97ffd9a3bdbdb9efbf5d78fe7294f277ece5ff2d3dcafeee5f6f6e3dffff9d7df3f7e66d99cfe6b8bb9ece73f7efcdc9fcef9b99dfbbb5e89a34028c107be30e6f410c939e28bca077ce0b7917c3eb217cd273bd1f89b483e19cbe931b22fcab35e01b98be49f63ce5534df75a4bf13e9ef47f3df47f2f9b19cf7c6dc3f46f203e5be50807f46ebf988ece33cea4101be1bd9ab95f79d02e3db687c83f90605f84734fe4a79890ffe863ffa41017b9017b902fb5f57ded40a8cbf847ea3c0f8c81f12ed8f2fc05305f821ecb50af0f7687cb45f417c74ad021cfe193205c60fe08d02f2ab687e8ba75c0179745edc47e77dae5c2a05e4f06f3b28203f1b9f279d627d8302fc04f60a05e6cba3f9903f65a280bc88e63f8ef68ffc6251e07cb69557990272c46b5f28c04b8c6705ec1d45f67f63bd5e017b587fd52b205f86bc50802fc13e3ec4f710ede768bc1e5ac3f98a0272e42bccc39fb432f62f1d8ecf93acbe540aeca71ac7a7bf88f6b38af3a914e00bd1795bfeb102bc1ec7af473c0fa2801cf5a42e14e0c8a79e15d07f8af63fc57e7205e647fc75a502fa93b17d42bef954018efce97305e6bb1be73f81379502f3a11e0b3ee8b7e3fcf251fc13f2877305f4e16fa915904fc6e72d88df5e14e088c72e55809f8ef3cdbbc87f88076915903f47eb413c37f8a08ff386393b5f8ae21fe7eb6b05f859e4fff5e8fc517f3c3ed8bb8ee6bf1cdbf31cc90fc6f129e7517d97687d88676cd7e21df9d5d60ac879bc3e413ed5ac40fe21be5baf00477c369d02f6e08f365180c39f4da6803de46bdd2b30be8cea15f2455205e4cd787e427fe04e017be8ff955760beb5717d70a8576da180fc7cac4fa80f6da9803df4cfb256401ff953150ad8437cd59902e3d10f1a56603c8deb25e3fccb5481f1a8af4dae0047fcd5b902fa889f9215901f46f50ef51fe960f5351be73fbd41bf53408ef8403a227e5d3ae6d481d70accefc7fd5950bf9354010eff26b902f165f7af5a01fe0ade28a06ff70556408ef525a200c77e934e81f5219fc364cdecbe837c49d3ac48ac3e61fe345340be31e3d54c1ff5212dd2c2b87ff9e2a9f9e7d578d6dafadcd68c8bad8f71bfc271613e42bf4aab2ffbec8ce76962f106ffa5b502f612e379369363bf69ab80bd3de3999fed1fe799b202e32f8de7f9cc1f88af54f23eb17c368e820cb98df7f990dafe07e3456adc9b7f501021bf335e54a9c59fadaf2f5a5bbf473f4279b6fbd5a6727577827ae0d7bf7866f17c613c17f3aff3c6cbc4ec09d697e183bc335ea6a9c507fc9f150a70c473562ae0bf47e35562e3c5380a0afcb961bc98f957b0ffac5540fe64bcf299ad07fd2f6305e46cbc1a32cba77be3e100ad5ec2df9957403f315e0fb9d96f8d37696ef1837e93754d965b7f41bc7ddfff05f188eb83f977cd7893e7162f27332e85c5dbd28c0f85f50bf3d7c089d527c2f9e4a1da64f67e81fff3b42972ccc777c6dbbeb47a85fb6a1e1c965b3fba31ce5569f1b434e34d69f182fe90e761bfb6bf65e3925b3d64f4c7bc90597d149c6f5e2a20473fcbabaab3fd12fa475e378dddd719e78d7288f364f83fe7362bac1f9a3d5c58601fe79d7b05d687f3ccbbe01fcb278c2f1205ec1d1baf0bb32f383f94038bdf57e375929b7f4be36d65fef2b08ff0340e7f7ebf3718f5b12815b08ffc45bb307b2fc6dbb4b0f35e352e556debb3f951c02137fdbaee6cfd6ecf78d0b7f708fa47d128b01edc4782fbc5f6cfb67e5cf8b11ee427ae4b384f3f3fee4f6edf785316d6bf36c7fd8a500fcb523aebbf928efba3c77da2ec15b067fd35f721c2307e3ae37963f160fdba08729bdf78f9a52fcfe3fee4115f152b307ec5b8af4c9f37c7fd8ed371bf14e403aee7167f85f1b01ebbdfa0fea17c5b7f437dc3f6acdfa07fe17a64f98efb4edd7999ddff902f4daa00c77deefbbee366f71fdfb5767ec85f1c9fed17f9f5c7fb12ebfbbe4f09ead71ff735c407daa9d577eceffbbe4c62bc63b6f70ff215d709db8fddaff1e0823efc25499f0ae40ef541b23e11cb17d8935281f9917f782e59ffb4f751d36762e78ff54adb1782f513f243fabeb4f70323ff90bed67fec7d2a7debedbd617f0fe87befedbe8378efc2ebd4eefb0ef53fa47bd2597ea17e74c39077361ffc1d9ae58c3becfffbfebb3ffd8223c74e9c779debdde02edca59bb82b77ed6ec2ef4935fed40fdab7eeceddbb07f7e89edcb39bba17f7eadedcbbfb709f6ede2dfca9ef16838d3bb7e496dd8a5b756be1e775b7e136c30c6f6ecb6dbb1d1df1a51fb417c2acf7417bd7edb9fda0357107eed01db9e3f0d3963b71a73ae20ffb6afdc19db973f7db252e7599cb5de14a57b9da3561c4c4b5e4fe6f7f8188d82d93907713eaa8a7812ee892267445d77443b7e1b777740fff3db8797a743bf444cf34a5177aa5377aa70ffaa4795aa0455aa2655aa1555aa375f877e2de698336698bb6698776698fb07e3a08b60fe9888ee9844ee98ccee9b7e95342296594534125555453432d3b266696f0e8edc2c375e00bbee409e2e5ca4df89a6ff896eff89e1f82ee63f8cd133ff33468bff02bbff13b7ff027c33fbcc08b18b1c4cbbc32d35ee5355e0fda1bbcc95bbccd3bbccb7bbc0ffd033ee4a3a073cc277c0aed333ee7df413b0957b22ce4551172e78de7d9deb375b8e8b7e23047d016e27361f6e179eba50b8fd0412eb8904bde11ac5faee45a6ee456eed42b722f0fc2f2284ff21cd6b12d53799157b9943779970fe87fcabc2c048fadc8a22cc9b2acc8aafe3140d6c2ff75d9904dd9926dfc79c0eafb8eecca1e9dc8be1cc8a11cc9b19cc8a99cc979d0ff1d2ed9a96416635ff129799014219fabf08468a4f5ceebdf1b82efc3d7c9a6efbf62fe2b7e742e3ff80b7fe927fe2a685f43fbc6dffa3b7fef1f627dff68ebf34f41fbd95fe3e71bdef253cefdcb77067ec733effa57e9fd9b7f87ee47b0fde9e7fdbcbc7f5b1fe7a3aeca2ff8c5b08625bfec57fc34e8074f7dcb63fd30625e3efc1abf8571eb7e63ac0bfdfffef3c7ff00e7f464ef + 789c759649531c490c85effc8a0e74734cc85595595b4cccc1066f98d52bf6c41cb23668f6a5b10d13f3df27f55e81a11bfae1083ea4cc94944ab59f3f9bec6e6f4c9e3d5fba9c85d9b49db4fbe162f2acbb3a3ebefefb9fbffe5d5aceb249fc49bd9b64cb7f2c2defcc26ed64f3f4a437d03a8224f818cb17706a02ef809d095c824b9371507065827d1b1c4cb00bb831810fc09d09e7af1ac7c32a9eaf3fc169e6931cfe87e0cc04fbaf918bd17f00fbd48ff1d7b79c7ad8b7c959cdf8f466e486f1c9393837c1be0b2eeef6afc82e4d5af823dfb434c1fe96ecb2d13e05d726d8bf92b396f94b060e26d87bb273633d184fe3fa6440fe01dc9a606fc86e48195f4bf629391c833b13ec7b645fa4b83f3d03f7be66fc81e70f26d8af8daddc4901fbd12d67e807edc8ae19eb2be43ce17e82fbccf0813d90f334657f7c067b13f83b38378107729170bda0be5965c27e3b643fd6575e816b13ecebe4a2cd18cf7b7030c1fe8e5c0c19ee43f7c9f10291bf6c815b13ecdfc8e5e0b87f49ae52c7fe9981bb2a73bcdf0d706f02339ec184f53fc89573ec97cb911bcffe3d1879f0a8bf7e24872467bf7d3076499e64bc7fe4e7d2ca3b9ed792eb3e67fdf19e5d2c98637e811c8a9cf95d8c5ce5ec97376017f3657e87e4c615bc2ff49ff38d1f79059c9bc0e8075714dd98af0797550c0076bc6f5799c0e82717eaccb31e29b8318191bf6b4dd80ffdedba581fda0b639f98c017e4d28ffbe33d631cb07f4fc965e2585f47ae0bd64bf0ded19ee41cec4c60bc1f9f9bc0a8572c4631ded716b94e3df3bf223745c9f8d06fbe34c17e422e3bc6af2fc9d19ff317f3ce5726bc47bc8f58fe66cc1ff3ccb726f06b7067823fea9b2726ecbf42ae72cffbfd04c600841def33cf9baea41dfd9f9726ec87f996f726f8e3bcc2b5b1c3c09b23bb8af5c17c297cb4f37cac8fcd37facb1ab83281d12f4530818fc86d31faa35e456702e33d15bd098cfa158309e765e4180fee47101fc637eb8bf784f4f87d83fe2e6b13d6e3fecbae6d2ace63ccd32a3581f1de309ef8de8ec86d57737ff41bae8ff1e3fba0aa4d60ccdbaa3381319feac604c679f83a65ff246067c2796be42e04e41fd05f2137c11ffd1d0613fc316f9ba44f1b7edfbd00677dd2b0fee4dc04c67b6b2a13fc67e43e6b78ff980f4dddfb86f303fdd4f47dde327ff43f9e2fe3c5bc6e9bbe6e397ff17edbbe6f5bee87f7dff921363018f3303ef7a4e3fb42fedd30b88ee761dec62fcb5bc63c1df031de993d948a066db4d54e7b1d1edae6fd754ff775aa077aa8477aac277aaa677afe947ff4bed04b9de995fe88bfffd45f7aad435c71f384ff7ef47ea12f75257add45127fbfd1d545ffb8e3545fe96b7da36f1772bae1fa07feefe2ee6bfa7e3ec7db5316fcd7754337754bb71ff3ff1d4f8cef5c77f4837ed44ffa59bfe857ddbd1fff23fedff4bb269a6aa64ebde65a68a9d5786a2d3a5f4f1d44244823ad74d26b2977bb47ef3dd997e97c3db1e2400ee568cefb584ee454cee47cbe9e71c5855ccaec81f795fc909ff24baee586673ca88f9d71dffb85bc9415599557f23aae786367ccddef9db7bc9577b216e33893f7b22e1bd17b53b664fbb1fee4ee71ff9df8ef837c944ff259bed85fb47ecaff2ea6afb22bdfe4fb427dea27fc1349e3fed9a2ffe28ae8edc44b2e8594f3fe5cf17b0de277b1f255ace6bd9deec71f5456838460bea189ff01684317ba5895f2717fdb35f461101ff6c27e984a15fd0f1ec6b9581fd90e87328deb8ec2f1624ecbfffdb9f43f0b1c269c diff --git a/src/qgscoordinatetransform.cpp b/src/qgscoordinatetransform.cpp new file mode 100644 index 00000000000..7e3aa696ad9 --- /dev/null +++ b/src/qgscoordinatetransform.cpp @@ -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){ +} diff --git a/src/qgscoordinatetransform.h b/src/qgscoordinatetransform.h new file mode 100644 index 00000000000..f5914c995d8 --- /dev/null +++ b/src/qgscoordinatetransform.h @@ -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 diff --git a/src/qgsmapcanvas.cpp b/src/qgsmapcanvas.cpp index d873aae8050..1df8e13c9d5 100644 --- a/src/qgsmapcanvas.cpp +++ b/src/qgsmapcanvas.cpp @@ -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); diff --git a/src/qgsmapcanvas.h b/src/qgsmapcanvas.h index 61ce815eb44..514505894ca 100644 --- a/src/qgsmapcanvas.h +++ b/src/qgsmapcanvas.h @@ -22,7 +22,7 @@ #include #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 diff --git a/src/qgspoint.cpp b/src/qgspoint.cpp new file mode 100644 index 00000000000..bf112e96f04 --- /dev/null +++ b/src/qgspoint.cpp @@ -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; +} diff --git a/src/qgspoint.h b/src/qgspoint.h new file mode 100644 index 00000000000..0743061abcf --- /dev/null +++ b/src/qgspoint.h @@ -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 diff --git a/src/src.pro b/src/src.pro index e5c81d598f6..0c94ccf8938 100644 --- a/src/src.pro +++ b/src/src.pro @@ -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