Subversion Repositories Scribus

Rev

Rev 4077 | Rev 4272 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4070 subik 1
#include "scribus.h"
2
#include "sampleitem.h"
3
#include "loremipsum.h"
4077 subik 4
#include "scribusdoc.h"
4150 subik 5
#include "undomanager.h"
4070 subik 6
#include <qcolor.h>
7
#include <qstring.h>
8
 
9
extern ScribusMainWindow* ScMW;
10
 
11
 
4077 subik 12
SampleItem::SampleItem() : QObject()
4070 subik 13
{
4077 subik 14
        used = true;
15
        if (ScMW->doc == NULL)
16
        {
4150 subik 17
                ScMW->doFileNew(//pageWidth, pageHeight,
4077 subik 18
                                                                        0,0,
19
                                                                        //topMargin, leftMargin, rightMargin, bottomMargin,
20
                                                                        1, 1, 1, 1,
21
                                                                        // autoframes. It's disabled in python
22
                                                                        // columnDistance, numberCols, autoframes,
23
                                                                        0, 1, false,
24
                                                                        //pagesType, unit, firstPageOrder,
25
                                                                        1, 1, 1,
26
                                                                        //orientation, firstPageNr, "Custom");
27
                                                                        1, 1, "custom");
28
                ScMW->doc->pageSets[1/*pagesType*/].FirstPage = 1;//firstPageOrder;
29
                used = false;
30
        }
31
        doc = ScMW->doc;
4070 subik 32
        tmpStyle.Vname = "(preview temporary)";
33
        tmpStyle.LineSpaMode = 0;
4077 subik 34
        tmpStyle.LineSpa = ((doc->toolSettings.defSize / 10.0) * static_cast<double>(doc->typographicSettings.autoLineSpacing) / 100) + (doc->toolSettings.defSize / 10.0);
4070 subik 35
        tmpStyle.textAlignment = 0;
36
        tmpStyle.Indent = 0;
37
        tmpStyle.First = 0;
38
        tmpStyle.gapBefore = 0;
39
        tmpStyle.gapAfter = 0;
4077 subik 40
        tmpStyle.Font = doc->toolSettings.defFont;
41
        tmpStyle.FontSize = doc->toolSettings.defSize;
4070 subik 42
        tmpStyle.TabValues.clear();
43
        tmpStyle.Drop = false;
44
        tmpStyle.DropLin = 2;
45
        tmpStyle.DropDist = 0;
46
        tmpStyle.FontEffect = 0;
4077 subik 47
        tmpStyle.FColor = doc->toolSettings.dBrush;
48
        tmpStyle.FShade = doc->toolSettings.dShade;
49
        tmpStyle.SColor = doc->toolSettings.dPen;
50
        tmpStyle.SShade = doc->toolSettings.dShade2;
4070 subik 51
        tmpStyle.BaseAdj = false;
52
        tmpStyle.txtShadowX = 50;
53
        tmpStyle.txtShadowY = -50;
54
        tmpStyle.txtOutline = 10;
4077 subik 55
        tmpStyle.txtUnderPos = doc->typographicSettings.valueUnderlinePos;
56
        tmpStyle.txtUnderWidth = doc->typographicSettings.valueUnderlineWidth;
57
        tmpStyle.txtStrikePos = doc->typographicSettings.valueStrikeThruPos;
58
        tmpStyle.txtStrikeWidth = doc->typographicSettings.valueStrikeThruPos;
4070 subik 59
        tmpStyle.scaleH = 1000;
60
        tmpStyle.scaleV = 1000;
61
        tmpStyle.baseOff = 0;
62
        tmpStyle.kernVal = 0;
63
        bgColor = QColor(255, 255, 255);
64
}
65
 
66
SampleItem::~SampleItem()
67
{
4077 subik 68
        if (used == false)
69
        {
70
                doc->setModified(false);
4150 subik 71
                ScMW->slotFileClose();
4077 subik 72
                //qApp->processEvents();
73
        }
4070 subik 74
}
75
 
76
void SampleItem::setText(QString aText)
77
{
78
        text = aText;
79
}
80
 
81
void SampleItem::setLoremIpsum(int para)
82
{
83
        LoremParser *m = new LoremParser("loremipsum.xml");
84
        text = m->createLorem(para);
85
        text = QString::fromUtf8(text);
86
        delete m;
87
}
88
 
89
void SampleItem::setStyle(ParagraphStyle aStyle)
90
{
91
        tmpStyle = aStyle;
92
}
93
 
94
void SampleItem::setBgColor(QColor c)
95
{
96
        bgColor = c;
97
}
98
 
99
void SampleItem::setLineSpaMode(int lineSpaMode)
100
{
101
        tmpStyle.LineSpaMode = lineSpaMode;
102
}
103
 
104
void SampleItem::setLineSpa(double lineSpa)
105
{
106
        tmpStyle.LineSpa = lineSpa;
107
}
108
 
109
void SampleItem::setTextAlignment(int textAlignment)
110
{
111
        tmpStyle.textAlignment = textAlignment;
112
}
113
 
114
void SampleItem::setIndent(double indent)
115
{
116
        tmpStyle.Indent = indent;
117
}
118
 
119
void SampleItem::setFirst(double first)
120
{
121
        tmpStyle.First = first;
122
}
123
 
124
void SampleItem::setGapBefore(double gapBefore)
125
{
126
        tmpStyle.gapBefore = gapBefore;
127
}
128
 
129
void SampleItem::setGapAfter(double gapAfter)
130
{
131
        tmpStyle.gapAfter = gapAfter;
132
}
133
 
134
void SampleItem::setFont(QString font)
135
{
136
        tmpStyle.Font = font;
137
}
138
 
4077 subik 139
void SampleItem::setFontSize(int fontSize, bool autoLineSpa)
4070 subik 140
{
141
        tmpStyle.FontSize = fontSize;
4077 subik 142
        if (autoLineSpa)
143
                tmpStyle.LineSpa = ((fontSize / 10)  * (doc->typographicSettings.autoLineSpacing / 100) + (fontSize / 10));
4070 subik 144
}
145
 
146
/*void SampleItem::setTabValues(QValueList<PageItem::TabRecord> tabValues)
147
{
148
        tmpStyle.TabValues = tabValues;
149
}*/
150
 
151
void SampleItem::setDrop(bool drop)
152
{
153
        tmpStyle.Drop = drop;
154
}
155
 
156
void SampleItem::setDropLin(int dropLin)
157
{
158
        tmpStyle.DropLin = dropLin;
159
}
160
 
161
void SampleItem::setDropDist(double dropDist)
162
{
163
        tmpStyle.DropDist = dropDist;
164
}
165
 
166
void SampleItem::setFontEffect(int fontEffect)
167
{
168
        tmpStyle.FontEffect = fontEffect;
169
}
170
 
171
void SampleItem::setFColor(QString fColor)
172
{
173
        tmpStyle.FColor = fColor;
174
}
175
 
176
void SampleItem::setFShade(int fShade)
177
{
178
        tmpStyle.FShade = fShade;
179
}
180
 
181
void SampleItem::setSColor(QString sColor)
182
{
183
        tmpStyle.SColor = sColor;
184
}
185
 
186
void SampleItem::setSShade(int sShade)
187
{
188
        tmpStyle.SShade = sShade;
189
}
190
 
191
void SampleItem::setBaseAdj(bool baseAdj)
192
{
193
        tmpStyle.BaseAdj = baseAdj;
194
}
195
 
196
void SampleItem::setTxtShadowX(int txtShadowX)
197
{
198
        tmpStyle.txtShadowX = txtShadowX;
199
}
200
 
201
void SampleItem::setTxtShadowY(int txtShadowY)
202
{
203
        tmpStyle.txtShadowY = txtShadowY;
204
}
205
 
206
void SampleItem::setTxtOutline(int txtOutline)
207
{
208
        tmpStyle.txtOutline = txtOutline;
209
}
210
 
211
void SampleItem::setTxtUnderPos(int txtUnderPos)
212
{
213
        tmpStyle.txtUnderPos = txtUnderPos;
214
}
215
 
216
void SampleItem::setTxtUnderWidth(int txtUnderWidth)
217
{
218
        tmpStyle.txtUnderWidth = txtUnderWidth;
219
}
220
 
221
void SampleItem::setTxtStrikePos(int txtStrikePos)
222
{
223
        tmpStyle.txtStrikePos = txtStrikePos;
224
}
225
 
226
void SampleItem::setTxtStrikeWidth(int txtStrikeWidth)
227
{
228
        tmpStyle.txtStrikeWidth = txtStrikeWidth;
229
}
230
 
