bool sane_b () const;
};
-/**
- A simple spacing constraint solver. The approach:
-
- Stretch the line uniformly until none of the constraints (rods)
- block. It then is very wide.
-
-
- Compress until the next constraint blocks,
-
- Mark the springs over the constrained part to be non-active.
-
- Repeat with the smaller set of non-active constraints, until all
- constraints blocked, or until the line is as short as desired.
-
- This is much simpler, and much much faster than full scale
- Constrained QP. On the other hand, a situation like this will not
- be typeset as dense as possible, because
-
- c4 c4 c4 c4
- veryveryverylongsyllable2 veryveryverylongsyllable2
- " "4 veryveryverylongsyllable2 syllable4
-
-
- can be further compressed to
-
-
- c4 c4 c4 c4
- veryveryverylongsyllable2 veryveryverylongsyllable2
- " "4 veryveryverylongsyllable2 syllable4
-
-
- Perhaps this is not a bad thing, because the 1st looks better anyway. */
struct Simple_spacer
{
Array<Spring_description> springs_;
Real line_len_f_;
Real default_space_f_;
int active_count_;
-
+ bool compression_penalty_b_;
+
Simple_spacer ();
void solve (Column_x_positions *) const;