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))
|
||||
}
|
||||
|
||||
// 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 {
|
||||
if v == 0. {
|
||||
return 1
|
||||
|
||||
@@ -29,4 +29,20 @@ func TestMetric_DpToSp(t *testing.T) {
|
||||
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