Commit 70d415e
test cases for export and preview
Changed files (9)
modifiedsrc/ExportTool.valamodifiedsrc/Glyph.valamodifiedsrc/MainWindow.valamodifiedsrc/OpenFontFormatReader.valamodifiedsrc/Path.valamodifiedsrc/Preview.valamodifiedsrc/TestCases.valamodifiedsrc/wscriptmodifiedwin32/wscript
Diff
@@ -358,8 +358,7 @@ os.put_string ( return export_ttf_font_path (file); } - public static bool export_ttf_font_path (File folder, bool async = true) - requires (Supplement.get_current_font ().font_file != null) {+ public static bool export_ttf_font_path (File folder, bool async = true) { Font current_font = Supplement.get_current_font (); string path; OpenFontFormatWriter fo;@@ -371,6 +370,12 @@ os.put_string ( export_mutex.lock (); + while (ExportTool.export_thread_is_running) {+ export_mutex.unlock ();+ Thread.usleep (100);+ export_mutex.lock ();+ }+ try { // create a copy of current font and use it in a separate // export thread@@ -386,6 +391,10 @@ os.put_string ( eot_file.delete (); } + assert (!is_null (temp_file));+ assert (!is_null (ttf_file.get_path ()));+ assert (!is_null (eot_file.get_path ()));+ export_thread = new ExportThread (temp_file, (!) ttf_file.get_path (), (!) eot_file.get_path ()); try {@@ -821,6 +821,11 @@ class Glyph : FontDisplay { } }+ + // a path without any editpoints+ if (path_list.length () > 0) {+ return path_list.first ().data;+ } if (unlikely (min_distance == double.MAX)) { warning (@"No path found in path_list. Length: $(path_list.length ())");@@ -83,6 +83,8 @@ internal class MainWindow : Gtk.Window { html_box.add (html_canvas); + html_canvas.set_editable (true); + tabs.signal_tab_selected.connect ((f, tab) => { bool n; File layout_dir; @@ -96,9 +98,6 @@ internal class MainWindow : Gtk.Window { if (n) { layout_dir = FontDisplay.find_layout_dir (); - html_box.set_visible (n); - glyph_canvas.set_visible (!n); - uri = fd.get_uri (); if (uri == "") { @@ -107,14 +106,15 @@ internal class MainWindow : Gtk.Window { } if (fd.get_html () == "") { - html_canvas.load_html_string (fd.get_html (), uri); + html_canvas.load_html_string (fd.get_html (), uri); html_canvas.reload_bypass_cache (); html_canvas.load_uri (uri); - - print (@"uri: $uri\n"); } else { html_canvas.load_html_string (fd.get_html (), uri); } + + html_box.set_visible (n); + glyph_canvas.set_visible (!n); } else { html_box.set_visible (false); glyph_canvas.set_visible (true); @@ -100,9 +100,7 @@ class OpenFontFormatReader : Object { } public void set_limits () {- Font f = Supplement.get_current_font ();- - f.base_line = 0;+ Font f = OpenFontFormatWriter.font; f.top_position = -get_ascender (); f.top_limit = f.top_position - 5; f.xheight_position = f.top_position - 5;@@ -221,9 +221,9 @@ class Path { cr.set_line_width (1 * (1/g.view_zoom)); cr.line_to (ax, ay);- cr.line_to (bx, by);-+ + cr.stroke (); } public void draw_edit_point (EditPoint e, Context cr) {@@ -35,11 +35,12 @@ class Preview : FontDisplay { public override void selected_canvas () { WebView w = MainWindow.get_webview (); string uri = get_uri ();+ File new_dest; - ExportTool.export_all ();-+ ExportTool.export_svg_font ();+ w.open (uri);- w.reload_bypass_cache (); + w.reload_bypass_cache (); // this is a hack forces webkit to reload the font and ignore cached data // it's only required on windows platform and in wine @@ -40,6 +40,59 @@ class TestCases { add (test_notdef, "Notdef"); add (test_merge, "Merge"); add (test_over_path, "Over path");+ add (test_preview, "Preview");+ add (test_export, "Export");+ }++ public static void test_export () {+ Glyph g;+ Path p = new Path ();+ + Tool.test_open_next_glyph ();+ g = MainWindow.get_current_glyph ();+ + p.add (-10, -10);+ p.add (50, 50);+ p.add (10, -10);+ + p.close ();+ g.add_path (p); ++ MenuTab.preview ();++ // TODO: run this many times on big font+ for (int i = 0; i < 10; i++) {+ ExportTool.export_all ();+ Tool.yield ();+ } + }+++ public static void test_preview () {+ Glyph g;+ Path p = new Path ();+ + Tool.test_open_next_glyph ();+ g = MainWindow.get_current_glyph ();+ + p.add (-10, 10);+ p.add (10, 10);+ p.add (10, -10);+ p.add (-10, -10);+ p.close ();+ g.add_path (p); ++ MenuTab.preview ();++ // TODO: run this many times on big font+ for (int i = 0; i < 10; i++) {+ MainWindow.get_tab_bar ().select_tab_name ("Menu");+ Tool.yield ();+ + MainWindow.get_tab_bar ().select_tab_name ("Preview");+ Tool.yield ();+ }+ } public static void test_over_path () {@@ -1,137 +1,137 @@-BIRDFONT = [ - 'Argument.vala', - 'Font.vala', - 'BackgroundTool.vala', - 'BackgroundSelection.vala', - 'Birdfont.vala', - 'EotWriter.vala', - 'ExportTool.vala', - 'FontDisplay.vala', - 'CharDatabase.vala', - 'Config.vala', - 'Context.vala', - 'CutBackgroundTool.vala', - 'CutTool.vala', - 'ClipTool.vala', - 'DropMenu.vala', - 'EditPoint.vala', - 'EditPointHandle.vala', - 'FileSelection.vala', - 'Glyph.vala', - 'GlyphBackgroundImage.vala', - 'GlyphCanvas.vala', - 'GlyphCollection.vala', - 'GlyphRange.vala', - 'GlyphTable.vala', - 'GridTool.vala', - 'Icons.vala', - 'Kerning.vala', - 'KeyBindings.vala', - 'Line.vala', - 'MainWindow.vala', - 'MenuTab.vala', - 'MergeTool.vala', - 'MoveTool.vala', - 'Intersection.vala', - 'IntersectionList.vala', - 'IOThread.vala', - 'OpenFontFormatWriter.vala', - 'OpenFontFormatReader.vala', - 'OverView.vala', - 'Path.vala', - 'PenTool.vala', - 'Preview.vala', - 'ResizeTool.vala', - 'SaveDialog.vala', - 'Scrollbar.vala', - 'ShrinkTool.vala', - 'SpinButton.vala', - 'Supplement.vala', - 'Svg.vala', - 'SvgFontFormatWriter.vala', - 'Preferences.vala', - 'TabBar.vala', - 'TestCases.vala', - 'TestSupplement.vala', - 'Tool.vala', - 'Toolbox.vala', - 'TooltipArea.vala', - 'UniRange.vala', - 'VersionList.vala', - 'ZoomTool.vala', -] - -BIRDFONT_MAIN = [ - 'Main.vala' -] - -BIRDFONT_EXPORT = [ - 'BirdfontExport.vala' -] - -PARAM = [ - '--thread', - '--disable-warnings', - '--enable-experimental', - '--enable-experimental-non-null', - '--vapidir=./' -] - -def build (bld): - - bld.shlib ( - target = 'birdfont', - param = PARAM, - packages = 'gtk+-2.0 libxml-2.0', - uselib = 'GTK GLIB GIO XML WEB', - source = BIRDFONT, - name = "libbirdfont" - ) - - bld ( - rule = "mv src/birdfont.h ./", - depends = "libbirdfont", - name = "birdfont_h" - ) - - bld ( - rule = 'valac -C ./src/birdfont.vapi ../src/Main.vala -X ../build/src/libbirdfont.so -X ./birdfont.h --pkg gtk+-2.0 --pkg libxml-2.0 --pkg gdk-2.0 --pkg webkit-1.0', - name = 'main_c', - target = '../Main.c', - depends = 'libbirdfont' - ) - - bld ( - rule = "valac -C ./src/birdfont.vapi ../src/BirdfontExport.vala -X ../build/src/libbirdfont.so -X ./birdfont.h --pkg gtk+-2.0 --pkg libxml-2.0 --pkg gdk-2.0 --pkg webkit-1.0", - depends = 'libbirdfont', - target = '../BirdfontExport.c', - name = 'birdfont_export' - ) - - bld ( - rule = 'gcc ../build/Main.c -I../build/ -L ../build/src -l birdfont -o ${TGT} \ - $(pkg-config --cflags --libs glib-2.0) \ - $(pkg-config --cflags --libs libxml-2.0) \ - $(pkg-config --cflags --libs gio-2.0) \ - $(pkg-config --cflags --libs libsoup-2.4) \ - $(pkg-config --cflags --libs gtk+-2.0) \ - $(pkg-config --cflags --libs webkit-1.0)', - source = ['../Main.c'], - target = 'birdfont', - depends = 'main_c' - ) - - bld ( - rule = 'gcc ../build/BirdfontExport.c -I../build/ -L ../build/src -l birdfont -o ${TGT} \ - $(pkg-config --cflags --libs glib-2.0) \ - $(pkg-config --cflags --libs libxml-2.0) \ - $(pkg-config --cflags --libs gio-2.0) \ - $(pkg-config --cflags --libs libsoup-2.4) \ - $(pkg-config --cflags --libs gtk+-2.0) \ - $(pkg-config --cflags --libs webkit-1.0)', - source = ['../BirdfontExport.c'], - target = 'birdfont-export', - depends = 'birdfont_export' - ) - - bld.install_files('${PREFIX}/bin/', ['birdfont', 'birdfont-export']) +BIRDFONT = [+ 'Argument.vala',+ 'Font.vala',+ 'BackgroundTool.vala',+ 'BackgroundSelection.vala',+ 'Birdfont.vala',+ 'EotWriter.vala',+ 'ExportTool.vala',+ 'FontDisplay.vala',+ 'CharDatabase.vala',+ 'Config.vala',+ 'Context.vala',+ 'CutBackgroundTool.vala',+ 'CutTool.vala',+ 'ClipTool.vala',+ 'DropMenu.vala',+ 'EditPoint.vala',+ 'EditPointHandle.vala',+ 'FileSelection.vala',+ 'Glyph.vala',+ 'GlyphBackgroundImage.vala',+ 'GlyphCanvas.vala',+ 'GlyphCollection.vala',+ 'GlyphRange.vala',+ 'GlyphTable.vala',+ 'GridTool.vala',+ 'Icons.vala',+ 'Kerning.vala', + 'KeyBindings.vala', + 'Line.vala',+ 'MainWindow.vala',+ 'MenuTab.vala',+ 'MergeTool.vala',+ 'MoveTool.vala',+ 'Intersection.vala',+ 'IntersectionList.vala',+ 'IOThread.vala',+ 'OpenFontFormatWriter.vala',+ 'OpenFontFormatReader.vala',+ 'OverView.vala',+ 'Path.vala',+ 'PenTool.vala',+ 'Preview.vala',+ 'ResizeTool.vala',+ 'SaveDialog.vala',+ 'Scrollbar.vala',+ 'ShrinkTool.vala',+ 'SpinButton.vala',+ 'Supplement.vala',+ 'Svg.vala',+ 'SvgFontFormatWriter.vala',+ 'Preferences.vala',+ 'TabBar.vala',+ 'TestCases.vala', + 'TestSupplement.vala', + 'Tool.vala',+ 'Toolbox.vala',+ 'TooltipArea.vala',+ 'UniRange.vala',+ 'VersionList.vala',+ 'ZoomTool.vala',+]++BIRDFONT_MAIN = [+ 'Main.vala'+]++BIRDFONT_EXPORT = [+ 'BirdfontExport.vala'+]++PARAM = [+ '--thread',+ '--disable-warnings',+ '--enable-experimental',+ '--enable-experimental-non-null',+ '--vapidir=./'+]++def build (bld):++ bld.shlib (+ target = 'birdfont',+ param = PARAM,+ packages = 'gtk+-2.0 libxml-2.0',+ uselib = 'GTK GLIB GIO XML WEB',+ source = BIRDFONT,+ name = "libbirdfont"+ )++ bld (+ rule = "mv src/birdfont.h ./",+ depends = "libbirdfont",+ name = "birdfont_h"+ )+ + bld (+ rule = 'valac -C ./src/birdfont.vapi ../src/Main.vala -X ../build/src/libbirdfont.so -X ./birdfont.h --pkg gtk+-2.0 --pkg libxml-2.0 --pkg gdk-2.0 --pkg webkit-1.0',+ name = 'main_c',+ target = '../Main.c',+ depends = 'libbirdfont'+ )++ bld (+ rule = "valac -C ./src/birdfont.vapi ../src/BirdfontExport.vala -X ../build/src/libbirdfont.so -X ./birdfont.h --pkg gtk+-2.0 --pkg libxml-2.0 --pkg gdk-2.0 --pkg webkit-1.0",+ depends = 'libbirdfont',+ target = '../BirdfontExport.c',+ name = 'birdfont_export'+ )++ bld (+ rule = 'gcc ../build/Main.c -I../build/ -L ../build/src -l birdfont -o ${TGT} \+ $(pkg-config --cflags --libs glib-2.0) \+ $(pkg-config --cflags --libs libxml-2.0) \+ $(pkg-config --cflags --libs gio-2.0) \+ $(pkg-config --cflags --libs libsoup-2.4) \+ $(pkg-config --cflags --libs gtk+-2.0) \+ $(pkg-config --cflags --libs webkit-1.0)',+ source = ['../Main.c'],+ target = 'birdfont',+ depends = 'main_c'+ )++ bld (+ rule = 'gcc ../build/BirdfontExport.c -I../build/ -L ../build/src -l birdfont -o ${TGT} \+ $(pkg-config --cflags --libs glib-2.0) \+ $(pkg-config --cflags --libs libxml-2.0) \+ $(pkg-config --cflags --libs gio-2.0) \+ $(pkg-config --cflags --libs libsoup-2.4) \+ $(pkg-config --cflags --libs gtk+-2.0) \+ $(pkg-config --cflags --libs webkit-1.0)',+ source = ['../BirdfontExport.c'],+ target = 'birdfont-export',+ depends = 'birdfont_export'+ )+ + bld.install_files('${PREFIX}/bin/', ['birdfont', 'birdfont-export'])@@ -116,7 +116,7 @@ def build(bld): bld(rule="""i686-w64-mingw32-ar rcs libbirdfont.dll.a win32/*.o""", name="mingw link static", depends_on="mingw link shared") bld(rule="""i686-w64-mingw32-gcc \- ./win32/*.o \+ ./win32/Main.o \ ./icon.res \ -s \ -Wl,-subsystem,windows \@@ -129,6 +129,9 @@ def build(bld): -B static -l webkitgtk-1.0.dll -B static -lgtk-win32-2.0.dll -B static -lgdk-win32-2.0.dll -B static -latk-1.0.dll -B static -lgio-2.0.dll -B static -lpangowin32-1.0.dll -B static -lpangocairo-1.0.dll -B static -lgdk_pixbuf-2.0.dll -B static -lpango-1.0.dll -B static -lcairo.dll -B static -lgobject-2.0.dll -B static -lgmodule-2.0.dll -B static -lgthread-2.0.dll -B static -lglib-2.0.dll \ -static -o birdfont.exe""", source="../build/src/Supplement.c", target="../birdfont.exe", depends_on=['mingw link shared', 'icon'], name="mingw link", always=True) + bld(rule="mv birdfont.exe supplement/", depends_on='mingw link', always=True)+ bld(rule="mv libbirdfont.dll supplement/", depends_on='mingw link', always=True)+ if bld.options.installer: copy_runtime_dependencies (bld) generate_nsi(bld)@@ -279,9 +282,6 @@ def copy_runtime_dependencies (bld): MINGW = "/usr/i686-w64-mingw32/sys-root/mingw" MINGW_BIN = MINGW + "/bin" - bld(rule="mv birdfont.exe supplement/", depends_on='mingw link', always=True)- bld(rule="mv libbirdfont.dll supplement/", depends_on='mingw link', always=True)- bld(rule="cp ../README supplement/") bld(rule="cp ../COPYING supplement/") bld(rule="cp ../NEWS supplement/")