Spaces:
Sleeping
Sleeping
File size: 3,792 Bytes
14654b5 6d689b7 14654b5 301fa17 14654b5 6d689b7 14654b5 6d689b7 301fa17 14654b5 6d689b7 14654b5 6d689b7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import streamlit as st
import time
from PIL import Image, ImageDraw, ImageFont
import io
class AnimationEngineer:
def __init__(self):
self.colors = {
'Parkinson': '#FFB3BA', # Light Pink
'Alzheimer': '#BAFFC9', # Light Green
'Treatment A': '#BAE1FF', # Light Blue
'Treatment B': '#FFFFBA', # Light Yellow
'physiotherapy': '#FFD700', # Gold
'cognitive therapy': '#DDA0DD' # Plum
}
self.frame_width = 600
self.frame_height = 400
def display_care_plan_animation(self, final_plan):
st.write("Visualizing Care Plan...")
steps = final_plan.split(", ")
# Create all frames
frames = self.create_all_frames(steps)
# Create a placeholder for our animation
animation_placeholder = st.empty()
# Display frames
for i, frame in enumerate(frames):
animation_placeholder.image(frame)
progress = int((i + 1) / len(frames) * 100)
st.progress(progress)
time.sleep(0.5) # Adjust speed of animation
st.success("Care Plan Visualization Complete!")
st.balloons()
def create_all_frames(self, steps):
frames = []
# Create intro frame
intro_frame = self.create_intro_frame()
frames.append(intro_frame)
# Create step frames
for i, step in enumerate(steps):
step_frame = self.create_step_frame(step, i+1, len(steps))
frames.append(step_frame)
# Create transition frames
transition_frames = self.create_transition_frames()
frames.extend(transition_frames)
# Create final frame
final_frame = self.create_final_frame()
frames.append(final_frame)
return frames
def create_intro_frame(self):
img = Image.new('RGB', (self.frame_width, self.frame_height), color='white')
d = ImageDraw.Draw(img)
font = ImageFont.load_default()
d.text((self.frame_width//2, self.frame_height//2), "Care Plan Animation", fill='black', font=font, anchor="mm")
return img
def create_step_frame(self, step, step_num, total_steps):
img = Image.new('RGB', (self.frame_width, self.frame_height), color='white')
d = ImageDraw.Draw(img)
color = next((self.colors[key] for key in self.colors if key.lower() in step.lower()), '#FFFFFF')
d.rectangle([50, 50, self.frame_width-50, self.frame_height-50], fill=color, outline='black')
font = ImageFont.load_default()
d.text((self.frame_width//2, 70), f"Step {step_num}/{total_steps}", fill='black', font=font, anchor="mm")
d.text((self.frame_width//2, self.frame_height//2), step, fill='black', font=font, anchor="mm")
return img
def create_transition_frames(self):
frames = []
for i in range(10): # 10 transition frames
img = Image.new('RGB', (self.frame_width, self.frame_height), color='white')
d = ImageDraw.Draw(img)
size = 20 + i * 5 # Growing circle
d.ellipse([self.frame_width//2 - size, self.frame_height//2 - size,
self.frame_width//2 + size, self.frame_height//2 + size],
fill='red')
frames.append(img)
return frames
def create_final_frame(self):
img = Image.new('RGB', (self.frame_width, self.frame_height), color='white')
d = ImageDraw.Draw(img)
font = ImageFont.load_default()
d.text((self.frame_width//2, self.frame_height//2), "Care Plan Complete!", fill='black', font=font, anchor="mm")
return img |