forked from joejulian/gio
unit: add PxToDp and PxToSp
PxToDp and PxToSp are useful when you are trying to calculate text-size or widget size based on dynamically sized container. Signed-off-by: Egon Elbre <egonelbre@gmail.com>
This commit is contained in:
@@ -60,6 +60,16 @@ func (c Metric) SpToDp(v Sp) Dp {
|
|||||||
return Dp(float32(v) * nonZero(c.PxPerSp) / nonZero(c.PxPerDp))
|
return Dp(float32(v) * nonZero(c.PxPerSp) / nonZero(c.PxPerDp))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PxToSp converts v px to sp.
|
||||||
|
func (c Metric) PxToSp(v int) Sp {
|
||||||
|
return Sp(float32(v) / nonZero(c.PxPerSp))
|
||||||
|
}
|
||||||
|
|
||||||
|
// PxToDp converts v px to dp.
|
||||||
|
func (c Metric) PxToDp(v int) Dp {
|
||||||
|
return Dp(float32(v) / nonZero(c.PxPerDp))
|
||||||
|
}
|
||||||
|
|
||||||
func nonZero(v float32) float32 {
|
func nonZero(v float32) float32 {
|
||||||
if v == 0. {
|
if v == 0. {
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -29,4 +29,20 @@ func TestMetric_DpToSp(t *testing.T) {
|
|||||||
t.Errorf("SpToDp conversion mismatch %v != %v", exp, got)
|
t.Errorf("SpToDp conversion mismatch %v != %v", exp, got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
exp := unit.Dp(5)
|
||||||
|
got := m.PxToDp(m.Dp(5))
|
||||||
|
if got != exp {
|
||||||
|
t.Errorf("PxToDp conversion mismatch %v != %v", exp, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
exp := unit.Sp(5)
|
||||||
|
got := m.PxToSp(m.Sp(5))
|
||||||
|
if got != exp {
|
||||||
|
t.Errorf("PxToSp conversion mismatch %v != %v", exp, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user