#include <PaintExample.h>
Inherits Wt::WContainerWidget.
Public Member Functions | |
PaintExample (WContainerWidget *root, bool showTitle=true) | |
Private Member Functions | |
void | rotateShape (int v) |
void | scaleShape (int v) |
Private Attributes | |
ShapesWidget * | shapes_ |
Definition at line 17 of file PaintExample.h.
PaintExample::PaintExample | ( | WContainerWidget * | root, | |
bool | showTitle = true | |||
) |
Definition at line 17 of file PaintExample.C.
00018 : WContainerWidget(root) 00019 { 00020 std::string text; 00021 if (showTitle) 00022 text += "<h2>Paint example</h2>"; 00023 00024 text += 00025 "<p>A simple example demonstrating cross-browser vector graphics." 00026 "</p>" 00027 "<p>The emweb logo below is painted using the Wt WPainter API from " 00028 "bezier paths, and rendered to the browser using inline SVG, inline VML " 00029 "or the HTML 5 <canvas> element." 00030 "</p>" 00031 "<p>" 00032 "The example also demonstrates the horizontal and vertical " 00033 "<a href=\"http://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WSlider.html\" target=\"_blank\">" 00034 "WSlider</a> widgets (which are rendered using vector graphics). Here, " 00035 "the events of the WSlider widgets are used to scale and rotate the " 00036 "emweb logo." 00037 "</p>" 00038 "<p>" 00039 "In non-IE browsers, a different backend is used for positive or negative " 00040 "angles (SVG or HTML canvas)." 00041 "</p>"; 00042 00043 new WText(text, this); 00044 00045 WContainerWidget *emweb = new WContainerWidget(this); 00046 emweb->setMargin(WLength::Auto, Left | Right); 00047 00048 WGridLayout *layout = new WGridLayout(); 00049 emweb->setLayout(layout, AlignCenter | AlignTop); 00050 00051 WSlider *scaleSlider = new WSlider(Horizontal); 00052 scaleSlider->setMinimum(0); 00053 scaleSlider->setMaximum(20); 00054 scaleSlider->setValue(10); 00055 scaleSlider->setTickInterval(5); 00056 scaleSlider->setTickPosition(WSlider::TicksBothSides); 00057 scaleSlider->resize(300, 50); 00058 scaleSlider->sliderMoved().connect(SLOT(this, PaintExample::scaleShape)); 00059 00060 layout->addWidget(scaleSlider, 0, 1, AlignCenter | AlignMiddle); 00061 00062 WSlider *rotateSlider = new WSlider(Vertical); 00063 rotateSlider->setMinimum(-30); 00064 rotateSlider->setMaximum(30); 00065 rotateSlider->setValue(0); 00066 rotateSlider->setTickInterval(10); 00067 rotateSlider->setTickPosition(WSlider::TicksBothSides); 00068 rotateSlider->resize(50, 400); 00069 rotateSlider->sliderMoved().connect(SLOT(this, PaintExample::rotateShape)); 00070 00071 layout->addWidget(rotateSlider, 1, 0, AlignCenter | AlignMiddle); 00072 00073 shapes_ = new ShapesWidget(); 00074 shapes_->setAngle(0.0); 00075 shapes_->setRelativeSize(0.5); 00076 shapes_->setPreferredMethod(WPaintedWidget::InlineSvgVml); 00077 00078 layout->addWidget(shapes_, 1, 1, AlignCenter | AlignMiddle); 00079 }
void PaintExample::rotateShape | ( | int | v | ) | [private] |
Definition at line 81 of file PaintExample.C.
00082 { 00083 shapes_->setAngle(v / 2.0); 00084 00085 // Being silly: test alternate rendering method 00086 shapes_->setPreferredMethod(v < 0 ? WPaintedWidget::InlineSvgVml 00087 : WPaintedWidget::HtmlCanvas); 00088 }
void PaintExample::scaleShape | ( | int | v | ) | [private] |
Definition at line 90 of file PaintExample.C.
00091 { 00092 shapes_->setRelativeSize(0.1 + 0.9 * (v/20.0)); 00093 }
ShapesWidget* PaintExample::shapes_ [private] |
Definition at line 23 of file PaintExample.h.