History log of /haiku/src/libs/alm/Area.cpp
Revision Date Author Comments
# 26fbc34f 24-Oct-2012 czeidler <haiku@clemens-zeidler.de>

Max size constraints can be NULL.


# 04b1c44b 17-Oct-2012 czeidler <haiku@clemens-zeidler.de>

Use a tab BReference as argument in Area::Set{Left, Top, Right, Bottom}.
Using a normal pointer is dangerous when creating a new tab directly in the method call because the tab gets deleted to early.


# 25e1abc3 31-Aug-2012 czeidler <haiku@clemens-zeidler.de>

Use soft inequality constraints for the max area size.

Only if the alignment is set to use the full width/ height a hard inequality constraint is used.


# df2ad520 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Archive more details about areas in BALMLayout.


# 6169a6e3 23-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Minimize the effect invisible items have on a BALMLayout.

There seems to still be some effect on positioning, but invisible items
no longer constrain the layout.


# f6db102e 19-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout respect its position when nested.


# 20cc993a 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove BALM::Area::fConstraints field, which is not needed.

It's easier to just delete all the constraints in the dtor, the ones that
wouldn't have been in fConstraints are NULL at this point anyway.


# 895414da 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALM::Area rename fTopLeftInset to fLeftTopInset.

This is consistent with for instance, the BSize ctor.


# f0307e76 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Fix spacing before first header in src/libs/alm.

Also add copyright header in ALMGroup.cpp.


# 0da6f2e9 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Rename BALM::GroupItem to BALM::ALMGroup, and move it to its own files.

Also make ALMGroup totally self-contained, i.e. BALMLayout no longer
does the parsing, and is completely unaware of ALMGroup. A small touch
of refactoring as well.


# a25ffa4f 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Style cleanup in alm: mostly clean includes.


# 7dd17203 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make Area insets more consistent with other HAIKU inset APIs.


# 8b527479 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In Area, remove unused ItemFrame() method.

Also modify Frame() method to return a rect with rounded coordinates.


# 75e2dcf8 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, allow for more flexibility in spacing and insets.

* allow for independent left, top, right and bottom insets
* allow for independent vertical and horizontal spacing between tabs
* allow for the usage of Haiku's spacing constants such as B_USE_WINDOW_INSETS


# c3e57dc3 10-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Give the area an id.


# 57014d1f 29-Nov-2011 czeidler <haiku@clemens-zeidler.de>

Make tabs BReferenceable. Maintain a list of tabs.


# efbd73e6 26-Apr-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix a bug in RowColumnManager when adding / removing views to / from a layout.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41284 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef93b55d 13-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Areas with same tabs are put in a column/row automtically. Move preferred size constraint from Area to the column/row. This avoids a "spring" effect of the
quadratic solver if multiple Areas are in the same column/row.
- Replace GetString by ToString.
- some clean up



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9ef9c027 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Remove debug left over.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40387 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 459ab043 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

No pref constraints for sizes equal -1. This works better with items like glue.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40385 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0ad88e0 26-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix min/ max calculation by removing all soft constraints before doing so. Smaller fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40297 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7583db5a 24-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add an alternative solver to lp_solve. The solver based on Ingo's active set solver but is able to handle arbitrary hard and soft constraints. The advantage to lp_solve is that the active set solver can optimize variable in respect to a quadratic objective function. This makes it possible to minimise the quadratic derivation to a desired value e.g. \Sum_i(x_i - x_{i,pref})^2 -> min.

The solver part has been refactored in this way that both solver can be used with the same layout specifications. The active set solver is default now; the performance is not as good as lp_solve, though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40285 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5440f6fe 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor the linear programming class to use a minimal solver interface class and implement the interface for lp_solve. As a result lp_solve is not visible to the outside any more. This interface could be used to use other solvers as well. Rename operator constants to no clash with lp_solve constants.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf5d4070 29-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix bug spotted by Christian Lippka, thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39676 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c97cd0f4 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Also update the preferred size constraints correctly when replacing the tabs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39644 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fa4fd37 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Keep the preferred size ratio into account. This make layout behaviour much more intuitive when resizing a window. Thanks Christof.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39641 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ecf0b8b 12-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Change the semantic of the SetSame*As function. I think its easier to understand now.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc691d7d 05-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Remove lp_solve dependencies form Variable class and put everything into LinearSpec. As a side effect Variable management is a bit more consistence now. We want to replace lp_solve soon so it will be easier to replace it just in LinearSpec.
- Update copyrights.
- Lot of small things related to the Variable refactoring.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6751b488 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix gcc2 build + warnings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37344020 03-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add a alternative method to setup a group layout. BLayoutItem / BView are wrapped into a GroupItem. GroupItem overloads the | (horizontal tiling) and / (vertical tiling) operators. In this manner you can create a group layout using these operators, e.g. GroupItem item = GroupItem(button1) | (GroupItem(button2) / GroupItem(button3)); would layout button1 at the left and button2 and button3 at the right in a vertical layout. All the layout information is stored in the GroupItem item, to setup the final layout you have to call BuildLayout(item). If you like it it could also be added to the BGroupLayout.
- Add operator test app.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5b6fca06 28-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rework the ALM layout api. The AddItemTo* function are now related to the current Area. On default the current Area is the last added Area.
- Add some more const where appreciated.
- Fix some style issues and a leak in Row and Column.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38842 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 03034505 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Handle layout items like glue correct. Update the preferred size constraint if a tab has been replaced. Fix coding style (thanks Axel).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38804 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2adb769e 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add the possibility to unset the aspect ratio again.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38796 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 19ddd4f1 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

SetDefaultBehavior is not needed since all views handled in this function have min and max size equal the pref size (despite of the status bar length, which is ok). As a result they don't grow or shrink undesirable as assumed previously. As a result also the AutoPreferredContentSize is not needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38795 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21f083af 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Implement all Add* function of the BLayout class properly. If the Add* functions of the BLayout class are called add the item to the right upper corner of the previous area. That is at least better than ignore this functions.
- Add more convenience AddViewTo{Right, Left, Top, Bottom} functions to add a item to the sides of an existing area.
- Need to add the Jamfile hack again to include the ViewLayoutItem.h header. I thing about to add the ALMLayout.* files to the interface dir when its a little bit more matured. Then the problem will be solved. Till I made a decision or somebody tell me its a bad idea to add the ALMLayout to the official interface stuff or the ViewLayoutItem.h should be in a shared header dir I will keep this hack.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 96e2013e 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add inset and spacing to BALMLayout. Each Area is able to overwrite this global values and use his own inset. Add spacing and inset to the tests.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38792 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40d939a4 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add some checks if the Area is initialized.
- Init some more variables in the constructor.
- Rename HasSame*As to Set*As. The old one is more a question. Also add an optional factor and remove the HasSameSizeAs function which tempt the user to leak a BList.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38790 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9503cf19 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Don't pass a min size in the Area _Init function. The min size is updated before solving the layout so we don't have to set it in the beginning. This also simplifies the BALMLayout api.
- Header include style fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38788 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8f60d419 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Remove unused Constraint variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38781 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eb4dd1a2 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Clean up Area header a bit more and remove unused functions.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 33c82c1e 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Compare the correct orientation and add a comment about it.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38778 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f15562e 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use the AlignInFrame BLayoutItem function to do the item alignment. The child area is not needed any more.
Don't leak the fConstraints list.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3c1d82 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Removed unused min, max, pref variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1d1e47de 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Should be part of the last commit.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38772 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ec03898 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

BALMLayout now takes the view min, max and pref values into account. Previously it managed its own values.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38769 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 248bbad2 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

First step to make the ALM layout engine more compatible with the haiku layout API. Many stuff was/is managed by ALM which could and should be done by the standard layout facilities.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38753 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b3b7b663 20-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Encapsulate the solver in the ALM layout class.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 601eded9 20-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Hide constraint header in Area file.
- Start to replace BList with BObjectList.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38741 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b8ec67f4 06-Dec-2009 Stephan Aßmus <superstippi@gmx.de>

* Simplified and optimized a lot the "ToString()" debugging facilities.
* *::Index() is now const, thanks to the BList improvements.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34521 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ea607d6f 28-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied a patch by Christof Lutteroth that updates ALM, and brings new test
apps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f2be4e8c 28-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Vasilis Kaoutsis: Fixed warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25683 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5bced18e 10-Mar-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

ALM/linprog patch by Christof Lutteroth:
* Got rid of class ObjFunctionSummand. Both the constraint summands and
the objective function summands are now stored using class Summand.
* Some method names are more BeOS compliant now: SetX instead of ChangeX.
* linprog test code now uses new AddConstraint methods.
* CalculateMinSize and CalculateMaxSize did not free the memory they
allocated.
* Removed inappropriate setter and getter methods.
* Memory allocated in class Constraint is freed now.
* Other small changes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24351 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 03069455 24-Feb-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Christof Lutteroth:
* copyright headers for the files of the libraries linprog and alm
* new class Summand for representing summands in a linear constraint
* merged class SoftConstraint into class Constraint; Constraint now
supports both soft and hard constraint functionality
* new AddConstraint methods in class LinearSpec for directly setting
constraints with 1 to 4 summands
* code cleanups by using aforementioned AddConstraint methods
* a new very simple test application for alm
* some style corrections


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24108 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6be75ff2 07-Feb-2008 Jérôme Duval <korli@users.berlios.de>

fix gcc4 build


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23922 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a101e99a 06-Feb-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added libalm.so and its dependency liblinprog.so. libalm.so provides a
BLayout implementation (BALMLayout) using the Auckland Layout Model
(ALM). The original ALM was implemented by Christof Lutteroth, the
Haiku/C++ version by James Kim.
The code needs some review, but the test programs seem to work fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23889 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 26fbc34f1b8ec7508e5809c7cbae9df27eb879ad 24-Oct-2012 czeidler <haiku@clemens-zeidler.de>

Max size constraints can be NULL.


# 04b1c44b89086a9521bb478c8e99d024cef8f6a6 17-Oct-2012 czeidler <haiku@clemens-zeidler.de>

Use a tab BReference as argument in Area::Set{Left, Top, Right, Bottom}.
Using a normal pointer is dangerous when creating a new tab directly in the method call because the tab gets deleted to early.


# 25e1abc33cf97fa29501de74738b7a4a874df82e 31-Aug-2012 czeidler <haiku@clemens-zeidler.de>

Use soft inequality constraints for the max area size.

Only if the alignment is set to use the full width/ height a hard inequality constraint is used.


# df2ad5204067ff611bc87a453aafa2f005c1e145 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Archive more details about areas in BALMLayout.


# 6169a6e3d148db0d281a085e514abe6f28a64d9b 23-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Minimize the effect invisible items have on a BALMLayout.

There seems to still be some effect on positioning, but invisible items
no longer constrain the layout.


# f6db102e4762ea9b85e9de9add21f6e5adb5b99c 19-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout respect its position when nested.


# 20cc993ab504286d6c59bcbe273a040e61eafe7f 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove BALM::Area::fConstraints field, which is not needed.

It's easier to just delete all the constraints in the dtor, the ones that
wouldn't have been in fConstraints are NULL at this point anyway.


# 895414da9d7ffb377c7fc0622054ec3ce9e1893a 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALM::Area rename fTopLeftInset to fLeftTopInset.

This is consistent with for instance, the BSize ctor.


# f0307e765ed63a07ff0ad29df44b8d5d2f354acb 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Fix spacing before first header in src/libs/alm.

Also add copyright header in ALMGroup.cpp.


# 0da6f2e916c5912ab5b2bd2d8aa271cf31a3300a 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Rename BALM::GroupItem to BALM::ALMGroup, and move it to its own files.

Also make ALMGroup totally self-contained, i.e. BALMLayout no longer
does the parsing, and is completely unaware of ALMGroup. A small touch
of refactoring as well.


# a25ffa4f046fb495c316d29f0645bd00c82751c8 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Style cleanup in alm: mostly clean includes.


# 7dd17203c872a017368509c4891b074409c388e0 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make Area insets more consistent with other HAIKU inset APIs.


# 8b52747974b85d4377376fe51ef925ebedbf51d9 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In Area, remove unused ItemFrame() method.

Also modify Frame() method to return a rect with rounded coordinates.


# 75e2dcf8fe478ac43fecff5b72049fe500c804dc 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, allow for more flexibility in spacing and insets.

* allow for independent left, top, right and bottom insets
* allow for independent vertical and horizontal spacing between tabs
* allow for the usage of Haiku's spacing constants such as B_USE_WINDOW_INSETS


# c3e57dc36d5d18673ed9c49d9a3790091852fa0a 10-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Give the area an id.


# 57014d1ff77c40a32732075f23a322c2ce32a4d7 29-Nov-2011 czeidler <haiku@clemens-zeidler.de>

Make tabs BReferenceable. Maintain a list of tabs.


# efbd73e63dfa850b1b424305c7835d72d68df590 26-Apr-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix a bug in RowColumnManager when adding / removing views to / from a layout.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41284 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef93b55df49f5296bdb03867215cb1793596e845 13-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Areas with same tabs are put in a column/row automtically. Move preferred size constraint from Area to the column/row. This avoids a "spring" effect of the
quadratic solver if multiple Areas are in the same column/row.
- Replace GetString by ToString.
- some clean up



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9ef9c027aab505819a76f5910dec7810d1721a14 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Remove debug left over.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40387 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 459ab0435806c09cb38bd9a8cc8d40505d80f873 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

No pref constraints for sizes equal -1. This works better with items like glue.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40385 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0ad88e0020787e69b41080af9d707db42aad924 26-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix min/ max calculation by removing all soft constraints before doing so. Smaller fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40297 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7583db5a1ec81636829331e5fc7cae81ca7a7ba7 24-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add an alternative solver to lp_solve. The solver based on Ingo's active set solver but is able to handle arbitrary hard and soft constraints. The advantage to lp_solve is that the active set solver can optimize variable in respect to a quadratic objective function. This makes it possible to minimise the quadratic derivation to a desired value e.g. \Sum_i(x_i - x_{i,pref})^2 -> min.

The solver part has been refactored in this way that both solver can be used with the same layout specifications. The active set solver is default now; the performance is not as good as lp_solve, though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40285 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5440f6fee398073e8359b992a17b0943d39e6ff0 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor the linear programming class to use a minimal solver interface class and implement the interface for lp_solve. As a result lp_solve is not visible to the outside any more. This interface could be used to use other solvers as well. Rename operator constants to no clash with lp_solve constants.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf5d40704edc56d88aa26fa6fb63e7c2895f50e8 29-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix bug spotted by Christian Lippka, thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39676 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c97cd0f4daea9ee3744ef3cce626ea73cbdbcb80 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Also update the preferred size constraints correctly when replacing the tabs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39644 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fa4fd37b76486e5baa22f594c883a7f94ce3c61 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Keep the preferred size ratio into account. This make layout behaviour much more intuitive when resizing a window. Thanks Christof.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39641 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ecf0b8b09ed21fb0649526c02980762140b4255 12-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Change the semantic of the SetSame*As function. I think its easier to understand now.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc691d7de2182d23659b86d87c9c36b0feaa6b40 05-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Remove lp_solve dependencies form Variable class and put everything into LinearSpec. As a side effect Variable management is a bit more consistence now. We want to replace lp_solve soon so it will be easier to replace it just in LinearSpec.
- Update copyrights.
- Lot of small things related to the Variable refactoring.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6751b48834620dd17d380ec679a80fcbddf323af 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix gcc2 build + warnings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37344020ef592f58c61b7de8cd2c83dd31203aca 03-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add a alternative method to setup a group layout. BLayoutItem / BView are wrapped into a GroupItem. GroupItem overloads the | (horizontal tiling) and / (vertical tiling) operators. In this manner you can create a group layout using these operators, e.g. GroupItem item = GroupItem(button1) | (GroupItem(button2) / GroupItem(button3)); would layout button1 at the left and button2 and button3 at the right in a vertical layout. All the layout information is stored in the GroupItem item, to setup the final layout you have to call BuildLayout(item). If you like it it could also be added to the BGroupLayout.
- Add operator test app.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5b6fca06392320a9c32d542b519d8f4fe876aef2 28-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rework the ALM layout api. The AddItemTo* function are now related to the current Area. On default the current Area is the last added Area.
- Add some more const where appreciated.
- Fix some style issues and a leak in Row and Column.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38842 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 030345058e1fc808c6efc72b7b5799702ef9d5d7 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Handle layout items like glue correct. Update the preferred size constraint if a tab has been replaced. Fix coding style (thanks Axel).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38804 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2adb769e33671e518f0d6c894033d19ed799cf34 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add the possibility to unset the aspect ratio again.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38796 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 19ddd4f1cbfa94c7ef0cd23c1de1f12077036a46 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

