From fad1bd69d1b4945c4e8ba72d8293ca90e0f194cc Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Tue, 7 Feb 2017 13:46:58 +0300 Subject: [PATCH] drawing_area added. --- vala/drawing_area/build.sh | 3 ++ vala/drawing_area/drawing_area.vala | 49 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 vala/drawing_area/build.sh create mode 100644 vala/drawing_area/drawing_area.vala diff --git a/vala/drawing_area/build.sh b/vala/drawing_area/build.sh new file mode 100755 index 0000000..75dcd68 --- /dev/null +++ b/vala/drawing_area/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +valac --pkg=gtk+-3.0 drawing_area.vala && ./drawing_area diff --git a/vala/drawing_area/drawing_area.vala b/vala/drawing_area/drawing_area.vala new file mode 100644 index 0000000..475d41f --- /dev/null +++ b/vala/drawing_area/drawing_area.vala @@ -0,0 +1,49 @@ +public class Application : Gtk.Window { + public Application () { + // Prepare Gtk.Window: + this.title = "My Gtk.DrawingArea"; + this.window_position = Gtk.WindowPosition.CENTER; + this.destroy.connect (Gtk.main_quit); + this.set_default_size (400, 400); + + // The drawing area: + Gtk.DrawingArea drawing_area = new Gtk.DrawingArea (); + drawing_area.draw.connect ((context) => { + // Get necessary data: + weak Gtk.StyleContext style_context = drawing_area.get_style_context (); + int height = drawing_area.get_allocated_height (); + int width = drawing_area.get_allocated_width (); + Gdk.RGBA color = style_context.get_color (0); + + // Draw an arc: + double xc = width / 2.0; + double yc = height / 2.0; + double radius = int.min (width, height) / 2.0; + double angle1 = 0; + double angle2 = 2*Math.PI; + + context.arc (xc, yc, radius, angle1, angle2); + Gdk.cairo_set_source_rgba (context, color); + context.fill (); + + // Text: + context.set_source_rgb (0.1, 0.1, 0.1); + context.select_font_face ("Adventure", Cairo.FontSlant.NORMAL, Cairo.FontWeight.BOLD); + context.set_font_size (20); + context.move_to (20, 30); + context.show_text ("Indiana Jones"); + + return true; + }); + this.add (drawing_area); + } + + public static int main (string[] args) { + Gtk.init (ref args); + + Application app = new Application (); + app.show_all (); + Gtk.main (); + return 0; + } +}