[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    [Panel-devel] KDE/kdebase/workspace/plasma
From:       Riccardo Iaconelli <ruphy () fsfe ! org>
Date:       2007-05-20 21:01:36
Message-ID: 1179694896.185842.4193.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 666767 by ruphy:

The clock now shows (and moves) SVG hands. I had to do an hack on Plasma::Svg to make \
it work, it was doing strange things with the plasmoid painter, and especially its \
coordinate system, check the differences in lib/svg.cpp to see what changed. Still \
have a couple of problems with hands other than second, and for the black thingy in \
the middle. Too tired right now, will check (and hopefully fix) them again tomorrow.
Let's party though! The first (mostly) working plasmoid goes public! Yay!

CCMAIL:panel-devel@kde.org


 M  +1 -0      applets/CMakeLists.txt  
 M  +14 -13    images/clock.svg  
 M  +3 -1      lib/svg.cpp  
 M  +43 -32    plasma/clock.cpp  
 M  +1 -0      plasma/clock.h  


--- trunk/KDE/kdebase/workspace/plasma/applets/CMakeLists.txt #666766:666767
@@ -1 +1,2 @@
 # add_subdirectory( test )
+# add_subdirectory( clock )
--- trunk/KDE/kdebase/workspace/plasma/images/clock.svg #666766:666767
@@ -15,7 +15,7 @@
    width="250"
    height="250"
    version="1.0"
-   sodipodi:docbase="/home/pinheiro/Desktop"
+   sodipodi:docbase="/home/kde4/kde4/kdebase/workspace/plasma/images"
    sodipodi:docname="clock.svg"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
    inkscape:export-filename="/home/pinheiro/Desktop/clock.png"
@@ -232,8 +232,8 @@
        r="74.609375" />
   </defs>
   <sodipodi:namedview
-     inkscape:window-height="584"
-     inkscape:window-width="796"
+     inkscape:window-height="957"
+     inkscape:window-width="1280"
      inkscape:pageshadow="2"
      inkscape:pageopacity="0.0"
      guidetolerance="10.0"
@@ -248,11 +248,11 @@
      showgrid="false"
      width="250px"
      height="250px"
-     inkscape:zoom="0.72028434"
-     inkscape:cx="-3.3264214"
-     inkscape:cy="218.71345"
-     inkscape:window-x="271"
-     inkscape:window-y="303"
+     inkscape:zoom="4"
+     inkscape:cx="80.45"
+     inkscape:cy="85.596251"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
      inkscape:current-layer="svg2" />
   <g
      id="ClockFace"
@@ -1090,19 +1090,20 @@
   </g>
   <path
      style="opacity:1;fill:#606060;fill-opacity:1;stroke:none;stroke-width:8;stroke-l \
inecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"
                
-     d="M 122.99143,42.582362 L 122.99143,122.52565 C 122.41518,122.88047 \
122.03871,123.48944 122.03857,124.20437 C 122.03857,124.91926 122.41504,125.57364 \
122.99143,125.92846 L 122.99143,129.14978 L 125.12378,129.14978 L 125.12378,125.92846 \
C 125.71527,125.57681 126.12208,124.93041 126.12208,124.20437 C 126.12208,123.47831 \
125.71527,122.87731 125.12378,122.52565 L 125.12378,42.582362 L 122.99143,42.582362 z \
" +     d="M 123.68922,207.89978 L 123.68922,127.95649 C 123.11297,127.60167 \
122.7365,126.9927 122.73636,126.27777 C 122.73636,125.56288 123.11283,124.9085 \
123.68922,124.55368 L 123.68922,121.33236 L 125.82157,121.33236 L 125.82157,124.55368 \
C 126.41306,124.90533 126.81987,125.55173 126.81987,126.27777 C 126.81987,127.00383 \
126.41306,127.60483 125.82157,127.95649 L 125.82157,207.89978 L 123.68922,207.89978 z \
"  id="HourHand"
      inkscape:label="#rect3745" />
   <path
      id="MinuteHand"
-     d="M 216.56052,123.87281 L 125.8679,123.87282 C 125.55991,123.37262 \
125.03131,123.04583 124.41073,123.04571 C 123.79018,123.04571 123.22218,123.37249 \
122.91417,123.87282 L 120.118,123.87281 L 120.11799,125.72374 L 122.91418,125.72374 C \
123.21942,126.23718 123.78052,126.59029 124.41072,126.5903 C 125.04097,126.5903 \
125.56265,126.23718 125.86791,125.72374 L 216.56051,125.72374 L 216.56052,123.87281 z \
" +     d="M 123.85954,218.88897 L 123.72604,128.19644 C 123.22539,127.88919 \
122.89782,127.36107 122.89679,126.7405 C 122.89587,126.11995 123.22181,125.55146 \
123.72169,125.24271 L 123.71757,122.44655 L 125.5685,122.44381 L 125.57261,125.24 C \
126.0865,125.54449 126.44043,126.10507 126.44138,126.73526 C 126.4423,127.36551 \
126.08995,127.88772 125.57696,128.19373 L 125.71047,218.88623 L 123.85954,218.88897 z \
"  style="opacity:1;fill:#606060;fill-opacity:1;stroke:none;stroke-width:8;stroke-line \
cap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"
  sodipodi:nodetypes="ccsccccsccc"
-     inkscape:transform-center-x="-47.163748"
-     inkscape:label="#path3750" />
+     inkscape:transform-center-x="-0.0047679295"
+     inkscape:label="#path3750"
+     inkscape:transform-center-y="47.163723" />
   <path
      style="fill:#cc5457;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
                
-     d="M 131.65827,114.43329 L 133.0557,115.83073 L 64.764947,182.89344 L \
131.65827,114.43329 z " +     d="M 125.71146,119.57604 L 123.7352,119.58282 L \
124.93134,215.28863 L 125.71146,119.57604 z "  id="SecondHand"
      sodipodi:nodetypes="cccc"
      inkscape:label="#path3752" />
--- trunk/KDE/kdebase/workspace/plasma/lib/svg.cpp #666766:666767
@@ -146,8 +146,10 @@
 
 void Svg::paint( QPainter* painter, const QRectF& rect, const QString& elementID )
 {
+//     QPixmap pix(rect.width(), rect.height());
     QPixmap pix;
-    d->findInCache( painter, pix, elementID );
+    QPainter *pain = new QPainter();
+    d->findInCache( pain, pix, elementID );
 
 /*    QMatrix matrix = painter->worldMatrix();
     painter->setWorldMatrix( QMatrix() );*/
--- trunk/KDE/kdebase/workspace/plasma/plasma/clock.cpp #666766:666767
@@ -28,6 +28,8 @@
 #include <QGraphicsScene>
 #include <QStyleOptionGraphicsItem>
 
+#include <QSvgRenderer>
+
 #include <KDebug>
 #include <KLocale>
 
@@ -41,7 +43,6 @@
       QGraphicsItem(parent)
 {
     setFlags(QGraphicsItem::ItemIsMovable); // | QGraphicsItem::ItemIsSelectable | \
                QGraphicsItem::ItemIsFocusable);
-
     Plasma::DataEngine* timeEngine = \
Plasma::Interface::self()->loadDataEngine("time");  if (timeEngine) {
         timeEngine->connectSource("time", this);
@@ -71,54 +72,64 @@
 void Clock::paint(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget \
*widget)  {
     Q_UNUSED(widget)
+    p->setRenderHint(QPainter::SmoothPixmapTransform);
 
     qreal seconds = 6.0 * m_time.second();
     qreal minutes = 6.0 * m_time.minute();
     qreal hours = 30.0 * m_time.hour();
 
+    QRectF rrr(0, 0, 0, 0);
     QRectF boundRect = boundingRect();
-
-    QRectF r = option->exposedRect;
-    p->setRenderHint(QPainter::SmoothPixmapTransform);
-
     QSizeF clockSize = m_theme->elementSize("ClockFace");
     m_theme->paint(p, boundRect, "ClockFace");
-/*
+    QSize elementSize;
+
     p->save();
-    p->translate(clockSize.width() / 2, clockSize.height() / 2);
-    p->rotate(hours);
-    QSizeF elementSize = m_theme->elementSize("HourHand");
-    QRectF rect = QRectF(-(elementSize.width() / 2), -(elementSize.height() - 32),
-                         elementSize.width(), elementSize.height());
-    m_theme->paint(p, rect, "HourHand");
+      p->translate(clockSize.height()/2, clockSize.width()/2);
+      p->rotate(seconds-90);
+      elementSize = m_theme->elementSize("SecondHand");
+      m_theme->resize(elementSize);
+      rrr.setSize(elementSize);
+      m_theme->paint(p, rrr, "SecondHand");
+//     p->drawRect(rrr);
     p->restore();
 
+    elementSize = QSize(0, 0);
+
     p->save();
-    p->translate(clockSize.width() / 2, clockSize.height() / 2);
-    p->rotate(minutes);
-    elementSize = m_theme->elementSize("MinuteHand");
-    rect = QRectF(-(elementSize.width() / 2),-(elementSize.height() - 16),
-                  elementSize.width(), elementSize.height());
-    m_theme->paint(p, rect, "MinuteHand");
+      p->translate(clockSize.height()/2, clockSize.width()/2);
+      p->rotate(hours-90);
+#warning FIXME: Need to uncomment these 3 linse, but (dunno why) if I calculate the \
size, I get 0 witdth. +//     elementSize = m_theme->elementSize("HourHand");
+//     m_theme->resize(elementSize);
+//     rrr.setSize(elementSize);
+      m_theme->paint(p, rrr, "HourHand");
     p->restore();
 
+    elementSize = QSize(0, 0);
+
     p->save();
-    p->translate(clockSize.width() / 2, clockSize.width() / 2);
-    p->rotate(seconds);
-    elementSize = m_theme->elementSize("SecondHand");
-    rect = QRectF(-(elementSize.width() / 2),-(elementSize.height() - 16),
-                  elementSize.width(), elementSize.height());
-    m_theme->paint(p, rect, "SecondHand");
+      p->translate(clockSize.height()/2, clockSize.width()/2);
+      p->rotate(minutes-90);
+//       elementSize = m_theme->elementSize("MinuteHand");
+//       m_theme->resize(elementSize);
+//       rrr.setSize(elementSize);
+      m_theme->paint(p, rrr, "MinuteHand");
+//     p->drawRect(rrr);
     p->restore();
 
-    p->save();
-    p->translate(clockSize.width() / 2, clockSize.width() / 2);
-    m_theme->paint(p, 0, 0, "HandCenterScrew");
-    p->restore();*/
-
-    m_theme->paint(p, boundRect, "Glass");
-    p->drawText(100, 100, m_time.toString());
-//     p->drawRect(boundRect);
+//FIXME: re-enable this.
+//     elementSize = QSize(0, 0);
+// 
+//     p->save();
+//     p->translate(clockSize.width() / 2, clockSize.width() / 2);
+//     elementSize = m_theme->elementSize("HandCenterScrew");
+//     m_theme->resize(elementSize);
+//     rrr.setSize(elementSize);
+//     m_theme->paint(p, 0, 0, "HandCenterScrew");
+//     p->restore();
+    p->drawText(boundingRect().width()/2, (boundingRect().height()/2)+32, \
m_time.toString()); +    m_theme->resize(boundingRect().size());
 }
 /*
 QVariant Clock::itemChange(GraphicsItemChange change, const QVariant &value)
--- trunk/KDE/kdebase/workspace/plasma/plasma/clock.h #666766:666767
@@ -40,6 +40,7 @@
 #include "dataengine.h"
 
 class QTimer;
+
 namespace Plasma
 {
     class Svg;
_______________________________________________
Panel-devel mailing list
Panel-devel@kde.org
https://mail.kde.org/mailman/listinfo/panel-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic