device changed to conform with BasicLockable requirements. Eliminated hint_style and hint_metrics; unready for v1. Eliminated text_cluster_flags and just set it to be a single bool value where needed because that's the only way it's used currently. Added rgba_color *= == and != operators. Made point operators non-member functions. Changed data member names of matrix_2d to be clearer about where they are in the matrix; names are row-major. Made matrix_2d::invert return a reference to *this to match other matrix_2d modifiers. Made matrix_2d *= a non-member function and added a != operator. Added path_data != operator. marked io2d_error_category functions as override. Renamed toy_font_face to simple_font_face. Eliminated surface::surface(const surface&, const rectangle&). Made surface::finish virtual. Reorganized function layout in surface. Made image_surface ctor used in mapping protected.