-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdoc.go
89 lines (89 loc) · 6.12 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Пакет 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 полезен для разработки масштабируемых интерфейсов на мобильных устройствах, настольных компьютерах
// и других графических системах. Преобразование между единицами позволяет создавать интерфейсы, которые
// корректно отображаются на экранах с разной плотностью.
package pxconv