696
694
if (dX==0.0 && dY==0.0)
703
701
emit imageOffsetScale(LocalScX, LocalScY, LocalX, LocalY);
706
704
void PageItem::setReversed(bool newReversed)
706
if (Reverse == newReversed)
708
if (UndoManager::undoEnabled())
710
SimpleState *ss = new SimpleState(Um::FlipH, 0, Um::IFlipH);
711
ss->set("REVERSE_TEXT", newReversed);
712
undoManager->action(this, ss);
714
Reverse = newReversed;
717
//return frame where is text end
718
PageItem * PageItem::frameTextEnd()
720
PageItem * LastBox = this;
721
if (frameOverflows() && NextBox)
722
{ // text ending in some next frame
724
while (LastBox != 0 && !LastBox->frameDisplays(itemText.length()-1))
725
LastBox = LastBox->nextInChain();
727
else if (frameUnderflows() && BackBox)
728
{ //text ending in some previous frame
730
while (LastBox != 0 && !LastBox->frameDisplays(itemText.length()-1))
731
LastBox = LastBox->prevInChain();
712
736
/// returns true if text overflows
713
737
bool PageItem::frameOverflows() const
1032
if (!isGroupControl)
1034
if (fillBlendmode() != 0)
1035
p->beginLayer(1.0 - fillTransparency(), fillBlendmode());
1079
if (!isGroupControl)
1081
if (fillBlendmode() != 0)
1082
p->beginLayer(1.0 - fillTransparency(), fillBlendmode());
1037
p->setLineWidth(m_lineWidth);
1042
if ((patternVal.isEmpty()) || (!m_Doc->docPatterns.contains(patternVal)))
1044
p->fill_gradient = VGradient(VGradient::linear);
1045
if (fillColor() != CommonStrings::None)
1047
p->setBrush(fillQColor);
1048
p->setFillMode(ScPainter::Solid);
1051
p->setFillMode(ScPainter::None);
1052
if ((!patternVal.isEmpty()) && (!m_Doc->docPatterns.contains(patternVal)))
1060
p->setPattern(&m_Doc->docPatterns[patternVal], patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation);
1061
p->setFillMode(ScPainter::Pattern);
1066
if (fill_gradient.Stops() < 2) // fall back to solid filling if there are not enough colorstops in the gradient.
1068
if (fillColor() != CommonStrings::None)
1070
p->setBrush(fillQColor);
1071
p->setFillMode(ScPainter::Solid);
1074
p->setFillMode(ScPainter::None);
1078
p->setFillMode(ScPainter::Gradient);
1079
p->fill_gradient = fill_gradient;
1090
p->setGradient(VGradient::linear, FPoint(GrStartX, GrStartY), FPoint(GrEndX, GrEndY));
1094
gra.setPoints(2, GrStartX, GrStartY, GrEndX, GrEndY);
1095
p->setGradient(VGradient::radial, gra.point(0), gra.point(1), gra.point(0));
1103
p->fill_gradient = VGradient(VGradient::linear);
1104
if (fillColor() != CommonStrings::None)
1106
p->setBrush(fillQColor);
1107
p->setFillMode(ScPainter::Solid);
1110
p->setFillMode(ScPainter::None);
1112
if (lineColor() != CommonStrings::None)
1114
// if ((m_lineWidth == 0) && ! asLine())
1115
// p->setLineWidth(0);
1118
p->setPen(strokeQColor, m_lineWidth, PLineArt, PLineEnd, PLineJoin);
1119
if (DashValues.count() != 0)
1120
p->setDash(DashValues, DashOffset);
1125
if (fillBlendmode() == 0)
1126
p->setBrushOpacity(1.0 - fillTransparency());
1127
if (lineBlendmode() == 0)
1128
p->setPenOpacity(1.0 - lineTransparency());
1129
p->setFillRule(fillRule);
1084
p->setLineWidth(m_lineWidth);
1089
if ((patternVal.isEmpty()) || (!m_Doc->docPatterns.contains(patternVal)))
1091
p->fill_gradient = VGradient(VGradient::linear);
1092
if (fillColor() != CommonStrings::None)
1094
p->setBrush(fillQColor);
1095
p->setFillMode(ScPainter::Solid);
1098
p->setFillMode(ScPainter::None);
1099
if ((!patternVal.isEmpty()) && (!m_Doc->docPatterns.contains(patternVal)))
1107
p->setPattern(&m_Doc->docPatterns[patternVal], patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation);
1108
p->setFillMode(ScPainter::Pattern);
1113
if (fill_gradient.Stops() < 2) // fall back to solid filling if there are not enough colorstops in the gradient.
1115
if (fillColor() != CommonStrings::None)
1117
p->setBrush(fillQColor);
1118
p->setFillMode(ScPainter::Solid);
1121
p->setFillMode(ScPainter::None);
1125
p->setFillMode(ScPainter::Gradient);
1126
p->fill_gradient = fill_gradient;
1137
p->setGradient(VGradient::linear, FPoint(GrStartX, GrStartY), FPoint(GrEndX, GrEndY));
1141
gra.setPoints(2, GrStartX, GrStartY, GrEndX, GrEndY);
1142
p->setGradient(VGradient::radial, gra.point(0), gra.point(1), gra.point(0));
1150
p->fill_gradient = VGradient(VGradient::linear);
1151
if (fillColor() != CommonStrings::None)
1153
p->setBrush(fillQColor);
1154
p->setFillMode(ScPainter::Solid);
1157
p->setFillMode(ScPainter::None);
1159
if (lineColor() != CommonStrings::None)
1161
// if ((m_lineWidth == 0) && ! asLine())
1162
// p->setLineWidth(0);
1165
p->setPen(strokeQColor, m_lineWidth, PLineArt, PLineEnd, PLineJoin);
1166
if (DashValues.count() != 0)
1167
p->setDash(DashValues, DashOffset);
1172
if (fillBlendmode() == 0)
1173
p->setBrushOpacity(1.0 - fillTransparency());
1174
if (lineBlendmode() == 0)
1175
p->setPenOpacity(1.0 - lineTransparency());
1176
p->setFillRule(fillRule);
2720
2767
if (freeScale != ScaleType)
2722
2769
ss->set("SCALE_TYPE", freeScale);
2725
//if switching from free scaling to frame size
2726
//in undo must be offset and scale saved
2727
ss->set("OLD_IMAGEXOFFSET", LocalX);
2728
ss->set("OLD_IMAGEYOFFSET", LocalY);
2729
ss->set("OLD_IMAGEXSCALE", LocalScX);
2730
ss->set("OLD_IMAGEYSCALE", LocalScY);
2770
ss->set("OLD_IMAGEXOFFSET", LocalX);
2771
ss->set("OLD_IMAGEYOFFSET", LocalY);
2772
ss->set("OLD_IMAGEXSCALE", LocalScX);
2773
ss->set("OLD_IMAGEYSCALE", LocalScY);
2733
2775
if (keepRatio != AspectRatio)
2734
2776
ss->set("ASPECT_RATIO", keepRatio);
3982
4029
iT.insert(0, itemText);
3985
int StartOldSel = -1, LenOldSel = -1;
4032
int StartOldSel = 0, LenOldSel = 0;
4035
StartOldSel = itemText.startOfSelection();
4036
LenOldSel = itemText.lengthOfSelection();
3986
4038
if (undoItem == PARAGRAPH)
3991
StartOldSel = itemText.startOfSelection();
3992
LenOldSel = itemText.lengthOfSelection();
3994
4039
asTextFrame()->expandParaSelection(true);
3996
else if (undoItem == CHAR || (undoItem == SELECTION && !HasSel))
4040
else if (undoItem == CHAR || !HasSel)
3998
LenOldSel = itemText.lengthOfSelection();
4000
StartOldSel = itemText.startOfSelection();
4001
if (CPos >= itemText.length())
4042
if (itemText.cursorPosition() >= itemText.length())
4003
itemText.select(CPos,1);
4044
itemText.select(itemText.cursorPosition(), 1);
4007
iT.insert(0, itemText, HasSel);
4047
iT.insert(0, itemText, true);
4048
itemText.deselectAll();
4008
4049
if (LenOldSel > 0) //restoring old selection if undoItem was PARAPGRAPH
4010
4050
itemText.select(StartOldSel, LenOldSel);
4013
else if (LenOldSel == 0)
4015
itemText.deselectAll();
4020
4053
std::ostringstream xmlString;
4090
4108
return &pageItemAttributes;
4111
QList<ObjectAttribute> PageItem::getObjectAttributes(QString attributeName) const
4113
QList<ObjectAttribute> attributes;
4114
for(ObjAttrVector::const_iterator objAttrIt = pageItemAttributes.begin() ; objAttrIt != pageItemAttributes.end(); ++objAttrIt )
4116
if (objAttrIt->name == attributeName)
4118
attributes.append(*objAttrIt);
4093
4124
ObjectAttribute PageItem::getObjectAttribute(QString attributeName) const
4096
4127
ObjAttrVector::const_iterator foundIt = pageItemAttributes.begin();
4097
for(ObjAttrVector::const_iterator objAttrIt = pageItemAttributes.begin() ; objAttrIt != pageItemAttributes.end(); ++objAttrIt )
4128
for(ObjAttrVector::const_iterator objAttrIt = pageItemAttributes.begin(); objAttrIt != pageItemAttributes.end(); ++objAttrIt )
4099
if ((*objAttrIt).name==attributeName)
4130
if (objAttrIt->name == attributeName)
4133
foundIt = objAttrIt;
4105
4136
ObjectAttribute returnAttribute;
4107
returnAttribute=(*foundIt);
4138
returnAttribute = (*foundIt);
4109
returnAttribute.name=QString::null;
4140
returnAttribute.name = QString::null;
4110
4141
return returnAttribute;