diff options
| author | MenTaLguY <mental@rydia.net> | 2006-01-16 02:36:01 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-01-16 02:36:01 +0000 |
| commit | 179fa413b047bede6e32109e2ce82437c5fb8d34 (patch) | |
| tree | a5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/removeoverlap/block.h | |
| download | inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip | |
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/removeoverlap/block.h')
| -rw-r--r-- | src/removeoverlap/block.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/removeoverlap/block.h b/src/removeoverlap/block.h new file mode 100644 index 000000000..7905309bb --- /dev/null +++ b/src/removeoverlap/block.h @@ -0,0 +1,59 @@ +/** + * \brief Remove overlaps function + * + * Authors: + * Tim Dwyer <tgdwyer@gmail.com> + * + * Copyright (C) 2005 Authors + * + * Released under GNU GPL. Read the file 'COPYING' for more information. + */ + +#ifndef SEEN_REMOVEOVERLAP_BLOCK_H +#define SEEN_REMOVEOVERLAP_BLOCK_H + +#include <vector> +#include <iostream> +class Variable; +class Constraint; +template <class T> class PairingHeap; +class StupidPriorityQueue; + +class Block +{ + friend std::ostream& operator <<(std::ostream &os,const Block &b); +public: + std::vector<Variable*> *vars; + double posn; + double weight; + double wposn; + Block(Variable *v=NULL); + ~Block(void); + Constraint *findMinLM(); + Constraint *findMinInConstraint(); + Constraint *findMinOutConstraint(); + void deleteMinInConstraint(); + void deleteMinOutConstraint(); + double desiredWeightedPosition(); + void merge(Block *b, Constraint *c, double dist); + void mergeIn(Block *b); + void mergeOut(Block *b); + void split(Block *&l, Block *&r, Constraint *c); + void setUpInConstraints(); + void setUpOutConstraints(); + double cost(); + bool deleted; + long timeStamp; + PairingHeap<Constraint*> *in; + PairingHeap<Constraint*> *out; +private: + void reset_active_lm(Variable *v, Variable *u); + double compute_dfdv(Variable *v, Variable *u, Constraint *&min_lm); + bool canFollowLeft(Constraint *c, Variable *last); + bool canFollowRight(Constraint *c, Variable *last); + void populateSplitBlock(Block *b, Variable *v, Variable *u); + void addVariable(Variable *v); + void setUpConstraintHeap(PairingHeap<Constraint*>* &h,bool in); +}; + +#endif // SEEN_REMOVEOVERLAP_BLOCK_H |
