Subversion Repositories Scribus

Rev

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