aligning and valigning based on ink, not logical
This commit is contained in:
@@ -63,13 +63,14 @@ module Squib
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def valign(cc, layout, extents, x, y, valign)
|
||||
def valign(cc, layout, x, y, valign)
|
||||
if layout.height > 0
|
||||
ink_extents = layout.extents[1]
|
||||
case valign
|
||||
when :middle
|
||||
cc.move_to(x, y + (layout.height - extents.height) / (2 * Pango::SCALE))
|
||||
cc.move_to(x, y + (layout.height - ink_extents.height) / (2 * Pango::SCALE))
|
||||
when :bottom
|
||||
cc.move_to(x, y + (layout.height - extents.height) / Pango::SCALE)
|
||||
cc.move_to(x, y + (layout.height - ink_extents.height) / Pango::SCALE)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -97,9 +98,8 @@ module Squib
|
||||
layout = ellipsize(layout, options)
|
||||
layout = align(layout, options)
|
||||
layout.justify = options[:justify] unless options[:justify].nil?
|
||||
logical_extents = layout.extents[0]
|
||||
cc.update_pango_layout(layout)
|
||||
valign(cc, layout, logical_extents, x,y, options[:valign])
|
||||
valign(cc, layout, x,y, options[:valign])
|
||||
cc.update_pango_layout(layout) ; cc.show_pango_layout(layout)
|
||||
draw_text_hint(x,y,layout,options[:hint])
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user