~ubuntu-branches/ubuntu/trusty/kvirc/trusty

« back to all changes in this revision

Viewing changes to src/modules/objects/KvsObject_painter.cpp

  • Committer: Package Import Robot
  • Author(s): Kai Wasserbäch
  • Date: 2011-09-29 16:27:07 UTC
  • mfrom: (0.3.15 upstream)
  • Revision ID: package-import@ubuntu.com-20110929162707-t29s6itjnsg2syuf
Tags: 4:4.1.3+20110929.svn5980-1
The "Balance of Power" release.

* Synced to upstream's SVN revision 5980.
* debian/control:
  - Vcs-* fields updated.
  - Remove libcrypto++-dev from B-Ds, was dropped upstream.
  - Bumped B-D on debhelper to >= 8.9.4.
* debian/rules:
  - Remove a now obsolete flag.
  - Upstream fixed a typo in a configuration variable name (now
    WANT_COEXISTENCE), updated invocation.
* debian/compat: Now at 9.
* Make KVIrc multiarch ready:
  - debian/{kvirc,libkvilib4,kvirc-modules}.install: Split out binaries
    under /usr/lib.
  - debian/rules: Add -DLIB_SUFFIX to dh_auto_configure invocation.
  - debian/control:
    + Added new packages (needed for split).
    + Added Multi-Arch fields
    + Added Pre-Depends: multiarch-support and ${misc:Pre-Depends} where
      needed.
    + Bumped B-D on CMake.
  - debian/{kvirc,libkvilib4,kvirc-modules}.lintian-overrides: Moved and
    updated overrides to match new locations (one could be dropped in the
    process).

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
#include "KviError.h"
34
34
#include "KviIconManager.h"
35
35
#include "KviMemory.h"
36
 
 #include <QPrintDialog>
 
36
#include <QPrintDialog>
37
37
#include <QTextDocument>
38
38
#include <QIcon>
39
39
 
40
40
#define PAINTER_ROTATE(__angle,__axis)\
41
 
         QTransform transform;\
42
 
     transform.rotate(__angle,__axis);\
43
 
     m_pPainter->setTransform(transform,true);
 
41
        QTransform transform;\
 
42
        transform.rotate(__angle,__axis);\
 
43
        m_pPainter->setTransform(transform,true);
44
44
 
45
45
#define PAINTER_TRANSLATE(__x,__y)\
46
 
         QTransform transform;\
47
 
     transform.translate(__x,__y);\
48
 
      m_pPainter->setTransform(transform,true);
 
46
        QTransform transform;\
 
47
        transform.translate(__x,__y);\
 
48
        m_pPainter->setTransform(transform,true);
49
49
 
50
50
#define PAINTER_SHEAR(__sH,__sV)\
51
 
         QTransform transform;\
52
 
    transform.shear(__sH,__sV);\
53
 
     m_pPainter->setTransform(transform,true);
 
51
        QTransform transform;\
 
52
        transform.shear(__sH,__sV);\
 
53
        m_pPainter->setTransform(transform,true);
54
54
 
55
55
#define PAINTER_SCALE(__sX,__sY)\
56
 
         QTransform transform;\
57
 
     transform.scale(__sX,__sY);\
58
 
     m_pPainter->setTransform(transform,true);
 
56
        QTransform transform;\
 
57
        transform.scale(__sX,__sY);\
 
58
        m_pPainter->setTransform(transform,true);
59
59
 
60
60
 
61
61
const Qt::PenStyle penstyles_cod[] = {
75
75
        "dashDotLine",
76
76
        "dashDotDotLine"
77
77
};
 
78
const int align_cod[] = {
 
79
        Qt::AlignLeft,
 
80
        Qt::AlignRight,
 
81
        Qt::AlignHCenter,
 
82
        Qt::AlignTop,
 
83
        Qt::AlignBottom,
 
84
        Qt::AlignVCenter,
 
85
        Qt::AlignCenter,
 
86
        Qt::TextSingleLine,
 
87
        Qt::TextExpandTabs,
 
88
        Qt::TextShowMnemonic,
 
89
        Qt::TextWordWrap,
 
90
        Qt::TextIncludeTrailingSpaces
 
91
};
 
92
const char * const align_tbl[] = {
 
93
        "Left",
 
94
        "Right",
 
95
        "HCenter",
 
96
        "Top",
 
97
        "Bottom",
 
98
        "VCenter",
 
99
        "Center",
 
100
        "TextSingleLine",
 
101
        "TextExpandTabs",
 
102
        "TextShowMnemonic",
 
103
        "TextWordWrap",
 
104
        "TextIncludeTrailingSpaces"
 
105
};
 
106
#define align_num       (sizeof(align_tbl) / sizeof(align_tbl[0]))
 
107
 
78
108
 
79
109
const QPainter::CompositionMode composition_cod[] = {
80
 
        QPainter::CompositionMode_SourceOver,
81
 
        QPainter::CompositionMode_DestinationOver,
82
 
        QPainter::CompositionMode_Clear,
83
 
        QPainter::CompositionMode_Source,
84
 
        QPainter::CompositionMode_Destination,
85
 
        QPainter::CompositionMode_SourceIn,
86
 
        QPainter::CompositionMode_DestinationIn,
87
 
        QPainter::CompositionMode_SourceOut,
88
 
        QPainter::CompositionMode_DestinationOut,
89
 
        QPainter::CompositionMode_SourceAtop,
90
 
        QPainter::CompositionMode_DestinationAtop,
91
 
        QPainter::CompositionMode_Xor,
92
 
        QPainter::CompositionMode_Plus,
93
 
        QPainter::CompositionMode_Multiply,
94
 
        QPainter::CompositionMode_Screen,
95
 
        QPainter::CompositionMode_Overlay,
96
 
        QPainter::CompositionMode_Darken,
97
 
        QPainter::CompositionMode_Lighten,
98
 
        QPainter::CompositionMode_ColorDodge,
99
 
        QPainter::CompositionMode_ColorBurn,
100
 
        QPainter::CompositionMode_HardLight,
101
 
        QPainter::CompositionMode_SoftLight,
102
 
        QPainter::CompositionMode_Difference,
103
 
        QPainter::CompositionMode_Exclusion,
 
110
        QPainter::CompositionMode_SourceOver,
 
111
        QPainter::CompositionMode_DestinationOver,
 
112
        QPainter::CompositionMode_Clear,
 
113
        QPainter::CompositionMode_Source,
 
114
        QPainter::CompositionMode_Destination,
 
115
        QPainter::CompositionMode_SourceIn,
 
116
        QPainter::CompositionMode_DestinationIn,
 
117
        QPainter::CompositionMode_SourceOut,
 
118
        QPainter::CompositionMode_DestinationOut,
 
119
        QPainter::CompositionMode_SourceAtop,
 
120
        QPainter::CompositionMode_DestinationAtop,
 
121
        QPainter::CompositionMode_Xor,
 
122
        QPainter::CompositionMode_Plus,
 
123
        QPainter::CompositionMode_Multiply,
 
124
        QPainter::CompositionMode_Screen,
 
125
        QPainter::CompositionMode_Overlay,
 
126
        QPainter::CompositionMode_Darken,
 
127
        QPainter::CompositionMode_Lighten,
 
128
        QPainter::CompositionMode_ColorDodge,
 
129
        QPainter::CompositionMode_ColorBurn,
 
130
        QPainter::CompositionMode_HardLight,
 
131
        QPainter::CompositionMode_SoftLight,
 
132
        QPainter::CompositionMode_Difference,
 
133
        QPainter::CompositionMode_Exclusion,
104
134
};
105
135
const char * const composition_tbl[] = {
106
 
        "SourceOver",
107
 
        "DestinationOver",
108
 
        "Clear",
109
 
        "Source",
110
 
        "Destination",
111
 
        "SourceIn",
112
 
        "DestinationIn",
113
 
        "SourceOut",
114
 
        "DestinationOut",
115
 
        "SourceAtop",
116
 
        "DestinationAtop",
117
 
        "Xor",
118
 
        "Plus",
119
 
        "Multiply",
120
 
        "Screen",
121
 
        "Overlay",
122
 
        "Darken",
123
 
        "Lighten",
124
 
        "ColorDodge",
125
 
        "ColorBurn",
126
 
        "HardLight",
127
 
        "SoftLight",
128
 
        "Difference",
129
 
        "Exclusion"
 
136
        "SourceOver",
 
137
        "DestinationOver",
 
138
        "Clear",
 
139
        "Source",
 
140
        "Destination",
 
141
        "SourceIn",
 
142
        "DestinationIn",
 
143
        "SourceOut",
 
144
        "DestinationOut",
 
145
        "SourceAtop",
 
146
        "DestinationAtop",
 
147
        "Xor",
 
148
        "Plus",
 
149
        "Multiply",
 
150
        "Screen",
 
151
        "Overlay",
 
152
        "Darken",
 
153
        "Lighten",
 
154
        "ColorDodge",
 
155
        "ColorBurn",
 
156
        "HardLight",
 
157
        "SoftLight",
 
158
        "Difference",
 
159
        "Exclusion"
130
160
};
131
161
 
132
162
#define penstyles_num   (sizeof(penstyles_tbl) / sizeof(penstyles_tbl[0]))
234
264
                %aa->$show()[br]
235
265
                !fn: $drawRect(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>)
236
266
                Draws a rectangle with upper left corner at (x, y) and with width w and height h.
237
 
                !fn: $drawRoundRect(<start_angle:integer>,<angle_length:integer>,<width:unsigned integer>,<height:unsigned integer>,<xr:integer>,<y:integer>)
 
267
                !fn: $drawRoundRect(<start_angle:integer>,<angle_length:integer>,<width:unsigned integer>,<height:unsigned integer>,<xr:integer>,<y:integer>)
238
268
                Draws a rectangle with rounded corners at (x, y), with width w and height h.[rb]
239
269
                The xCor and yCor arguments specify how rounded the corners should be (range is 0->99).
240
270
                !fn: $drawPie(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>)
281
311
                Returns the font metrics width for the painter's current font.
282
312
                !fn: <integer>$fontMetricsHeight()
283
313
                Returns the font metrics height for the painter's current font.
284
 
                !fn: $rotate(<angle:real>,[<axis:string>])
285
 
                Rotates the coordinate system a degrees counterclockwise by the given angle about the optional parameter <axis>.
286
 
                Valid values for axis are: ZAxis, XAxis, YAxis.
287
 
                Optional parameter <axis>
 
314
                !fn: $rotate(<angle:real>,[<axis:string>])
 
315
                Rotates the coordinate system a degrees counterclockwise by the given angle about the optional parameter <axis>.
 
316
                Valid values for axis are: ZAxis, XAxis, YAxis.
 
317
                Optional parameter <axis>
288
318
                !fn: $translate(<dx:real>,<dy:real>)
289
319
                Translates the coordinate system by <dx>, <dy>.
290
320
                !fn: $shear(<dh:real>,<dv:real>)
295
325
                Sets the background mode of the painter to <bgMode>: valid values are:[br]
296
326
                - Transparent   (that is the default value);[br]
297
327
                - Opaque.[br]
298
 
                !fn: $setOpacity(<opacity_factor:real>)
 
328
                !fn: $setOpacity(<opacity_factor:real>)
299
329
                Sets the painter opacity that affects all painter operations (drawpixmap, drawtext...). Valid values range are from 0 (total transparency) to 1 (total opacity)[br]
300
330
                You must invoke the [classfnc]$begin[/classfnc] before using it.
301
 
                !fn: $setTextAntialiasing(<boolean>)
 
331
                !fn: $setTextAntialiasing(<boolean>)
302
332
                Enable/disable antialias in text if possible.
303
333
                You must call the [classfnc]$begin[/classfnc] before using it.
304
 
                !fn: $setAntialiasing(<boolean>)
 
334
                !fn: $setAntialiasing(<boolean>)
305
335
                Enable/disable antialias in edges of primitives if possible.
306
336
                You must call the [classfnc]$begin[/classfnc] before using it.
307
 
                !fn: $setSmoothPixmapTransform(<boolean>)
 
337
                !fn: $setSmoothPixmapTransform(<boolean>)
308
338
                Enable/disable smooth bilinear pixmap transformation algorithm (such as bilinear).
309
339
                You must call the [classfnc]$begin[/classfnc] before using it.
310
340
                Example:[br]
378
408
                                if ($$->%scrollright >= 550) return[br]
379
409
                                %P->$scale(0.$$->%Zoomindex,0.$$->%Zoomindex)[br]
380
410
                                %P->$translate(400,350)[br]
381
 
                                %P->$drawText($$->%scrollright,10,"Another cool class brought to you by...",-1,Auto)        [br]
 
411
                                %P->$drawText($$->%scrollright,10,"Another cool class brought to you by...",-1,Auto)    [br]
382
412
                                $$->%scrollright += 3;[br]
383
413
                                %P->$reset()[br]
384
414
                        }[br]
496
526
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawRect)
497
527
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawLine)
498
528
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawRoundRect)
499
 
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPoint)
 
529
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPoint)
500
530
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawArc)
501
531
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawEllipse)
502
532
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPie)
506
536
        // Text & Pixmap & Icons
507
537
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawText)
508
538
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPixmap)
 
539
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPixmapMirrored)
 
540
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPixmapWithColorEffect)
509
541
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawIcon)
510
542
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawHtmlText)
511
543
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,htmlTextSize)
512
544
 
513
545
 
514
 
        // Transform Operation
 
546
        // Transform Operation
515
547
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,rotate)
516
548
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,shear)
517
549
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,scale)
542
574
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,setPenWidth)
543
575
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,setPenStyle)
544
576
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,setPen)
 
577
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,pen)
545
578
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,colorNames)
546
579
 
547
580
 
569
602
 
570
603
        // extra
571
604
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,beginPdf)
572
 
        KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_painter,drawPixmapWithEffect);
 
605
 
573
606
 
574
607
 
575
608
KVSO_END_REGISTERCLASS(KvsObject_painter)
588
621
 
589
622
KVSO_BEGIN_DESTRUCTOR(KvsObject_painter)
590
623
 
591
 
if (m_pPainterPath) delete m_pPainterPath;
592
 
        m_pPainterPath=0;
593
 
if (m_pGradient) delete m_pGradient;
594
 
        m_pGradient=0;
595
 
if (m_pPainter && !bDonotdeleteinternalqpainter) delete m_pPainter;
596
 
        m_pPainter = 0;
597
 
if (m_pPrinter) delete m_pPrinter;
598
 
        m_pPrinter = 0;
 
624
        if (m_pPainterPath) delete m_pPainterPath;
 
625
                m_pPainterPath=0;
 
626
        if (m_pGradient) delete m_pGradient;
 
627
                m_pGradient=0;
 
628
        if (m_pPainter && !bDonotdeleteinternalqpainter) delete m_pPainter;
 
629
                m_pPainter = 0;
 
630
        if (m_pPrinter) delete m_pPrinter;
 
631
                m_pPrinter = 0;
599
632
 
600
633
KVSO_END_CONSTRUCTOR(KvsObject_painter)
601
634
 
945
978
        }
946
979
        return true;
947
980
}
948
 
 
 
981
KVSO_CLASS_FUNCTION(painter,pen)
 
