mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 04:20:27 +01:00
Change to the linux kernel coding style
for arq in `git ls-files *.c`; do
echo $arq;
indent -linux -l115 $arq;
done
The different line break at 115 columns is because
I use a widescreen monitor :-)
This commit is contained in:
249
wrlib/xpixmap.c
249
wrlib/xpixmap.c
@@ -19,7 +19,6 @@
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
@@ -31,18 +30,15 @@
|
||||
|
||||
#include "wraster.h"
|
||||
|
||||
|
||||
|
||||
static int
|
||||
get_shifts(unsigned long mask)
|
||||
static int get_shifts(unsigned long mask)
|
||||
{
|
||||
int i=0;
|
||||
int i = 0;
|
||||
|
||||
while (mask) {
|
||||
mask>>=1;
|
||||
i++;
|
||||
}
|
||||
return i;
|
||||
while (mask) {
|
||||
mask >>= 1;
|
||||
i++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
#define NORMALIZE_RED(pixel) ((rshift>0) ? ((pixel) & rmask) >> rshift \
|
||||
@@ -52,142 +48,133 @@ get_shifts(unsigned long mask)
|
||||
#define NORMALIZE_BLUE(pixel) ((bshift>0) ? ((pixel) & bmask) >> bshift \
|
||||
: ((pixel) & bmask) << -bshift)
|
||||
|
||||
RImage*
|
||||
RCreateImageFromXImage(RContext *context, XImage *image, XImage *mask)
|
||||
RImage *RCreateImageFromXImage(RContext * context, XImage * image, XImage * mask)
|
||||
{
|
||||
RImage *img;
|
||||
int x, y;
|
||||
unsigned long pixel;
|
||||
unsigned char *data;
|
||||
int rshift, gshift, bshift;
|
||||
int rmask, gmask, bmask;
|
||||
RImage *img;
|
||||
int x, y;
|
||||
unsigned long pixel;
|
||||
unsigned char *data;
|
||||
int rshift, gshift, bshift;
|
||||
int rmask, gmask, bmask;
|
||||
|
||||
assert(image!=NULL);
|
||||
assert(image->format==ZPixmap);
|
||||
assert(!mask || mask->format==ZPixmap);
|
||||
assert(image != NULL);
|
||||
assert(image->format == ZPixmap);
|
||||
assert(!mask || mask->format == ZPixmap);
|
||||
|
||||
img = RCreateImage(image->width, image->height, mask!=NULL);
|
||||
if (!img) {
|
||||
return NULL;
|
||||
}
|
||||
img = RCreateImage(image->width, image->height, mask != NULL);
|
||||
if (!img) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* I don't know why, but XGetImage() for pixmaps don't set the
|
||||
* {red,green,blue}_mask values correctly.
|
||||
*/
|
||||
if (context->depth == image->depth) {
|
||||
rmask = context->visual->red_mask;
|
||||
gmask = context->visual->green_mask;
|
||||
bmask = context->visual->blue_mask;
|
||||
} else {
|
||||
rmask = image->red_mask;
|
||||
gmask = image->green_mask;
|
||||
bmask = image->blue_mask;
|
||||
}
|
||||
|
||||
/* I don't know why, but XGetImage() for pixmaps don't set the
|
||||
* {red,green,blue}_mask values correctly.
|
||||
*/
|
||||
if (context->depth==image->depth) {
|
||||
rmask = context->visual->red_mask;
|
||||
gmask = context->visual->green_mask;
|
||||
bmask = context->visual->blue_mask;
|
||||
} else {
|
||||
rmask = image->red_mask;
|
||||
gmask = image->green_mask;
|
||||
bmask = image->blue_mask;
|
||||
}
|
||||
/* how many bits to shift to normalize the color into 8bpp */
|
||||
rshift = get_shifts(rmask) - 8;
|
||||
gshift = get_shifts(gmask) - 8;
|
||||
bshift = get_shifts(bmask) - 8;
|
||||
|
||||
/* how many bits to shift to normalize the color into 8bpp */
|
||||
rshift = get_shifts(rmask) - 8;
|
||||
gshift = get_shifts(gmask) - 8;
|
||||
bshift = get_shifts(bmask) - 8;
|
||||
data = img->data;
|
||||
|
||||
data = img->data;
|
||||
|
||||
if (image->depth==1) {
|
||||
for (y = 0; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
pixel = XGetPixel(image, x, y);
|
||||
if (pixel) {
|
||||
*data++ = 0;
|
||||
*data++ = 0;
|
||||
*data++ = 0;
|
||||
} else {
|
||||
*data++ = 0xff;
|
||||
*data++ = 0xff;
|
||||
*data++ = 0xff;
|
||||
}
|
||||
if (mask) data++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (y = 0; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
pixel = XGetPixel(image, x, y);
|
||||
*(data++) = NORMALIZE_RED(pixel);
|
||||
*(data++) = NORMALIZE_GREEN(pixel);
|
||||
*(data++) = NORMALIZE_BLUE(pixel);
|
||||
if (mask) data++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (image->depth == 1) {
|
||||
for (y = 0; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
pixel = XGetPixel(image, x, y);
|
||||
if (pixel) {
|
||||
*data++ = 0;
|
||||
*data++ = 0;
|
||||
*data++ = 0;
|
||||
} else {
|
||||
*data++ = 0xff;
|
||||
*data++ = 0xff;
|
||||
*data++ = 0xff;
|
||||
}
|
||||
if (mask)
|
||||
data++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (y = 0; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
pixel = XGetPixel(image, x, y);
|
||||
*(data++) = NORMALIZE_RED(pixel);
|
||||
*(data++) = NORMALIZE_GREEN(pixel);
|
||||
*(data++) = NORMALIZE_BLUE(pixel);
|
||||
if (mask)
|
||||
data++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define MIN(a,b) ((a)<(b)?(a):(b))
|
||||
if (mask) {
|
||||
data = img->data + 3; /* Skip R, G & B */
|
||||
for (y = 0; y < MIN(mask->height, image->height); y++) {
|
||||
for (x = 0; x < MIN(mask->width, image->width); x++) {
|
||||
if (mask->width <= image->width && XGetPixel(mask, x, y)) {
|
||||
*data = 0xff;
|
||||
} else {
|
||||
*data = 0;
|
||||
}
|
||||
data += 4;
|
||||
}
|
||||
for (; x < image->width; x++) {
|
||||
*data = 0;
|
||||
data += 4;
|
||||
}
|
||||
}
|
||||
for (; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
*data = 0;
|
||||
data += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
return img;
|
||||
if (mask) {
|
||||
data = img->data + 3; /* Skip R, G & B */
|
||||
for (y = 0; y < MIN(mask->height, image->height); y++) {
|
||||
for (x = 0; x < MIN(mask->width, image->width); x++) {
|
||||
if (mask->width <= image->width && XGetPixel(mask, x, y)) {
|
||||
*data = 0xff;
|
||||
} else {
|
||||
*data = 0;
|
||||
}
|
||||
data += 4;
|
||||
}
|
||||
for (; x < image->width; x++) {
|
||||
*data = 0;
|
||||
data += 4;
|
||||
}
|
||||
}
|
||||
for (; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
*data = 0;
|
||||
data += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
return img;
|
||||
}
|
||||
|
||||
|
||||
|
||||
RImage*
|
||||
RCreateImageFromDrawable(RContext *context, Drawable drawable, Pixmap mask)
|
||||
RImage *RCreateImageFromDrawable(RContext * context, Drawable drawable, Pixmap mask)
|
||||
{
|
||||
RImage *image;
|
||||
XImage *pimg, *mimg;
|
||||
unsigned int w, h, bar;
|
||||
int foo;
|
||||
Window baz;
|
||||
RImage *image;
|
||||
XImage *pimg, *mimg;
|
||||
unsigned int w, h, bar;
|
||||
int foo;
|
||||
Window baz;
|
||||
|
||||
assert(drawable != None);
|
||||
|
||||
assert(drawable!=None);
|
||||
if (!XGetGeometry(context->dpy, drawable, &baz, &foo, &foo, &w, &h, &bar, &bar)) {
|
||||
printf("wrlib: invalid window or pixmap passed to RCreateImageFromPixmap\n");
|
||||
return NULL;
|
||||
}
|
||||
pimg = XGetImage(context->dpy, drawable, 0, 0, w, h, AllPlanes, ZPixmap);
|
||||
|
||||
if (!XGetGeometry(context->dpy, drawable, &baz, &foo, &foo,
|
||||
&w, &h, &bar, &bar)) {
|
||||
printf("wrlib: invalid window or pixmap passed to RCreateImageFromPixmap\n");
|
||||
return NULL;
|
||||
}
|
||||
pimg = XGetImage(context->dpy, drawable, 0, 0, w, h, AllPlanes,
|
||||
ZPixmap);
|
||||
if (!pimg) {
|
||||
RErrorCode = RERR_XERROR;
|
||||
return NULL;
|
||||
}
|
||||
mimg = NULL;
|
||||
if (mask) {
|
||||
if (XGetGeometry(context->dpy, mask, &baz, &foo, &foo, &w, &h, &bar, &bar)) {
|
||||
mimg = XGetImage(context->dpy, mask, 0, 0, w, h, AllPlanes, ZPixmap);
|
||||
}
|
||||
}
|
||||
|
||||
if (!pimg) {
|
||||
RErrorCode = RERR_XERROR;
|
||||
return NULL;
|
||||
}
|
||||
mimg = NULL;
|
||||
if (mask) {
|
||||
if (XGetGeometry(context->dpy, mask, &baz, &foo, &foo,
|
||||
&w, &h, &bar, &bar)) {
|
||||
mimg = XGetImage(context->dpy, mask, 0, 0, w, h, AllPlanes,
|
||||
ZPixmap);
|
||||
}
|
||||
}
|
||||
image = RCreateImageFromXImage(context, pimg, mimg);
|
||||
|
||||
image = RCreateImageFromXImage(context, pimg, mimg);
|
||||
XDestroyImage(pimg);
|
||||
if (mimg)
|
||||
XDestroyImage(mimg);
|
||||
|
||||
XDestroyImage(pimg);
|
||||
if (mimg)
|
||||
XDestroyImage(mimg);
|
||||
|
||||
return image;
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user