Feat/font autoscale (#288)
* PoC font autosize feature * Take enumerables or 'auto' keyword for autoscaling * Allo enumerables of font_size per card, where the largest font size that does not ellipsize is chosen * Use ellipsize: :autoscale keyword to determine font autosizing * Use binary search to find the correct font size * Consider new ellipsize option in testcase * Document ellipsize: :autoscale option * Add ellipsize: :autoscale sample to text sample * Fix double multiplication with Pango::SCALE * Scale embedded images with text when autoscaling * Remove stray semicolon * Return dummy value for FontDescription.size in mock_cairo * Update regression test data for autoscale feature. * Add ellipsize: :autoscale example to existing font_autoscale sample * Add missing :autoscale to list of options in documentation
This commit is contained in:
@@ -32,6 +32,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -49,6 +50,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -66,6 +68,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -83,6 +86,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -100,6 +104,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -117,6 +122,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -135,23 +141,6 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([40, 128])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thinker"])
|
||||
pango: width=([102400])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment center>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
@@ -171,23 +160,26 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 200])
|
||||
cairo: translate([40, 128])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thief and Grifter only!!"])
|
||||
pango: text=(["Thinker"])
|
||||
pango: width=([102400])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: alignment=([#<Pango::Alignment center>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -205,6 +197,25 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 200])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thief and Grifter only!!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -222,6 +233,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -239,22 +251,6 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 650])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Grifter and Mastermind only!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
@@ -273,15 +269,16 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 300])
|
||||
cairo: translate([25, 650])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thief and Mastermind only!!"])
|
||||
pango: text=(["Grifter and Mastermind only!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
@@ -290,6 +287,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -307,6 +305,25 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 300])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thief and Mastermind only!!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -324,6 +341,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -341,6 +359,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -358,22 +377,6 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 400])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Thief through Grifter with id lookup!!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
@@ -392,15 +395,16 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 500])
|
||||
cairo: translate([25, 400])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Only for Thinkers!"])
|
||||
pango: text=(["Thief through Grifter with id lookup!!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
@@ -409,6 +413,7 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
@@ -426,6 +431,25 @@ cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
cairo: set_source_color(["black"])
|
||||
cairo: translate([25, 500])
|
||||
cairo: rotate([0])
|
||||
cairo: move_to([0, 0])
|
||||
pango: font_description=([MockDouble])
|
||||
pango: text=(["Only for Thinkers!"])
|
||||
pango: wrap=([#<Pango::WrapMode word-char>])
|
||||
pango: ellipsize=([#<Pango::EllipsizeMode end>])
|
||||
pango: alignment=([#<Pango::Alignment left>])
|
||||
pango: justify=([false])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: move_to([0, 0])
|
||||
cairo: show_pango_layout([MockDouble])
|
||||
pango: ellipsized?([])
|
||||
pango: ellipsized?([])
|
||||
cairo: restore([])
|
||||
cairo: save([])
|
||||
cairo: new_path([])
|
||||
|
||||
Reference in New Issue
Block a user