Commit 65567cf
Rename FastPath to PathObject
Changed files (13)
modifiedlibbirdfont/DrawingTools.valamodifiedlibbirdfont/ExportTool.valadeletedlibbirdfont/FastPath.valamodifiedlibbirdfont/Glyph.valamodifiedlibbirdfont/Layer.valamodifiedlibbirdfont/MoveTool.valamodifiedlibbirdfont/OrientationTool.valaaddedlibbirdfont/PathObject.valamodifiedlibbirdfont/PenTool.valamodifiedlibbirdfont/ResizeTool.valamodifiedlibbirdfont/StrokeTool.valamodifiedlibbirdfont/Svg/SvgParser.valamodifiedlibbirdfont/TrackTool.vala
Diff
@@ -846,8 +846,8 @@ public class DrawingTools : ToolCollection { foreach (Object p in g.active_paths) { p.stroke = StrokeTool.stroke_width; - if (p is FastPath) {- Path path = ((FastPath) p).get_path ();+ if (p is PathObject) {+ Path path = ((PathObject) p).get_path (); path.reset_stroke (); } }@@ -888,8 +888,8 @@ public class DrawingTools : ToolCollection { foreach (Object p in g.active_paths) { p.line_cap = LineCap.BUTT; - if (p is FastPath) {- ((FastPath) p).get_path ().reset_stroke ();+ if (p is PathObject) {+ ((PathObject) p).get_path ().reset_stroke (); } } @@ -915,8 +915,8 @@ public class DrawingTools : ToolCollection { foreach (Object p in g.active_paths) { p.line_cap = LineCap.ROUND; - if (p is FastPath) {- ((FastPath) p).get_path ().reset_stroke ();+ if (p is PathObject) {+ ((PathObject) p).get_path ().reset_stroke (); } } @@ -943,8 +943,8 @@ public class DrawingTools : ToolCollection { foreach (Object p in g.active_paths) { p.line_cap = LineCap.SQUARE; - if (p is FastPath) {- ((FastPath) p).get_path ().reset_stroke ();+ if (p is PathObject) {+ ((PathObject) p).get_path ().reset_stroke (); } } @@ -104,8 +104,8 @@ public class ExportTool : GLib.Object { foreach (Object o in pl) { - if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); if (p.stroke > 0) { s.append (@"<path ");@@ -132,8 +132,8 @@ public class ExportTool : GLib.Object { if (only_selected_paths) { foreach (Object p in glyph.active_paths) {- if (p is FastPath) {- Path path = ((FastPath) p).get_path ();+ if (p is PathObject) {+ Path path = ((PathObject) p).get_path (); if (path.stroke == 0) { glyph_svg += Svg.to_svg_path (path, glyph); }deleted file mode 100644@@ -1,237 +0,0 @@-/*- Copyright (C) 2015 Johan Mattsson-- This library is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 3 of the - License, or (at your option) any later version.-- This library is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details.-*/--using Cairo;--namespace BirdFont {--public class FastPath : Object {-- Path path;- - public override double stroke {- get {- return path.stroke;- }-- set {- path.stroke = value;- }- }-- public override double rotation {- get {- return path.rotation;- }-- set {- path.rotation = value;- }- }-- public override LineCap line_cap {- get {- return path.line_cap;- }-- set {- path.line_cap = value;- }- }-- public override bool fill {- get {- return path.fill;- }-- set {- path.fill = value;- }- }-- public override Color? color {- get {- return path.color;- }-- set {- path.color = value;- }- }-- public override Color? stroke_color {- get {- return path.stroke_color;- }-- set {- path.stroke_color = value;- }- }-- public override Gradient? gradient {- get {- return path.gradient;- }-- set {- path.gradient = value;- }- }-- public override double xmin {- get {- return path.xmin;- }-- set {- path.xmin = value;- }- - default = Glyph.CANVAS_MAX;- }-- public override double xmax {- get {- return path.xmax;- }-- set {- path.xmax = value;- }- - default = Glyph.CANVAS_MIN;- }-- public override double ymin {- get {- return path.ymin;- }-- set {- path.ymin = value;- }- - default = Glyph.CANVAS_MAX;- }-- public override double ymax {- get {- return path.ymax;- }-- set {- path.ymax = value;- }- - default = Glyph.CANVAS_MIN;- }- - public FastPath () {- path = new Path ();- update_region_boundaries ();- }-- public FastPath.create_copy (FastPath p) {- base.create_copy (p);- path = p.path.copy ();- }-- public FastPath.for_path (Path path) {- this.path = path;- }-- public override bool is_over (double x, double y) {- return path.is_over (x, y);- }- - public override void draw (Context cr, Color? c = null) {- PathList path_stroke;- Color path_color;- bool open;- - cr.save ();- - if (c != null) {- path_color = (!) c;- } else if (color != null) {- path_color = (!) color;- } else {- path_color = Color.black ();- }-- if (path.stroke > 0) {- path_stroke = path.get_stroke_fast ();- draw_path_list (path_stroke, cr, path_color);- } else {- open = path.is_open ();- - if (open) {- path.close ();- path.recalculate_linear_handles ();- }- - path.draw_path (cr, path_color);- - if (open) {- path.reopen ();- }- }-- cr.restore ();- }-- public static void draw_path_list (PathList pl, Context cr, Color? c = null) {- foreach (Path p in pl.paths) {- p.draw_path (cr, c);- }- }- - public override void move (double dx, double dy) {- path.move (dx, dy);- path.reset_stroke ();- }- - public Path get_path () {- return path;- }-- public override void update_region_boundaries () {- path.update_region_boundaries ();- }-- public override void rotate (double theta, double xc, double yc) {- path.rotate (theta, xc, yc);- }- - public override bool is_empty () {- return path.points.size == 0;- }- - public override void resize (double ratio_x, double ratio_y) {- path.resize (ratio_x, ratio_y);- path.reset_stroke ();- }- - public override Object copy () {- return new FastPath.create_copy (this);- }-- public override string to_string () {- return "FastPath";- }--}--}@@ -303,7 +303,7 @@ public class Glyph : FontDisplay { public void add_active_path (Layer? group, Path? p) { if (p != null) {- FastPath path = new FastPath.for_path ((!) p);+ PathObject path = new PathObject.for_path ((!) p); add_active_object (group, path); } else { add_active_object (group, null);@@ -321,8 +321,8 @@ public class Glyph : FontDisplay { active_paths.add (object); } - if (object is FastPath) {- FastPath path = (FastPath) object;+ if (object is PathObject) {+ PathObject path = (PathObject) object; if (Toolbox.get_move_tool ().is_selected ()) { if (path.get_path ().stroke > 0) { Toolbox.set_object_stroke (path.get_path ().stroke);@@ -348,12 +348,12 @@ public class Glyph : FontDisplay { return true; } - if (object is FastPath) {- FastPath path = (FastPath) object;+ if (object is PathObject) {+ PathObject path = (PathObject) object; foreach (Object active in glyph.active_paths) {- if (active is FastPath) {- FastPath path_active = (FastPath) active;+ if (active is PathObject) {+ PathObject path_active = (PathObject) active; if (path_active.get_path () == path.get_path ()) { return true; }@@ -983,7 +983,7 @@ public class Glyph : FontDisplay { path.reopen (); path.create_list (); - FastPath object = new FastPath.for_path (path);+ PathObject object = new PathObject.for_path (path); add_active_object (null, object); } @@ -1097,7 +1097,7 @@ public class Glyph : FontDisplay { public void set_active_path (Path p) { p.reopen (); clear_active_paths ();- add_active_object (null, new FastPath.for_path (p));+ add_active_object (null, new PathObject.for_path (p)); } /** Move view port centrum to this coordinate. */@@ -1408,7 +1408,7 @@ public class Glyph : FontDisplay { foreach (Object object in active_paths) { EditPoint p;- Path path = ((FastPath) object).get_path ();+ Path path = ((PathObject) object).get_path (); EditPoint pl = path.get_last_point (); if (pl.prev != null) {@@ -1737,7 +1737,7 @@ public class Glyph : FontDisplay { color = Color.black (); } - FastPath.draw_path_list (stroke, cr, color);+ PathObject.draw_path_list (stroke, cr, color); } } cr.fill ();@@ -1750,12 +1750,12 @@ public class Glyph : FontDisplay { cr.save (); cr.new_path (); foreach (Object o in active_paths) {- if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); if (p.stroke > 0) { stroke = p.get_stroke_fast (); color = Theme.get_color ("Selected Objects");- FastPath.draw_path_list (stroke, cr, color);+ PathObject.draw_path_list (stroke, cr, color); } } }@@ -1797,8 +1797,8 @@ public class Glyph : FontDisplay { foreach (Object o in get_visible_objects ()) { print("visible obj\n");- if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); if (p.stroke == 0) { color = p.color == null ? Color.black () : (!) p.color;@@ -1813,8 +1813,8 @@ public class Glyph : FontDisplay { cr.restore (); foreach (Object o in active_paths) {- if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); cr.save (); cr.new_path (); if (p.stroke == 0) {@@ -2590,8 +2590,8 @@ public class Glyph : FontDisplay { Gee.ArrayList<Path> paths = new Gee.ArrayList<Path> (); foreach (Object object in active_paths) {- if (object is FastPath) {- paths.add (((FastPath) object).get_path ());+ if (object is PathObject) {+ paths.add (((PathObject) object).get_path ()); } } @@ -53,8 +53,8 @@ public class Layer : GLib.Object { PathList paths = new PathList (); foreach (Object o in objects) {- if (o is FastPath) {- FastPath p = (FastPath) o;+ if (o is PathObject) {+ PathObject p = (PathObject) o; paths.add (p.get_path ()); } }@@ -89,8 +89,8 @@ public class Layer : GLib.Object { if (visible) { foreach (Object o in objects) {- if (o is FastPath) {- FastPath p = (FastPath) o;+ if (o is PathObject) {+ PathObject p = (PathObject) o; paths.add (p.get_path ()); } }@@ -110,7 +110,7 @@ public class Layer : GLib.Object { } public void add_path (Path path) {- FastPath p = new FastPath.for_path (path);+ PathObject p = new PathObject.for_path (path); objects.add (p); } @@ -124,10 +124,10 @@ public class Layer : GLib.Object { } } - private FastPath? get_fast_path (Path path) {+ private PathObject? get_fast_path (Path path) { foreach (Object o in objects) {- if (o is FastPath) {- FastPath p = (FastPath) o;+ if (o is PathObject) {+ PathObject p = (PathObject) o; if (p.get_path () == path) { return p; }@@ -138,7 +138,7 @@ public class Layer : GLib.Object { } public void remove_path (Path path) {- FastPath? p = get_fast_path (path);+ PathObject? p = get_fast_path (path); if (p != null) { objects.remove ((!) p);@@ -252,8 +252,8 @@ public class Layer : GLib.Object { PathList paths = new PathList (); foreach (Object object in objects) {- if (object is FastPath) {- paths.add (((FastPath) object).get_path ());+ if (object is PathObject) {+ paths.add (((PathObject) object).get_path ()); } } @@ -95,8 +95,8 @@ public class MoveTool : Tool { } foreach (Object p in g.active_paths) {- if (p is FastPath) {- g.layers.remove_path (((FastPath) p).get_path ());+ if (p is PathObject) {+ g.layers.remove_path (((PathObject) p).get_path ()); } else { g.layers.remove (p); }@@ -189,8 +189,8 @@ public class MoveTool : Tool { DrawingTools.resize_tool.signal_objects_rotated (); foreach (Object o in glyph.active_paths) {- if (o is FastPath) {- FastPath path = (FastPath) o;+ if (o is PathObject) {+ PathObject path = (PathObject) o; path.get_path ().create_full_stroke (); } }@@ -324,8 +324,8 @@ public class MoveTool : Tool { py2 = -10000; foreach (Object o in glyph.active_paths) {- if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); p.update_region_boundaries (); if (px > p.xmin) {@@ -457,8 +457,8 @@ public class MoveTool : Tool { public static void update_boundaries_for_selection () { Glyph glyph = MainWindow.get_current_glyph (); foreach (Object o in glyph.active_paths) {- if (o is FastPath) {- ((FastPath)o).get_path ().update_region_boundaries ();+ if (o is PathObject) {+ ((PathObject)o).get_path ().update_region_boundaries (); } } }@@ -482,8 +482,8 @@ public class MoveTool : Tool { yc = selection_box_center_y; foreach (Object p in glyph.active_paths) {- if (p is FastPath) {- Path path = ((FastPath) p).get_path ();+ if (p is PathObject) {+ Path path = ((PathObject) p).get_path (); // FIXME: move to object if (vertical) {@@ -31,8 +31,8 @@ public class OrientationTool : Tool { Glyph g = MainWindow.get_current_glyph (); foreach (Object o in g.active_paths) {- if (o is FastPath) {- FastPath p = (FastPath) o;+ if (o is PathObject) {+ PathObject p = (PathObject) o; p.get_path ().reverse (); } }@@ -58,8 +58,8 @@ public class OrientationTool : Tool { bool has_counter_clockwise_paths = false; foreach (Object o in glyph.active_paths) {- if (o is FastPath) {- Path p = ((FastPath) o).get_path ();+ if (o is PathObject) {+ Path p = ((PathObject) o).get_path (); if (p.is_clockwise ()) { has_clockwise_paths = true;new file mode 100644@@ -0,0 +1,237 @@+/*+ Copyright (C) 2015 Johan Mattsson++ This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version.++ This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details.+*/++using Cairo;++namespace BirdFont {++public class PathObject : Object {++ Path path;+ + public override double stroke {+ get {+ return path.stroke;+ }++ set {+ path.stroke = value;+ }+ }++ public override double rotation {+ get {+ return path.rotation;+ }++ set {+ path.rotation = value;+ }+ }++ public override LineCap line_cap {+ get {+ return path.line_cap;+ }++ set {+ path.line_cap = value;+ }+ }++ public override bool fill {+ get {+ return path.fill;+ }++ set {+ path.fill = value;+ }+ }++ public override Color? color {+ get {+ return path.color;+ }++ set {+ path.color = value;+ }+ }++ public override Color? stroke_color {+ get {+ return path.stroke_color;+ }++ set {+ path.stroke_color = value;+ }+ }++ public override Gradient? gradient {+ get {+ return path.gradient;+ }++ set {+ path.gradient = value;+ }+ }++ public override double xmin {+ get {+ return path.xmin;+ }++ set {+ path.xmin = value;+ }+ + default = Glyph.CANVAS_MAX;+ }++ public override double xmax {+ get {+ return path.xmax;+ }++ set {+ path.xmax = value;+ }+ + default = Glyph.CANVAS_MIN;+ }++ public override double ymin {+ get {+ return path.ymin;+ }++ set {+ path.ymin = value;+ }+ + default = Glyph.CANVAS_MAX;+ }++ public override double ymax {+ get {+ return path.ymax;+ }++ set {+ path.ymax = value;+ }+ + default = Glyph.CANVAS_MIN;+ }+ + public PathObject () {+ path = new Path ();+ update_region_boundaries ();+ }++ public PathObject.create_copy (PathObject p) {+ base.create_copy (p);+ path = p.path.copy ();+ }++ public PathObject.for_path (Path path) {+ this.path = path;+ }++ public override bool is_over (double x, double y) {+ return path.is_over (x, y);+ }+ + public override void draw (Context cr, Color? c = null) {+ PathList path_stroke;+ Color path_color;+ bool open;+ + cr.save ();+ + if (c != null) {+ path_color = (!) c;+ } else if (color != null) {+ path_color = (!) color;+ } else {+ path_color = Color.black ();+ }++ if (path.stroke > 0) {+ path_stroke = path.get_stroke_fast ();+ draw_path_list (path_stroke, cr, path_color);+ } else {+ open = path.is_open ();+ + if (open) {+ path.close ();+ path.recalculate_linear_handles ();+ }+ + path.draw_path (cr, path_color);+ + if (open) {+ path.reopen ();+ }+ }++ cr.restore ();+ }++ public static void draw_path_list (PathList pl, Context cr, Color? c = null) {+ foreach (Path p in pl.paths) {+ p.draw_path (cr, c);+ }+ }+ + public override void move (double dx, double dy) {+ path.move (dx, dy);+ path.reset_stroke ();+ }+ + public Path get_path () {+ return path;+ }++ public override void update_region_boundaries () {+ path.update_region_boundaries ();+ }++ public override void rotate (double theta, double xc, double yc) {+ path.rotate (theta, xc, yc);+ }+ + public override bool is_empty () {+ return path.points.size == 0;+ }+ + public override void resize (double ratio_x, double ratio_y) {+ path.resize (ratio_x, ratio_y);+ path.reset_stroke ();+ }+ + public override Object copy () {+ return new PathObject.create_copy (this);+ }++ public override string to_string () {+ return "PathObject";+ }++}++}@@ -766,8 +766,8 @@ public class PenTool : Tool { } foreach (Object path in g.active_paths) {- if (path is FastPath) {- FastPath p = (FastPath) path;+ if (path is PathObject) {+ PathObject p = (PathObject) path; p.get_path ().reset_stroke (); } }@@ -1059,8 +1059,8 @@ public class PenTool : Tool { // don't use set point to reflective to on open ends reflective = true; foreach (Object path in MainWindow.get_current_glyph ().active_paths) {- if (path.is_open () && !path.is_empty () && path is FastPath) {- Path p = ((FastPath) path).get_path ();+ if (path.is_open () && !path.is_empty () && path is PathObject) {+ Path p = ((PathObject) path).get_path (); if (selected_handle.parent == p.get_first_point () || selected_handle.parent == p.get_last_point ()) { reflective = false;@@ -1234,7 +1234,7 @@ public class PenTool : Tool { if (active_edit_point != null) { glyph.clear_active_paths (); - FastPath path = new FastPath.for_path (active_path);+ PathObject path = new PathObject.for_path (active_path); glyph.add_active_object (null, path); DrawingTools.update_stroke_settings ();@@ -1415,7 +1415,7 @@ public class PenTool : Tool { foreach (Path merge in paths) { if (merge.points.size > 0) {- FastPath merged_path = new FastPath.for_path (merge);+ PathObject merged_path = new PathObject.for_path (merge); if (is_close_to_point (merge.points.get (merge.points.size - 1), px, py)) { glyph.add_active_object (null, merged_path);@@ -1463,7 +1463,7 @@ public class PenTool : Tool { glyph.clear_active_paths (); - FastPath closed_path = new FastPath.for_path (path);+ PathObject closed_path = new PathObject.for_path (path); glyph.add_active_object (null, closed_path); if (direction_changed) {@@ -1503,7 +1503,7 @@ public class PenTool : Tool { } else { union = merge_open_paths (path, merge); - FastPath union_path = new FastPath.for_path (union);+ PathObject union_path = new PathObject.for_path (union); glyph.add_path (union); glyph.delete_path (path); glyph.delete_path (merge);@@ -1791,8 +1791,8 @@ public class PenTool : Tool { return_val_if_fail (glyph.active_paths.size > 0, new PointSelection.empty ()); Object object = glyph.active_paths.get (glyph.active_paths.size - 1); - if (object is FastPath) { - Path path = ((FastPath) object).get_path ();+ if (object is PathObject) { + Path path = ((PathObject) object).get_path (); add_selected_point (selected_point, path); @@ -1837,7 +1837,7 @@ public class PenTool : Tool { EditPoint inserted; bool stroke = StrokeTool.add_stroke; Glyph g = MainWindow.get_current_glyph ();- FastPath path;+ PathObject path; if (g.active_paths.size == 0) { np = new Path ();@@ -1845,7 +1845,7 @@ public class PenTool : Tool { np.stroke = stroke ? StrokeTool.stroke_width : 0; np.line_cap = StrokeTool.line_cap; - path = new FastPath.for_path (np);+ path = new PathObject.for_path (np); g.add_active_object (null, path); active_path = np;@@ -1872,7 +1872,7 @@ public class PenTool : Tool { } g.clear_active_paths ();- path = new FastPath.for_path (np);+ path = new PathObject.for_path (np); g.add_active_object (null, path); active_path = np; selected_path = np;@@ -2083,7 +2083,7 @@ public class PenTool : Tool { selected_handle.selected = true; active_path = p.path;- FastPath path = new FastPath.for_path (active_path);+ PathObject path = new PathObject.for_path (active_path); g.add_active_object (null, path); } @@ -122,8 +122,8 @@ public class ResizeTool : Tool { GlyphCanvas.redraw (); foreach (Object p in MainWindow.get_current_glyph ().active_paths) {- if (p is FastPath) {- FastPath path = (FastPath) p;+ if (p is PathObject) {+ PathObject path = (PathObject) p; path.get_path ().create_full_stroke (); } }@@ -546,8 +546,8 @@ public class ResizeTool : Tool { glyph.selection_boundaries (out x, out y, out w, out h); foreach (Object path in glyph.active_paths) {- if (path is FastPath) { // FIXME: other objects- Path p = ((FastPath) path).get_path ();+ if (path is PathObject) { // FIXME: other objects+ Path p = ((PathObject) path).get_path (); SvgParser.apply_matrix (p, 1, 0, s, 1, 0, 0); p.skew = skew; path.update_region_boundaries ();@@ -52,8 +52,8 @@ public class StrokeTool : GLib.Object { g.store_undo_state (); foreach (Object o in g.active_paths) {- if (o is FastPath) {- FastPath path = (FastPath) o;+ if (o is PathObject) {+ PathObject path = (PathObject) o; Path p = path.get_path (); if (p.stroke > 0) {@@ -71,7 +71,7 @@ public class StrokeTool : GLib.Object { foreach (Path np in paths.paths) { g.add_path (np);- g.active_paths.add (new FastPath.for_path (np));+ g.active_paths.add (new PathObject.for_path (np)); } PenTool.update_orientation ();@@ -140,8 +140,8 @@ public class StrokeTool : GLib.Object { g.store_undo_state (); foreach (Object object in g.active_paths) {- if (object is FastPath) {- Path p = ((FastPath) object).get_path ();+ if (object is PathObject) {+ Path p = ((PathObject) object).get_path (); if (p.stroke == 0) { o.add (p);@@ -235,7 +235,7 @@ public class StrokeTool : GLib.Object { remove_merged_curve_parts (new_paths); foreach (Path p in new_paths.paths) {- FastPath path = new FastPath.for_path (p);+ PathObject path = new PathObject.for_path (p); g.add_object (path); g.add_active_object (null, path); }@@ -151,7 +151,7 @@ public class SvgParser { glyph = MainWindow.get_current_glyph (); foreach (Path p in path_list.paths) {- FastPath path = new FastPath.for_path (p);+ PathObject path = new PathObject.for_path (p); glyph.add_object (path); glyph.add_active_object (null, path); // FIXME: groups path.update_region_boundaries ();@@ -294,8 +294,8 @@ public class SvgParser { PathList path_list = new PathList (); foreach (Object o in layer.objects) {- if (o is FastPath) {- path_list.add (((FastPath) o).get_path ());+ if (o is PathObject) {+ path_list.add (((PathObject) o).get_path ()); } } @@ -872,13 +872,13 @@ public class SvgParser { int inside_count; bool inside; foreach (Object o1 in layer.objects) {- if (o1 is FastPath) {- Path p1 = ((FastPath) o1).get_path ();+ if (o1 is PathObject) {+ Path p1 = ((PathObject) o1).get_path (); inside_count = 0; foreach (Object o2 in layer.objects) {- if (o2 is FastPath) {- Path p2 = ((FastPath) o2).get_path ();+ if (o2 is PathObject) {+ Path p2 = ((PathObject) o2).get_path (); if (p1 != p2) { inside = true;@@ -122,9 +122,9 @@ public class TrackTool : Tool { drawing = true; foreach (Object path in glyph.active_paths) {- if (path is FastPath) {+ if (path is PathObject) { // cache merged stroke parts- ((FastPath) path).get_path ().create_full_stroke ();+ ((PathObject) path).get_path ().create_full_stroke (); } } }@@ -150,7 +150,7 @@ public class TrackTool : Tool { if (g.active_paths.size > 0) { // set type for last point Object o = g.active_paths.get (g.active_paths.size - 1);- p = ((FastPath) o).get_path ();+ p = ((PathObject) o).get_path (); if (p.points.size > 1) { previous = p.points.get (p.points.size - 1);@@ -169,8 +169,8 @@ public class TrackTool : Tool { } foreach (Object path in g.active_paths) {- if (path is FastPath) {- convert_hidden_points (((FastPath) path).get_path ());+ if (path is PathObject) {+ convert_hidden_points (((PathObject) path).get_path ()); } } @@ -411,12 +411,12 @@ public class TrackTool : Tool { Object o = glyph.active_paths.get (glyph.active_paths.size - 1); - if (unlikely (!(o is FastPath))) {+ if (unlikely (!(o is PathObject))) { warning ("Object is not a path"); return; } - p = ((FastPath) o).get_path ();+ p = ((PathObject) o).get_path (); p.reopen (); px = Glyph.path_coordinate_x (x); py = Glyph.path_coordinate_y (y);@@ -504,8 +504,8 @@ public class TrackTool : Tool { Object o = glyph.active_paths.get (glyph.active_paths.size - 1); - if (likely (o is FastPath)) {- return ((FastPath) o).get_path ();+ if (likely (o is PathObject)) {+ return ((PathObject) o).get_path (); } warning ("Active object is a path.");