瀏覽代碼

* Created a minimal raw driver that outputs stuff to stdout.

tags/v0.99.beta14
Sam Hocevar sam 19 年之前
父節點
當前提交
a6848be41e
共有 4 個檔案被更改,包括 132 行新增25 行删除
  1. +1
    -0
      caca/Makefile.am
  2. +2
    -4
      caca/caca.c
  3. +23
    -21
      caca/caca_internals.h
  4. +106
    -0
      caca/driver_raw.c

+ 1
- 0
caca/Makefile.am 查看文件

@@ -15,6 +15,7 @@ libcaca_la_SOURCES = \
driver_gl.c \
driver_ncurses.c \
driver_network.c \
driver_raw.c \
driver_slang.c \
driver_vga.c \
driver_win32.c \


+ 2
- 4
caca/caca.c 查看文件

@@ -1,6 +1,6 @@
/*
* libcaca Colour ASCII-Art library
* Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org>
* Copyright (c) 2006 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
*
* This library is free software; you can redistribute it and/or
@@ -133,6 +133,7 @@ static int caca_init_driver(caca_t *kk)
#if defined(USE_GL)
if(!strcasecmp(var, "gl")) return gl_install(kk);
#endif
if(!strcasecmp(var, "raw")) return raw_install(kk);
#if defined(USE_SLANG)
if(!strcasecmp(var, "slang")) return slang_install(kk);
#endif
@@ -170,9 +171,6 @@ static int caca_init_driver(caca_t *kk)
#if defined(USE_NCURSES)
if(ncurses_install(kk) == 0) return 0;
#endif
#if defined(USE_NETWORK)
if(network_install(kk) == 0) return 0;
#endif

return -1;
}


+ 23
- 21
caca/caca_internals.h 查看文件

@@ -39,57 +39,59 @@ typedef long unsigned int uintptr_t;
enum caca_driver
{
CACA_DRIVER_NONE = 0,
CACA_DRIVER_RAW = 1,
#if defined(USE_CONIO)
CACA_DRIVER_CONIO = 1,
CACA_DRIVER_CONIO = 2,
#endif
#if defined(USE_GL)
CACA_DRIVER_GL = 3,
#endif
#if defined(USE_NETWORK)
CACA_DRIVER_NETWORK = 4,
#endif
#if defined(USE_NCURSES)
CACA_DRIVER_NCURSES = 2,
CACA_DRIVER_NCURSES = 5,
#endif
#if defined(USE_SLANG)
CACA_DRIVER_SLANG = 3,
CACA_DRIVER_SLANG = 6,
#endif
#if defined(USE_X11)
CACA_DRIVER_X11 = 4,
#if defined(USE_VGA)
CACA_DRIVER_VGA = 7,
#endif
#if defined(USE_WIN32)
CACA_DRIVER_WIN32 = 5,
CACA_DRIVER_WIN32 = 8,
#endif
#if defined(USE_GL)
CACA_DRIVER_GL = 6,
#endif
#if defined(USE_NETWORK)
CACA_DRIVER_NETWORK = 7,
#endif
#if defined(USE_VGA)
CACA_DRIVER_VGA = 8,
#if defined(USE_X11)
CACA_DRIVER_X11 = 9,
#endif
};

/* Available drivers */
/* Available external drivers */
#if defined(USE_CONIO)
int conio_install(caca_t *);
#endif
#if defined(USE_GL)
int gl_install(caca_t *);
#endif
#if defined(USE_NETWORK)
int network_install(caca_t *);
#endif
#if defined(USE_NCURSES)
int ncurses_install(caca_t *);
#endif
int raw_install(caca_t *);
#if defined(USE_SLANG)
int slang_install(caca_t *);
#endif
#if defined(USE_VGA)
int vga_install(caca_t *);
#endif
#if defined(USE_WIN32)
int win32_install(caca_t *);
#endif
#if defined(USE_X11)
int x11_install(caca_t *);
#endif
#if defined(USE_NETWORK)
int network_install(caca_t *);
#endif
#if defined(USE_VGA)
int vga_install(caca_t *);
#endif

/* Timer structure */
struct caca_timer


+ 106
- 0
caca/driver_raw.c 查看文件

@@ -0,0 +1,106 @@
/*
* libcaca Colour ASCII-Art library
* Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the Do What The Fuck You Want To
* Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING for more details.
*/

/** \file driver_raw.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief raw driver
*
* This file contains the libcaca raw input and output driver
*/

#include "config.h"

#if !defined(__KERNEL__)
# include <stdio.h>
#endif

#include "caca.h"
#include "caca_internals.h"
#include "cucul.h"
#include "cucul_internals.h"

static int raw_init_graphics(caca_t *kk)
{
return 0;
}

static int raw_end_graphics(caca_t *kk)
{
return 0;
}

static int raw_set_window_title(caca_t *kk, char const *title)
{
return 0;
}

static unsigned int raw_get_window_width(caca_t *kk)
{
return 0;
}

static unsigned int raw_get_window_height(caca_t *kk)
{
return 0;
}

static void raw_display(caca_t *kk)
{
uint8_t *attr = kk->qq->attr;
uint32_t *chars = kk->qq->chars;
int n;

fprintf(stdout, "CACA %i %i\n", kk->qq->width, kk->qq->height);
for(n = kk->qq->height * kk->qq->width; n--; )
{
uint32_t c = *chars++;
uint8_t a = *attr++;

fprintf(stdout, "%c%c%c%c %c", (c >> 24), (c >> 16) & 0xff,
(c >> 8) & 0xff, c & 0xff, a);
}
fprintf(stdout, "ACAC\n");
fflush(stdout);
}

static void raw_handle_resize(caca_t *kk)
{
;
}

static int raw_get_event(caca_t *kk, struct caca_event *ev)
{
ev->type = CACA_EVENT_NONE;
return 0;
}

/*
* Driver initialisation
*/

int raw_install(caca_t *kk)
{
kk->drv.driver = CACA_DRIVER_RAW;

kk->drv.init_graphics = raw_init_graphics;
kk->drv.end_graphics = raw_end_graphics;
kk->drv.set_window_title = raw_set_window_title;
kk->drv.get_window_width = raw_get_window_width;
kk->drv.get_window_height = raw_get_window_height;
kk->drv.display = raw_display;
kk->drv.handle_resize = raw_handle_resize;
kk->drv.get_event = raw_get_event;
kk->drv.set_mouse = NULL;

return 0;
}


Loading…
取消
儲存