982
{
 
983
        CHECK_INTERNAL_POINTER(m_pPainter)
 
984
        QString szFlags;
 
985
        KVSO_PARAMETERS_BEGIN(c)
 
986
                KVSO_PARAMETER("flags",KVS_PT_STRING,KVS_PF_OPTIONAL,szFlags)
 
987
        KVSO_PARAMETERS_END(c)
 
988
        if(szFlags.isEmpty()){
 
989
                c->returnValue()->setString(m_pPainter->pen().color().name());
 
990
                return true;
 
991
        }
 
992
        QColor col=m_pPainter->pen().color();
 
993
        KviKvsVariant *pRed = new KviKvsVariant((kvs_int_t)col.red());
 
994
        KviKvsVariant *pGreen = new KviKvsVariant((kvs_int_t)col.green());
 
995
        KviKvsVariant *pBlue = new KviKvsVariant((kvs_int_t)col.blue());
 
996
        if (szFlags.indexOf('a',0,Qt::CaseInsensitive) != -1){
 
997
                KviKvsArray *pArray = new KviKvsArray();
 
998
                pArray->set(0,pRed);
 
999
                pArray->set(1,pGreen);
 
1000
                pArray->set(2,pBlue);
 
1001
                c->returnValue()->setArray(pArray);
 
1002
        } else if (szFlags.indexOf('h',0,Qt::CaseInsensitive) != -1){
 
1003
                KviKvsHash *pHash = new KviKvsHash();
 
1004
                pHash->set("red",pRed);
 
1005
                pHash->set("green",pGreen);
 
1006
                pHash->set("blue",pBlue);
 
1007
        }
 
1008
        return true;
 
1009
}
949
1010
KVSO_CLASS_FUNCTION(painter,setPen)
950
1011
{
951
1012
        CHECK_INTERNAL_POINTER(m_pPainter)
1078
1139
        CHECK_INTERNAL_POINTER(m_pPainter)
1079
1140
        KviKvsObject * pObject;
1080
1141
        kvs_hobject_t hObject;
1081
 
        KviKvsVariant *v;
1082
 
        QString szFileName;
1083
 
        KVSO_PARAMETERS_BEGIN(c)
1084
 
                        KVSO_PARAMETER("paint_device",KVS_PT_VARIANT,0,v)
1085
 
                        KVSO_PARAMETER("file_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
 
1142
        KviKvsVariant *v;
 
1143
        QString szFileName;
 
1144
        KVSO_PARAMETERS_BEGIN(c)
 
1145
                KVSO_PARAMETER("paint_device",KVS_PT_VARIANT,0,v)
 
1146
                KVSO_PARAMETER("file_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
1086
1147
        KVSO_PARAMETERS_END(c)
1087
 
        QPaintDevice * pd;
1088
 
        if(v->isString())
1089
 
        {
1090
 
             QString szDev;
1091
 
             v->asString(szDev);
1092
 
             if(KviQString::equalCI(szDev,"printer") || KviQString::equalCI(szDev,"pdf"))
1093
 
             {
1094
 
                 if (m_pPrinter) delete m_pPrinter;
1095
 
                 m_pPrinter=new QPrinter();
1096
 
                 if ( KviQString::equalCI(szDev,"pdf"))
1097
 
                 {
1098
 
                 //        m_pPrinter=new QPrinter();
1099
 
                     if(szFileName.isEmpty())
1100
 
                     {
1101
 
                         c->warning(__tr2qs_ctx("Missing filename","objects"));
1102
 
                         return true;
1103
 
                     }
1104
 
                     m_pPrinter->setOutputFormat(QPrinter::PdfFormat);
1105
 
                     m_pPrinter->setOutputFileName(szFileName);
1106
 
                 }
1107
 
                 else
1108
 
                 {
1109
 
                     QPrintDialog printDialog(m_pPrinter, 0);
1110
 
                     if (printDialog.exec() == QDialog::Accepted)
1111
 
                     {
1112
 
                       qDebug("papersize %d",m_pPrinter->paperSize());
1113
 
                       m_pPainter->begin(m_pPrinter);
1114
 
                       return true;
1115
 
                     }
1116
 
                     else
1117
 
                     {
1118
 
                       m_pPrinter=0;
1119
 
                       return true;
1120
 
                     }
1121
 
                   }
1122
 
                   //if (i==3) m_pPrinter->setPaperSize(QPrinter::A3);
1123
 
                   //if (i==4) m_pPrinter->setPaperSize(QPrinter::A4);
1124
 
                }
1125
 
                else
1126
 
                {
1127
 
                    c->warning(__tr2qs_ctx("No valid paint device","objects"));
1128
 
                    return true;
1129
 
                }
1130
 
                m_pPainter->begin(m_pPrinter);
1131
 
                return true;
1132
 
        }
1133
 
        else if (v->isHObject())
1134
 
        {
1135
 
                v->asHObject(hObject);
1136
 
                pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
1137
 
                if (!pObject)
1138
 
                {
1139
 
                    c->warning(__tr2qs_ctx("Pixmap or Widget parameter is not an object","objects"));
1140
 
                    return true;
1141
 
                }
1142
 
            if(pObject->inheritsClass("pixmap"))pd=((KvsObject_pixmap *)pObject)->getImage();
1143
 
                else if (pObject->inheritsClass("widget")) pd=((KvsObject_widget *)pObject)->widget();
1144
 
                else
1145
 
                {
1146
 
                    c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects"));
1147
 
                    return true;
1148
 
                }
1149
 
       }
1150
 
       else
1151
 
       {
1152
 
                c->warning(__tr2qs_ctx("No valid paint device","objects"));
1153
 
                return true;
1154
 
       }
1155
 
       attachDevice(pObject,pd);
1156
 
            //if (pObject->inheritsClass("pixmap")) ((KvsObject_pixmap *)pObject)->pixmapChanged();
1157
 
       return true;
 
1148
        QPaintDevice * pd;
 
1149
        if(v->isString())
 
1150
        {
 
1151
                QString szDev;
 
1152
                v->asString(szDev);
 
1153
                if(KviQString::equalCI(szDev,"printer") || KviQString::equalCI(szDev,"pdf"))
 
1154
                {
 
1155
                        if (m_pPrinter) delete m_pPrinter;
 
1156
                        m_pPrinter=new QPrinter();
 
1157
                        if ( KviQString::equalCI(szDev,"pdf"))
 
1158
                        {
 
1159
                                //m_pPrinter=new QPrinter();
 
1160
                                if(szFileName.isEmpty())
 
1161
                                {
 
1162
                                        c->warning(__tr2qs_ctx("Missing filename","objects"));
 
1163
                                        return true;
 
1164
                                }
 
1165
                                m_pPrinter->setOutputFormat(QPrinter::PdfFormat);
 
1166
                                m_pPrinter->setOutputFileName(szFileName);
 
1167
                        } else {
 
1168
                                QPrintDialog printDialog(m_pPrinter, 0);
 
1169
                                if (printDialog.exec() == QDialog::Accepted)
 
1170
                                {
 
1171
                                        qDebug("papersize %d",m_pPrinter->paperSize());
 
1172
                                        m_pPainter->begin(m_pPrinter);
 
1173
                                        return true;
 
1174
                                } else {
 
1175
                                        m_pPrinter=0;
 
1176
                                        return true;
 
1177
                                }
 
1178
                        }
 
1179
                        //if (i==3) m_pPrinter->setPaperSize(QPrinter::A3);
 
1180
                        //if (i==4) m_pPrinter->setPaperSize(QPrinter::A4);
 
1181
                } else {
 
1182
                    c->warning(__tr2qs_ctx("No valid paint device","objects"));
 
1183
                    return true;
 
1184
                }
 
1185
                m_pPainter->begin(m_pPrinter);
 
1186
                return true;
 
1187
        } else if (v->isHObject()) {
 
1188
                v->asHObject(hObject);
 
1189
                pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
 
1190
                if (!pObject)
 
1191
                {
 
1192
                        c->warning(__tr2qs_ctx("Pixmap or Widget parameter is not an object","objects"));
 
1193
                        return true;
 
1194
                }
 
1195
                if(pObject->inheritsClass("pixmap"))
 
1196
                        pd=((KvsObject_pixmap *)pObject)->getImage();
 
1197
                else if (pObject->inheritsClass("widget"))
 
1198
                        pd=((KvsObject_widget *)pObject)->widget();
 
1199
                else
 
1200
                {
 
1201
                        c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects"));
 
1202
                        return true;
 
1203
                }
 
1204
        } else {
 
1205
                c->warning(__tr2qs_ctx("No valid paint device","objects"));
 
1206
                return true;
 
1207
        }
 
1208
        attachDevice(pObject,pd);
 
1209
        //if (pObject->inheritsClass("pixmap")) ((KvsObject_pixmap *)pObject)->pixmapChanged();
 
1210
        return true;
1158
1211
}
1159
1212
 
1160
1213
void KvsObject_painter::attachDevice(KviKvsObject * o,QPaintDevice * p)
1164
1217
        // KvsObject_pixmap and KvsObject_widget object have this signal
1165
1218
        // it is emitted BEFORE the real QPaintDevice is deleted, so we can eventually
1166
1219
        // call m_pPainter->end() in time
1167
 
        qDebug("Begin painter");
1168
1220
        QObject::connect(m_pDeviceObject,SIGNAL(aboutToDie()),this,SLOT(detachDevice()));
1169
1221
        m_pPainter->begin(p);
1170
1222
}
1216
1268
KVSO_CLASS_FUNCTION(painter,drawText)
1217
1269
{
1218
1270
        CHECK_INTERNAL_POINTER(m_pPainter)
1219
 
        QString szText,szMode;
1220
 
        kvs_int_t iX,iY,iN=-1,iW,iH;
 
1271
        QString szText;
 
1272
        QStringList szAlignList;
 
1273
        kvs_int_t iX,iY,iW,iH; //,iN=-1;
1221
1274
        KVSO_PARAMETERS_BEGIN(c)
1222
1275
                KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
1223
1276
                KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
1224
1277
                KVSO_PARAMETER("w",KVS_PT_INT,0,iW)
1225
1278
                KVSO_PARAMETER("h",KVS_PT_INT,0,iH)
1226
1279
                KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
1227
 
 
 
1280
                KVSO_PARAMETER("align",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,szAlignList)
1228
1281
        KVSO_PARAMETERS_END(c)
1229
 
        if (!szMode.isEmpty() && !KviQString::equalCI(szMode,"Auto"))
 
1282
        int align,sum=0;
 
1283
        if(szAlignList.count())
1230
1284
        {
1231
 
                if(KviQString::equalCI(szMode,"RTL"))m_pPainter->setLayoutDirection(Qt::RightToLeft);
1232
 
                else if(KviQString::equalCI(szMode,"LTR"))m_pPainter->setLayoutDirection(Qt::LeftToRight);
1233
 
                else
 
1285
                for ( QStringList::Iterator it = szAlignList.begin(); it != szAlignList.end(); ++it )
1234
1286
                {
1235
 
                                c->warning(__tr2qs_ctx("Invalid mode '%Q'","objects"),&szMode);
1236
 
                                return true;
 
1287
                        align = 0;
 
1288
                        for(unsigned int j = 0; j < align_num; j++)
 
1289
                        {
 
1290
                                if(KviQString::equalCI((*it), align_tbl[j]))
 
1291
                                {
 
1292
                                        align=align_cod[j];
 
1293
                                        break;
 
1294
                                }
 
1295
                        }
 
1296
                        if(align)
 
1297
                                sum = sum | align;
 
1298
                        else
 
1299
                                c->warning(__tr2qs_ctx("Unknown alignment '%Q'","objects"),&(*it));
1237
1300
                }
1238
1301
        }
1239
 
        //if(!iN) iN = szText.length();
1240
1302
        QRect rect;
1241
1303
        rect.setX(iX);
1242
1304
        rect.setY(iY);
1243
1305
        rect.setWidth(iW);
1244
1306
        rect.setHeight(iH);
1245
 
 
1246
 
        m_pPainter->drawText(rect,szText);
 
1307
        if(szAlignList.count()){
 
1308
                m_pPainter->drawText(rect,sum,szText);
 
1309
        }
 
1310
        else m_pPainter->drawText(rect,szText);
1247
1311
        return true;
1248
1312
}
1249
1313
 
1250
1314
KVSO_CLASS_FUNCTION(painter,drawPixmap)
1251
1315
{
1252
1316
        CHECK_INTERNAL_POINTER(m_pPainter)
1253
 
        kvs_real_t iX,iY;
1254
 
        kvs_int_t iStartx,iStarty,iEndx,iEndy;
 
1317
        kvs_real_t iX,iY,iWidth,iHeight,iStartx,iStarty;
1255
1318
        bool bTiled;
1256
1319
        KviKvsObject *obj;
1257
1320
        kvs_hobject_t hObject;
1259
1322
                KVSO_PARAMETER("x",KVS_PT_REAL,0,iX)
1260
1323
                KVSO_PARAMETER("y",KVS_PT_REAL,0,iY)
1261
1324
                KVSO_PARAMETER("pixmap",KVS_PT_HOBJECT,0,hObject)
1262
 
                KVSO_PARAMETER("start_x",KVS_PT_INT,0,iStartx)
1263
 
                KVSO_PARAMETER("start_y",KVS_PT_INT,0,iStarty)
1264
 
                KVSO_PARAMETER("end_x",KVS_PT_INT,0,iEndx)
1265
 
                KVSO_PARAMETER("end_y",KVS_PT_INT,0,iEndy)
 
1325
                KVSO_PARAMETER("start_x",KVS_PT_REAL,0,iStartx)
 
1326
                KVSO_PARAMETER("start_y",KVS_PT_REAL,0,iStarty)
 
1327
                KVSO_PARAMETER("end_x",KVS_PT_REAL,0,iWidth)
 
1328
                KVSO_PARAMETER("end_y",KVS_PT_REAL,0,iHeight)
1266
1329
                KVSO_PARAMETER("b_Tiled",KVS_PT_BOOLEAN,KVS_PF_OPTIONAL,bTiled)
1267
1330
        KVSO_PARAMETERS_END(c)
1268
1331
        obj=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
1276
1339
                c->warning(__tr2qs_ctx("Pixmap object required","objects"));
1277
1340
                return true;
1278
1341
        }
1279
 
        QImage *pImage=((KvsObject_pixmap *)obj)->getImage();
1280
 
        qDebug("image ");
1281
 
        m_pPainter->drawImage(QPointF(iX,iY),*pImage,QRect(iStartx,iStarty,iEndx,iEndy));
 
1342
        if(bTiled){
 
1343
                QPixmap *pPixmap=((KvsObject_pixmap *)obj)->getPixmap();
 
1344
                //QPoint point(iX,iY);
 
1345
 
 
1346
                //QRectF rectf(QPointF(iStartx,iStarty),QSizeF(iWidth,iHeight));
 
1347
                //m_pPainter->drawTiledPixmap(rectf,*pPixmap,pointf);
 
1348
                //m_pPainter->drawTiledPixmap((int)iX,(int)iY,(int)iWidth,(int)iHeight,*pPixmap,(int)iStartx,(int)iStarty);
 
1349
                qDebug("drawing at x %i -  y %i - w %i - h %i - startpx %i - startpy %i casted",(int)iX,(int)iY,(int)iWidth,(int)iHeight,(int)iStartx,(int)iStarty);
 
1350
                m_pPainter->drawTiledPixmap(iX,iY,iWidth,iHeight,*pPixmap,iStartx,iStarty);
 
1351
        }
 
1352
        else{
 
1353
                QImage *pImage=((KvsObject_pixmap *)obj)->getImage();
 
1354
                QPoint pointf(iX,iY);
 
1355
                QRectF rectf(QPointF(iStartx,iStarty),QSizeF(iWidth,iHeight));
 
1356
                m_pPainter->drawImage(pointf,*pImage,rectf);
 
1357
        }
1282
1358
        return true;
1283
1359
}
1284
 
KVSO_CLASS_FUNCTION(painter,drawPixmapWithEffect)
 
1360
 
 
1361
KVSO_CLASS_FUNCTION(painter,drawPixmapWithColorEffect)
1285
1362
{
1286
1363
        CHECK_INTERNAL_POINTER(m_pPainter)
1287
1364
        QString szEffect;
1288
 
        kvs_real_t iX,iY,factor;
1289
 
        kvs_int_t r,g,b;
 
1365
        kvs_real_t rX,rY;
 
1366
        kvs_int_t r,g,b,iX,iY,iW,iH;
1290
1367
        KviKvsObject *obj;
1291
1368
        kvs_hobject_t hObject;
1292
1369
        KVSO_PARAMETERS_BEGIN(c)
1293
1370
                KVSO_PARAMETER("string_effect",KVS_PT_STRING,0,szEffect)
1294
 
                KVSO_PARAMETER("x",KVS_PT_REAL,0,iX)
1295
 
                KVSO_PARAMETER("y",KVS_PT_REAL,0,iY)
 
1371
                KVSO_PARAMETER("x",KVS_PT_REAL,0,rX)
 
1372
                KVSO_PARAMETER("y",KVS_PT_REAL,0,rY)
1296
1373
                KVSO_PARAMETER("pixmap",KVS_PT_HOBJECT,0,hObject)
1297
 
                KVSO_PARAMETER("red",KVS_PT_INTEGER,0,r)
1298
 
                KVSO_PARAMETER("green",KVS_PT_INTEGER,0,g)
1299
 
                KVSO_PARAMETER("blue",KVS_PT_INTEGER,0,b)
 
1374
                KVSO_PARAMETER("red",KVS_PT_INT,KVS_PF_OPTIONAL,r)
 
1375
                KVSO_PARAMETER("green",KVS_PT_INT,KVS_PF_OPTIONAL,g)
 
1376
                KVSO_PARAMETER("blue",KVS_PT_INT,KVS_PF_OPTIONAL,b)
 
1377
                KVSO_PARAMETER("start_x",KVS_PT_INT,KVS_PF_OPTIONAL,iX)
 
1378
                KVSO_PARAMETER("start_y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
 
1379
                KVSO_PARAMETER("width",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
 
1380
                KVSO_PARAMETER("height",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
1300
1381
        KVSO_PARAMETERS_END(c)
1301
1382
        obj=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
1302
1383
        if (!obj)
1310
1391
                return true;
1311
1392
        }
1312
1393
        QImage *pImage=((KvsObject_pixmap *)obj)->getImage();
1313
 
        QImage pDest(pImage->width(),pImage->height(),QImage::Format_ARGB32);
 
1394
        //QImage pDest(pImage->width(),pImage->height(),QImage::Format_ARGB32);
1314
1395
        QRgb col ;
1315
1396
        QRgb *dataSource;
1316
1397
        QRgb *dataDest;
1317
1398
        int w=pImage->width();
1318
1399
        int h=pImage->height();
1319
 
 
1320
 
        if(KviQString::equalCI(szEffect,"add"))
 
1400
        if(!iW) iW=w;
 
1401
        if(!iH) iH=h;
 
1402
        QImage pDest(iW,iH,QImage::Format_ARGB32);
 
1403
 
 
1404
        int iXend=iX+iW;
 
1405
        int iYend=iY+iH;
 
1406
 
 
1407
        if(KviQString::equalCI(szEffect,"addrgb"))
1321
1408
        {
1322
 
            int sumR, sumG, sumB;
1323
 
            for(int y=0; y<h; y++)
 
1409
            int sumR, sumG, sumB,idx=0;
 
1410
            for(int y=iY; y<iYend; y++)
1324
1411
            {
1325
 
                    dataSource = (QRgb *) pImage->scanLine(y);
1326
 
                    dataDest = (QRgb *) pDest.scanLine(y);
1327
 
                    for (int x=0; x<w; x++)
 
1412
                    dataSource = (QRgb *) pImage->scanLine(y)+iX;
 
1413
                    dataDest = (QRgb *) pDest.scanLine(idx);
 
1414
                    idx++;
 
1415
                    for (int x=iX; x<iXend; x++)
1328
1416
                    {
1329
1417
                        col = *dataSource;
1330
1418
                        sumR=qRed(col)+r;
1338
1426
                    }
1339
1427
            }
1340
1428
        }
1341
 
        else if(KviQString::equalCI(szEffect,"sub"))
 
1429
        else if(KviQString::equalCI(szEffect,"subrgb"))
1342
1430
        {
1343
 
            int subR, subG, subB;
1344
 
            for(int y=0; y<h; y++)
 
1431
            int subR, subG, subB,idx=0;
 
1432
            for(int y=iY; y<iYend; y++)
1345
1433
            {
1346
 
                    dataSource = (QRgb *) pImage->scanLine(y);
1347
 
                    dataDest = (QRgb *) pDest.scanLine(y);
1348
 
                    for (int x=0; x<w; x++)
 
1434
                    dataSource = (QRgb *) pImage->scanLine(y)+iX;
 
1435
                    dataDest = (QRgb *) pDest.scanLine(idx);
 
1436
                    idx++;
 
1437
                    for (int x=iX; x<iXend; x++)
1349
1438
                    {
1350
1439
                        col = *dataSource;
1351
1440
                        subR=qRed(col)-r;
1359
1448
                    }
1360
1449
            }
1361
1450
        }
1362
 
        m_pPainter->drawImage(QPointF(iX,iY),pDest);
 
1451
        else if(KviQString::equalCI(szEffect,"grayscale"))
 
1452
        {
 
1453
                QRgb col;
 
1454
                int res,idx=0;
 
1455
                for(int y=iY; y<iYend; y++)
 
1456
                {
 
1457
                        dataSource = (QRgb *) pImage->scanLine(y)+iX;
 
1458
                        dataDest = (QRgb *) pDest.scanLine(idx);
 
1459
                        for (int x=iX; x<iXend; x++)
 
1460
                        {
 
1461
                                col = *dataSource;
 
1462
                                res = (qRed(col)+qGreen(col)+qBlue(col))/3;
 
1463
                                *dataDest++ = qRgba(res, res, res,qAlpha(col));
 
1464
                                dataSource++;
 
1465
                        }
 
1466
                        idx++;
 
1467
                }
 
1468
        }
 
1469
        m_pPainter->drawImage(QPointF(rX,rY),pDest);
 
1470
        return true;
 
1471
}
 
1472
KVSO_CLASS_FUNCTION(painter,drawPixmapMirrored)
 
1473
{
 
1474
        CHECK_INTERNAL_POINTER(m_pPainter)
 
1475
        bool bHorizontal,bVertical;
 
1476
        kvs_int_t iX,iY,iW,iH;
 
1477
        KviKvsObject *obj;
 
1478
        kvs_hobject_t hObject;
 
1479
        kvs_real_t rX,rY;
 
1480
        KVSO_PARAMETERS_BEGIN(c)
 
1481
                KVSO_PARAMETER("x",KVS_PT_REAL,0,rX)
 
1482
                KVSO_PARAMETER("y",KVS_PT_REAL,0,rY)
 
1483
                KVSO_PARAMETER("pixmap",KVS_PT_HOBJECT,0,hObject)
 
1484
                KVSO_PARAMETER("bHorizontal",KVS_PT_BOOLEAN,0,bHorizontal)
 
1485
                KVSO_PARAMETER("bvertical",KVS_PT_BOOLEAN,0,bVertical)
 
1486
                KVSO_PARAMETER("start_x",KVS_PT_INT,KVS_PF_OPTIONAL,iX)
 
1487
                KVSO_PARAMETER("start_y",KVS_PT_INT,KVS_PF_OPTIONAL,iY)
 
1488
                KVSO_PARAMETER("width",KVS_PT_INT,KVS_PF_OPTIONAL,iW)
 
1489
                KVSO_PARAMETER("height",KVS_PT_INT,KVS_PF_OPTIONAL,iH)
 
1490
        KVSO_PARAMETERS_END(c)
 
1491
        obj=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
 
1492
        if (!obj)
 
1493
        {
 
1494
                c->warning(__tr2qs_ctx("Pixmap parameter is not an object","objects"));
 
1495
                return true;
 
1496
        }
 
1497
        if (!obj->inheritsClass("pixmap"))
 
1498
        {
 
1499
                c->warning(__tr2qs_ctx("Pixmap object required","objects"));
 
1500
                return true;
 
1501
        }
 
1502
        QImage *pImage=((KvsObject_pixmap *)obj)->getImage();
 
1503
        QPoint sourceXY(0,0);
 
1504
        if(c->parameterCount()>=5)
 
1505
        {
 
1506
            sourceXY.setX(iX);
 
1507
            sourceXY.setY(iY);
 
1508
        }
 
1509
        QSize sourceWH(pImage->width(),pImage->height());
 
1510
        if(c->parameterCount()>=5)
 
1511
        {
 
1512
            sourceWH.setWidth(iW);
 
1513
            sourceWH.setHeight(iH);
 
1514
        }
 
1515
        QImage mirrored = pImage->mirrored(bHorizontal,bVertical);
 
1516
        m_pPainter->drawImage(rX,rY,mirrored, sourceXY.x(), sourceXY.y(),sourceWH.width(),sourceWH.height());
1363
1517
        return true;
1364
1518
}
1365
1519
KVSO_CLASS_FUNCTION(painter,rotate)
1366
1520
{
1367
1521
        CHECK_INTERNAL_POINTER(m_pPainter)
1368
 
        kvs_real_t dAngle;
1369
 
        QString szAxis;
 
1522
        kvs_real_t dAngle;
 
1523
        QString szAxis;
1370
1524
        KVSO_PARAMETERS_BEGIN(c)
1371
1525
                KVSO_PARAMETER("angle",KVS_PT_DOUBLE,0,dAngle)
1372
 
                KVSO_PARAMETER("axis",KVS_PT_STRING,KVS_PF_OPTIONAL,szAxis)
 
1526
                KVSO_PARAMETER("axis",KVS_PT_STRING,KVS_PF_OPTIONAL,szAxis)
1373
1527
        KVSO_PARAMETERS_END(c)
1374
 
        Qt::Axis axis = Qt::ZAxis;
1375
 
        if(!szAxis.isEmpty())
1376
 
        {
1377
 
            if (KviQString::equalCI(szAxis,"XAxis"))axis=Qt::XAxis;
1378
 
            else if (KviQString::equalCI(szAxis,"YAxis")) axis=Qt::YAxis;
1379
 
            else if (KviQString::equalCI(szAxis,"ZAxis")) axis=Qt::ZAxis;
1380
 
            else c->warning(__tr2qs_ctx("Unknown axis '%Q' switching to default ZAxis","objects"),&szAxis);
1381
 
        }
1382
 
        PAINTER_ROTATE(dAngle,axis)
 
1528
        Qt::Axis axis = Qt::ZAxis;
 
1529
        if(!szAxis.isEmpty())
 
1530
        {
 
1531
                if (KviQString::equalCI(szAxis,"XAxis"))axis=Qt::XAxis;
 
1532
                else if (KviQString::equalCI(szAxis,"YAxis")) axis=Qt::YAxis;
 
1533
                else if (KviQString::equalCI(szAxis,"ZAxis")) axis=Qt::ZAxis;
 
1534
                else c->warning(__tr2qs_ctx("Unknown axis '%Q' switching to default ZAxis","objects"),&szAxis);
 
1535
        }
 
1536
        PAINTER_ROTATE(dAngle,axis)
1383
1537
        return true;
1384
1538
}
1385
1539
 
1392
1546
                KVSO_PARAMETER("trasl_y",KVS_PT_DOUBLE,0,dYtrasl)
1393
1547
        KVSO_PARAMETERS_END(c)
1394
1548
        PAINTER_TRANSLATE(dXtrasl,dYtrasl)
1395
 
        return true;
 
1549
        return true;
1396
1550
}
1397
1551
 
1398
1552
KVSO_CLASS_FUNCTION(painter,shear)
1404
1558
                KVSO_PARAMETER("shear_v",KVS_PT_DOUBLE,0,dShearv)
1405
1559
        KVSO_PARAMETERS_END(c)
1406
1560
        PAINTER_SHEAR(dShearh,dShearv);
1407
 
        return true;
 
1561
        return true;
1408
1562
}
1409
1563
 
