#include #include #include int main() { double width = 270, height = 240; double x; cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); cairo_pattern_t *gradient; cairo_t *crc = cairo_create(surface); cairo_font_options_t* font; // Set up font (face is second field in 'xlsfonts'; first field is foundry) font = cairo_font_options_create(); cairo_font_options_set_antialias(font, CAIRO_ANTIALIAS_SUBPIXEL); cairo_set_font_options(crc, font); cairo_select_font_face(crc, "nimbus sans l", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); cairo_set_font_size(crc, 16); cairo_font_options_destroy(font); // Background cairo_rectangle(crc, 0, 0, width, height); cairo_set_source_rgb(crc, 1, 1, 1); cairo_fill(crc); ////////////////////////////////////// // Texel 1 cairo_rectangle(crc, 10, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0.5, 1); cairo_fill_preserve(crc); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 34, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 33, 45); cairo_show_text(crc, "1"); // Texel 4 cairo_rectangle(crc, 60, 50, 50, 20); cairo_set_source_rgb(crc, 1, 0, 0); cairo_fill_preserve(crc); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 84, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 83, 45); cairo_show_text(crc, "4"); // Texel 4 cairo_rectangle(crc, 160, 50, 50, 20); cairo_set_source_rgb(crc, 0, 1, 1); cairo_fill_preserve(crc); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 184, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 183, 45); cairo_show_text(crc, "4"); // Texel 1 cairo_rectangle(crc, 210, 50, 50, 20); cairo_set_source_rgb(crc, 1, 0, 1); cairo_fill_preserve(crc); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 234, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 233, 45); cairo_show_text(crc, "1"); // Texel 6 cairo_set_line_width(crc, 4); cairo_rectangle(crc, 110, 50, 50, 20); cairo_set_source_rgb(crc, 1, 1, 0); cairo_fill_preserve(crc); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_set_line_width(crc, 2); cairo_rectangle(crc, 134, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 133, 45); cairo_show_text(crc, "6"); ////////////////////////////////////// cairo_translate(crc, 0, 75); ////////////////////////////////////// gradient = cairo_pattern_create_linear(10, 0, 260, 0); cairo_pattern_add_color_stop_rgb(gradient, 0, 0, 0.5, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.1, 0, 0.5, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.3, 1, 0, 0); cairo_pattern_add_color_stop_rgb(gradient, 0.5, 1, 1, 0); cairo_pattern_add_color_stop_rgb(gradient, 0.7, 0, 1, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.9, 1, 0, 1); cairo_pattern_add_color_stop_rgb(gradient, 1, 1, 0, 1); cairo_set_source(crc, gradient); cairo_rectangle(crc, 10, 50, 250, 20); cairo_fill(crc); cairo_pattern_destroy(gradient); // Texel 1 cairo_rectangle(crc, 10, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 34, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 33, 45); cairo_show_text(crc, "1"); // Texel 4 cairo_rectangle(crc, 60, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 84, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 83, 45); cairo_show_text(crc, "4"); // Texel 4 cairo_rectangle(crc, 160, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 184, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 183, 45); cairo_show_text(crc, "4"); // Texel 1 cairo_rectangle(crc, 210, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_rectangle(crc, 234, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 233, 45); cairo_show_text(crc, "1"); // Texel 6 cairo_set_line_width(crc, 4); cairo_rectangle(crc, 110, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_set_line_width(crc, 2); cairo_rectangle(crc, 134, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 133, 45); cairo_show_text(crc, "6"); ////////////////////////////////////// cairo_translate(crc, 0, 75); ////////////////////////////////////// gradient = cairo_pattern_create_linear(10, 0, 260, 0); cairo_pattern_add_color_stop_rgb(gradient, 0, 0, 0.5, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.1, 0, 0.5, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.3, 1, 0, 0); cairo_pattern_add_color_stop_rgb(gradient, 0.5, 1, 1, 0); cairo_pattern_add_color_stop_rgb(gradient, 0.7, 0, 1, 1); cairo_pattern_add_color_stop_rgb(gradient, 0.9, 1, 0, 1); cairo_pattern_add_color_stop_rgb(gradient, 1, 1, 0, 1); cairo_set_source(crc, gradient); cairo_rectangle(crc, 10, 50, 250, 20); cairo_fill(crc); cairo_pattern_destroy(gradient); // Texel 1 cairo_rectangle(crc, 10, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); // Texel 4 cairo_rectangle(crc, 60, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); // 1-4 Span cairo_set_antialias(crc, CAIRO_ANTIALIAS_NONE); cairo_set_line_width(crc, 1); cairo_rectangle(crc, 34, 59, 3, 3); cairo_stroke(crc); cairo_rectangle(crc, 84, 59, 3, 3); cairo_stroke(crc); cairo_move_to(crc, 37, 60); cairo_line_to(crc, 84, 60); cairo_stroke(crc); cairo_set_line_width(crc, 2); cairo_set_antialias(crc, CAIRO_ANTIALIAS_DEFAULT); // Texel 5 x = 35 + (85 - 35) * 4 / 5.0; cairo_rectangle(crc, x - 1, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, x - 4, 45); cairo_show_text(crc, "5"); // Texel 4 cairo_rectangle(crc, 160, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); // Texel 1 cairo_rectangle(crc, 210, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); // 4-1 Span cairo_set_antialias(crc, CAIRO_ANTIALIAS_NONE); cairo_set_line_width(crc, 1); cairo_rectangle(crc, 184, 59, 3, 3); cairo_stroke(crc); cairo_rectangle(crc, 234, 59, 3, 3); cairo_stroke(crc); cairo_move_to(crc, 187, 60); cairo_line_to(crc, 234, 60); cairo_stroke(crc); cairo_set_line_width(crc, 2); cairo_set_antialias(crc, CAIRO_ANTIALIAS_DEFAULT); // Texel 5 x = 185 + (235 - 185) * 1 / 5.0; cairo_rectangle(crc, x - 1, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, x - 4, 45); cairo_show_text(crc, "5"); // Texel 6 cairo_set_line_width(crc, 4); cairo_rectangle(crc, 110, 50, 50, 20); cairo_set_source_rgb(crc, 0, 0, 0); cairo_stroke(crc); cairo_set_line_width(crc, 2); cairo_rectangle(crc, 134, 59, 3, 3); cairo_fill(crc); cairo_move_to(crc, 133, 45); cairo_show_text(crc, "6"); ////////////////////////////////////// // Done. cairo_surface_write_to_png(surface, "filter.png"); return 0; }