mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-23 18:50:52 +01:00
Correction du bug #21 : Une probable regression sur la methode QRectF::contains a partir de Qt 4.5 provoquait une mauvaise detection des points de jonction entre conducteurs sous Windows comme sous X11.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@591 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -1134,6 +1134,33 @@ QSet<Conductor *> Conductor::relatedConductors() const {
|
||||
return(other_conductors);
|
||||
}
|
||||
|
||||
/**
|
||||
@param a reel
|
||||
@param b reel
|
||||
@param c reel
|
||||
@return true si a est entre b et c ou est egal a l'un des deux
|
||||
*/
|
||||
bool isBetween(qreal a, qreal b, qreal c) {
|
||||
if (b <= c) {
|
||||
return(a >= b && a <= c);
|
||||
} else {
|
||||
return(a <= b && a >= c);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@param a point
|
||||
@param b point
|
||||
@param c point
|
||||
@return true si le point a est contenu dans le rectangle delimite par les points b et c
|
||||
*/
|
||||
bool isContained(const QPointF &a, const QPointF &b, const QPointF &c) {
|
||||
return(
|
||||
isBetween(a.x(), b.x(), c.x()) &&
|
||||
isBetween(a.y(), b.y(), c.y())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@return la liste des positions des jonctions avec d'autres conducteurs
|
||||
*/
|
||||
@@ -1177,7 +1204,7 @@ QList<QPointF> Conductor::junctions() const {
|
||||
ConductorSegment *segment = c_segments[j];
|
||||
QRectF rect(segment -> firstPoint(), segment -> secondPoint());
|
||||
// un point commun a ete trouve sur ce segment
|
||||
if (rect.contains(conductor_point)) {
|
||||
if (isContained(conductor_point, segment -> firstPoint(), segment -> secondPoint())) {
|
||||
is_junction = true;
|
||||
// ce point commun ne doit pas etre une bifurcation identique a celle-ci
|
||||
QList<ConductorBend> other_conductor_bends = c -> bends();
|
||||
|
||||
Reference in New Issue
Block a user