void RectTool::startAdding() { auto createNew = [this]() { SP<AbstractRectLayer> layer; if (d->addingType == RectTool::AddText) { auto textLayer = makeSP<TextLayer>(); textLayer->setText(tr("Text")); textLayer->setName(tr("Text")); layer = textLayer; QFont font; font.setPointSize(36); layer->setFillBrush(Color::fromRgbValue(0, 0, 0)); layer->setStrokeBrush(Color::fromRgbValue(0, 0, 0)); layer->setStrokeEnabled(false); textLayer->setFont(font); } else { layer = makeSP<RectLayer>(); if (d->addingType == RectTool::AddEllipse) { layer->setShapeType(AbstractRectLayer::ShapeTypeEllipse); layer->setName(tr("Ellipse")); } else { layer->setShapeType(AbstractRectLayer::ShapeTypeRect); layer->setName(tr("Rectangle")); } layer->setFillBrush(Color::fromRgbValue(0.5, 0.5, 0.5)); layer->setStrokeBrush(Color::fromRgbValue(0, 0, 0)); } return layer; }; d->layerToAdd = createNew(); auto current = layerScene()->current(); if (current) { d->layerToAddParent = current->parent(); d->layerToAddIndex = current->index(); } else { d->layerToAddParent = layerScene()->rootLayer(); d->layerToAddIndex = 0; } addLayerInsertion(d->layerToAddParent, d->layerToAddIndex, d->layerToAdd); }