コード例 #1
0
static VALUE
rglyph_get_logical_widgths(VALUE self, VALUE text, VALUE embedding_level)
{
    int* logical_widths = NULL;
    int len, array_len, i;
    char* gtext;
    VALUE ret;

    gtext = RVAL2CSTR(text);
    len = RSTRING_LEN(text);

    array_len = g_utf8_strlen(gtext, len);

    logical_widths = g_new(PangoGlyphUnit, array_len);

    pango_glyph_string_get_logical_widths(_SELF(self), gtext, len,
                                          NUM2INT(embedding_level),
                                          logical_widths);

    ret = rb_ary_new();
    for (i = 0; i < array_len; i++){
        rb_ary_push(ret, INT2NUM(logical_widths[i]));
    }

    return ret;
}
コード例 #2
0
static VALUE
rg_get_logical_widths(VALUE self, VALUE rbtext, VALUE rbembedding_level)
{
    PangoGlyphString *glyphs = _SELF(self);
    const char *text = RVAL2CSTR(rbtext);
    long length = RSTRING_LEN(rbtext);
    int embedding_level = NUM2INT(rbembedding_level);
    glong n = g_utf8_strlen(text, length);
    int *logical_widths = g_new(int, n);

    pango_glyph_string_get_logical_widths(glyphs, text, length, embedding_level,
                                          logical_widths);

    return GINTS2RVAL_FREE(logical_widths, n);
}