ShapesWidget Class Reference

#include <ShapesWidget.h>

Inheritance diagram for ShapesWidget:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 ShapesWidget (WContainerWidget *parent=0)
void setAngle (double angle)
double angle () const
void setRelativeSize (double size)
double relativeSize () const

Protected Member Functions

virtual void paintEvent (WPaintDevice *paintDevice)

Private Member Functions

void drawEmwebLogo (WPainter &p)
void drawEmwebE (WPainter &p)
void drawEmwebMW (WPainter &p)

Private Attributes

double angle_
double size_


Detailed Description

Definition at line 19 of file ShapesWidget.h.


Constructor & Destructor Documentation

ShapesWidget::ShapesWidget ( WContainerWidget parent = 0  ) 

Definition at line 24 of file ShapesWidget.C.

00025   : WPaintedWidget(parent),
00026     angle_(0),
00027     size_(1)
00028 {
00029   resize(710, 400);
00030 }


Member Function Documentation

void ShapesWidget::setAngle ( double  angle  ) 

Definition at line 32 of file ShapesWidget.C.

00033 {
00034   angle = std::max(-30.0, std::min(30.0, angle));
00035 
00036   if (angle_ != angle) {
00037     angle_ = angle;
00038     update();
00039   }
00040 }

double ShapesWidget::angle (  )  const [inline]

Definition at line 25 of file ShapesWidget.h.

00025 { return angle_; }

void ShapesWidget::setRelativeSize ( double  size  ) 

Definition at line 42 of file ShapesWidget.C.

00043 {
00044   size = std::max(0.1, std::min(1.0, size));
00045 
00046   if (size_ != size) {
00047     size_ = size;
00048     update();
00049   }
00050 }

double ShapesWidget::relativeSize (  )  const [inline]

Definition at line 28 of file ShapesWidget.h.

00028 { return size_; }

void ShapesWidget::paintEvent ( WPaintDevice paintDevice  )  [protected, virtual]

Implements Wt::WPaintedWidget.

Definition at line 52 of file ShapesWidget.C.

00053 {
00054   WPainter painter(paintDevice);
00055 
00056   painter.setRenderHint(WPainter::Antialiasing);
00057 
00058   painter.translate(width().value()/2, height().value()/2);
00059   painter.rotate(angle_);
00060   painter.scale(size_, size_);
00061   painter.translate(-width().value()/2 + 50, -height().value()/2 + 150);
00062 
00063   drawEmwebLogo(painter);
00064 }

void ShapesWidget::drawEmwebLogo ( WPainter p  )  [private]

Definition at line 144 of file ShapesWidget.C.

00145 {
00146   painter.save();
00147   painter.setPen(NoPen);
00148 
00149   /*
00150    * The emweb logo can be drawn as 3 e's, and one combined m/w
00151    */
00152 
00153   // Emweb
00154   painter.setBrush(black);
00155   drawEmwebE(painter);
00156 
00157   // emwEb
00158   painter.save();
00159   painter.translate(397, 0);
00160   drawEmwebE(painter);
00161 
00162   // emweB
00163   painter.translate(210, 0);
00164   painter.scale(-1, 1);
00165   drawEmwebE(painter);
00166 
00167   painter.restore();
00168 
00169   // eMWeb
00170   painter.setBrush(emweb);
00171   drawEmwebMW(painter);
00172 
00173   painter.restore();
00174 }

void ShapesWidget::drawEmwebE ( WPainter p  )  [private]

Definition at line 66 of file ShapesWidget.C.

00067 {
00068   WPainterPath p;
00069 
00070   /* Path copied from our SVG for half of the E */
00071 
00072   p.moveTo(46.835084,58.783624);
00073   p.cubicTo(45.700172,58.783624,35.350098,58.911502,24.656354,63.283309);
00074   p.cubicTo(8.7595992,69.78907,0,82.38499,0,98.809238);
00075   p.cubicTo(0,115.20152,08.7595992,127.82141,24.656354,134.31119);
00076   p.cubicTo(35.350098,138.69099,45.700172,138.81088,46.835084,138.81088);
00077   p.lineTo(94.509362,138.81088);
00078   p.lineTo(94.509362,117.58323);
00079   p.lineTo(46.835084,117.58323);
00080   p.cubicTo(46.811106,117.58323,39.466151,117.47134,32.608727,114.53815);
00081   p.cubicTo(25.095932,111.34122,21.747144,106.47389,21.747144,98.809238);
00082   p.cubicTo(21.747144,91.120612,25.095932,86.269265,32.608727,83.064338);
00083   p.cubicTo(39.466151,80.123159,46.811106,80.027251,46.89103,80.027251);
00084   p.lineTo(94.509362,80.027251);
00085   p.lineTo(94.509362,58.783624);
00086   p.lineTo(46.835084,58.783624);
00087 
00088   painter.drawPath(p);
00089 
00090   painter.save();
00091   painter.translate(0,-58.783624);
00092   painter.drawPath(p);
00093   painter.restore();
00094 }

void ShapesWidget::drawEmwebMW ( WPainter p  )  [private]

Definition at line 96 of file ShapesWidget.C.

00097 {
00098   WPainterPath p;
00099 
00100   /* Path copied from our SVG for one fourth of the MW */
00101 
00102   p.moveTo(120.59634,24.072913);
00103   p.cubicTo(116.12064,34.518895,115.98477,44.605222,115.98477,45.732141);
00104   p.lineTo(115.98477,138.81088);
00105   p.lineTo(137.7399,138.81088);
00106   p.lineTo(137.7399,45.732141);
00107   p.cubicTo(137.7399,45.708164,137.83581,38.53904,140.84892,31.841463);
00108   p.cubicTo(144.14176,24.512492,149.113,21.235634,156.98545,21.235634);
00109   p.cubicTo(164.8499,21.235634,169.81314,24.512492,173.10599,31.841463);
00110   p.cubicTo(176.10311,38.53904,176.215,45.708164,176.215,45.780095);
00111   p.lineTo(176.215,80.41343);
00112   p.lineTo(197.97014,80.41343);
00113   p.lineTo(197.97014,45.732141);
00114   p.cubicTo(197.97014,44.605222,197.83427,34.518895,193.35057,24.072913);
00115   p.cubicTo(186.70894,8.5517985,173.77734,0,156.99344,0);
00116   p.cubicTo(140.17756,0,127.25396,8.5517985,120.59634,24.072913);
00117 
00118   /*
00119    * Paint it four times, translated and inverted
00120    */
00121 
00122   painter.drawPath(p);
00123 
00124   const double dx = 176. - 115.98477;
00125 
00126   painter.save();
00127 
00128   painter.translate(dx, 0);
00129   painter.drawPath(p);
00130 
00131   painter.translate(dx, 0);
00132 
00133   painter.scale(-1, -1);
00134   painter.translate(0, -138.81088);
00135   painter.translate(-115.98477 - 197.95 - dx, 0);
00136   painter.drawPath(p);
00137 
00138   painter.translate(dx, 0);
00139   painter.drawPath(p);
00140 
00141   painter.restore();
00142 }


Member Data Documentation

double ShapesWidget::angle_ [private]

Definition at line 34 of file ShapesWidget.h.

double ShapesWidget::size_ [private]

Definition at line 35 of file ShapesWidget.h.


The documentation for this class was generated from the following files:

Generated on Mon Mar 9 08:28:57 2009 for Wt by doxygen 1.5.6