Documentation
¶
Overview ¶
Пакет pxconv предоставляет инструменты для работы с единицами измерения пользовательского интерфейса: независимыми от устройства пикселями (dp), единицами для шрифтов (sp), пунктами (pt) и их преобразованием в пиксели (px) с учетом плотности экрана.
Основные концепции ¶
Dp (Density-independent Pixels) — это единицы, независимые от устройства, которые используются для задания размеров элементов интерфейса (например, кнопок или отступов). Они обеспечивают согласованность размеров на устройствах с разной плотностью экрана.
Sp (Scale-independent Pixels) — это единицы, аналогичные Dp, но учитывающие пользовательские настройки размера шрифта. Используются для задания размеров текста.
Pt (Points) — это единицы, традиционно применяемые в типографике. В одном дюйме 72 пункта. Применяются для задания размеров шрифтов и других элементов в графическом дизайне.
Пиксели (px) — это физические точки на экране. Их количество на единицу длины зависит от плотности экрана (DPI, dots per inch).
Структура Metric ¶
Основная структура пакета `Metric` представляет собой набор параметров для преобразования между Dp, Sp, Pt и пикселями. Она позволяет учитывать плотность экрана и пользовательские настройки.
Поля структуры:
- PxPerDp: Количество пикселей на один Dp.
- PxPerSp: Количество пикселей на один Sp.
- Dpi: Количество пикселей на дюйм (dots per inch).
Создание экземпляра Metric ¶
Экземпляр Metric можно создать с помощью конструктора `NewMetric`, который принимает значения плотностей для Dp, Sp и DPI. Если переданы некорректные значения (0 или отрицательные), они будут заменены на значение по умолчанию.
Пример:
metric := pxconv.NewMetric(2.0, 1.5, 96) // Плотности: 2 px/dp, 1.5 px/sp, DPI 96.
Также можно создавать экземпляры вручную, но следует помнить, что некорректные значения могут привести к ошибкам в расчетах.
Пример:
metric := pxconv.Metric{PxPerDp: 2.0, PxPerSp: 1.5, Dpi: 96}
Конвертация единиц ¶
Методы структуры Metric позволяют преобразовывать значения между различными единицами измерения:
- DpToPx: Преобразует Dp в пиксели (px), округляя до ближайшего целого числа.
- SpToPx: Преобразует Sp в пиксели (px), округляя до ближайшего целого числа.
- PtToPx: Преобразует пункты (pt) в пиксели (px).
- PxToDp: Преобразует пиксели (px) в Dp.
- PxToSp: Преобразует пиксели (px) в Sp.
- PxToPt: Преобразует пиксели (px) в пункты (pt).
- DpToSp: Преобразует Dp в Sp.
- SpToDp: Преобразует Sp в Dp.
- InchToPx: Преобразует дюймы (inch) в пиксели (px).
- MmToPx: Преобразует миллиметры (mm) в пиксели (px).
- PxToInch: Преобразует пиксели (px) в дюймы (inch).
- PxToMm: Преобразует пиксели (px) в миллиметры (mm).
Пример:
metric := pxconv.NewMetric(2.0, 1.5, 96) // Плотности экрана pxFromDp := metric.DpToPx(10) // Результат: 20 px pxFromSp := metric.SpToPx(10) // Результат: 15 px pxFromPt := metric.PtToPx(12) // Результат: 16 px (при DPI 96) dpFromPx := metric.PxToDp(20) // Результат: 10 dp spFromPx := metric.PxToSp(15) // Результат: 10 sp ptFromPx := metric.PxToPt(16) // Результат: 12 pt (при DPI 96)
Особенности ¶
Пакет pxconv учитывает плотность экрана и пользовательские настройки, что делает его подходящим для адаптивных интерфейсов. Если входные значения некорректны (0 или отрицательные), методы пакета заменяют их на значение по умолчанию, предотвращая ошибки.
Пример:
metric := pxconv.NewMetric(0, -5, 0) // PxPerDp = 1, PxPerSp = 1, Dpi = 96.
Применение ¶
Пакет pxconv полезен для разработки масштабируемых интерфейсов на мобильных устройствах, настольных компьютерах и других графических системах. Преобразование между единицами позволяет создавать интерфейсы, которые корректно отображаются на экранах с разной плотностью.
Index ¶
- Constants
- type Dp
- type Inch
- type Metric
- func (c Metric) DpToPx(value Dp) int
- func (c Metric) DpToSp(value Dp) Sp
- func (c Metric) GetDensity() (float32, float32)
- func (c Metric) InchToPx(value Inch) int
- func (c Metric) MmToPx(value Mm) int
- func (c Metric) PtToPx(value Pt) int
- func (c Metric) PxToDp(value int) Dp
- func (c Metric) PxToInch(value int) Inch
- func (c Metric) PxToMm(value int) Mm
- func (c Metric) PxToPt(value int) Pt
- func (c Metric) PxToSp(value int) Sp
- func (c *Metric) ScaleByDpi(scale float32)
- func (c Metric) SpToDp(value Sp) Dp
- func (c Metric) SpToPx(value Sp) int
- type Mm
- type Pt
- type Sp
Constants ¶
const ( DefaultDpi = 96 // Стандартное значение DPI для большинства дисплеев. MmPerInch = 25.4 // Количество миллиметров в одном дюйме, константа для вычислений. PointsPerInch = 72 // Количество пунктов в одном дюйме. )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Dp ¶
type Dp float32
Dp — единицы, независимые от устройства, для измерения расстояний на экране.
type Metric ¶
type Metric struct {
// PxPerDp - количество пикселей на один dp.
PxPerDp float32
// PxPerSp - количество пикселей на один sp.
PxPerSp float32
// Dpi - количество пикселей на дюйм.
Dpi float32
}
Metric используется для конвертации независимых экранных единиц (dp, sp) в пиксели (px).
func NewMetric ¶
NewMetric создаёт новый экземпляр Metric, проверяя входные значения на корректность. Если переданы нулевые или отрицательные значения, они будут заменены на 1.
func (Metric) DpToPx ¶
DpToPx м-д конвертирует значение dp в пиксели (px), округляя до ближайшего целого числа.
func (Metric) GetDensity ¶
GetDensity м-д возвращает текущие значения плотности (PxPerDp и PxPerSp). Используется для проверки или отладки текущих коэффициентов плотности. Не включает DPI.
func (Metric) InchToPx ¶
InchToPx м-д конвертирует значение инчи (inch) в пиксели (px), используя DPI Например, при DPI = 96, InchToPx(1) вернёт 96.
func (Metric) MmToPx ¶
MmToPx м-д конвертирует значение миллиметры (mm) в пиксели (px), используя DPI. Например, при DPI = 96 и MmToPx(25.4), результат будет равен 96.
func (Metric) PtToPx ¶ added in v0.6.0
PtToPx м-д конвертирует значение пунктов (pt) в пиксели (px), используя DPI Например, при DPI = 96, PtToPx(72) вернёт 96.
func (Metric) PxToInch ¶
PxToInch м-д конвертирует значение пикселей (px) в инчи (inch), используя DPI. Например, при DPI = 96 и значении 96 пикселей, результат будет равен 1 дюйму.
func (Metric) PxToMm ¶
PxToMm м-д конвертирует значение пикселей (px) в миллиметры (mm), используя DPI Например, при DPI = 96 и значении 96 пикселей, результат будет равен 25.4 мм.
func (Metric) PxToPt ¶ added in v0.6.0
PxToPt м-д конвертирует значение пикселей (px) в пункты (pt), используя DPI
func (*Metric) ScaleByDpi ¶
ScaleByDpi масштабирует текущие плотности (PxPerDp, PxPerSp и Dpi) на указанный коэффициент. Изменяет состояние объекта Metric.