@ -384,13 +384,15 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy
UBGraphicsScene * UBSvgSubsetAdaptor : : UBSvgSubsetReader : : loadScene ( )
UBGraphicsScene * UBSvgSubsetAdaptor : : UBSvgSubsetReader : : loadScene ( )
{
{
qDebug ( ) < < " loadScene() : starting reading... " ;
qDebug ( ) < < " loadScene() : starting reading... " ;
QTime time ;
time . start ( ) ;
mScene = 0 ;
mScene = 0 ;
UBGraphicsWidgetItem * currentWidget = 0 ;
UBGraphicsWidgetItem * currentWidget = 0 ;
mFileVersion = 40100 ; // default to 4.1.0
mFileVersion = 40100 ; // default to 4.1.0
UBGraphicsStroke * annotationGroup = 0 ;
UBGraphicsStrokesGroup * strokesGroup = 0 ;
UBGraphicsStrokesGroup * strokesGroup = 0 ;
UBGraphicsStroke * currentStroke = 0 ;
while ( ! mXmlReader . atEnd ( ) )
while ( ! mXmlReader . atEnd ( ) )
{
{
@ -514,16 +516,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
}
}
else if ( mXmlReader . name ( ) = = " g " )
else if ( mXmlReader . name ( ) = = " g " )
{
{
// Create new stroke, if its NULL or already has polygons
if ( annotationGroup )
{
if ( ! annotationGroup - > polygons ( ) . empty ( ) )
annotationGroup = new UBGraphicsStroke ( ) ;
}
else
annotationGroup = new UBGraphicsStroke ( ) ;
strokesGroup = new UBGraphicsStrokesGroup ( ) ;
strokesGroup = new UBGraphicsStrokesGroup ( ) ;
graphicsItemFromSvg ( strokesGroup ) ;
graphicsItemFromSvg ( strokesGroup ) ;
@ -568,15 +560,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
{
{
polygonItem - > setUuid ( uuidFromSvg ) ;
polygonItem - > setUuid ( uuidFromSvg ) ;
if ( annotationGroup )
polygonItem - > setStroke ( annotationGroup ) ;
if ( strokesGroup ) {
polygonItem - > setTransform ( strokesGroup - > transform ( ) ) ;
strokesGroup - > addToGroup ( polygonItem ) ;
polygonItem - > setStrokesGroup ( strokesGroup ) ;
}
polygonItem - > setData ( UBGraphicsItemData : : ItemLayerType , QVariant ( UBItemLayerType : : Graphic ) ) ;
polygonItem - > setData ( UBGraphicsItemData : : ItemLayerType , QVariant ( UBItemLayerType : : Graphic ) ) ;
@ -584,10 +567,16 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
if ( ! mStrokesList . contains ( parentId ) ) {
if ( ! mStrokesList . contains ( parentId ) ) {
group = new UBGraphicsStrokesGroup ( ) ;
group = new UBGraphicsStrokesGroup ( ) ;
mStrokesList . insert ( parentId , group ) ;
mStrokesList . insert ( parentId , group ) ;
currentStroke = new UBGraphicsStroke ( ) ;
}
}
else
else
group = mStrokesList . value ( parentId ) ;
group = mStrokesList . value ( parentId ) ;
polygonItem - > setTransform ( group - > transform ( ) ) ;
group - > addToGroup ( polygonItem ) ;
polygonItem - > setStrokesGroup ( group ) ;
polygonItem - > setStroke ( currentStroke ) ;
polygonItem - > show ( ) ;
polygonItem - > show ( ) ;
group - > addToGroup ( polygonItem ) ;
group - > addToGroup ( polygonItem ) ;
@ -598,33 +587,28 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
QList < UBGraphicsPolygonItem * > polygonItems
QList < UBGraphicsPolygonItem * > polygonItems
= polygonItemsFromPolylineSvg ( mScene - > isDarkBackground ( ) ? Qt : : white : Qt : : black ) ;
= polygonItemsFromPolylineSvg ( mScene - > isDarkBackground ( ) ? Qt : : white : Qt : : black ) ;
QString parentId = QUuid : : createUuid ( ) . toString ( ) ;
foreach ( UBGraphicsPolygonItem * polygonItem , polygonItems )
foreach ( UBGraphicsPolygonItem * polygonItem , polygonItems )
{
{
if ( annotationGroup )
{
polygonItem - > setStroke ( annotationGroup ) ;
}
if ( strokesGroup ) {
polygonItem - > setTransform ( strokesGroup - > transform ( ) ) ;
strokesGroup - > addToGroup ( polygonItem ) ;
polygonItem - > setStrokesGroup ( strokesGroup ) ;
}
polygonItem - > setData ( UBGraphicsItemData : : ItemLayerType , QVariant ( UBItemLayerType : : Graphic ) ) ;
polygonItem - > setData ( UBGraphicsItemData : : ItemLayerType , QVariant ( UBItemLayerType : : Graphic ) ) ;
QString parentId = mXmlReader . attributes ( ) . value ( mNamespaceUri , " parent " ) . toString ( ) ;
Q_ASSERT ( ! parentId . isEmpty ( ) ) ;
UBGraphicsStrokesGroup * group ;
UBGraphicsStrokesGroup * group ;
if ( ! mStrokesList . contains ( parentId ) ) {
if ( ! mStrokesList . contains ( parentId ) ) {
group = new UBGraphicsStrokesGroup ( ) ;
group = new UBGraphicsStrokesGroup ( ) ;
mStrokesList . insert ( parentId , group ) ;
mStrokesList . insert ( parentId , group ) ;
currentStroke = new UBGraphicsStroke ( ) ;
}
}
else
else
group = mStrokesList . value ( parentId ) ;
group = mStrokesList . value ( parentId ) ;
polygonItem - > setTransform ( group - > transform ( ) ) ;
group - > addToGroup ( polygonItem ) ;
polygonItem - > setStrokesGroup ( group ) ;
polygonItem - > setStroke ( currentStroke ) ;
polygonItem - > show ( ) ;
polygonItem - > show ( ) ;
group - > addToGroup ( polygonItem ) ;
}
}
}
}
else if ( mXmlReader . name ( ) = = " image " )
else if ( mXmlReader . name ( ) = = " image " )
@ -985,11 +969,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
{
{
if ( mXmlReader . name ( ) = = " g " )
if ( mXmlReader . name ( ) = = " g " )
{
{
if ( annotationGroup )
{
if ( ! annotationGroup - > polygons ( ) . empty ( ) )
annotationGroup = 0 ;
}
mGroupHasInfo = false ;
mGroupHasInfo = false ;
mGroupDarkBackgroundColor = QColor ( ) ;
mGroupDarkBackgroundColor = QColor ( ) ;
mGroupLightBackgroundColor = QColor ( ) ;
mGroupLightBackgroundColor = QColor ( ) ;
@ -1014,14 +993,9 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
mScene - > setModified ( false ) ;
mScene - > setModified ( false ) ;
}
}
if ( annotationGroup )
{
if ( annotationGroup - > polygons ( ) . empty ( ) )
delete annotationGroup ;
}
mScene - > enableUndoRedoStack ( ) ;
mScene - > enableUndoRedoStack ( ) ;
qDebug ( ) < < " loadScene() : created scene and read file " ;
qDebug ( ) < < " loadScene() : created scene and read file " ;
qDebug ( ) < < " spent milliseconds: " < < time . elapsed ( ) ;
return mScene ;
return mScene ;
}
}
@ -1033,7 +1007,6 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
QString id = mXmlReader . attributes ( ) . value ( aId ) . toString ( ) ;
QString id = mXmlReader . attributes ( ) . value ( aId ) . toString ( ) ;
id = id . mid ( 1 , id . length ( ) - 2 ) ;
id = id . mid ( 1 , id . length ( ) - 2 ) ;
qDebug ( ) < < id ;
bool shouldSkipSubElements = false ;
bool shouldSkipSubElements = false ;
if ( mStrokesList . contains ( id ) )
if ( mStrokesList . contains ( id ) )
shouldSkipSubElements = true ;
shouldSkipSubElements = true ;
@ -1725,6 +1698,18 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromPol
if ( ! svgPoints . isNull ( ) )
if ( ! svgPoints . isNull ( ) )
{
{
// int lenght = strlen(svgPoints.toUtf8().constData()) + 1;
// char pippo[lenght];
// memcpy(pippo,svgPoints.toUtf8().constData(),lenght);
// char* localPosition = (char*) &pippo[0];
// do{
// float x = atof(localPosition);
// localPosition = strchr(localPosition,',') + 1;
// float y = atof(localPosition);
// localPosition = strchrnul(localPosition,' ');
// polygon << QPointF(x,y);
// }while(localPosition - pippo > lenght - 5);
QStringList ts = svgPoints . toString ( ) . split ( QLatin1Char ( ' ' ) ,
QStringList ts = svgPoints . toString ( ) . split ( QLatin1Char ( ' ' ) ,
QString : : SkipEmptyParts ) ;
QString : : SkipEmptyParts ) ;