1410
1564
KVSO_CLASS_FUNCTION(painter,scale)
1416
1570
                KVSO_PARAMETER("scale_y",KVS_PT_DOUBLE,0,dScaley)
1417
1571
        KVSO_PARAMETERS_END(c)
1418
1572
        PAINTER_SCALE(dScalex,dScaley);
1419
 
        return true;
 
1573
        return true;
1420
1574
}
1421
1575
 
1422
1576
KVSO_CLASS_FUNCTION(painter,reset)
1423
1577
{
1424
1578
        CHECK_INTERNAL_POINTER(m_pPainter)
1425
 
        m_pPainter->resetTransform();
 
1579
        m_pPainter->resetTransform();
1426
1580
        return true;
1427
1581
}
1428
1582
 
1436
1590
                KVSO_PARAMETER("x",KVS_PT_INT,0,iX)
1437
1591
                KVSO_PARAMETER("y",KVS_PT_INT,0,iY)
1438
1592
                KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
1439
 
                KVSO_PARAMETER("w",KVS_PT_INT,0,iW)
1440
 
                KVSO_PARAMETER("h",KVS_PT_INT,0,iH)
 
1593
                KVSO_PARAMETER("w",KVS_PT_INT,0,iW)
 
1594
                KVSO_PARAMETER("h",KVS_PT_INT,0,iH)
