diff --git a/libXmd/XmdIcon.c b/libXmd/XmdIcon.c deleted file mode 100644 index 0db3852..0000000 --- a/libXmd/XmdIcon.c +++ /dev/null @@ -1,37 +0,0 @@ -#include - -Pixmap _XmdLoadBitmapIcon (Widget widget, unsigned char *bits, int width, int height) { - Pixel fg, bg; - XtVaGetValues (widget, - XmNforeground, &fg, - XmNbackground, &bg, - NULL); - return XCreatePixmapFromBitmapData ( - XtDisplay (widget), - RootWindowOfScreen(XtScreen(widget)), - (char *)(bits), width, height, - fg, bg, DefaultDepthOfScreen(XtScreen(widget))); -} - -Pixmap XmdReadBitmapFile (Widget widget, const char *filename) { - Pixel fg, bg; - XtVaGetValues (widget, - XmNforeground, &fg, - XmNbackground, &bg, - NULL); - unsigned int width, height; - unsigned char *data; - int garbage; - XReadBitmapFileData ( - filename, - &width, &height, - &data, - &garbage, &garbage); - Pixmap result = XCreatePixmapFromBitmapData ( - XtDisplay (widget), - RootWindowOfScreen(XtScreen(widget)), - (char *)(data), width, height, - fg, bg, DefaultDepthOfScreen(XtScreen(widget))); - XFree(data); - return result; -} diff --git a/libXmd/include/Xmd/Buffer.h b/libXmd/include/Xmd/Buffer.h index 067de08..6752587 100644 --- a/libXmd/include/Xmd/Buffer.h +++ b/libXmd/include/Xmd/Buffer.h @@ -1,7 +1,7 @@ #ifndef _XmdBuffer_h #define _XmdBuffer_h -#include +#include /* Buffer is a struct that keeps track of a variable length array of data. It is like a piggy bank, you can add stuff to it and then break it to get access @@ -10,7 +10,7 @@ typedef struct _XmdBuffer XmdBuffer; /* XmdBufferNew creates a new buffer with the specified element size. */ -XmdBuffer *XmdBufferNew (size_t element); +XmdBuffer *XmdBufferNew (Cardinal size); /* XmdBufferPush adds a new element to the buffer. */ void XmdBufferPush (XmdBuffer *buffer, void *element); diff --git a/libXmd/src/Buffer.c b/libXmd/src/Buffer.c index de953c2..de0f5b4 100644 --- a/libXmd/src/Buffer.c +++ b/libXmd/src/Buffer.c @@ -1,30 +1,32 @@ #include -#include #include +#include -#define XmdBUFFER_GROWTH_FACTOR 2 +#define XmdBUFFER_GROWTH_FACTOR 2 +#define XmdBUFFER_INITIAL_CAPACITY 8 struct _XmdBuffer { - void * data; - size_t element; - size_t length; - size_t capacity; + void * data; + Cardinal size; + Cardinal length; + Cardinal capacity; }; -static void XmdBufferResize (XmdBuffer *buffer, size_t length); +static void XmdBufferResize (XmdBuffer *buffer, Cardinal length); static void XmdBufferFit (XmdBuffer *buffer); -static void *XmdBufferOffset (XmdBuffer *buffer, size_t index); +static void *XmdBufferOffset (XmdBuffer *buffer, Cardinal index); -XmdBuffer *XmdBufferNew (size_t element) { - XmdBuffer *buffer = calloc(1, sizeof(XmdBuffer)); - buffer->element = element; - buffer->capacity = 1; - buffer->data = calloc(buffer->capacity, buffer->element); +XmdBuffer *XmdBufferNew (Cardinal size) { + XmdBuffer *buffer = XtNew(XmdBuffer); + buffer->size = size; + buffer->length = 0; + buffer->capacity = XmdBUFFER_INITIAL_CAPACITY; + buffer->data = XtCalloc(buffer->capacity, buffer->size); XmdBufferFit(buffer); return buffer; } -void XmdBufferResize (XmdBuffer *buffer, size_t length) { +void XmdBufferResize (XmdBuffer *buffer, Cardinal length) { buffer->length = length; XmdBufferFit(buffer); } @@ -32,14 +34,15 @@ void XmdBufferResize (XmdBuffer *buffer, size_t length) { void XmdBufferFit (XmdBuffer *buffer) { if (buffer->length > buffer->capacity) { buffer->capacity *= XmdBUFFER_GROWTH_FACTOR; - buffer->data = realloc ( + buffer->data = XtReallocArray ( buffer->data, - buffer->capacity * buffer->element); + buffer->capacity, + buffer->size); } } -void *XmdBufferOffset (XmdBuffer *buffer, size_t index) { - return buffer->data + (index * buffer->element); +void *XmdBufferOffset (XmdBuffer *buffer, Cardinal index) { + return buffer->data + (index * buffer->size); } void XmdBufferPush (XmdBuffer *buffer, void *element) { @@ -47,16 +50,16 @@ void XmdBufferPush (XmdBuffer *buffer, void *element) { memcpy ( XmdBufferOffset(buffer, buffer->length - 1), element, - buffer->element); + buffer->size); } void *XmdBufferBreak (XmdBuffer *buffer) { void *data = buffer->data; - free(buffer); + XtFree((char *)(buffer)); return data; } void XmdBufferFree (XmdBuffer *buffer) { - free(buffer->data); - free(buffer); + XtFree(buffer->data); + XtFree((char *)(buffer)); }