Skip to content

Instantly share code, notes, and snippets.

@HopperMCS
Last active April 25, 2017 18:25
Show Gist options
  • Save HopperMCS/70c3c7cdb9fe40db923756abce6fb35e to your computer and use it in GitHub Desktop.
Save HopperMCS/70c3c7cdb9fe40db923756abce6fb35e to your computer and use it in GitHub Desktop.
After C#, learned an easy way to write this cairo sh!t without reinventing fourteen wheels
using Cairo;
public class Main : GLib.Object {
public static void Triangle1p1() {
// Create a context:
Cairo.SvgSurface triangle_surface_1p2 = new Cairo.SvgSurface ("triangle1p1.svg", 421, 410);
Cairo.Context triangle_context_1p2 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p3 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p4 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p5 = new Cairo.Context (triangle_surface_1p2);
triangle_context_1p2.set_line_width(2.5);
triangle_context_1p2.save();
// Triangle 1
triangle_context_1p2.set_source_rgba (0.7, 0.20, 0.17, 0.8);
triangle_context_1p2.scale(1.0, 1.0);
triangle_context_1p2.line_to (143, 39);
triangle_context_1p2.line_to (198, 176);
triangle_context_1p2.line_to (23, 281);
triangle_context_1p2.close_path ();
triangle_context_1p2.fill_preserve();
triangle_context_1p2.restore();
triangle_context_1p2.set_source_rgba(0.98, 0.38, 0.09, 0.8);
triangle_context_1p2.stroke();
triangle_context_1p3.set_line_width(2.5);
triangle_context_1p3.save();
// Triangle 2:
triangle_context_1p3.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p3.scale(1.0, 1.0);
triangle_context_1p3.line_to (275, 44);
triangle_context_1p3.line_to (377, 102);
triangle_context_1p3.line_to (100, 118);
triangle_context_1p3.close_path ();
triangle_context_1p3.fill_preserve();
triangle_context_1p3.restore();
triangle_context_1p3.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p3.stroke();
triangle_context_1p4.set_line_width(2.5);
triangle_context_1p4.save();
// Triangle 5:
triangle_context_1p4.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p4.scale(1.0, 1.0);
triangle_context_1p4.line_to (244, 314);
triangle_context_1p4.line_to (148, 375);
triangle_context_1p4.line_to (70, 184);
triangle_context_1p4.close_path ();
triangle_context_1p4.fill_preserve();
triangle_context_1p4.restore();
triangle_context_1p4.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p4.stroke();
triangle_context_1p5.set_line_width(2.5);
triangle_context_1p5.save();
}
public static void Triangle1p2() {
// Create a context:
Cairo.SvgSurface triangle_surface_1p2 = new Cairo.SvgSurface ("triangle1p2.svg", 421, 410);
Cairo.Context triangle_context_1p2 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p3 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p4 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p5 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p6 = new Cairo.Context (triangle_surface_1p2);
triangle_context_1p2.set_line_width(2.5);
triangle_context_1p2.save();
// Triangle 1
triangle_context_1p2.set_source_rgba (0.7, 0.20, 0.17, 0.8);
triangle_context_1p2.scale(1.0, 1.0);
triangle_context_1p2.line_to (143, 39);
triangle_context_1p2.line_to (198, 176);
triangle_context_1p2.line_to (23, 281);
triangle_context_1p2.close_path ();
triangle_context_1p2.fill_preserve();
triangle_context_1p2.restore();
triangle_context_1p2.set_source_rgba(0.98, 0.38, 0.09, 0.8);
triangle_context_1p2.stroke();
triangle_context_1p3.set_line_width(2.5);
triangle_context_1p3.save();
// Triangle 2:
triangle_context_1p3.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p3.scale(1.0, 1.0);
triangle_context_1p3.line_to (275, 44);
triangle_context_1p3.line_to (377, 102);
triangle_context_1p3.line_to (100, 118);
triangle_context_1p3.close_path ();
triangle_context_1p3.fill_preserve();
triangle_context_1p3.restore();
triangle_context_1p3.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p3.stroke();
triangle_context_1p4.set_line_width(2.5);
triangle_context_1p4.save();
// Triangle 5:
triangle_context_1p4.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p4.scale(1.0, 1.0);
triangle_context_1p4.line_to (244, 314);
triangle_context_1p4.line_to (148, 375);
triangle_context_1p4.line_to (70, 184);
triangle_context_1p4.close_path ();
triangle_context_1p4.fill_preserve();
triangle_context_1p4.restore();
triangle_context_1p4.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p4.stroke();
triangle_context_1p5.set_line_width(2.5);
triangle_context_1p5.save();
// Triangle 3:
triangle_context_1p5.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_1p5.scale(1.0, 1.0);
triangle_context_1p5.line_to (363, 190);
triangle_context_1p5.line_to (250, 126);
triangle_context_1p5.line_to (305, 26);
triangle_context_1p5.close_path ();
triangle_context_1p5.fill_preserve();
triangle_context_1p5.restore();
triangle_context_1p5.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_1p5.stroke();
triangle_context_1p6.set_line_width(2.5);
triangle_context_1p6.save();
// Triangle 6:
triangle_context_1p6.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_1p6.scale(1.0, 1.0);
triangle_context_1p6.line_to (195, 260);
triangle_context_1p6.line_to (333, 356);
triangle_context_1p6.line_to (128, 330);
triangle_context_1p6.close_path ();
triangle_context_1p6.fill_preserve();
triangle_context_1p6.restore();
triangle_context_1p6.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_1p6.stroke();
}
public static void Triangle1p3() {
// Create a context:
Cairo.SvgSurface triangle_surface_1p2 = new Cairo.SvgSurface ("triangle1p3.svg", 421, 410);
Cairo.Context triangle_context_1p2 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p3 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p4 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p5 = new Cairo.Context (triangle_surface_1p2);
Cairo.Context triangle_context_1p6 = new Cairo.Context (triangle_surface_1p2);
triangle_context_1p2.set_line_width(2.5);
triangle_context_1p2.save();
// Triangle 1
triangle_context_1p2.set_source_rgba (0.7, 0.20, 0.17, 0.8);
triangle_context_1p2.scale(1.0, 1.0);
triangle_context_1p2.line_to (143, 39);
triangle_context_1p2.line_to (198, 176);
triangle_context_1p2.line_to (23, 281);
triangle_context_1p2.close_path ();
triangle_context_1p2.fill_preserve();
triangle_context_1p2.restore();
triangle_context_1p2.set_source_rgba(0.98, 0.38, 0.09, 0.8);
triangle_context_1p2.stroke();
triangle_context_1p3.set_line_width(2.5);
triangle_context_1p3.save();
// Triangle 2:
triangle_context_1p3.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p3.scale(1.0, 1.0);
triangle_context_1p3.line_to (275, 44);
triangle_context_1p3.line_to (377, 102);
triangle_context_1p3.line_to (100, 118);
triangle_context_1p3.close_path ();
triangle_context_1p3.fill_preserve();
triangle_context_1p3.restore();
triangle_context_1p3.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p3.stroke();
triangle_context_1p4.set_line_width(2.5);
triangle_context_1p4.save();
// Triangle 5:
triangle_context_1p4.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_1p4.scale(1.0, 1.0);
triangle_context_1p4.line_to (244, 314);
triangle_context_1p4.line_to (148, 375);
triangle_context_1p4.line_to (70, 184);
triangle_context_1p4.close_path ();
triangle_context_1p4.fill_preserve();
triangle_context_1p4.restore();
triangle_context_1p4.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_1p4.stroke();
triangle_context_1p5.set_line_width(2.5);
triangle_context_1p5.save();
// Triangle 3:
triangle_context_1p5.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_1p5.scale(1.0, 1.0);
triangle_context_1p5.line_to (363, 190);
triangle_context_1p5.line_to (250, 126);
triangle_context_1p5.line_to (305, 26);
triangle_context_1p5.close_path ();
triangle_context_1p5.fill_preserve();
triangle_context_1p5.restore();
triangle_context_1p5.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_1p5.stroke();
triangle_context_1p6.set_line_width(2.5);
triangle_context_1p6.save();
// Triangle 6:
triangle_context_1p6.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_1p6.scale(1.0, 1.0);
triangle_context_1p6.line_to (195, 260);
triangle_context_1p6.line_to (333, 356);
triangle_context_1p6.line_to (128, 330);
triangle_context_1p6.close_path ();
triangle_context_1p6.fill_preserve();
triangle_context_1p6.restore();
triangle_context_1p6.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_1p6.stroke();
}
public static void Triangle1() {
SvgSurface triangle_surface_1 = new Cairo.SvgSurface ("triangle1.svg", 421, 410);
Context triangle_context_1 = new Cairo.Context (triangle_surface_1);
triangle_context_1.set_line_width(2.5);
triangle_context_1.save();
// Triangle 1
triangle_context_1.set_source_rgba (0.7, 0.20, 0.17, 0.8);
triangle_context_1.scale(1.0, 1.0);
triangle_context_1.line_to (143, 39);
triangle_context_1.line_to (198, 176);
triangle_context_1.line_to (23, 281);
triangle_context_1.close_path ();
triangle_context_1.fill_preserve();
triangle_context_1.restore();
triangle_context_1.set_source_rgba(0.98, 0.38, 0.09, 0.8);
triangle_context_1.stroke();
}
public static void Triangle2() {
SvgSurface triangle_surface_2 = new Cairo.SvgSurface ("triangle2.svg", 421, 410);
Context triangle_context_2 = new Cairo.Context (triangle_surface_2);
triangle_context_2.set_line_width(2.5);
triangle_context_2.save();
// Triangle 2:
triangle_context_2.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_2.scale(1.0, 1.0);
triangle_context_2.line_to (275, 44);
triangle_context_2.line_to (377, 102);
triangle_context_2.line_to (100, 118);
triangle_context_2.close_path ();
triangle_context_2.fill_preserve();
triangle_context_2.restore();
triangle_context_2.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_2.stroke();
triangle_context_2.set_line_width(2.5);
triangle_context_2.save();
}
public static void Triangle3() {
SvgSurface triangle_surface_3 = new Cairo.SvgSurface ("triangle3.svg", 421, 410);
Context triangle_context_3 = new Cairo.Context (triangle_surface_3);
triangle_context_3.set_line_width(2.5);
triangle_context_3.save();
// Triangle 3:
triangle_context_3.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_3.scale(1.0, 1.0);
triangle_context_3.line_to (363, 190);
triangle_context_3.line_to (250, 126);
triangle_context_3.line_to (305, 26);
triangle_context_3.close_path ();
triangle_context_3.fill_preserve();
triangle_context_3.restore();
triangle_context_3.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_3.stroke();
}
public static void Triangle4() {
SvgSurface triangle_surface_4 = new Cairo.SvgSurface ("triangle4.svg", 421, 410);
Context triangle_context_4 = new Cairo.Context (triangle_surface_4);
triangle_context_4.set_line_width(2.5);
triangle_context_4.save();
// Triangle 4:
triangle_context_4.set_source_rgba (0.19, 0.80, 0.19, 0.8);
triangle_context_4.scale(1.0, 1.0);
triangle_context_4.line_to (376, 130);
triangle_context_4.line_to (304, 222);
triangle_context_4.line_to (290, 147);
triangle_context_4.close_path ();
triangle_context_4.fill_preserve();
triangle_context_4.restore();
triangle_context_4.set_source_rgba(0.48, 0.98, 0, 0.8);
triangle_context_4.stroke();
}
public static void Triangle5() {
SvgSurface triangle_surface_5 = new Cairo.SvgSurface ("triangle5.svg", 421, 410);
Context triangle_context_5 = new Cairo.Context (triangle_surface_5);
triangle_context_5.set_line_width(2.5);
triangle_context_5.save();
// Triangle 5:
triangle_context_5.set_source_rgba (0, 0.63, 0.90, 0.8);
triangle_context_5.scale(1.0, 1.0);
triangle_context_5.line_to (244, 314);
triangle_context_5.line_to (148, 375);
triangle_context_5.line_to (70, 184);
triangle_context_5.close_path ();
triangle_context_5.fill_preserve();
triangle_context_5.restore();
triangle_context_5.set_source_rgba(0, 0.99, 0.93, 0.8);
triangle_context_5.stroke();
}
public static void Triangle6() {
SvgSurface triangle_surface_6 = new Cairo.SvgSurface ("triangle6.svg", 421, 410);
Context triangle_context_6 = new Cairo.Context (triangle_surface_6);
triangle_context_6.set_line_width(2.5);
triangle_context_6.save();
// Triangle 6:
triangle_context_6.set_source_rgba (0.78, 0.38, 0.09, 0.8);
triangle_context_6.scale(1.0, 1.0);
triangle_context_6.line_to (195, 260);
triangle_context_6.line_to (333, 356);
triangle_context_6.line_to (128, 330);
triangle_context_6.close_path ();
triangle_context_6.fill_preserve();
triangle_context_6.restore();
triangle_context_6.set_source_rgba(0.98, 0.20, 0.17, 0.8);
triangle_context_6.stroke();
}
public static void Triangle7() {
SvgSurface triangle_surface_7 = new Cairo.SvgSurface ("triangle7.svg", 421, 410);
Context triangle_context_7 = new Cairo.Context (triangle_surface_7);
triangle_context_7.set_line_width(2.5);
triangle_context_7.save();
// Triangle 7:
triangle_context_7.set_source_rgba (0.19, 0.80, 0.19, 0.8);
triangle_context_7.scale(1.0, 1.0);
triangle_context_7.line_to (304, 270);
triangle_context_7.line_to (311, 380);
triangle_context_7.line_to (252, 326);
triangle_context_7.close_path ();
triangle_context_7.fill_preserve();
triangle_context_7.restore();
triangle_context_7.set_source_rgba(0.48, 0.98, 0, 0.8);
triangle_context_7.stroke();
}
public static void Logo() {
// Create a context:
Cairo.SvgSurface surface = new Cairo.SvgSurface ("triangles-all.svg", 421, 410);
Cairo.Context context = new Cairo.Context (surface);
context.set_line_width(2.5);
context.save();
// Triangle 1
context.set_source_rgba (0.7, 0.20, 0.17, 0.8);
context.scale(1.0, 1.0);
context.line_to (143, 39);
context.line_to (198, 176);
context.line_to (23, 281);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0.98, 0.38, 0.09, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 2:
context.set_source_rgba (0, 0.63, 0.90, 0.8);
context.scale(1.0, 1.0);
context.line_to (275, 44);
context.line_to (377, 102);
context.line_to (100, 118);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0, 0.99, 0.93, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 3:
context.set_source_rgba (0.78, 0.38, 0.09, 0.8);
context.scale(1.0, 1.0);
context.line_to (363, 190);
context.line_to (250, 126);
context.line_to (305, 26);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0.98, 0.20, 0.17, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 4:
context.set_source_rgba (0.19, 0.80, 0.19, 0.8);
context.scale(1.0, 1.0);
context.line_to (376, 130);
context.line_to (304, 222);
context.line_to (290, 147);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0.48, 0.98, 0, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 5:
context.set_source_rgba (0, 0.63, 0.90, 0.8);
context.scale(1.0, 1.0);
context.line_to (244, 314);
context.line_to (148, 375);
context.line_to (70, 184);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0, 0.99, 0.93, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 6:
context.set_source_rgba (0.78, 0.38, 0.09, 0.8);
context.scale(1.0, 1.0);
context.line_to (195, 260);
context.line_to (333, 356);
context.line_to (128, 330);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0.98, 0.20, 0.17, 0.8);
context.stroke();
context.set_line_width(2.5);
context.save();
// Triangle 7:
context.set_source_rgba (0.19, 0.80, 0.19, 0.8);
context.scale(1.0, 1.0);
context.line_to (304, 270);
context.line_to (311, 380);
context.line_to (252, 326);
context.close_path ();
context.fill_preserve();
context.restore();
context.set_source_rgba(0.48, 0.98, 0, 0.8);
context.stroke();
}
public static void main (string[] args) {
Triangle1();
Triangle2();
Triangle3();
Triangle4();
Triangle5();
Triangle6();
Triangle7();
Triangle1p1();
Triangle1p2();
Logo();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment