Update app.py
Browse files
app.py
CHANGED
@@ -97,22 +97,38 @@ def generate_word_design(word, word_id, use_color=False):
|
|
97 |
}
|
98 |
|
99 |
if use_color:
|
100 |
-
|
|
|
101 |
style['animation-delay'] = f'{i * 0.15}s'
|
102 |
|
103 |
style_str = '; '.join([f'{k}: {v}' for k, v in style.items()])
|
104 |
styled_letter = f'<span class="styled-letter" style="{style_str}">{letter}</span>'
|
105 |
styled_letters.append(styled_letter)
|
106 |
|
107 |
-
# Create keyframes for movement animation
|
108 |
keyframes = f"""
|
109 |
<style>
|
110 |
@keyframes {animation_name} {{
|
111 |
-
0% {{
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}}
|
117 |
</style>
|
118 |
""" if use_color else ""
|
@@ -204,7 +220,7 @@ def trigger_movement(input_html):
|
|
204 |
# Replace each word with its completely new animated version
|
205 |
for i, word in enumerate(selected_words):
|
206 |
if i in original_word_designs:
|
207 |
-
# Generate COMPLETELY NEW design with color and animation
|
208 |
new_movement_design = generate_word_design(word, i, use_color=True)
|
209 |
# Replace the original design with the new one
|
210 |
updated_html = updated_html.replace(original_word_designs[i], new_movement_design, 1)
|
@@ -213,7 +229,7 @@ def trigger_movement(input_html):
|
|
213 |
|
214 |
# Create Gradio interface using Blocks
|
215 |
with gr.Blocks() as demo:
|
216 |
-
gr.Markdown("# Random Word Styler\nGenerate 5 random styled words that transform
|
217 |
|
218 |
generate_button = gr.Button("Generate Random Words", variant="primary")
|
219 |
output_html = gr.HTML()
|
|
|
97 |
}
|
98 |
|
99 |
if use_color:
|
100 |
+
# Animation plays once and stops (no infinite)
|
101 |
+
style['animation'] = f'{animation_name} 1.2s ease-in-out forwards'
|
102 |
style['animation-delay'] = f'{i * 0.15}s'
|
103 |
|
104 |
style_str = '; '.join([f'{k}: {v}' for k, v in style.items()])
|
105 |
styled_letter = f'<span class="styled-letter" style="{style_str}">{letter}</span>'
|
106 |
styled_letters.append(styled_letter)
|
107 |
|
108 |
+
# Create keyframes for movement animation - plays once and stops
|
109 |
keyframes = f"""
|
110 |
<style>
|
111 |
@keyframes {animation_name} {{
|
112 |
+
0% {{
|
113 |
+
transform: scale(1) rotate(0deg) skew({random.choice(skew_angles)});
|
114 |
+
opacity: 0.7;
|
115 |
+
}}
|
116 |
+
25% {{
|
117 |
+
transform: scale(1.3) rotate({random.choice(["-15deg", "15deg", "20deg"])}deg) skew({random.choice(skew_angles)});
|
118 |
+
opacity: 1;
|
119 |
+
}}
|
120 |
+
50% {{
|
121 |
+
transform: scale(0.9) rotate({random.choice(["-10deg", "10deg", "25deg"])}deg) skew({random.choice(skew_angles)});
|
122 |
+
opacity: 1;
|
123 |
+
}}
|
124 |
+
75% {{
|
125 |
+
transform: scale(1.2) rotate({random.choice(["-5deg", "5deg", "30deg"])}deg) skew({random.choice(skew_angles)});
|
126 |
+
opacity: 1;
|
127 |
+
}}
|
128 |
+
100% {{
|
129 |
+
transform: scale(1.1) rotate(0deg) skew({random.choice(skew_angles)});
|
130 |
+
opacity: 1;
|
131 |
+
}}
|
132 |
}}
|
133 |
</style>
|
134 |
""" if use_color else ""
|
|
|
220 |
# Replace each word with its completely new animated version
|
221 |
for i, word in enumerate(selected_words):
|
222 |
if i in original_word_designs:
|
223 |
+
# Generate COMPLETELY NEW design with color and animation (that stops)
|
224 |
new_movement_design = generate_word_design(word, i, use_color=True)
|
225 |
# Replace the original design with the new one
|
226 |
updated_html = updated_html.replace(original_word_designs[i], new_movement_design, 1)
|
|
|
229 |
|
230 |
# Create Gradio interface using Blocks
|
231 |
with gr.Blocks() as demo:
|
232 |
+
gr.Markdown("# Random Word Styler\nGenerate 5 random styled words that transform with a one-time animation!")
|
233 |
|
234 |
generate_button = gr.Button("Generate Random Words", variant="primary")
|
235 |
output_html = gr.HTML()
|