mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
several things (because sf was down a while), e.g. work prior to save/ load symbology
git-svn-id: http://svn.osgeo.org/qgis/trunk@569 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
726c1deacf
commit
efeeb353d1
@ -48,6 +48,24 @@ QgsContColDialog::QgsContColDialog(QgsVectorLayer* layer): QgsContColDialogBase(
|
||||
qWarning("Warning, data provider is null in QgsContColDialog::QgsContColDialog(...)");
|
||||
return;
|
||||
}
|
||||
|
||||
//restore the correct colors for minimum and maximum values
|
||||
QgsContinuousColRenderer* renderer=dynamic_cast<QgsContinuousColRenderer*>(m_vectorlayer->renderer());
|
||||
if(renderer)
|
||||
{
|
||||
QgsRenderItem* minitem=renderer->minimumItem();
|
||||
QgsRenderItem* maxitem=renderer->maximumItem();
|
||||
if(m_vectorlayer->vectorType()==QGis::Line)
|
||||
{
|
||||
mincolorbutton->setPaletteBackgroundColor(minitem->getSymbol()->pen().color());
|
||||
maxcolorbutton->setPaletteBackgroundColor(maxitem->getSymbol()->pen().color());
|
||||
}
|
||||
else
|
||||
{
|
||||
mincolorbutton->setPaletteBackgroundColor(minitem->getSymbol()->brush().color());
|
||||
maxcolorbutton->setPaletteBackgroundColor(maxitem->getSymbol()->brush().color());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QgsContColDialog::QgsContColDialog()
|
||||
|
@ -193,9 +193,7 @@ void QgsContinuousColRenderer::renderFeature(QPainter* p, QgsFeature* f, QgsCoor
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
//OGRFieldDefn *fldDef;
|
||||
QString fld;
|
||||
QString val;
|
||||
|
||||
switch (wkbType) {
|
||||
|
||||
case QGis::WKBPoint:
|
||||
|
@ -44,6 +44,10 @@ class QgsContinuousColRenderer: public QgsRenderer
|
||||
void setMinimumItem(QgsRenderItem* it);
|
||||
/**Sets the item for the maximum value. The item has to be created using the new operator and is automatically deleted when inserting a new item or when the instance is destroyed*/
|
||||
void setMaximumItem(QgsRenderItem* it);
|
||||
/**Returns the item for the minimum value*/
|
||||
QgsRenderItem* minimumItem();
|
||||
/**Returns the item for the maximum value*/
|
||||
QgsRenderItem* maximumItem();
|
||||
/** Returns true*/
|
||||
bool needsAttributes();
|
||||
protected:
|
||||
@ -65,6 +69,16 @@ inline void QgsContinuousColRenderer::setClassificationField(int id)
|
||||
m_classificationField=id;
|
||||
}
|
||||
|
||||
inline QgsRenderItem* QgsContinuousColRenderer::minimumItem()
|
||||
{
|
||||
return m_minimumItem;
|
||||
}
|
||||
|
||||
inline QgsRenderItem* QgsContinuousColRenderer::maximumItem()
|
||||
{
|
||||
return m_maximumItem;
|
||||
}
|
||||
|
||||
inline bool QgsContinuousColRenderer::needsAttributes()
|
||||
{
|
||||
return true;
|
||||
|
@ -92,9 +92,7 @@ void QgsGraduatedSymRenderer::renderFeature(QPainter* p, QgsFeature* f, QgsCoord
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
//OGRFieldDefn *fldDef;
|
||||
QString fld;
|
||||
QString val;
|
||||
|
||||
switch (wkbType) {
|
||||
|
||||
case QGis::WKBPoint:
|
||||
@ -287,7 +285,7 @@ void QgsGraduatedSymRenderer::initializeSymbology(QgsVectorLayer* layer)
|
||||
p.setFont( f );
|
||||
p.drawText(35,pixmap->height()-10,name);
|
||||
|
||||
QgsRangeRenderItem* ri = new QgsRangeRenderItem(sy,QString::number(DBL_MIN,'f',6),QString::number(DBL_MAX,'f',6),"");
|
||||
QgsRangeRenderItem* ri = new QgsRangeRenderItem(sy,QString::number(-DBL_MAX,'f',6),QString::number(DBL_MAX,'f',6),"");
|
||||
addItem(ri);
|
||||
|
||||
QgsGraSyDialog* dialog=new QgsGraSyDialog(layer);
|
||||
|
@ -50,6 +50,8 @@ class QgsGraduatedSymRenderer: public QgsRenderer
|
||||
\param field the number of the field to classify*/
|
||||
void setClassificationField(int field);
|
||||
void initializeSymbology(QgsVectorLayer* layer);
|
||||
/**Returns the list with the render items*/
|
||||
std::list<QgsRangeRenderItem*>& items();
|
||||
/** Returns true*/
|
||||
bool needsAttributes();
|
||||
protected:
|
||||
@ -80,6 +82,11 @@ inline void QgsGraduatedSymRenderer::setClassificationField(int field)
|
||||
m_classificationField=field;
|
||||
}
|
||||
|
||||
inline std::list<QgsRangeRenderItem*>& QgsGraduatedSymRenderer::items()
|
||||
{
|
||||
return m_items;
|
||||
}
|
||||
|
||||
inline bool QgsGraduatedSymRenderer::needsAttributes()
|
||||
{
|
||||
return true;
|
||||
|
@ -34,11 +34,6 @@
|
||||
|
||||
QgsGraSyDialog::QgsGraSyDialog(QgsVectorLayer* layer): QgsGraSyDialogBase(), ext(0), scv(0), m_vectorlayer(layer)
|
||||
{
|
||||
QObject::connect(numberofclassesspinbox,SIGNAL(valueChanged(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(classificationComboBox,SIGNAL(activated(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(modeComboBox,SIGNAL(activated(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(closebutton,SIGNAL(clicked()),this,SLOT(hide()));
|
||||
QObject::connect(applybutton,SIGNAL(clicked()),this,SLOT(apply()));
|
||||
setOrientation(Qt::Vertical);
|
||||
|
||||
//Set the initial display name
|
||||
@ -74,6 +69,61 @@ QgsGraSyDialog::QgsGraSyDialog(QgsVectorLayer* layer): QgsGraSyDialogBase(), ext
|
||||
modeComboBox->insertItem("equal interval");
|
||||
|
||||
setSizeGripEnabled(true);
|
||||
|
||||
//restore the correct settings
|
||||
QgsGraduatedSymRenderer* renderer=dynamic_cast<QgsGraduatedSymRenderer*>(m_vectorlayer->renderer());
|
||||
if(renderer)
|
||||
{
|
||||
std::list<QgsRangeRenderItem*> list=renderer->items();
|
||||
|
||||
ext=new QgsGraSyExtensionWidget(this,renderer->classificationField(),QgsGraSyDialog::EMPTY,list.size(),m_vectorlayer);
|
||||
|
||||
|
||||
//todo:find out the fieldname for the classification field
|
||||
classificationComboBox->setCurrentItem(renderer->classificationField());
|
||||
|
||||
//set the right colors and texts to the widgets
|
||||
int number=0;
|
||||
for(std::list<QgsRangeRenderItem*>::iterator it=list.begin();it!=list.end();++it)
|
||||
{
|
||||
qWarning("inside loop");
|
||||
((QLineEdit*)(ext->getWidget(0,number)))->setText((*it)->value());
|
||||
((QLineEdit*)ext->getWidget(1,number))->setText((*it)->upper_value());
|
||||
((QLineEdit*)ext->getWidget(2,number))->setText((*it)->label());
|
||||
((QPushButton*)ext->getWidget(3,number))->setPaletteBackgroundColor((*it)->getSymbol()->pen().color());
|
||||
((QPushButton*)ext->getWidget(4,number))->setText(QgsSymbologyUtils::penStyle2QString((*it)->getSymbol()->pen().style()));
|
||||
((QSpinBox*)ext->getWidget(5,number))->setValue((*it)->getSymbol()->pen().width());
|
||||
((QPushButton*)ext->getWidget(6,number))->setPaletteBackgroundColor((*it)->getSymbol()->brush().color());
|
||||
((QPushButton*)ext->getWidget(7,number))->setText(QgsSymbologyUtils::brushStyle2QString((*it)->getSymbol()->brush().style()));
|
||||
number++;
|
||||
}
|
||||
|
||||
if(scv)
|
||||
{
|
||||
QgsGraSyDialogBaseLayout->remove(scv);
|
||||
delete scv;
|
||||
}
|
||||
|
||||
numberofclassesspinbox->setValue(list.size());
|
||||
|
||||
if(numberofclassesspinbox->value()==0)
|
||||
{
|
||||
scv=0;
|
||||
return;
|
||||
}
|
||||
|
||||
scv=new QScrollView(this);
|
||||
scv->addChild(ext);
|
||||
QgsGraSyDialogBaseLayout->addMultiCellWidget(scv,5,5,0,3);
|
||||
scv->show();
|
||||
|
||||
//do the necessary signal/slot connections
|
||||
QObject::connect(numberofclassesspinbox,SIGNAL(valueChanged(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(classificationComboBox,SIGNAL(activated(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(modeComboBox,SIGNAL(activated(int)),this,SLOT(adjustNumberOfClasses()));
|
||||
QObject::connect(closebutton,SIGNAL(clicked()),this,SLOT(hide()));
|
||||
QObject::connect(applybutton,SIGNAL(clicked()),this,SLOT(apply()));
|
||||
}
|
||||
}
|
||||
|
||||
QgsGraSyDialog::QgsGraSyDialog()
|
||||
@ -257,6 +307,7 @@ void QgsGraSyDialog::apply() const
|
||||
|
||||
if(lbcontainsletter==false&&ubcontainsletter==false&&lower_bound.length()>0&&upper_bound.length()>0)//only add the item if the value bounds do not contain letters and are not null strings
|
||||
{
|
||||
qWarning("adde ein renderitem");
|
||||
QgsRangeRenderItem* item = new QgsRangeRenderItem(sy, lower_bound, upper_bound, ((QLineEdit*)(ext->getWidget(2,i)))->text());
|
||||
|
||||
renderer->addItem(item);
|
||||
|
@ -384,10 +384,6 @@ private:
|
||||
double minGrayDouble;
|
||||
// maximum gray value - used in scaling procedure
|
||||
double maxGrayDouble;
|
||||
|
||||
|
||||
signals:
|
||||
void repaintRequested();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -63,9 +63,7 @@ void QgsSingleSymRenderer::renderFeature(QPainter* p, QgsFeature* f, QgsCoordina
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
//OGRFieldDefn *fldDef;
|
||||
QString fld;
|
||||
QString val;
|
||||
|
||||
switch (wkbType) {
|
||||
case QGis::WKBPoint:
|
||||
|
||||
|
@ -45,8 +45,12 @@ QgsSiSyDialog::QgsSiSyDialog(QgsVectorLayer* layer): QgsSiSyDialogBase(), m_vect
|
||||
displaynamefield->setText(m_vectorlayer->name());
|
||||
outlinecolorbutton->setPaletteBackgroundColor(((QgsSingleSymRenderer*)(layer->renderer()))->item()->getSymbol()->pen().color());
|
||||
stylebutton->setText(tr("SolidLine"));
|
||||
outlinewidthspinbox->setValue(((QgsSingleSymRenderer*)(layer->renderer()))->item()->getSymbol()->pen().width());
|
||||
fillcolorbutton->setPaletteBackgroundColor(((QgsSingleSymRenderer*)(layer->renderer()))->item()->getSymbol()->brush().color());
|
||||
QgsSingleSymRenderer* renderer=dynamic_cast<QgsSingleSymRenderer*>(layer->renderer());
|
||||
if(renderer)
|
||||
{
|
||||
outlinewidthspinbox->setValue(renderer->item()->getSymbol()->pen().width());
|
||||
fillcolorbutton->setPaletteBackgroundColor(renderer->item()->getSymbol()->brush().color());
|
||||
}
|
||||
patternbutton->setText(tr("SolidPattern"));
|
||||
|
||||
if(m_vectorlayer&&m_vectorlayer->vectorType()==QGis::Line)
|
||||
|
@ -238,6 +238,21 @@ void QgsVectorLayer::draw(QPainter * p, QgsRect * viewExtent, QgsCoordinateTrans
|
||||
QgsFeature *fet;
|
||||
unsigned char *feature;
|
||||
bool attributesneeded = m_renderer->needsAttributes();
|
||||
|
||||
double *x;
|
||||
double *y;
|
||||
int *nPoints;
|
||||
int *numRings;
|
||||
int *numPolygons;
|
||||
int numPoints;
|
||||
int numLineStrings;
|
||||
int idx, jdx, kdx;
|
||||
unsigned char *ptr;
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
int wkbType;
|
||||
|
||||
while ((fet = dataProvider->getNextFeature(attributesneeded))) {//true is necessary for graduated symbol
|
||||
|
||||
if (fet == 0) {
|
||||
@ -265,148 +280,141 @@ void QgsVectorLayer::draw(QPainter * p, QgsRect * viewExtent, QgsCoordinateTrans
|
||||
// if (feature != 0) {
|
||||
// std::cout << featureCount << "'the feature is null\n";
|
||||
|
||||
int wkbType = (int) feature[1];
|
||||
wkbType = (int) feature[1];
|
||||
// std::cout << "Feature type: " << wkbType << std::endl;
|
||||
// read each feature based on its type
|
||||
double *x;
|
||||
double *y;
|
||||
int *nPoints;
|
||||
int *numRings;
|
||||
int *numPolygons;
|
||||
int numPoints;
|
||||
int numLineStrings;
|
||||
int idx, jdx, kdx;
|
||||
unsigned char *ptr;
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
//OGRFieldDefn *fldDef;
|
||||
QString fld;
|
||||
QString val;
|
||||
|
||||
switch (wkbType) {
|
||||
case WKBPoint:
|
||||
p->setBrush(*brush);
|
||||
// fldDef = fet->GetFieldDefnRef(1);
|
||||
// fld = fldDef->GetNameRef();
|
||||
//NEEDTHIS? val = fet->GetFieldAsString(1);
|
||||
//std::cout << val << "\n";
|
||||
|
||||
x = (double *) (feature + 5);
|
||||
y = (double *) (feature + 5 + sizeof(double));
|
||||
// std::cout << "transforming point\n";
|
||||
pt = cXf->transform(*x, *y);
|
||||
//std::cout << "drawing marker for feature " << featureCount << "\n";
|
||||
p->drawRect(pt.xToInt(), pt.yToInt(), 5, 5);
|
||||
//std::cout << "marker draw complete\n";
|
||||
break;
|
||||
p->setBrush(*brush);
|
||||
// fldDef = fet->GetFieldDefnRef(1);
|
||||
// fld = fldDef->GetNameRef();
|
||||
//NEEDTHIS? val = fet->GetFieldAsString(1);
|
||||
//std::cout << val << "\n";
|
||||
|
||||
x = (double *) (feature + 5);
|
||||
y = (double *) (feature + 5 + sizeof(double));
|
||||
// std::cout << "transforming point\n";
|
||||
pt = cXf->transform(*x, *y);
|
||||
//std::cout << "drawing marker for feature " << featureCount << "\n";
|
||||
p->drawRect(pt.xToInt(), pt.yToInt(), 5, 5);
|
||||
//std::cout << "marker draw complete\n";
|
||||
break;
|
||||
|
||||
case WKBLineString:
|
||||
// get number of points in the line
|
||||
ptr = feature + 5;
|
||||
|
||||
// get number of points in the line
|
||||
ptr = feature + 5;
|
||||
nPoints = (int *) ptr;
|
||||
ptr = feature + 1 + 2 * sizeof(int);
|
||||
for (idx = 0; idx < *nPoints; idx++) {
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
// transform the point
|
||||
pt = cXf->transform(*x, *y);
|
||||
if (idx == 0)
|
||||
p->moveTo(pt.xToInt(), pt.yToInt());
|
||||
else
|
||||
p->lineTo(pt.xToInt(), pt.yToInt());
|
||||
}
|
||||
break;
|
||||
|
||||
case WKBMultiLineString:
|
||||
|
||||
numLineStrings = (int) (feature[5]);
|
||||
ptr = feature + 9;
|
||||
for (jdx = 0; jdx < numLineStrings; jdx++) {
|
||||
// each of these is a wbklinestring so must handle as such
|
||||
lsb = *ptr;
|
||||
ptr += 5; // skip type since we know its 2
|
||||
nPoints = (int *) ptr;
|
||||
ptr = feature + 1 + 2 * sizeof(int);
|
||||
ptr += sizeof(int);
|
||||
for (idx = 0; idx < *nPoints; idx++) {
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
// transform the point
|
||||
pt = cXf->transform(*x, *y);
|
||||
if (idx == 0)
|
||||
p->moveTo(pt.xToInt(), pt.yToInt());
|
||||
else
|
||||
p->lineTo(pt.xToInt(), pt.yToInt());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case WKBPolygon:
|
||||
|
||||
p->setBrush(*brush);
|
||||
// get number of rings in the polygon
|
||||
numRings = (int *) (feature + 1 + sizeof(int));
|
||||
//std::cout << "Number of rings: " << *numRings << std::endl;
|
||||
ptr = feature + 1 + 2 * sizeof(int);
|
||||
for (idx = 0; idx < *numRings; idx++) {
|
||||
// get number of points in the ring
|
||||
nPoints = (int *) ptr;
|
||||
//std::cout << "Number of points: " << *nPoints << std::endl;
|
||||
ptr += 4;
|
||||
pa = new QPointArray(*nPoints);
|
||||
for (jdx = 0; jdx < *nPoints; jdx++) {
|
||||
// add points to a point array for drawing the polygon
|
||||
// std::cout << "Adding points to array\n";
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
pt = cXf->transform(*x, *y);
|
||||
pa->setPoint(jdx, pt.xToInt(), pt.yToInt());
|
||||
}
|
||||
// draw the ring
|
||||
//std::cout << "Drawing the polygon\n";
|
||||
p->drawPolygon(*pa);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WKBMultiPolygon:
|
||||
|
||||
p->setBrush(*brush);
|
||||
// get the number of polygons
|
||||
ptr = feature + 5;
|
||||
numPolygons = (int *) ptr;
|
||||
for (kdx = 0; kdx < *numPolygons; kdx++) {
|
||||
//skip the endian and feature type info and
|
||||
// get number of rings in the polygon
|
||||
ptr = feature + 14;
|
||||
numRings = (int *) ptr;
|
||||
ptr += 4;
|
||||
for (idx = 0; idx < *numRings; idx++) {
|
||||
// get number of points in the ring
|
||||
nPoints = (int *) ptr;
|
||||
ptr += 4;
|
||||
pa = new QPointArray(*nPoints);
|
||||
for (jdx = 0; jdx < *nPoints; jdx++) {
|
||||
// add points to a point array for drawing the polygon
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
// transform the point
|
||||
// std::cout << "Transforming " << *x << "," << *y << " to ";
|
||||
|
||||
pt = cXf->transform(*x, *y);
|
||||
if (idx == 0)
|
||||
p->moveTo(pt.xToInt(), pt.yToInt());
|
||||
else
|
||||
p->lineTo(pt.xToInt(), pt.yToInt());
|
||||
//std::cout << pt.xToInt() << "," << pt.yToInt() << std::endl;
|
||||
pa->setPoint(jdx, pt.xToInt(), pt.yToInt());
|
||||
|
||||
}
|
||||
// draw the ring
|
||||
p->drawPolygon(*pa);
|
||||
delete pa;
|
||||
}
|
||||
break;
|
||||
case WKBMultiLineString:
|
||||
}
|
||||
break;
|
||||
|
||||
numLineStrings = (int) (feature[5]);
|
||||
ptr = feature + 9;
|
||||
for (jdx = 0; jdx < numLineStrings; jdx++) {
|
||||
// each of these is a wbklinestring so must handle as such
|
||||
lsb = *ptr;
|
||||
ptr += 5; // skip type since we know its 2
|
||||
nPoints = (int *) ptr;
|
||||
ptr += sizeof(int);
|
||||
for (idx = 0; idx < *nPoints; idx++) {
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
// transform the point
|
||||
pt = cXf->transform(*x, *y);
|
||||
if (idx == 0)
|
||||
p->moveTo(pt.xToInt(), pt.yToInt());
|
||||
else
|
||||
p->lineTo(pt.xToInt(), pt.yToInt());
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WKBPolygon:
|
||||
|
||||
p->setBrush(*brush);
|
||||
// get number of rings in the polygon
|
||||
numRings = (int *) (feature + 1 + sizeof(int));
|
||||
//std::cout << "Number of rings: " << *numRings << std::endl;
|
||||
ptr = feature + 1 + 2 * sizeof(int);
|
||||
for (idx = 0; idx < *numRings; idx++) {
|
||||
// get number of points in the ring
|
||||
nPoints = (int *) ptr;
|
||||
//std::cout << "Number of points: " << *nPoints << std::endl;
|
||||
ptr += 4;
|
||||
pa = new QPointArray(*nPoints);
|
||||
for (jdx = 0; jdx < *nPoints; jdx++) {
|
||||
// add points to a point array for drawing the polygon
|
||||
// std::cout << "Adding points to array\n";
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
pt = cXf->transform(*x, *y);
|
||||
pa->setPoint(jdx, pt.xToInt(), pt.yToInt());
|
||||
}
|
||||
// draw the ring
|
||||
//std::cout << "Drawing the polygon\n";
|
||||
p->drawPolygon(*pa);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
case WKBMultiPolygon:
|
||||
p->setBrush(*brush);
|
||||
// get the number of polygons
|
||||
ptr = feature + 5;
|
||||
numPolygons = (int *) ptr;
|
||||
for (kdx = 0; kdx < *numPolygons; kdx++) {
|
||||
//skip the endian and feature type info and
|
||||
// get number of rings in the polygon
|
||||
ptr = feature + 14;
|
||||
numRings = (int *) ptr;
|
||||
ptr += 4;
|
||||
for (idx = 0; idx < *numRings; idx++) {
|
||||
// get number of points in the ring
|
||||
nPoints = (int *) ptr;
|
||||
ptr += 4;
|
||||
pa = new QPointArray(*nPoints);
|
||||
for (jdx = 0; jdx < *nPoints; jdx++) {
|
||||
// add points to a point array for drawing the polygon
|
||||
x = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
y = (double *) ptr;
|
||||
ptr += sizeof(double);
|
||||
// std::cout << "Transforming " << *x << "," << *y << " to ";
|
||||
|
||||
pt = cXf->transform(*x, *y);
|
||||
//std::cout << pt.xToInt() << "," << pt.yToInt() << std::endl;
|
||||
pa->setPoint(jdx, pt.xToInt(), pt.yToInt());
|
||||
|
||||
}
|
||||
// draw the ring
|
||||
p->drawPolygon(*pa);
|
||||
delete pa;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
std::cout << "UNKNOWN WKBTYPE ENCOUNTERED\n";
|
||||
break;
|
||||
@ -719,26 +727,27 @@ QgsRect QgsVectorLayer::bBoxOfSelected()
|
||||
QgsFeature *fet;
|
||||
unsigned char *feature;
|
||||
|
||||
double *x;
|
||||
double *y;
|
||||
int *nPoints;
|
||||
int *numRings;
|
||||
int *numPolygons;
|
||||
int numPoints;
|
||||
int numLineStrings;
|
||||
int idx, jdx, kdx;
|
||||
unsigned char *ptr;
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
int wkbType;
|
||||
|
||||
while ((fet = dataProvider->getNextFeature(false)))
|
||||
{
|
||||
if(selected.find(fet->featureId())!=selected.end())
|
||||
{
|
||||
feature = fet->getGeometry();
|
||||
int wkbType = (int) feature[1];
|
||||
double *x;
|
||||
double *y;
|
||||
int *nPoints;
|
||||
int *numRings;
|
||||
int *numPolygons;
|
||||
int numPoints;
|
||||
int numLineStrings;
|
||||
int idx, jdx, kdx;
|
||||
unsigned char *ptr;
|
||||
char lsb;
|
||||
QgsPoint pt;
|
||||
QPointArray *pa;
|
||||
QString fld;
|
||||
QString val;
|
||||
wkbType = (int) feature[1];
|
||||
|
||||
|
||||
switch (wkbType)
|
||||
{
|
||||
|
@ -137,7 +137,6 @@ class QgsVectorLayer:public QgsMapLayer
|
||||
};
|
||||
private: // Private methods
|
||||
int endian();
|
||||
signals:void repaintRequested();
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user