static void _cairo_scaled_font_init_key (cairo_scaled_font_t *scaled_font, cairo_font_face_t *font_face, const cairo_matrix_t *font_matrix, const cairo_matrix_t *ctm, const cairo_font_options_t *options) { uint32_t hash = FNV1_32_INIT; scaled_font->status = CAIRO_STATUS_SUCCESS; scaled_font->font_face = font_face; scaled_font->font_matrix = *font_matrix; scaled_font->ctm = *ctm; scaled_font->options = *options; /* We do a bytewise hash on the font matrices, ignoring the * translation values in the ctm */ hash = _hash_bytes_fnv ((unsigned char *)(&scaled_font->font_matrix.xx), sizeof(cairo_matrix_t), hash); hash = _hash_bytes_fnv ((unsigned char *)(&scaled_font->ctm.xx), sizeof(double) * 4, hash); hash ^= (unsigned long) scaled_font->font_face; hash ^= cairo_font_options_hash (&scaled_font->options); scaled_font->hash_entry.hash = hash; }
unsigned long FontOptions::hash() { return cairo_font_options_hash( mCairoFontOptions ); }
static long caml_cairo_font_options_hash(value v) { return(cairo_font_options_hash(FONT_OPTIONS_VAL(v))); }
static VALUE cr_options_hash (VALUE self) { return INT2NUM (cairo_font_options_hash (_SELF (self))); }