718 |
718 |
selRenderer->startRender( rendererContext, this );
|
719 |
719 |
}
|
720 |
720 |
|
|
721 |
#ifndef Q_WS_MAC
|
|
722 |
int totalFeatures = pendingFeatureCount();
|
|
723 |
int featureCount = 0;
|
|
724 |
#endif //Q_WS_MAC
|
|
725 |
|
721 |
726 |
QgsFeature fet;
|
722 |
727 |
while ( nextFeature( fet ) )
|
723 |
728 |
{
|
724 |
729 |
try
|
725 |
730 |
{
|
|
731 |
if ( rendererContext.renderingStopped() )
|
|
732 |
{
|
|
733 |
break;
|
|
734 |
}
|
|
735 |
|
|
736 |
#ifndef Q_WS_MAC //MH: disable this on Mac for now to avoid problems with resizing
|
|
737 |
if ( mUpdateThreshold > 0 && 0 == featureCount % mUpdateThreshold )
|
|
738 |
{
|
|
739 |
emit screenUpdateRequested();
|
|
740 |
emit drawingProgress( featureCount, totalFeatures );
|
|
741 |
qApp->processEvents();
|
|
742 |
}
|
|
743 |
else if ( featureCount % 1000 == 0 )
|
|
744 |
{
|
|
745 |
emit drawingProgress( featureCount, totalFeatures );
|
|
746 |
qApp->processEvents();
|
|
747 |
}
|
|
748 |
#endif //Q_WS_MAC
|
|
749 |
|
726 |
750 |
bool sel = mSelectedFeatureIds.contains( fet.id() );
|
727 |
751 |
bool drawMarker = ( mEditable && ( !vertexMarkerOnlyForSelection || sel ) );
|
728 |
752 |
|
... | ... | |
749 |
773 |
msg += cse.what();
|
750 |
774 |
QgsLogger::warning( msg );
|
751 |
775 |
}
|
|
776 |
#ifndef Q_WS_MAC
|
|
777 |
++featureCount;
|
|
778 |
#endif //Q_WS_MAC
|
752 |
779 |
}
|
753 |
780 |
|
754 |
|
mRendererV2->stopRender( rendererContext );
|
755 |
|
|
756 |
|
if ( selRenderer )
|
757 |
|
{
|
758 |
|
selRenderer->stopRender( rendererContext );
|
759 |
|
delete selRenderer;
|
760 |
|
}
|
|
781 |
stopRendererV2(rendererContext, selRenderer);
|
761 |
782 |
}
|
762 |
783 |
|
763 |
784 |
void QgsVectorLayer::drawRendererV2Levels( QgsRenderContext& rendererContext, bool labeling )
|
... | ... | |
781 |
802 |
|
782 |
803 |
// 1. fetch features
|
783 |
804 |
QgsFeature fet;
|
|
805 |
#ifndef Q_WS_MAC
|
|
806 |
int featureCount = 0;
|
|
807 |
#endif //Q_WS_MAC
|
784 |
808 |
while ( nextFeature( fet ) )
|
785 |
809 |
{
|
|
810 |
if ( rendererContext.renderingStopped() )
|
|
811 |
{
|
|
812 |
stopRendererV2(rendererContext, selRenderer);
|
|
813 |
return;
|
|
814 |
}
|
|
815 |
#ifndef Q_WS_MAC
|
|
816 |
if ( featureCount % 1000 == 0 )
|
|
817 |
{
|
|
818 |
qApp->processEvents();
|
|
819 |
}
|
|
820 |
#endif //Q_WS_MAC
|
786 |
821 |
QgsSymbolV2* sym = mRendererV2->symbolForFeature( fet );
|
787 |
822 |
if ( !features.contains( sym ) )
|
788 |
823 |
{
|
... | ... | |
798 |
833 |
// Cache this for the use of (e.g.) modifying the feature's uncommitted geometry.
|
799 |
834 |
mCachedGeometries[fet.id()] = *fet.geometry();
|
800 |
835 |
}
|
|
836 |
#ifndef Q_WS_MAC
|
|
837 |
++featureCount;
|
|
838 |
#endif //Q_WS_MAC
|
801 |
839 |
}
|
802 |
840 |
|
803 |
841 |
// find out the order
|
... | ... | |
831 |
869 |
int layer = item.layer();
|
832 |
870 |
QList<QgsFeature>& lst = features[item.symbol()];
|
833 |
871 |
QList<QgsFeature>::iterator fit;
|
|
872 |
#ifndef Q_WS_MAC
|
|
873 |
featureCount = 0;
|
|
874 |
#endif //Q_WS_MAC
|
834 |
875 |
for ( fit = lst.begin(); fit != lst.end(); ++fit )
|
835 |
876 |
{
|
|
877 |
if ( rendererContext.renderingStopped() )
|
|
878 |
{
|
|
879 |
stopRendererV2(rendererContext, selRenderer);
|
|
880 |
return;
|
|
881 |
}
|
|
882 |
#ifndef Q_WS_MAC
|
|
883 |
if ( featureCount % 1000 == 0 )
|
|
884 |
{
|
|
885 |
qApp->processEvents();
|
|
886 |
}
|
|
887 |
#endif //Q_WS_MAC
|
836 |
888 |
bool sel = mSelectedFeatureIds.contains( fit->id() );
|
837 |
889 |
// maybe vertex markers should be drawn only during the last pass...
|
838 |
890 |
bool drawMarker = ( mEditable && ( !vertexMarkerOnlyForSelection || sel ) );
|
... | ... | |
851 |
903 |
msg += cse.what();
|
852 |
904 |
QgsLogger::warning( msg );
|
853 |
905 |
}
|
|
906 |
#ifndef Q_WS_MAC
|
|
907 |
++featureCount;
|
|
908 |
#endif //Q_WS_MAC
|
854 |
909 |
}
|
855 |
910 |
}
|
856 |
911 |
}
|
857 |
912 |
|
858 |
|
mRendererV2->stopRender( rendererContext );
|
859 |
|
|
860 |
|
if ( selRenderer )
|
861 |
|
{
|
862 |
|
selRenderer->stopRender( rendererContext );
|
863 |
|
delete selRenderer;
|
864 |
|
}
|
|
913 |
stopRendererV2(rendererContext, selRenderer);
|
865 |
914 |
}
|
866 |
915 |
|
867 |
916 |
bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
|
868 |
917 |
{
|
|
918 |
//set update threshold before each draw to make sure the current setting is picked up
|
|
919 |
QSettings settings;
|
|
920 |
mUpdateThreshold = settings.value( "Map/updateThreshold", 0 ).toInt();
|
|
921 |
|
869 |
922 |
if ( mUsingRendererV2 )
|
870 |
923 |
{
|
871 |
924 |
if ( mRendererV2 == NULL )
|
... | ... | |
916 |
969 |
return TRUE;
|
917 |
970 |
}
|
918 |
971 |
|
919 |
|
//set update threshold before each draw to make sure the current setting is picked up
|
920 |
|
QSettings settings;
|
921 |
|
mUpdateThreshold = settings.value( "Map/updateThreshold", 0 ).toInt();
|
922 |
972 |
//draw ( p, viewExtent, theMapToPixelTransform, ct, drawingToEditingCanvas, 1., 1.);
|
923 |
973 |
|
924 |
974 |
if ( mRenderer )
|
... | ... | |
4540 |
4590 |
}
|
4541 |
4591 |
return -1;
|
4542 |
4592 |
}
|
|
4593 |
|
|
4594 |
void QgsVectorLayer::stopRendererV2( QgsRenderContext& rendererContext, QgsSingleSymbolRendererV2* selRenderer )
|
|
4595 |
{
|
|
4596 |
mRendererV2->stopRender( rendererContext );
|
|
4597 |
if ( selRenderer )
|
|
4598 |
{
|
|
4599 |
selRenderer->stopRender( rendererContext );
|
|
4600 |
delete selRenderer;
|
|
4601 |
}
|
|
4602 |
}
|