mirror of https://github.com/anoshenko/rui.git
Rename ViewShadow interface
This commit is contained in:
parent
5efa2f5ae8
commit
32141b996a
20
CHANGELOG.md
20
CHANGELOG.md
|
@ -1,9 +1,22 @@
|
|||
# v0.18.0
|
||||
|
||||
* Renamed:
|
||||
Transform interface -> TransformProperty
|
||||
NewTransform function -> NewTransformProperty
|
||||
TransformTag constant -> Transform.
|
||||
"origin-x" property -> "transform-origin-x"
|
||||
"origin-y" property -> "transform-origin-y"
|
||||
"origin-z" property -> "transform-origin-z"
|
||||
GetOrigin function -> GetTransformOrigin.
|
||||
BorderBoxClip constant -> BorderBox
|
||||
PaddingBoxClip constant -> PaddingBox
|
||||
ContentBoxClip constant -> ContentBox.
|
||||
ViewShadow interface -> ShadowProperty
|
||||
NewViewShadow function -> NewShadow
|
||||
NewInsetViewShadow function -> NewInsetShadow
|
||||
NewShadowWithParams function -> NewShadowProperty
|
||||
|
||||
* Property name type changed from string to PropertyName.
|
||||
* Transform interface renamed to TransformProperty. NewTransform function renamed to NewTransformProperty. TransformTag constant renamed to Transform.
|
||||
* "origin-x", "origin-y", and "origin-z" properties renamed to "transform-origin-x", "transform-origin-y", and "transform-origin-z".
|
||||
* GetOrigin function renamed to GetTransformOrigin.
|
||||
* Changed Push, Pop, MoveToFront, and MoveToFrontByID methods of StackLayout interface.
|
||||
* Removed DefaultAnimation, StartToEndAnimation, EndToStartAnimation, TopDownAnimation, and BottomUpAnimation constants.
|
||||
* Added "push-transform", "push-duration", "push-timing", and "move-to-front-animation" StackLayout properties.
|
||||
|
@ -13,7 +26,6 @@
|
|||
* Added GetPushTransform, GetPushDuration, GetPushTiming, and IsMoveToFrontAnimation functions.
|
||||
* Added "mask", "mask-clip", "mask-origin", and "background-origin" properties.
|
||||
* Added GetBackground, GetMask, GetBackgroundClip,GetBackgroundOrigin, GetMaskClip, and GetMaskOrigin functions.
|
||||
* Renamed BorderBoxClip, PaddingBoxClip, and ContentBoxClip constants to BorderBox, PaddingBox, and ContentBox.
|
||||
* Added LineJoin type. Type of constants MiterJoin, RoundJoin, and BevelJoin changed to LineJoin. Type of Canvas.SetLineJoin function argument changed to LineJoin.
|
||||
* Added LineCap type. Type of constants ButtCap, RoundCap, and SquareCap changed to LineCap. Type of Canvas.SetLineCap function argument changed to LineCap.
|
||||
|
||||
|
|
36
README-ru.md
36
README-ru.md
|
@ -1047,7 +1047,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру
|
|||
### Свойство "shadow"
|
||||
|
||||
Свойство "shadow" позволяет задать тени для View. Теней может быть несколько. Тень описывается
|
||||
с помощью интерфейса ViewShadow расширяющего интерфейс Properties (см. выше). У тени имеются следующие свойства:
|
||||
с помощью интерфейса ShadowProperty расширяющего интерфейс Properties (см. выше). У тени имеются следующие свойства:
|
||||
|
||||
| Свойство | Константа | Тип | Описание |
|
||||
|-----------------|---------------|----------|---------------------------------------------------------------|
|
||||
|
@ -1058,13 +1058,13 @@ RadiusProperty, а не структура BoxRadius. Получить стру
|
|||
| "blur" | BlurRadius | float | Радиус размытия тени. Значение должно быть >= 0 |
|
||||
| "spread-radius" | SpreadRadius | float | Увеличение тени. Значение > 0 увеличивает тень, < 0 уменьшает |
|
||||
|
||||
Для создания ViewShadow используются три функции:
|
||||
Для создания ShadowProperty используются три функции:
|
||||
|
||||
func NewViewShadow(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ViewShadow
|
||||
func NewInsetViewShadow(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ViewShadow
|
||||
func NewShadowWithParams(params Params) ViewShadow
|
||||
func NewShadowProperty(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ShadowProperty
|
||||
func NewInsetShadowProperty(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ShadowProperty
|
||||
func NewShadowWithParams(params Params) ShadowProperty
|
||||
|
||||
Функция NewViewShadow создает внешнюю тень (Inset == false), NewInsetViewShadow - внутреннюю
|
||||
Функция NewShadowProperty создает внешнюю тень (Inset == false), NewInsetShadowProperty - внутреннюю
|
||||
(Inset == true).
|
||||
Функция NewShadowWithParams используется когда в качестве параметров необходимо использовать
|
||||
константы. Например:
|
||||
|
@ -1075,10 +1075,10 @@ RadiusProperty, а не структура BoxRadius. Получить стру
|
|||
rui.Dilation : 16.0,
|
||||
})
|
||||
|
||||
В качестве значения свойству "shadow" может быть присвоено ViewShadow, массив ViewShadow,
|
||||
текстовое представление ViewShadow.
|
||||
В качестве значения свойству "shadow" может быть присвоено ShadowProperty, массив ShadowProperty,
|
||||
текстовое представление ShadowProperty.
|
||||
|
||||
Текстовое представление ViewShadow имеет следующий формат:
|
||||
Текстовое представление ShadowProperty имеет следующий формат:
|
||||
|
||||
_{ color = <цвет> [, x-offset = <смещение>] [, y-offset = <смещение>] [, blur = <радиус>]
|
||||
[, spread-radius = <увеличение>] [, inset = <тип>] }
|
||||
|
@ -1086,7 +1086,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру
|
|||
|
||||
Получить значение данного свойства можно с помощью функции
|
||||
|
||||
func GetViewShadows(view View, subviewID ...string) []ViewShadow
|
||||
func GetShadowPropertys(view View, subviewID ...string) []ShadowProperty
|
||||
|
||||
Если тень не задана, то данная функция вернет пустой массив
|
||||
|
||||
|
@ -1447,7 +1447,7 @@ radius необходимо передать nil
|
|||
| "blur" | Blur | float64 0…10000px | Размытие по Гауссу |
|
||||
| "brightness" | Brightness | float64 0…10000% | Изменение яркости |
|
||||
| "contrast" | Contrast | float64 0…10000% | Изменение контрастности |
|
||||
| "drop-shadow" | DropShadow | []ViewShadow | Добавление тени |
|
||||
| "drop-shadow" | DropShadow | []ShadowProperty | Добавление тени |
|
||||
| "grayscale" | Grayscale | float64 0…100% | Преобразование к оттенкам серого |
|
||||
| "hue-rotate" | HueRotate | AngleUnit | Вращение оттенка |
|
||||
| "invert" | Invert | float64 0…100% | Инвертирование цветов |
|
||||
|
@ -1704,14 +1704,14 @@ radius необходимо передать nil
|
|||
#### Свойство "text-shadow"
|
||||
|
||||
Свойство "text-shadow" позволяет задать тени для текста. Теней может быть несколько. Тень описывается
|
||||
с помощью интерфейса ViewShadow (см. выше, раздел "Свойство 'shadow'"). Для тени текста используются только
|
||||
с помощью интерфейса ShadowProperty (см. выше, раздел "Свойство 'shadow'"). Для тени текста используются только
|
||||
Свойства "color", "x-offset", "y-offset" и "blur". Свойства "inset" и "spread-radius" игнорируются (т.е. их
|
||||
задание не является ошибкой, просто никакого влияния на тень текста они не имеют).
|
||||
|
||||
Для создания ViewShadow для тени текста используются функции:
|
||||
Для создания ShadowProperty для тени текста используются функции:
|
||||
|
||||
func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ViewShadow
|
||||
func NewShadowWithParams(params Params) ViewShadow
|
||||
func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ShadowProperty
|
||||
func NewShadowWithParams(params Params) ShadowProperty
|
||||
|
||||
Функция NewShadowWithParams используется когда в качестве параметров необходимо использовать
|
||||
константы. Например:
|
||||
|
@ -1721,12 +1721,12 @@ radius необходимо передать nil
|
|||
rui.BlurRadius : 8.0,
|
||||
})
|
||||
|
||||
В качестве значения свойству "text-shadow" может быть присвоено ViewShadow, массив ViewShadow,
|
||||
текстовое представление ViewShadow (см. выше, раздел "Свойство 'shadow'").
|
||||
В качестве значения свойству "text-shadow" может быть присвоено ShadowProperty, массив ShadowProperty,
|
||||
текстовое представление ShadowProperty (см. выше, раздел "Свойство 'shadow'").
|
||||
|
||||
Получить значение данного свойства можно с помощью функции
|
||||
|
||||
func GetTextShadows(view View, subviewID ...string) []ViewShadow
|
||||
func GetTextShadows(view View, subviewID ...string) []ShadowProperty
|
||||
|
||||
Если тень не задана, то данная функция вернет пустой массив
|
||||
|
||||
|
|
34
README.md
34
README.md
|
@ -1024,7 +1024,7 @@ equivalent to
|
|||
### "shadow" property
|
||||
|
||||
The "shadow" property allows you to set shadows for the View. There may be several shadows.
|
||||
The shadow is described using the ViewShadow interface extending the Properties interface (see above).
|
||||
The shadow is described using the ShadowProperty interface extending the Properties interface (see above).
|
||||
The shadow has the following properties:
|
||||
|
||||
| Property | Constant | Type | Description |
|
||||
|
@ -1036,14 +1036,14 @@ The shadow has the following properties:
|
|||
| "blur" | BlurRadius | float | Shadow blur radius. The value must be >= 0 |
|
||||
| "spread-radius" | SpreadRadius | float | Increase the shadow. Value > 0 increases shadow, < 0 decreases shadow |
|
||||
|
||||
Three functions are used to create a ViewShadow:
|
||||
Three functions are used to create a ShadowProperty:
|
||||
|
||||
func NewViewShadow(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ViewShadow
|
||||
func NewInsetViewShadow(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ViewShadow
|
||||
func NewShadowWithParams(params Params) ViewShadow
|
||||
func NewShadowProperty(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ShadowProperty
|
||||
func NewInsetShadowProperty(offsetX, offsetY, blurRadius, spread-radius SizeUnit, color Color) ShadowProperty
|
||||
func NewShadowWithParams(params Params) ShadowProperty
|
||||
|
||||
The NewViewShadow function creates an outer shadow (Inset == false),
|
||||
NewInsetViewShadow - an inner one (Inset == true).
|
||||
The NewShadowProperty function creates an outer shadow (Inset == false),
|
||||
NewInsetShadowProperty - an inner one (Inset == true).
|
||||
The NewShadowWithParams function is used when constants must be used as parameters.
|
||||
For example:
|
||||
|
||||
|
@ -1053,16 +1053,16 @@ For example:
|
|||
rui.Dilation : 16.0,
|
||||
})
|
||||
|
||||
ViewShadow, ViewShadow array, and ViewShadow textual representation can be assigned as a value to the "shadow" property.
|
||||
ShadowProperty, ShadowProperty array, and ShadowProperty textual representation can be assigned as a value to the "shadow" property.
|
||||
|
||||
The ViewShadow text representation has the following format:
|
||||
The ShadowProperty text representation has the following format:
|
||||
|
||||
_{ color = <color> [, x-offset = <offset>] [, y-offset = <offset>] [, blur = <radius>]
|
||||
[, spread-radius = <increase>] [, inset = <type>] }
|
||||
|
||||
You can get the value of "shadow" property using the function
|
||||
|
||||
func GetViewShadows(view View, subviewID ...string) []ViewShadow
|
||||
func GetShadowPropertys(view View, subviewID ...string) []ShadowProperty
|
||||
|
||||
If no shadow is specified, then this function will return an empty array
|
||||
|
||||
|
@ -1425,7 +1425,7 @@ The argument lists the effects to apply. The following effects are possible:
|
|||
| "blur" | Blur | float64 0…10000px | Gaussian blur |
|
||||
| "brightness" | Brightness | float64 0…10000% | Brightness change |
|
||||
| "contrast" | Contrast | float64 0…10000% | Contrast change |
|
||||
| "drop-shadow" | DropShadow | []ViewShadow | Adding shadow |
|
||||
| "drop-shadow" | DropShadow | []ShadowProperty | Adding shadow |
|
||||
| "grayscale" | Grayscale | float64 0…100% | Converting to grayscale |
|
||||
| "hue-rotate" | HueRotate | AngleUnit | Hue rotation |
|
||||
| "invert" | Invert | float64 0…100% | Invert colors |
|
||||
|
@ -1686,14 +1686,14 @@ You can get the value of this property using the function
|
|||
#### "text-shadow" property
|
||||
|
||||
The "text-shadow" property allows you to set shadows for the text. There may be several shadows.
|
||||
The shadow is described using the ViewShadow interface (see above, section "The 'shadow' property").
|
||||
The shadow is described using the ShadowProperty interface (see above, section "The 'shadow' property").
|
||||
For text shadow, only the "color", "x-offset", "y-offset" and "blur" properties are used.
|
||||
The "inset" and "spread-radius" properties are ignored (i.e. setting them is not an error, they just have no effect on the text shadow).
|
||||
|
||||
To create a ViewShadow for the text shadow, the following functions are used:
|
||||
To create a ShadowProperty for the text shadow, the following functions are used:
|
||||
|
||||
func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ViewShadow
|
||||
func NewShadowWithParams(params Params) ViewShadow
|
||||
func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ShadowProperty
|
||||
func NewShadowWithParams(params Params) ShadowProperty
|
||||
|
||||
The NewShadowWithParams function is used when constants must be used as parameters. For example:
|
||||
|
||||
|
@ -1702,11 +1702,11 @@ The NewShadowWithParams function is used when constants must be used as paramete
|
|||
rui.BlurRadius: 8.0,
|
||||
})
|
||||
|
||||
ViewShadow, ViewShadow array, ViewShadow textual representation can be assigned as a value to the "text-shadow" property (see above, section "The 'shadow' property").
|
||||
ShadowProperty, ShadowProperty array, ShadowProperty textual representation can be assigned as a value to the "text-shadow" property (see above, section "The 'shadow' property").
|
||||
|
||||
You can get the value of this property using the function
|
||||
|
||||
func GetTextShadows(view View, subviewID ...string) []ViewShadow
|
||||
func GetTextShadows(view View, subviewID ...string) []ShadowProperty
|
||||
|
||||
If no shadow is specified, then this function will return an empty array
|
||||
|
||||
|
|
4
popup.go
4
popup.go
|
@ -363,7 +363,7 @@ func (arrow *popupArrow) createView(popupView View) View {
|
|||
|
||||
params := Params{BackgroundColor: GetBackgroundColor(popupView)}
|
||||
|
||||
if shadow := GetViewShadows(popupView); shadow != nil {
|
||||
if shadow := GetShadowPropertys(popupView); shadow != nil {
|
||||
params[Shadow] = shadow
|
||||
}
|
||||
|
||||
|
@ -554,7 +554,7 @@ func (popup *popupData) init(view View, popupParams Params) {
|
|||
CellVerticalAlign: StretchAlign,
|
||||
CellHorizontalAlign: StretchAlign,
|
||||
ClickEvent: func(View) {},
|
||||
Shadow: NewShadowWithParams(Params{
|
||||
Shadow: NewShadowProperty(Params{
|
||||
SpreadRadius: Px(4),
|
||||
Blur: Px(16),
|
||||
ColorTag: "@ruiPopupShadow",
|
||||
|
|
|
@ -964,15 +964,15 @@ const (
|
|||
// Adds shadow effects around a view's frame. A shadow is described by X and Y offsets relative to the element, blur,
|
||||
// spread radius and color.
|
||||
//
|
||||
// Supported types: `ViewShadow`, `[]ViewShadow`, `string`.
|
||||
// Supported types: `ShadowProperty`, `[]ShadowProperty`, `string`.
|
||||
//
|
||||
// Internal type is `[]ViewShadow`, other types converted to it during assignment.
|
||||
// See `ViewShadow` description for more details.
|
||||
// Internal type is `[]ShadowProperty`, other types converted to it during assignment.
|
||||
// See `ShadowProperty` description for more details.
|
||||
//
|
||||
// Conversion rules:
|
||||
// `[]ViewShadow` - stored as is. no conversion performed.
|
||||
// `ViewShadow` - converted to `[]ViewShadow` during assignment.
|
||||
// `string` - must contain a string representation of `ViewShadow`
|
||||
// `[]ShadowProperty` - stored as is. no conversion performed.
|
||||
// `ShadowProperty` - converted to `[]ShadowProperty` during assignment.
|
||||
// `string` - must contain a string representation of `ShadowProperty`
|
||||
Shadow PropertyName = "shadow"
|
||||
|
||||
// FontName is the constant for "font-name" property tag.
|
||||
|
@ -1178,15 +1178,15 @@ const (
|
|||
// Used by `View`.
|
||||
// Specify shadow for the text.
|
||||
//
|
||||
// Supported types: `ViewShadow`, `[]ViewShadow`, `string`.
|
||||
// Supported types: `ShadowProperty`, `[]ShadowProperty`, `string`.
|
||||
//
|
||||
// Internal type is `[]ViewShadow`, other types converted to it during assignment.
|
||||
// See `ViewShadow` description for more details.
|
||||
// Internal type is `[]ShadowProperty`, other types converted to it during assignment.
|
||||
// See `ShadowProperty` description for more details.
|
||||
//
|
||||
// Conversion rules:
|
||||
// `[]ViewShadow` - stored as is. no conversion performed.
|
||||
// `ViewShadow` - converted to `[]ViewShadow` during assignment.
|
||||
// `string` - must contain a string representation of `ViewShadow`
|
||||
// `[]ShadowProperty` - stored as is. no conversion performed.
|
||||
// `ShadowProperty` - converted to `[]ShadowProperty` during assignment.
|
||||
// `string` - must contain a string representation of `ShadowProperty`
|
||||
TextShadow PropertyName = "text-shadow"
|
||||
|
||||
// TextWrap is the constant for "text-wrap" property tag.
|
||||
|
|
103
shadow.go
103
shadow.go
|
@ -5,11 +5,11 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
// Constants for [ViewShadow] specific properties
|
||||
// Constants for [ShadowProperty] specific properties
|
||||
const (
|
||||
// ColorTag is the constant for "color" property tag.
|
||||
//
|
||||
// Used by `ColumnSeparatorProperty`, `BorderProperty`, `OutlineProperty`, `ViewShadow`.
|
||||
// Used by `ColumnSeparatorProperty`, `BorderProperty`, `OutlineProperty`, `ShadowProperty`.
|
||||
//
|
||||
// Usage in `ColumnSeparatorProperty`:
|
||||
// Line color.
|
||||
|
@ -35,7 +35,7 @@ const (
|
|||
// Internal type is `Color`, other types converted to it during assignment.
|
||||
// See `Color` description for more details.
|
||||
//
|
||||
// Usage in `ViewShadow`:
|
||||
// Usage in `ShadowProperty`:
|
||||
// Color property of the shadow.
|
||||
//
|
||||
// Supported types: `Color`, `string`.
|
||||
|
@ -46,7 +46,7 @@ const (
|
|||
|
||||
// Inset is the constant for "inset" property tag.
|
||||
//
|
||||
// Used by `ViewShadow`.
|
||||
// Used by `ShadowProperty`.
|
||||
// Controls whether to draw shadow inside the frame or outside. Inset shadows are drawn inside the border(even transparent
|
||||
// ones), above the background, but below content.
|
||||
//
|
||||
|
@ -59,7 +59,7 @@ const (
|
|||
|
||||
// XOffset is the constant for "x-offset" property tag.
|
||||
//
|
||||
// Used by `ViewShadow`.
|
||||
// Used by `ShadowProperty`.
|
||||
// Determines the shadow horizontal offset. Negative values place the shadow to the left of the element.
|
||||
//
|
||||
// Supported types: `SizeUnit`, `SizeFunc`, `string`, `float`, `int`.
|
||||
|
@ -70,7 +70,7 @@ const (
|
|||
|
||||
// YOffset is the constant for "y-offset" property tag.
|
||||
//
|
||||
// Used by `ViewShadow`.
|
||||
// Used by `ShadowProperty`.
|
||||
// Determines the shadow vertical offset. Negative values place the shadow above the element.
|
||||
//
|
||||
// Supported types: `SizeUnit`, `SizeFunc`, `string`, `float`, `int`.
|
||||
|
@ -81,7 +81,7 @@ const (
|
|||
|
||||
// BlurRadius is the constant for "blur" property tag.
|
||||
//
|
||||
// Used by `ViewShadow`.
|
||||
// Used by `ShadowProperty`.
|
||||
// Determines the radius of the blur effect. The larger this value, the bigger the blur, so the shadow becomes bigger and
|
||||
// lighter. Negative values are not allowed.
|
||||
//
|
||||
|
@ -93,7 +93,7 @@ const (
|
|||
|
||||
// SpreadRadius is the constant for "spread-radius" property tag.
|
||||
//
|
||||
// Used by `ViewShadow`.
|
||||
// Used by `ShadowProperty`.
|
||||
// Positive values will cause the shadow to expand and grow bigger, negative values will cause the shadow to shrink.
|
||||
//
|
||||
// Supported types: `SizeUnit`, `SizeFunc`, `string`, `float`, `int`.
|
||||
|
@ -103,8 +103,8 @@ const (
|
|||
SpreadRadius PropertyName = "spread-radius"
|
||||
)
|
||||
|
||||
// ViewShadow contains attributes of the view shadow
|
||||
type ViewShadow interface {
|
||||
// ShadowProperty contains attributes of the view shadow
|
||||
type ShadowProperty interface {
|
||||
Properties
|
||||
fmt.Stringer
|
||||
stringWriter
|
||||
|
@ -113,11 +113,11 @@ type ViewShadow interface {
|
|||
visible(session Session) bool
|
||||
}
|
||||
|
||||
type viewShadowData struct {
|
||||
type shadowPropertyData struct {
|
||||
dataProperty
|
||||
}
|
||||
|
||||
// NewViewShadow create the new shadow for a view. Arguments:
|
||||
// NewShadow create the new shadow property for a view. Arguments:
|
||||
//
|
||||
// offsetX, offsetY is x and y offset of the shadow;
|
||||
//
|
||||
|
@ -126,17 +126,18 @@ type viewShadowData struct {
|
|||
// spreadRadius is the spread radius of the shadow;
|
||||
//
|
||||
// color is the color of the shadow.
|
||||
func NewViewShadow(offsetX, offsetY, blurRadius, spreadRadius SizeUnit, color Color) ViewShadow {
|
||||
return NewShadowWithParams(Params{
|
||||
XOffset: offsetX,
|
||||
YOffset: offsetY,
|
||||
func NewShadow[xOffsetType SizeUnit | int | float64, yOffsetType SizeUnit | int | float64, blurType SizeUnit | int | float64, spreadType SizeUnit | int | float64](
|
||||
xOffset xOffsetType, yOffset yOffsetType, blurRadius blurType, spreadRadius spreadType, color Color) ShadowProperty {
|
||||
return NewShadowProperty(Params{
|
||||
XOffset: xOffset,
|
||||
YOffset: yOffset,
|
||||
BlurRadius: blurRadius,
|
||||
SpreadRadius: spreadRadius,
|
||||
ColorTag: color,
|
||||
})
|
||||
}
|
||||
|
||||
// NewInsetViewShadow create the new inset shadow for a view. Arguments:
|
||||
// NewInsetShadow create the new inset shadow property for a view. Arguments:
|
||||
//
|
||||
// offsetX, offsetY is x and y offset of the shadow;
|
||||
//
|
||||
|
@ -145,10 +146,11 @@ func NewViewShadow(offsetX, offsetY, blurRadius, spreadRadius SizeUnit, color Co
|
|||
// spreadRadius is the spread radius of the shadow;
|
||||
//
|
||||
// color is the color of the shadow.
|
||||
func NewInsetViewShadow(offsetX, offsetY, blurRadius, spreadRadius SizeUnit, color Color) ViewShadow {
|
||||
return NewShadowWithParams(Params{
|
||||
XOffset: offsetX,
|
||||
YOffset: offsetY,
|
||||
func NewInsetShadow[xOffsetType SizeUnit | int | float64, yOffsetType SizeUnit | int | float64, blurType SizeUnit | int | float64, spreadType SizeUnit | int | float64](
|
||||
xOffset xOffsetType, yOffset yOffsetType, blurRadius blurType, spreadRadius spreadType, color Color) ShadowProperty {
|
||||
return NewShadowProperty(Params{
|
||||
XOffset: xOffset,
|
||||
YOffset: yOffset,
|
||||
BlurRadius: blurRadius,
|
||||
SpreadRadius: spreadRadius,
|
||||
ColorTag: color,
|
||||
|
@ -156,23 +158,24 @@ func NewInsetViewShadow(offsetX, offsetY, blurRadius, spreadRadius SizeUnit, col
|
|||
})
|
||||
}
|
||||
|
||||
// NewTextShadow create the new text shadow. Arguments:
|
||||
// NewTextShadow create the new text shadow property. Arguments:
|
||||
//
|
||||
// offsetX, offsetY is the x- and y-offset of the shadow;
|
||||
//
|
||||
// blurRadius is the blur radius of the shadow;
|
||||
//
|
||||
// color is the color of the shadow.
|
||||
func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ViewShadow {
|
||||
return NewShadowWithParams(Params{
|
||||
XOffset: offsetX,
|
||||
YOffset: offsetY,
|
||||
func NewTextShadow[xOffsetType SizeUnit | int | float64, yOffsetType SizeUnit | int | float64, blurType SizeUnit | int | float64](
|
||||
xOffset xOffsetType, yOffset yOffsetType, blurRadius blurType, color Color) ShadowProperty {
|
||||
return NewShadowProperty(Params{
|
||||
XOffset: xOffset,
|
||||
YOffset: yOffset,
|
||||
BlurRadius: blurRadius,
|
||||
ColorTag: color,
|
||||
})
|
||||
}
|
||||
|
||||
// NewShadowWithParams create the new shadow for a view.
|
||||
// NewShadowProperty create the new shadow property for a view.
|
||||
// The following properties can be used:
|
||||
//
|
||||
// "color" (ColorTag). Determines the color of the shadow (Color);
|
||||
|
@ -186,8 +189,8 @@ func NewTextShadow(offsetX, offsetY, blurRadius SizeUnit, color Color) ViewShado
|
|||
// "spread-radius" (SpreadRadius). Positive values (SizeUnit) will cause the shadow to expand and grow bigger, negative values will cause the shadow to shrink;
|
||||
//
|
||||
// "inset" (Inset). Controls (bool) whether to draw shadow inside the frame or outside.
|
||||
func NewShadowWithParams(params Params) ViewShadow {
|
||||
shadow := new(viewShadowData)
|
||||
func NewShadowProperty(params Params) ShadowProperty {
|
||||
shadow := new(shadowPropertyData)
|
||||
shadow.init()
|
||||
|
||||
if params != nil {
|
||||
|
@ -200,20 +203,20 @@ func NewShadowWithParams(params Params) ViewShadow {
|
|||
return shadow
|
||||
}
|
||||
|
||||
// parseViewShadow parse DataObject and create ViewShadow object
|
||||
func parseViewShadow(object DataObject) ViewShadow {
|
||||
shadow := new(viewShadowData)
|
||||
// parseShadowProperty parse DataObject and create ShadowProperty object
|
||||
func parseShadowProperty(object DataObject) ShadowProperty {
|
||||
shadow := new(shadowPropertyData)
|
||||
shadow.init()
|
||||
parseProperties(shadow, object)
|
||||
return shadow
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) init() {
|
||||
func (shadow *shadowPropertyData) init() {
|
||||
shadow.dataProperty.init()
|
||||
shadow.supportedProperties = []PropertyName{ColorTag, Inset, XOffset, YOffset, BlurRadius, SpreadRadius}
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) cssStyle(buffer *strings.Builder, session Session, lead string) bool {
|
||||
func (shadow *shadowPropertyData) cssStyle(buffer *strings.Builder, session Session, lead string) bool {
|
||||
color, _ := colorProperty(shadow, ColorTag, session)
|
||||
offsetX, _ := sizeProperty(shadow, XOffset, session)
|
||||
offsetY, _ := sizeProperty(shadow, YOffset, session)
|
||||
|
@ -245,7 +248,7 @@ func (shadow *viewShadowData) cssStyle(buffer *strings.Builder, session Session,
|
|||
return true
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) cssTextStyle(buffer *strings.Builder, session Session, lead string) bool {
|
||||
func (shadow *shadowPropertyData) cssTextStyle(buffer *strings.Builder, session Session, lead string) bool {
|
||||
color, _ := colorProperty(shadow, ColorTag, session)
|
||||
offsetX, _ := sizeProperty(shadow, XOffset, session)
|
||||
offsetY, _ := sizeProperty(shadow, YOffset, session)
|
||||
|
@ -269,7 +272,7 @@ func (shadow *viewShadowData) cssTextStyle(buffer *strings.Builder, session Sess
|
|||
return true
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) visible(session Session) bool {
|
||||
func (shadow *shadowPropertyData) visible(session Session) bool {
|
||||
color, _ := colorProperty(shadow, ColorTag, session)
|
||||
offsetX, _ := sizeProperty(shadow, XOffset, session)
|
||||
offsetY, _ := sizeProperty(shadow, YOffset, session)
|
||||
|
@ -286,11 +289,11 @@ func (shadow *viewShadowData) visible(session Session) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) String() string {
|
||||
func (shadow *shadowPropertyData) String() string {
|
||||
return runStringWriter(shadow)
|
||||
}
|
||||
|
||||
func (shadow *viewShadowData) writeString(buffer *strings.Builder, indent string) {
|
||||
func (shadow *shadowPropertyData) writeString(buffer *strings.Builder, indent string) {
|
||||
buffer.WriteString("_{ ")
|
||||
comma := false
|
||||
for _, tag := range shadow.AllTags() {
|
||||
|
@ -315,10 +318,10 @@ func setShadowProperty(properties Properties, tag PropertyName, value any) bool
|
|||
}
|
||||
|
||||
switch value := value.(type) {
|
||||
case ViewShadow:
|
||||
properties.setRaw(tag, []ViewShadow{value})
|
||||
case ShadowProperty:
|
||||
properties.setRaw(tag, []ShadowProperty{value})
|
||||
|
||||
case []ViewShadow:
|
||||
case []ShadowProperty:
|
||||
if len(value) == 0 {
|
||||
properties.setRaw(tag, nil)
|
||||
} else {
|
||||
|
@ -329,13 +332,13 @@ func setShadowProperty(properties Properties, tag PropertyName, value any) bool
|
|||
if !value.IsObject() {
|
||||
return false
|
||||
}
|
||||
properties.setRaw(tag, []ViewShadow{parseViewShadow(value.Object())})
|
||||
properties.setRaw(tag, []ShadowProperty{parseShadowProperty(value.Object())})
|
||||
|
||||
case []DataValue:
|
||||
shadows := []ViewShadow{}
|
||||
shadows := []ShadowProperty{}
|
||||
for _, data := range value {
|
||||
if data.IsObject() {
|
||||
shadows = append(shadows, parseViewShadow(data.Object()))
|
||||
shadows = append(shadows, parseShadowProperty(data.Object()))
|
||||
}
|
||||
}
|
||||
if len(shadows) == 0 {
|
||||
|
@ -349,7 +352,7 @@ func setShadowProperty(properties Properties, tag PropertyName, value any) bool
|
|||
notCompatibleType(tag, value)
|
||||
return false
|
||||
}
|
||||
properties.setRaw(tag, []ViewShadow{parseViewShadow(obj)})
|
||||
properties.setRaw(tag, []ShadowProperty{parseShadowProperty(obj)})
|
||||
|
||||
default:
|
||||
notCompatibleType(tag, value)
|
||||
|
@ -359,17 +362,17 @@ func setShadowProperty(properties Properties, tag PropertyName, value any) bool
|
|||
return true
|
||||
}
|
||||
|
||||
func getShadows(properties Properties, tag PropertyName) []ViewShadow {
|
||||
func getShadows(properties Properties, tag PropertyName) []ShadowProperty {
|
||||
if value := properties.Get(tag); value != nil {
|
||||
switch value := value.(type) {
|
||||
case []ViewShadow:
|
||||
case []ShadowProperty:
|
||||
return value
|
||||
|
||||
case ViewShadow:
|
||||
return []ViewShadow{value}
|
||||
case ShadowProperty:
|
||||
return []ShadowProperty{value}
|
||||
}
|
||||
}
|
||||
return []ViewShadow{}
|
||||
return []ShadowProperty{}
|
||||
}
|
||||
|
||||
func shadowCSS(properties Properties, tag PropertyName, session Session) string {
|
||||
|
|
|
@ -47,17 +47,17 @@ const (
|
|||
// Used by `ViewFilter`.
|
||||
// Applies a drop shadow effect to the input image. A drop shadow is effectively a blurred, offset version of the input
|
||||
// image's alpha mask drawn in a particular color, composited below the image. Shadow parameters are set using the
|
||||
// `ViewShadow` interface.
|
||||
// `ShadowProperty` interface.
|
||||
//
|
||||
// Supported types: `[]ViewShadow`, `ViewShadow`, `string`.
|
||||
// Supported types: `[]ShadowProperty`, `ShadowProperty`, `string`.
|
||||
//
|
||||
// Internal type is `[]ViewShadow`, other types converted to it during assignment.
|
||||
// See `ViewShadow` description for more details.
|
||||
// Internal type is `[]ShadowProperty`, other types converted to it during assignment.
|
||||
// See `ShadowProperty` description for more details.
|
||||
//
|
||||
// Conversion rules:
|
||||
// `[]ViewShadow` - stored as is, no conversion performed.
|
||||
// `ViewShadow` - converted to `[]ViewShadow`.
|
||||
// `string` - string representation of `ViewShadow`. Example: "_{blur = 1em, color = black, spread-radius = 0.5em}".
|
||||
// `[]ShadowProperty` - stored as is, no conversion performed.
|
||||
// `ShadowProperty` - converted to `[]ShadowProperty`.
|
||||
// `string` - string representation of `ShadowProperty`. Example: "_{blur = 1em, color = black, spread-radius = 0.5em}".
|
||||
DropShadow PropertyName = "drop-shadow"
|
||||
|
||||
// Grayscale is the constant for "grayscale" property tag.
|
||||
|
|
|
@ -560,7 +560,7 @@ func supportedPropertyValue(value any) bool {
|
|||
case int:
|
||||
case stringWriter:
|
||||
case fmt.Stringer:
|
||||
case []ViewShadow:
|
||||
case []ShadowProperty:
|
||||
case []View:
|
||||
case []any:
|
||||
case []BackgroundElement:
|
||||
|
@ -671,7 +671,7 @@ func writePropertyValue(buffer *strings.Builder, tag PropertyName, value any, in
|
|||
case fmt.Stringer:
|
||||
writeString(value.String())
|
||||
|
||||
case []ViewShadow:
|
||||
case []ShadowProperty:
|
||||
switch len(value) {
|
||||
case 0:
|
||||
// do nothing
|
||||
|
|
17
viewUtils.go
17
viewUtils.go
|
@ -203,6 +203,13 @@ func GetWidth(view View, subviewID ...string) SizeUnit {
|
|||
return sizeStyledProperty(view, subviewID, Width, false)
|
||||
}
|
||||
|
||||
func SetWidth[T SizeUnit | float64 | float32 | int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64](size T, view View, subviewID ...string) bool {
|
||||
if view = getSubview(view, subviewID); view != nil {
|
||||
return view.Set(Width, size)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetHeight returns the subview height.
|
||||
// If the second argument (subviewID) is not specified or it is "" then a height of the first argument (view) is returned
|
||||
func GetHeight(view View, subviewID ...string) SizeUnit {
|
||||
|
@ -326,22 +333,22 @@ func GetOutlineOffset(view View, subviewID ...string) SizeUnit {
|
|||
return sizeStyledProperty(view, subviewID, OutlineOffset, false)
|
||||
}
|
||||
|
||||
// GetViewShadows returns shadows of the subview.
|
||||
// GetShadowPropertys returns shadows of the subview.
|
||||
// If the second argument (subviewID) is not specified or it is "" then shadows of the first argument (view) is returned.
|
||||
func GetViewShadows(view View, subviewID ...string) []ViewShadow {
|
||||
func GetShadowPropertys(view View, subviewID ...string) []ShadowProperty {
|
||||
view = getSubview(view, subviewID)
|
||||
if view == nil {
|
||||
return []ViewShadow{}
|
||||
return []ShadowProperty{}
|
||||
}
|
||||
return getShadows(view, Shadow)
|
||||
}
|
||||
|
||||
// GetTextShadows returns text shadows of the subview.
|
||||
// If the second argument (subviewID) is not specified or it is "" then shadows of the first argument (view) is returned.
|
||||
func GetTextShadows(view View, subviewID ...string) []ViewShadow {
|
||||
func GetTextShadows(view View, subviewID ...string) []ShadowProperty {
|
||||
view = getSubview(view, subviewID)
|
||||
if view == nil {
|
||||
return []ViewShadow{}
|
||||
return []ShadowProperty{}
|
||||
}
|
||||
return getShadows(view, TextShadow)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue