commit
5d60610cb0
@ -1,7 +1,6 @@
|
|||||||
image: alpine/edge
|
image: alpine/edge
|
||||||
packages:
|
packages:
|
||||||
- meson
|
- meson
|
||||||
- pango-dev
|
|
||||||
- cairo-dev
|
- cairo-dev
|
||||||
- wayland-dev
|
- wayland-dev
|
||||||
- wayland-protocols
|
- wayland-protocols
|
||||||
|
@ -34,7 +34,6 @@ Install dependencies:
|
|||||||
* wayland
|
* wayland
|
||||||
* wayland-protocols \*
|
* wayland-protocols \*
|
||||||
* libxkbcommon
|
* libxkbcommon
|
||||||
* pango
|
|
||||||
* cairo
|
* cairo
|
||||||
* gdk-pixbuf2 \*\*
|
* gdk-pixbuf2 \*\*
|
||||||
* pam (optional)
|
* pam (optional)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdbool.h>
|
|
||||||
#include "background-image.h"
|
#include "background-image.h"
|
||||||
#include "cairo.h"
|
#include "cairo.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
@ -30,7 +29,7 @@ cairo_surface_t *load_background_image(const char *path) {
|
|||||||
if (!pixbuf) {
|
if (!pixbuf) {
|
||||||
swaylock_log(LOG_ERROR, "Failed to load background image (%s).",
|
swaylock_log(LOG_ERROR, "Failed to load background image (%s).",
|
||||||
err->message);
|
err->message);
|
||||||
return false;
|
return NULL;
|
||||||
}
|
}
|
||||||
image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
||||||
g_object_unref(pixbuf);
|
g_object_unref(pixbuf);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#ifndef _SWAY_BUFFERS_H
|
#ifndef _SWAY_BUFFERS_H
|
||||||
#define _SWAY_BUFFERS_H
|
#define _SWAY_BUFFERS_H
|
||||||
#include <cairo/cairo.h>
|
#include <cairo/cairo.h>
|
||||||
#include <pango/pangocairo.h>
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <wayland-client.h>
|
#include <wayland-client.h>
|
||||||
@ -10,7 +9,6 @@ struct pool_buffer {
|
|||||||
struct wl_buffer *buffer;
|
struct wl_buffer *buffer;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
cairo_t *cairo;
|
cairo_t *cairo;
|
||||||
PangoContext *pango;
|
|
||||||
uint32_t width, height;
|
uint32_t width, height;
|
||||||
void *data;
|
void *data;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
@ -38,8 +38,6 @@ wayland_client = dependency('wayland-client')
|
|||||||
wayland_protos = dependency('wayland-protocols', version: '>=1.14')
|
wayland_protos = dependency('wayland-protocols', version: '>=1.14')
|
||||||
xkbcommon = dependency('xkbcommon')
|
xkbcommon = dependency('xkbcommon')
|
||||||
cairo = dependency('cairo')
|
cairo = dependency('cairo')
|
||||||
pango = dependency('pango')
|
|
||||||
pangocairo = dependency('pangocairo')
|
|
||||||
gdk_pixbuf = dependency('gdk-pixbuf-2.0', required: get_option('gdk-pixbuf'))
|
gdk_pixbuf = dependency('gdk-pixbuf-2.0', required: get_option('gdk-pixbuf'))
|
||||||
libpam = cc.find_library('pam', required: get_option('pam'))
|
libpam = cc.find_library('pam', required: get_option('pam'))
|
||||||
crypt = cc.find_library('crypt', required: not libpam.found())
|
crypt = cc.find_library('crypt', required: not libpam.found())
|
||||||
@ -120,8 +118,6 @@ dependencies = [
|
|||||||
client_protos,
|
client_protos,
|
||||||
gdk_pixbuf,
|
gdk_pixbuf,
|
||||||
math,
|
math,
|
||||||
pango,
|
|
||||||
pangocairo,
|
|
||||||
xkbcommon,
|
xkbcommon,
|
||||||
wayland_client,
|
wayland_client,
|
||||||
]
|
]
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <cairo/cairo.h>
|
#include <cairo/cairo.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <pango/pangocairo.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -93,7 +92,6 @@ static struct pool_buffer *create_buffer(struct wl_shm *shm,
|
|||||||
buf->surface = cairo_image_surface_create_for_data(data,
|
buf->surface = cairo_image_surface_create_for_data(data,
|
||||||
CAIRO_FORMAT_ARGB32, width, height, stride);
|
CAIRO_FORMAT_ARGB32, width, height, stride);
|
||||||
buf->cairo = cairo_create(buf->surface);
|
buf->cairo = cairo_create(buf->surface);
|
||||||
buf->pango = pango_cairo_create_context(buf->cairo);
|
|
||||||
|
|
||||||
wl_buffer_add_listener(buf->buffer, &buffer_listener, buf);
|
wl_buffer_add_listener(buf->buffer, &buffer_listener, buf);
|
||||||
return buf;
|
return buf;
|
||||||
@ -109,9 +107,6 @@ void destroy_buffer(struct pool_buffer *buffer) {
|
|||||||
if (buffer->surface) {
|
if (buffer->surface) {
|
||||||
cairo_surface_destroy(buffer->surface);
|
cairo_surface_destroy(buffer->surface);
|
||||||
}
|
}
|
||||||
if (buffer->pango) {
|
|
||||||
g_object_unref(buffer->pango);
|
|
||||||
}
|
|
||||||
if (buffer->data) {
|
if (buffer->data) {
|
||||||
munmap(buffer->data, buffer->size);
|
munmap(buffer->data, buffer->size);
|
||||||
}
|
}
|
||||||
|
35
unicode.c
35
unicode.c
@ -13,41 +13,6 @@ size_t utf8_chsize(uint32_t ch) {
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const uint8_t masks[] = {
|
|
||||||
0x7F,
|
|
||||||
0x1F,
|
|
||||||
0x0F,
|
|
||||||
0x07,
|
|
||||||
0x03,
|
|
||||||
0x01
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t utf8_decode(const char **char_str) {
|
|
||||||
uint8_t **s = (uint8_t **)char_str;
|
|
||||||
|
|
||||||
uint32_t cp = 0;
|
|
||||||
if (**s < 128) {
|
|
||||||
// shortcut
|
|
||||||
cp = **s;
|
|
||||||
++*s;
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
int size = utf8_size((char *)*s);
|
|
||||||
if (size == -1) {
|
|
||||||
++*s;
|
|
||||||
return UTF8_INVALID;
|
|
||||||
}
|
|
||||||
uint8_t mask = masks[size - 1];
|
|
||||||
cp = **s & mask;
|
|
||||||
++*s;
|
|
||||||
while (--size) {
|
|
||||||
cp <<= 6;
|
|
||||||
cp |= **s & 0x3f;
|
|
||||||
++*s;
|
|
||||||
}
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t utf8_encode(char *str, uint32_t ch) {
|
size_t utf8_encode(char *str, uint32_t ch) {
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
uint8_t first;
|
uint8_t first;
|
||||||
|
Loading…
Reference in New Issue
Block a user