ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtimg.C
(Generate patch)

Comparing rxvt-unicode/src/rxvtimg.C (file contents):
Revision 1.59 by root, Thu Jun 7 21:28:10 2012 UTC vs.
Revision 1.63 by root, Fri Jun 8 20:35:43 2012 UTC

265 double *kernel = (double *)malloc (size * sizeof (double)); 265 double *kernel = (double *)malloc (size * sizeof (double));
266 XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed)); 266 XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed));
267 rxvt_img *img = new rxvt_img (s, format, x, y, w, h, repeat); 267 rxvt_img *img = new rxvt_img (s, format, x, y, w, h, repeat);
268 img->alloc (); 268 img->alloc ();
269 269
270 Picture src = src_picture ();
271
272 XRenderPictureAttributes pa; 270 XRenderPictureAttributes pa;
273 pa.repeat = RepeatPad; 271 pa.repeat = RepeatPad;
274 Picture dst = XRenderCreatePicture (dpy, img->pm, format, CPRepeat, &pa); 272 Picture src = XRenderCreatePicture (dpy, pm, format, CPRepeat, &pa);
273 Picture dst = XRenderCreatePicture (dpy, img->pm, format, 0, 0);
275 274
276 Pixmap tmp_pm = XCreatePixmap (dpy, pm, w, h, format->depth); 275 Pixmap tmp_pm = XCreatePixmap (dpy, pm, w, h, format->depth);
277 Picture tmp = XRenderCreatePicture (dpy, tmp_pm , format, CPRepeat, &pa); 276 Picture tmp = XRenderCreatePicture (dpy, tmp_pm , format, CPRepeat, &pa);
278 XFreePixmap (dpy, tmp_pm); 277 XFreePixmap (dpy, tmp_pm);
279 278
295 294
296 size = rv * 2 + 1; 295 size = rv * 2 + 1;
297 get_gaussian_kernel (rv, size, kernel, params); 296 get_gaussian_kernel (rv, size, kernel, params);
298 ::swap (params[0], params[1]); 297 ::swap (params[0], params[1]);
299 298
300 XRenderSetPictureFilter (dpy, src, FilterConvolution, params, size+2); 299 XRenderSetPictureFilter (dpy, tmp, FilterConvolution, params, size+2);
301 XRenderComposite (dpy, 300 XRenderComposite (dpy,
302 PictOpSrc, 301 PictOpSrc,
303 tmp, 302 tmp,
304 None, 303 None,
305 dst, 304 dst,
332 331
333 return mask; 332 return mask;
334} 333}
335 334
336void 335void
337rxvt_img::brightness (unsigned short r, unsigned short g, unsigned short b, unsigned short a) 336rxvt_img::brightness (uint16_t r, uint16_t g, uint16_t b, uint16_t a)
338{ 337{
339 Display *dpy = s->display->dpy; 338 Display *dpy = s->display->dpy;
340 Picture src = create_xrender_mask (dpy, pm, True); 339 Picture src = create_xrender_mask (dpy, pm, True);
341 Picture dst = XRenderCreatePicture (dpy, pm, format, 0, 0); 340 Picture dst = XRenderCreatePicture (dpy, pm, format, 0, 0);
342 341
352 XRenderFreePicture (dpy, src); 351 XRenderFreePicture (dpy, src);
353 XRenderFreePicture (dpy, dst); 352 XRenderFreePicture (dpy, dst);
354} 353}
355 354
356void 355void
357rxvt_img::contrast (unsigned short r, unsigned short g, unsigned short b, unsigned short a) 356rxvt_img::contrast (uint16_t r, uint16_t g, uint16_t b, uint16_t a)
358{ 357{
359 if (!(s->display->flags & DISPLAY_HAS_RENDER_MUL)) 358 if (!(s->display->flags & DISPLAY_HAS_RENDER_MUL))
360 return; 359 return;
361 360
362 Display *dpy = s->display->dpy; 361 Display *dpy = s->display->dpy;
408 if (x == 0 && y == 0 && w == ref->w && h == ref->h) 407 if (x == 0 && y == 0 && w == ref->w && h == ref->h)
409 return clone (); 408 return clone ();
410 409
411 Display *dpy = s->display->dpy; 410 Display *dpy = s->display->dpy;
412 411
412 // add an alpha channel if...
413 bool alpha = !format->direct.alphaMask 413 bool alpha = !format->direct.alphaMask // pixmap has none yet
414 && (x || y) 414 && (x || y) // we need one because of non-zero offset
415 && repeat == RepeatNone; 415 && repeat == RepeatNone; // and we have no good pixels to fill with
416 416
417 rxvt_img *img = new rxvt_img (s, alpha ? find_alpha_format_for (dpy, format) : format, 0, 0, w, h, repeat); 417 rxvt_img *img = new rxvt_img (s, alpha ? find_alpha_format_for (dpy, format) : format, 0, 0, w, h, repeat);
418 img->alloc (); 418 img->alloc ();
419 419
420 Picture src = src_picture (); 420 Picture src = src_picture ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines