Re: How to scale control properly?

2014-06-10 Thread Martin Sladecek
That should work for non-resizable Nodes, but resizables would be tricky 
if not impossible.


During the layout pass, we need to know min/pref/max size. In this case, 
it would have to be adjusted with the transformation (which can be a 
rotation,  shear or doesn't have to be affine). The transformation can 
make widthheight depend on each other (like 45deg rotation makes the 
min/max width depend on height and vice-versa). Then there's a problem 
with Region's width/height properties which are being set by the layout 
pane. They should be without transformations (as internal layout uses 
them), so either the layout algorithms would have to undo the transforms 
and compute the right size or the logic would need to be in resize() 
call, which turns setWidth/setHeight to kind-of a pitfall.


I think the best solution would be to add some scale styleable-only 
property to Control, as that's probably the most reasonable transform we 
want to include in layout bounds. As controls have another layer of 
layoutChildren() call which passes the width/height and do not (should 
not?) use getWidth()/getHeight() for their layout, it might be possible 
to hide the internal logic in some common Skin code. That would also 
mean adding a mandatory Pane to each control that would be the root of 
the skin, but a child of the control, to hide the internal transformations.


-Martin

On 10.6.2014 05:09, Richard Bair wrote:

One thing we’ve always considered was adding some kind of convenience API to 
Node to toggle how the layout bounds are computed (whether they take into 
account transforms or not). Martin, how difficult would that be, do you think?

Richard

On Jun 5, 2014, at 11:41 AM, Rafal Leibzig rafal...@gmail.com wrote:


Thanks for advice.
I know this trick with wrapping in a Group, but as i wrote on
stackoverflow, there is dropshadow effect after moving mouse over the
control.
This effect extends group's layoutBounds for a while.
And when mouse leaves out the control, then group's layoutBounds shrink.

I found the sources/css for this control:
https://bitbucket.org/controlsfx/controlsfx/src/96f40eb0b579277139192e2398fbbaf7fd01f91e/controlsfx/src/main/resources/org/controlsfx/control/rating.css?at=default

--
Rafal


2014-06-05 16:12 GMT+02:00 Martin Sladecek martin.slade...@oracle.com:


Hi Rafal,
you can wrap the control in a Group. That way, it's (actually Group's)
layoutBounds will be the same as it's transformed bounds (boundsInParent).
Alternatively you can use css styling, but I don't know much about how to
do it properly, maybe Jonathan can help you there.

-Martin


On 06/05/2014 01:13 AM, Rafal Leibzig wrote:


Hi,

Sorry for disturbing you, but I have a question and no one answered me on
other forums.

My question is rather simple:

http://stackoverflow.com/questions/23997115/how-to-
scale-control-and-layout-it-properly-in-javafx


Thanks in advance.
You are the experts. :)







Re: How to scale control properly?

2014-06-05 Thread Martin Sladecek

Hi Rafal,
you can wrap the control in a Group. That way, it's (actually Group's) 
layoutBounds will be the same as it's transformed bounds 
(boundsInParent). Alternatively you can use css styling, but I don't 
know much about how to do it properly, maybe Jonathan can help you there.


-Martin

On 06/05/2014 01:13 AM, Rafal Leibzig wrote:

Hi,

Sorry for disturbing you, but I have a question and no one answered me on
other forums.

My question is rather simple:

http://stackoverflow.com/questions/23997115/how-to-scale-control-and-layout-it-properly-in-javafx


Thanks in advance.
You are the experts. :)