1441
1595
 
1442
1596
        KVSO_PARAMETERS_END(c)
1443
 
        QTextDocument doc;
 
1597
        QTextDocument doc;
1444
1598
        doc.setHtml(szText);
1445
1599
        doc.setDefaultFont(m_pPainter->font());
1446
1600
        m_pPainter->save();
1447
1601
        m_pPainter->translate(iX,iY);
1448
 
        doc.setPageSize(QSize(iW,iH));
 
1602
        doc.setPageSize(QSize(iW,iH));
1449
1603
        doc.drawContents(m_pPainter);
1450
1604
        m_pPainter->restore();
1451
1605
        return true;
1585
1739
{
1586
1740
        CHECK_INTERNAL_POINTER(m_pPainter)
1587
1741
        m_pPainter->save();
1588
 
    return true;
 
1742
        return true;
1589
1743
}
1590
1744
 
1591
1745
KVSO_CLASS_FUNCTION(painter,restore)
1592
1746
{
1593
1747
        CHECK_INTERNAL_POINTER(m_pPainter)
1594
1748
        m_pPainter->restore();
1595
 
    return true;
 
1749
        return true;
1596
1750
}
1597
1751
 
1598
1752
KVSO_CLASS_FUNCTION(painter,setPenStyle)
1613
1767
                }
