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 学习笔记相关推荐

  1. linux xlib函数手册,Xlib 编程手册之颜色

    第七章 颜色 这一章说明如何在程序中使用颜色.在 X 中颜色的处理可能比在其它系统更加复杂,因为需要针对许多不同类型显示(display)的可移植性.颜色处理中的一些先进的主题在 X 标准中规定的仍然 ...

  2. 《鸟哥的Linux私房菜》个人学习笔记-第一篇

    <鸟哥的Linux私房菜>个人学习笔记-基础篇 这是一篇一个linux菜鸡自学的笔记 csdn上的各位大手子们好,本人实习生一枚最近想自己深入学习下linux,所以在社区里发博客,希望能记 ...

  3. Linux内核设计与实现学习笔记目录

    **注:**这是别人的笔记,我只是把目录抄过来 <Linux内核设计与实现学习笔记> 1.<Linux内核设计与实现>读书笔记(一)-内核简介 2.<Linux内核设计与 ...

  4. 《Linux高性能服务器编程》学习笔记

    <Linux高性能服务器编程>学习笔记 Linux高性能服务器编程 TCP/IP协议族 TCP/IP协议族体系结构以及主要协议 数据链路层 网络层 传输层 应用层 封装 分用 测试网络 A ...

  5. 鸟叔linux私房菜基础篇简体,鸟叔的Linux私房菜基础篇-学习笔记(一)

    鸟叔的Linux私房菜基础篇-学习笔记(一) 开机进入命令行模式: ctrl+alt+[F1-F6]的任意键进入命令行编辑界面 ctrl+alt+F7进入图形界面模式 开始下达指令 [dmtsai@s ...

  6. Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)

    Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...

  7. Class4 Linux云上环境搭建学习笔记

    Class4 Linux云上环境搭建学习笔记 Linux的远程管理 为Linux环境安装图形化桌面(Gnome) 学习Linux的基本操作 更新一个官方教程 附阿里云高校学习计划的地址 class4 ...

  8. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  9. cma linux 起始地址,CMA模块学习笔记

    CMA模块学习笔记 作者:linuxer 发布于:2017-6-28 18:29 分类:内存管理 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. 学习的 ...

最新文章

  1. barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜
  2. 【组队学习】【29期】1. 编程实践(数据可视化)
  3. 二级分类_iOS 13.3正式版,增加信息联系人二级分类,支持联通VoLTE功能
  4. django-celery使用
  5. 如何替公司省下数千万勒索费用
  6. linux 中w和x 区别,r、w、x权限在文件和目录中的含义有何区别?
  7. 流量卡物联网卡管理平台源码|PHP管理系统源码
  8. swift linux服务器,Swift on Linux —— Hello, world!
  9. 【2016北京集训】魔法游戏
  10. suse 查看java版本_如何查看当前Linux的版本
  11. 计算机常用1700英语单词
  12. 985翻译硕士都在找的这款软件
  13. 用命令行方式写Android应用
  14. 腾讯轻量云FREEBSD11.1安装panabit cloud
  15. 网页调用客户机软件。BS调用CS端的软件。
  16. SDN交换机在云计算网络中的应用场景
  17. 使用B站API:http://api.bilibili.com/x/space/upstat?mid=2026561407获取播放量、点赞量的返回报文中data数据缺失问题排查(已解决)
  18. 如何利用极致业务基础平台构建一个通用企业ERP之十六物料进出明细报表的设计...
  19. 谷粒商城三阶段课件_高二地理必修三11:(课件)第2章 区域生态环境建设第2节 森林的开发和保护——以亚马孙热带雨林为例...
  20. 最新“量子纠缠”原子使量子计算机更进一步

热门文章

  1. jasmine没有调用fixture.detectChanges就取不到元素的原因
  2. JSP每隔指定的时间段自动刷新页面
  3. SAP Cloud Platform mobile service的使用过程
  4. SAP ABAP SQL的execution plan和cache
  5. SAP UI5应用里的列表处理
  6. Hybris commerce里用web service为什么查询不到产品的描述信息
  7. Why Opportunity uses US as local instead of ZH - language determination in
  8. SAP CRM material上传调试
  9. IBASE save - my toolset investigation
  10. 如何使用nodejs代码在新浪微博上发布帖子