diff options
author | Daniele E. Domenichelli <daniele.domenichelli@iit.it> | 2013-08-06 09:33:59 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-10-08 14:47:06 (GMT) |
commit | 7efef02df29399d37b692e01fb69de63e558585b (patch) | |
tree | 5faedaafc63060018e252aa8c5f876a3ad9fca7b /Tests/FindGTK2/pangocairo | |
parent | 95fc47aa49515d45afcfb609262bd85025fb4a3d (diff) | |
download | CMake-7efef02df29399d37b692e01fb69de63e558585b.zip CMake-7efef02df29399d37b692e01fb69de63e558585b.tar.gz CMake-7efef02df29399d37b692e01fb69de63e558585b.tar.bz2 |
FindGTK2: Add tests for components and targets in gtk and gtkmm modules
Diffstat (limited to 'Tests/FindGTK2/pangocairo')
-rw-r--r-- | Tests/FindGTK2/pangocairo/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/FindGTK2/pangocairo/main.c | 72 |
2 files changed, 82 insertions, 0 deletions
diff --git a/Tests/FindGTK2/pangocairo/CMakeLists.txt b/Tests/FindGTK2/pangocairo/CMakeLists.txt new file mode 100644 index 0000000..8f61379 --- /dev/null +++ b/Tests/FindGTK2/pangocairo/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 2.8) + +project(pangocairo C) + +find_package(GTK2 COMPONENTS gtk REQUIRED) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +add_executable(pangocairo WIN32 main.c) +target_link_libraries(pangocairo GTK2::pangocairo m) diff --git a/Tests/FindGTK2/pangocairo/main.c b/Tests/FindGTK2/pangocairo/main.c new file mode 100644 index 0000000..78268d6 --- /dev/null +++ b/Tests/FindGTK2/pangocairo/main.c @@ -0,0 +1,72 @@ +/* Taken from https://developer.gnome.org/pango/stable/pango-Cairo-Rendering.html */ + + +#include <math.h> +#include <pango/pangocairo.h> +static void +draw_text (cairo_t *cr) +{ +#define RADIUS 150 +#define N_WORDS 10 +#define FONT "Sans Bold 27" + PangoLayout *layout; + PangoFontDescription *desc; + int i; + /* Center coordinates on the middle of the region we are drawing + */ + cairo_translate (cr, RADIUS, RADIUS); + /* Create a PangoLayout, set the font and text */ + layout = pango_cairo_create_layout (cr); + pango_layout_set_text (layout, "Text", -1); + desc = pango_font_description_from_string (FONT); + pango_layout_set_font_description (layout, desc); + pango_font_description_free (desc); + /* Draw the layout N_WORDS times in a circle */ + for (i = 0; i < N_WORDS; i++) + { + int width, height; + double angle = (360. * i) / N_WORDS; + double red; + cairo_save (cr); + /* Gradient from red at angle == 60 to blue at angle == 240 */ + red = (1 + cos ((angle - 60) * G_PI / 180.)) / 2; + cairo_set_source_rgb (cr, red, 0, 1.0 - red); + cairo_rotate (cr, angle * G_PI / 180.); + /* Inform Pango to re-layout the text with the new transformation */ + pango_cairo_update_layout (cr, layout); + pango_layout_get_size (layout, &width, &height); + cairo_move_to (cr, - ((double)width / PANGO_SCALE) / 2, - RADIUS); + pango_cairo_show_layout (cr, layout); + cairo_restore (cr); + } + /* free the layout object */ + g_object_unref (layout); +} +int main (int argc, char **argv) +{ + cairo_t *cr; + char *filename; + cairo_status_t status; + cairo_surface_t *surface; + if (argc != 2) + { + g_printerr ("Usage: cairosimple OUTPUT_FILENAME\n"); + return 1; + } + filename = argv[1]; + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + 2 * RADIUS, 2 * RADIUS); + cr = cairo_create (surface); + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + cairo_paint (cr); + draw_text (cr); + cairo_destroy (cr); + status = cairo_surface_write_to_png (surface, filename); + cairo_surface_destroy (surface); + if (status != CAIRO_STATUS_SUCCESS) + { + g_printerr ("Could not save png to '%s'\n", filename); + return 1; + } + return 0; +} |