test/test_font_face.rb in cairo-1.17.6 vs test/test_font_face.rb in cairo-1.17.7
- old
+ new
@@ -117,10 +117,17 @@
render_glyph_args = []
face.on_render_glyph do |*args|
render_glyph_args << args
end
+ render_color_glyph_args = []
+ if face.respond_to?(:on_render_color_glyph)
+ face.on_render_color_glyph do |*args|
+ render_color_glyph_args << args
+ end
+ end
+
text_to_glyphs_args = []
face.on_text_to_glyphs do |*args|
text_to_glyphs_args << args
scaled_font, utf8, data = args
data.cluster_flags = :backward
@@ -135,30 +142,46 @@
scaled_font = Cairo::ScaledFont.new(face,
Cairo::Matrix.identity,
Cairo::Matrix.identity,
Cairo::FontOptions.new)
- result = scaled_font.text_to_glyphs(0, 0, "text")
- assert_equal([[[Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]],
- [[Cairo::ScaledFont, codepoint("t"),
- Cairo::Context, Cairo::TextExtents],
- [Cairo::ScaledFont, codepoint("e"),
- Cairo::Context, Cairo::TextExtents],
- [Cairo::ScaledFont, codepoint("x"),
- Cairo::Context, Cairo::TextExtents]],
- [[Cairo::ScaledFont, "text",
- Cairo::UserFontFace::TextToGlyphsData]],
- [[Cairo::ScaledFont, codepoint("t")],
- [Cairo::ScaledFont, codepoint("e")],
- [Cairo::ScaledFont, codepoint("x")],
- [Cairo::ScaledFont, codepoint("t")]],
- [[], [], Cairo::TextClusterFlag::BACKWARD]],
- [classify_cairo_object(init_args),
- classify_cairo_object(render_glyph_args),
- classify_cairo_object(text_to_glyphs_args),
- classify_cairo_object(unicode_to_glyph_args),
- result])
+ result = scaled_font.text_to_glyphs(0, 0, "abc")
+ expected = {
+ init_args: [
+ [Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents],
+ ],
+ render_glyph_args: [
+ [Cairo::ScaledFont, codepoint("a"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("b"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("c"), Cairo::Context, Cairo::TextExtents],
+ ],
+ render_color_glyph_args: [],
+ text_to_glyphs_args: [
+ [Cairo::ScaledFont, "abc", Cairo::UserFontFace::TextToGlyphsData],
+ ],
+ unicode_to_glyph_args: [
+ [Cairo::ScaledFont, codepoint("a")],
+ [Cairo::ScaledFont, codepoint("b")],
+ [Cairo::ScaledFont, codepoint("c")],
+ ],
+ result: [[], [], Cairo::TextClusterFlag::BACKWARD],
+ }
+ actual = {
+ init_args: classify_cairo_object(init_args),
+ render_glyph_args: classify_cairo_object(render_glyph_args),
+ render_color_glyph_args: classify_cairo_object(render_color_glyph_args),
+ text_to_glyphs_args: classify_cairo_object(text_to_glyphs_args),
+ unicode_to_glyph_args: classify_cairo_object(unicode_to_glyph_args),
+ result: result,
+ }
+ if Cairo.satisfied_version?(1, 17, 6)
+ expected[:render_glyph_args],
+ expected[:render_color_glyph_args] =
+ expected[:render_color_glyph_args],
+ expected[:render_glyph_args]
+ end
+ assert_equal(expected, actual)
end
if Cairo.satisfied_version?(1, 7, 2)
class CustomUserFontFace < Cairo::UserFontFace
attr_reader :init_args
@@ -208,107 +231,58 @@
scaled_font = Cairo::ScaledFont.new(face,
Cairo::Matrix.identity,
Cairo::Matrix.identity,
Cairo::FontOptions.new)
- result = scaled_font.text_to_glyphs(0, 0, "text")
+ result = scaled_font.text_to_glyphs(0, 0, "abc")
+ expected = {
+ init_args: [
+ [Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]
+ ],
+ text_to_glyphs_args: [
+ [Cairo::ScaledFont, "abc", Cairo::UserFontFace::TextToGlyphsData],
+ ],
+ unicode_to_glyph_args: [
+ [Cairo::ScaledFont, codepoint("a")],
+ [Cairo::ScaledFont, codepoint("b")],
+ [Cairo::ScaledFont, codepoint("c")],
+ ],
+ result: [
+ [],
+ [],
+ Cairo::TextClusterFlag::BACKWARD,
+ ],
+ }
+ actual = {
+ init_args: classify_cairo_object(face.init_args),
+ text_to_glyphs_args:
+ classify_cairo_object(face.text_to_glyphs_args),
+ unicode_to_glyph_args:
+ classify_cairo_object(face.unicode_to_glyph_args),
+ result: result,
+ }
if Cairo.satisfied_version?(1, 17, 6)
- assert_equal({
- init_args: [
- [Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]
- ],
- render_glyph_args: [],
- render_color_glyph_args: [
- [
- Cairo::ScaledFont, codepoint("t"),
- Cairo::Context, Cairo::TextExtents,
- ],
- [
- Cairo::ScaledFont, codepoint("e"),
- Cairo::Context, Cairo::TextExtents,
- ],
- [
- Cairo::ScaledFont, codepoint("x"),
- Cairo::Context, Cairo::TextExtents,
- ],
- ],
- text_to_glyphs_args: [
- [
- Cairo::ScaledFont, "text",
- Cairo::UserFontFace::TextToGlyphsData],
- ],
- unicode_to_glyph_args: [
- [Cairo::ScaledFont, codepoint("t")],
- [Cairo::ScaledFont, codepoint("e")],
- [Cairo::ScaledFont, codepoint("x")],
- [Cairo::ScaledFont, codepoint("t")],
- ],
- result: [
- [],
- [],
- Cairo::TextClusterFlag::BACKWARD,
- ],
- },
- {
- init_args: classify_cairo_object(face.init_args),
- render_glyph_args:
- classify_cairo_object(face.render_glyph_args),
- render_color_glyph_args:
- classify_cairo_object(face.render_color_glyph_args),
- text_to_glyphs_args:
- classify_cairo_object(face.text_to_glyphs_args),
- unicode_to_glyph_args:
- classify_cairo_object(face.unicode_to_glyph_args),
- result: result,
- })
+ expected[:render_color_glyph_args] = [
+ [Cairo::ScaledFont, codepoint("a"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("b"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("c"), Cairo::Context, Cairo::TextExtents],
+ ]
+ actual[:render_color_glyph_args] =
+ classify_cairo_object(face.render_color_glyph_args)
+ expected[:render_glyph_args] = []
+ actual[:render_glyph_args] =
+ classify_cairo_object(face.render_glyph_args)
else
- assert_equal({
- init_args: [
- [Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]
- ],
- render_glyph_args: [
- [
- Cairo::ScaledFont, codepoint("t"),
- Cairo::Context, Cairo::TextExtents,
- ],
- [
- Cairo::ScaledFont, codepoint("e"),
- Cairo::Context, Cairo::TextExtents,
- ],
- [
- Cairo::ScaledFont, codepoint("x"),
- Cairo::Context, Cairo::TextExtents,
- ],
- ],
- text_to_glyphs_args: [
- [
- Cairo::ScaledFont, "text",
- Cairo::UserFontFace::TextToGlyphsData],
- ],
- unicode_to_glyph_args: [
- [Cairo::ScaledFont, codepoint("t")],
- [Cairo::ScaledFont, codepoint("e")],
- [Cairo::ScaledFont, codepoint("x")],
- [Cairo::ScaledFont, codepoint("t")],
- ],
- result: [
- [],
- [],
- Cairo::TextClusterFlag::BACKWARD,
- ],
- },
- {
- init_args: classify_cairo_object(face.init_args),
- render_glyph_args:
- classify_cairo_object(face.render_glyph_args),
- text_to_glyphs_args:
- classify_cairo_object(face.text_to_glyphs_args),
- unicode_to_glyph_args:
- classify_cairo_object(face.unicode_to_glyph_args),
- result: result,
- })
+ expected[:render_glyph_args] = [
+ [Cairo::ScaledFont, codepoint("a"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("b"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("c"), Cairo::Context, Cairo::TextExtents],
+ ]
+ actual[:render_glyph_args] =
+ classify_cairo_object(face.render_glyph_args)
end
+ assert_equal(expected, actual)
end
def test_user_font_face_class_and_callback
only_cairo_version(1, 7, 2)
@@ -322,10 +296,17 @@
render_glyph_args = []
face.on_render_glyph do |*args|
render_glyph_args << args
end
+ render_color_glyph_args = []
+ if face.respond_to?(:on_render_color_glyph)
+ face.on_render_color_glyph do |*args|
+ render_color_glyph_args << args
+ end
+ end
+
text_to_glyphs_args = []
face.on_text_to_glyphs do |*args|
text_to_glyphs_args << args
scaled_font, utf8, data = args
data.cluster_flags = :backward
@@ -340,37 +321,66 @@
scaled_font = Cairo::ScaledFont.new(face,
Cairo::Matrix.identity,
Cairo::Matrix.identity,
Cairo::FontOptions.new)
- result = scaled_font.text_to_glyphs(0, 0, "text")
- assert_equal([[[Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]],
- [[Cairo::ScaledFont, codepoint("t"),
- Cairo::Context, Cairo::TextExtents],
- [Cairo::ScaledFont, codepoint("e"),
- Cairo::Context, Cairo::TextExtents],
- [Cairo::ScaledFont, codepoint("x"),
- Cairo::Context, Cairo::TextExtents]],
- [[Cairo::ScaledFont, "text",
- Cairo::UserFontFace::TextToGlyphsData]],
- [[Cairo::ScaledFont, codepoint("t")],
- [Cairo::ScaledFont, codepoint("e")],
- [Cairo::ScaledFont, codepoint("x")],
- [Cairo::ScaledFont, codepoint("t")]],
- [],
- [],
- [],
- [],
- [[], [], Cairo::TextClusterFlag::BACKWARD]],
- [classify_cairo_object(init_args),
- classify_cairo_object(render_glyph_args),
- classify_cairo_object(text_to_glyphs_args),
- classify_cairo_object(unicode_to_glyph_args),
- classify_cairo_object(face.init_args),
- classify_cairo_object(face.render_glyph_args),
- classify_cairo_object(face.text_to_glyphs_args),
- classify_cairo_object(face.unicode_to_glyph_args),
- result])
+ result = scaled_font.text_to_glyphs(0, 0, "abc")
+ expected = {
+ callback_init_args: [
+ [
+ Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents,
+ ],
+ ],
+ callback_render_glyph_args: [
+ [Cairo::ScaledFont, codepoint("a"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("b"), Cairo::Context, Cairo::TextExtents],
+ [Cairo::ScaledFont, codepoint("c"), Cairo::Context, Cairo::TextExtents],
+ ],
+ callback_render_color_glyph_args: [],
+ callback_text_to_glyphs_args: [
+ [Cairo::ScaledFont, "abc", Cairo::UserFontFace::TextToGlyphsData],
+ ],
+ callback_unicode_to_glyph_args: [
+ [Cairo::ScaledFont, codepoint("a")],
+ [Cairo::ScaledFont, codepoint("b")],
+ [Cairo::ScaledFont, codepoint("c")],
+ ],
+ object_init_args: [],
+ object_render_glyph_args: [],
+ object_render_color_glyph_args: [],
+ object_text_to_glyphs_args: [],
+ object_unicode_to_glyph_args: [],
+ result: [[], [], Cairo::TextClusterFlag::BACKWARD],
+ }
+ actual = {
+ callback_init_args: classify_cairo_object(init_args),
+ callback_render_glyph_args:
+ classify_cairo_object(render_glyph_args),
+ callback_render_color_glyph_args:
+ classify_cairo_object(render_color_glyph_args),
+ callback_text_to_glyphs_args:
+ classify_cairo_object(text_to_glyphs_args),
+ callback_unicode_to_glyph_args:
+ classify_cairo_object(unicode_to_glyph_args),
+ object_init_args:
+ classify_cairo_object(face.init_args),
+ object_render_glyph_args:
+ classify_cairo_object(face.render_glyph_args),
+ object_render_color_glyph_args:
+ classify_cairo_object(face.render_color_glyph_args),
+ object_text_to_glyphs_args:
+ classify_cairo_object(face.text_to_glyphs_args),
+ object_unicode_to_glyph_args:
+ classify_cairo_object(face.unicode_to_glyph_args),
+ result: result,
+ }
+ if Cairo.satisfied_version?(1, 17, 6)
+ expected[:callback_render_glyph_args],
+ expected[:callback_render_color_glyph_args] =
+ expected[:callback_render_color_glyph_args],
+ expected[:callback_render_glyph_args]
+ end
+ assert_equal(expected, actual)
end
def classify_cairo_object(object)
if object.is_a?(Array)
object.collect {|obj| classify_cairo_object(obj)}