From: Mikko Rasa Date: Sun, 11 Sep 2016 13:28:49 +0000 (+0300) Subject: Add centering constraints to Layout X-Git-Url: http://git.tdb.fi/?p=libs%2Fgltk.git;a=commitdiff_plain;h=05ef650bff69b998440a6c082dd90e205fe6c233 Add centering constraints to Layout --- diff --git a/source/layout.cpp b/source/layout.cpp index 4048e11..ce9c8dc 100644 --- a/source/layout.cpp +++ b/source/layout.cpp @@ -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) diff --git a/source/layout.h b/source/layout.h index 141a15c..a13a093 100644 --- a/source/layout.h +++ b/source/layout.h @@ -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