| @@ -413,7 +413,7 @@ static void *export_html3(caca_canvas_t const *cv, size_t *bytes) | |||
| cell_boundary_bitmap[x / 8] |= 1 << (x % 8); | |||
| } | |||
| } | |||
| /* The HTML table markup: less than 1000 bytes | |||
| * A line: 10 chars for "<tr></tr>\n" | |||
| * A glyph: up to 48 chars for "<td bgcolor=\"#xxxxxx\"><tt><font color=\"#xxxxxx\">" | |||
| @@ -164,9 +164,9 @@ static BOOL s_quitting = NO; | |||
| float fh = _font_rect.size.height; | |||
| _w = ceilf([self bounds].size.width / fw); | |||
| _h = ceilf([self bounds].size.height / fh); | |||
| debug_log(@"fw=%f selfw=%f %u %f", fw, [self bounds].size.width, | |||
| debug_log(@"fw=%f selfw=%f %u %f", fw, [self bounds].size.width, | |||
| _w, [self bounds].size.width-(_w*fw)); | |||
| debug_log(@"fh=%f selfh=%f %u %f", fh, [self bounds].size.height, | |||
| debug_log(@"fh=%f selfh=%f %u %f", fh, [self bounds].size.height, | |||
| _h, [self bounds].size.height-(_h*fh)); | |||
| } | |||
| @@ -199,18 +199,18 @@ static BOOL s_quitting = NO; | |||
| || !_attrs || !_bkg_rects || !_bkg_colors) | |||
| { | |||
| debug_log(@"%s resize to %ux%u", _cmd, _w, _h); | |||
| _w = caca_get_canvas_width(dp->cv); | |||
| _h = caca_get_canvas_height(dp->cv); | |||
| if(_attrs) | |||
| free(_attrs); | |||
| _attrs = malloc(_w * _h * sizeof(uint32_t) * 2); | |||
| if(_bkg_rects) | |||
| free(_bkg_rects); | |||
| _bkg_rects = malloc(_w * _h * sizeof(NSRect)); | |||
| if(_bkg_colors) | |||
| free(_bkg_colors); | |||
| _bkg_colors = malloc(_w * _h * sizeof(NSColor*)); | |||
| @@ -346,7 +346,7 @@ static BOOL s_quitting = NO; | |||
| #else // USE_RGB12_FGBG | |||
| uint8_t argb[8]; | |||
| caca_attr_to_argb64(*attrs, argb); | |||
| debug_log(@"x,y=[%d,%d] r,g,b back=[%u %u %u] front=[%u %u %u]", | |||
| debug_log(@"x,y=[%d,%d] r,g,b back=[%u %u %u] front=[%u %u %u]", | |||
| x, y, argb[1], argb[2], argb[3], argb[5], argb[6], argb[7]); | |||
| color = [NSColor colorWithCalibratedRed:((float)argb[5]) / 15.0 | |||
| green:((float)argb[6]) / 15.0 | |||
| @@ -356,7 +356,7 @@ static BOOL s_quitting = NO; | |||
| if(color) | |||
| { | |||
| NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ? | |||
| NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ? | |||
| _attrDictUnderline : _attrDict; | |||
| [attrDict setObject:color forKey:NSForegroundColorAttributeName]; | |||
| @@ -460,7 +460,7 @@ struct driver_private | |||
| static NSString* get_application_name() | |||
| { | |||
| NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey: | |||
| NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey: | |||
| @"CFBundleName"]; | |||
| if(![appName length]) | |||
| appName = [[NSProcessInfo processInfo] processName]; | |||
| @@ -476,32 +476,32 @@ static void create_application_menus() | |||
| /* Create the application menu */ | |||
| NSString* appName = get_application_name(); | |||
| NSMenu* appleMenu = [[NSMenu alloc] initWithTitle:@""]; | |||
| /* Add menu items */ | |||
| NSString* title = [@"About " stringByAppendingString:appName]; | |||
| [appleMenu addItemWithTitle:title | |||
| action:@selector(orderFrontStandardAboutPanel:) | |||
| [appleMenu addItemWithTitle:title | |||
| action:@selector(orderFrontStandardAboutPanel:) | |||
| keyEquivalent:@""]; | |||
| [appleMenu addItem:[NSMenuItem separatorItem]]; | |||
| title = [@"Hide " stringByAppendingString:appName]; | |||
| [appleMenu addItemWithTitle:title action:@selector(hide:) | |||
| [appleMenu addItemWithTitle:title action:@selector(hide:) | |||
| keyEquivalent:@"h"]; | |||
| id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others" | |||
| id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others" | |||
| action:@selector(hideOtherApplications:) | |||
| keyEquivalent:@"h"]; | |||
| [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; | |||
| [appleMenu addItemWithTitle:@"Show All" | |||
| [appleMenu addItemWithTitle:@"Show All" | |||
| action:@selector(unhideAllApplications:) | |||
| keyEquivalent:@""]; | |||
| [appleMenu addItem:[NSMenuItem separatorItem]]; | |||
| title = [@"Quit " stringByAppendingString:appName]; | |||
| [appleMenu addItemWithTitle:title action:@selector(terminate:) | |||
| [appleMenu addItemWithTitle:title action:@selector(terminate:) | |||
| keyEquivalent:@"q"]; | |||
| /* Put menu into the menubar */ | |||
| menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; | |||
| [menuItem setSubmenu:appleMenu]; | |||
| @@ -514,20 +514,20 @@ static void create_application_menus() | |||
| /* Create the window menu */ | |||
| NSMenu* windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; | |||
| /* "Minimize" item */ | |||
| menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" | |||
| action:@selector(performMiniaturize:) | |||
| menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" | |||
| action:@selector(performMiniaturize:) | |||
| keyEquivalent:@"m"]; | |||
| [windowMenu addItem:menuItem]; | |||
| [menuItem release]; | |||
| /* Put menu into the menubar */ | |||
| menuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; | |||
| [menuItem setSubmenu:windowMenu]; | |||
| [[NSApp mainMenu] addItem:menuItem]; | |||
| [menuItem release]; | |||
| /* Tell the application object that this is now the window menu */ | |||
| [NSApp setWindowsMenu:windowMenu]; | |||
| [windowMenu release]; | |||
| @@ -561,11 +561,11 @@ static void register_cocoa_app(caca_display_t *dp) | |||
| static __inline__ void convert_NSRect(NSRect *r) | |||
| { | |||
| float mb_height = 38.0; // [[NSApp mainMenu] menuBarHeight] is 0 - wtf ? | |||
| /*debug_log(@"%@ %f %f %d %d %d", [NSApp mainMenu], | |||
| [[NSApp mainMenu] menuBarHeight], mb_height, | |||
| (int)CGDisplayPixelsHigh(kCGDirectMainDisplay), | |||
| /*debug_log(@"%@ %f %f %d %d %d", [NSApp mainMenu], | |||
| [[NSApp mainMenu] menuBarHeight], mb_height, | |||
| (int)CGDisplayPixelsHigh(kCGDirectMainDisplay), | |||
| (int)r->origin.y, (int)r->size.height);*/ | |||
| r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height | |||
| r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height | |||
| - r->origin.y - r->size.height; | |||
| } | |||
| @@ -617,7 +617,7 @@ static int get_caca_keycode(NSEvent* event) | |||
| if(ch >= 'a' && ch <= 'z') | |||
| caca_keycode = CACA_KEY_CTRL_A + ch - 'a'; | |||
| } | |||
| if(!caca_keycode) | |||
| { | |||
| NSString *chars = [event characters]; | |||
| @@ -728,9 +728,9 @@ static BOOL handle_key_event(caca_privevent_t *ev, NSEvent* event) | |||
| { | |||
| if(!ev || !event) | |||
| return NO; | |||
| BOOL eventHandled = NO; | |||
| if([event modifierFlags] & NSCommandKeyMask) | |||
| { | |||
| // let the system handle the Apple-commands for now | |||
| @@ -767,7 +767,7 @@ static BOOL handle_key_event(caca_privevent_t *ev, NSEvent* event) | |||
| ev->data.key.utf32 = (uint32_t)mac_keycode; | |||
| ev->data.key.utf8[0] = mac_keycode & 0x00ff; // FIXME: endianness | |||
| ev->data.key.utf8[1] = mac_keycode & 0xff00; | |||
| eventHandled = YES; | |||
| } | |||
| } | |||
| @@ -859,7 +859,7 @@ static int cocoa_init_graphics(caca_display_t *dp) | |||
| static int cocoa_end_graphics(caca_display_t *dp) | |||
| { | |||
| debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__, | |||
| debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__, | |||
| caca_get_canvas_width(dp->cv), caca_get_canvas_height(dp->cv)); | |||
| NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; | |||
| @@ -908,9 +908,9 @@ static int cocoa_get_event(caca_display_t *dp, caca_privevent_t *ev) | |||
| if([NSApp isRunning]) | |||
| { | |||
| NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask | |||
| untilDate:[NSDate distantPast] | |||
| inMode:NSDefaultRunLoopMode | |||
| NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask | |||
| untilDate:[NSDate distantPast] | |||
| inMode:NSDefaultRunLoopMode | |||
| dequeue:YES]; | |||
| if(event) | |||
| { | |||
| @@ -923,7 +923,7 @@ static int cocoa_get_event(caca_display_t *dp, caca_privevent_t *ev) | |||
| case NSFlagsChanged: | |||
| break; | |||
| case NSLeftMouseDown: | |||
| case NSLeftMouseUp: | |||
| case NSRightMouseDown: | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * libcaca Colour ASCII-Art library | |||
| * Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org> | |||
| * Copyright (c) 2002-2006 Sam Hocevar <sam@hocevar.net> | |||
| * 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||
| * 2007 Ben Wiley Sittler <bsittler@gmail.com> | |||
| * All Rights Reserved | |||
| @@ -562,7 +562,7 @@ static void gl_compute_font(caca_display_t *dp) | |||
| caca_utf32_is_fullwidth(dp->drv.p->blocks[i] + j); | |||
| memset(tmp, 0, 16 * 8 * 16); | |||
| for(y = 0; y < h; y++) | |||
| { | |||
| for(x = 0; x < w * (fullwidth ? 2 : 1); x++) | |||
| @@ -576,7 +576,7 @@ static void gl_compute_font(caca_display_t *dp) | |||
| tmp[offset * 4 + 3] = c; | |||
| } | |||
| } | |||
| glGenTextures(1, (GLuint*)&dp->drv.p->txid[b + j]); | |||
| glBindTexture(GL_TEXTURE_2D, dp->drv.p->txid[b + j]); | |||
| glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | |||
| @@ -132,7 +132,7 @@ int caca_put_figchar(caca_canvas_t *cv, uint32_t ch) | |||
| caca_figfont_t *ff = cv->ff; | |||
| int c, w, h, x, y, overlap, extra, xleft, xright; | |||
| if (!ff) | |||
| if (!ff) | |||
| return -1; | |||
| switch(ch) | |||
| @@ -42,7 +42,7 @@ int main(int argc, char *argv[]) | |||
| if(caca_import_canvas_from_file(cv, argv[1], argc >= 3 ? argv[2] : "") < 0) | |||
| { | |||
| fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | |||
| fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | |||
| caca_free_canvas(cv); | |||
| return 1; | |||
| } | |||
| @@ -59,7 +59,7 @@ static PyMethodDef CacaMethods[] = { | |||
| {"putstr", pycaca_putstr, METH_VARARGS, ""}, | |||
| {"printf", pycaca_printf, METH_VARARGS, ""}, | |||
| {"clear", pycaca_clear, METH_VARARGS, ""}, | |||
| {"load_sprite", pycaca_load_sprite, METH_VARARGS, ""}, | |||
| {"draw_sprite", pycaca_draw_sprite, METH_VARARGS, ""}, | |||
| {"get_sprite_frames", pycaca_get_sprite_frames, METH_VARARGS, ""}, | |||
| @@ -79,7 +79,7 @@ static PyMethodDef CacaMethods[] = { | |||
| {"set_bitmap_gamma", pycaca_set_bitmap_gamma, METH_VARARGS, ""}, | |||
| {"draw_bitmap", pycaca_draw_bitmap, METH_VARARGS, ""}, | |||
| {"free_bitmap", pycaca_free_bitmap, METH_VARARGS, ""}, | |||
| @@ -98,7 +98,7 @@ initcaca(void) | |||
| obj = Py_InitModule("caca", CacaMethods); | |||
| dict = PyModule_GetDict(obj); | |||
| SET_INTCONSTANT(dict,CACA_EVENT_NONE ); | |||
| SET_INTCONSTANT(dict,CACA_EVENT_KEY_PRESS ); | |||
| SET_INTCONSTANT(dict,CACA_EVENT_KEY_RELEASE ); | |||
| @@ -107,7 +107,7 @@ initcaca(void) | |||
| SET_INTCONSTANT(dict,CACA_EVENT_MOUSE_MOTION ); | |||
| SET_INTCONSTANT(dict,CACA_EVENT_RESIZE ); | |||
| SET_INTCONSTANT(dict,CACA_EVENT_ANY ); | |||
| SET_INTCONSTANT(dict, CACA_COLOR_BLACK ); | |||
| SET_INTCONSTANT(dict, CACA_COLOR_BLUE ); | |||
| SET_INTCONSTANT(dict, CACA_COLOR_GREEN ); | |||
| @@ -191,7 +191,7 @@ static PyObject * | |||
| pycaca_init(PyObject *self, PyObject *args) | |||
| { | |||
| int ret; | |||
| ret = caca_init(); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| @@ -300,7 +300,7 @@ pycaca_get_feature(PyObject *self, PyObject *args) | |||
| int value, ret; | |||
| if (!PyArg_ParseTuple(args, "i", &value)); | |||
| ret = caca_get_feature(value); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| @@ -311,7 +311,7 @@ pycaca_set_feature(PyObject *self, PyObject *args) | |||
| int value; | |||
| if (!PyArg_ParseTuple(args, "i", &value)); | |||
| caca_set_feature(value); | |||
| return Py_BuildValue("i", 1); /* FIXME */ | |||
| } | |||
| @@ -323,7 +323,7 @@ pycaca_get_feature_name(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "i", &value)); | |||
| ret = (char* const)caca_get_feature_name(value); | |||
| return Py_BuildValue("s", ret); | |||
| } | |||
| @@ -337,7 +337,7 @@ pycaca_get_event(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "i", &value)); | |||
| ret = caca_get_event(value); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -347,7 +347,7 @@ pycaca_wait_event(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "i", &value)); | |||
| ret = caca_get_event(value); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| @@ -373,7 +373,7 @@ pycaca_draw_line(PyObject *self, PyObject *args) | |||
| { | |||
| int x1, y1, x2, y2; | |||
| char c; | |||
| if (!PyArg_ParseTuple(args, "iiiic", &x1,&y1,&x2,&y2,&c)); | |||
| caca_draw_line(x1,y1,x2,y2,c); | |||
| return Py_BuildValue("i", 1); /* FIXME */ | |||
| @@ -384,12 +384,12 @@ pycaca_draw_polyline(PyObject *self, PyObject *args) | |||
| PyObject *list_x, *list_y, *item; | |||
| int *x, *y, n, lenx, leny, i; | |||
| char c; | |||
| if (!PyArg_ParseTuple(args, "OOic", &list_x, &list_y, &n, &c)); | |||
| lenx = PySequence_Length(list_x); | |||
| leny = PySequence_Length(list_y); | |||
| x = (int*) malloc(lenx*sizeof(int)); | |||
| y = (int*) malloc(leny*sizeof(int)); | |||
| @@ -418,7 +418,7 @@ static PyObject * | |||
| pycaca_draw_thin_line(PyObject *self, PyObject *args) | |||
| { | |||
| int x1, y1, x2, y2; | |||
| if (!PyArg_ParseTuple(args, "iiii", &x1,&y1,&x2,&y2)); | |||
| caca_draw_thin_line(x1,y1,x2,y2); | |||
| return Py_BuildValue("i", 1); /* FIXME */ | |||
| @@ -429,12 +429,12 @@ pycaca_draw_thin_polyline(PyObject *self, PyObject *args) | |||
| { | |||
| PyObject *list_x, *list_y, *item; | |||
| int *x, *y, n, lenx, leny, i; | |||
| if (!PyArg_ParseTuple(args, "OOi", &list_x, &list_y, &n)); | |||
| lenx = PySequence_Length(list_x); | |||
| leny = PySequence_Length(list_y); | |||
| x = (int*) malloc(lenx*sizeof(int)); | |||
| y = (int*) malloc(leny*sizeof(int)); | |||
| @@ -564,14 +564,14 @@ static PyObject * | |||
| pycaca_get_fg_color(PyObject *self, PyObject *args) | |||
| { | |||
| int ret = caca_get_fg_color(); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| pycaca_get_bg_color(PyObject *self, PyObject *args) | |||
| { | |||
| int ret = caca_get_bg_color(); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -581,7 +581,7 @@ pycaca_get_color_name(PyObject *self, PyObject *args) | |||
| char *ret; | |||
| if (!PyArg_ParseTuple(args, "i", &c)); | |||
| ret = (char *)caca_get_color_name(c); | |||
| return Py_BuildValue("s", ret); /* FIXME */ | |||
| } | |||
| @@ -648,7 +648,7 @@ pycaca_draw_sprite(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "iiii", &x, &y, &sprite,&frame)); | |||
| caca_draw_sprite(x,y, (struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite), frame); | |||
| return Py_BuildValue("i", 1); /* FIXME */ | |||
| } | |||
| @@ -659,8 +659,8 @@ pycaca_get_sprite_frames(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "i", &sprite)); | |||
| ret = caca_get_sprite_frames((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite)); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -670,7 +670,7 @@ pycaca_get_sprite_width(PyObject *self, PyObject *args) | |||
| if (!PyArg_ParseTuple(args, "ii", &sprite, &i)); | |||
| ret = caca_get_sprite_width((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| @@ -680,8 +680,8 @@ pycaca_get_sprite_height(PyObject *self, PyObject *args) | |||
| int sprite, ret, i; | |||
| if (!PyArg_ParseTuple(args, "ii", &sprite, i)); | |||
| ret = caca_get_sprite_height((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -690,8 +690,8 @@ pycaca_get_sprite_dx(PyObject *self, PyObject *args) | |||
| int sprite, ret, i; | |||
| if (!PyArg_ParseTuple(args, "ii", &sprite), &i); | |||
| ret = caca_get_sprite_dx((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -700,8 +700,8 @@ pycaca_get_sprite_dy(PyObject *self, PyObject *args) | |||
| int sprite, ret, i; | |||
| if (!PyArg_ParseTuple(args, "ii", &sprite), &i); | |||
| ret = caca_get_sprite_dy((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); | |||
| return Py_BuildValue("i", ret); | |||
| return Py_BuildValue("i", ret); | |||
| } | |||
| static PyObject * | |||
| @@ -710,7 +710,7 @@ pycaca_free_sprite(PyObject *self, PyObject *args) | |||
| int sprite; | |||
| if (!PyArg_ParseTuple(args, "i", &sprite)); | |||
| caca_free_sprite((struct caca_sprite *)PyCObject_AsVoidPtr((void*)sprite)); | |||
| return Py_BuildValue("i", 1); /* FIXME */ | |||
| } | |||
| @@ -722,7 +722,7 @@ pycaca_get_html(PyObject *self, PyObject *args) | |||
| { | |||
| if (!PyArg_ParseTuple(args, "")); | |||
| return Py_BuildValue("s",caca_get_html()); | |||
| return Py_BuildValue("s",caca_get_html()); | |||
| } | |||
| static PyObject * | |||
| @@ -730,7 +730,7 @@ pycaca_get_html3(PyObject *self, PyObject *args) | |||
| { | |||
| if (!PyArg_ParseTuple(args, "")); | |||
| return Py_BuildValue("s",caca_get_html3()); | |||
| return Py_BuildValue("s",caca_get_html3()); | |||
| } | |||
| static PyObject * | |||
| @@ -738,7 +738,7 @@ pycaca_get_irc(PyObject *self, PyObject *args) | |||
| { | |||
| if (!PyArg_ParseTuple(args, "")); | |||
| return Py_BuildValue("s",caca_get_irc()); | |||
| return Py_BuildValue("s",caca_get_irc()); | |||
| } | |||
| static PyObject * | |||
| @@ -746,8 +746,8 @@ pycaca_get_ansi(PyObject *self, PyObject *args) | |||
| { | |||
| int trailing; | |||
| if (!PyArg_ParseTuple(args, "i", &trailing)); | |||
| return Py_BuildValue("s",caca_get_ansi(trailing)); | |||
| return Py_BuildValue("s",caca_get_ansi(trailing)); | |||
| } | |||
| /**********/ | |||
| @@ -773,7 +773,7 @@ pycaca_set_bitmap_palette(PyObject *self, PyObject *args) | |||
| unsigned int *r,*g,*b,*a,i; | |||
| if (!PyArg_ParseTuple(args, "iOOOO", &bitmap, &list_r, &list_g, &list_b, &list_a)); | |||
| if((PySequence_Length(list_r)!=256) || | |||
| (PySequence_Length(list_g)!=256) || | |||
| (PySequence_Length(list_b)!=256) || | |||
| @@ -781,7 +781,7 @@ pycaca_set_bitmap_palette(PyObject *self, PyObject *args) | |||
| { | |||
| PyErr_SetString(PyExc_TypeError, "Lengths of colors lists must be 256"); | |||
| } | |||
| r = malloc(256*sizeof(unsigned int)); | |||
| g = malloc(256*sizeof(unsigned int)); | |||
| b = malloc(256*sizeof(unsigned int)); | |||
| @@ -826,17 +826,17 @@ pycaca_draw_bitmap(PyObject *self, PyObject *args) | |||
| int i; | |||
| if (!PyArg_ParseTuple(args, "iiiiiO", &x1,&y1,&x2,&y2,&bitmap,&pixels)); | |||
| buffer = malloc(PySequence_Length(pixels)*sizeof(unsigned char)); | |||
| for(i=0;i<PySequence_Length(pixels);i++) | |||
| { | |||
| item = PySequence_GetItem(pixels, i); | |||
| buffer[i] = (unsigned char)PyInt_AsLong(item); | |||
| } | |||
| caca_draw_bitmap(x1,y1,x2,y2, (struct caca_bitmap *)PyCObject_AsVoidPtr((void*)bitmap), (void*)buffer); | |||
| @@ -225,7 +225,7 @@ static VALUE blit(int argc, VALUE* argv, VALUE self) { | |||
| } | |||
| else | |||
| cmask = NULL; | |||
| if(caca_blit(_SELF, NUM2INT(x), NUM2INT(y), csrc, cmask)<0) | |||
| rb_raise(rb_eRuntimeError, strerror(errno)); | |||
| @@ -295,7 +295,7 @@ static VALUE draw_polyline(VALUE self, VALUE points, VALUE ch) | |||
| } else | |||
| error = 1; | |||
| } | |||
| else | |||
| else | |||
| error = 1; | |||
| } | |||
| @@ -357,7 +357,7 @@ static VALUE draw_thin_polyline(VALUE self, VALUE points) | |||
| } else | |||
| error = 1; | |||
| } | |||
| else | |||
| else | |||
| error = 1; | |||
| } | |||
| @@ -583,7 +583,7 @@ void Init_caca_canvas(VALUE mCaca) | |||
| rb_define_method(cCanvas, "height=", set_canvas_height, 1); | |||
| rb_define_method(cCanvas, "set_height", set_canvas_height2, 1); | |||
| rb_define_method(cCanvas, "set_size", set_canvas_size, 2); | |||
| rb_define_method(cCanvas, "gotoxy", gotoxy, 2); | |||
| rb_define_method(cCanvas, "cursor_x", get_cursor_x, 0); | |||
| rb_define_method(cCanvas, "cursor_y", get_cursor_y, 0); | |||
| @@ -594,7 +594,7 @@ void Init_caca_canvas(VALUE mCaca) | |||
| rb_define_method(cCanvas, "set_boundaries", set_canvas_boundaries, 4); | |||
| rb_define_method(cCanvas, "clear", clear_canvas, 0); | |||
| rb_define_method(cCanvas, "put_char", put_char, 3); | |||
| rb_define_method(cCanvas, "get_char", get_char, 2); | |||
| rb_define_method(cCanvas, "put_str", put_str, 3); | |||
| @@ -72,10 +72,10 @@ static VALUE display_initialize(int argc, VALUE* argv, VALUE self) | |||
| if(driver == NULL) | |||
| { | |||
| display = caca_create_display(canvas); | |||
| if(display && NIL_P(cv)) | |||
| { | |||
| if(display && NIL_P(cv)) | |||
| { | |||
| cv = canvas_create(caca_get_canvas(display)); | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| @@ -24,7 +24,7 @@ void dither_free(void *dither) | |||
| static VALUE dither_alloc(VALUE klass) | |||
| { | |||
| VALUE obj; | |||
| obj = Data_Wrap_Struct(klass, 0, dither_free, NULL); | |||
| obj = Data_Wrap_Struct(klass, 0, dither_free, NULL); | |||
| return obj; | |||
| } | |||
| @@ -102,7 +102,7 @@ static VALUE set_dither_palette(VALUE self, VALUE palette) | |||
| } else | |||
| error = 1; | |||
| } | |||
| else | |||
| else | |||
| error = 1; | |||
| } | |||
| @@ -111,7 +111,7 @@ static VALUE set_dither_palette(VALUE self, VALUE palette) | |||
| free(red); | |||
| free(green); | |||
| free(blue); | |||
| free(alpha); | |||
| free(alpha); | |||
| rb_raise(rb_eArgError, "Invalid palette"); | |||
| } | |||
| @@ -120,7 +120,7 @@ static VALUE set_dither_palette(VALUE self, VALUE palette) | |||
| free(red); | |||
| free(green); | |||
| free(blue); | |||
| free(alpha); | |||
| free(alpha); | |||
| rb_raise(rb_eRuntimeError, strerror(errno)); | |||
| } | |||
| @@ -128,7 +128,7 @@ static VALUE set_dither_palette(VALUE self, VALUE palette) | |||
| free(green); | |||
| free(blue); | |||
| free(alpha); | |||
| return palette; | |||
| } | |||
| @@ -139,15 +139,15 @@ static VALUE set_dither_palette2(VALUE self, VALUE palette) | |||
| } | |||
| #define set_float(x) \ | |||
| static VALUE set_##x(VALUE self, VALUE x) \ | |||
| static VALUE set_##x(VALUE self, VALUE x) \ | |||
| { \ | |||
| if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0)\ | |||
| if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0) \ | |||
| rb_raise(rb_eRuntimeError, strerror(errno)); \ | |||
| \ | |||
| return x; \ | |||
| } \ | |||
| \ | |||
| static VALUE set_##x##2(VALUE self, VALUE x) \ | |||
| static VALUE set_##x##2(VALUE self, VALUE x) \ | |||
| { \ | |||
| set_##x(self, x); \ | |||
| return self; \ | |||
| @@ -161,7 +161,7 @@ set_float(contrast) | |||
| get_double_list(dither_##x) \ | |||
| static VALUE set_dither_##x(VALUE self, VALUE x) \ | |||
| { \ | |||
| if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0) \ | |||
| if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0) \ | |||
| { \ | |||
| rb_raise(rb_eRuntimeError, strerror(errno)); \ | |||
| } \ | |||
| @@ -31,7 +31,7 @@ void Init_caca_event(VALUE mCaca) | |||
| rb_define_const(cEvent, "TYPE", INT2FIX(CACA_EVENT_ANY)); | |||
| cEventKey = rb_define_class_under(cEvent, "Key", cEvent); | |||
| rb_define_const(cEventKey, "TYPE", | |||
| rb_define_const(cEventKey, "TYPE", | |||
| INT2FIX(CACA_EVENT_KEY_PRESS| | |||
| CACA_EVENT_KEY_RELEASE)); | |||
| @@ -42,7 +42,7 @@ void Init_caca_event(VALUE mCaca) | |||
| cEventKeyRelease = rb_define_class_under(cEventKey, "Release", cEventKey); | |||
| rb_define_const(cEventKeyRelease, "TYPE", | |||
| INT2FIX(CACA_EVENT_KEY_RELEASE)); | |||
| cEventMouse = rb_define_class_under(cEvent, "Mouse", cEvent); | |||
| rb_define_const(cEventMouse, "TYPE", | |||
| INT2FIX(CACA_EVENT_MOUSE_PRESS| | |||
| @@ -24,7 +24,7 @@ void font_free(void *font) | |||
| static VALUE font_alloc(VALUE klass) | |||
| { | |||
| VALUE obj; | |||
| obj = Data_Wrap_Struct(klass, 0, font_free, NULL); | |||
| obj = Data_Wrap_Struct(klass, 0, font_free, NULL); | |||
| return obj; | |||
| } | |||
| @@ -45,10 +45,10 @@ static VALUE font_list(void) | |||
| { | |||
| VALUE ary; | |||
| char const* const* list; | |||
| list = caca_get_font_list(); | |||
| ary = rb_ary_new(); | |||
| ary = rb_ary_new(); | |||
| while (*list != NULL) | |||
| { | |||
| rb_ary_push(ary, rb_str_new2(*list)); | |||
| @@ -72,10 +72,10 @@ static VALUE get_font_blocks(VALUE self) | |||
| { | |||
| VALUE ary; | |||
| uint32_t const *list; | |||
| list = caca_get_font_blocks(_SELF); | |||
| ary = rb_ary_new(); | |||
| ary = rb_ary_new(); | |||
| while (*list != 0L) | |||
| { | |||
| rb_ary_push(ary, ULONG2NUM(*list)); | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * cacafire fire demo for libcaca | |||
| * Copyright (c) 2003 Sam Hocevar <sam@zoy.org> | |||
| * Copyright (c) 2003 Sam Hocevar <sam@hocevar.net> | |||
| * 1998, 1999, 2001 Jan Hubicka <hubicka@freesoft.cz> | |||
| * All Rights Reserved | |||
| * | |||
| @@ -136,7 +136,7 @@ initialize (void) | |||
| } | |||
| #else | |||
| aa_setpalette (palette, i, pal[i * 3] * 4, | |||
| pal[i * 3 + 1] * 4, pal[i * 3 + 2] * 4); | |||
| pal[i * 3 + 1] * 4, pal[i * 3 + 2] * 4); | |||
| #endif | |||
| #ifdef LIBCACA | |||
| @@ -171,12 +171,12 @@ gentable (void) | |||
| for (i = 0; i < MAXTABLE; i++) | |||
| { | |||
| if (i > minus) | |||
| { | |||
| p2 = (i - minus) / 5; | |||
| table[i] = p2; | |||
| } | |||
| { | |||
| p2 = (i - minus) / 5; | |||
| table[i] = p2; | |||
| } | |||
| else | |||
| table[i] = 0; | |||
| table[i] = 0; | |||
| } | |||
| } | |||
| @@ -191,12 +191,12 @@ firemain (void) | |||
| #endif | |||
| i = 0; | |||
| #define END (bitmap + XSIZ * YSIZ) | |||
| for (p = (unsigned char*)bitmap; | |||
| (char*)p <= (( char *) (END)); | |||
| for (p = (unsigned char*)bitmap; | |||
| (char*)p <= (( char *) (END)); | |||
| p += 1) | |||
| { | |||
| *p = table[(*(p + XSIZ - 1) + *(p + XSIZ + 1) + *(p + XSIZ)) + | |||
| (*(p + 2 * XSIZ - 1) + *(p + 2 * XSIZ + 1))]; | |||
| (*(p + 2 * XSIZ - 1) + *(p + 2 * XSIZ + 1))]; | |||
| } | |||
| } | |||
| @@ -228,9 +228,9 @@ drawfire (void) | |||
| last1 = rand () % min (i1, min (i2, height)); | |||
| i = rand () % 6; | |||
| for (; p < (unsigned char *) bitmap + XSIZ * (YSIZ + 1) && i != 0; | |||
| p++, i--, i1 += 4, i2 -= 4) | |||
| *p = last1, last1 += rand () % 6 - 2, *(p + XSIZ) = last1, last1 += | |||
| rand () % 6 - 2; | |||
| p++, i--, i1 += 4, i2 -= 4) | |||
| *p = last1, last1 += rand () % 6 - 2, *(p + XSIZ) = last1, last1 += | |||
| rand () % 6 - 2; | |||
| *(p + 2 * XSIZ) = last1, last1 += rand () % 6 - 2; | |||
| } | |||
| i = 0; | |||
| @@ -244,13 +244,13 @@ _paused: | |||
| caca_put_str(cv, caca_get_canvas_width(cv) - 30, | |||
| caca_get_canvas_height(cv) - 2, | |||
| " -=[ Powered by libcaca ]=- "); | |||
| caca_refresh_display(dp); | |||
| /*XSIZ = caca_get_width() * 2; | |||
| YSIZ = caca_get_height() * 2 - 4;*/ | |||
| #else | |||
| aa_renderpalette (context, palette, params, 0, 0, aa_scrwidth (context), | |||
| aa_scrheight (context)); | |||
| aa_scrheight (context)); | |||
| aa_flush (context); | |||
| #endif | |||
| } | |||
| @@ -1,9 +1,24 @@ | |||
| /* | |||
| * libcaca benchmark program | |||
| * Copyright (c) 2009 Pascal Terjan <pterjan@linuxfr.org> | |||
| * 2009 Sam Hocevar <sam@hocevar.net> | |||
| * | |||
| * This library is free software. It comes without any warranty, to | |||
| * the extent permitted by applicable law. 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. | |||
| */ | |||
| #include "config.h" | |||
| #include <stdio.h> | |||
| #include "caca.h" | |||
| #define BLIT_LOOPS 1000000 | |||
| #define PUTCHAR_LOOPS 50000000 | |||
| #define TIME(desc, code) \ | |||
| { \ | |||
| caca_display_t *dummy = caca_create_display_with_driver(NULL, "null"); \ | |||
| @@ -22,10 +37,11 @@ static void blit(int mask, int clear) | |||
| cv = caca_create_canvas(40, 40); | |||
| cv2 = caca_create_canvas(16, 16); | |||
| caca_fill_box(cv2, 0, 0, 16, 16, 'x'); | |||
| for (i=0; i<1000000; i++) { | |||
| if(clear) | |||
| caca_clear_canvas(cv); | |||
| caca_blit(cv, 1, 1, cv2, mask?cv2:NULL); | |||
| for (i = 0; i < BLIT_LOOPS; i++) | |||
| { | |||
| if(clear) | |||
| caca_clear_canvas(cv); | |||
| caca_blit(cv, 1, 1, cv2, mask ? cv2 : NULL); | |||
| } | |||
| caca_free_canvas(cv); | |||
| caca_free_canvas(cv2); | |||
| @@ -36,20 +52,21 @@ static void putchars(void) | |||
| caca_canvas_t *cv; | |||
| int i; | |||
| cv = caca_create_canvas(40, 40); | |||
| for (i=0; i<50000000; i++) { | |||
| caca_put_char(cv, 1, 1, 'x'); | |||
| caca_put_char(cv, 1, 1, 'o'); | |||
| for (i = 0; i < PUTCHAR_LOOPS; i++) | |||
| { | |||
| caca_put_char(cv, 1, 1, 'x'); | |||
| caca_put_char(cv, 1, 1, 'o'); | |||
| } | |||
| caca_free_canvas(cv); | |||
| } | |||
| int main(int argc, char *argv[]) | |||
| { | |||
| TIME("blit no mask, no clear",blit(0, 0)); | |||
| TIME("blit no mask, clear",blit(0, 1)); | |||
| TIME("blit mask, no clear",blit(1, 0)); | |||
| TIME("blit mask, clear",blit(1, 1)); | |||
| TIME("putchars",putchars()); | |||
| TIME("blit no mask, no clear", blit(0, 0)); | |||
| TIME("blit no mask, clear", blit(0, 1)); | |||
| TIME("blit mask, no clear", blit(1, 0)); | |||
| TIME("blit mask, clear", blit(1, 1)); | |||
| TIME("putchars", putchars()); | |||
| return 0; | |||
| } | |||