@@ -216,6 +216,57 @@ static void apps_circletext_start(twin_screen_t *screen,
216216    twin_window_show (window );
217217}
218218
219+ static  void  apps_smiley_start (twin_screen_t  * screen , int  x , int  y , int  w , int  h )
220+ {
221+     twin_window_t  * window  =  twin_window_create (
222+         screen , TWIN_ARGB32 , TwinWindowApplication , x , y , w , h );
223+     twin_pixmap_t  * pixmap  =  window -> pixmap ;
224+ 
225+     twin_window_set_name (window , "Smiley" );
226+ 
227+     /* Clear background to white */ 
228+     twin_fill (pixmap , 0xffffffff , TWIN_SOURCE , 0 , 0 , w , h );
229+ 
230+     /* Calculate center and dimensions */ 
231+     twin_fixed_t  center_x  =  twin_int_to_fixed (w  / 2 );
232+     twin_fixed_t  center_y  =  twin_int_to_fixed (h  / 2 );
233+     twin_fixed_t  face_radius  =  D (70 );
234+     twin_fixed_t  mouth_radius  =  D (50 );
235+     twin_fixed_t  eye_radius  =  D (10 );
236+     twin_fixed_t  eye_offset_x  =  D (25 );
237+     twin_fixed_t  eye_offset_y  =  D (20 );
238+ 
239+     /* Draw face - yellow circle with black outline */ 
240+     twin_path_t  * face  =  twin_path_create ();
241+     twin_path_circle (face , center_x , center_y , face_radius );
242+     twin_paint_path (pixmap , 0xffffff00 , face );         /* Yellow fill */ 
243+     twin_paint_stroke (pixmap , 0xff000000 , face , D (5 )); /* Black outline */ 
244+     twin_path_destroy (face );
245+ 
246+     /* Draw left eye */ 
247+     twin_path_t  * left_eye  =  twin_path_create ();
248+     twin_path_circle (left_eye , center_x  -  eye_offset_x , center_y  -  eye_offset_y ,
249+                      eye_radius );
250+     twin_paint_path (pixmap , 0xff000000 , left_eye ); /* Black */ 
251+     twin_path_destroy (left_eye );
252+ 
253+     /* Draw right eye */ 
254+     twin_path_t  * right_eye  =  twin_path_create ();
255+     twin_path_circle (right_eye , center_x  +  eye_offset_x ,
256+                      center_y  -  eye_offset_y , eye_radius );
257+     twin_paint_path (pixmap , 0xff000000 , right_eye ); /* Black */ 
258+     twin_path_destroy (right_eye );
259+ 
260+     /* Draw smile - bottom half arc */ 
261+     twin_path_t  * smile  =  twin_path_create ();
262+     twin_path_arc (smile , center_x , center_y , mouth_radius , mouth_radius ,
263+                   TWIN_ANGLE_0 , TWIN_ANGLE_180 );
264+     twin_paint_stroke (pixmap , 0xff000000 , smile , D (5 )); /* Black line */ 
265+     twin_path_destroy (smile );
266+ 
267+     twin_window_show (window );
268+ }
269+ 
219270static  void  apps_ascii_start (twin_screen_t  * screen , int  x , int  y , int  w , int  h )
220271{
221272    twin_window_t  * window  =  twin_window_create (
@@ -374,6 +425,7 @@ void apps_multi_start(twin_screen_t *screen,
374425    (void ) name ;
375426    apps_circletext_start (screen , x , y , w , h );
376427    apps_multiline_start (screen , x  +=  20 , y  +=  20 , w  *  2  / 3 , h  *  2  / 3 );
428+     apps_smiley_start (screen , x  +=  20 , y  +=  20 , 200 , 200 );
377429    apps_ascii_start (screen , x  +=  20 , y  +=  20 , w , h );
378430    apps_flower_start (screen , x  +=  20 , y  +=  20 , w , h );
379431    apps_blur (screen , x  +=  20 , y  +=  20 , w  / 2 , h  / 2 );
0 commit comments