summaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj/xlib/natWindowAttributes.cc
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/gnu/gcj/xlib/natWindowAttributes.cc
downloadcbb-gcc-4.6.4-upstream.tar.bz2
cbb-gcc-4.6.4-upstream.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/gnu/gcj/xlib/natWindowAttributes.cc')
-rw-r--r--libjava/gnu/gcj/xlib/natWindowAttributes.cc109
1 files changed, 109 insertions, 0 deletions
diff --git a/libjava/gnu/gcj/xlib/natWindowAttributes.cc b/libjava/gnu/gcj/xlib/natWindowAttributes.cc
new file mode 100644
index 000000000..b61934818
--- /dev/null
+++ b/libjava/gnu/gcj/xlib/natWindowAttributes.cc
@@ -0,0 +1,109 @@
+/* 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 <X11/Xlib.h>
+
+#include <gcj/cni.h>
+#include <gnu/gcj/RawData.h>
+
+#include <gnu/gcj/xlib/Display.h>
+#include <gnu/gcj/xlib/Window.h>
+#include <gnu/gcj/xlib/WindowAttributes.h>
+#include <gnu/gcj/xlib/Pixmap.h>
+#include <gnu/gcj/xlib/XException.h>
+#include <gnu/gcj/xlib/Screen.h>
+#include <gnu/gcj/xlib/Visual.h>
+
+
+void gnu::gcj::xlib::WindowAttributes::initFromWindow(Window* from)
+{
+ display = from->getDisplay();
+ ::Display* dpy = (::Display*) display->display;
+ ::Window win = from->getXID();
+
+ XWindowAttributes* attributesIn = new XWindowAttributes;
+ in = reinterpret_cast<gnu::gcj::RawData*>(attributesIn);
+
+ Status status = XGetWindowAttributes(dpy, win, attributesIn);
+ if ((status == BadDrawable) | (status == BadWindow))
+ throw new XException(display, status);
+}
+
+
+void gnu::gcj::xlib::WindowAttributes::init(WindowAttributes* copyFrom)
+{
+ XSetWindowAttributes* attributes = new XSetWindowAttributes;
+
+ if (copyFrom != 0)
+ {
+ XSetWindowAttributes* from =
+ (XSetWindowAttributes*) copyFrom->out;
+ (*attributes) = (*from);
+ }
+
+ out = reinterpret_cast<gnu::gcj::RawData*>(attributes);
+}
+
+void gnu::gcj::xlib::WindowAttributes::finalize()
+{
+ delete in; in = 0;
+ delete out; out = 0;
+}
+
+void gnu::gcj::xlib::WindowAttributes::setBackground(jlong pixel)
+{
+ XSetWindowAttributes* attributes = (XSetWindowAttributes*) out;
+
+ attributes->background_pixel = pixel;
+ mask = mask | CWBackPixel;
+}
+
+void gnu::gcj::xlib::WindowAttributes::setBackground(Pixmap* pixmap)
+{
+ XSetWindowAttributes* attributes = (XSetWindowAttributes*) out;
+
+ attributes->background_pixmap = pixmap->getXID();
+ mask = mask | CWBackPixmap;
+}
+
+void gnu::gcj::xlib::WindowAttributes::setEventMask(jlong eventMask)
+{
+ XSetWindowAttributes* attributes = (XSetWindowAttributes*) out;
+
+ attributes->event_mask = eventMask;
+ mask = mask | CWEventMask;
+}
+
+gnu::gcj::xlib::Visual* gnu::gcj::xlib::WindowAttributes::getVisual()
+{
+ if (in == 0)
+ return 0;
+
+ XWindowAttributes* attributesIn = (XWindowAttributes*) in;
+
+ gnu::gcj::RawData* screenRef =
+ reinterpret_cast<gnu::gcj::RawData*>(attributesIn->screen);
+
+ Screen* screen = new Screen(display, screenRef);
+
+ gnu::gcj::RawData* visualRef =
+ reinterpret_cast<gnu::gcj::RawData*>(attributesIn->visual);
+
+ return new gnu::gcj::xlib::Visual(visualRef, screen, attributesIn->depth);
+}
+
+
+void gnu::gcj::xlib::WindowAttributes::apply(Window* window)
+{
+ ::Display* dpy = (::Display*) window->getDisplay()->display;
+ ::Window win = window->getXID();
+ XSetWindowAttributes* attributes = (XSetWindowAttributes*) out;
+
+ XChangeWindowAttributes(dpy, win, mask, attributes);
+}
+