]> git.tdb.fi Git - libs/gltk.git/commitdiff
Add centering constraints to Layout
authorMikko Rasa <tdb@tdb.fi>
Sun, 11 Sep 2016 13:28:49 +0000 (16:28 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 11 Sep 2016 13:28:49 +0000 (16:28 +0300)
source/layout.cpp
source/layout.h

index 4048e1147ac9321ab2596d1441db26b102e55a82..ce9c8dcc9831afd3aaf0af1d345d5b40490d35ab 100644 (file)
@@ -439,14 +439,15 @@ void Layout::solve_constraints(int dir, SolveMode mode)
                        {
                                LinearProgram::Row row = linprog.add_row();
                                float polarity = ((j->type&SELF_DIM) ? -1 : 1);
+                               float dim_weight = ((j->type&HALF_DIM) ? 0.5f : 1);
                                if(j->type&SELF_POS)
                                        row[(*i)->index*5] = polarity;
                                if(j->type&SELF_DIM)
-                                       row[(*i)->index*5+1] = polarity;
+                                       row[(*i)->index*5+1] = polarity*dim_weight;
                                if(j->type&TARGET_POS)
                                        row[j->target.index*5] = -polarity;
                                if(j->type&TARGET_DIM)
-                                       row[j->target.index*5+1] = -polarity;
+                                       row[j->target.index*5+1] = -polarity*dim_weight;
                                if(j->type&SPACING)
                                        row.back() = (j->spacing>=0 ? j->spacing : this->*(ptrs.spacing));
                                if(j->type&SLACK)
index 141a15cdb317d7920fd394778312f28002228b24..a13a0934a5761a962ca4eddd553d48c76476872f 100644 (file)
@@ -63,8 +63,9 @@ private:
                TARGET_POS = 8,
                TARGET_DIM = 16,
                TARGET_MASK = 24,
-               SPACING = 32,
-               SLACK = 64
+               HALF_DIM = 32,
+               SPACING = 64,
+               SLACK = 128
        };
 
 public:
@@ -79,8 +80,10 @@ public:
                FAR_RIGHT_OF = HORIZONTAL|SELF_POS|TARGET_POS|TARGET_DIM|SPACING|SLACK,
                FAR_LEFT_OF = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|SPACING|SLACK,
                ALIGN_TOP = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM,
+               ALIGN_VCENTER = VERTICAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM|HALF_DIM,
                ALIGN_BOTTOM = VERTICAL|SELF_POS|TARGET_POS,
                ALIGN_RIGHT = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM,
+               ALIGN_HCENTER = HORIZONTAL|SELF_POS|SELF_DIM|TARGET_POS|TARGET_DIM|HALF_DIM,
                ALIGN_LEFT = HORIZONTAL|SELF_POS|TARGET_POS,
                COPY_WIDTH = HORIZONTAL|SELF_DIM|TARGET_DIM,
                COPY_HEIGHT = VERTICAL|SELF_DIM|TARGET_DIM