LibUI 0.5.10용 Glimmer DSL - 모양 리스너
특정 모양에 대해 마우스 이벤트가 발생했는지 감지하는 데 사용할 수 있는 include?(x, y) 메서드에 대해 새로 추가된 지원이 제공되어 모양 바로 아래에 중첩area mouse listeners을 지원합니다.
예제/shape_coloring.rb
요약하면 이제 모양 내에서 area mouse listeners을 직접 사용할 수 있으며 Glimmer DSL for LibUI은 마우스 x,y 좌표가 모양 영역 내에 도달하지 않는 한 실행되지 않도록 합니다(Perfect Shape 보석을 활용하여 수행).
실제로 새 예제Shape Coloring에서 이를 확인할 수 있습니다.
# From: https://github.com/AndyObtiva/glimmer-dsl-libui#shape-coloring
require 'glimmer-dsl-libui'
class ShapeColoring
include Glimmer::LibUI::Application
COLOR_SELECTION = Glimmer::LibUI.interpret_color(:red)
before_body {
@shapes = []
}
body {
window('Shape Coloring', 200, 200) {
margined false
grid {
label("Click a shape to select and\nchange color via color button") {
left 0
top 0
hexpand true
halign :center
vexpand false
}
color_button { |cb|
left 0
top 1
hexpand true
vexpand false
on_changed do
@selected_shape&.fill = cb.color
end
}
area {
left 0
top 2
hexpand true
vexpand true
rectangle(0, 0, 600, 400) { # background shape
fill :white
}
@shapes << colorable(:rectangle, 20, 20, 40, 20) { |shape|
fill :lime
}
@shapes << colorable(:square, 80, 20, 20) { |shape|
fill :blue
}
@shapes << colorable(:circle, 75, 70, 20, 20) { |shape|
fill :green
}
@shapes << colorable(:arc, 120, 70, 40, 0, 145) { |shape|
fill :orange
}
@shapes << colorable(:polygon, 120, 10, 120, 50, 150, 10, 150, 50) {
fill :cyan
}
@shapes << colorable(:polybezier, 20, 40,
30, 100, 50, 80, 80, 110,
40, 120, 20, 120, 30, 91) {
fill :pink
}
}
}
}
}
def colorable(shape_symbol, *args, &content)
send(shape_symbol, *args) do |shape|
on_mouse_up do |area_mouse_event|
old_stroke = Glimmer::LibUI.interpret_color(shape.stroke).slice(:r, :g, :b)
@shapes.each {|sh| sh.stroke = nil}
@selected_shape = nil
unless old_stroke == COLOR_SELECTION
shape.stroke = COLOR_SELECTION.merge(thickness: 2)
@selected_shape = shape
end
end
content.call(shape)
end
end
end
ShapeColoring.launch
해피Glimmering !
Reference
이 문제에 관하여(LibUI 0.5.10용 Glimmer DSL - 모양 리스너), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/andyobtiva/glimmer-dsl-for-libui-0510-shape-listeners-5369텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)