mirror of
https://github.com/vidarh/ruby-x11
synced 2024-12-26 09:59:02 +01:00
Cleanups
This commit is contained in:
parent
d7029c2441
commit
e52fb412ee
2 changed files with 62 additions and 97 deletions
|
@ -143,7 +143,7 @@ def render_glyph(display, wid, x,y, ch)
|
|||
#p img
|
||||
# p ch
|
||||
display.put_image(
|
||||
X11::Form::ZPixmap, wid, $gc2,
|
||||
:ZPixmap, wid, $gc2,
|
||||
mtx.min_width,mtx.min_height,
|
||||
x, y - mtx.y_offset, 0, depth, data
|
||||
)
|
||||
|
@ -158,12 +158,12 @@ def render_str(display, wid, x,y, str)
|
|||
end
|
||||
|
||||
def redraw(dpy, wid, gc)
|
||||
dpy.poly_fill_rectangle(wid, gc, [X11::Form::Rectangle.new(20,20, 60, 80)])
|
||||
dpy.poly_fill_rectangle(wid, gc, [20,20, 60, 80])
|
||||
dpy.clear_area(false, wid, 30, 30, 5, 5)
|
||||
dpy.image_text16(wid, $gc2, 30, 70, "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ")
|
||||
#"\u25f0\u25ef Hello World")
|
||||
dpy.put_image(
|
||||
X11::Form::ZPixmap, wid, $gc2,
|
||||
:ZPixmap, wid, $gc2,
|
||||
$png.width, $png.height, 80, 120, 0, 24, $data
|
||||
)
|
||||
render_str(dpy, wid, 30,90, 'HelloWorld')
|
||||
|
|
|
@ -116,7 +116,7 @@ module X11
|
|||
# FIXME: 30: SelectionRequest
|
||||
# FIXME: 31: SelectionNotify
|
||||
# FIXME: 32: ColormapNotify
|
||||
when 33 then return Form::ClientMessage.from_packet(StringIO.new(data))
|
||||
when 33 then return Form::ClientMessage.from_packet(io)
|
||||
# FIXME: 34: MappingNotify
|
||||
else
|
||||
STDERR.puts "FIXME: Event: #{type}"
|
||||
|
@ -165,11 +165,7 @@ module X11
|
|||
end
|
||||
|
||||
def write_request ob
|
||||
#p data
|
||||
#p [:write_request, @requestseq, ob.class]
|
||||
data = ob.to_packet if ob.respond_to?(:to_packet)
|
||||
#p [:AddGlyph,data] if ob.is_a?(X11::Form::XRenderAddGlyphs)
|
||||
#p [ob.request_length.to_i*4, data.size]
|
||||
raise "BAD LENGTH for #{ob.inspect} (#{ob.request_length.to_i*4} ! #{data.size} " if ob.request_length && ob.request_length.to_i*4 != data.size
|
||||
write_raw_packet(data)
|
||||
end
|
||||
|
@ -252,24 +248,21 @@ module X11
|
|||
values = values.sort_by{_1[0]}
|
||||
mask = values.inject(0) {|acc,v| (acc | v[0]) }
|
||||
values = values.map{_1[1]}
|
||||
write_request(
|
||||
X11::Form::ChangeWindowAttributes.new(wid, mask, values)
|
||||
)
|
||||
write_request(Form::ChangeWindowAttributes.new(wid, mask, values))
|
||||
end
|
||||
|
||||
def select_input(w, events) = change_window_attributes(w, values: {Form::CWEventMask => events})
|
||||
|
||||
def atom(name)
|
||||
return name if name.is_a?(Integer) # Allow atom(atom_integer_or_symbol)
|
||||
name = name.to_sym
|
||||
intern_atom(false, name) if !@atoms[name]
|
||||
@atoms[name]
|
||||
end
|
||||
|
||||
def query_extension(name)
|
||||
r = write_sync(X11::Form::QueryExtension.new(name), X11::Form::QueryExtensionReply)
|
||||
@extensions[name] = {
|
||||
major: r.major_opcode
|
||||
}
|
||||
r = write_sync(Form::QueryExtension.new(name), Form::QueryExtensionReply)
|
||||
@extensions[name] = { major: r.major_opcode }
|
||||
r
|
||||
end
|
||||
|
||||
|
@ -282,38 +275,33 @@ module X11
|
|||
end
|
||||
|
||||
def intern_atom(flag, name)
|
||||
reply = write_sync(X11::Form::InternAtom.new(flag, name.to_s),
|
||||
X11::Form::InternAtomReply)
|
||||
reply = write_sync(Form::InternAtom.new(flag, name.to_s),Form::InternAtomReply)
|
||||
if reply
|
||||
@atoms[name.to_sym] = reply.atom
|
||||
end
|
||||
end
|
||||
|
||||
def get_atom_name(atom)
|
||||
reply = write_sync(X11::Form::GetAtomName.new(atom), X11::Form::AtomName)
|
||||
reply&.name
|
||||
end
|
||||
|
||||
def destroy_window(window) = write_request(X11::Form::DestroyWindow.new(window))
|
||||
def get_geometry(drawable) = write_sync(X11::Form::GetGeometry.new(drawable), X11::Form::Geometry)
|
||||
def get_atom_name(atom) = write_sync(Form::GetAtomName.new(atom), Form::AtomName)&.name
|
||||
def destroy_window(window) = write_request(Form::DestroyWindow.new(window))
|
||||
def get_geometry(drawable) = write_sync(Form::GetGeometry.new(drawable), Form::Geometry)
|
||||
|
||||
def get_keyboard_mapping(min_keycode=display_info.min_keycode, count= display_info.max_keycode - min_keycode)
|
||||
write_sync(X11::Form::GetKeyboardMapping.new(min_keycode, count), X11::Form::GetKeyboardMappingReply)
|
||||
write_sync(Form::GetKeyboardMapping.new(min_keycode, count), Form::GetKeyboardMappingReply)
|
||||
end
|
||||
|
||||
def create_colormap(alloc, window, visual)
|
||||
mid = new_id
|
||||
write_request(X11::Form::CreateColormap.new(alloc, mid, window, visual))
|
||||
write_request(Form::CreateColormap.new(alloc, mid, window, visual))
|
||||
mid
|
||||
end
|
||||
|
||||
def get_property(window, property, type, offset: 0, length: 4, delete: false)
|
||||
property = atom(property) if !property.is_a?(Integer)
|
||||
property = atom(property)
|
||||
type = atom_enum(type)
|
||||
|
||||
result = write_sync(X11::Form::GetProperty.new(
|
||||
result = write_sync(Form::GetProperty.new(
|
||||
delete, window, property, type, offset, length
|
||||
), X11::Form::Property)
|
||||
), Form::Property)
|
||||
|
||||
if result && result.format != 0
|
||||
case result.format
|
||||
|
@ -335,25 +323,22 @@ module X11
|
|||
|
||||
mode = open_enum(mode, {replace: 0, prepend: 1, append: 2})
|
||||
type = atom_enum(type)
|
||||
write_request(X11::Form::ChangeProperty.new(mode, window, property, type, format, data))
|
||||
write_request(Form::ChangeProperty.new(mode, window, property, type, format, data))
|
||||
end
|
||||
|
||||
def list_fonts(*args)
|
||||
write_sync(X11::Form::ListFonts.new(*args),
|
||||
X11::Form::ListFontsReply)
|
||||
end
|
||||
def list_fonts(...) = write_sync(Form::ListFonts.new(...), Form::ListFontsReply)
|
||||
def open_font(...) = write_request(Form::OpenFont.new(...))
|
||||
def change_gc(...) = write_request(Form::ChangeGC.new(...))
|
||||
def change_save_set(...)= write_request(Form::ChangeSaveSet.new(...))
|
||||
|
||||
def open_font(*args) = write_request(X11::Form::OpenFont.new(*args))
|
||||
def change_gc(*args) = write_request(X11::Form::ChangeGC.new(*args))
|
||||
def change_save_set(...)= write_request(X11::Form::ChangeSaveSet.new(...))
|
||||
def reparent_window(window, parent, x, y, save: true)
|
||||
# You so almost always want this that it should've been a single request
|
||||
change_save_set(0, window) if save
|
||||
write_request(X11::Form::ReparentWindow.new(window, parent, x,y))
|
||||
write_request(Form::ReparentWindow.new(window, parent, x,y))
|
||||
end
|
||||
|
||||
def map_window(*args) = write_request(X11::Form::MapWindow.new(*args))
|
||||
def unmap_window(*args) = write_request(X11::Form::UnmapWindow.new(*args))
|
||||
def map_window(...) = write_request(Form::MapWindow.new(...))
|
||||
def unmap_window(...) = write_request(Form::UnmapWindow.new(...))
|
||||
|
||||
def u8(*args) = args.pack("c*")
|
||||
def u16(*args) = args.pack("v*")
|
||||
|
@ -377,7 +362,7 @@ module X11
|
|||
end
|
||||
|
||||
def grab_key(owner_events, grab_window, modifiers, keycode, pointer_mode, keyboard_mode)
|
||||
write_request(X11::Form::GrabKey.new(
|
||||
write_request(Form::GrabKey.new(
|
||||
owner_events,
|
||||
grab_window,
|
||||
modifiers,
|
||||
|
@ -389,7 +374,7 @@ module X11
|
|||
|
||||
def grab_button(owner_events, grab_window, event_mask, pointer_mode,
|
||||
keyboard_mode, confine_to, cursor, button, modifiers)
|
||||
write_request(X11::Form::GrabButton.new(
|
||||
write_request(Form::GrabButton.new(
|
||||
owner_events, grab_window, event_mask,
|
||||
pointer_mode == :async ? 1 : 0,
|
||||
keyboard_mode == :async ? 1 : 0,
|
||||
|
@ -397,41 +382,27 @@ module X11
|
|||
)
|
||||
end
|
||||
|
||||
def set_value(values, mask, x)
|
||||
if x
|
||||
values << x
|
||||
mask
|
||||
else
|
||||
0
|
||||
end
|
||||
end
|
||||
|
||||
def configure_window(window, x: nil, y: nil, width: nil, height: nil,
|
||||
border_width: nil, sibling: nil, stack_mode: nil)
|
||||
|
||||
mask = 0
|
||||
values = []
|
||||
|
||||
if x
|
||||
mask |= 0x001
|
||||
values << x
|
||||
end
|
||||
|
||||
if y
|
||||
mask |= 0x002
|
||||
values << y
|
||||
end
|
||||
|
||||
if width
|
||||
mask |= 0x004
|
||||
values << width
|
||||
end
|
||||
|
||||
if height
|
||||
mask |= 0x008
|
||||
values << height
|
||||
end
|
||||
|
||||
if border_width
|
||||
mask |= 0x010
|
||||
values << border_width
|
||||
end
|
||||
|
||||
if sibling
|
||||
mask |= 0x020
|
||||
values << sibling
|
||||
end
|
||||
mask |= set_value(values, 0x001, x)
|
||||
mask |= set_value(values, 0x002, y)
|
||||
mask |= set_value(values, 0x004, width)
|
||||
mask |= set_value(values, 0x008, height)
|
||||
mask |= set_value(values, 0x010, border_width)
|
||||
mask |= set_value(values, 0x020, sibling)
|
||||
|
||||
if stack_mode
|
||||
mask |= 0x040
|
||||
|
@ -455,15 +426,8 @@ module X11
|
|||
# FIXME:
|
||||
# The rest can be found here:
|
||||
# https://tronche.com/gui/x/xlib/GC/manipulating.html#XGCValues
|
||||
if foreground
|
||||
mask |= 0x04
|
||||
args << foreground
|
||||
end
|
||||
if background
|
||||
mask |= 0x08
|
||||
args << background
|
||||
end
|
||||
|
||||
mask |= set_value(args, 0x04, foreground)
|
||||
mask |= set_value(args, 0x08, background)
|
||||
|
||||
gc = new_id
|
||||
write_request(X11::Form::CreateGC.new(gc, window, mask, args))
|
||||
|
@ -475,12 +439,13 @@ module X11
|
|||
def copy_area(*args) = write_request(X11::Form::CopyArea.new(*args))
|
||||
def image_text8(*args) = write_request(X11::Form::ImageText8.new(*args))
|
||||
def image_text16(*args)= write_request(X11::Form::ImageText16.new(*args))
|
||||
def poly_fill_rectangle(*args) = write_request(X11::Form::PolyFillRectangle.new(*args))
|
||||
def poly_fill_rectangle(wid, gc, *rects)
|
||||
rects = rects.map{|r| r.is_a?(Array) ? Form::Rectangle.new(*r) : r}
|
||||
write_request(X11::Form::PolyFillRectangle.new(wid, gc, rects))
|
||||
end
|
||||
|
||||
def create_pixmap(depth, drawable, w,h)
|
||||
pid = new_id
|
||||
write_request(X11::Form::CreatePixmap.new(depth, pid, drawable, w,h))
|
||||
pid
|
||||
new_id.tap{|pid| write_request(Form::CreatePixmap.new(depth, pid, drawable, w,h)) }
|
||||
end
|
||||
|
||||
# XRender
|
||||
|
@ -506,8 +471,8 @@ module X11
|
|||
|
||||
def render_query_pict_formats
|
||||
@render_formats ||= write_sync(
|
||||
X11::Form::XRenderQueryPictFormats.new(render_opcode),
|
||||
X11::Form::XRenderQueryPictFormatsReply
|
||||
Form::XRenderQueryPictFormats.new(render_opcode),
|
||||
Form::XRenderQueryPictFormatsReply
|
||||
)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue