text_info->glyphs[text_info->length].hash_key.scale_y =
render_priv->state.scale_y * 0xFFFF;
text_info->glyphs[text_info->length].hash_key.frx =
- render_priv->state.frx * 0xFFFF;
+ rot_key(render_priv->state.frx);
text_info->glyphs[text_info->length].hash_key.fry =
- render_priv->state.fry * 0xFFFF;
+ rot_key(render_priv->state.fry);
text_info->glyphs[text_info->length].hash_key.frz =
- render_priv->state.frz * 0xFFFF;
+ rot_key(render_priv->state.frz);
text_info->glyphs[text_info->length].hash_key.fax =
render_priv->state.fax * 0xFFFF;
text_info->glyphs[text_info->length].hash_key.fay =
{
return (int) (x * 0x10000);
}
+static inline double d22_to_double(int x)
+{
+ return ((double) x) / 0x400000;
+}
+static inline int double_to_d22(double x)
+{
+ return (int) (x * 0x400000);
+}
+
+// Calculate cache key for a rotational angle in degrees
+static inline int rot_key(double a)
+{
+ const int m = double_to_d22(360.0);
+ return double_to_d22(a) % m;
+}
#define FNV1_32A_INIT (unsigned)0x811c9dc5