From 900318072a7ebce28745aa3863e1364b7258baff Mon Sep 17 00:00:00 2001
From: Alexandre Janniaux <ajanni@videolabs.io>
Date: Wed, 10 Nov 2021 15:37:52 +0100
Subject: [PATCH] caca: fix to newer version

Migrate to the new API instead of libcucul API, which has been merged
into libcaca since 0.99.beta15:

    commit f61816ceb7445f8bf818936151554ac060764b39
    Author: Sam Hocevar <sam@hocevar.net>
    Date:   Sat Sep 27 13:12:46 2008 +0000

    Starting refactoring to get rid of libcucul. The initial reason for the
    split is rendered moot by the plugin system: when enabled, binaries do
    not link directly with libX11 or libGL. I hope this is a step towards
    more consisteny and clarity.

It was then completely wiped out by the following commit, which is part
of v0.99.beta20:

    commit 5f0ec215f8c9915ed028324a8ecac8212f68e18d
    Author: Sam Hocevar <sam@hocevar.net>
    Date:   Thu May 3 10:33:30 2018 +0200

    Remove legacy code from 10 years ago.

(cherry picked from commit d35391caa03c046149e7fe2497f51bf59ed8551d)
---
 modules/video_output/caca.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c
index 33a0409820..a2e922a864 100644
--- a/modules/video_output/caca.c
+++ b/modules/video_output/caca.c
@@ -74,9 +74,9 @@ static void Place(vout_display_t *, vout_display_place_t *);
 
 /* */
 struct vout_display_sys_t {
-    cucul_canvas_t *cv;
+    caca_canvas_t *cv;
     caca_display_t *dp;
-    cucul_dither_t *dither;
+    caca_dither_t *dither;
 
     picture_pool_t *pool;
     vout_display_event_thread_t *et;
@@ -153,9 +153,9 @@ static int Open(vlc_object_t *object)
     if (!sys)
         goto error;
 
-    sys->cv = cucul_create_canvas(0, 0);
+    sys->cv = caca_create_canvas(0, 0);
     if (!sys->cv) {
-        msg_Err(vd, "cannot initialize libcucul");
+        msg_Err(vd, "cannot initialize libcaca");
         goto error;
     }
 
@@ -209,11 +209,11 @@ error:
         if (sys->pool)
             picture_pool_Release(sys->pool);
         if (sys->dither)
-            cucul_free_dither(sys->dither);
+            caca_free_dither(sys->dither);
         if (sys->dp)
             caca_free_display(sys->dp);
         if (sys->cv)
-            cucul_free_canvas(sys->cv);
+            caca_free_canvas(sys->cv);
 
         free(sys);
     }
@@ -235,9 +235,9 @@ static void Close(vlc_object_t *object)
     if (sys->pool)
         picture_pool_Release(sys->pool);
     if (sys->dither)
-        cucul_free_dither(sys->dither);
+        caca_free_dither(sys->dither);
     caca_free_display(sys->dp);
-    cucul_free_canvas(sys->cv);
+    caca_free_canvas(sys->cv);
 
 #if defined(_WIN32)
     FreeConsole();
@@ -266,7 +266,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
 
     if (!sys->dither) {
         /* Create the libcaca dither object */
-        sys->dither = cucul_create_dither(32,
+        sys->dither = caca_create_dither(32,
                                             vd->source.i_visible_width,
                                             vd->source.i_visible_height,
                                             picture->p[0].i_pitch,
@@ -284,12 +284,12 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
     vout_display_place_t place;
     Place(vd, &place);
 
-    cucul_set_color_ansi(sys->cv, CUCUL_COLOR_DEFAULT, CUCUL_COLOR_BLACK);
-    cucul_clear_canvas(sys->cv);
+    caca_set_color_ansi(sys->cv, CACA_DEFAULT, CACA_BLACK);
+    caca_clear_canvas(sys->cv);
 
     const int crop_offset = vd->source.i_y_offset * picture->p->i_pitch +
                             vd->source.i_x_offset * picture->p->i_pixel_pitch;
-    cucul_dither_bitmap(sys->cv, place.x, place.y,
+    caca_dither_bitmap(sys->cv, place.x, place.y,
                         place.width, place.height,
                         sys->dither,
                         &picture->p->p_pixels[crop_offset]);
@@ -328,7 +328,7 @@ static int Control(vout_display_t *vd, int query, va_list args)
 
     case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
         if (sys->dither)
-            cucul_free_dither(sys->dither);
+            caca_free_dither(sys->dither);
         sys->dither = NULL;
         return VLC_SUCCESS;
 
@@ -366,7 +366,7 @@ static void Place(vout_display_t *vd, vout_display_place_t *place)
 
     vout_display_PlacePicture(place, &vd->source, vd->cfg, false);
 
-    const int canvas_width   = cucul_get_canvas_width(sys->cv);
-    const int canvas_height  = cucul_get_canvas_height(sys->cv);
+    const int canvas_width   = caca_get_canvas_width(sys->cv);
+    const int canvas_height  = caca_get_canvas_height(sys->cv);
     const int display_width  = caca_get_display_width(sys->dp);
     const int display_height = caca_get_display_height(sys->dp);
