@@ -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