00001
00002
00003
00004
00005
00006
00007
00008 #include "ShapesWidget.h"
00009
00010 #include <Wt/WPainter>
00011 #include <Wt/WPainterPath>
00012 #include <Wt/WPointF>
00013 #include <Wt/WRectF>
00014
00015 #include <math.h>
00016 #include <iostream>
00017 #include <boost/lexical_cast.hpp>
00018
00019 namespace {
00020
00021 WColor emweb(0x04, 0x7c, 0x93);
00022 }
00023
00024 ShapesWidget::ShapesWidget(WContainerWidget *parent)
00025 : WPaintedWidget(parent),
00026 angle_(0),
00027 size_(1)
00028 {
00029 resize(710, 400);
00030 }
00031
00032 void ShapesWidget::setAngle(double angle)
00033 {
00034 angle = std::max(-30.0, std::min(30.0, angle));
00035
00036 if (angle_ != angle) {
00037 angle_ = angle;
00038 update();
00039 }
00040 }
00041
00042 void ShapesWidget::setRelativeSize(double size)
00043 {
00044 size = std::max(0.1, std::min(1.0, size));
00045
00046 if (size_ != size) {
00047 size_ = size;
00048 update();
00049 }
00050 }
00051
00052 void ShapesWidget::paintEvent(WPaintDevice *paintDevice)
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 }
00065
00066 void ShapesWidget::drawEmwebE(WPainter& painter)
00067 {
00068 WPainterPath p;
00069
00070
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 }
00095
00096 void ShapesWidget::drawEmwebMW(WPainter& painter)
00097 {
00098 WPainterPath p;
00099
00100
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
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 }
00143
00144 void ShapesWidget::drawEmwebLogo(WPainter& painter)
00145 {
00146 painter.save();
00147 painter.setPen(NoPen);
00148
00149
00150
00151
00152
00153
00154 painter.setBrush(black);
00155 drawEmwebE(painter);
00156
00157
00158 painter.save();
00159 painter.translate(397, 0);
00160 drawEmwebE(painter);
00161
00162
00163 painter.translate(210, 0);
00164 painter.scale(-1, 1);
00165 drawEmwebE(painter);
00166
00167 painter.restore();
00168
00169
00170 painter.setBrush(emweb);
00171 drawEmwebMW(painter);
00172
00173 painter.restore();
00174 }