SetDefaultBehavior is not needed since all views handled in this function have min and max size equal the pref size (despite of the status bar length, which is ok). As a result they don't grow or shrink undesirable as assumed previously. As a result also the AutoPreferredContentSize is not needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38795 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21f083af820b453b24eab10bb8134e2c0e48d0e4 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Implement all Add* function of the BLayout class properly. If the Add* functions of the BLayout class are called add the item to the right upper corner of the previous area. That is at least better than ignore this functions.
- Add more convenience AddViewTo{Right, Left, Top, Bottom} functions to add a item to the sides of an existing area.
- Need to add the Jamfile hack again to include the ViewLayoutItem.h header. I thing about to add the ALMLayout.* files to the interface dir when its a little bit more matured. Then the problem will be solved. Till I made a decision or somebody tell me its a bad idea to add the ALMLayout to the official interface stuff or the ViewLayoutItem.h should be in a shared header dir I will keep this hack.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 96e2013e70880101f5b2324ae73cb5b9bf88a972 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add inset and spacing to BALMLayout. Each Area is able to overwrite this global values and use his own inset. Add spacing and inset to the tests.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38792 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40d939a43f9af0fbd3c6440830c2bb8cb26889d4 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add some checks if the Area is initialized.
- Init some more variables in the constructor.
- Rename HasSame*As to Set*As. The old one is more a question. Also add an optional factor and remove the HasSameSizeAs function which tempt the user to leak a BList.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38790 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9503cf19be94b5a8297ecd73ab50e7acd92a98f6 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Don't pass a min size in the Area _Init function. The min size is updated before solving the layout so we don't have to set it in the beginning. This also simplifies the BALMLayout api.
- Header include style fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38788 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8f60d419c588166c93b5de178b08eb9a22f7e873 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Remove unused Constraint variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38781 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eb4dd1a2a9728c1b653cecc3d474d99548a30bab 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Clean up Area header a bit more and remove unused functions.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 33c82c1e9d470386ea220281e4f1b8fc1a0f0f84 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Compare the correct orientation and add a comment about it.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38778 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f15562e7047a59ee579ee58a0d8ed3a72fcaa72 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use the AlignInFrame BLayoutItem function to do the item alignment. The child area is not needed any more.
Don't leak the fConstraints list.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3c1d82225e8d82d3317548a8faf7aec13834e6 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Removed unused min, max, pref variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1d1e47de0c8f435ce67c485fc7cb34c401706324 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Should be part of the last commit.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38772 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ec038986a1ce59cc27975df3af261f305b7e4b6 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

BALMLayout now takes the view min, max and pref values into account. Previously it managed its own values.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38769 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 248bbad27c63febeb5545b460248b19dffe41ebd 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

First step to make the ALM layout engine more compatible with the haiku layout API. Many stuff was/is managed by ALM which could and should be done by the standard layout facilities.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38753 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b3b7b663e029d636b6d54977e3459f2315a79329 20-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Encapsulate the solver in the ALM layout class.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 601eded950be7b7abf8fe5ce8c5b0064f631e10d 20-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Hide constraint header in Area file.
- Start to replace BList with BObjectList.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38741 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b8ec67f491da3c6ddad3e1c55d70400fdab4961b 06-Dec-2009 Stephan Aßmus <superstippi@gmx.de>

* Simplified and optimized a lot the "ToString()" debugging facilities.
* *::Index() is now const, thanks to the BList improvements.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34521 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ea607d6f7f342e9e7ff706fbc0182046f143a1d2 28-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied a patch by Christof Lutteroth that updates ALM, and brings new test
apps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f2be4e8c4dae5168e3135ecf290bc543b910a275 28-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Vasilis Kaoutsis: Fixed warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25683 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5bced18eab0b1318f3293c1c5c5b1a9d52fa3770 10-Mar-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

ALM/linprog patch by Christof Lutteroth:
* Got rid of class ObjFunctionSummand. Both the constraint summands and
the objective function summands are now stored using class Summand.
* Some method names are more BeOS compliant now: SetX instead of ChangeX.
* linprog test code now uses new AddConstraint methods.
* CalculateMinSize and CalculateMaxSize did not free the memory they
allocated.
* Removed inappropriate setter and getter methods.
* Memory allocated in class Constraint is freed now.
* Other small changes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24351 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0306945545b0fc20ec4da7cff2e99ac39f48d726 24-Feb-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Christof Lutteroth:
* copyright headers for the files of the libraries linprog and alm
* new class Summand for representing summands in a linear constraint
* merged class SoftConstraint into class Constraint; Constraint now
supports both soft and hard constraint functionality
* new AddConstraint methods in class LinearSpec for directly setting
constraints with 1 to 4 summands
* code cleanups by using aforementioned AddConstraint methods
* a new very simple test application for alm
* some style corrections


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24108 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6be75ff2375884d83a984dfd4859b2fc5aff4da7 07-Feb-2008 Jérôme Duval <korli@users.berlios.de>

fix gcc4 build


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23922 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a101e99aada54cf545bbf25e0cbb6329ad45535e 06-Feb-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added libalm.so and its dependency liblinprog.so. libalm.so provides a
BLayout implementation (BALMLayout) using the Auckland Layout Model
(ALM). The original ALM was implemented by Christof Lutteroth, the
Haiku/C++ version by James Kim.
The code needs some review, but the test programs seem to work fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23889 a95241bf-73f2-0310-859d-f6bbb57e9c96