231
void SampleItem::setScaleH(int scaleH)
232
{
233
        tmpStyle.scaleH = scaleH;
234
}
235
 
236
void SampleItem::setScaleV(int scaleV)
237
{
238
        tmpStyle.scaleV = scaleV;
239
}
240
 
241
void SampleItem::setBaseOff(int baseOff)
242
{
243
        tmpStyle.baseOff = baseOff;
244
}
245
 
246
void SampleItem::setKernVal(int kernVal)
247
{
248
        tmpStyle.kernVal = kernVal;
249
}
250
 
251
QPixmap SampleItem::getSample(int width, int height)
252
{
4150 subik 253
        UndoManager::instance()->setUndoEnabled(false); // disable undo
254
 
4077 subik 255
        PageItem_TextFrame *previewItem = new PageItem_TextFrame(doc, 0, 0, width, width, 0, "None", doc->toolSettings.dPenText);
4070 subik 256
        QPixmap pm(width, height);
257
        ScPainter *painter = new ScPainter(&pm, width, height, 0, 0);
4077 subik 258
        double sca = 1.0;
4070 subik 259
 
4077 subik 260
        if (ScMW->view != NULL)
261
                sca = ScMW->view->getScale();
262
 
4070 subik 263
        QFont fo = QFont(tmpStyle.Font);
4077 subik 264
        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
265
        doc->AddFont(tmpStyle.Font, qRound(doc->toolSettings.defSize / 10.0));
266
        doc->docParagraphStyles.append(tmpStyle);
267
        int tmpIndex = doc->docParagraphStyles.count() - 1;
4070 subik 268
 
269
        previewItem->FrameType = PageItem::TextFrame;
270
        painter->clear(bgColor);
271
        pm.fill(bgColor);
4077 subik 272
        if (ScMW->view != NULL)
273
                ScMW->view->setScale(1.0);
4070 subik 274
 
275
        previewItem->itemText.clear();
4073 cbradney 276
        previewItem->setFont(tmpStyle.Font);
4070 subik 277
        previewItem->Cols = 1;
278
        for (uint i = 0; i < text.length(); ++i)
279
        {
280
                ScText *hg = new ScText;
281
                hg->ch = text.at(i);
282
                if ((hg->ch == QChar(10)) || (hg->ch == QChar(5)))
283
                        hg->ch = QChar(13);
4077 subik 284
                hg->cfont = (*doc->AllFonts)[tmpStyle.Font];
4070 subik 285
                hg->csize = tmpStyle.FontSize;
286
                hg->ccolor = tmpStyle.FColor;
287
                hg->cshade = tmpStyle.FShade;
288
                hg->cstroke = tmpStyle.SColor;
289
                hg->cshade2 = tmpStyle.SShade;
290
                hg->cscale = tmpStyle.scaleH;
291
                hg->cscalev = tmpStyle.scaleV;
292
                hg->cbase = tmpStyle.baseOff;
293
                hg->cshadowx = tmpStyle.txtShadowX;
294
                hg->cshadowy = tmpStyle.txtShadowY;
295
                hg->coutline = tmpStyle.txtOutline;
296
                hg->cunderpos = tmpStyle.txtUnderPos;
297
                hg->cunderwidth = tmpStyle.txtUnderWidth;
298
                hg->cstrikepos = tmpStyle.txtStrikePos;
299
                hg->cstrikewidth = tmpStyle.txtStrikeWidth;
300
                hg->cselect = false;
301
                hg->cstyle = tmpStyle.FontEffect;
302
                hg->cab = tmpIndex;
303
                hg->cextra = tmpStyle.kernVal;
304
                hg->xp = 0;
305
                hg->yp = 0;
306
                hg->PRot = 0;
307
                hg->PtransX = 0;
308
                hg->PtransY = 0;
309
                hg->cembedded = 0;
310
                previewItem->itemText.append(hg);
311
        }
312
 
313
        previewItem->DrawObj(painter, QRect(0, 0, width, height));
314
        painter->end();
315
        delete(painter);
4077 subik 316
        if (ScMW->view != NULL)
317
                ScMW->view->setScale(sca);
4070 subik 318
        delete previewItem;
4077 subik 319
        doc->docParagraphStyles.remove(doc->docParagraphStyles.fromLast());
4150 subik 320
        UndoManager::instance()->setUndoEnabled(true);
4070 subik 321
        return pm;
322
}