static void render_test (gconstpointer user_data) { const char *filename = user_data; char *basename; LsmDomDocument *document; LsmDomView *view; LsmBox viewport; unsigned int width, height; cairo_t *cairo; cairo_surface_t *surface; basename = g_path_get_basename (filename); document = lsm_dom_document_new_from_path (filename, NULL); g_assert (LSM_IS_DOM_DOCUMENT (document)); view = lsm_dom_document_create_view (document); g_assert (LSM_IS_DOM_VIEW (view)); viewport.x = 0.0; viewport.y = 0.0; viewport.width = 480.0; viewport.height = 360.0; lsm_dom_view_set_resolution (view, 96); lsm_dom_view_set_viewport_pixels (view, &viewport); lsm_dom_view_get_size_pixels (LSM_DOM_VIEW (view), &width, &height, NULL); surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); cairo = cairo_create (surface); cairo_surface_destroy (surface); if (cairo_status (cairo) == CAIRO_STATUS_SUCCESS) { lsm_dom_view_render (LSM_DOM_VIEW (view), cairo, 1, 1); if (cairo_status (cairo) != CAIRO_STATUS_SUCCESS) { g_test_message ("cairo_status = %s", cairo_status_to_string (cairo_status (cairo))); if (!g_key_file_get_boolean (suite_options, basename, "ignore-cairo-status", NULL)) { g_test_message ("incorrect cairo status"); g_test_fail (); } } } cairo_destroy (cairo); g_object_unref (view); g_object_unref (document); g_free (basename); }
static void render_test (gconstpointer user_data) { const char *filename = user_data; LsmDomDocument *document; LsmDomView *view; LsmBox viewport; unsigned int width, height; cairo_t *cairo; cairo_surface_t *surface; document = lsm_dom_document_new_from_path (filename, NULL); g_assert (LSM_IS_DOM_DOCUMENT (document)); view = lsm_dom_document_create_view (document); g_assert (LSM_IS_DOM_VIEW (view)); viewport.x = 0.0; viewport.y = 0.0; viewport.width = 480.0; viewport.height = 360.0; lsm_dom_view_set_resolution (view, 96); lsm_dom_view_set_viewport_pixels (view, &viewport); lsm_dom_view_get_size_pixels (LSM_DOM_VIEW (view), &width, &height, NULL); surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); cairo = cairo_create (surface); cairo_surface_destroy (surface); if (cairo_status (cairo) == CAIRO_STATUS_SUCCESS) { lsm_dom_view_render (LSM_DOM_VIEW (view), cairo, 1, 1); g_assert (cairo_status (cairo) == CAIRO_STATUS_SUCCESS); } cairo_destroy (cairo); g_object_unref (view); g_object_unref (document); }
static void lsm_dom_view_finalize (GObject *object) { LsmDomView *view = LSM_DOM_VIEW (object); if (view->document) g_object_unref (view->document); if (view->pango_layout != NULL) g_object_unref (view->pango_layout); if (view->cairo != NULL) cairo_destroy (view->cairo); g_object_unref (view->measure_pango_layout); pango_font_description_free (view->font_description); parent_class->finalize (object); }
static LsmDomView * lsm_svg_document_create_view (LsmDomDocument *document) { return LSM_DOM_VIEW (lsm_svg_view_new (LSM_SVG_DOCUMENT (document))); }
static LsmDomView * lsm_mathml_document_create_view (LsmDomDocument *document) { return LSM_DOM_VIEW (lsm_mathml_view_new (LSM_MATHML_DOCUMENT (document))); }