Feature #4358 » 0003-Upgrade-precision-of-AbstractArea-subclasses.patch
src/Wt/Chart/WCartesianChart.C | ||
---|---|---|
p = t.map(hv(p));
|
||
WCircleArea *circleArea
|
||
= new WCircleArea(static_cast<int>(p.x()),
|
||
static_cast<int>(p.y()), 5);
|
||
WCircleArea *circleArea = new WCircleArea();
|
||
circleArea->setCenter(WPointF(p.x(), p.y()));
|
||
circleArea->setRadius(5);
|
||
circleArea->setToolTip(asString(toolTip));
|
||
const_cast<WCartesianChart&>(chart_)
|
src/Wt/WCircleArea | ||
---|---|---|
int radius() const { return r_; }
|
||
private:
|
||
int x_, y_, r_;
|
||
double x_, y_, r_;
|
||
protected:
|
||
virtual bool updateDom(DomElement& element, bool all);
|
src/Wt/WCircleArea.C | ||
---|---|---|
#include "Wt/WPointF"
|
||
#include "DomElement.h"
|
||
#include "WebUtils.h"
|
||
namespace Wt {
|
||
... | ... | |
void WCircleArea::setCenter(const WPointF& point)
|
||
{
|
||
setCenter(static_cast<int>(point.x()),
|
||
static_cast<int>(point.y()));
|
||
x_ = point.x();
|
||
y_ = point.y();
|
||
repaint();
|
||
}
|
||
void WCircleArea::setCenter(int x, int y)
|
||
... | ... | |
element.setAttribute("shape", "circle");
|
||
std::stringstream coords;
|
||
coords << x_ << ',' << y_ << ',' << r_;
|
||
coords << static_cast<int>(x_) << ','
|
||
<< static_cast<int>(y_) << ','
|
||
<< static_cast<int>(r_);
|
||
element.setAttribute("coords", coords.str());
|
||
return WAbstractArea::updateDom(element, all);
|
||
... | ... | |
std::string WCircleArea::updateAreaCoordsJS()
|
||
{
|
||
std::stringstream coords;
|
||
char buf[30];
|
||
coords << "[" << jsRef() << ",["
|
||
<< x_ << ',' << y_ << ',' << r_ << "]]";
|
||
coords << "[" << jsRef() << ",[";
|
||
coords << Utils::round_js_str(x_, 2, buf) << ',';
|
||
coords << Utils::round_js_str(y_, 2, buf) << ',';
|
||
coords << Utils::round_js_str(r_, 2, buf) << "]]";
|
||
return coords.str();
|
||
}
|
src/Wt/WPolygonArea | ||
---|---|---|
/*! \brief Returns the polygon vertices.
|
||
*
|
||
* \sa setPoints()
|
||
* \sa setPoints(), points()
|
||
*/
|
||
const std::vector<WPoint>& points() const { return points_; }
|
||
const std::vector<WPointF>& pointFs() const { return points_; }
|
||
/*! \brief Returns the polygon vertices.
|
||
*
|
||
* \sa setPoints(), pointFs()
|
||
*/
|
||
const std::vector<WPoint>& points() const;
|
||
private:
|
||
std::vector<WPoint> points_;
|
||
std::vector<WPointF> points_;
|
||
mutable std::vector<WPoint> pointsIntCompatibility_;
|
||
protected:
|
||
virtual bool updateDom(DomElement& element, bool all);
|
src/Wt/WPolygonArea.C | ||
---|---|---|
#include "Wt/WPointF"
|
||
#include "DomElement.h"
|
||
#include "WebUtils.h"
|
||
namespace Wt {
|
||
... | ... | |
{ }
|
||
WPolygonArea::WPolygonArea(const std::vector<WPoint>& points)
|
||
: points_(points)
|
||
{ }
|
||
#ifndef WT_TARGET_JAVA
|
||
WPolygonArea::WPolygonArea(const std::vector<WPointF>& points)
|
||
{
|
||
setPoints(points);
|
||
}
|
||
#ifndef WT_TARGET_JAVA
|
||
WPolygonArea::WPolygonArea(const std::vector<WPointF>& points)
|
||
: points_(points)
|
||
{ }
|
||
#endif // WT_TARGET_JAVA
|
||
void WPolygonArea::addPoint(int x, int y)
|
||
{
|
||
points_.push_back(WPoint(x, y));
|
||
points_.push_back(WPointF(x, y));
|
||
|
||
repaint();
|
||
}
|
||
void WPolygonArea::addPoint(double x, double y)
|
||
{
|
||
points_.push_back(WPoint(static_cast<int>(x), static_cast<int>(y)));
|
||
points_.push_back(WPointF(x, y));
|
||
|
||
repaint();
|
||
}
|
||
void WPolygonArea::addPoint(const WPoint& point)
|
||
{
|
||
points_.push_back(point);
|
||
points_.push_back(WPointF(point.x(), point.y()));
|
||
|
||
repaint();
|
||
}
|
||
void WPolygonArea::addPoint(const WPointF& point)
|
||
{
|
||
points_.push_back(WPoint(static_cast<int>(point.x()),
|
||
static_cast<int>(point.y())));
|
||
points_.push_back(point);
|
||
|
||
repaint();
|
||
}
|
||
void WPolygonArea::setPoints(const std::vector<WPoint>& points)
|
||
{
|
||
points_ = points;
|
||
points_.clear();
|
||
for (unsigned i = 0; i < points.size(); ++i)
|
||
addPoint(points[i]);
|
||
|
||
repaint();
|
||
}
|
||
... | ... | |
#ifndef WT_TARGET_JAVA
|
||
void WPolygonArea::setPoints(const std::vector<WPointF>& points)
|
||
{
|
||
points_.clear();
|
||
for (unsigned i = 0; i < points.size(); ++i)
|
||
addPoint(points[i]);
|
||
points_ = points;
|
||
}
|
||
#endif // WT_TARGET_JAVA
|
||
... | ... | |
for (unsigned i = 0; i < points_.size(); ++i) {
|
||
if (i != 0)
|
||
coords << ',';
|
||
coords << points_[i].x() << ',' << points_[i].y();
|
||
coords << static_cast<int>(points_[i].x()) << ','
|
||
<< static_cast<int>(points_[i].y());
|
||
}
|
||
element.setAttribute("coords", coords.str());
|
||
... | ... | |
std::string WPolygonArea::updateAreaCoordsJS()
|
||
{
|
||
std::stringstream coords;
|
||
char buf[30];
|
||
coords << "[" << jsRef() << ",[";
|
||
for (unsigned i = 0; i < points_.size(); ++i) {
|
||
if (i != 0)
|
||
coords << ',';
|
||
coords << points_[i].x() << ',' << points_[i].y();
|
||
coords << Utils::round_js_str(points_[i].x(), 2, buf) << ',';
|
||
coords << Utils::round_js_str(points_[i].y(), 2, buf);
|
||
}
|
||
coords << "]]";
|
||
return coords.str();
|
||
}
|
||
/*
|
||
* NOTE: points() does not receive updates, unlike pointsF()
|
||
*/
|
||
const std::vector<WPoint>& WPolygonArea::points() const
|
||
{
|
||
pointsIntCompatibility_.clear();
|
||
for (unsigned i = 0; i < points_.size(); ++i)
|
||
pointsIntCompatibility_.push_back(WPoint(points_[i].x(), points_[i].y()));
|
||
return pointsIntCompatibility_;
|
||
}
|
||
}
|
src/Wt/WRectArea | ||
---|---|---|
int height() const { return height_; }
|
||
private:
|
||
int x_, y_, width_, height_;
|
||
double x_, y_, width_, height_;
|
||
protected:
|
||
virtual bool updateDom(DomElement& element, bool all);
|
src/Wt/WRectArea.C | ||
---|---|---|
#include "Wt/WRectArea"
|
||
#include "DomElement.h"
|
||
#include "WebUtils.h"
|
||
namespace Wt {
|
||
... | ... | |
{ }
|
||
WRectArea::WRectArea(double x, double y, double width, double height)
|
||
: x_(static_cast<int>(x)),
|
||
y_(static_cast<int>(y)),
|
||
width_(static_cast<int>(width)),
|
||
height_(static_cast<int>(height))
|
||
: x_(x),
|
||
y_(y),
|
||
width_(width),
|
||
height_(height)
|
||
{ }
|
||
WRectArea::WRectArea(const WRectF& rect)
|
||
: x_(static_cast<int>(rect.x())),
|
||
y_(static_cast<int>(rect.y())),
|
||
width_(static_cast<int>(rect.width())),
|
||
height_(static_cast<int>(rect.height()))
|
||
: x_(rect.x()),
|
||
y_(rect.y()),
|
||
width_(rect.width()),
|
||
height_(rect.height())
|
||
{ }
|
||
void WRectArea::setX(int x)
|
||
... | ... | |
std::stringstream coords;
|
||
if (x_ == 0 && y_ == 0 && width_ == 0 && height_ == 0)
|
||
int x = x_;
|
||
int y = y_;
|
||
int width = width_;
|
||
int height = height_;
|
||
if (x == 0 && y == 0 && width == 0 && height == 0)
|
||
coords << "0%,0%,100%,100%";
|
||
else
|
||
coords << x_ << ',' << y_ << ',' << (x_ + width_) << ',' << (y_ + height_);
|
||
coords << x << ',' << y << ',' << (x + width) << ',' << (y + height);
|
||
element.setAttribute("coords", coords.str());
|
||
return WAbstractArea::updateDom(element, all);
|
||
... | ... | |
std::string WRectArea::updateAreaCoordsJS()
|
||
{
|
||
std::stringstream coords;
|
||
char buf[30];
|
||
coords << "[" << jsRef() << ",["
|
||
<< x_ << ',' << y_ << ',' << (x_ + width_) << ',' << (y_ + height_) << "]]";
|
||
coords << "[" << jsRef() << ",[";
|
||
coords << Utils::round_js_str(x_, 2, buf) << ',';
|
||
coords << Utils::round_js_str(y_, 2, buf) << ',';
|
||
coords << Utils::round_js_str((x_ + width_), 2, buf) << ',';
|
||
coords << Utils::round_js_str((y_ + height_), 2, buf) << "]]";
|
||
return coords.str();
|
||
}
|