Source code for carbonkivy.behaviors.elevation_behavior

from __future__ import annotations

__all__ = ("ElevationBehavior",)

from kivy.app import App
from kivy.event import EventDispatcher
from kivy.lang import Builder
from kivy.metrics import dp
from kivy.properties import ColorProperty, NumericProperty, VariableListProperty

Builder.load_string(
    """
<ElevationBehavior>:
    canvas.before:
        Color:
            rgba: self._shadow_color
        BoxShadow:
            size: self.size
            pos: (self.pos[0] + self.shadow_offset[0], self.pos[1] + self.shadow_offset[1]) if not isinstance(self, RelativeLayout) else (self.shadow_offset[0], self.shadow_offset[1])
            offset: self.shadow_offset
            blur_radius: self.shadow_blur_radius
""",
    filename="ElevationBehavior.kv",
)


[docs] class ElevationBehavior(EventDispatcher):
[docs] shadow_offset = VariableListProperty([dp(1), dp(-1.25)], length=2)
[docs] shadow_blur_radius = NumericProperty(0)
[docs] shadow_color = ColorProperty()
_shadow_color = ColorProperty() def __init__(self, *args, **kwargs) -> None: super(ElevationBehavior, self).__init__(*args, **kwargs)
[docs] def on_shadow_color(self, instance, value) -> None: self._shadow_color = value