Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
61d46015
Commit
61d46015
authored
Nov 09, 2011
by
Ivan Ilin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cff partial support
parent
b484a095
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
129 additions
and
211 deletions
+129
-211
UBCFFSubsetAdaptor.cpp
src/adaptors/UBCFFSubsetAdaptor.cpp
+124
-210
UBCFFSubsetAdaptor.h
src/adaptors/UBCFFSubsetAdaptor.h
+5
-0
UBGraphicsScene.cpp
src/domain/UBGraphicsScene.cpp
+0
-1
No files found.
src/adaptors/UBCFFSubsetAdaptor.cpp
View file @
61d46015
...
...
@@ -223,7 +223,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
//ellipse horisontal and vertical radius
qreal
rx
=
element
.
attribute
(
aRx
).
toDouble
();
qreal
ry
=
element
.
attribute
(
aRy
).
toDouble
();
QSvgGenerator
*
generator
=
createSvgGenerator
(
rx
*
2
+
10
,
ry
*
2
+
10
);
QSvgGenerator
*
generator
=
createSvgGenerator
(
rx
*
2
,
ry
*
2
);
//fill and stroke color
QColor
fillColor
=
colorFromString
(
element
.
attribute
(
aFill
));
...
...
@@ -243,7 +243,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
painter
.
setPen
(
pen
);
painter
.
setBrush
(
QBrush
(
fillColor
));
painter
.
drawEllipse
(
5
,
5
,
rx
*
2
,
ry
*
2
);
painter
.
drawEllipse
(
0
,
0
,
rx
*
2
,
ry
*
2
);
painter
.
end
();
...
...
@@ -255,7 +255,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
transform
=
transformFromString
(
textTransform
);
hastransform
=
true
;
}
repositionSvgItem
(
svgItem
,
rx
*
2
+
10
,
ry
*
2
+
10
,
cx
-
rx
-
5
,
cy
-
ry
-
5
,
hastransform
,
transform
);
repositionSvgItem
(
svgItem
,
rx
*
2
,
ry
*
2
,
cx
-
rx
,
cy
-
ry
,
hastransform
,
transform
);
delete
generator
;
return
true
;
...
...
@@ -440,166 +440,101 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTextAttributes(const QDomElemen
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseSvgText
(
const
QDomElement
&
element
)
{
// qreal x = element.attribute(aX).toDouble();
// qreal y = element.attribute(aY).toDouble();;
// qreal width = 0;
// qreal height = 0;
// QList<QRectF> textRects;
// QList<QFont> textFonts;
// QList<QString> textLines;
// QList<int> textAligns;
// QList<QColor> textColors;
// qWarning() << QString().sprintf("Text coordinates : %f,%f. Text size %f,%f", x, y, width, height);
// qreal fontSize = 12.0;
// QFont textFont;
// QColor fontColor;
// QString fontFamily = "Arial";
// QString fontStretch = "normal";
// bool italic = false;
// int fontWeight = QFont::Normal;
// int textAlign = Qt::AlignLeft;
// QTransform fontTransform;
// parseTextAttributes(element, fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
// textFont = QFont(fontFamily, fontSize, fontWeight, italic);
// QFontMetricsF metrics = QFontMetricsF(textFont);
// qreal curHeight = metrics.height();
// qreal curY = 0.0;
// qreal curX = 0.0;
// qreal linespacing = QFontMetrics(textFont).leading();
// //remember if text area has transform
// QTransform transform;
//// bool hasTransform = getCurElementTransorm(transform);
// QRectF lastDrawnTextBoundingRect;
// QStack<QFont> fontStack;
// QStack<QColor> colorStack;
// QStack<int> alignStack;
qreal
x
=
element
.
attribute
(
aX
).
toDouble
();
qreal
y
=
element
.
attribute
(
aY
).
toDouble
();
qreal
width
=
element
.
attribute
(
aWidth
).
toDouble
();
qreal
height
=
element
.
attribute
(
aHeight
).
toDouble
();
// // first extimate desired text area size
// // to do that, parse text area tags
// while(true)
// {
// mReader.readNext();
// QStringRef elementName = mReader.name();
// if (mReader.isEndDocument())
// break;
// if (mReader.isEndElement())
// {
// if (elementName == tBreak)
// {
// //when tbreak appers, move down by the drawn rect height
// //TODO: line spacing is not calculated yet, probably additional code is required
// curY += lastDrawnTextBoundingRect.height() + linespacing;
// curX = 0.0;
// height += lastDrawnTextBoundingRect.height();
// lastDrawnTextBoundingRect = QRectF(0,0,0,0);
// continue;
// }
// if (elementName == tTspan)
// {
// textFont = fontStack.pop();
// fontColor = colorStack.pop();
// textAlign = alignStack.pop();
// continue;
// }
// }
// if (mReader.isEndElement() && elementName == tText)
// break;
// if (mReader.isStartElement() && elementName == tTspan)
// {
// fontStack.push(textFont);
// colorStack.push(fontColor);
// alignStack.push(textAlign);
qreal
fontSize
=
12
;
QColor
fontColor
(
qApp
->
palette
().
foreground
().
color
());
QString
fontFamily
=
"Arial"
;
QString
fontStretch
=
"normal"
;
bool
italic
=
false
;
int
fontWeight
=
QFont
::
Normal
;
int
textAlign
=
Qt
::
AlignLeft
;
QTransform
fontTransform
;
parseTextAttributes
(
element
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
// parseTextAttributes(fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
// textFont = QFont(fontFamily, fontSize, fontWeight, italic);
// metrics = QFontMetricsF(textFont);
// curHeight = metrics.height();
// linespacing = QFontMetricsF(textFont).leading();
// continue;
// }
// if (mReader.isCharacters() || mReader.isCDATA())
// {
// QString text = mReader.text().toString();
QSvgGenerator
*
generator
=
createSvgGenerator
(
width
,
height
);
QPainter
painter
;
painter
.
begin
(
generator
);
painter
.
setFont
(
QFont
(
fontFamily
,
fontSize
,
fontWeight
,
italic
));
// //skip empty text
// if (text.trimmed().length() == 0)
// continue;
// //get bounding rect to obtain desired text height
// lastDrawnTextBoundingRect = metrics.boundingRect(QRectF(), textAlign, text);
// QString log = QString().sprintf(" at rect %f, %f, %f, %f. Bounding rect is %f, %f, %f, %f", 0.0, curY, width, height - curY, lastDrawnTextBoundingRect.x(), lastDrawnTextBoundingRect.y(), lastDrawnTextBoundingRect.width(), lastDrawnTextBoundingRect.height());
// qWarning() << "Text " << text << log;
// textFonts.append(textFont);
// textRects.append(QRectF(curX, curY, lastDrawnTextBoundingRect.width(), lastDrawnTextBoundingRect.height()));
// textLines.append(text);
// textAligns.append(textAlign);
// textColors.append(fontColor);
// curX += lastDrawnTextBoundingRect.width();
// if (width < curX)
// width = curX;
// if (height == 0)
// height = curHeight;
qreal
curY
=
0.0
;
qreal
curX
=
0.0
;
qreal
linespacing
=
QFontMetricsF
(
painter
.
font
()).
leading
();
// continue;
// }
// }
// remember if text area has transform
// QString transformString;
QTransform
transform
=
fontTransform
;
bool
hasTransform
=
!
fontTransform
.
isIdentity
();
// QSvgGenerator *generator = createSvgGenerator(width, height);
// QPainter painter;
// painter.begin(generator);
QRectF
lastDrawnTextBoundingRect
;
//parse text area tags
// if (textRects.count() != 0)
// {
// QListIterator<QRectF> textRectsIter(textRects);
// QListIterator<QFont> textFontsIter(textFonts);
// QListIterator<QString> textLinesIter(textLines);
// QListIterator<int> textAlignsIter(textAligns);
// QListIterator<QColor> textColorsIter(textColors);
//recursive call any tspan in text svg element
parseTSpan
(
element
,
painter
,
curX
,
curY
,
width
,
height
,
linespacing
,
lastDrawnTextBoundingRect
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
// while (textRectsIter.hasNext())
// {
// QRectF rt = textRectsIter.next();
// QFont font = textFontsIter.next();
// QString line = textLinesIter.next();
// int align = textAlignsIter.next();
// QColor color = textColorsIter.next();
// painter.setFont(font);
// painter.setPen(color);
// painter.drawText(rt.x(), rt.y(), rt.width(), rt.height(), align, line);
// }
// }
painter
.
end
();
// painter.end();
//add resulting svg file to scene
UBGraphicsSvgItem
*
svgItem
=
mCurrentScene
->
addSvg
(
QUrl
::
fromLocalFile
(
generator
->
fileName
()));
repositionSvgItem
(
svgItem
,
width
,
height
,
x
,
y
,
hasTransform
,
transform
);
// //add resulting svg file to scene
// UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()))
;
// repositionSvgItem(svgItem, width, height, x, y, hasTransform, transform);
delete
generator
;
return
true
;
}
// delete generator;
void
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseTSpan
(
const
QDomElement
&
parent
,
QPainter
&
painter
,
qreal
&
curX
,
qreal
&
curY
,
qreal
&
width
,
qreal
&
height
,
qreal
&
linespacing
,
QRectF
&
lastDrawnTextBoundingRect
,
qreal
&
fontSize
,
QColor
&
fontColor
,
QString
&
fontFamily
,
QString
&
fontStretch
,
bool
&
italic
,
int
&
fontWeight
,
int
&
textAlign
,
QTransform
&
fontTransform
)
{
QDomNode
curNode
=
parent
.
firstChild
();
while
(
!
curNode
.
isNull
())
{
if
(
curNode
.
toElement
().
tagName
()
==
tTspan
)
{
return
true
;
QDomElement
curTSpan
=
curNode
.
toElement
();
parseTextAttributes
(
curTSpan
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
painter
.
setFont
(
QFont
(
fontFamily
,
fontSize
,
fontWeight
,
italic
));
painter
.
setPen
(
fontColor
);
linespacing
=
QFontMetricsF
(
painter
.
font
()).
leading
();
parseTSpan
(
curTSpan
,
painter
,
curX
,
curY
,
width
,
height
,
linespacing
,
lastDrawnTextBoundingRect
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
}
else
if
(
curNode
.
nodeType
()
==
QDomNode
::
CharacterDataNode
||
curNode
.
nodeType
()
==
QDomNode
::
CDATASectionNode
||
curNode
.
nodeType
()
==
QDomNode
::
TextNode
)
{
QDomCharacterData
textData
=
curNode
.
toCharacterData
();
QString
text
=
textData
.
data
().
trimmed
();
//get bounding rect to obtain desired text height
lastDrawnTextBoundingRect
=
painter
.
boundingRect
(
QRectF
(
curX
,
curY
,
width
,
height
-
curY
),
textAlign
|
Qt
::
TextWordWrap
,
text
);
painter
.
drawText
(
curX
,
curY
,
width
,
lastDrawnTextBoundingRect
.
height
(),
textAlign
|
Qt
::
TextWordWrap
,
text
);
curX
+=
lastDrawnTextBoundingRect
.
x
()
+
lastDrawnTextBoundingRect
.
width
();
}
else
if
(
curNode
.
nodeType
()
==
QDomNode
::
ElementNode
&&
curNode
.
toElement
().
tagName
()
==
tBreak
)
{
curY
+=
lastDrawnTextBoundingRect
.
height
()
+
linespacing
;
curX
=
0.0
;
lastDrawnTextBoundingRect
=
QRectF
(
0
,
0
,
0
,
0
);
}
curNode
=
curNode
.
nextSibling
();
}
}
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseSvgTextarea
(
const
QDomElement
&
element
)
{
//TODO textarea node
qreal
x
=
element
.
attribute
(
aX
).
toDouble
();
qreal
y
=
element
.
attribute
(
aY
).
toDouble
();
qreal
width
=
element
.
attribute
(
aWidth
).
toDouble
();
qreal
height
=
element
.
attribute
(
aHeight
).
toDouble
();
qreal
fontSize
=
12
;
QColor
fontColor
;
QColor
fontColor
(
qApp
->
palette
().
foreground
().
color
())
;
QString
fontFamily
=
"Arial"
;
QString
fontStretch
=
"normal"
;
bool
italic
=
false
;
...
...
@@ -625,47 +560,18 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &
QRectF
lastDrawnTextBoundingRect
;
//parse text area tags
QDomElement
curTextElement
=
element
.
firstChildElement
();
while
(
!
curTextElement
.
isNull
())
{
QString
tagName
=
curTextElement
.
tagName
();
if
(
tagName
==
tTspan
)
{
parseTextAttributes
(
curTextElement
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
painter
.
setFont
(
QFont
(
fontFamily
,
fontSize
,
fontWeight
,
italic
));
painter
.
setPen
(
fontColor
);
linespacing
=
QFontMetricsF
(
painter
.
font
()).
leading
();
QDomNode
tspanNode
=
curTextElement
.
firstChild
();
while
(
!
tspanNode
.
isNull
())
{
if
(
tspanNode
.
nodeType
()
==
QDomNode
::
CharacterDataNode
||
tspanNode
.
nodeType
()
==
QDomNode
::
CDATASectionNode
)
{
QDomCharacterData
textData
=
tspanNode
.
toCharacterData
();
QString
text
=
textData
.
data
().
trimmed
();
//get bounding rect to obtain desired text height
lastDrawnTextBoundingRect
=
painter
.
boundingRect
(
QRectF
(
curX
,
curY
,
width
,
height
-
curY
),
textAlign
|
Qt
::
TextWordWrap
,
text
);
painter
.
drawText
(
curX
,
curY
,
width
,
lastDrawnTextBoundingRect
.
height
(),
textAlign
|
Qt
::
TextWordWrap
,
text
);
curX
+=
lastDrawnTextBoundingRect
.
x
()
+
lastDrawnTextBoundingRect
.
width
();
}
else
if
(
tspanNode
.
nodeType
()
==
QDomNode
::
ElementNode
)
{
//when tbreak appers, move down by the drawn rect height
//TODO: line spacing is not calculated yet, additional code is required
curY
+=
lastDrawnTextBoundingRect
.
height
()
+
linespacing
;
curX
=
0.0
;
lastDrawnTextBoundingRect
=
QRectF
(
0
,
0
,
0
,
0
);
}
tspanNode
=
tspanNode
.
nextSibling
();
}
}
else
if
(
tagName
==
tBreak
)
{
}
curTextElement
=
curTextElement
.
nextSiblingElement
();
}
//recursive call any tspan in text svg element
parseTSpan
(
element
,
painter
,
curX
,
curY
,
width
,
height
,
linespacing
,
lastDrawnTextBoundingRect
,
fontSize
,
fontColor
,
fontFamily
,
fontStretch
,
italic
,
fontWeight
,
textAlign
,
fontTransform
);
painter
.
end
();
//add resulting svg file to scene
UBGraphicsSvgItem
*
svgItem
=
mCurrentScene
->
addSvg
(
QUrl
::
fromLocalFile
(
generator
->
fileName
()));
repositionSvgItem
(
svgItem
,
width
,
height
,
x
+
5
,
y
+
5
,
hasTransform
,
transform
);
delete
generator
;
repositionSvgItem
(
svgItem
,
width
,
height
,
x
,
y
,
hasTransform
,
transform
);
delete
generator
;
return
true
;
}
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseSvgImage
(
const
QDomElement
&
element
)
...
...
@@ -750,6 +656,34 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseSvgAudio
(
const
QDomElement
&
element
)
{
qreal
x
=
element
.
attribute
(
aX
).
toDouble
();
qreal
y
=
element
.
attribute
(
aY
).
toDouble
();
qreal
width
=
element
.
attribute
(
aWidth
).
toDouble
();
qreal
height
=
element
.
attribute
(
aHeight
).
toDouble
();
QString
itemRefPath
=
element
.
attribute
(
aHref
);
QUrl
urlPath
;
if
(
!
itemRefPath
.
isNull
())
{
QString
videoPath
=
pwdContent
+
"/"
+
itemRefPath
;
if
(
!
QFile
::
exists
(
videoPath
))
{
qDebug
()
<<
"can't load file"
<<
pwdContent
+
"/"
+
itemRefPath
<<
"maybe file corrupted"
;
return
false
;
}
urlPath
=
QUrl
::
fromLocalFile
(
videoPath
);
}
UBGraphicsAudioItem
*
audioItem
=
mCurrentScene
->
addAudio
(
urlPath
,
false
);
QTransform
transform
;
QString
textTransform
=
element
.
attribute
(
aTransform
);
bool
hastransform
=
false
;
if
(
!
textTransform
.
isNull
())
{
transform
=
transformFromString
(
textTransform
);
hastransform
=
true
;
}
repositionSvgItem
(
audioItem
,
width
,
height
,
x
,
y
,
hastransform
,
transform
);
hashSceneItem
(
element
,
audioItem
);
return
true
;
}
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseSvgVideo
(
const
QDomElement
&
element
)
...
...
@@ -927,8 +861,6 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElement(QDomElement &element
}
return
true
;
}
bool
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
parseDoc
()
...
...
@@ -943,7 +875,6 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseDoc()
currentTopElement
=
currentTopElement
.
nextSiblingElement
();
}
return
true
;
}
...
...
@@ -951,47 +882,30 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *ite
qreal
x
,
qreal
y
,
bool
useTransform
,
QTransform
&
transform
)
{
QTransform
curTrans
=
item
->
transform
();
// qWarning() << QString().sprintf("Item current transform = %f 0 0 %f %f %f, position %f, %f", curTrans.m11(), curTrans.m22(), curTrans.dx(), curTrans.dy(), item->x(), item->y());
//check if rect is rotated
//rotate svg item itself
//First using viebox coordinates, then translate them to scene coordinates
QRectF
itemBounds
=
item
->
boundingRect
();
//first, svg is mapped to svg item bound
//second, svg item is mapped to scene
//so, get svg to svg item scale and multiple by scene scale
qreal
hScale
=
itemBounds
.
width
()
/
width
*
curTrans
.
m11
();
qreal
vScale
=
itemBounds
.
height
()
/
height
*
curTrans
.
m22
();
qreal
xScale
=
width
/
itemBounds
.
width
();
qreal
yScale
=
height
/
itemBounds
.
height
();
if
(
useTransform
)
{
qreal
fullScaleX
=
mVBTransFactor
*
xScale
;
qreal
fullScaleY
=
mVBTransFactor
*
yScale
;
if
(
useTransform
)
{
//if rotation or translation specified
QPointF
oldVector
((
x
-
transform
.
dx
()),
(
y
-
transform
.
dy
()));
QTransform
rTransform
(
transform
.
m11
(),
transform
.
m12
(),
transform
.
m21
(),
transform
.
m22
(),
0
,
0
);
QPointF
newVector
=
rTransform
.
map
(
oldVector
);
rTransform
.
scale
(
curTrans
.
m11
(),
curTrans
.
m22
());
item
->
setTransform
(
QTransform
(
rTransform
.
m11
()
*
mVBTransFactor
,
rTransform
.
m12
()
*
mVBTransFactor
,
rTransform
.
m21
(),
rTransform
.
m22
(),
0
,
0
));
item
->
setPos
((
x
-
mViewBoxCenter
.
x
()
+
(
newVector
-
oldVector
).
x
())
*
xScale
*
mVBTransFactor
,
(
y
-
mViewBoxCenter
.
y
()
+
(
newVector
-
oldVector
).
y
())
*
yScale
*
mVBTransFactor
);
}
else
{
qreal
fullScaleX
=
mVBTransFactor
*
xScale
;
qreal
fullScaleY
=
mVBTransFactor
*
yScale
;
item
->
setTransform
(
rTransform
.
scale
(
fullScaleX
,
fullScaleY
));
item
->
setPos
((
x
-
mViewBoxCenter
.
x
()
+
(
newVector
-
oldVector
).
x
())
*
mVBTransFactor
,
(
y
-
mViewBoxCenter
.
y
()
+
(
newVector
-
oldVector
).
y
())
*
mVBTransFactor
);
}
else
{
//item is't rotated or translated
item
->
setTransform
(
QTransform
(
fullScaleX
,
0
,
0
,
fullScaleY
,
0
,
0
));
itemBounds
=
item
->
boundingRect
();
item
->
setPos
((
int
)((
x
-
mViewBoxCenter
.
x
())
*
mVBTransFactor
),
(
int
)((
y
-
mViewBoxCenter
.
y
())
*
mVBTransFactor
));
QPointF
newPos
=
item
->
pos
();
qDebug
();
}
QTransform
newTrans
=
item
->
transform
();
// qWarning() << QString("Item new transform = %3 0 0 %4 %1 %2, position %5, %6").arg(newTrans.dx()).arg(newTrans.dy()).arg(newTrans.m11()).arg(newTrans.m22()).arg(item->x()).arg(item->y());
}
void
UBCFFSubsetAdaptor
::
UBCFFSubsetReader
::
experimentalReposition
(
QGraphicsItem
*
item
,
qreal
width
,
qreal
height
,
qreal
x
,
qreal
y
,
...
...
src/adaptors/UBCFFSubsetAdaptor.h
View file @
61d46015
...
...
@@ -95,8 +95,13 @@ private:
inline
bool
parseSvgVideo
(
const
QDomElement
&
element
);
inline
bool
parseIwbGroup
(
QDomElement
&
parent
);
inline
bool
parseIwbElement
(
QDomElement
&
element
);
inline
void
parseTSpan
(
const
QDomElement
&
parent
,
QPainter
&
painter
,
qreal
&
curX
,
qreal
&
curY
,
qreal
&
width
,
qreal
&
height
,
qreal
&
linespacing
,
QRectF
&
lastDrawnTextBoundingRect
,
qreal
&
fontSize
,
QColor
&
fontColor
,
QString
&
fontFamily
,
QString
&
fontStretch
,
bool
&
italic
,
int
&
fontWeight
,
int
&
textAlign
,
QTransform
&
fontTransform
);
inline
void
hashSceneItem
(
const
QDomElement
&
element
,
UBGraphicsItem
*
item
);
// to kill
void
parseTextAttributes
(
const
QDomElement
&
element
,
qreal
&
fontSize
,
QColor
&
fontColor
,
QString
&
fontFamily
,
QString
&
fontStretch
,
bool
&
italic
,
...
...
src/domain/UBGraphicsScene.cpp
View file @
61d46015
...
...
@@ -139,7 +139,6 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent)
connect
(
this
,
SIGNAL
(
selectionChanged
()),
this
,
SLOT
(
selectionChangedProcessing
()));
}
UBGraphicsScene
::~
UBGraphicsScene
()
{
// NOOP
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment