问题标签 [xlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
759 浏览

x11 - 令人困惑的_NET_SUPPORTING_WM_CHECK

我正在尝试使我的窗口管理器符合 ICCCM 规范。我完全理解 _NET_SUPPORTING_WM_CHECK 原子的原因 - 这可以确保在窗口管理器不再运行时不会留下无效信息。

我不明白的是,为什么除了 _NET_WM_NAME 和 _NET_SUPPORTING_WM_CHECK 本身之外,支持窗口上没有像 _NET_NUMBER_OF_DESKTOPS 这样的其他原子。

窗口管理器应该设置和覆盖数据,但如果新窗口管理器不兼容,这可能会产生误导。

0 投票
1 回答
294 浏览

xlib - XDrawString 参数的 16 位限制

从 XDrawString手册页看来,它接受签名的 32 位 x 和 y 坐标

int XDrawString(Display *display, Drawable d, GC gc, int x, int y, char *string, int length);

注意 x 和 y 都是 int (即:至少在 gcc/linux2.6-i386 上的 32 位有符号整数)

问题是当我通过y = 32767( 2^15 - 1) 时,字符串被绘制在正确的位置,但任何高于此值的字符串都不会被绘制。

我怀疑内部没有使用 32 位整数,而是使用 16 位有符号整数作为坐标。

鉴于手册页似乎表明该函数接受 32 位整数,是否需要打开一些编译选项以允许使用更长的整数?或者这是 Xlib 的限制?

0 投票
1 回答
383 浏览

c++ - XDrawString 在 Solaris 上不起作用

XDrawString在 Solaris 10 和 SunOS 2.6 上使用。我正在将所有内容绘制到像素图,然后输出最终的像素图。该方法适用于旧版本,但在较新版本上它似乎不起作用,不显示任何文本。

0 投票
9 回答
91396 浏览

algorithm - 如何有效地确定多边形是凸面、非凸面还是复面?

从手册页XFillPolygon

  • 如果shapeComplex,路径可能会自相交。请注意,路径中的连续重合点不会被视为自相交。

  • 如果shapeConvex,则对于多边形内的每一对点,连接它们的线段不会与路径相交。如果客户端知道,指定Convex可以提高性能。如果为非凸路径指定路径,则图形结果未定义。

  • 如果shapeNonconvex,则路径不会自相交,但形状不是完全凸的。如果客户知道,指定Nonconvex而不是Complex可能会提高性能。如果为自相交路径指定Nonconvex,则图形结果未定义。

我在填充方面遇到了性能问题XFillPolygon,正如手册页所建议的,我要采取的第一步是指定多边形的正确形状。为了安全起见,我目前正在使用Complex 。

是否有一种有效的算法来确定多边形(由一系列坐标定义)是凸的、非凸的还是复杂的?

0 投票
1 回答
6074 浏览

performance - 填充多边形:缠绕规则与奇数规则的性能

对于复杂的多边形(即:自相交),绕组或奇偶填充规则之间的选择会影响多边形的填充方式。

但是对于不相交的多边形,绕组或奇偶填充规则之间是否存在任何性能差异。我知道这将是特定于实现的,但哪种算法对非复杂多边形更有效。

一个后续问题是这些算法中的每一个的复杂性是多少(即 O(what?) )。我想知道是否值得去掉多边形中的一些点(主要是重复的或在同一条线上的点)以提高性能。

PS:如果这很重要,我正在使用 xlib

PPS:我可以确认问题与硬件无关,因为使用不同的显卡不会改变性能

0 投票
3 回答
1180 浏览

linux - XCreateWindow 提供了一个与现有窗口冲突的窗口 ID

我创建了一个使用 XCreateWindow 创建窗口的程序。这在我的系统和许多其他系统上完美运行,但在许多系统上,它会导致一些奇怪的问题。例如,我从中获得的 ID 与启动程序的终端的 ID 冲突。在一种这样的情况下,gnome-terminal 的窗口 ID 也为 0x2400001(父级为 root),而我的程序的窗口 ID 也是 0x2400001(其父级也是 root)。有什么建议可能会出错吗?

0 投票
1 回答
342 浏览

transparency - XFillPolygon:使用像素图传输填充?

由于使用带有 StippleFill 的 XFillPolygon 和像素图的驱动程序问题非常慢。驱动程序提供商在提供修复方面也非常缓慢,所以我需要一个解决方法。

有没有办法使用 XFillPolygon 用透明颜色填充多边形而不使用点画填充和像素图?

谢谢

0 投票
6 回答
1245 浏览

x11 - 任何人仍然直接使用 xlib 编程

我对我在 SO 上遇到的所有与 xlib 相关的问题都没有回应感到惊讶,这是因为没有人再直接使用 xlib 了,还是这是问这些类型问题的错误地方?即使没有人直接使用 xlib,但仍然有人会记住过去的糟糕时光并帮助解决这些问题,但看起来他们并不在这里......

编辑:我还可以在哪些其他地方寻求与 xlib 相关的帮助?

0 投票
1 回答
1754 浏览

c++ - 处理 Xlib/Xt 中的“新顶层窗口”事件

所以我处于需要知道何时创建顶级窗口的情况。我在 Xlib/Xt 级别和不支持 EWMH 规范的窗口管理器上工作。我的想法是挂钩根窗口的 SubstructureNotify 事件。但事情并没有那么简单。

问题是并非每个 CreateNotify 事件都对应于 [b] 顶级 [/b] 窗口的创建。所以我认为我需要做的是以某种方式测试我从事件中获得的窗口,以确认它是顶级窗口。我已经接近了,但一些虚假的窗户仍然可以通过我的网络。例如,在 GTK 应用程序中,如果您有一个下拉框并单击它,则会创建一个新窗口,我不知道如何捕捉和忽略它。这样的窗口与典型的顶级应用程序窗口难以区分。

这是我到目前为止所拥有的:

远射,但有没有人有任何想法我可以尝试?我想不出我还能在这里做多少其他事情。

0 投票
2 回答
3179 浏览

c - 我的 X11 代码有什么问题?

我试图在屏幕上的某个位置获取 X 窗口。当我要求人们提供一个函数来执行此操作时,他们说您只需递归调用 XQueryTree。

这是我认为有些错误的代码片段。当我调试它时,它似乎工作得很好。唯一的问题是它给出的输出看起来有点奇怪。当我在根窗口上执行 XQueryTree 时,我得到了数百个孩子,而我只有五个左右打开。此外,似乎认为在某个根本没有的地方存在一个顶级窗口,并将其作为结果返回。无论我如何移动我的实际窗口,XQueryTree 似乎都表明我的窗口顶部还有另一个窗口(不覆盖整个屏幕。)当我查看它说窗口的位置时,它位于任意点我的桌面。

如果这有任何帮助:显示来自 XOpenDisplay(NULL),而我最初传递给它的根窗口是 XDefaultRootWindow(display)。我正在使用 metacity 在 debian 下运行 gnome。

谢谢!

编辑:对于任何正在搜索类似信息的人:我最终调查了 xwininfo 的来源。关键函数是 dsimple.c 中的 Find_Client,它以某种方式忽略窗口管理器以获取您实际查找的窗口。如果您想查看子窗口,这是我在 dsimple.c 中添加到 Select_Window 的一些代码,它将使用 XTranslateCoordinates 递归地查看子窗口内部。