pxconv

package module
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2024 License: MIT Imports: 1 Imported by: 0

README

pxconv — Конвертер экранных единиц (dp, sp, px, inch, mm, pt)

pxconv — пакет на Go для работы с экранными единицами измерения (dp, sp, px, inch, mm, pt) с учётом плотности экрана.

Особенности

  • Поддержка основных единиц: dp, sp, px, inch, mm, pt.
  • Настраиваемая плотность экрана: параметры PxPerDp, PxPerSp, и Dpi.
  • Конвертация единиц: удобные методы для преобразования между всеми поддерживаемыми единицами.
  • Обработка некорректных значений: замена на стандартные значения (по умолчанию 1) для предотвращения ошибок.

Установка

Для установки пакета используйте команду:

go get github.com/MiCkEyZzZ/pxconv

Пример использования

Ниже приведён пример работы с пакетом:

package main

import (
	"fmt"

	"github.com/MiCkEyZzZ/pxconv"
)

func main() {
	// Создаём экземпляр Metric с настройками плотности
	m := pxconv.Metric{PxPerDp: 2, PxPerSp: 1.5, Dpi: 96}

	// Преобразуем 10 dp в пиксели
	px := m.DpToPx(pxconv.Dp(10))
	fmt.Println(px) // Вывод: 20
}

API

Пакет предоставляет следующие ключевые методы для преобразования единиц измерения:

  • DpToPx — преобразование dp в px.
  • PxToDp — преобразование px в dp.
  • SpToPx — преобразование sp в px.
  • PxToSp — преобразование px в sp.
  • InchToPx — преобразование дюймов в px.
  • PxToInch — преобразование px в дюймы.
  • MmToPx — преобразование миллиметров в px.
  • PxToMm — преобразование px в миллиметры.
  • PtToPx — преобразование пунктов в px.
  • PxToPt — преобразование px в пункты.

Полный список методов и их описание можно найти в документации.

Лицензия

Этот пакет распространяется под лицензией MIT. Полный текст лицензии доступен в файле ЛИЦЕНЗИЯ.

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

View Source
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 Inch

type Inch float32

Inch — единица измерения для дюймов

type Metric

type Metric struct {
	// PxPerDp - количество пикселей на один dp.
	PxPerDp float32
	// PxPerSp - количество пикселей на один sp.
	PxPerSp float32
	// Dpi - количество пикселей на дюйм.
	Dpi float32
}

Metric используется для конвертации независимых экранных единиц (dp, sp) в пиксели (px).

func NewMetric

func NewMetric(pxPerDp, pxPerSp, dpi float32) Metric

NewMetric создаёт новый экземпляр Metric, проверяя входные значения на корректность. Если переданы нулевые или отрицательные значения, они будут заменены на 1.

func (Metric) DpToPx

func (c Metric) DpToPx(value Dp) int

DpToPx м-д конвертирует значение dp в пиксели (px), округляя до ближайшего целого числа.

func (Metric) DpToSp

func (c Metric) DpToSp(value Dp) Sp

DpToSp м-д конвертирует значение dp в sp, используя плотности для dp и sp.

func (Metric) GetDensity

func (c Metric) GetDensity() (float32, float32)

GetDensity м-д возвращает текущие значения плотности (PxPerDp и PxPerSp). Используется для проверки или отладки текущих коэффициентов плотности. Не включает DPI.

func (Metric) InchToPx

func (c Metric) InchToPx(value Inch) int

InchToPx м-д конвертирует значение инчи (inch) в пиксели (px), используя DPI Например, при DPI = 96, InchToPx(1) вернёт 96.

func (Metric) MmToPx

func (c Metric) MmToPx(value Mm) int

MmToPx м-д конвертирует значение миллиметры (mm) в пиксели (px), используя DPI. Например, при DPI = 96 и MmToPx(25.4), результат будет равен 96.

func (Metric) PtToPx added in v0.6.0

func (c Metric) PtToPx(value Pt) int

PtToPx м-д конвертирует значение пунктов (pt) в пиксели (px), используя DPI Например, при DPI = 96, PtToPx(72) вернёт 96.

func (Metric) PxToDp

func (c Metric) PxToDp(value int) Dp

PxToDp м-д конвертирует значение пикселей (px) в dp.

func (Metric) PxToInch

func (c Metric) PxToInch(value int) Inch

PxToInch м-д конвертирует значение пикселей (px) в инчи (inch), используя DPI. Например, при DPI = 96 и значении 96 пикселей, результат будет равен 1 дюйму.

func (Metric) PxToMm

func (c Metric) PxToMm(value int) Mm

PxToMm м-д конвертирует значение пикселей (px) в миллиметры (mm), используя DPI Например, при DPI = 96 и значении 96 пикселей, результат будет равен 25.4 мм.

func (Metric) PxToPt added in v0.6.0

func (c Metric) PxToPt(value int) Pt

PxToPt м-д конвертирует значение пикселей (px) в пункты (pt), используя DPI

func (Metric) PxToSp

func (c Metric) PxToSp(value int) Sp

PxToSp м-д конвертирует значение пикселей (px) в sp.

func (*Metric) ScaleByDpi

func (c *Metric) ScaleByDpi(scale float32)

ScaleByDpi масштабирует текущие плотности (PxPerDp, PxPerSp и Dpi) на указанный коэффициент. Изменяет состояние объекта Metric.

func (Metric) SpToDp

func (c Metric) SpToDp(value Sp) Dp

SpToDp м-д конвертирует значение sp в dp, используя плотности для dp и sp.

func (Metric) SpToPx

func (c Metric) SpToPx(value Sp) int

SpToPx м-д конвертирует значение sp в пиксели (px), округляя до ближайшего целого числа.

type Mm

type Mm float32

Mm — единица измерения для миллиметров.

type Pt added in v0.6.0

type Pt float32

Pt — единица измерения для пунктов.

type Sp

type Sp float32

Sp — единицы, независимые от устройства, для измерения шрифтов.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL