From 0623102c16ecbf5ade1a7ef195659826a6f92548 Mon Sep 17 00:00:00 2001 From: Tim Dwyer Date: Wed, 10 May 2006 07:13:45 +0000 Subject: Apparently a problem was reported with one of the test cases. I can't reproduce the problem, however solve_VPSC code in inkscape was getting quite out of date with that in www.sf.net/projects/adaptagrams. I've updated the code, which may fix the problem, or at least if it's reported again then I'll know it's still an issue. (bzr r803) --- src/removeoverlap/constraint.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src/removeoverlap/constraint.cpp') diff --git a/src/removeoverlap/constraint.cpp b/src/removeoverlap/constraint.cpp index bb889c4d9..7c200878b 100644 --- a/src/removeoverlap/constraint.cpp +++ b/src/removeoverlap/constraint.cpp @@ -1,29 +1,47 @@ /** - * \brief Remove overlaps function + * \brief A constraint determines a minimum or exact spacing required between + * two variables. * * Authors: * Tim Dwyer * * Copyright (C) 2005 Authors * - * Released under GNU GPL. Read the file 'COPYING' for more information. + * Released under GNU LGPL. Read the file 'COPYING' for more information. */ #include "constraint.h" #include -Constraint::Constraint(Variable *left, Variable *right, double gap) +Constraint::Constraint(Variable *left, Variable *right, double gap, bool equality) : left(left), right(right), gap(gap), timeStamp(0), active(false), - visited(false) + visited(false), + equality(equality) { left->out.push_back(this); right->in.push_back(this); } +Constraint::~Constraint() { + Constraints::iterator i; + for(i=left->out.begin(); i!=left->out.end(); i++) { + if(*i==this) break; + } + left->out.erase(i); + for(i=right->in.begin(); i!=right->in.end(); i++) { + if(*i==this) break; + } + right->in.erase(i); +} std::ostream& operator <<(std::ostream &os, const Constraint &c) { - os<<*c.left<<"+"<block->timeStamp<<",cts="<