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