Custom layouters (element positions + size)
Posted: Wed Apr 10, 2019 12:53 pm
Currently the positions of elements are defined by two mechanisms:
- grid (fixed height, width, dimensions)
- freely (detached from grid)
Both mechanisms are very useful and desired. I now propose a third mechanism which instroduces user defined layouters. A layouter would control where objects are placable and it would optionally control the size of elements. You can only add elements at the positions defined by the layouter. Their width and height of elements can also be controlled by the layouter but this is an optional feature and can be turned off so that each elements has is own size. The rotation of elements is not affected by a layouter - but optionally the elements could all be auto-rotated if desired. Otherwise they have their custom rotation at their position.
The following layouters make sense:
- custom grid
The user defines how many elements in x and y dimensions shall be available. In a sense this is really similar to the current grid. The main difference is that this custom grid is placable as an element on a desktop, in a window or in a panel. And because it's a separate element with it own grid definition it cal locally override the container's grid by its own settings.
The custom grid defines positions where emements can be placed, This is differnt to the current grid behavior. The current grid defines "cells" with width and height. The custom grid on the other hand only defines points where objects can be placed. These positions are evenly spaced. The objects at these positions CAN have their own custom size OR the size can be controlled by the custom grid which offers width and height properties to define the size of each element at its position. Elem,ents can be smaller than the space between each position or they can be larger. If width and height are not defined then each element is NOT resized and has its own custom width and height just as if it was detached from grid. The difference is that the positions where the elements are placed are still controlled by the custom grid.
Re-scaling a custom grid or re-positioning it will change the positions of the elements that are controlled by the custom grid.
- polyline
The user draws a polyline with n segments for this layout or recalls a preset (circle, spiral, triangle, rectangle, star, ...). By default elements are placed at the set points of this polyline. The user can activate sub-positions between the set points by increasing the placement density for element positioning. There could be 0..n additional elements between each set point of the polyline. The space between elements shall be evenly spread.
The polyline then defines n positions where elements can be placed. Scaling, rotating or moving the polyline will change the placement positions for elements. In the same way as described for the custom grid user can OPTIONALLY override the width and height of elements along the polyline. If the width and height are not overriden (which is the default) then each elements kepps it original user defines width and height. But if width and height are overriden then all elements are forced into a user defined bounding box and their size is controlled this way.
These layouters would give additional automatic ways for object placement and object sizes.
Hope you like it
- grid (fixed height, width, dimensions)
- freely (detached from grid)
Both mechanisms are very useful and desired. I now propose a third mechanism which instroduces user defined layouters. A layouter would control where objects are placable and it would optionally control the size of elements. You can only add elements at the positions defined by the layouter. Their width and height of elements can also be controlled by the layouter but this is an optional feature and can be turned off so that each elements has is own size. The rotation of elements is not affected by a layouter - but optionally the elements could all be auto-rotated if desired. Otherwise they have their custom rotation at their position.
The following layouters make sense:
- custom grid
The user defines how many elements in x and y dimensions shall be available. In a sense this is really similar to the current grid. The main difference is that this custom grid is placable as an element on a desktop, in a window or in a panel. And because it's a separate element with it own grid definition it cal locally override the container's grid by its own settings.
The custom grid defines positions where emements can be placed, This is differnt to the current grid behavior. The current grid defines "cells" with width and height. The custom grid on the other hand only defines points where objects can be placed. These positions are evenly spaced. The objects at these positions CAN have their own custom size OR the size can be controlled by the custom grid which offers width and height properties to define the size of each element at its position. Elem,ents can be smaller than the space between each position or they can be larger. If width and height are not defined then each element is NOT resized and has its own custom width and height just as if it was detached from grid. The difference is that the positions where the elements are placed are still controlled by the custom grid.
Re-scaling a custom grid or re-positioning it will change the positions of the elements that are controlled by the custom grid.
- polyline
The user draws a polyline with n segments for this layout or recalls a preset (circle, spiral, triangle, rectangle, star, ...). By default elements are placed at the set points of this polyline. The user can activate sub-positions between the set points by increasing the placement density for element positioning. There could be 0..n additional elements between each set point of the polyline. The space between elements shall be evenly spread.
The polyline then defines n positions where elements can be placed. Scaling, rotating or moving the polyline will change the placement positions for elements. In the same way as described for the custom grid user can OPTIONALLY override the width and height of elements along the polyline. If the width and height are not overriden (which is the default) then each elements kepps it original user defines width and height. But if width and height are overriden then all elements are forced into a user defined bounding box and their size is controlled this way.
These layouters would give additional automatic ways for object placement and object sizes.
Hope you like it