/* Copyright (C) 2000 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ #include #include #include #include #include #include #include #include jboolean gnu::gcj::xlib::Drawable::copyIntoXImageImpl(XImage* image, jint x, jint y, jint width, jint height, jint destX, jint destY) { ::Display* dpy = (::Display*) (getDisplay()->display); ::XImage* ximage = (::XImage*) image->structure; int format = image->getFormat(); int xid = getXID(); ::XImage* result = XGetSubImage(dpy, xid, x, y, width, height, ~0, // plane mask format, ximage, destX, destY); if (result == 0) return false; if (result != ximage) throw new XException(MSG_XGETSUBIMAGE_FAILED); return true; } jint gnu::gcj::xlib::Drawable::getDepth () { ::Display* dpy = (::Display*) (getDisplay ()->display); ::Window root; int x, y; unsigned int w, h, bw, depth; Status status = XGetGeometry (dpy, getXID(), &root, &x, &y, &w, &h, &bw, &depth); switch (status) { case BadDrawable: throw new XException (display, status); default: ; // All OK, NOP. } return (jint)depth; } java::awt::Rectangle* gnu::gcj::xlib::Drawable::getBounds(::java::awt::Rectangle* rv) { ::Display* dpy = (::Display*) (getDisplay()->display); ::Window root; int x, y; unsigned int w, h, bw, depth; Status status = XGetGeometry(dpy, getXID(), &root, &x, &y, &w, &h, &bw, &depth); switch (status) { case BadDrawable: throw new XException(display, status); default: ; // All OK, NOP. } if (rv == 0) { rv = new ::java::awt::Rectangle(x, y, w, h); } else { rv->x = x; rv->y = y; rv->width = w; rv->height = h; } return rv; }