API addition to Region & change to SkinBase method signatures
Jonathan Giles
jonathan.giles at oracle.com
Tue Apr 16 15:48:17 PDT 2013
+1
-- Jonathan
On 17/04/2013 10:32 a.m., Jasper Potts wrote:
> Hi All,
>
> We have been endlessly chasing bugs in UI Controls Skins where we are
> not reliably and consistently snapping to pixels the insets/padding
> values used in computePref/Min/Max etc methods and in the
> layoutChildren method.
>
> So I am suggesting adding some helper methods to Region and passing in
> values to the compute methods so that its much easier for developers
> to have the correctly snapped values at hand.
>
> *Region Additions*
>
> *public class Region {*
> * …..*
> * public int snappedTopInset()*
> * public int snappedBottomInset()*
> * public int snappedRightInset()*
> * public int snappedBottomInset()*
> * …..*
> *}*
>
> These will the the equivalent of *"snapSize(getInsets().getTop())"
> *but implemented in a more efficient way.
>
> *Changes to SkinBase*
> *OLD*
> *public abstract class SkinBase<C extends Control> implements Skin<C> {*
> * …..*
> * protected double computeMinWidth(double height) *
> * protected double computeMinHeight(double width) *
> * protected double computeMaxWidth(double height)*
> * protected double computeMaxHeight(double width)*
> * protected double computePrefWidth(double height)*
> * protected double computePrefHeight(double width)*
> * public double getBaselineOffset()*
> * …..*
> *} *
>
> *NEW*
> *public abstract class SkinBase<C extends Control> implements Skin<C> {*
> * …..*
> * protected double computeMinWidth(double height, int topInset, int
> rightInset, int bottomInset, int leftInset) *
> * protected double computeMinHeight(double width, int topInset, int
> rightInset, int bottomInset, int leftInset) *
> * protected double computeMaxWidth(double height, int topInset, int
> rightInset, int bottomInset, int leftInset)*
> * protected double computeMaxHeight(double width, int topInset, int
> rightInset, int bottomInset, int leftInset)*
> * protected double computePrefWidth(double height, int topInset,
> int rightInset, int bottomInset, int leftInset)*
> * protected double computePrefHeight(double width, int topInset,
> int rightInset, int bottomInset, int leftInset)*
> * public double computeBaselineOffset()*
> * …..*
> *}*
>
> The *topInsets* etc will be calculated as
> *getSkinnable().snappedTopInset()*. The change from
> *getBaselineOffset()* to *computeBaselineOffset()* is just to make it
> clear this method is responsible for computing this value not getting
> one someone else has computed. We are not passing insets into
> *computeBaselineOffset() *because we so far have never needed them,
> they are easy to get with the snappedXXX methods if needed.
>
> I am really hopping this will make it easy to maintain constant
> behavior as we work on controls implementations in the futrure.
>
> Thanks
>
> Jasper
More information about the openjfx-dev
mailing list