fixed issue with strait line strokes

preferencesAboutTextFull
Claudio Valerio 12 years ago
parent 8c9ed200a0
commit 0bae231b15
  1. 2
      src/board/UBBoardView.cpp
  2. 84
      src/domain/UBGraphicsScene.cpp

@ -1069,9 +1069,7 @@ void UBBoardView::mousePressEvent (QMouseEvent *event)
else else
{ {
if(UBDrawingController::drawingController()->mActiveRuler==NULL) if(UBDrawingController::drawingController()->mActiveRuler==NULL)
{
viewport()->setCursor (QCursor (Qt::BlankCursor)); viewport()->setCursor (QCursor (Qt::BlankCursor));
}
if (scene () && !mTabletStylusIsPressed) if (scene () && !mTabletStylusIsPressed)
{ {

@ -558,6 +558,7 @@ bool UBGraphicsScene::inputDeviceRelease()
// Add the center cross // Add the center cross
foreach(QGraphicsItem* item, mAddedItems){ foreach(QGraphicsItem* item, mAddedItems){
mAddedItems.remove(item);
removeItem(item); removeItem(item);
UBCoreGraphicsScene::removeItemFromDeletion(item); UBCoreGraphicsScene::removeItemFromDeletion(item);
mArcPolygonItem->setStrokesGroup(pStrokes); mArcPolygonItem->setStrokesGroup(pStrokes);
@ -732,38 +733,17 @@ void UBGraphicsScene::drawLineTo(const QPointF &pEndPoint, const qreal &pWidth,
mAddedItems.clear(); mAddedItems.clear();
} }
mpLastPolygon = polygonItem;
mAddedItems.insert(polygonItem);
// Here we add the item to the scene
addItem(polygonItem);
if (!mCurrentStroke) if (!mCurrentStroke)
mCurrentStroke = new UBGraphicsStroke(); mCurrentStroke = new UBGraphicsStroke();
polygonItem->setStroke(mCurrentStroke);
QPolygonF newPolygon = UBGeometryUtils::lineToPolygon(QLineF(mPreviousPoint, pEndPoint), mPreviousWidth, pWidth); mPreviousPolygonItems.append(polygonItem);
if (!mCurrentPolygon)
{
mCurrentPolygon = new UBGraphicsPolygonItem();
mCurrentPolygon->setPolygon(newPolygon);
initPolygonItem(mCurrentPolygon);
addItem(mCurrentPolygon);
mAddedItems.insert(mCurrentPolygon);
mCurrentPolygon->setStroke(mCurrentStroke);
mpLastPolygon = mCurrentPolygon;
}
//newPolygon = newPolygon.united(mCurrentPolygon->polygon());
QPainterPath strokePainterPath;
strokePainterPath.addPolygon(mCurrentPolygon->sceneTransform().map(mCurrentPolygon->polygon()));
//QList<QPolygonF>
QPolygonF oldPolygons = strokePainterPath.simplified().toFillPolygon(mCurrentPolygon->sceneTransform().inverted());
newPolygon = oldPolygons.united(newPolygon);
mpLastPolygon = mCurrentPolygon;
mCurrentPolygon->setPolygon(newPolygon);
if (!bLineStyle) if (!bLineStyle)
@ -845,10 +825,29 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
} }
} }
//remove full polygon item for replace it by couple of polygons who creates the same stroke without a part which intersects with eraser //remove full polygon item for replace it by couple of polygons which creates the same stroke without a part intersects with eraser
mRemovedItems << intersectedPolygonItem; mRemovedItems << intersectedPolygonItem;
intersectedPolygonItem->strokesGroup()->removeFromGroup(intersectedPolygonItem);
QTransform t;
bool bApplyTransform = false;
if (intersectedPolygonItem->strokesGroup())
{
if (intersectedPolygonItem->strokesGroup()->parentItem())
{
bApplyTransform = true;
t = intersectedPolygonItem->sceneTransform();
}
intersectedPolygonItem->strokesGroup()->removeFromGroup(intersectedPolygonItem);
}
removeItem(intersectedPolygonItem);
if (bApplyTransform)
intersectedPolygonItem->setTransform(t);
removeItem(intersectedPolygonItem); removeItem(intersectedPolygonItem);
if (bApplyTransform)
intersectedPolygonItem->setTransform(t);
} }
if (!intersectedItems.empty()) if (!intersectedItems.empty())
@ -1505,9 +1504,30 @@ UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, c
textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false)); textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false));
textItem->adjustSize(); textItem->adjustSize();
textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
textItem->setPlainText(pString);
} }
else{
textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
if (pString == textItem->toPlainText())
return textItem;
textItem->setPlainText(pString); QTextCursor curCursor = textItem->textCursor();
QFont font = textItem->font();
QColor color = curCursor.charFormat().foreground().color();
textItem->setPlainText(pString);
textItem->clearFocus();
textItem->setFont(font);
QTextCharFormat format;
format.setForeground(QBrush(color));
curCursor.mergeCharFormat(format);
textItem->setTextCursor(curCursor);
// textItem->setSelected(true);
textItem->contentsChanged();
}
textItem->clearFocus(); textItem->clearFocus();
return textItem; return textItem;

Loading…
Cancel
Save