forked from mbk-lab/rui_orig
Added mix-blend-mode and background-blend-mode
This commit is contained in:
parent
9fe570ec22
commit
e5842180ef
|
@ -1,3 +1,10 @@
|
||||||
|
# v.11.0
|
||||||
|
|
||||||
|
* Added "order", "background-blend-mode", and "mix-blend-mode" properties
|
||||||
|
* Added GetOrder, GetBackgroundBlendMode, and GetMixBlendMode functions
|
||||||
|
* ClientItem, SetClientItem, and RemoveAllClientItems method added to Session interface
|
||||||
|
* PropertyWithTag method of DataObject interface renamed to PropertyByTag
|
||||||
|
|
||||||
# v.10.0
|
# v.10.0
|
||||||
|
|
||||||
* The Canvas.TextWidth method replaced by Canvas.TextMetrics
|
* The Canvas.TextWidth method replaced by Canvas.TextMetrics
|
||||||
|
|
|
@ -674,4 +674,20 @@ const (
|
||||||
// The "Order" int property sets the order to layout an item in a ListLayout or GridLayout container.
|
// The "Order" int property sets the order to layout an item in a ListLayout or GridLayout container.
|
||||||
// Items in a container are sorted by ascending order value and then by their source code order.
|
// Items in a container are sorted by ascending order value and then by their source code order.
|
||||||
Order = "Order"
|
Order = "Order"
|
||||||
|
|
||||||
|
// BackgroundBlendMode is the constant for the "background-blend-mode" property tag.
|
||||||
|
// The "background-blend-mode" int property sets how an element's background images should blend
|
||||||
|
// with each other and with the element's background color.
|
||||||
|
// Valid values are "normal" (0), "multiply" (1), "screen" (2), "overlay" (3), "darken" (4), "lighten" (5),
|
||||||
|
// "color-dodge" (6), "color-burn" (7), "hard-light" (8), "soft-light" (9), "difference" (10),
|
||||||
|
// "exclusion" (11), "hue" (12), "saturation" (13), "color" (14), "luminosity" (15).
|
||||||
|
BackgroundBlendMode = "background-blend-mode"
|
||||||
|
|
||||||
|
// MixBlendMode is the constant for the "mix-blend-mode" property tag.
|
||||||
|
// The "mix-blend-mode" int property sets how a view's content should blend
|
||||||
|
// with the content of the view's parent and the view's background.
|
||||||
|
// Valid values are "normal" (0), "multiply" (1), "screen" (2), "overlay" (3), "darken" (4), "lighten" (5),
|
||||||
|
// "color-dodge" (6), "color-burn" (7), "hard-light" (8), "soft-light" (9), "difference" (10),
|
||||||
|
// "exclusion" (11), "hue" (12), "saturation" (13), "color" (14), "luminosity" (15).
|
||||||
|
MixBlendMode = "mix-blend-mode"
|
||||||
)
|
)
|
||||||
|
|
|
@ -448,6 +448,16 @@ var enumProperties = map[string]struct {
|
||||||
"",
|
"",
|
||||||
[]string{"none", "top", "right", "bottom", "left"},
|
[]string{"none", "top", "right", "bottom", "left"},
|
||||||
},
|
},
|
||||||
|
MixBlendMode: {
|
||||||
|
[]string{"normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"},
|
||||||
|
MixBlendMode,
|
||||||
|
[]string{"normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"},
|
||||||
|
},
|
||||||
|
BackgroundBlendMode: {
|
||||||
|
[]string{"normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"},
|
||||||
|
BackgroundBlendMode,
|
||||||
|
[]string{"normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func notCompatibleType(tag string, value any) {
|
func notCompatibleType(tag string, value any) {
|
||||||
|
|
|
@ -307,4 +307,85 @@ const (
|
||||||
// "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later.
|
// "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later.
|
||||||
// This may cause views to appear out-of-order, when doing so would fill in holes left by larger views.
|
// This may cause views to appear out-of-order, when doing so would fill in holes left by larger views.
|
||||||
ColumnDenseAutoFlow = 3
|
ColumnDenseAutoFlow = 3
|
||||||
|
|
||||||
|
// BlendNormal - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the top color, regardless of what the bottom color is.
|
||||||
|
// The effect is like two opaque pieces of paper overlapping.
|
||||||
|
BlendNormal = 0
|
||||||
|
|
||||||
|
// BlendMultiply - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of multiplying the top and bottom colors.
|
||||||
|
// A black layer leads to a black final layer, and a white layer leads to no change.
|
||||||
|
// The effect is like two images printed on transparent film overlapping.
|
||||||
|
BlendMultiply = 1
|
||||||
|
|
||||||
|
// BlendScreen - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of inverting the colors, multiplying them, and inverting that value.
|
||||||
|
// A black layer leads to no change, and a white layer leads to a white final layer.
|
||||||
|
// The effect is like two images shone onto a projection screen.
|
||||||
|
BlendScreen = 2
|
||||||
|
|
||||||
|
// BlendOverlay - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of multiply if the bottom color is darker, or screen if the bottom color is lighter.
|
||||||
|
// This blend mode is equivalent to hard-light but with the layers swapped.
|
||||||
|
BlendOverlay = 3
|
||||||
|
|
||||||
|
// BlendDarken - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is composed of the darkest values of each color channel.
|
||||||
|
BlendDarken = 4
|
||||||
|
|
||||||
|
// BlendLighten - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is composed of the lightest values of each color channel.
|
||||||
|
BlendLighten = 5
|
||||||
|
|
||||||
|
// BlendColorDodge - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of dividing the bottom color by the inverse of the top color.
|
||||||
|
// A black foreground leads to no change. A foreground with the inverse color of the backdrop leads to a fully lit color.
|
||||||
|
// This blend mode is similar to screen, but the foreground need only be as light as the inverse of the backdrop to create a fully lit color.
|
||||||
|
BlendColorDodge = 6
|
||||||
|
|
||||||
|
// BlendColorBurn - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of inverting the bottom color, dividing the value by the top color, and inverting that value.
|
||||||
|
// A white foreground leads to no change. A foreground with the inverse color of the backdrop leads to a black final image.
|
||||||
|
// This blend mode is similar to multiply, but the foreground need only be as dark as the inverse of the backdrop to make the final image black.
|
||||||
|
BlendColorBurn = 7
|
||||||
|
|
||||||
|
// BlendHardLight - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of multiply if the top color is darker, or screen if the top color is lighter.
|
||||||
|
// This blend mode is equivalent to overlay but with the layers swapped. The effect is similar to shining a harsh spotlight on the backdrop.
|
||||||
|
BlendHardLight = 8
|
||||||
|
|
||||||
|
// BlendSoftLight - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is similar to hard-light, but softer. This blend mode behaves similar to hard-light.
|
||||||
|
// The effect is similar to shining a diffused spotlight on the backdrop*.*
|
||||||
|
BlendSoftLight = 9
|
||||||
|
|
||||||
|
// BlendDifference - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is the result of subtracting the darker of the two colors from the lighter one.
|
||||||
|
// A black layer has no effect, while a white layer inverts the other layer's color.
|
||||||
|
BlendDifference = 10
|
||||||
|
|
||||||
|
// BlendExclusion - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color is similar to difference, but with less contrast.
|
||||||
|
// As with difference, a black layer has no effect, while a white layer inverts the other layer's color.
|
||||||
|
BlendExclusion = 11
|
||||||
|
|
||||||
|
// BlendHue - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color has the hue of the top color, while using the saturation and luminosity of the bottom color.
|
||||||
|
BlendHue = 12
|
||||||
|
|
||||||
|
// BlendSaturation - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color has the saturation of the top color, while using the hue and luminosity of the bottom color.
|
||||||
|
// A pure gray backdrop, having no saturation, will have no effect.
|
||||||
|
BlendSaturation = 13
|
||||||
|
|
||||||
|
// BlendColor - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color has the hue and saturation of the top color, while using the luminosity of the bottom color.
|
||||||
|
// The effect preserves gray levels and can be used to colorize the foreground.
|
||||||
|
BlendColor = 14
|
||||||
|
|
||||||
|
// BlendLuminosity - value of the "mix-blend-mode" and "background-blend-mode" property:
|
||||||
|
// The final color has the luminosity of the top color, while using the hue and saturation of the bottom color.
|
||||||
|
// This blend mode is equivalent to BlendColor, but with the layers swapped.
|
||||||
|
BlendLuminosity = 15
|
||||||
)
|
)
|
||||||
|
|
|
@ -252,7 +252,7 @@ func (style *viewStyle) cssViewStyle(builder cssBuilder, session Session) {
|
||||||
for _, tag := range []string{
|
for _, tag := range []string{
|
||||||
Overflow, TextAlign, TextTransform, TextWeight, TextLineStyle, WritingMode, TextDirection,
|
Overflow, TextAlign, TextTransform, TextWeight, TextLineStyle, WritingMode, TextDirection,
|
||||||
VerticalTextOrientation, CellVerticalAlign, CellHorizontalAlign, GridAutoFlow, Cursor,
|
VerticalTextOrientation, CellVerticalAlign, CellHorizontalAlign, GridAutoFlow, Cursor,
|
||||||
WhiteSpace, WordBreak, TextOverflow, Float, TableVerticalAlign, Resize} {
|
WhiteSpace, WordBreak, TextOverflow, Float, TableVerticalAlign, Resize, MixBlendMode, BackgroundBlendMode} {
|
||||||
|
|
||||||
if data, ok := enumProperties[tag]; ok {
|
if data, ok := enumProperties[tag]; ok {
|
||||||
if tag != VerticalTextOrientation || (writingMode != VerticalLeftToRight && writingMode != VerticalRightToLeft) {
|
if tag != VerticalTextOrientation || (writingMode != VerticalLeftToRight && writingMode != VerticalRightToLeft) {
|
||||||
|
|
24
viewUtils.go
24
viewUtils.go
|
@ -896,3 +896,27 @@ func isUserSelect(view View) (bool, bool) {
|
||||||
|
|
||||||
return false, false
|
return false, false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMixBlendMode returns a "mix-blend-mode" of the subview. Returns one of next values:
|
||||||
|
//
|
||||||
|
// BlendNormal (0), BlendMultiply (1), BlendScreen (2), BlendOverlay (3), BlendDarken (4),
|
||||||
|
// BlendLighten (5), BlendColorDodge (6), BlendColorBurn (7), BlendHardLight (8),
|
||||||
|
// BlendSoftLight (9), BlendDifference (10), BlendExclusion (11), BlendHue (12),
|
||||||
|
// BlendSaturation (13), BlendColor (14), BlendLuminosity (15)
|
||||||
|
//
|
||||||
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
||||||
|
func GetMixBlendMode(view View, subviewID ...string) int {
|
||||||
|
return enumStyledProperty(view, subviewID, MixBlendMode, BlendNormal, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBackgroundBlendMode returns a "background-blend-mode" of the subview. Returns one of next values:
|
||||||
|
//
|
||||||
|
// BlendNormal (0), BlendMultiply (1), BlendScreen (2), BlendOverlay (3), BlendDarken (4),
|
||||||
|
// BlendLighten (5), BlendColorDodge (6), BlendColorBurn (7), BlendHardLight (8),
|
||||||
|
// BlendSoftLight (9), BlendDifference (10), BlendExclusion (11), BlendHue (12),
|
||||||
|
// BlendSaturation (13), BlendColor (14), BlendLuminosity (15)
|
||||||
|
//
|
||||||
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
||||||
|
func GetBackgroundBlendMode(view View, subviewID ...string) int {
|
||||||
|
return enumStyledProperty(view, subviewID, BackgroundBlendMode, BlendNormal, true)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue