linux xlib函数手册,Xlib 学习笔记
Xlib学习笔记第一章1.2 X Window System概念display:由键盘,鼠标和一个或多个屏幕组成的一个工作站screen:一个display可以有多个screen
server-client模型:窗口管理器事件X扩展第二章 X概念x协议:请求消息回复消息:需要回复的请求比较浪费资源,需要等待网络传输事件:错误:缓冲:xlib会保存请求来使客户端持续运行不至于等待网络传输。引起发送缓冲情况有:调用等待事件函数但事件队列中没有匹配的事件,如:XNextEvent客户端调用从服务器获得信息的函数,Query Fetch Get类函数客户端强制刷新缓冲 XFlush XSync资源为了减少网络传输,x为每个抽象事物使用一个唯一id进行标识(window, gc, etc),也就是atom
properties和atoms
property是每个window拥有的一组属性。atom用来标识每个property,可通过XInternAtom()获得atom。XA_为前坠的宏代表内置的atom窗口管理器:substructure redirection。substurcture引用大小,位置,子窗口z序。redirection代表对窗口配置改变的请求。请求由窗口管理器决定是否实施。Window
Window Characteristics:父窗体:每个窗体都有父窗体,除了root window。窗体坐标系统:以窗体左上角为原点window配置包含: 高和宽,边框宽度,位置xy,z序。depth色深,visual窗体类别 inputoutput, inputonly一组window属性:边框和背景的颜色,当窗体大小变化时窗体内布局如何变化,窗体何时自动保存被遮盖的内容,接受什么类型的事件,是否允许窗体移动显示不同过窗口管理器,窗体使用哪个colormap,窗体内显示什么样的指针。Mapping和 Visibility
XMapWindow()在当前z-order位置映射窗口,XMapRaised()将窗口放到Z-order顶部映射,当窗体是第一次创建时,两者行为一样,都在顶层显示窗体。显示窗体的条件:1。使用XMapWindow或相关函数显示窗体2。祖先窗口必须已经显示3。窗体没有被覆盖(使用XCirculateSubwindows(),XConfigureWindow(),XRestackWindows()改变窗口z-order)4。缓冲被发送到server
5。顶层窗口被映射时,窗口的显示可能延迟,需要等待window manager决定。应用程序应该等到第一个expose事件,表示窗口显示了,并可以进行绘画。当窗体被unmap了,其配置和属性会被保留
2.3图形pixel和color
colormap决定每个像素值对应的颜色。colormap中的每一项称为colorcell
pixel和planes像素的位数成为planes,指定颜色的数量pixmaps和drawables
pixmaps是一部分可绘画的内存。pixmap和window都是drawable
XCreatePixmap创建drawing和gc
tiles和stipples
tiles, 一个pixmap用来重复贴图stipples,一个1depth的pixmap,用来做mask
2.4更多窗体特性2.4.1窗体属性background
border
bit gravity当窗体变化时决定窗体内容如何被保留window gravity当窗体变化时子窗口如何重新定位backing store当重提被覆盖时,窗体内容是否被自动保存,需要xserver支持。DoesBackingStore()用来检查是否支持Saving Under用于popup菜单,当窗体被popup类窗口覆盖时,是否保存被覆盖内容,xserver不一定支持;DoesSaveUnders()来检查events指定接收的时间substructure redirect override是否需要wm干扰colormap指定窗体的virtual colormap
cursor指定指针2.4.2窗体配置指坐标,高宽,边框宽度,z-order。与属性不同,他们有wm进行干扰2.4.4depth和visual
depth就是plane数量,inputonly窗口depth总是0
2.5事件do_not_propagate_mask指定事件不再向父窗口传递2.6 x编程错误处理三类错误:检测创建服务资源的函数返回值编程引起的协议错误 (错误的atom) XErrorHandler重大系统错误,死机或网络错误 XIOErrorHandler
程序退出
WM_PROTOCOLS协议
指定应用程序参与WM_PROTOCOLS协议
Atom wmProtocols = XInternAtom(display, "WM_DELETE_WINDOW", False);
XSetWMProtocols(display, win, &wmProtocols, 1);
收到ClientMessage后,判断 event.xclient.data.l[0] == XInternAtom(display, "WM_DELETE_WINDOW", False), 以确定是否要退出
X资源申请,一般在失败时返回None
5 GC
GC: 存储着绘画时的参数,包括线宽,线条样式,填充样式,前景色,背景色。调用绘画函数时,会使用GC中指定的方式进行绘画。
XCreateGC: 用XGCVaule来设置GC
cap_style:线条末端的样式,如:圆角
Join_Style:线条拐角处的样式
dashes:指定点画线的样式
font:可以使用XLoadFont加载字体。
FillRule:填充规则,再多边交叉的图形当中进行填充
clip_mask: 通过bitmap指定可以绘画的区域
clip_x_origin/cliip_y_origin:指定clip_mask起始坐标
Tiles: 填充图形
Stipples:与Tiles一样,只不过是bitmap,仅使用foreground和background进行填充
5.5 Graphics Tricks
plane_mask:指定一个像素当中,哪些位可以被设置。
function:指定对像素赋值时所使用的方式,是一些位逻辑操作5.6 Graphics Exposure
graphices_exposures:设置为true将导致使用XCopyArea/XCopyPlane时会发送 GrapicsEcpose和 NoExpose事件,这些事件无法通过XSelectEvent进行设置
5.7 subwindow_mode:指定如果有子窗口阻挡的位置是否绘画。
6绘图
6.1.1请求限制: XDrawLines, XDrawPoints....有绘画数量限制,可通过XMaxRequestSize()获得限制6.1.6 XCopyArea XCopyPlane
XCopyPlane可以用来将bitmap复制成相应的位深的pixmap
6.2 Fonts and Text
XFontStruct描述整个字体
XCharStruct描述单个字符
字体的原点不位于左上角,位于baseline
ascent从bashline开始最高高度
descent从bashline开始最低高度
direction字体方向
default_char不存在的字符默认图形
min_bounds最小字符尺寸
max_bounds最大字符尺寸
XDrawImageString用背景色填充
XGetFontProperty等到更多字体细节属性
6.2.10 XFreeFontPath XGetFontPath XSetFontpath设置字体搜索路径
6.3 Regions
用来设置gc中的clip_mask
6.4 Image
在client和server之间传输image
XGetImage,从server端获得图片,在对图片进行操作之前需要将图片的字节序和位序转换成client的
XPutImage,不需要转换字节序和位序,XPutImage会做这件事
7 Color
Colormap颜色表 由ColorCell组成,ColorCell的编号成为Pixel, Pixel的每一个bit成为Plane.
Xcms: X Color manager system用来定义string对应的颜色,支持多种颜色描述方法Colormap
colormap中每个colorcell可以被单独的修改。有些硬件当中仅支持同一时刻只有一个colormap。X提供virtual colormap的概念,virtual colormap通过窗口管理器换进换出
Visual描述可以被创建的colormap的特征
Read/Write Colomap不可共享
Read-Only Colormap可在client间共享
XAllocColor当是Read/Write Colormap时,返回指定RGB值对应的Pixel。当是Read-Only colormap时,返回最接近指定RGB值对应的Pixel。
9 keyboard
keycode -> keysym -> string
XLookupString()用来翻译keycode
XComposeStatus用来键盘输入了不存在
XKeyEvent->keycode按键码
XKeyEvent->state modifier keys状态
9.2 The Pointer三种获取指针轨迹的方法。1.抓取所有MotionEvent
2.通过XQueryPointer获得指针当前位置
3.XGetMotionEvents获取轨迹历史,可以获得两个时间段之间的指针轨迹。并不是所有server都支持
XGrabKeyboard()捕捉模式 GrabModeAsync GrabModeSync
GrabModeSync使用XAllowEvents允许时间发送。
12 Atom
12.4 Selections应用程序间交换数据的方法,采用传统的IPC只能假设所有应用程序位于本机。而X的客户端可能位于不同的主机。
selections分为两个角色:requestor owner
selection交互步骤如下:
1.一端使用SetSelectionOwner获得指定selection的拥有全,同一时刻仅有一个窗口可以获得selection,失去selection的窗口将获得SelectionClear(XSelectionClearEvent)事件
2.XConvertSelection来请求获得selectiond的数据,可以指定要获得数据的格式(通过atom来标识),请求后owner将获得SelectionRequest事件,获得XSelectionRequestEvent结构体
3.owner将数据放入XSelectionEvent结构,并通过XSendEvent向requestor发送SelectionNotify事件。如果property成员为none则表示数据交换失败。
系统默认有XA_PRIMARY XA_SECONDARY
12.5 Cut Buffers
就是screen0上的root窗口的属性,XA_CUT_BUFFER0到XA_CUT_BUFFER7。可通过PropertyChangeMask监测数据变化。
linux xlib函数手册,Xlib 学习笔记相关推荐
- linux xlib函数手册,Xlib 编程手册之颜色
第七章 颜色 这一章说明如何在程序中使用颜色.在 X 中颜色的处理可能比在其它系统更加复杂,因为需要针对许多不同类型显示(display)的可移植性.颜色处理中的一些先进的主题在 X 标准中规定的仍然 ...
- 《鸟哥的Linux私房菜》个人学习笔记-第一篇
<鸟哥的Linux私房菜>个人学习笔记-基础篇 这是一篇一个linux菜鸡自学的笔记 csdn上的各位大手子们好,本人实习生一枚最近想自己深入学习下linux,所以在社区里发博客,希望能记 ...
- Linux内核设计与实现学习笔记目录
**注:**这是别人的笔记,我只是把目录抄过来 <Linux内核设计与实现学习笔记> 1.<Linux内核设计与实现>读书笔记(一)-内核简介 2.<Linux内核设计与 ...
- 《Linux高性能服务器编程》学习笔记
<Linux高性能服务器编程>学习笔记 Linux高性能服务器编程 TCP/IP协议族 TCP/IP协议族体系结构以及主要协议 数据链路层 网络层 传输层 应用层 封装 分用 测试网络 A ...
- 鸟叔linux私房菜基础篇简体,鸟叔的Linux私房菜基础篇-学习笔记(一)
鸟叔的Linux私房菜基础篇-学习笔记(一) 开机进入命令行模式: ctrl+alt+[F1-F6]的任意键进入命令行编辑界面 ctrl+alt+F7进入图形界面模式 开始下达指令 [dmtsai@s ...
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...
- Class4 Linux云上环境搭建学习笔记
Class4 Linux云上环境搭建学习笔记 Linux的远程管理 为Linux环境安装图形化桌面(Gnome) 学习Linux的基本操作 更新一个官方教程 附阿里云高校学习计划的地址 class4 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- cma linux 起始地址,CMA模块学习笔记
CMA模块学习笔记 作者:linuxer 发布于:2017-6-28 18:29 分类:内存管理 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. 学习的 ...
最新文章
- barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜
- 【组队学习】【29期】1. 编程实践(数据可视化)
- 二级分类_iOS 13.3正式版,增加信息联系人二级分类,支持联通VoLTE功能
- django-celery使用
- 如何替公司省下数千万勒索费用
- linux 中w和x 区别,r、w、x权限在文件和目录中的含义有何区别?
- 流量卡物联网卡管理平台源码|PHP管理系统源码
- swift linux服务器,Swift on Linux —— Hello, world!
- 【2016北京集训】魔法游戏
- suse 查看java版本_如何查看当前Linux的版本
- 计算机常用1700英语单词
- 985翻译硕士都在找的这款软件
- 用命令行方式写Android应用
- 腾讯轻量云FREEBSD11.1安装panabit cloud
- 网页调用客户机软件。BS调用CS端的软件。
- SDN交换机在云计算网络中的应用场景
- 使用B站API:http://api.bilibili.com/x/space/upstat?mid=2026561407获取播放量、点赞量的返回报文中data数据缺失问题排查(已解决)
- 如何利用极致业务基础平台构建一个通用企业ERP之十六物料进出明细报表的设计...
- 谷粒商城三阶段课件_高二地理必修三11:(课件)第2章 区域生态环境建设第2节 森林的开发和保护——以亚马孙热带雨林为例...
- 最新“量子纠缠”原子使量子计算机更进一步
热门文章
- jasmine没有调用fixture.detectChanges就取不到元素的原因
- JSP每隔指定的时间段自动刷新页面
- SAP Cloud Platform mobile service的使用过程
- SAP ABAP SQL的execution plan和cache
- SAP UI5应用里的列表处理
- Hybris commerce里用web service为什么查询不到产品的描述信息
- Why Opportunity uses US as local instead of ZH - language determination in
- SAP CRM material上传调试
- IBASE save - my toolset investigation
- 如何使用nodejs代码在新浪微博上发布帖子