mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-27 00:57:50 +00:00
- Update to latest CVS snapshot (unofficial version 0.5.1)
- Apply patch from Joe Sapp <nixphoeni(at)gentoo.org> to fix the build agains Cairo 1.x [1] - Fix the build in case WITHOUT_SVG option selected - Remove DEPRECATED, finally - Update WWW link in pkg-descr [1] http://lists.freedesktop.org/archives/waimea/2006-June/000197.html
This commit is contained in:
parent
8ec7a44768
commit
8670e5778f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=174400
@ -6,10 +6,10 @@
|
||||
#
|
||||
|
||||
PORTNAME= waimea
|
||||
PORTVERSION= 0.5.0.20050825
|
||||
PORTREVISION= 2
|
||||
PORTVERSION= 0.5.1
|
||||
CATEGORIES= x11-wm
|
||||
MASTER_SITES= ${MASTER_SITE_LOCAL}
|
||||
MASTER_SITES= http://dev.gentoo.org/~nixphoeni/ \
|
||||
${MASTER_SITE_LOCAL}
|
||||
MASTER_SITE_SUBDIR= danfe
|
||||
|
||||
MAINTAINER= danfe@FreeBSD.org
|
||||
@ -18,13 +18,9 @@ COMMENT= An X11 window manager designed for maximum efficiency
|
||||
LIB_DEPENDS= expat.6:${PORTSDIR}/textproc/expat2 \
|
||||
cairo.2:${PORTSDIR}/graphics/cairo
|
||||
|
||||
BROKEN= Configure fails
|
||||
DEPRECATED= ${BROKEN}
|
||||
EXPIRATION_DATE=2006-12-01
|
||||
|
||||
LATEST_LINK= ${PORTNAME}-devel
|
||||
|
||||
USE_BZIP2= yes
|
||||
USE_AUTOTOOLS= automake:19:env
|
||||
USE_GMAKE= yes
|
||||
USE_ICONV= yes
|
||||
USE_X_PREFIX= yes
|
||||
@ -48,6 +44,8 @@ CONFIGURE_ARGS+= --disable-png
|
||||
LIB_DEPENDS+= svg-cairo.1:${PORTSDIR}/graphics/libsvg-cairo
|
||||
.else
|
||||
CONFIGURE_ARGS+= --disable-svg
|
||||
MAKE_ARGS= CPPFLAGS="-I${LOCALBASE}/include" \
|
||||
LDFLAGS="-L${LOCALBASE}/lib"
|
||||
.endif
|
||||
|
||||
.if defined(WITH_THREAD)
|
||||
@ -56,4 +54,9 @@ CONFIGURE_ARGS+= --enable-thread
|
||||
|
||||
MAN1= waimea.1
|
||||
|
||||
post-extract:
|
||||
.for f in config.guess config.sub depcomp install-sh mkinstalldirs missing
|
||||
@${LN} -fs ${AUTOMAKE_DIR}/${f} ${WRKSRC}/config/${f}
|
||||
.endfor
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
|
@ -1,3 +1,3 @@
|
||||
MD5 (waimea-0.5.0.20050825.tar.bz2) = 959733bb28808f611c14bb6db02adfeb
|
||||
SHA256 (waimea-0.5.0.20050825.tar.bz2) = ecf1161a9bdc607fe763913eee2665e96479ebc8b1302eb5441fa8a1e553984e
|
||||
SIZE (waimea-0.5.0.20050825.tar.bz2) = 299924
|
||||
MD5 (waimea-0.5.1.tar.gz) = 7f4c9dfd02d445ec0eb8c09c14547a31
|
||||
SHA256 (waimea-0.5.1.tar.gz) = 96538cd90a8bd18bbaff8609ba037370df90802eae18ac1f41addaed0ccc6c0d
|
||||
SIZE (waimea-0.5.1.tar.gz) = 328641
|
||||
|
505
x11-wm/waimea-devel/files/patch-cairo-fix
Normal file
505
x11-wm/waimea-devel/files/patch-cairo-fix
Normal file
@ -0,0 +1,505 @@
|
||||
--- src/Event.cc.orig 2005-01-25 22:15:21.000000000 +0000
|
||||
+++ src/Event.cc 2006-05-13 13:34:39.000000000 +0000
|
||||
@@ -149,11 +149,15 @@
|
||||
|
||||
static cairo_t *cr = NULL;
|
||||
if (cr == NULL) {
|
||||
- cr = cairo_create();
|
||||
/* XXX: cairo need a call to this function for text
|
||||
support to be initialized, will probably dissapear soon. */
|
||||
- cairo_set_target_drawable(cr, waimea->display,
|
||||
- DefaultRootWindow(waimea->display));
|
||||
+ cairo_surface_t *surface =
|
||||
+ cairo_xlib_surface_create(waimea->display,
|
||||
+ DefaultRootWindow(waimea->display),
|
||||
+ DefaultVisual(waimea->display, DefaultScreen(waimea->display)),
|
||||
+ DisplayWidth(waimea->display, DefaultScreen(waimea->display)),
|
||||
+ DisplayHeight(waimea->display, DefaultScreen(waimea->display)));
|
||||
+ cr = cairo_create(surface);
|
||||
}
|
||||
|
||||
dw->renderWindow(cr);
|
||||
--- src/Render.cc.orig 2005-01-25 22:15:21.000000000 +0000
|
||||
+++ src/Render.cc 2006-05-15 05:20:47.000000000 +0000
|
||||
@@ -359,19 +359,19 @@
|
||||
if (crsurface) {
|
||||
groupsurface =
|
||||
cairo_surface_create_similar(crsurface,
|
||||
- CAIRO_FORMAT_ARGB32,
|
||||
+ CAIRO_CONTENT_COLOR_ALPHA,
|
||||
width, height);
|
||||
} else if (parent_surface) {
|
||||
groupsurface =
|
||||
cairo_surface_create_similar(parent_surface,
|
||||
- CAIRO_FORMAT_ARGB32,
|
||||
+ CAIRO_CONTENT_COLOR_ALPHA,
|
||||
width, height);
|
||||
} else {
|
||||
if (ws->waimea->client_side_rendering) {
|
||||
data = new unsigned char[width * height * sizeof(WaPixel)];
|
||||
memset (data, 0, width * height * sizeof(WaPixel));
|
||||
groupsurface =
|
||||
- cairo_surface_create_for_image((char *) data,
|
||||
+ cairo_image_surface_create_for_data(data,
|
||||
CAIRO_FORMAT_ARGB32,
|
||||
width, height, width * 4);
|
||||
} else {
|
||||
@@ -412,8 +412,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
- cairo_set_target_surface(cr, groupsurface);
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(groupsurface);
|
||||
+ cairo_identity_matrix(cr);
|
||||
cairo_set_operator(cr, RENDER_OPERATOR_DEFAULT);
|
||||
list<RenderOp *>::iterator oit = operations.begin();
|
||||
for (; oit != operations.end(); oit++) {
|
||||
@@ -431,13 +432,18 @@
|
||||
}
|
||||
|
||||
if (crsurface) {
|
||||
- cairo_set_target_surface(cr, crsurface);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(crsurface);
|
||||
cairo_set_operator(cr, RENDER_OPERATOR_DEFAULT);
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
cairo_translate(cr, x, y);
|
||||
cairo_rotate(cr, rotation);
|
||||
- cairo_set_alpha(cr, opacity);
|
||||
- cairo_show_surface(cr, cache_surface->crsurface, width, height);
|
||||
+ // XXX: I think I may've screwed this up, at least as to whether there
|
||||
+ // should be any clipping. -mjmt
|
||||
+ cairo_set_source_surface(cr, cache_surface->crsurface, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0., 0., width, height);
|
||||
+ cairo_clip(cr);
|
||||
+ cairo_paint_with_alpha(cr, opacity);
|
||||
}
|
||||
|
||||
if (return_surface)
|
||||
@@ -832,13 +838,9 @@
|
||||
pattern = cairo_pattern_create_radial (cx, cy, 0.0, cx, cy, ry);
|
||||
|
||||
if (rx != ry) {
|
||||
- cairo_matrix_t *matrix;
|
||||
-
|
||||
- matrix = cairo_matrix_create ();
|
||||
- cairo_matrix_scale (matrix, ry / rx, 1.0);
|
||||
- cairo_pattern_set_matrix (pattern, matrix);
|
||||
-
|
||||
- cairo_matrix_destroy (matrix);
|
||||
+ cairo_matrix_t matrix;
|
||||
+ cairo_matrix_init_scale (&matrix, ry / rx, 1.0);
|
||||
+ cairo_pattern_set_matrix (pattern, &matrix);
|
||||
}
|
||||
} break;
|
||||
case GroupPatternType: {
|
||||
@@ -854,13 +856,13 @@
|
||||
group->return_surface = NULL;
|
||||
group->parent_surface = NULL;
|
||||
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_identity_matrix(cr);
|
||||
cairo_move_to(cr, 0.0, 0.0);
|
||||
pattern = cairo_pattern_create_for_surface(subsurface->crsurface);
|
||||
subsurface->unref();
|
||||
cairo_restore(cr);
|
||||
} else {
|
||||
- cairo_set_rgb_color (cr, 1.0, 1.0, 1.0);
|
||||
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
@@ -869,7 +871,7 @@
|
||||
int stops = 0;
|
||||
list<WaColorStop *>::iterator it = color_stops.begin();
|
||||
for (; it != color_stops.end(); ++it) {
|
||||
- cairo_pattern_add_color_stop (pattern, (*it)->offset,
|
||||
+ cairo_pattern_add_color_stop_rgba (pattern, (*it)->offset,
|
||||
(*it)->color->red,
|
||||
(*it)->color->green,
|
||||
(*it)->color->blue,
|
||||
@@ -878,14 +880,14 @@
|
||||
}
|
||||
|
||||
if (stops == 0) {
|
||||
- cairo_pattern_add_color_stop (pattern, 0.0, 0.0, 0.0, 0.0, 1.0);
|
||||
- cairo_pattern_add_color_stop (pattern, 1.0, 1.0, 1.0, 1.0, 1.0);
|
||||
+ cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.0, 0.0, 0.0, 1.0);
|
||||
+ cairo_pattern_add_color_stop_rgba (pattern, 1.0, 1.0, 1.0, 1.0, 1.0);
|
||||
}
|
||||
|
||||
cairo_pattern_set_filter (pattern, filter);
|
||||
cairo_pattern_set_extend (pattern, extend);
|
||||
|
||||
- cairo_set_pattern (cr, pattern);
|
||||
+ cairo_set_source (cr, pattern);
|
||||
|
||||
cairo_pattern_destroy (pattern);
|
||||
}
|
||||
@@ -1110,7 +1112,12 @@
|
||||
fill_color.setcairo_color(cr);
|
||||
if (fill_pattern)
|
||||
fill_pattern->setcairo_pattern(dwo, cr, NULL, w, h);
|
||||
- cairo_set_alpha(cr, fill_color.alpha);
|
||||
+ //cairo_set_alpha(cr, fill_color.alpha);
|
||||
+ cairo_set_source_rgba(cr,
|
||||
+ fill_color.red,
|
||||
+ fill_color.green,
|
||||
+ fill_color.blue,
|
||||
+ fill_color.alpha);
|
||||
cairo_fill(cr);
|
||||
cairo_restore(cr);
|
||||
}
|
||||
@@ -1429,7 +1436,7 @@
|
||||
if (name) delete [] name;
|
||||
if (bg_group) bg_group->unref();
|
||||
clear();
|
||||
- if (font) cairo_font_destroy(font);
|
||||
+ if (font) cairo_font_face_destroy(font);
|
||||
}
|
||||
|
||||
void RenderOpText::clear(void) {
|
||||
@@ -1604,10 +1611,10 @@
|
||||
calc_length(bottom_spacing, bottom_spacing_u, dwo->ws->vdpi, h,
|
||||
&bottom_space);
|
||||
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_identity_matrix(cr);
|
||||
|
||||
if (!font) {
|
||||
- cairo_select_font(cr, family, slant, weight);
|
||||
+ cairo_select_font_face (cr, family, slant, weight);
|
||||
/* font = cairo_current_font(cr);
|
||||
if (!font)
|
||||
return;
|
||||
@@ -1615,9 +1622,9 @@
|
||||
cairo_font_reference (font);
|
||||
*/
|
||||
} else
|
||||
- cairo_set_font (cr, font);
|
||||
+ cairo_set_font_face (cr, font);
|
||||
|
||||
- cairo_scale_font (cr, font_size);
|
||||
+ cairo_set_font_size (cr, font_size);
|
||||
|
||||
if (is_static)
|
||||
text = utf8;
|
||||
@@ -1657,7 +1664,7 @@
|
||||
str[end_offset] = '\0';
|
||||
sinfo->text = str;
|
||||
|
||||
- cairo_text_extents(cr, (unsigned char *) sinfo->text, &extents);
|
||||
+ cairo_text_extents(cr, sinfo->text, &extents);
|
||||
str_y_pos = extents.height - extents.y_bearing;
|
||||
str_width = extents.width;
|
||||
str_height = extents.height;
|
||||
@@ -1670,9 +1677,9 @@
|
||||
if (textptr[end_offset] == '\t') {
|
||||
double tab, with_space;
|
||||
if (space_width < 0.0) {
|
||||
- cairo_text_extents(cr, (unsigned char *) "1 1", &extents);
|
||||
+ cairo_text_extents(cr, "1 1", &extents);
|
||||
with_space = extents.width;
|
||||
- cairo_text_extents(cr, (unsigned char *) "11", &extents);
|
||||
+ cairo_text_extents(cr, "11", &extents);
|
||||
space_width = with_space - extents.width;
|
||||
}
|
||||
tab = ceil((linfo->width + space_width) / tab_space);
|
||||
@@ -1743,13 +1750,14 @@
|
||||
cairo_save(cr);
|
||||
|
||||
text_region = cairo_surface_create_similar(
|
||||
- cairo_current_target_surface(cr), CAIRO_FORMAT_ARGB32,
|
||||
+ cairo_get_target(cr), CAIRO_CONTENT_COLOR_ALPHA,
|
||||
(unsigned int) ceil(width), (unsigned int) ceil(height));
|
||||
|
||||
- cairo_set_target_surface(cr, text_region);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(crsurface);
|
||||
|
||||
if (bg_group) {
|
||||
- bg_group->parent_surface = cairo_current_target_surface(cr);
|
||||
+ bg_group->parent_surface = cairo_get_target(cr);
|
||||
bg_group->return_surface = &subsurface;
|
||||
cairo_save(cr);
|
||||
bg_group->render(dwo, cr, NULL, (unsigned int) ceil(width),
|
||||
@@ -1762,9 +1770,9 @@
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
cairo_save(cr);
|
||||
- cairo_surface_set_repeat(subsurface->crsurface, true);
|
||||
pattern = cairo_pattern_create_for_surface(subsurface->crsurface);
|
||||
- cairo_set_pattern(cr, pattern);
|
||||
+ cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
|
||||
+ cairo_set_source(cr, pattern);
|
||||
cairo_pattern_destroy(pattern);
|
||||
cairo_rectangle(cr, 0.0, 0.0, ceil(width), ceil(height));
|
||||
cairo_fill(cr);
|
||||
@@ -1789,7 +1797,7 @@
|
||||
if (stroke || fill_pattern) {
|
||||
cairo_move_to(cr, (int) (left_space + (*sit)->x + pos_x),
|
||||
(int) (y_off + y_pos));
|
||||
- cairo_text_path(cr, (unsigned char *) (*sit)->text);
|
||||
+ cairo_text_path(cr, (*sit)->text);
|
||||
cairo_move_to(cr, 0.0, 0.0);
|
||||
draw(dwo, cr, crsurface, WA_ROUND_U(width),
|
||||
WA_ROUND_U(height));
|
||||
@@ -1799,12 +1807,12 @@
|
||||
cairo_move_to(cr, (int) (left_space + (*sit)->x + pos_x +
|
||||
shadow_x_offset),
|
||||
(int) (y_off + y_pos + shadow_y_offset));
|
||||
- cairo_show_text(cr, (unsigned char *) (*sit)->text);
|
||||
+ cairo_show_text(cr, (*sit)->text);
|
||||
}
|
||||
fill_color.setcairo_color(cr);
|
||||
cairo_move_to(cr, (int) (left_space + (*sit)->x + pos_x),
|
||||
(int) (y_off + y_pos));
|
||||
- cairo_show_text(cr, (unsigned char *) (*sit)->text);
|
||||
+ cairo_show_text(cr, (*sit)->text);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1816,8 +1824,10 @@
|
||||
if (x || y) cairo_translate(cr, x, y);
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
if (rotation) cairo_rotate(cr, rotation);
|
||||
- cairo_show_surface(cr, text_region, (unsigned int) ceil(width),
|
||||
- (unsigned int) ceil(height));
|
||||
+ cairo_set_source_surface(cr, text_region, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0., 0., ceil(width), ceil(height));
|
||||
+ cairo_clip(cr);
|
||||
+ cairo_paint(cr);
|
||||
|
||||
cairo_surface_destroy(text_region);
|
||||
|
||||
@@ -1860,7 +1870,7 @@
|
||||
calcPositionAndSize(w, h, dwo->ws->hdpi, dwo->ws->vdpi, &x, &y,
|
||||
&width, &height);
|
||||
|
||||
- if (color.alpha == 1.0) cairo_set_operator(cr, CAIRO_OPERATOR_SRC);
|
||||
+ if (color.alpha == 1.0) cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
color.setcairo_color(cr);
|
||||
cairo_rectangle(cr, x, y, width, height);
|
||||
@@ -1946,54 +1956,63 @@
|
||||
|
||||
switch (scale) {
|
||||
case ImageNormalScaleType:
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_identity_matrix(cr);
|
||||
|
||||
if (width != img->width || height != img->height) {
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
- cairo_operator_t op = cairo_current_operator(cr);
|
||||
+ cairo_operator_t op = cairo_get_operator(cr);
|
||||
|
||||
- cairo_surface_t *target = cairo_current_target_surface(cr);
|
||||
+ cairo_surface_t *target = cairo_get_target(cr);
|
||||
cairo_surface_t *scaled =
|
||||
- cairo_surface_create_similar(target, CAIRO_FORMAT_ARGB32,
|
||||
+ cairo_surface_create_similar(target, CAIRO_CONTENT_COLOR_ALPHA,
|
||||
(int) width + 2,
|
||||
(int) height + 2);
|
||||
- cairo_set_target_surface(cr, scaled);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(scaled);
|
||||
cairo_scale(cr, (double) width / (img->width -
|
||||
((img->width > 1)? 1: 0)),
|
||||
(double) height / (img->height -
|
||||
((img->height > 1)? 1: 0)));
|
||||
- cairo_surface_set_filter(img->crsurface, filter);
|
||||
- cairo_set_operator(cr, CAIRO_OPERATOR_SRC);
|
||||
- cairo_show_surface(cr, img->crsurface,
|
||||
- img->width + 1, img->height + 1);
|
||||
- cairo_set_target_surface(cr, target);
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_pattern_t *img_pattern =
|
||||
+ cairo_pattern_create_for_surface(img->crsurface);
|
||||
+ cairo_pattern_set_filter(img_pattern, filter);
|
||||
+ cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
|
||||
+ cairo_set_source(cr, img_pattern);
|
||||
+ cairo_rectangle(cr, 0., 0., img->width + 1, img->height + 1);
|
||||
+ cairo_fill(cr);
|
||||
+ cairo_identity_matrix(cr);
|
||||
+ cairo_pattern_destroy(img_pattern);
|
||||
+
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(target);
|
||||
cairo_translate(cr, x, y);
|
||||
cairo_set_operator(cr, op);
|
||||
- cairo_show_surface(cr, scaled, (int) width + 2,
|
||||
- (int) height + 2);
|
||||
+ cairo_set_source_surface(cr, scaled, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0., 0., width + 2., height + 2.);
|
||||
+ cairo_fill(cr);
|
||||
cairo_surface_destroy(scaled);
|
||||
} else {
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
cairo_translate(cr, x, y);
|
||||
cairo_rotate(cr, rotation);
|
||||
- cairo_show_surface(cr, img->crsurface,
|
||||
- img->width + 1, img->height + 1);
|
||||
+ cairo_set_source_surface(cr, img->crsurface, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0., 0., img->width + 1., img->height + 1.);
|
||||
+ cairo_fill(cr);
|
||||
}
|
||||
break;
|
||||
case ImageTileScaleType: {
|
||||
- cairo_default_matrix(cr);
|
||||
- cairo_surface_set_repeat(img->crsurface, true);
|
||||
+ cairo_identity_matrix(cr);
|
||||
cairo_translate(cr, x, y);
|
||||
cairo_rectangle(cr, 0, 0, width, height);
|
||||
cairo_move_to(cr, 0.0, 0.0);
|
||||
- cairo_default_matrix(cr);
|
||||
+ cairo_identity_matrix(cr);
|
||||
pattern = cairo_pattern_create_for_surface(img->crsurface);
|
||||
- cairo_set_pattern(cr, pattern);
|
||||
+ cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
|
||||
+ cairo_set_source(cr, pattern);
|
||||
cairo_pattern_destroy(pattern);
|
||||
if (xrop_set) cairo_set_operator(cr, xrop);
|
||||
cairo_fill(cr);
|
||||
- cairo_surface_set_repeat(img->crsurface, false);
|
||||
+ //cairo_surface_set_repeat(img->crsurface, false);
|
||||
} break;
|
||||
}
|
||||
|
||||
@@ -2047,7 +2066,7 @@
|
||||
cairo_surface_t *,
|
||||
unsigned int w, unsigned int h) {
|
||||
double x, y, width, height;
|
||||
- int svg_w, svg_h;
|
||||
+ unsigned int svg_w, svg_h;
|
||||
|
||||
calcPositionAndSize(w, h, dwo->ws->hdpi, dwo->ws->vdpi,
|
||||
&x, &y, &width, &height);
|
||||
@@ -2287,16 +2306,16 @@
|
||||
cairo_operator_t crop;
|
||||
} operator_map[] = {
|
||||
{ "clear", CAIRO_OPERATOR_CLEAR },
|
||||
- { "src", CAIRO_OPERATOR_SRC },
|
||||
- { "dst", CAIRO_OPERATOR_DST },
|
||||
+ { "src", CAIRO_OPERATOR_SOURCE },
|
||||
+ { "dst", CAIRO_OPERATOR_DEST },
|
||||
+ { "dst_over", CAIRO_OPERATOR_DEST_OVER },
|
||||
+ { "dst_in", CAIRO_OPERATOR_DEST_IN },
|
||||
+ { "dst_out", CAIRO_OPERATOR_DEST_OUT },
|
||||
+ { "dst_atop", CAIRO_OPERATOR_DEST_ATOP },
|
||||
{ "over", CAIRO_OPERATOR_OVER },
|
||||
- { "overreverse", CAIRO_OPERATOR_OVER_REVERSE },
|
||||
{ "in", CAIRO_OPERATOR_IN },
|
||||
- { "inreverse", CAIRO_OPERATOR_IN_REVERSE },
|
||||
{ "out", CAIRO_OPERATOR_OUT },
|
||||
- { "outreverse", CAIRO_OPERATOR_OUT_REVERSE },
|
||||
{ "atop", CAIRO_OPERATOR_ATOP },
|
||||
- { "atopreverse", CAIRO_OPERATOR_ATOP_REVERSE },
|
||||
{ "xor", CAIRO_OPERATOR_XOR },
|
||||
{ "add", CAIRO_OPERATOR_ADD },
|
||||
{ "saturate", CAIRO_OPERATOR_SATURATE }
|
||||
--- src/Render.hh.orig 2005-01-25 22:15:21.000000000 +0000
|
||||
+++ src/Render.hh 2006-04-28 18:13:34.000000000 +0000
|
||||
@@ -246,8 +246,7 @@
|
||||
double getOpacity(void) { return alpha; }
|
||||
|
||||
inline void setcairo_color(cairo_t *cr) {
|
||||
- cairo_set_rgb_color(cr, red, green, blue);
|
||||
- cairo_set_alpha(cr, alpha);
|
||||
+ cairo_set_source_rgba(cr, red, green, blue, alpha);
|
||||
}
|
||||
|
||||
double red, green, blue, alpha;
|
||||
@@ -502,7 +501,7 @@
|
||||
HorizontalAlignment text_halign;
|
||||
WaColor shadow_color;
|
||||
char *family;
|
||||
- cairo_font_t *font;
|
||||
+ cairo_font_face_t *font;
|
||||
RenderGroup *bg_group;
|
||||
cairo_font_weight_t weight;
|
||||
cairo_font_slant_t slant;
|
||||
--- src/Screen.cc.orig 2005-01-25 22:15:21.000000000 +0000
|
||||
+++ src/Screen.cc 2006-05-13 13:34:39.000000000 +0000
|
||||
@@ -1549,7 +1549,7 @@
|
||||
|
||||
if (waimea->client_side_rendering) {
|
||||
data = rgba;
|
||||
- surface = cairo_surface_create_for_image((char *) rgba,
|
||||
+ surface = cairo_image_surface_create_for_data(rgba,
|
||||
CAIRO_FORMAT_ARGB32,
|
||||
width, height,
|
||||
width * sizeof(WaPixel));
|
||||
--- src/Style.cc.orig 2005-01-25 22:15:21.000000000 +0000
|
||||
+++ src/Style.cc 2006-05-13 13:34:39.000000000 +0000
|
||||
@@ -656,7 +656,7 @@
|
||||
(bgsurface)? bgsurface->height: 0,
|
||||
p_x, p_y, w, h);
|
||||
root_surface =
|
||||
- cairo_surface_create_for_image((char *) root_data,
|
||||
+ cairo_image_surface_create_for_data(root_data,
|
||||
CAIRO_FORMAT_ARGB32,
|
||||
w, h, w * sizeof(WaPixel));
|
||||
} else {
|
||||
@@ -688,13 +688,17 @@
|
||||
sb->style->parent_surface = NULL;
|
||||
|
||||
if (alpha || shape) {
|
||||
- cairo_set_target_surface(cr, root_surface);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(root_surface);
|
||||
cairo_set_operator(cr, RENDER_OPERATOR_DEFAULT);
|
||||
if (sb->style->xrop_set)
|
||||
cairo_set_operator(cr, sb->style->xrop);
|
||||
- cairo_set_alpha(cr, sb->style->opacity);
|
||||
- cairo_default_matrix(cr);
|
||||
- cairo_show_surface(cr, return_surface->crsurface, w, h);
|
||||
+ cairo_identity_matrix(cr);
|
||||
+ cairo_set_source_surface(cr, return_surface->crsurface, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0., 0., w, h);
|
||||
+ cairo_clip(cr);
|
||||
+ cairo_paint_with_alpha(cr, sb->style->opacity);
|
||||
+ cairo_reset_clip(cr);
|
||||
}
|
||||
|
||||
if (shape) {
|
||||
@@ -704,7 +708,7 @@
|
||||
shape_data = new unsigned char[w * h * sizeof(WaPixel)];
|
||||
memset (shape_data, 0, w * h * sizeof(WaPixel));
|
||||
alpha_surface =
|
||||
- cairo_surface_create_for_image((char *) shape_data,
|
||||
+ cairo_image_surface_create_for_data(shape_data,
|
||||
CAIRO_FORMAT_ARGB32,
|
||||
w, h, w * sizeof(WaPixel));
|
||||
} else {
|
||||
@@ -724,15 +728,26 @@
|
||||
ws->colormap);
|
||||
}
|
||||
|
||||
- cairo_set_target_surface(cr, alpha_surface);
|
||||
+ cairo_destroy(cr);
|
||||
+ cr = cairo_create(alpha_surface);
|
||||
+ cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
|
||||
+ cairo_set_source_surface(cr, return_surface->crsurface, 0., 0.);
|
||||
+ cairo_set_source_rgb(cr, 0.0, 0.0, 0.0);
|
||||
+ cairo_rectangle(cr, 0, 0, w, h);
|
||||
+ cairo_clip(cr);
|
||||
+ cairo_paint_with_alpha(cr, sb->style->opacity);
|
||||
+ cairo_reset_clip(cr);
|
||||
|
||||
if (sb->style->shapemask) {
|
||||
cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
|
||||
sb->style->shapemask->render(this, cr, alpha_surface, w, h);
|
||||
} else {
|
||||
cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
|
||||
- cairo_set_alpha(cr, sb->style->opacity);
|
||||
- cairo_show_surface(cr, return_surface->crsurface, w, h);
|
||||
+ cairo_set_source_surface(cr, return_surface->crsurface, 0., 0.);
|
||||
+ cairo_rectangle(cr, 0.0, 0.0, w, h);
|
||||
+ cairo_clip(cr);
|
||||
+ cairo_paint_with_alpha(cr, sb->style->opacity);
|
||||
+ cairo_reset_clip(cr);
|
||||
}
|
||||
|
||||
if (ws->waimea->client_side_rendering) {
|
@ -5,4 +5,4 @@ Waimea provides a modern vector-based style engine that takes advantage of
|
||||
display hardware acceleration when available (through the X Render
|
||||
Extension).
|
||||
|
||||
WWW: http://waimea.org/wiki/Software_2fwaimea
|
||||
WWW: http://www.freedesktop.org/wiki/Software_2fwaimea
|
||||
|
Loading…
Reference in New Issue
Block a user