]> SALOME platform Git repositories - modules/shaper.git/blob - src/ModuleBase/ModuleBase_Tools.cpp
Salome HOME
0f57b4c7b7fedc812fa84c3cc465d9d369d6205f
[modules/shaper.git] / src / ModuleBase / ModuleBase_Tools.cpp
1 // File:        ModuleBase_Tools.cpp
2 // Created:     11 July 2014
3 // Author:      Vitaly Smetannikov
4
5 #include "ModuleBase_Tools.h"
6 #include <QWidget>
7 #include <QLayout>
8 #include <QPainter>
9 #include <QBitmap>
10
11 namespace ModuleBase_Tools {
12
13 //******************************************************************
14
15 //******************************************************************
16
17 void adjustMargins(QWidget* theWidget)
18 {
19   if(!theWidget)
20     return;
21   adjustMargins(theWidget->layout());
22 }
23
24 void adjustMargins(QLayout* theLayout)
25 {
26   if(!theLayout)
27     return;
28   theLayout->setContentsMargins(2, 5, 5, 2);
29   theLayout->setSpacing(4);
30 }
31
32 void zeroMargins(QWidget* theWidget)
33 {
34   if(!theWidget)
35     return;
36   zeroMargins(theWidget->layout());
37 }
38
39 void zeroMargins(QLayout* theLayout)
40 {
41   if(!theLayout)
42     return;
43   theLayout->setContentsMargins(0, 0, 0, 0);
44   theLayout->setSpacing(5);
45 }
46
47 QPixmap composite(const QString& theAdditionalIcon, const int theXShift,
48                   const int theYShift, const QString& theIcon)
49 {
50   QImage anIcon(theIcon);
51   QImage anAditional(theAdditionalIcon);
52
53   if (anIcon.isNull())
54     return QPixmap();
55
56   int anAddWidth = anAditional.width();
57   int anAddHeight = anAditional.height();
58
59   int aWidth = anIcon.width();
60   int aHeight = anIcon.height();
61
62   int aStartWidthPos = aWidth-anAddWidth-1;
63   int aStartHeightPos = aHeight-anAddHeight-1;
64
65   for (int i = 0; i < anAddWidth; i++)
66   {
67     for (int j = 0; j < anAddHeight; j++)
68     {
69       if (qAlpha(anAditional.pixel(i, j)) > 0)
70         anIcon.setPixel(i + aStartWidthPos, j + aStartHeightPos, anAditional.pixel(i, j));
71     }
72   }
73   return QPixmap::fromImage(anIcon);
74 }
75
76 QPixmap lighter(const QString& theIcon, const int theLighterValue)
77 {
78   QImage anIcon(theIcon);
79   if (anIcon.isNull())
80     return QPixmap();
81
82   QImage aResult(theIcon);
83   for ( int i = 0; i < anIcon.width(); i++ )
84   {
85     for ( int j = 0; j < anIcon.height(); j++ )
86     {
87       QRgb anRgb = anIcon.pixel( i, j );
88       QColor aPixelColor(qRed(anRgb), qGreen(anRgb), qBlue(anRgb),
89                          qAlpha( aResult.pixel( i, j ) ));
90
91       QColor aLighterColor = aPixelColor.lighter(theLighterValue);
92       aResult.setPixel(i, j, qRgba( aLighterColor.red(), aLighterColor.green(),
93                                     aLighterColor.blue(), aLighterColor.alpha() ) );
94     }
95   }
96   return QPixmap::fromImage(aResult);
97 }
98
99 }
100
101