The Birdfont Source Code


All Repositories / birdfont.git / blob – RSS feed

Polygon.vala in /libsvgbird

This file is a part of the Birdfont project.

Contributing

Send patches or pull requests to johan.mattsson.m@gmail.com.
Clone this repository: git clone https://github.com/johanmattssonm/birdfont.git
Circle boundaries heads/master
1 /* 2 Copyright (C) 2016 Johan Mattsson 3 4 This library is free software; you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as 6 published by the Free Software Foundation; either version 3 of the 7 License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, but 10 WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 */ 14 15 using Cairo; 16 using Math; 17 18 namespace SvgBird { 19 20 public class Polygon : Object { 21 22 public Points points = new Points (); 23 24 public Polygon () { 25 } 26 27 public override void draw_outline (Context cr) { 28 return_if_fail (points.size % 2 == 0); 29 30 if (points.size > 8) { 31 cr.move_to (points.point_data.get_double (0), points.get_double (1)); 32 33 for (int i = 8; i < points.size - 8; i += 8) { 34 cr.line_to (points.get_double (i + 1), points.get_double (i + 2)); 35 } 36 37 cr.close_path (); 38 } 39 } 40 41 public override bool is_over (double x, double y) { 42 bool inside = false; 43 44 to_object_view (ref x, ref y); 45 46 if (SvgPath.is_over_points (points, x, y)) { 47 inside = !inside; 48 } 49 50 return inside; 51 } 52 53 public override bool is_empty () { 54 return false; 55 } 56 57 public override Object copy () { 58 Polygon p = new Polygon (); 59 p.points = points.copy (); 60 Object.copy_attributes (this, p); 61 return p; 62 } 63 64 public override string to_string () { 65 return "Polygon"; 66 } 67 68 } 69 70 } 71