diff --git a/cairo.c b/cairo.c index f2ad54c..75314bd 100644 --- a/cairo.c +++ b/cairo.c @@ -29,23 +29,6 @@ cairo_subpixel_order_t to_cairo_subpixel_order(enum wl_output_subpixel subpixel) return CAIRO_SUBPIXEL_ORDER_DEFAULT; } -cairo_surface_t *cairo_image_surface_scale(cairo_surface_t *image, - int width, int height) { - int image_width = cairo_image_surface_get_width(image); - int image_height = cairo_image_surface_get_height(image); - - cairo_surface_t *new = - cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); - cairo_t *cairo = cairo_create(new); - cairo_scale(cairo, (double)width / image_width, - (double)height / image_height); - cairo_set_source_surface(cairo, image, 0, 0); - - cairo_paint(cairo); - cairo_destroy(cairo); - return new; -} - #if HAVE_GDK_PIXBUF cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf) { int chan = gdk_pixbuf_get_n_channels(gdkbuf); diff --git a/include/list.h b/include/list.h index 895f6cc..7a5984a 100644 --- a/include/list.h +++ b/include/list.h @@ -12,20 +12,6 @@ void list_free(list_t *list); void list_add(list_t *list, void *item); void list_insert(list_t *list, int index, void *item); void list_del(list_t *list, int index); -void list_cat(list_t *list, list_t *source); -// See qsort. Remember to use *_qsort functions as compare functions, -// because they dereference the left and right arguments first! -void list_qsort(list_t *list, int compare(const void *left, const void *right)); -// Return index for first item in list that returns 0 for given compare -// function or -1 if none matches. -int list_seq_find(list_t *list, int compare(const void *item, const void *cmp_to), const void *cmp_to); -int list_find(list_t *list, const void *item); -// stable sort since qsort is not guaranteed to be stable -void list_stable_sort(list_t *list, int compare(const void *a, const void *b)); -// swap two elements in a list -void list_swap(list_t *list, int src, int dest); -// move item to end of list -void list_move_to_end(list_t *list, void *item); /* Calls `free` for each item in the list, then frees the list. * Do not use this to free lists of primitives or items that require more diff --git a/list.c b/list.c index 2d0076d..5bda746 100644 --- a/list.c +++ b/list.c @@ -46,103 +46,6 @@ void list_del(list_t *list, int index) { memmove(&list->items[index], &list->items[index + 1], sizeof(void*) * (list->length - index)); } -void list_cat(list_t *list, list_t *source) { - for (int i = 0; i < source->length; ++i) { - list_add(list, source->items[i]); - } -} - -void list_qsort(list_t *list, int compare(const void *left, const void *right)) { - qsort(list->items, list->length, sizeof(void *), compare); -} - -int list_seq_find(list_t *list, int compare(const void *item, const void *data), const void *data) { - for (int i = 0; i < list->length; i++) { - void *item = list->items[i]; - if (compare(item, data) == 0) { - return i; - } - } - return -1; -} - -int list_find(list_t *list, const void *item) { - for (int i = 0; i < list->length; i++) { - if (list->items[i] == item) { - return i; - } - } - return -1; -} - -void list_swap(list_t *list, int src, int dest) { - void *tmp = list->items[src]; - list->items[src] = list->items[dest]; - list->items[dest] = tmp; -} - -void list_move_to_end(list_t *list, void *item) { - int i; - for (i = 0; i < list->length; ++i) { - if (list->items[i] == item) { - break; - } - } - list_del(list, i); - list_add(list, item); -} - -static void list_rotate(list_t *list, int from, int to) { - void *tmp = list->items[to]; - - while (to > from) { - list->items[to] = list->items[to - 1]; - to--; - } - - list->items[from] = tmp; -} - -static void list_inplace_merge(list_t *list, int left, int last, int mid, int compare(const void *a, const void *b)) { - int right = mid + 1; - - if (compare(&list->items[mid], &list->items[right]) <= 0) { - return; - } - - while (left <= mid && right <= last) { - if (compare(&list->items[left], &list->items[right]) <= 0) { - left++; - } else { - list_rotate(list, left, right); - left++; - mid++; - right++; - } - } -} - -static void list_inplace_sort(list_t *list, int first, int last, int compare(const void *a, const void *b)) { - if (first >= last) { - return; - } else if ((last - first) == 1) { - if (compare(&list->items[first], &list->items[last]) > 0) { - list_swap(list, first, last); - } - } else { - int mid = (int)((last + first) / 2); - list_inplace_sort(list, first, mid, compare); - list_inplace_sort(list, mid + 1, last, compare); - list_inplace_merge(list, first, last, mid, compare); - } -} - -void list_stable_sort(list_t *list, int compare(const void *a, const void *b)) { - if (list->length > 1) { - list_inplace_sort(list, 0, list->length - 1, compare); - } -} - void list_free_items_and_destroy(list_t *list) { if (!list) { return;