1614
1768
        }
1615
1769
        QPen pen=m_pPainter->pen();
1616
 
        if (found){
 
1770
        if (found)
 
1771
        {
1617
1772
                pen.setStyle(penstyles_cod[j]);
1618
1773
                m_pPainter->setPen(pen);
1619
1774
        }
1639
1794
                }
1640
1795
        }
1641
1796
        QBrush brush=m_pPainter->brush();
1642
 
        if (found){
 
1797
        if (found)
 
1798
        {
1643
1799
                brush.setStyle(brushstyles_cod[j]);
1644
1800
                m_pPainter->setBrush(brush);
1645
1801
        }
1690
1846
        KVSO_PARAMETERS_END(c)
1691
1847
        if (!var1->asInteger(iCol1))
1692
1848
        {
1693
 
                        var1->asString(szColor);
 
1849
                var1->asString(szColor);
1694
1850
                if (c->paramCount()<3) iOpacity=255;
1695
1851
                else
1696
1852
                {
1704
1860
                QColor col(szColor);
1705
1861
                col.setAlpha(iOpacity);
1706
1862
                m_pGradient->setColorAt(dAt,col);
1707
 
        }
1708
 
        else
1709
 
        {
 
1863
        } else {
1710
1864
                if(c->paramCount()<4)
1711
1865
                {
1712
1866
                        c->error(__tr2qs_ctx("Color name or triplette RGB/HSV values required","objects"));
1717
1871
                        c->error(__tr2qs_ctx("One of the triplette parameters didn't evaluate to an integer","objects"));\
1718
1872
                                return true;
1719
1873
                }
1720
 
                if (c->paramCount()<5) iOpacity=255;
 
1874
                if (c->paramCount()<5)
 
1875
                        iOpacity=255;
1721
1876
                QColor col;
1722
1877
                if(KviQString::equalCI(szColorMode, "HSV"))
1723
 
                col.setHsv(iCol1,iCol2,iCol3,iOpacity);
 
1878
                        col.setHsv(iCol1,iCol2,iCol3,iOpacity);
1724
1879
                else
1725
 
                col.setRgb(iCol1,iCol2,iCol3,iOpacity);
1726
 
                if (!m_pGradient) m_pGradient=new(QLinearGradient);
 
1880
                        col.setRgb(iCol1,iCol2,iCol3,iOpacity);
 
1881
                if (!m_pGradient)
 
1882
                        m_pGradient=new(QLinearGradient);
1727
1883
                m_pGradient->setColorAt(dAt,col);
1728
1884
 
1729
1885
        }
1792
1948
                }
1793
1949
                col.setNamedColor(szColor);
1794
1950
                col.setAlpha(iOpacity);
1795
 
        }
1796
 
        else
1797
 
        {
 
1951
        } else {
1798
1952
                if(c->paramCount()<7)
1799
1953
                {
1800
1954
                        c->error(__tr2qs_ctx("Color name or triplette rgb/hsv value required","objects"));
1805
1959
                        c->error(__tr2qs_ctx("One of the triplette parameters didn't evaluate to an integer","objects"));\
1806
1960
                                return true;
1807
1961
                }
1808
 
                if (c->paramCount()<5) iOpacity=255;
 
1962
                if (c->paramCount()<5)
 
1963
                        iOpacity=255;
1809
1964
                QColor col;
1810
1965
                if(KviQString::equalCI(szColorMode, "HSV"))
1811
 
                col.setHsv(iCol1,iCol2,iCol3,iOpacity);
 
1966
                        col.setHsv(iCol1,iCol2,iCol3,iOpacity);
1812
1967
                else
1813
 
                col.setRgb(iCol1,iCol2,iCol3,iOpacity);
 
1968
                        col.setRgb(iCol1,iCol2,iCol3,iOpacity);
1814
1969
        }
1815
 
        m_pPainter->fillRect(iX,iY,iW,iH,col);
 
1970
        m_pPainter->fillRect(iX,iY,iW,iH,QBrush(col));
1816
1971
        return true;
1817
1972
}
1818
1973
 
1910
2065
                        break;
1911
2066
                }
1912
2067
        }
1913
 
        if (found){
 
2068
        if (found)
 
2069
        {
1914
2070
                m_pPainter->setCompositionMode(composition_cod[j]);
1915
2071
        }
1916
2072
        else c->warning(__tr2qs_ctx("Unknown composition mode '%Q'","objects"),&szComposition);
1919
2075
KVSO_CLASS_FUNCTION(painter,resetPath)
1920
2076
{
1921
2077
        Q_UNUSED(c);
1922
 
        if (m_pPainterPath){
 
2078
        if (m_pPainterPath)
 
2079
        {
1923
2080
                delete m_pPainterPath;
1924
2081
                m_pPainterPath=0;
1925
2082
        }
1927
2084
}
1928
2085
void KvsObject_painter::setInternalPainter(QPainter *p)
1929
2086
{
1930
 
    delete m_pPainter;
1931
 
    m_pPainter=p;
1932
 
    bDonotdeleteinternalqpainter=true;
 
2087
        delete m_pPainter;
 
2088
        m_pPainter=p;
 
2089
        bDonotdeleteinternalqpainter=true;
1933
2090
}
1934
2091
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
1935
2092
#include "m_KvsObject_painter.moc"