You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
(58) |
May
(28) |
Jun
(308) |
Jul
(11) |
Aug
(1) |
Sep
|
Oct
(3) |
Nov
(4) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(4) |
Feb
(8) |
Mar
(3) |
Apr
(3) |
May
(8) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
2009 |
Jan
|
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <kt...@us...> - 2007-06-08 04:06:06
|
Revision: 1337 http://tomoe.svn.sourceforge.net/tomoe/?rev=1337&view=rev Author: ktou Date: 2007-06-07 21:06:08 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * test/: used Test::Unit instead of RSpec because RSpec API is changed! We will not use RSpec anymore. Modified Paths: -------------- tomoe/trunk/test/Makefile.am Added Paths: ----------- tomoe/trunk/test/run-test.rb tomoe/trunk/test/run-tests.sh tomoe/trunk/test/test_char.rb tomoe/trunk/test/test_config.rb tomoe/trunk/test/test_context.rb tomoe/trunk/test/test_dict.rb tomoe/trunk/test/test_writing.rb tomoe/trunk/test/tomoe-test-utils.rb Removed Paths: ------------- tomoe/trunk/test/char_spec.rb tomoe/trunk/test/config_spec.rb tomoe/trunk/test/context_spec.rb tomoe/trunk/test/dict_spec.rb tomoe/trunk/test/run-spec.rb tomoe/trunk/test/run-specs.sh tomoe/trunk/test/tomoe-spec-utils.rb tomoe/trunk/test/writing_spec.rb Modified: tomoe/trunk/test/Makefile.am =================================================================== --- tomoe/trunk/test/Makefile.am 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/Makefile.am 2007-06-08 04:06:08 UTC (rev 1337) @@ -49,7 +49,7 @@ dict_modules += mysql endif -TESTS = run-specs.sh +TESTS = run-tests.sh TESTS_ENVIRONMENT = DICT_MODULES="$(dict_modules)" output_dict_modules: Deleted: tomoe/trunk/test/char_spec.rb =================================================================== --- tomoe/trunk/test/char_spec.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/char_spec.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,160 +0,0 @@ -require 'tomoe-spec-utils' - -context "Tomoe::Char" do - specify "should not dump any XML without data" do - char = Tomoe::Char.new - char.to_xml.should_empty - end - - specify "should dump XML with UTF8" do - char = Tomoe::Char.new - char.utf8 = "あ" - xml = " <character>\n" - xml << " <utf8>あ</utf8>\n" - xml << " </character>\n" - char.to_xml.should == xml - end - - specify "should dump XML with variant" do - hashigo_daka = ucs4_to_utf8(39641) # はしご高 - char = Tomoe::Char.new - char.utf8 = "高" - char.variant = hashigo_daka - xml = " <character>\n" - xml << " <utf8>高</utf8>\n" - xml << " <variant>#{hashigo_daka}</variant>\n" - xml << " </character>\n" - char.to_xml.should == xml - end - - specify "should dump XML with radicals" do - sanzui = ucs4_to_utf8(27701) # さんずい - char = Tomoe::Char.new - char.utf8 = "池" - char.add_radical(sanzui) - xml = " <character>\n" - xml << " <utf8>池</utf8>\n" - xml << " <radicals>\n" - xml << " <radical>#{sanzui}</radical>\n" - xml << " </radicals>\n" - xml << " </character>\n" - char.to_xml.should == xml - end - - specify "should load from dumped XML" do - char = Tomoe::Char.new - char.utf8 = "あ" - new_char = Tomoe::Char.new(char.to_xml) - new_char.utf8.should == char.utf8 - end - - specify "should load from dumped XML with variant" do - hashigo_daka = ucs4_to_utf8(39641) # はしご高 - char = Tomoe::Char.new - char.utf8 = "高" - char.variant = hashigo_daka - - new_char = Tomoe::Char.new(char.to_xml) - new_char.utf8.should == char.utf8 - new_char.variant.should == hashigo_daka - end - - specify "should load from dumped XML with radicals" do - sanzui = ucs4_to_utf8(27701) # さんずい - char = Tomoe::Char.new - char.utf8 = "池" - char.add_radical(sanzui) - - new_char = Tomoe::Char.new(char.to_xml) - new_char.utf8.should == char.utf8 - new_char.radicals.should == [sanzui] - end - - specify "should load from dumped XML with n_strokes" do - utf8 = "a" - n_strokes = 5 - - char = Tomoe::Char.new - char.utf8 = utf8 - char.n_strokes.should == -1 - char.n_strokes = n_strokes - char.n_strokes.should == n_strokes - - new_char = Tomoe::Char.new(char.to_xml) - new_char.utf8.should == utf8 - new_char.n_strokes.should == n_strokes - end - - specify "should set/get n_strokes" do - char = Tomoe::Char.new - char.n_strokes.should == -1 - - char.n_strokes = 5 - char.n_strokes.should == 5 - end - - specify "should set/get variant" do - variant = "異" - - char = Tomoe::Char.new - char.variant.should_nil - - char.variant = variant - char.variant.should == variant - end - - specify "should set/get writing" do - strokes = [[[0, 0], [10, 10]]] - writing = Tomoe::Writing.new - writing.move_to(*strokes[0][0]) - writing.line_to(*strokes[0][1]) - writing.strokes.should == strokes - - char = Tomoe::Char.new - char.writing.should_nil - - char.writing = writing - char.writing.strokes.should == strokes - end - - specify "should add/get reading" do - reading_a = Tomoe::Reading.new(Tomoe::Reading::JA_ON, "あ") - - reading_kai = Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "カイ") - - char = Tomoe::Char.new - char.readings.should_empty - - char.add_reading(reading_a) - char.readings.collect do |reading| - reading.reading - end.sort.should == [reading_a.reading] - - char.add_reading(reading_kai) - char.readings.collect do |reading| - reading.reading - end.sort.should == [reading_a.reading, reading_kai.reading].sort - end - - specify "should add/get radical" do - radical1 = "木" - radical2 = "水" - - char = Tomoe::Char.new - char.radicals.should_empty - - char.add_radical(radical1) - char.radicals.sort.should == [radical1] - - char.add_radical(radical2) - char.radicals.sort.should == [radical1, radical2].sort - end - - specify "should be comparable" do - char1 = Tomoe::Char.new - char1.utf8 = "あ" - char2 = Tomoe::Char.new - char2.utf8 = "あ" - char1.should == char2 - end -end Deleted: tomoe/trunk/test/config_spec.rb =================================================================== --- tomoe/trunk/test/config_spec.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/config_spec.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,46 +0,0 @@ -require 'tomoe-spec-utils' - -context "Tomoe::Config" do - def config_file(contents) - config_file = Tempfile.new("tomoe-context") - config_file.open - config_file.puts(contents) - config_file.close - config_file - end - - specify "Get language" do - file = config_file(<<-EOC) -[config] -language = ja -EOC - config = Tomoe::Config.new(file.path) - config.languages.should == ['ja'] - end - - specify "Get languages" do - file = config_file(<<-EOC) -[config] -languages = ja -EOC - config = Tomoe::Config.new(file.path) - config.languages.should == ['ja'] - - file = config_file(<<-EOC) -[config] -languages = ja;en;fr -EOC - config = Tomoe::Config.new(file.path) - config.languages.should == ['ja', 'en', 'fr'] - end - - specify "both language and languages are specified" do - file = config_file(<<-EOC) -[config] -language = ja -languages = en;ja;fr -EOC - config = Tomoe::Config.new(file.path) - config.languages.should == ['ja'] - end -end Deleted: tomoe/trunk/test/context_spec.rb =================================================================== --- tomoe/trunk/test/context_spec.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/context_spec.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,130 +0,0 @@ -require 'tomoe-spec-utils' - -context "Tomoe::Context" do - @@context = nil - def context - return @@context if @@context - config = { - "filename" => File.join(data_dir, "handwriting.xml"), - "editable" => false, - } - dict = Tomoe::DictXML.new(config) - recognizer = Tomoe::RecognizerSimple.new("dictionary" => dict) - @@context = Tomoe::Context.new("recognizer" => recognizer) - @@context.load_config(@config_file.path) - @@context - end - - setup do - setup_user_dict - end - - def setup_user_dict - @user_dict_file = Tempfile.new("tomoe-user-dict") - @user_dict_file.open - @user_dict_file.puts(<<-EOD) -<?xml version ="1.0" encoding="UTF-8"?> -<!DOCTYPE dictionary SYSTEM "#{File.join(data_dir, 'tomoe-dict.dtd')}"> -<dictionary name="User dictionary"> -</dictionary> -EOD - @user_dict_file.close - - @user_dict_config_file = Tempfile.new("tomoe-context") - @user_dict_config_file.open - @user_dict_config_file.puts(<<-EOC) -[config] -use-system-dictionaries = false -user-dictionary = user - -[user-dictionary] -type = xml -file = #{@user_dict_file.path} -EOC - @user_dict_config_file.close - end - - TomoeSpecUtils::Path.test_data_files.each do |file| - base = File.basename(file) - specify "Search by strokes for #{base}" do - expected, writing = TomoeSpecUtils::TestData.parse(file) - query = Tomoe::Query.new - query.writing = writing - cands = context.search(query) - actual = cands.collect {|cand| cand.char.utf8} - - [base, actual].should == [base, expected] - end - end - - specify "Search by reading" do - query = Tomoe::Query.new - query.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "せい")) - cands = context.search(query) - cands.collect {|cand| cand.char.utf8}.sort.should == ["汐", "背", "脊"].sort - end - - specify "User dictionary" do - context = Tomoe::Context.new() - context.load_config(@user_dict_config_file.path) - - context.search(Tomoe::Query.new).should_be_empty - - char = Tomoe::Char.new - char.utf8 = "あ" - context.register(char).should == true - context.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end.should == [char.utf8] - - context.unregister(char.utf8).should == true - context.search(Tomoe::Query.new).should_be_empty - end - - specify "should assign available UTF8 encoded code point " \ - "when a character is registered without UTF8 value" do - context = Tomoe::Context.new() - context.load_config(@user_dict_config_file.path) - - n_strokes = 8 - query = Tomoe::Query.new - query.min_n_strokes = n_strokes - query.max_n_strokes = n_strokes - - context.search(query).should_be_empty - - char = Tomoe::Char.new - char.n_strokes = n_strokes - context.register(char).should == true - char.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START) - - context.search(query).collect do |cand| - cand.char.utf8 - end.should == [char.utf8] - - - char2 = Tomoe::Char.new - char2.n_strokes = n_strokes - context.register(char2).should == true - char2.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START + 1) - - context.search(query).collect do |cand| - cand.char.utf8 - end.sort.should == [char.utf8, char2.utf8].sort - end - - specify "should get character by UTF8" do - context = Tomoe::Context.new() - context.load_config(@user_dict_config_file.path) - - context[ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START)].should_nil - - char = Tomoe::Char.new - char.n_strokes = 8 - context.register(char).should == true - char.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START) - - retrieved_char = context[ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START)] - retrieved_char.n_strokes.should == char.n_strokes - end -end Deleted: tomoe/trunk/test/dict_spec.rb =================================================================== --- tomoe/trunk/test/dict_spec.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/dict_spec.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,352 +0,0 @@ -require 'tomoe-spec-utils' - -dict_module_type = TomoeSpecUtils::Config.dict_module_type -context "Tomoe::Dict(#{dict_module_type})" do - read_only_dictionaries = %w(unihan) - if read_only_dictionaries.include?(dict_module_type) - puts "#{dict_module_type} is read-only dictionary. skip tests." - break - end - - setup do - setup_dict_file - @original = Tomoe::DictXML.new("filename" => @dict_file.path) - end - - specify "should load successfully" do - make_temporary_dict(@original) do |dict| - a = dict[@utf8] - a.should.not.nil - a.utf8.should == @utf8 - if dict_module_type == "mysql" - puts "MySQL backend doesn't support writing" - else - a.writing.strokes.should == @strokes - end - end - end - - specify "should register/unregister" do - make_temporary_dict(@original) do |dict| - prev = dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end - - char = Tomoe::Char.new - char.utf8 = "か" - dict.register(char).should == true - dict["か"].should == char - dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end.sort.should == ["か", *prev].sort - dict.unregister("か").should == true - dict["か"].should_nil - - dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end.should == prev - end - end - - specify "should override the first register by the second register" do - make_temporary_dict(@original) do |dict| - prev = dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end - - utf8 = "か" - first_n_strokes = 8 - second_n_strokes = 10 - - first_char = Tomoe::Char.new - first_char.utf8 = utf8 - first_char.n_strokes = first_n_strokes - dict.register(first_char).should == true - dict[utf8].n_strokes.should == first_n_strokes - dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end.sort.should == [utf8, *prev].sort - - second_char = Tomoe::Char.new - second_char.utf8 = utf8 - second_char.n_strokes = second_n_strokes - dict.register(second_char).should == true - dict[utf8].n_strokes.should_not == first_n_strokes - dict[utf8].n_strokes.should == second_n_strokes - dict.search(Tomoe::Query.new).collect do |cand| - cand.char.utf8 - end.sort.should == [utf8, *prev].sort - end - end - - specify "should register/unregister PUA character" do - make_temporary_dict(@original) do |dict| - pua_start = Tomoe::Char::PRIVATE_USE_AREA_START - - utf8_to_ucs4(dict.available_private_utf8).should == pua_start - - char1 = Tomoe::Char.new - dict.register(char1).should == true - char1.utf8.should == ucs4_to_utf8(pua_start) - utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 1 - - char2 = Tomoe::Char.new - dict.register(char2).should == true - char2.utf8.should == ucs4_to_utf8(pua_start + 1) - utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 2 - - dict[ucs4_to_utf8(pua_start)].should == char1 - dict[ucs4_to_utf8(pua_start + 1)].should == char2 - dict.unregister(char1.utf8).should == true - dict[ucs4_to_utf8(pua_start)].should_nil - dict[ucs4_to_utf8(pua_start + 1)].should == char2 - - char3 = Tomoe::Char.new - dict.register(char3).should == true - char3.utf8.should == ucs4_to_utf8(pua_start + 2) - utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 3 - end - end - - specify "should fail after PUA is full" do - make_temporary_dict(@original) do |dict| - pua_start = Tomoe::Char::PRIVATE_USE_AREA_START - pua_end = Tomoe::Char::PRIVATE_USE_AREA_END - - utf8_to_ucs4(dict.available_private_utf8).should == pua_start - pua_start.upto(pua_end - 1) do |i| - char = Tomoe::Char.new - char.utf8 = ucs4_to_utf8(i) - dict.register(char).should == true - end - utf8_to_ucs4(dict.available_private_utf8).should == pua_end - - char = Tomoe::Char.new - char.utf8 = ucs4_to_utf8(pua_end) - dict.register(char).should == true - dict.available_private_utf8.should_nil - - char = Tomoe::Char.new - dict.register(char).should == false - end - end - - specify "should save/restore meta data" do - make_temporary_dict(@original) do |dict| - char = Tomoe::Char.new - char.utf8 = "か" - char.should.not.have_meta_data - - char["meta1"] = "value1" - char["meta2"] = "value2" - - dict.register(char).should == true - - registered_char = dict["か"] - char.should.have_meta_data - registered_char["meta1"].should == "value1" - registered_char["meta2"].should == "value2" - end - end - - specify "should support reading search" do - make_temporary_dict(@original) do |dict| - char = Tomoe::Char.new - char.utf8 = "池" - char.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "いけ")) - - dict.register(char).should == true - - query = Tomoe::Query.new - query.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "いけ")) - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - end - end - - specify "should support n_strokes search" do - make_temporary_dict(@original) do |dict| - char = Tomoe::Char.new - char.utf8 = "池" - char.n_strokes = 6 - - dict.register(char).should == true - - query = Tomoe::Query.new - query.min_n_strokes = 6 - query.max_n_strokes = 6 - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - - query = Tomoe::Query.new - query.min_n_strokes = 6 - query.max_n_strokes = 7 - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - - query = Tomoe::Query.new - query.min_n_strokes = 5 - query.max_n_strokes = 6 - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - - query = Tomoe::Query.new - query.min_n_strokes = 6 - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - - query = Tomoe::Query.new - query.max_n_strokes = 6 - dict.search(query).collect do |cand| - cand.char.utf8 - end.sort.should == ["あ", "池"].sort - end - end - - specify "should support radical search" do - make_temporary_dict(@original) do |dict| - sanzui = ucs4_to_utf8(27701) # さんずい - char = Tomoe::Char.new - char.utf8 = "池" - char.add_radical(sanzui) - - dict.register(char).should == true - - query = Tomoe::Query.new - query.add_radical(sanzui) - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["池"] - end - end - - specify "should support variant search" do - make_temporary_dict(@original) do |dict| - hashigo_daka = ucs4_to_utf8(39641) # はしご高 - char = Tomoe::Char.new - char.utf8 = "高" - char.variant = hashigo_daka - - dict.register(char).should == true - - query = Tomoe::Query.new - query.variant = hashigo_daka - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["高"] - end - end - - specify "should support UTF8 search" do - make_temporary_dict(@original) do |dict| - char = Tomoe::Char.new - char.utf8 = "か" - - dict.register(char).should == true - - query = Tomoe::Query.new - query.utf8 = "か" - dict.search(query).collect do |cand| - cand.char.utf8 - end.should == ["か"] - end - end - - def setup_strokes - @strokes = [ - [ - [18, 19], - [83, 22] - ], - [ - [49, 3], - [48, 67], - [60, 84], - ], - [ - [74, 34], - [49, 76], - [27, 80], - [17, 68], - [28, 49], - [60, 46], - [80, 57], - [82, 74], - [76, 83], - ], - ] - end - - def setup_dict_file - @dict_file = Tempfile.new("tomoe-dict-xml") - @utf8 = "あ" - - setup_strokes - strokes_xml = " <strokes>\n" - @strokes.each do |stroke| - strokes_xml << " <stroke>\n" - stroke.each do |x, y| - strokes_xml << " <point x=\"#{x}\" y=\"#{y}\"/>\n" - end - strokes_xml << " </stroke>\n" - end - strokes_xml << " </strokes>" - - @character_xml = <<-EOC - <character> - <utf8>#{@utf8}</utf8> - <number-of-strokes>#{@strokes.size}</number-of-strokes> -#{strokes_xml} - </character> -EOC - - @dict_content = <<-EOX -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE dictionary SYSTEM "tomoe-dict.dtd"> -<dictionary> -#{@character_xml} -</dictionary> -EOX - set_content(@dict_file, @dict_content) - end - - def setup_est_draft_file - @est_draft_file = Tempfile.new("tomoe-dict-est-draft") - @est_draft_content = <<-EOC -@uri=font:#{@utf8} -utf8=#{@utf8} -n_strokes=#{@strokes.size} - -#{@character_xml.collect {|line| "\t#{line}"}} -EOC - set_content(@est_draft_file, @est_draft_content) - end - - def set_content(file, content) - file.open - file.truncate(0) - file.rewind - file.print(content) - file.close - - file.open - file.read.should == content - file.close - end - - def truncate_content(file) - file.set_content("") - end - - def content(file) - file.open - file.read - ensure - file.close - end -end Deleted: tomoe/trunk/test/run-spec.rb =================================================================== --- tomoe/trunk/test/run-spec.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/run-spec.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby - -require 'rubygems' - -require 'spec' - -test_dir = File.expand_path(File.dirname(__FILE__)) -top_dir = File.expand_path(File.join(test_dir, "..")) -$LOAD_PATH.unshift(File.join(top_dir, "bindings", "ruby", ".libs")) -$LOAD_PATH.unshift(File.join(top_dir, "bindings", "ruby")) -$LOAD_PATH.unshift(File.join(test_dir)) - -require 'tomoe-spec-utils' - -ARGV.unshift("--diff=unified") -ARGV.concat(Dir.glob(File.join(test_dir, "*_spec.rb"))) -Spec::Runner::CommandLine.run(ARGV, STDERR, STDOUT, true, true) Deleted: tomoe/trunk/test/run-specs.sh =================================================================== --- tomoe/trunk/test/run-specs.sh 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/run-specs.sh 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,6 +0,0 @@ -#!/bin/sh - -for dict_module in $DICT_MODULES; do - echo "tests for $dict_module" - TOMOE_DICT_MODULE="$dict_module" $RUBY `dirname $0`/run-spec.rb || exit 1 -done Copied: tomoe/trunk/test/run-test.rb (from rev 1336, tomoe/trunk/test/run-spec.rb) =================================================================== --- tomoe/trunk/test/run-test.rb (rev 0) +++ tomoe/trunk/test/run-test.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,25 @@ +#!/usr/bin/env ruby + +$VERBOSE = true + +require "test/unit" + +test_dir = File.expand_path(File.dirname(__FILE__)) +top_dir = File.expand_path(File.join(test_dir, "..")) +$LOAD_PATH.unshift(File.join(top_dir, "bindings", "ruby", ".libs")) +$LOAD_PATH.unshift(File.join(top_dir, "bindings", "ruby")) +$LOAD_PATH.unshift(File.join(test_dir)) + +require 'tomoe-test-utils' + +Dir.glob(File.join(test_dir, "test_char.rb")) do |file| + require file.gsub(/\.rb/, "") +end + +args = [File.dirname($0), ARGV.dup] +if Test::Unit::AutoRunner.respond_to?(:standalone?) + args.unshift(false) +else + args.unshift($0) +end +Test::Unit::AutoRunner.run(*args) Copied: tomoe/trunk/test/run-tests.sh (from rev 1336, tomoe/trunk/test/run-specs.sh) =================================================================== --- tomoe/trunk/test/run-tests.sh (rev 0) +++ tomoe/trunk/test/run-tests.sh 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,6 @@ +#!/bin/sh + +for dict_module in $DICT_MODULES; do + echo "tests for $dict_module" + TOMOE_DICT_MODULE="$dict_module" $RUBY `dirname $0`/run-test.rb || exit 1 +done Copied: tomoe/trunk/test/test_char.rb (from rev 1336, tomoe/trunk/test/char_spec.rb) =================================================================== --- tomoe/trunk/test/test_char.rb (rev 0) +++ tomoe/trunk/test/test_char.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,164 @@ +require 'tomoe-test-utils' + +class TestContext < Test::Unit::TestCase + include TomoeTestUtils + + def test_dump_without_data + char = Tomoe::Char.new + assert_equal("", char.to_xml) + end + + def test_dump_with_utf8 + char = Tomoe::Char.new + char.utf8 = "あ" + xml = " <character>\n" + xml << " <utf8>あ</utf8>\n" + xml << " </character>\n" + assert_equal(xml, char.to_xml) + end + + def test_dump_with_variant + hashigo_daka = ucs4_to_utf8(39641) # はしご高 + char = Tomoe::Char.new + char.utf8 = "高" + char.variant = hashigo_daka + xml = " <character>\n" + xml << " <utf8>高</utf8>\n" + xml << " <variant>#{hashigo_daka}</variant>\n" + xml << " </character>\n" + assert_equal(xml, char.to_xml) + end + + def test_dump_with_radicals + sanzui = ucs4_to_utf8(27701) # さんずい + char = Tomoe::Char.new + char.utf8 = "池" + char.add_radical(sanzui) + xml = " <character>\n" + xml << " <utf8>池</utf8>\n" + xml << " <radicals>\n" + xml << " <radical>#{sanzui}</radical>\n" + xml << " </radicals>\n" + xml << " </character>\n" + assert_equal(xml, char.to_xml) + end + + def test_load_from_dumped_XML + char = Tomoe::Char.new + char.utf8 = "あ" + new_char = Tomoe::Char.new(char.to_xml) + assert_equal(char.utf8, new_char.utf8) + end + + def test_load_from_dumped_XML_with_variant + hashigo_daka = ucs4_to_utf8(39641) # はしご高 + char = Tomoe::Char.new + char.utf8 = "高" + char.variant = hashigo_daka + + new_char = Tomoe::Char.new(char.to_xml) + assert_equal(char.utf8, new_char.utf8) + assert_equal(hashigo_daka, new_char.variant) + end + + def test_load_from_dumped_XML_with_radicals + sanzui = ucs4_to_utf8(27701) # さんずい + char = Tomoe::Char.new + char.utf8 = "池" + char.add_radical(sanzui) + + new_char = Tomoe::Char.new(char.to_xml) + assert_equal(char.utf8, new_char.utf8) + assert_equal([sanzui], new_char.radicals) + end + + def test_load_from_dumped_XML_with_n_strokes + utf8 = "a" + n_strokes = 5 + + char = Tomoe::Char.new + char.utf8 = utf8 + assert_equal(-1, char.n_strokes) + char.n_strokes = n_strokes + assert_equal(n_strokes, char.n_strokes) + + new_char = Tomoe::Char.new(char.to_xml) + assert_equal(utf8, new_char.utf8) + assert_equal(n_strokes, new_char.n_strokes) + end + + def test_n_strokes_accessor + char = Tomoe::Char.new + assert_equal(-1, char.n_strokes) + + char.n_strokes = 5 + assert_equal(5, char.n_strokes) + end + + def test_variant_accessor + variant = "異" + + char = Tomoe::Char.new + assert_nil(char.variant) + + char.variant = variant + assert_equal(variant, char.variant) + end + + def test_writing_accessor + strokes = [[[0, 0], [10, 10]]] + writing = Tomoe::Writing.new + writing.move_to(*strokes[0][0]) + writing.line_to(*strokes[0][1]) + assert_equal(strokes, writing.strokes) + + char = Tomoe::Char.new + assert_nil(char.writing) + + char.writing = writing + assert_equal(strokes, char.writing.strokes) + end + + def test_reading_accessor + reading_a = Tomoe::Reading.new(Tomoe::Reading::JA_ON, "あ") + + reading_kai = Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "カイ") + + char = Tomoe::Char.new + assert_equal([], char.readings) + + char.add_reading(reading_a) + assert_equal([reading_a.reading].sort, + char.readings.collect do |reading| + reading.reading + end.sort) + + char.add_reading(reading_kai) + assert_equal([reading_a.reading, reading_kai.reading].sort, + char.readings.collect do |reading| + reading.reading + end.sort) + end + + def test_radical_accessor + radical1 = "木" + radical2 = "水" + + char = Tomoe::Char.new + assert_equal([], char.radicals) + + char.add_radical(radical1) + assert_equal([radical1], char.radicals.sort) + + char.add_radical(radical2) + assert_equal([radical1, radical2].sort, char.radicals.sort) + end + + def test_comparable + char1 = Tomoe::Char.new + char1.utf8 = "あ" + char2 = Tomoe::Char.new + char2.utf8 = "あ" + assert_equal(char1, char2) + end +end Copied: tomoe/trunk/test/test_config.rb (from rev 1336, tomoe/trunk/test/config_spec.rb) =================================================================== --- tomoe/trunk/test/test_config.rb (rev 0) +++ tomoe/trunk/test/test_config.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,46 @@ +require 'tomoe-spec-utils' + +context "Tomoe::Config" do + def config_file(contents) + config_file = Tempfile.new("tomoe-context") + config_file.open + config_file.puts(contents) + config_file.close + config_file + end + + specify "Get language" do + file = config_file(<<-EOC) +[config] +language = ja +EOC + config = Tomoe::Config.new(file.path) + config.languages.should == ['ja'] + end + + specify "Get languages" do + file = config_file(<<-EOC) +[config] +languages = ja +EOC + config = Tomoe::Config.new(file.path) + config.languages.should == ['ja'] + + file = config_file(<<-EOC) +[config] +languages = ja;en;fr +EOC + config = Tomoe::Config.new(file.path) + config.languages.should == ['ja', 'en', 'fr'] + end + + specify "both language and languages are specified" do + file = config_file(<<-EOC) +[config] +language = ja +languages = en;ja;fr +EOC + config = Tomoe::Config.new(file.path) + config.languages.should == ['ja'] + end +end Copied: tomoe/trunk/test/test_context.rb (from rev 1336, tomoe/trunk/test/context_spec.rb) =================================================================== --- tomoe/trunk/test/test_context.rb (rev 0) +++ tomoe/trunk/test/test_context.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,130 @@ +require 'tomoe-spec-utils' + +context "Tomoe::Context" do + @@context = nil + def context + return @@context if @@context + config = { + "filename" => File.join(data_dir, "handwriting.xml"), + "editable" => false, + } + dict = Tomoe::DictXML.new(config) + recognizer = Tomoe::RecognizerSimple.new("dictionary" => dict) + @@context = Tomoe::Context.new("recognizer" => recognizer) + @@context.load_config(@config_file.path) + @@context + end + + setup do + setup_user_dict + end + + def setup_user_dict + @user_dict_file = Tempfile.new("tomoe-user-dict") + @user_dict_file.open + @user_dict_file.puts(<<-EOD) +<?xml version ="1.0" encoding="UTF-8"?> +<!DOCTYPE dictionary SYSTEM "#{File.join(data_dir, 'tomoe-dict.dtd')}"> +<dictionary name="User dictionary"> +</dictionary> +EOD + @user_dict_file.close + + @user_dict_config_file = Tempfile.new("tomoe-context") + @user_dict_config_file.open + @user_dict_config_file.puts(<<-EOC) +[config] +use-system-dictionaries = false +user-dictionary = user + +[user-dictionary] +type = xml +file = #{@user_dict_file.path} +EOC + @user_dict_config_file.close + end + + TomoeSpecUtils::Path.test_data_files.each do |file| + base = File.basename(file) + specify "Search by strokes for #{base}" do + expected, writing = TomoeSpecUtils::TestData.parse(file) + query = Tomoe::Query.new + query.writing = writing + cands = context.search(query) + actual = cands.collect {|cand| cand.char.utf8} + + [base, actual].should == [base, expected] + end + end + + specify "Search by reading" do + query = Tomoe::Query.new + query.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "せい")) + cands = context.search(query) + cands.collect {|cand| cand.char.utf8}.sort.should == ["汐", "背", "脊"].sort + end + + specify "User dictionary" do + context = Tomoe::Context.new() + context.load_config(@user_dict_config_file.path) + + context.search(Tomoe::Query.new).should_be_empty + + char = Tomoe::Char.new + char.utf8 = "あ" + context.register(char).should == true + context.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end.should == [char.utf8] + + context.unregister(char.utf8).should == true + context.search(Tomoe::Query.new).should_be_empty + end + + specify "should assign available UTF8 encoded code point " \ + "when a character is registered without UTF8 value" do + context = Tomoe::Context.new() + context.load_config(@user_dict_config_file.path) + + n_strokes = 8 + query = Tomoe::Query.new + query.min_n_strokes = n_strokes + query.max_n_strokes = n_strokes + + context.search(query).should_be_empty + + char = Tomoe::Char.new + char.n_strokes = n_strokes + context.register(char).should == true + char.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START) + + context.search(query).collect do |cand| + cand.char.utf8 + end.should == [char.utf8] + + + char2 = Tomoe::Char.new + char2.n_strokes = n_strokes + context.register(char2).should == true + char2.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START + 1) + + context.search(query).collect do |cand| + cand.char.utf8 + end.sort.should == [char.utf8, char2.utf8].sort + end + + specify "should get character by UTF8" do + context = Tomoe::Context.new() + context.load_config(@user_dict_config_file.path) + + context[ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START)].should_nil + + char = Tomoe::Char.new + char.n_strokes = 8 + context.register(char).should == true + char.utf8.should == ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START) + + retrieved_char = context[ucs4_to_utf8(Tomoe::Char::PRIVATE_USE_AREA_START)] + retrieved_char.n_strokes.should == char.n_strokes + end +end Copied: tomoe/trunk/test/test_dict.rb (from rev 1336, tomoe/trunk/test/dict_spec.rb) =================================================================== --- tomoe/trunk/test/test_dict.rb (rev 0) +++ tomoe/trunk/test/test_dict.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,352 @@ +require 'tomoe-spec-utils' + +dict_module_type = TomoeSpecUtils::Config.dict_module_type +context "Tomoe::Dict(#{dict_module_type})" do + read_only_dictionaries = %w(unihan) + if read_only_dictionaries.include?(dict_module_type) + puts "#{dict_module_type} is read-only dictionary. skip tests." + break + end + + setup do + setup_dict_file + @original = Tomoe::DictXML.new("filename" => @dict_file.path) + end + + specify "should load successfully" do + make_temporary_dict(@original) do |dict| + a = dict[@utf8] + a.should.not.nil + a.utf8.should == @utf8 + if dict_module_type == "mysql" + puts "MySQL backend doesn't support writing" + else + a.writing.strokes.should == @strokes + end + end + end + + specify "should register/unregister" do + make_temporary_dict(@original) do |dict| + prev = dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end + + char = Tomoe::Char.new + char.utf8 = "か" + dict.register(char).should == true + dict["か"].should == char + dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end.sort.should == ["か", *prev].sort + dict.unregister("か").should == true + dict["か"].should_nil + + dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end.should == prev + end + end + + specify "should override the first register by the second register" do + make_temporary_dict(@original) do |dict| + prev = dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end + + utf8 = "か" + first_n_strokes = 8 + second_n_strokes = 10 + + first_char = Tomoe::Char.new + first_char.utf8 = utf8 + first_char.n_strokes = first_n_strokes + dict.register(first_char).should == true + dict[utf8].n_strokes.should == first_n_strokes + dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end.sort.should == [utf8, *prev].sort + + second_char = Tomoe::Char.new + second_char.utf8 = utf8 + second_char.n_strokes = second_n_strokes + dict.register(second_char).should == true + dict[utf8].n_strokes.should_not == first_n_strokes + dict[utf8].n_strokes.should == second_n_strokes + dict.search(Tomoe::Query.new).collect do |cand| + cand.char.utf8 + end.sort.should == [utf8, *prev].sort + end + end + + specify "should register/unregister PUA character" do + make_temporary_dict(@original) do |dict| + pua_start = Tomoe::Char::PRIVATE_USE_AREA_START + + utf8_to_ucs4(dict.available_private_utf8).should == pua_start + + char1 = Tomoe::Char.new + dict.register(char1).should == true + char1.utf8.should == ucs4_to_utf8(pua_start) + utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 1 + + char2 = Tomoe::Char.new + dict.register(char2).should == true + char2.utf8.should == ucs4_to_utf8(pua_start + 1) + utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 2 + + dict[ucs4_to_utf8(pua_start)].should == char1 + dict[ucs4_to_utf8(pua_start + 1)].should == char2 + dict.unregister(char1.utf8).should == true + dict[ucs4_to_utf8(pua_start)].should_nil + dict[ucs4_to_utf8(pua_start + 1)].should == char2 + + char3 = Tomoe::Char.new + dict.register(char3).should == true + char3.utf8.should == ucs4_to_utf8(pua_start + 2) + utf8_to_ucs4(dict.available_private_utf8).should == pua_start + 3 + end + end + + specify "should fail after PUA is full" do + make_temporary_dict(@original) do |dict| + pua_start = Tomoe::Char::PRIVATE_USE_AREA_START + pua_end = Tomoe::Char::PRIVATE_USE_AREA_END + + utf8_to_ucs4(dict.available_private_utf8).should == pua_start + pua_start.upto(pua_end - 1) do |i| + char = Tomoe::Char.new + char.utf8 = ucs4_to_utf8(i) + dict.register(char).should == true + end + utf8_to_ucs4(dict.available_private_utf8).should == pua_end + + char = Tomoe::Char.new + char.utf8 = ucs4_to_utf8(pua_end) + dict.register(char).should == true + dict.available_private_utf8.should_nil + + char = Tomoe::Char.new + dict.register(char).should == false + end + end + + specify "should save/restore meta data" do + make_temporary_dict(@original) do |dict| + char = Tomoe::Char.new + char.utf8 = "か" + char.should.not.have_meta_data + + char["meta1"] = "value1" + char["meta2"] = "value2" + + dict.register(char).should == true + + registered_char = dict["か"] + char.should.have_meta_data + registered_char["meta1"].should == "value1" + registered_char["meta2"].should == "value2" + end + end + + specify "should support reading search" do + make_temporary_dict(@original) do |dict| + char = Tomoe::Char.new + char.utf8 = "池" + char.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "いけ")) + + dict.register(char).should == true + + query = Tomoe::Query.new + query.add_reading(Tomoe::Reading.new(Tomoe::Reading::JA_KUN, "いけ")) + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + end + end + + specify "should support n_strokes search" do + make_temporary_dict(@original) do |dict| + char = Tomoe::Char.new + char.utf8 = "池" + char.n_strokes = 6 + + dict.register(char).should == true + + query = Tomoe::Query.new + query.min_n_strokes = 6 + query.max_n_strokes = 6 + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + + query = Tomoe::Query.new + query.min_n_strokes = 6 + query.max_n_strokes = 7 + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + + query = Tomoe::Query.new + query.min_n_strokes = 5 + query.max_n_strokes = 6 + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + + query = Tomoe::Query.new + query.min_n_strokes = 6 + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + + query = Tomoe::Query.new + query.max_n_strokes = 6 + dict.search(query).collect do |cand| + cand.char.utf8 + end.sort.should == ["あ", "池"].sort + end + end + + specify "should support radical search" do + make_temporary_dict(@original) do |dict| + sanzui = ucs4_to_utf8(27701) # さんずい + char = Tomoe::Char.new + char.utf8 = "池" + char.add_radical(sanzui) + + dict.register(char).should == true + + query = Tomoe::Query.new + query.add_radical(sanzui) + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["池"] + end + end + + specify "should support variant search" do + make_temporary_dict(@original) do |dict| + hashigo_daka = ucs4_to_utf8(39641) # はしご高 + char = Tomoe::Char.new + char.utf8 = "高" + char.variant = hashigo_daka + + dict.register(char).should == true + + query = Tomoe::Query.new + query.variant = hashigo_daka + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["高"] + end + end + + specify "should support UTF8 search" do + make_temporary_dict(@original) do |dict| + char = Tomoe::Char.new + char.utf8 = "か" + + dict.register(char).should == true + + query = Tomoe::Query.new + query.utf8 = "か" + dict.search(query).collect do |cand| + cand.char.utf8 + end.should == ["か"] + end + end + + def setup_strokes + @strokes = [ + [ + [18, 19], + [83, 22] + ], + [ + [49, 3], + [48, 67], + [60, 84], + ], + [ + [74, 34], + [49, 76], + [27, 80], + [17, 68], + [28, 49], + [60, 46], + [80, 57], + [82, 74], + [76, 83], + ], + ] + end + + def setup_dict_file + @dict_file = Tempfile.new("tomoe-dict-xml") + @utf8 = "あ" + + setup_strokes + strokes_xml = " <strokes>\n" + @strokes.each do |stroke| + strokes_xml << " <stroke>\n" + stroke.each do |x, y| + strokes_xml << " <point x=\"#{x}\" y=\"#{y}\"/>\n" + end + strokes_xml << " </stroke>\n" + end + strokes_xml << " </strokes>" + + @character_xml = <<-EOC + <character> + <utf8>#{@utf8}</utf8> + <number-of-strokes>#{@strokes.size}</number-of-strokes> +#{strokes_xml} + </character> +EOC + + @dict_content = <<-EOX +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE dictionary SYSTEM "tomoe-dict.dtd"> +<dictionary> +#{@character_xml} +</dictionary> +EOX + set_content(@dict_file, @dict_content) + end + + def setup_est_draft_file + @est_draft_file = Tempfile.new("tomoe-dict-est-draft") + @est_draft_content = <<-EOC +@uri=font:#{@utf8} +utf8=#{@utf8} +n_strokes=#{@strokes.size} + +#{@character_xml.collect {|line| "\t#{line}"}} +EOC + set_content(@est_draft_file, @est_draft_content) + end + + def set_content(file, content) + file.open + file.truncate(0) + file.rewind + file.print(content) + file.close + + file.open + file.read.should == content + file.close + end + + def truncate_content(file) + file.set_content("") + end + + def content(file) + file.open + file.read + ensure + file.close + end +end Copied: tomoe/trunk/test/test_writing.rb (from rev 1336, tomoe/trunk/test/writing_spec.rb) =================================================================== --- tomoe/trunk/test/test_writing.rb (rev 0) +++ tomoe/trunk/test/test_writing.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,43 @@ +require 'tomoe-spec-utils' + +context "Tomoe::Writing" do + setup do + @writing = Tomoe::Writing.new + @strokes = [ + [[51, 29], [177, 41]], + [[99, 65], [219, 77]], + [[27, 131], [261, 131]], + [[129, 17], [57, 203]], + [[111, 71], [219, 173]], + [[81, 161], [93, 281]], + [[99, 167], [207, 167], [189, 245]], + [[99, 227], [189, 227]], + [[111, 257], [189, 245]], + ] + @strokes.each do |first_point, *rest_points| + @writing.move_to(*first_point) + rest_points.each do |x, y| + @writing.line_to(x, y) + end + end + end + + specify "should each all strokes" do + @writing.strokes.should == @strokes + @writing.collect{|stroke| stroke}.should == @strokes + end + + specify "should dump XML" do + xml = "" + xml << " <strokes>\n" + @strokes.each do |stroke| + xml << " <stroke>\n" + stroke.each do |x, y| + xml << " <point x=\"#{x}\" y=\"#{y}\"/>\n" + end + xml << " </stroke>\n" + end + xml << " </strokes>\n" + @writing.to_xml.should == xml + end +end Deleted: tomoe/trunk/test/tomoe-spec-utils.rb =================================================================== --- tomoe/trunk/test/tomoe-spec-utils.rb 2007-06-08 03:07:11 UTC (rev 1336) +++ tomoe/trunk/test/tomoe-spec-utils.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -1,346 +0,0 @@ -require 'tempfile' -require 'fileutils' -require 'yaml' -require 'uconv' - -$KCODE = "u" - -module TomoeSpecSetup - def before_context_eval - super - @context_eval_module.class_eval do - include TomoeSpecUtils - - setup do - setup_context - end - - teardown do - teardown_context - end - end - end -end - -module Spec - module Runner - class Context - include TomoeSpecSetup - end - end -end - -module TomoeSpecUtils - def self.included(base) - base.class_eval do - include Base - include Path - include Config - include Dictionary - include Unicode - end - end - - module Base - def setup_context - end - - def teardown_context - end - end - - module Path - module_function - def base_dir - File.expand_path(File.dirname(__FILE__)) - end - - def tmp_dir - File.join(base_dir, "tmp") - end - - def top_dir - File.expand_path(File.join(base_dir, "..")) - end - - def data_dir - File.join(top_dir, "data") - end - - def test_data_dir - File.join(base_dir, "data") - end - - def module_dir - File.join(top_dir, "module") - end - - def recognizer_dir - File.join(module_dir, "recognizer", ".libs") - end - - def dict_dir - File.join(module_dir, "dict", ".libs") - end - - def db_dir - File.join(top_dir, "db") - end - - def db_config_file - File.join(db_dir, "config.yml") - end - - def test_data_files - Dir.glob(File.join(test_data_dir, "*.data")) - end - - def dictionary - File.join(data_dir, "kanjidic2.xml") - end - end - - module Config - extend Path - - module_function - def db_config_for_active_record(type=nil) - YAML.load(File.read(db_config_file))[type || ENV["TOMOE_ENV"] || "test"] - end - - def db_config(type=nil) - config = db_config_for_active_record(type) - config.delete("adapter") - config.delete("encoding") - config["user"] = config.delete("username") if config["username"] - config - end - - def setup_context - super - @config_file = make_config_file - FileUtils.mkdir_p(tmp_dir) - end - - def teardown_context - super - FileUtils.rm_rf(tmp_dir) - end - - def dict_module_type - ENV["TOMOE_DICT_MODULE"] || "xml" - end - - def make_config_file(dict_type=nil) - dict_type ||= dict_module_type - name ||= "tomoe-#{dict_type}" - config_file = Tempfile.new(name) - config_file.open - config_file.puts(<<-EOC) -[config] -use-system-dictionaries = false -EOC - - config_maker = "make_config_file_for_#{dict_type}" - unless respond_to?(config_maker, true) - raise "unknown dictionary type: #{dict_type}" - end - config_file.puts(send(config_maker)) - - config_file.close - config_file - end - - def make_config_file_for_unihan - <<-EOC -[unihan-dictionary] -type = unihan -EOC - end - - def make_config_file_for_est - <<-EOC -[#{File.basename(dictionary)}-dictionary] -type = est -name = #{File.basename(dictionary)} -database = #{dictionary.sub(/\.xml$/, '')} -EOC - end - - def make_config_file_for_xml - <<-EOC -[#{File.basename(dictionary)}-dictionary] -type = xml -file = #{dictionary} -EOC - end - - def make_config_file_for_mysql - config = <<-EOC -[mysql-dictionary] -type = mysql -EOC - db_config.each do |key, value| - config << "#{key} = #{value}\n" - end - config - end - end - - module Dictionary - module_function - def make_dict(dict_type=nil, config=nil) - dict_type ||= dict_module_type - dict_maker = "make_dict_#{dict_type}" - unless respond_to?(dict_maker, true) - raise "unknown dictionary type: #{dict_type}" - end - send(dict_maker, config) - end - - def make_temporary_dict(original, dict_type=nil, config=nil, &block) - dict_type ||= dict_module_type - temporary_dict_maker = "make_temporary_dict_#{dict_type}" - unless respond_to?(temporary_dict_maker, true) - raise "unknown dictionary type: #{dict_type}" - end - send(temporary_dict_maker, config) do |dict| - original.search(Tomoe::Query.new).each do |cand| - dict.register(cand.char) - end - block.call(dict) - end - end - - def make_dict_unihan(config=nil) - check_dict_module_availability("Unihan") - Tomoe::DictUnihan.new(config || {}) - end - - def make_dict_xml(config=nil) - check_dict_module_availability("XML") - config ||= {} - config = config.dup - config["filename"] ||= dictionary - Tomoe::DictXML.new(config) - end - - def make_temporary_dict_xml(config=nil) - check_dict_module_availability("XML") - dict = nil - begin - tmp_dict_dir = File.join(tmp_dir, "dict") - FileUtils.mkdir_p(tmp_dict_dir) - dict_file = File.join(tmp_dict_dir, "dict.xml") - dict = Tomoe::DictXML.new("filename" => dict_file, "editable" => true) - yield dict - ensure - dict.flush if dict - FileUtils.rm_rf(tmp_dict_dir) - end - end - - def make_dict_est(config=nil) - check_dict_module_availability("Est") - config ||= {} - config = config.dup - config["database"] ||= dictionary.sub(/\.xml/, '') - config["editable"] = true unless config.has_key?("editable") - Tomoe::DictEst.new(config) - end - - def make_temporary_dict_est(config=nil) - check_dict_module_availability("Est") - begin - tmp_dict_dir = File.join(tmp_dir, "est") - yield Tomoe::DictEst.new("database" => tmp_dict_dir, "editable" => true) - ensure - FileUtils.rm_rf(tmp_dict_dir) - end - end - - def make_dict_mysql(config=nil) - check_dict_module_availability("MySQL") - config ||= db_config - config = config.dup - Tomoe::DictMySQL.new(config) - end - - def make_temporary_dict_mysql(config=nil) - check_dict_module_availability("MySQL") - sql_purge("temp") - yield Tomoe::DictMySQL.new(db_config("temp")) - end - - def check_dict_module_availability(type) - unless Tomoe.const_defined?("Dict#{type}") - raise "Tomoe doesn't support the dictionary type: #{type}" - end - end - - def sql_migrate(type=nil, version=nil) - migrate = File.join(db_dir, "migrate.rb") - tomoe_env = ENV["TOMOE_ENV"] - ENV["TOMOE_ENV"] = type if type - unless `#{migrate} #{version}` - message = "failed to migrate" - message << " to #{version}" if version - raise message - end - ensure - ENV["TOMOE_ENV"] = tomoe_env - end - - def sql_purge(type=nil) - sql_migrate(type, 0) - sql_migrate(type) - end - end - - module TestData - module_function - def parse(file) - expected = nil - writing = Tomoe::Writing.new - File.open(file) do |f| - expected = f.gets.split - f.each do |line| - next if /\A\s*\z/ =~ line - begin - first_point, *rest_points = line.split(/,/) - numbered_first_point = numbers_to_point(first_point) - writing.move_to(*numbered_first_point) - rest_points.each do |point| - writing.line_to(*numbers_to_point(point)) - end - rescue ArgumentError - raise "invalid format in #{file} at #{f.lineno}: #{line}" - end - end - end - [expected, writing] - end - - def numbers_to_point(str) - point = str.split.collect {|x| Integer(x)} - raise ArgumentError if point.size != 2 - point - end - end - - module Unicode - module_function - def ucs4_to_utf8(ucs4) - Uconv.u4tou8([ucs4].pack("I*")) - end - - def utf8_to_ucs4(utf8) - Uconv.u8tou4(utf8).unpack("I*")[0] - end - end -end - -require 'tomoe' - -Tomoe::Dict.default_module_dir = TomoeSpecUtils::Path.dict_dir -Tomoe::Recognizer.default_module_dir = TomoeSpecUtils::Path.recognizer_dir Copied: tomoe/trunk/test/tomoe-test-utils.rb (from rev 1336, tomoe/trunk/test/tomoe-spec-utils.rb) =================================================================== --- tomoe/trunk/test/tomoe-test-utils.rb (rev 0) +++ tomoe/trunk/test/tomoe-test-utils.rb 2007-06-08 04:06:08 UTC (rev 1337) @@ -0,0 +1,323 @@ +require 'tempfile' +require 'fileutils' +require 'yaml' +require 'uconv' + +$KCODE = "u" + +module TomoeTestUtils + def self.included(base) + base.class_eval do + include Base + include Path + include Config + include Dictionary + include Unicode + end + end + + module Base + def setup + super + end + + def teardown + super + end + end + + module Path + module_function + def base_dir + File.expand_path(File.dirname(__FILE__)) + end + + def tmp_dir + File.join(base_dir, "tmp") + end + + def top_dir + File.expand_path(File.join(base_dir, "..")) + end + + def data_dir + File.join(top_dir, "data") + end + + def test_data_dir + File.join(base_dir, "data") + end + + def module_dir + File.join(top_dir, "module") + end + + def recognizer_dir + File.join(module_dir, "recognizer", ".libs") + end + + def dict_dir + File.join(module_dir, "dict", ".libs") + end + + def db_dir + File.join(top_dir, "db") + end + + def db_config_file + File.join(db_dir, "config.yml") + end + + def test_data_files + Dir.glob(File.join(test_data_dir, "*.data")) + end + + def dictionary + File.join(data_dir, "kanjidic2.xml") + end + end + + module Config + extend Path + + module_function + def db_config_for_active_record(type=nil) + YAML.load(File.read(db_config_file))[type || ENV["TOMOE_ENV"] || "test"] + end + + def db_config(type=nil) + config = db_config_for_active_record(type) + config.delete("adapter") + config.delete("encoding") + config["user"] = config.delete("username") if config["username"] + config + end + + def setup + super + @config_file = make_config_file + FileUtils.mkdir_p(tmp_dir) + end + + def teardown + super + FileUtils.rm_rf(tmp_dir) + end + + def dict_module_type + ENV["TOMOE_DICT_MODULE"] || "xml" + end + + def make_config_file(dict_type=nil) + dict_type ||= dict_module_type + name ||= "tomoe-#{dict_type}" + config_file = Tempfile.new(name) + config_file.open + config_file.puts(<<-EOC) +[config] +use-system-dictionaries = false +EOC + + config_maker = "make_config_file_for_#{dict_type}" + unless respond_to?(config_maker, true) + raise "unknown dictionary type: #{dict_type}" + end + config_file.puts(send(config_maker)) + + config_file.close + config_file + end + + def make_config_file_for_unihan + <<-EOC +[unihan-dictionary] +type = unihan +EOC + end + + def make_config_file_for_est + <<-EOC +[#{File.basename(dictionary)}-dictionary] +type = est +name = #{File.basename(dictionary)} +database = #{dictionary.sub(/\.xml$/, '')} +EOC + end + + def make_config_file_for_xml + <<-EOC +[#{File.basename(dictionary)}-dictionary] +type = xml +file = #{dictionary} +EOC + end + + def make_config_file_for_mysql + config = <<-EOC +[mysql-dictionary] +type = mysql +EOC + db_config.each do |key, value| + config << "#{key} = #{value}\n" + end + config + end + end + + module Dictionary + module_function + def make_dict(dict_type=nil, config=nil) + dict_type ||= dict_module_type + dict_maker = "make_dict_#{dict_type}" + unless respond_to?(dict_maker, true) + raise "unknown dictionary type: #{dict_type}" + end + send(dict_maker, config) + end + + def make_temporary_dict(original, dict_type=nil, config=nil, &block) + dict_type ||= dict_module_type + temporary_dict_maker = "make_temporary_dict_#{dict_type}" + unless respond_to?(temporary_dict_maker, true) + raise "unknown dictionary type: #{dict_type}" + end + send(temporary_dict_maker, config) do |dict| + original.search(Tomoe::Query.new).each do |cand| + dict.register(cand.char) + end + block.call(dict) + end + end + + def make_dict_unihan(config=nil) + check_dict_module_availability("Unihan") + Tomoe::DictUnihan.new(config || {}) + end + + def make_dict_xml(config=nil) + check_dict_module_availability("XML") + config ||= {} + config = config.dup + config["filename"] ||= dictionary + Tomoe::DictXML.new(config) + end + + def make_temporary_dict_xml(config=nil) + check_dict_module_availability("XML") + dict = nil + begin + tmp_dict_dir = File.join(tmp_dir, "dict") + FileUtils.mkdir_p(tmp_dict_dir) + dict_file = File.join(tmp_dict_dir, "dict.xml") + dict = Tomoe::DictXML.new("filename" => dict_file, "editable" => true) + yield dict + ensure + dict.flush if dict + FileUtils.rm_rf(tmp_dict_dir) + end + end + + def make_dict_est(config=nil) + check_dict_module_availability("Est") + config ||= {} + config = config.dup + config["database"] ||= dictionary.sub(/\.xml/, '') + config["editable"] = true unless config.has_key?("editable") + Tomoe::DictEst.new(config) + end + + def make_temporary_dict_est(config=nil) + check_dict_module_availability("Est") + begin + tmp_dict_dir = File.join(tmp_dir, "est") + yield Tomoe::DictEst.new("database" => tmp_dict_dir, "editable" => true) + ensure + FileUtils.rm_rf(tmp_dict_dir) + end + end + + def make_dict_mysql(config=nil) + check_dict_module_availability("MySQL") + config ||= db_config + config = config.dup + Tomoe::DictMySQL.new(config) + end + + def make_temporary_dict_mysql(config=nil) + check_dict_module_availability("MySQL") + sql_purge("temp") + yield Tomoe::DictMySQL.new(db_config("temp")) + end + + def check_dict_module_availability(type) + unless Tomoe.const_defined?("Dict#{type}") + raise "Tomoe doesn't support the dictionary type: #{type}" + end + end + + def sql_migrate(type=nil, version=nil) + migrate = File.join(db_dir, "migrate.rb") + tomoe_env = ENV["TOMOE_ENV"] + ENV["TOMOE_ENV"] = type if type + unless `#{migrate} #{version}` + message = "failed to migrate" + message << " to #{version}" i... [truncated message content] |
From: <ik...@us...> - 2007-06-08 03:07:09
|
Revision: 1336 http://tomoe.svn.sourceforge.net/tomoe/?rev=1336&view=rev Author: ikezoe Date: 2007-06-07 20:07:11 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * test/python/*: Add a test program. Modified Paths: -------------- tomoe/trunk/ChangeLog Added Paths: ----------- tomoe/trunk/test/python/ tomoe/trunk/test/python/test_dict.py Modified: tomoe/trunk/ChangeLog =================================================================== --- tomoe/trunk/ChangeLog 2007-06-08 02:39:42 UTC (rev 1335) +++ tomoe/trunk/ChangeLog 2007-06-08 03:07:11 UTC (rev 1336) @@ -1,6 +1,7 @@ 2007-06-08 Hiroyuki Ikezoe <poi...@ik...> * bindings/python/tomoe-module.c: Call pytomoe_add_constants(). + * test/python/*: Add a test program. 2007-06-07 Kouhei Sutou <ko...@co...> Added: tomoe/trunk/test/python/test_dict.py =================================================================== --- tomoe/trunk/test/python/test_dict.py (rev 0) +++ tomoe/trunk/test/python/test_dict.py 2007-06-08 03:07:11 UTC (rev 1336) @@ -0,0 +1,180 @@ +# -*- coding: UTF=8 -*- +import unittest +import tomoe + +class TomoeDictTest(unittest.TestCase): + #def setUp(self): + + def setUpXMLDict(self, dict_contents): + dict_name = "tomoe-test-xmldict.xml" + dict_file = open(dict_name, "w") + dict_file.write(dict_contents) + dict_file.close() + + return tomoe.Dict("XML", "filename", dict_name, "editable", True) + + def testRegisterChar(self): + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + </dictionary> + """ + dict = self.setUpXMLDict(dict_contents) + char_code ='池' + tomoe_char = tomoe.Char() + tomoe_char.set_utf8(char_code) + ret = dict.register_char(tomoe_char) + self.assertEqual(ret, True) + + def testUnregisterChar(self): + char_code ='池' + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + </character> + </dictionary> + """ % (char_code) + dict = self.setUpXMLDict(dict_contents) + ret = dict.unregister_char(char_code) + self.assertEqual(ret, True) + + def testGetExistChar(self): + char_code ='池' + n_strokes = 6 + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + <number-of-strokes>%d</number-of-strokes> + <readings> + <reading type="ja_on">チ</reading> + <reading type="ja_kun">いけ</reading> + </readings> + <meta> + <jis208>35-51</jis208> + <ucs>6c60</ucs> + <jouyou>2</jouyou> + <meaning>pond, cistern, pool, reservoir</meaning> + </meta> + </character> + </dictionary> + """ % (char_code, n_strokes) + dict = self.setUpXMLDict(dict_contents) + tomoe_char = dict.get_char(char_code) + self.assertEqual(tomoe_char.get_utf8(), char_code) + self.assertEqual(tomoe_char.get_n_strokes(), n_strokes) + + def testFailGetExistChar(self): + char_code ='池' + n_strokes = 6 + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + </character> + </dictionary> + """ % ("地") + dict = self.setUpXMLDict(dict_contents) + tomoe_char = dict.get_char(char_code) + self.assertEqual(tomoe_char, None) + + def testReadingSearch(self): + char_code ='池' + reading = 'いけ' + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + <readings> + <reading type="ja_kun">%s</reading> + </readings> + </character> + </dictionary> + """ % (char_code, reading) + dict = self.setUpXMLDict(dict_contents) + tomoe_query = tomoe.Query() + tomoe_reading = tomoe.Reading(tomoe.READING_UNKNOWN, reading) + tomoe_query.add_reading(tomoe_reading) + candidates = dict.search(tomoe_query) + self.assertEqual(candidates[0].get_char().get_utf8(), char_code) + + def testFailReadingSearch(self): + char_code ='池' + reading = 'いけ' + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + <readings> + <reading type="ja_kun">%s</reading> + </readings> + </character> + </dictionary> + """ % (char_code, reading) + dict = self.setUpXMLDict(dict_contents) + tomoe_query = tomoe.Query() + tomoe_reading = tomoe.Reading(tomoe.READING_UNKNOWN, 'ひげ') + tomoe_query.add_reading(tomoe_reading) + candidates = dict.search(tomoe_query) + self.assertEqual(len(candidates), 0) + + def testKunReadingSearch(self): + char_code ='池' + reading = 'いけ' + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + <readings> + <reading type="ja_kun">%s</reading> + </readings> + </character> + </dictionary> + """ % (char_code, reading) + dict = self.setUpXMLDict(dict_contents) + tomoe_query = tomoe.Query() + tomoe_reading = tomoe.Reading(tomoe.READING_JA_KUN, reading) + tomoe_query.add_reading(tomoe_reading) + candidates = dict.search(tomoe_query) + self.assertEqual(candidates[0].get_char().get_utf8(), char_code) + + def testOnReadingSearch(self): + char_code ='池' + reading = 'チ' + dict_contents = """ + <?xml version="1.0" standalone="no"?> + <!DOCTYPE dictionary SYSTEM "/usr/share/tomoe/dict.dtd"> + <dictionary> + <character> + <utf8>%s</utf8> + <readings> + <reading type="ja_on">%s</reading> + </readings> + </character> + </dictionary> + """ % (char_code, reading) + dict = self.setUpXMLDict(dict_contents) + tomoe_query = tomoe.Query() + tomoe_reading = tomoe.Reading(tomoe.READING_JA_ON, reading) + tomoe_query.add_reading(tomoe_reading) + candidates = dict.search(tomoe_query) + self.assertEqual(candidates[0].get_char().get_utf8(), char_code) + +if __name__ == '__main__': + unittest.main() + +# vi:ts=4:nowrap:ai:expandtab This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-08 02:39:41
|
Revision: 1335 http://tomoe.svn.sourceforge.net/tomoe/?rev=1335&view=rev Author: ikezoe Date: 2007-06-07 19:39:42 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * bindings/python/tomoegtk-module.c: Call pytomoegtk_add_constants() to register enum types. Modified Paths: -------------- tomoe-gtk/trunk/ChangeLog tomoe-gtk/trunk/bindings/python/tomoegtk-module.c Modified: tomoe-gtk/trunk/ChangeLog =================================================================== --- tomoe-gtk/trunk/ChangeLog 2007-06-08 02:37:31 UTC (rev 1334) +++ tomoe-gtk/trunk/ChangeLog 2007-06-08 02:39:42 UTC (rev 1335) @@ -1,3 +1,8 @@ +2007-06-08 Hiroyuki Ikezoe <poi...@ik...> + + * bindings/python/tomoegtk-module.c: Call pytomoegtk_add_constants() + to register enum types. + 2007-06-07 Takuro Ashie <as...@ho...> * configure.ac, macros/python.m4: Disable python binding if Modified: tomoe-gtk/trunk/bindings/python/tomoegtk-module.c =================================================================== --- tomoe-gtk/trunk/bindings/python/tomoegtk-module.c 2007-06-08 02:37:31 UTC (rev 1334) +++ tomoe-gtk/trunk/bindings/python/tomoegtk-module.c 2007-06-08 02:39:42 UTC (rev 1335) @@ -2,6 +2,7 @@ #include "tomoe-gtk.h" void pytomoegtk_register_classes (PyObject *d); +void pytomoegtk_add_constants (PyObject *module, const gchar *strip_prefix); extern PyMethodDef pytomoegtk_functions[]; @@ -16,6 +17,7 @@ d = PyModule_GetDict (m); pytomoegtk_register_classes (d); + pytomoegtk_add_constants (m, "TOMOE_"); if (PyErr_Occurred ()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-08 02:37:30
|
Revision: 1334 http://tomoe.svn.sourceforge.net/tomoe/?rev=1334&view=rev Author: ikezoe Date: 2007-06-07 19:37:31 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * bindings/python/tomoe-module.c: Call pytomoe_add_constants(). Modified Paths: -------------- tomoe/trunk/ChangeLog tomoe/trunk/bindings/python/tomoe-module.c Modified: tomoe/trunk/ChangeLog =================================================================== --- tomoe/trunk/ChangeLog 2007-06-08 00:02:49 UTC (rev 1333) +++ tomoe/trunk/ChangeLog 2007-06-08 02:37:31 UTC (rev 1334) @@ -1,3 +1,7 @@ +2007-06-08 Hiroyuki Ikezoe <poi...@ik...> + + * bindings/python/tomoe-module.c: Call pytomoe_add_constants(). + 2007-06-07 Kouhei Sutou <ko...@co...> * macros/ruby.m4: supported --with-ruby without "=PATH". Modified: tomoe/trunk/bindings/python/tomoe-module.c =================================================================== --- tomoe/trunk/bindings/python/tomoe-module.c 2007-06-08 00:02:49 UTC (rev 1333) +++ tomoe/trunk/bindings/python/tomoe-module.c 2007-06-08 02:37:31 UTC (rev 1334) @@ -2,6 +2,7 @@ #include "tomoe.h" void pytomoe_register_classes (PyObject *d); +void pytomoe_add_constants (PyObject *module, const gchar *strip_prefix); extern PyMethodDef pytomoe_functions[]; @@ -16,6 +17,7 @@ d = PyModule_GetDict (m); pytomoe_register_classes (d); + pytomoe_add_constants (m, "TOMOE_"); if (PyErr_Occurred ()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-08 00:02:48
|
Revision: 1333 http://tomoe.svn.sourceforge.net/tomoe/?rev=1333&view=rev Author: ikezoe Date: 2007-06-07 17:02:49 -0700 (Thu, 07 Jun 2007) Log Message: ----------- set return value. Modified Paths: -------------- tomoe/trunk/bindings/python/tomoe-dict.override Modified: tomoe/trunk/bindings/python/tomoe-dict.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-dict.override 2007-06-07 23:06:55 UTC (rev 1332) +++ tomoe/trunk/bindings/python/tomoe-dict.override 2007-06-08 00:02:49 UTC (rev 1333) @@ -65,6 +65,7 @@ if (!PyString_Check(py_property)) { PyErr_SetString(PyExc_TypeError, "Expected string argument for property."); + ret = -1; goto END; } @@ -78,7 +79,7 @@ g_type_name(obj_type), property_name); PyErr_SetString(PyExc_TypeError, buf); - + ret = -1; goto END; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 23:07:01
|
Revision: 1332 http://tomoe.svn.sourceforge.net/tomoe/?rev=1332&view=rev Author: ikezoe Date: 2007-06-07 16:06:55 -0700 (Thu, 07 Jun 2007) Log Message: ----------- add test code for python binding. Added Paths: ----------- tomoe-gtk/trunk/test/test.py Added: tomoe-gtk/trunk/test/test.py =================================================================== --- tomoe-gtk/trunk/test/test.py (rev 0) +++ tomoe-gtk/trunk/test/test.py 2007-06-07 23:06:55 UTC (rev 1332) @@ -0,0 +1,8 @@ +#!/usr/bin/env python +import gtk +import tomoegtk + +w = tomoegtk.Window() +w.show_all() + +gtk.main() Property changes on: tomoe-gtk/trunk/test/test.py ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 22:25:38
|
Revision: 1331 http://tomoe.svn.sourceforge.net/tomoe/?rev=1331&view=rev Author: ikezoe Date: 2007-06-07 15:25:33 -0700 (Thu, 07 Jun 2007) Log Message: ----------- update ignore property. Property Changed: ---------------- tomoe-gtk/trunk/src/ Property changes on: tomoe-gtk/trunk/src ___________________________________________________________________ Name: svn:ignore - Makefile Makefile.in config.h config.h.in stamp-h* .deps .libs *.o *.lo *.la *.bak *~ *.rej *.orig tomoe tomoe1 tomoe-gtk-config.h + Makefile Makefile.in config.h config.h.in stamp-h* .deps .libs *.o *.lo *.la *.bak *~ *.rej *.orig tomoe tomoe1 tomoe-gtk-config.h tomoe-gtk-enum-types.* stamp-tomoe-gtk-enum-types-* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 22:24:22
|
Revision: 1330 http://tomoe.svn.sourceforge.net/tomoe/?rev=1330&view=rev Author: ikezoe Date: 2007-06-07 15:24:24 -0700 (Thu, 07 Jun 2007) Log Message: ----------- update ignore property. Property Changed: ---------------- tomoe/trunk/bindings/python/ Property changes on: tomoe/trunk/bindings/python ___________________________________________________________________ Name: svn:ignore - Makefile Makefile.in .deps .libs tomoe.c + Makefile Makefile.in .deps .libs tomoe.c pytomoe.pc This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 14:29:15
|
Revision: 1329 http://tomoe.svn.sourceforge.net/tomoe/?rev=1329&view=rev Author: makeinu Date: 2007-06-07 07:29:00 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Fix stroke order. Modified Paths: -------------- tools/stroke-editor/data/ja/jis-x-0208-level2.xml Modified: tools/stroke-editor/data/ja/jis-x-0208-level2.xml =================================================================== --- tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 14:11:26 UTC (rev 1328) +++ tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 14:29:00 UTC (rev 1329) @@ -33166,32 +33166,6 @@ <utf8>巒</utf8> <strokes> <stroke> - <point x="210" y="136"/> - <point x="73" y="224"/> - <point x="163" y="315"/> - </stroke> - <stroke> - <point x="238" y="228"/> - <point x="63" y="375"/> - <point x="290" y="364"/> - </stroke> - <stroke> - <point x="270" y="306"/> - <point x="320" y="414"/> - </stroke> - <stroke> - <point x="203" y="364"/> - <point x="200" y="578"/> - </stroke> - <stroke> - <point x="140" y="440"/> - <point x="85" y="558"/> - </stroke> - <stroke> - <point x="245" y="440"/> - <point x="285" y="524"/> - </stroke> - <stroke> <point x="465" y="136"/> <point x="528" y="203"/> </stroke> @@ -33221,6 +33195,32 @@ <point x="573" y="556"/> </stroke> <stroke> + <point x="210" y="136"/> + <point x="73" y="224"/> + <point x="163" y="315"/> + </stroke> + <stroke> + <point x="238" y="228"/> + <point x="63" y="375"/> + <point x="290" y="364"/> + </stroke> + <stroke> + <point x="270" y="306"/> + <point x="320" y="414"/> + </stroke> + <stroke> + <point x="203" y="364"/> + <point x="200" y="578"/> + </stroke> + <stroke> + <point x="140" y="440"/> + <point x="85" y="558"/> + </stroke> + <stroke> + <point x="245" y="440"/> + <point x="285" y="524"/> + </stroke> + <stroke> <point x="803" y="157"/> <point x="693" y="246"/> <point x="770" y="313"/> @@ -36798,32 +36798,6 @@ <utf8>彎</utf8> <strokes> <stroke> - <point x="205" y="149"/> - <point x="110" y="224"/> - <point x="158" y="295"/> - </stroke> - <stroke> - <point x="235" y="196"/> - <point x="80" y="334"/> - <point x="275" y="319"/> - </stroke> - <stroke> - <point x="265" y="254"/> - <point x="298" y="364"/> - </stroke> - <stroke> - <point x="200" y="341"/> - <point x="200" y="483"/> - </stroke> - <stroke> - <point x="140" y="381"/> - <point x="98" y="481"/> - </stroke> - <stroke> - <point x="243" y="373"/> - <point x="298" y="463"/> - </stroke> - <stroke> <point x="453" y="134"/> <point x="528" y="200"/> </stroke> @@ -36853,6 +36827,32 @@ <point x="575" y="476"/> </stroke> <stroke> + <point x="205" y="149"/> + <point x="110" y="224"/> + <point x="158" y="295"/> + </stroke> + <stroke> + <point x="235" y="196"/> + <point x="80" y="334"/> + <point x="275" y="319"/> + </stroke> + <stroke> + <point x="265" y="254"/> + <point x="298" y="364"/> + </stroke> + <stroke> + <point x="200" y="341"/> + <point x="200" y="483"/> + </stroke> + <stroke> + <point x="140" y="381"/> + <point x="98" y="481"/> + </stroke> + <stroke> + <point x="243" y="373"/> + <point x="298" y="463"/> + </stroke> + <stroke> <point x="815" y="155"/> <point x="703" y="237"/> <point x="768" y="304"/> @@ -45540,32 +45540,6 @@ <utf8>戀</utf8> <strokes> <stroke> - <point x="223" y="144"/> - <point x="115" y="233"/> - <point x="198" y="313"/> - </stroke> - <stroke> - <point x="295" y="241"/> - <point x="75" y="397"/> - <point x="318" y="379"/> - </stroke> - <stroke> - <point x="295" y="315"/> - <point x="320" y="416"/> - </stroke> - <stroke> - <point x="210" y="409"/> - <point x="203" y="593"/> - </stroke> - <stroke> - <point x="153" y="461"/> - <point x="93" y="575"/> - </stroke> - <stroke> - <point x="240" y="457"/> - <point x="300" y="543"/> - </stroke> - <stroke> <point x="448" y="151"/> <point x="550" y="220"/> </stroke> @@ -45595,6 +45569,32 @@ <point x="533" y="554"/> </stroke> <stroke> + <point x="223" y="144"/> + <point x="115" y="233"/> + <point x="198" y="313"/> + </stroke> + <stroke> + <point x="295" y="241"/> + <point x="75" y="397"/> + <point x="318" y="379"/> + </stroke> + <stroke> + <point x="295" y="315"/> + <point x="320" y="416"/> + </stroke> + <stroke> + <point x="210" y="409"/> + <point x="203" y="593"/> + </stroke> + <stroke> + <point x="153" y="461"/> + <point x="93" y="575"/> + </stroke> + <stroke> + <point x="240" y="457"/> + <point x="300" y="543"/> + </stroke> + <stroke> <point x="803" y="142"/> <point x="698" y="259"/> <point x="765" y="319"/> @@ -52992,32 +52992,6 @@ <utf8>攣</utf8> <strokes> <stroke> - <point x="232" y="144"/> - <point x="92" y="224"/> - <point x="170" y="313"/> - </stroke> - <stroke> - <point x="269" y="213"/> - <point x="65" y="358"/> - <point x="319" y="341"/> - </stroke> - <stroke> - <point x="307" y="272"/> - <point x="334" y="388"/> - </stroke> - <stroke> - <point x="207" y="356"/> - <point x="207" y="517"/> - </stroke> - <stroke> - <point x="112" y="405"/> - <point x="82" y="506"/> - </stroke> - <stroke> - <point x="217" y="407"/> - <point x="299" y="487"/> - </stroke> - <stroke> <point x="409" y="153"/> <point x="549" y="207"/> </stroke> @@ -53047,6 +53021,32 @@ <point x="506" y="522"/> </stroke> <stroke> + <point x="232" y="144"/> + <point x="92" y="224"/> + <point x="170" y="313"/> + </stroke> + <stroke> + <point x="269" y="213"/> + <point x="65" y="358"/> + <point x="319" y="341"/> + </stroke> + <stroke> + <point x="307" y="272"/> + <point x="334" y="388"/> + </stroke> + <stroke> + <point x="207" y="356"/> + <point x="207" y="517"/> + </stroke> + <stroke> + <point x="112" y="405"/> + <point x="82" y="506"/> + </stroke> + <stroke> + <point x="217" y="407"/> + <point x="299" y="487"/> + </stroke> + <stroke> <point x="825" y="151"/> <point x="708" y="241"/> <point x="788" y="304"/> @@ -54084,32 +54084,6 @@ <utf8>變</utf8> <strokes> <stroke> - <point x="202" y="144"/> - <point x="108" y="220"/> - <point x="160" y="293"/> - </stroke> - <stroke> - <point x="278" y="200"/> - <point x="94" y="317"/> - <point x="281" y="310"/> - </stroke> - <stroke> - <point x="286" y="259"/> - <point x="328" y="351"/> - </stroke> - <stroke> - <point x="197" y="310"/> - <point x="219" y="515"/> - </stroke> - <stroke> - <point x="126" y="381"/> - <point x="91" y="487"/> - </stroke> - <stroke> - <point x="239" y="366"/> - <point x="288" y="453"/> - </stroke> - <stroke> <point x="463" y="125"/> <point x="530" y="224"/> </stroke> @@ -54139,6 +54113,32 @@ <point x="544" y="489"/> </stroke> <stroke> + <point x="202" y="144"/> + <point x="108" y="220"/> + <point x="160" y="293"/> + </stroke> + <stroke> + <point x="278" y="200"/> + <point x="94" y="317"/> + <point x="281" y="310"/> + </stroke> + <stroke> + <point x="286" y="259"/> + <point x="328" y="351"/> + </stroke> + <stroke> + <point x="197" y="310"/> + <point x="219" y="515"/> + </stroke> + <stroke> + <point x="126" y="381"/> + <point x="91" y="487"/> + </stroke> + <stroke> + <point x="239" y="366"/> + <point x="288" y="453"/> + </stroke> + <stroke> <point x="815" y="129"/> <point x="660" y="233"/> <point x="751" y="300"/> @@ -54179,9 +54179,9 @@ <point x="155" y="862"/> </stroke> <stroke> - <point x="320" y="591"/> - <point x="456" y="767"/> - <point x="739" y="897"/> + <point x="310" y="608"/> + <point x="475" y="739"/> + <point x="868" y="834"/> </stroke> </strokes> </character> @@ -69215,32 +69215,6 @@ <utf8>欒</utf8> <strokes> <stroke> - <point x="233" y="138"/> - <point x="110" y="209"/> - <point x="185" y="272"/> - </stroke> - <stroke> - <point x="273" y="205"/> - <point x="75" y="353"/> - <point x="280" y="328"/> - </stroke> - <stroke> - <point x="270" y="272"/> - <point x="305" y="381"/> - </stroke> - <stroke> - <point x="198" y="345"/> - <point x="198" y="556"/> - </stroke> - <stroke> - <point x="123" y="414"/> - <point x="68" y="513"/> - </stroke> - <stroke> - <point x="260" y="392"/> - <point x="320" y="489"/> - </stroke> - <stroke> <point x="465" y="151"/> <point x="540" y="185"/> </stroke> @@ -69270,6 +69244,32 @@ <point x="550" y="496"/> </stroke> <stroke> + <point x="233" y="138"/> + <point x="110" y="209"/> + <point x="185" y="272"/> + </stroke> + <stroke> + <point x="273" y="205"/> + <point x="75" y="353"/> + <point x="280" y="328"/> + </stroke> + <stroke> + <point x="270" y="272"/> + <point x="305" y="381"/> + </stroke> + <stroke> + <point x="198" y="345"/> + <point x="198" y="556"/> + </stroke> + <stroke> + <point x="123" y="414"/> + <point x="68" y="513"/> + </stroke> + <stroke> + <point x="260" y="392"/> + <point x="320" y="489"/> + </stroke> + <stroke> <point x="788" y="157"/> <point x="695" y="244"/> <point x="750" y="282"/> @@ -130725,32 +130725,6 @@ <utf8>臠</utf8> <strokes> <stroke> - <point x="195" y="138"/> - <point x="125" y="198"/> - <point x="190" y="259"/> - </stroke> - <stroke> - <point x="258" y="198"/> - <point x="98" y="328"/> - <point x="278" y="300"/> - </stroke> - <stroke> - <point x="260" y="241"/> - <point x="308" y="347"/> - </stroke> - <stroke> - <point x="205" y="323"/> - <point x="193" y="502"/> - </stroke> - <stroke> - <point x="123" y="364"/> - <point x="68" y="468"/> - </stroke> - <stroke> - <point x="255" y="384"/> - <point x="308" y="450"/> - </stroke> - <stroke> <point x="445" y="147"/> <point x="523" y="200"/> </stroke> @@ -130780,6 +130754,32 @@ <point x="548" y="455"/> </stroke> <stroke> + <point x="195" y="138"/> + <point x="125" y="198"/> + <point x="190" y="259"/> + </stroke> + <stroke> + <point x="258" y="198"/> + <point x="98" y="328"/> + <point x="278" y="300"/> + </stroke> + <stroke> + <point x="260" y="241"/> + <point x="308" y="347"/> + </stroke> + <stroke> + <point x="205" y="323"/> + <point x="193" y="502"/> + </stroke> + <stroke> + <point x="123" y="364"/> + <point x="68" y="468"/> + </stroke> + <stroke> + <point x="255" y="384"/> + <point x="308" y="450"/> + </stroke> + <stroke> <point x="800" y="138"/> <point x="700" y="211"/> <point x="765" y="276"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 14:11:27
|
Revision: 1328 http://tomoe.svn.sourceforge.net/tomoe/?rev=1328&view=rev Author: makeinu Date: 2007-06-07 07:11:26 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Fix stroke order. Modified Paths: -------------- tools/stroke-editor/data/ja/jis-x-0208-level2.xml Modified: tools/stroke-editor/data/ja/jis-x-0208-level2.xml =================================================================== --- tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 14:02:39 UTC (rev 1327) +++ tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 14:11:26 UTC (rev 1328) @@ -198,14 +198,14 @@ <point x="188" y="222"/> </stroke> <stroke> - <point x="500" y="215"/> - <point x="498" y="865"/> - </stroke> - <stroke> <point x="85" y="341"/> <point x="903" y="337"/> </stroke> <stroke> + <point x="500" y="215"/> + <point x="498" y="865"/> + </stroke> + <stroke> <point x="103" y="517"/> <point x="318" y="522"/> </stroke> @@ -233,9 +233,8 @@ <utf8>乘</utf8> <strokes> <stroke> - <point x="780" y="141"/> - <point x="480" y="222"/> - <point x="200" y="215"/> + <point x="730" y="168"/> + <point x="268" y="241"/> </stroke> <stroke> <point x="108" y="341"/> @@ -260,14 +259,14 @@ <point x="335" y="474"/> </stroke> <stroke> - <point x="123" y="628"/> - <point x="318" y="559"/> - </stroke> - <stroke> <point x="335" y="420"/> <point x="338" y="615"/> </stroke> <stroke> + <point x="123" y="628"/> + <point x="318" y="559"/> + </stroke> + <stroke> <point x="845" y="428"/> <point x="753" y="485"/> <point x="665" y="500"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 14:02:45
|
Revision: 1327 http://tomoe.svn.sourceforge.net/tomoe/?rev=1327&view=rev Author: makeinu Date: 2007-06-07 07:02:39 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Fix stroke order. Modified Paths: -------------- tools/stroke-editor/data/ja/jis-x-0208-level2.xml Modified: tools/stroke-editor/data/ja/jis-x-0208-level2.xml =================================================================== --- tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 13:28:09 UTC (rev 1326) +++ tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 14:02:39 UTC (rev 1327) @@ -27930,6 +27930,22 @@ <utf8>學</utf8> <strokes> <stroke> + <point x="568" y="155"/> + <point x="433" y="265"/> + </stroke> + <stroke> + <point x="435" y="175"/> + <point x="598" y="235"/> + </stroke> + <stroke> + <point x="573" y="297"/> + <point x="408" y="373"/> + </stroke> + <stroke> + <point x="465" y="302"/> + <point x="585" y="377"/> + </stroke> + <stroke> <point x="395" y="116"/> <point x="223" y="196"/> </stroke> @@ -27938,43 +27954,27 @@ <point x="223" y="427"/> </stroke> <stroke> - <point x="635" y="192"/> - <point x="798" y="194"/> - <point x="793" y="425"/> - </stroke> - <stroke> <point x="230" y="261"/> <point x="355" y="263"/> </stroke> <stroke> - <point x="633" y="263"/> - <point x="805" y="265"/> - </stroke> - <stroke> <point x="215" y="356"/> <point x="385" y="351"/> </stroke> <stroke> - <point x="678" y="353"/> - <point x="788" y="353"/> + <point x="635" y="192"/> + <point x="798" y="194"/> + <point x="793" y="425"/> </stroke> <stroke> - <point x="568" y="155"/> - <point x="433" y="265"/> + <point x="633" y="263"/> + <point x="805" y="265"/> </stroke> <stroke> - <point x="435" y="175"/> - <point x="598" y="235"/> + <point x="643" y="349"/> + <point x="790" y="347"/> </stroke> <stroke> - <point x="573" y="297"/> - <point x="408" y="373"/> - </stroke> - <stroke> - <point x="465" y="302"/> - <point x="585" y="377"/> - </stroke> - <stroke> <point x="130" y="416"/> <point x="115" y="563"/> </stroke> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:28:33
|
Revision: 1326 http://tomoe.svn.sourceforge.net/tomoe/?rev=1326&view=rev Author: ikezoe Date: 2007-06-07 06:28:09 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Done! Modified Paths: -------------- tomoe-gtk/trunk/bindings/python/Makefile.am tomoe-gtk/trunk/bindings/python/tomoegtk.defs Modified: tomoe-gtk/trunk/bindings/python/Makefile.am =================================================================== --- tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 13:26:49 UTC (rev 1325) +++ tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 13:28:09 UTC (rev 1326) @@ -7,7 +7,9 @@ $(PYGOBJECT_CFLAGS) \ $(PYGTK_CFLAGS) \ $(GTK2_CFLAGS) \ - $(TOMOE_CFLAGS) + $(TOMOE_CFLAGS) \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src nodist_tomoegtk_la_SOURCES = \ tomoegtk.c Modified: tomoe-gtk/trunk/bindings/python/tomoegtk.defs =================================================================== --- tomoe-gtk/trunk/bindings/python/tomoegtk.defs 2007-06-07 13:26:49 UTC (rev 1325) +++ tomoe-gtk/trunk/bindings/python/tomoegtk.defs 2007-06-07 13:28:09 UTC (rev 1326) @@ -63,19 +63,19 @@ (gtype-id "TOMOE_TYPE_WINDOW") ) -;; Enumerations and flags ... +; Enumerations and flags ... -;(define-enum CharTableLayout -; (in-module "Tomoe") -; (c-name "TomoeCharTableLayout") -; (gtype-id "TOMOE_TYPE_CHAR_TABLE_LAYOUT") -; (values -; '("single-horizontal" "TOMOE_CHAR_TABLE_LAYOUT_SINGLE_HORIZONTAL") -; '("single-vertical" "TOMOE_CHAR_TABLE_LAYOUT_SINGLE_VERTICAL") -; '("horizontal" "TOMOE_CHAR_TABLE_LAYOUT_HORIZONTAL") -; '("vertical" "TOMOE_CHAR_TABLE_LAYOUT_VERTICAL") -; ) -;) +(define-enum CharTableLayout + (in-module "Tomoe") + (c-name "TomoeCharTableLayout") + (gtype-id "TOMOE_TYPE_CHAR_TABLE_LAYOUT") + (values + '("single-horizontal" "TOMOE_CHAR_TABLE_LAYOUT_SINGLE_HORIZONTAL") + '("single-vertical" "TOMOE_CHAR_TABLE_LAYOUT_SINGLE_VERTICAL") + '("horizontal" "TOMOE_CHAR_TABLE_LAYOUT_HORIZONTAL") + '("vertical" "TOMOE_CHAR_TABLE_LAYOUT_VERTICAL") + ) +) ;; From tomoe-canvas.h @@ -343,7 +343,7 @@ (c-name "tomoe_edit_meta_new") (is-constructor-of "TomoeEditMeta") (return-type "GtkWidget*") - (prorperties + (properties '("tomoe-char" (argname "chr")) ) ) @@ -361,7 +361,7 @@ (c-name "tomoe_edit_strokes_new") (is-constructor-of "TomoeEditStrokes") (return-type "GtkWidget*") - (prorperties + (properties '("tomoe-char" (argname "chr")) ) ) @@ -379,7 +379,7 @@ (c-name "tomoe_handwriting_new") (is-constructor-of "TomoeHandwriting") (return-type "GtkWidget*") - (prorperties + (properties '("tomoe-context" (argname "context")) ) ) @@ -427,7 +427,7 @@ (c-name "tomoe_reading_search_new") (is-constructor-of "TomoeReadingSearch") (return-type "GtkWidget*") - (prorperties + (properties '("tomoe-context" (argname "context")) ) ) @@ -574,3 +574,16 @@ ) +;; -*- scheme -*- +; object definitions ... +;; Enumerations and flags ... + + +;; From tomoe-gtk-enum-types.h + +(define-function tomoe_char_table_layout_get_type + (c-name "tomoe_char_table_layout_get_type") + (return-type "GType") +) + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:26:51
|
Revision: 1325 http://tomoe.svn.sourceforge.net/tomoe/?rev=1325&view=rev Author: ikezoe Date: 2007-06-07 06:26:49 -0700 (Thu, 07 Jun 2007) Log Message: ----------- baka. Modified Paths: -------------- tomoe-gtk/trunk/src/enum-types.mk Modified: tomoe-gtk/trunk/src/enum-types.mk =================================================================== --- tomoe-gtk/trunk/src/enum-types.mk 2007-06-07 13:25:31 UTC (rev 1324) +++ tomoe-gtk/trunk/src/enum-types.mk 2007-06-07 13:26:49 UTC (rev 1325) @@ -43,7 +43,7 @@ $(GLIB_MKENUMS) \ --fhead "#ifndef $${mark}\n#define $${mark}\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ --fprod "/* enumerations from \"@filename@\" */\n" \ - --vhead "GType @enum_name@_get_type (void);\n#define KZ_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ + --vhead "GType @enum_name@_get_type (void);\n#define TOMOE_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ --ftail "G_END_DECLS\n\n#endif /* $${mark} */" \ $(enum_sources_h)) > tmp-$(enum_source_prefix).h && \ (cmp -s tmp-$(enum_source_prefix).h $(enum_source_prefix).h || \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:25:31
|
Revision: 1324 http://tomoe.svn.sourceforge.net/tomoe/?rev=1324&view=rev Author: ikezoe Date: 2007-06-07 06:25:31 -0700 (Thu, 07 Jun 2007) Log Message: ----------- include tomoe-gtk-enum-types.h Modified Paths: -------------- tomoe-gtk/trunk/src/tomoe-char-table.c tomoe-gtk/trunk/src/tomoe-gtk.h Modified: tomoe-gtk/trunk/src/tomoe-char-table.c =================================================================== --- tomoe-gtk/trunk/src/tomoe-char-table.c 2007-06-07 13:12:02 UTC (rev 1323) +++ tomoe-gtk/trunk/src/tomoe-char-table.c 2007-06-07 13:25:31 UTC (rev 1324) @@ -26,6 +26,7 @@ #include "tomoe-char-table.h" #include "tomoe-canvas.h" #include "tomoe-scrollable.h" +#include "tomoe-gtk-enum-types.h" #define DEFAULT_FONT_SCALE 2 /*#define DEFAULT_FONT_SCALE PANGO_SCALE_XX_LARGE*/ Modified: tomoe-gtk/trunk/src/tomoe-gtk.h =================================================================== --- tomoe-gtk/trunk/src/tomoe-gtk.h 2007-06-07 13:12:02 UTC (rev 1323) +++ tomoe-gtk/trunk/src/tomoe-gtk.h 2007-06-07 13:25:31 UTC (rev 1324) @@ -28,6 +28,7 @@ #include <tomoe-window.h> #include <tomoe-handwriting.h> #include <tomoe-reading-search.h> +#include <tomoe-gtk-enum-types.h> #ifdef TOMOE_GTK_HAS_GUCHARMAP #include <tomoe-gucharmap.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:12:04
|
Revision: 1323 http://tomoe.svn.sourceforge.net/tomoe/?rev=1323&view=rev Author: ikezoe Date: 2007-06-07 06:12:02 -0700 (Thu, 07 Jun 2007) Log Message: ----------- lupin! Modified Paths: -------------- tomoe-gtk/trunk/configure.ac Modified: tomoe-gtk/trunk/configure.ac =================================================================== --- tomoe-gtk/trunk/configure.ac 2007-06-07 13:11:20 UTC (rev 1322) +++ tomoe-gtk/trunk/configure.ac 2007-06-07 13:12:02 UTC (rev 1323) @@ -87,6 +87,8 @@ AC_SUBST(GTK2_CFLAGS) AC_SUBST(GTK2_LIBS) +AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) + # Checks for Tomoe PKG_CHECK_MODULES(TOMOE, [tomoe >= 0.4.0]) AC_SUBST(TOMOE_CFLAGS) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:11:19
|
Revision: 1322 http://tomoe.svn.sourceforge.net/tomoe/?rev=1322&view=rev Author: ikezoe Date: 2007-06-07 06:11:20 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * configure.ac, src/Makefile.am, src/enum-types.mk: Use glib-mkenums. Modified Paths: -------------- tomoe-gtk/trunk/ChangeLog tomoe-gtk/trunk/src/Makefile.am Added Paths: ----------- tomoe-gtk/trunk/src/enum-types.mk Modified: tomoe-gtk/trunk/ChangeLog =================================================================== --- tomoe-gtk/trunk/ChangeLog 2007-06-07 13:02:56 UTC (rev 1321) +++ tomoe-gtk/trunk/ChangeLog 2007-06-07 13:11:20 UTC (rev 1322) @@ -8,6 +8,7 @@ * macros/python.m4, bindings/python/*, configure.ac, Makefile.am: Python binding. * bindings/python/tomoegtk-canvas.override: Added. + * configure.ac, src/Makefile.am, src/enum-types.mk: Use glib-mkenums. 2007-05-07 Takuro Ashie <as...@ho...> Modified: tomoe-gtk/trunk/src/Makefile.am =================================================================== --- tomoe-gtk/trunk/src/Makefile.am 2007-06-07 13:02:56 UTC (rev 1321) +++ tomoe-gtk/trunk/src/Makefile.am 2007-06-07 13:11:20 UTC (rev 1322) @@ -43,6 +43,20 @@ pkginclude_HEADERS += tomoe-gucharmap.h endif +enum_source_prefix = tomoe-gtk-enum-types + +enum_sources = \ + tomoe-gtk-enum-types.c tomoe-gtk-enum-types.h + +enum_sources_h = \ + $(pkginclude_HEADERS) + +BUILT_SOURCES = \ + $(enum_sources) + +CLEANFILES = \ + $(enum_sources) + # # Rule to install tomoe-gtk-config.h header file # @@ -53,3 +67,5 @@ file=$(DESTDIR)$(configexecincludedir)/tomoe-gtk-config.h; \ if test -r $$file && cmp -s tomoe-gtk-config.h $$file; then :; \ else $(INSTALL_DATA) tomoe-gtk-config.h $$file; fi + +include $(top_srcdir)/src/enum-types.mk Added: tomoe-gtk/trunk/src/enum-types.mk =================================================================== --- tomoe-gtk/trunk/src/enum-types.mk (rev 0) +++ tomoe-gtk/trunk/src/enum-types.mk 2007-06-07 13:11:20 UTC (rev 1322) @@ -0,0 +1,52 @@ +# -*- Mode: Makefile; tab-width: 8; indent-tabs-mode: t; -*- + +BUILT_SOURCES += \ + $(enum_source_prefix).c \ + $(enum_source_prefix).h \ + stamp-$(enum_source_prefix)-c \ + stamp-$(enum_source_prefix)-h + +CLEANFILES += \ + $(enum_source_prefix).c \ + $(enum_source_prefix).h \ + stamp-$(enum_source_prefix)-c \ + stamp-$(enum_source_prefix)-h + + +$(enum_source_prefix).c: stamp-$(enum_source_prefix)-c $(enum_source_prefix).h + @true + +stamp-$(enum_source_prefix)-c: $(enum_sources_h) Makefile $(GLIB_MKENUMS) + (cd $(srcdir) && \ + include_headers="" && \ + for h in $(enum_sources_h); do \ + include_headers="$${include_headers}#include \"$${h}\"\n"; \ + done && \ + $(GLIB_MKENUMS) \ + --fhead "#include \"$(enum_source_prefix).h\"\n$${include_headers}" \ + --fprod "\n/* enumerations from \"@filename@\" */" \ + --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ + --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ + --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ + $(enum_sources_h)) > tmp-$(enum_source_prefix).c && \ + (cmp -s tmp-$(enum_source_prefix).c $(enum_source_prefix).c || \ + cp tmp-$(enum_source_prefix).c $(enum_source_prefix).c ) && \ + rm -f tmp-$(enum_source_prefix).c && \ + echo timestamp > $(@F) + +$(enum_source_prefix).h: stamp-$(enum_source_prefix)-h + @true + +stamp-$(enum_source_prefix)-h: $(enum_sources_h) Makefile $(GLIB_MKENUMS) + (cd $(srcdir) && \ + mark="__`echo $(enum_source_prefix) | sed -e 's/-/_/g' | tr a-z A-Z`_H__" && \ + $(GLIB_MKENUMS) \ + --fhead "#ifndef $${mark}\n#define $${mark}\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ + --fprod "/* enumerations from \"@filename@\" */\n" \ + --vhead "GType @enum_name@_get_type (void);\n#define KZ_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ + --ftail "G_END_DECLS\n\n#endif /* $${mark} */" \ + $(enum_sources_h)) > tmp-$(enum_source_prefix).h && \ + (cmp -s tmp-$(enum_source_prefix).h $(enum_source_prefix).h || \ + cp tmp-$(enum_source_prefix).h $(enum_source_prefix).h) && \ + rm -f tmp-$(enum_source_prefix).h && \ + echo timestamp > $(@F) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 13:02:57
|
Revision: 1321 http://tomoe.svn.sourceforge.net/tomoe/?rev=1321&view=rev Author: ikezoe Date: 2007-06-07 06:02:56 -0700 (Thu, 07 Jun 2007) Log Message: ----------- use gdk-types.defs. Modified Paths: -------------- tomoe-gtk/trunk/bindings/python/Makefile.am Modified: tomoe-gtk/trunk/bindings/python/Makefile.am =================================================================== --- tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 12:59:05 UTC (rev 1320) +++ tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 13:02:56 UTC (rev 1321) @@ -39,6 +39,7 @@ (cd $(srcdir) \ && $(PYGTK_CODEGEN) \ --register $(PYGTK_DEFSDIR)/gtk-types.defs \ + --register $(PYGTK_DEFSDIR)/gdk-types.defs \ --register $(PYTOMOE_DEFSDIR)/tomoe.defs \ --override $*.override \ --prefix py$* $*.defs) > gen-$*.c \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 12:59:04
|
Revision: 1320 http://tomoe.svn.sourceforge.net/tomoe/?rev=1320&view=rev Author: ikezoe Date: 2007-06-07 05:59:05 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * bindings/python/tomoegtk-canvas.override: Added. Modified Paths: -------------- tomoe-gtk/trunk/ChangeLog tomoe-gtk/trunk/bindings/python/Makefile.am tomoe-gtk/trunk/bindings/python/tomoegtk.defs tomoe-gtk/trunk/bindings/python/tomoegtk.override Added Paths: ----------- tomoe-gtk/trunk/bindings/python/tomoegtk-canvas.override Modified: tomoe-gtk/trunk/ChangeLog =================================================================== --- tomoe-gtk/trunk/ChangeLog 2007-06-07 12:51:15 UTC (rev 1319) +++ tomoe-gtk/trunk/ChangeLog 2007-06-07 12:59:05 UTC (rev 1320) @@ -7,6 +7,7 @@ * macros/python.m4, bindings/python/*, configure.ac, Makefile.am: Python binding. + * bindings/python/tomoegtk-canvas.override: Added. 2007-05-07 Takuro Ashie <as...@ho...> Modified: tomoe-gtk/trunk/bindings/python/Makefile.am =================================================================== --- tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 12:51:15 UTC (rev 1319) +++ tomoe-gtk/trunk/bindings/python/Makefile.am 2007-06-07 12:59:05 UTC (rev 1320) @@ -26,7 +26,8 @@ $(PYGTK_LIBS) \ $(top_builddir)/src/libtomoe-gtk.la -OVERRIDES = \ +OVERRIDES = \ + tomoegtk-canvas.override \ tomoegtk.override tomoegtk.c: tomoegtk.defs $(OVERRIDES) Added: tomoe-gtk/trunk/bindings/python/tomoegtk-canvas.override =================================================================== --- tomoe-gtk/trunk/bindings/python/tomoegtk-canvas.override (rev 0) +++ tomoe-gtk/trunk/bindings/python/tomoegtk-canvas.override 2007-06-07 12:59:05 UTC (rev 1320) @@ -0,0 +1,22 @@ +%% +headers +#define NO_IMPORT_PYGOBJECT +#include <pytomoe-utils.h> +#include "tomoe-canvas.h" +%% +override tomoe_canvas_get_candidates noargs +static PyObject * +_wrap_tomoe_canvas_get_candidates(PyGObject *self) +{ + static char *kwlist[] = { "query", NULL }; + PyGObject *query; + const GList *candidates; + PyObject *py_cands; + + candidates = tomoe_canvas_get_candidates (TOMOE_CANVAS(self->obj)); + + CONVERT_LIST (py_cands, (GList *) candidates); + + return py_cands; +} +%% Modified: tomoe-gtk/trunk/bindings/python/tomoegtk.defs =================================================================== --- tomoe-gtk/trunk/bindings/python/tomoegtk.defs 2007-06-07 12:51:15 UTC (rev 1319) +++ tomoe-gtk/trunk/bindings/python/tomoegtk.defs 2007-06-07 12:59:05 UTC (rev 1320) @@ -305,9 +305,9 @@ (c-name "tomoe_details_new") (is-constructor-of "TomoeDetails") (return-type "GtkWidget*") - (parameters - '("TomoeChar*" "chr") - '("TomoeDict*" "dict") + (properties + '("tomoe-char" (argname "chr")) + '("tomoe-dict" (argname "dict")) ) ) @@ -324,9 +324,9 @@ (c-name "tomoe_edit_char_new") (is-constructor-of "TomoeEditChar") (return-type "GtkWidget*") - (parameters - '("TomoeChar*" "chr") - '("TomoeDict*" "dict") + (properties + '("tomoe-char" (argname "chr")) + '("tomoe-dict" (argname "dict")) ) ) @@ -343,8 +343,8 @@ (c-name "tomoe_edit_meta_new") (is-constructor-of "TomoeEditMeta") (return-type "GtkWidget*") - (parameters - '("TomoeChar*" "chr") + (prorperties + '("tomoe-char" (argname "chr")) ) ) @@ -361,8 +361,8 @@ (c-name "tomoe_edit_strokes_new") (is-constructor-of "TomoeEditStrokes") (return-type "GtkWidget*") - (parameters - '("TomoeChar*" "chr") + (prorperties + '("tomoe-char" (argname "chr")) ) ) @@ -379,8 +379,8 @@ (c-name "tomoe_handwriting_new") (is-constructor-of "TomoeHandwriting") (return-type "GtkWidget*") - (parameters - '("TomoeContext*" "context") + (prorperties + '("tomoe-context" (argname "context")) ) ) @@ -427,8 +427,8 @@ (c-name "tomoe_reading_search_new") (is-constructor-of "TomoeReadingSearch") (return-type "GtkWidget*") - (parameters - '("TomoeContext*" "context") + (prorperties + '("tomoe-context" (argname "context")) ) ) Modified: tomoe-gtk/trunk/bindings/python/tomoegtk.override =================================================================== --- tomoe-gtk/trunk/bindings/python/tomoegtk.override 2007-06-07 12:51:15 UTC (rev 1319) +++ tomoe-gtk/trunk/bindings/python/tomoegtk.override 2007-06-07 12:59:05 UTC (rev 1320) @@ -5,6 +5,9 @@ #include <pygtk/pygtk.h> #include "tomoe-gtk.h" %% +include + tomoegtk-canvas.override +%% modulename tomoegtk %% import gobject.GObject as PyGObject_Type This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 12:51:16
|
Revision: 1319 http://tomoe.svn.sourceforge.net/tomoe/?rev=1319&view=rev Author: ikezoe Date: 2007-06-07 05:51:15 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * bindings/python/tomoe-python-utils.h -> bindings/python/pytomoe-utils.h: * bindings/python/*.override: Follow the above change. Modified Paths: -------------- tomoe/trunk/ChangeLog tomoe/trunk/bindings/python/Makefile.am tomoe/trunk/bindings/python/tomoe-char.override tomoe/trunk/bindings/python/tomoe-context.override tomoe/trunk/bindings/python/tomoe-dict.override tomoe/trunk/bindings/python/tomoe-query.override tomoe/trunk/bindings/python/tomoe-recognizer.override tomoe/trunk/bindings/python/tomoe-shelf.override tomoe/trunk/bindings/python/tomoe-writing.override Added Paths: ----------- tomoe/trunk/bindings/python/pytomoe-utils.h Removed Paths: ------------- tomoe/trunk/bindings/python/tomoe-python-utils.h Modified: tomoe/trunk/ChangeLog =================================================================== --- tomoe/trunk/ChangeLog 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/ChangeLog 2007-06-07 12:51:15 UTC (rev 1319) @@ -13,6 +13,9 @@ * bindings/python/Makefile.am: Install tomoe.defs. * tomoe.pc.in: Add defsdir for Python binding. * bindings/python/pytomoe.pc.in: pkg-config file for pytomoe. + * bindings/python/tomoe-python-utils.h -> + bindings/python/pytomoe-utils.h: + * bindings/python/*.override: Follow the above change. 2007-06-06 Hiroyuki Ikezoe <poi...@ik...> Modified: tomoe/trunk/bindings/python/Makefile.am =================================================================== --- tomoe/trunk/bindings/python/Makefile.am 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/Makefile.am 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,6 +1,12 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = pytomoe.pc +pytomoe_public_h_sources = \ + pytomoe-utils.h + +pkginclude_HEADERS = \ + $(pytomoe_public_h_sources) + pyexec_LTLIBRARIES = tomoe.la defsdir = $(pkgdatadir)/python @@ -41,7 +47,7 @@ tomoe.c: $(defs_DATA) $(OVERRIDES) CLEANFILES = tomoe.c -EXTRA_DIST = $(defs_DATA) $(OVERRIDES) +EXTRA_DIST = $(defs_DATA) $(OVERRIDES) .defs.c: (cd $(srcdir) \ Copied: tomoe/trunk/bindings/python/pytomoe-utils.h (from rev 1314, tomoe/trunk/bindings/python/tomoe-python-utils.h) =================================================================== --- tomoe/trunk/bindings/python/pytomoe-utils.h (rev 0) +++ tomoe/trunk/bindings/python/pytomoe-utils.h 2007-06-07 12:51:15 UTC (rev 1319) @@ -0,0 +1,13 @@ + +#define CONVERT_LIST(py_list, g_list) \ + { \ + GList *node; \ + py_list = PyList_New (0); \ + for (node = g_list; node; node = g_list_next(node)) \ + { \ + PyObject *py_obj = pygobject_new ((GObject *)node->data); \ + PyList_Append (py_list, py_obj); \ + Py_DECREF(py_obj); \ + } \ + } + Modified: tomoe/trunk/bindings/python/tomoe-char.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-char.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-char.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% override tomoe_char_get_readings noargs static PyObject * Modified: tomoe/trunk/bindings/python/tomoe-context.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-context.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-context.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% ignore tomoe_context_multi_search Modified: tomoe/trunk/bindings/python/tomoe-dict.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-dict.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-dict.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" #include "tomoe-dict.h" %% new-constructor TOMOE_TYPE_DICT Deleted: tomoe/trunk/bindings/python/tomoe-python-utils.h =================================================================== --- tomoe/trunk/bindings/python/tomoe-python-utils.h 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-python-utils.h 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,13 +0,0 @@ - -#define CONVERT_LIST(py_list, g_list) \ - { \ - GList *node; \ - py_list = PyList_New (0); \ - for (node = g_list; node; node = g_list_next(node)) \ - { \ - PyObject *py_obj = pygobject_new ((GObject *)node->data); \ - PyList_Append (py_list, py_obj); \ - Py_DECREF(py_obj); \ - } \ - } - Modified: tomoe/trunk/bindings/python/tomoe-query.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-query.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-query.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% override tomoe_query_get_readings noargs static PyObject * Modified: tomoe/trunk/bindings/python/tomoe-recognizer.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-recognizer.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-recognizer.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% new-constructor TOMOE_TYPE_RECOGNIZER %% Modified: tomoe/trunk/bindings/python/tomoe-shelf.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-shelf.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-shelf.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% override tomoe_shelf_get_dict_names noargs static PyObject * Modified: tomoe/trunk/bindings/python/tomoe-writing.override =================================================================== --- tomoe/trunk/bindings/python/tomoe-writing.override 2007-06-07 12:25:52 UTC (rev 1318) +++ tomoe/trunk/bindings/python/tomoe-writing.override 2007-06-07 12:51:15 UTC (rev 1319) @@ -1,7 +1,7 @@ %% headers #define NO_IMPORT_PYGOBJECT -#include "tomoe-python-utils.h" +#include "pytomoe-utils.h" %% override tomoe_writing_get_strokes noargs static PyObject * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 12:25:53
|
Revision: 1318 http://tomoe.svn.sourceforge.net/tomoe/?rev=1318&view=rev Author: makeinu Date: 2007-06-07 05:25:52 -0700 (Thu, 07 Jun 2007) Log Message: ----------- 2520/3390 has been finished. Modified Paths: -------------- tools/stroke-editor/data/ja/jis-x-0208-level2.xml Modified: tools/stroke-editor/data/ja/jis-x-0208-level2.xml =================================================================== --- tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 12:07:26 UTC (rev 1317) +++ tools/stroke-editor/data/ja/jis-x-0208-level2.xml 2007-06-07 12:25:52 UTC (rev 1318) @@ -139232,601 +139232,8375 @@ <character> <utf8>薀</utf8> <strokes> + <stroke> + <point x="138" y="218"/> + <point x="875" y="211"/> + </stroke> + <stroke> + <point x="353" y="157"/> + <point x="373" y="278"/> + </stroke> + <stroke> + <point x="655" y="159"/> + <point x="618" y="272"/> + </stroke> + <stroke> + <point x="163" y="319"/> + <point x="265" y="384"/> + </stroke> + <stroke> + <point x="120" y="450"/> + <point x="193" y="489"/> + </stroke> + <stroke> + <point x="98" y="759"/> + <point x="233" y="718"/> + <point x="293" y="595"/> + </stroke> + <stroke> + <point x="440" y="330"/> + <point x="463" y="537"/> + </stroke> + <stroke> + <point x="453" y="343"/> + <point x="765" y="330"/> + <point x="745" y="541"/> + </stroke> + <stroke> + <point x="610" y="358"/> + <point x="543" y="494"/> + </stroke> + <stroke> + <point x="578" y="416"/> + <point x="685" y="481"/> + </stroke> + <stroke> + <point x="460" y="530"/> + <point x="728" y="532"/> + </stroke> + <stroke> + <point x="393" y="625"/> + <point x="413" y="815"/> + </stroke> + <stroke> + <point x="395" y="631"/> + <point x="813" y="616"/> + <point x="810" y="817"/> + </stroke> + <stroke> + <point x="525" y="640"/> + <point x="530" y="817"/> + </stroke> + <stroke> + <point x="683" y="629"/> + <point x="675" y="817"/> + </stroke> + <stroke> + <point x="295" y="823"/> + <point x="953" y="823"/> + </stroke> </strokes> </character> <character> <utf8>薤</utf8> <strokes> + <stroke> + <point x="123" y="224"/> + <point x="853" y="220"/> + </stroke> + <stroke> + <point x="358" y="153"/> + <point x="388" y="291"/> + </stroke> + <stroke> + <point x="635" y="155"/> + <point x="585" y="297"/> + </stroke> + <stroke> + <point x="108" y="371"/> + <point x="393" y="366"/> + </stroke> + <stroke> + <point x="240" y="388"/> + <point x="125" y="616"/> + </stroke> + <stroke> + <point x="203" y="483"/> + <point x="353" y="487"/> + <point x="173" y="806"/> + </stroke> + <stroke> + <point x="173" y="573"/> + <point x="260" y="662"/> + </stroke> + <stroke> + <point x="560" y="356"/> + <point x="570" y="806"/> + </stroke> + <stroke> + <point x="440" y="450"/> + <point x="540" y="450"/> + </stroke> + <stroke> + <point x="438" y="563"/> + <point x="543" y="565"/> + </stroke> + <stroke> + <point x="428" y="698"/> + <point x="573" y="698"/> + </stroke> + <stroke> + <point x="723" y="366"/> + <point x="715" y="795"/> + </stroke> + <stroke> + <point x="728" y="453"/> + <point x="848" y="446"/> + </stroke> + <stroke> + <point x="745" y="550"/> + <point x="850" y="550"/> + </stroke> + <stroke> + <point x="728" y="683"/> + <point x="850" y="681"/> + </stroke> + <stroke> + <point x="363" y="819"/> + <point x="900" y="817"/> + </stroke> </strokes> </character> <character> <utf8>薈</utf8> <strokes> + <stroke> + <point x="138" y="222"/> + <point x="895" y="220"/> + </stroke> + <stroke> + <point x="325" y="134"/> + <point x="360" y="291"/> + </stroke> + <stroke> + <point x="670" y="149"/> + <point x="640" y="291"/> + </stroke> + <stroke> + <point x="490" y="259"/> + <point x="145" y="487"/> + </stroke> + <stroke> + <point x="488" y="265"/> + <point x="908" y="453"/> + </stroke> + <stroke> + <point x="315" y="427"/> + <point x="625" y="416"/> + </stroke> + <stroke> + <point x="238" y="468"/> + <point x="250" y="629"/> + </stroke> + <stroke> + <point x="243" y="483"/> + <point x="758" y="476"/> + <point x="723" y="629"/> + </stroke> + <stroke> + <point x="475" y="494"/> + <point x="478" y="621"/> + </stroke> + <stroke> + <point x="328" y="524"/> + <point x="370" y="582"/> + </stroke> + <stroke> + <point x="650" y="513"/> + <point x="610" y="586"/> + </stroke> + <stroke> + <point x="248" y="619"/> + <point x="710" y="614"/> + </stroke> + <stroke> + <point x="290" y="653"/> + <point x="310" y="879"/> + </stroke> + <stroke> + <point x="308" y="653"/> + <point x="683" y="644"/> + <point x="655" y="871"/> + </stroke> + <stroke> + <point x="328" y="765"/> + <point x="663" y="759"/> + </stroke> + <stroke> + <point x="313" y="873"/> + <point x="650" y="871"/> + </stroke> </strokes> </character> <character> <utf8>薑</utf8> <strokes> + <stroke> + <point x="170" y="211"/> + <point x="825" y="211"/> + </stroke> + <stroke> + <point x="360" y="138"/> + <point x="375" y="261"/> + </stroke> + <stroke> + <point x="655" y="138"/> + <point x="630" y="269"/> + </stroke> + <stroke> + <point x="228" y="308"/> + <point x="795" y="297"/> + </stroke> + <stroke> + <point x="255" y="362"/> + <point x="263" y="506"/> + </stroke> + <stroke> + <point x="253" y="366"/> + <point x="698" y="358"/> + <point x="693" y="528"/> + </stroke> + <stroke> + <point x="478" y="375"/> + <point x="488" y="515"/> + </stroke> + <stroke> + <point x="280" y="442"/> + <point x="680" y="438"/> + </stroke> + <stroke> + <point x="303" y="513"/> + <point x="680" y="511"/> + </stroke> + <stroke> + <point x="158" y="560"/> + <point x="810" y="547"/> + </stroke> + <stroke> + <point x="255" y="612"/> + <point x="263" y="778"/> + </stroke> + <stroke> + <point x="248" y="619"/> + <point x="690" y="619"/> + <point x="675" y="793"/> + </stroke> + <stroke> + <point x="488" y="629"/> + <point x="503" y="780"/> + </stroke> + <stroke> + <point x="273" y="698"/> + <point x="670" y="698"/> + </stroke> + <stroke> + <point x="280" y="782"/> + <point x="663" y="782"/> + </stroke> + <stroke> + <point x="158" y="843"/> + <point x="798" y="847"/> + </stroke> </strokes> </character> <character> <utf8>薊</utf8> <strokes> + <stroke> + <point x="158" y="224"/> + <point x="820" y="216"/> + </stroke> + <stroke> + <point x="350" y="151"/> + <point x="365" y="269"/> + </stroke> + <stroke> + <point x="658" y="151"/> + <point x="590" y="293"/> + </stroke> + <stroke> + <point x="260" y="343"/> + <point x="125" y="502"/> + </stroke> + <stroke> + <point x="248" y="345"/> + <point x="388" y="345"/> + <point x="320" y="450"/> + </stroke> + <stroke> + <point x="193" y="453"/> + <point x="210" y="664"/> + </stroke> + <stroke> + <point x="198" y="463"/> + <point x="450" y="457"/> + <point x="425" y="659"/> + </stroke> + <stroke> + <point x="310" y="463"/> + <point x="328" y="655"/> + </stroke> + <stroke> + <point x="230" y="554"/> + <point x="415" y="556"/> + </stroke> + <stroke> + <point x="208" y="655"/> + <point x="443" y="649"/> + </stroke> + <stroke> + <point x="168" y="750"/> + <point x="123" y="864"/> + </stroke> + <stroke> + <point x="238" y="744"/> + <point x="260" y="860"/> + </stroke> + <stroke> + <point x="345" y="741"/> + <point x="413" y="866"/> + </stroke> + <stroke> + <point x="473" y="733"/> + <point x="533" y="841"/> + </stroke> + <stroke> + <point x="638" y="384"/> + <point x="653" y="659"/> + </stroke> + <stroke> + <point x="848" y="336"/> + <point x="803" y="853"/> + <point x="703" y="791"/> + </stroke> </strokes> </character> <character> <utf8>薨</utf8> <strokes> + <stroke> + <point x="165" y="205"/> + <point x="833" y="200"/> + </stroke> + <stroke> + <point x="363" y="123"/> + <point x="375" y="244"/> + </stroke> + <stroke> + <point x="630" y="136"/> + <point x="620" y="248"/> + </stroke> + <stroke> + <point x="213" y="293"/> + <point x="225" y="433"/> + </stroke> + <stroke> + <point x="220" y="306"/> + <point x="770" y="300"/> + <point x="728" y="433"/> + </stroke> + <stroke> + <point x="400" y="319"/> + <point x="405" y="399"/> + </stroke> + <stroke> + <point x="600" y="306"/> + <point x="600" y="397"/> + </stroke> + <stroke> + <point x="238" y="422"/> + <point x="725" y="412"/> + </stroke> + <stroke> + <point x="123" y="470"/> + <point x="115" y="582"/> + </stroke> + <stroke> + <point x="133" y="472"/> + <point x="865" y="476"/> + <point x="788" y="563"/> + </stroke> + <stroke> + <point x="188" y="565"/> + <point x="705" y="563"/> + </stroke> + <stroke> + <point x="300" y="565"/> + <point x="190" y="711"/> + </stroke> + <stroke> + <point x="263" y="631"/> + <point x="400" y="640"/> + <point x="268" y="903"/> + </stroke> + <stroke> + <point x="228" y="705"/> + <point x="355" y="765"/> + </stroke> + <stroke> + <point x="773" y="649"/> + <point x="548" y="722"/> + </stroke> + <stroke> + <point x="538" y="580"/> + <point x="535" y="862"/> + <point x="830" y="875"/> + <point x="815" y="756"/> + </stroke> </strokes> </character> <character> <utf8>蕭</utf8> <strokes> + <stroke> + <point x="153" y="200"/> + <point x="848" y="203"/> + </stroke> + <stroke> + <point x="335" y="131"/> + <point x="360" y="259"/> + </stroke> + <stroke> + <point x="660" y="127"/> + <point x="625" y="256"/> + </stroke> + <stroke> + <point x="230" y="304"/> + <point x="758" y="297"/> + <point x="740" y="455"/> + </stroke> + <stroke> + <point x="103" y="384"/> + <point x="895" y="375"/> + </stroke> + <stroke> + <point x="193" y="450"/> + <point x="740" y="440"/> + </stroke> + <stroke> + <point x="480" y="254"/> + <point x="498" y="864"/> + </stroke> + <stroke> + <point x="183" y="485"/> + <point x="180" y="675"/> + <point x="68" y="851"/> + </stroke> + <stroke> + <point x="333" y="476"/> + <point x="335" y="603"/> + </stroke> + <stroke> + <point x="195" y="586"/> + <point x="333" y="584"/> + </stroke> + <stroke> + <point x="628" y="487"/> + <point x="628" y="582"/> + <point x="800" y="580"/> + </stroke> + <stroke> + <point x="803" y="487"/> + <point x="813" y="856"/> + </stroke> + <stroke> + <point x="173" y="653"/> + <point x="793" y="649"/> + </stroke> + <stroke> + <point x="165" y="720"/> + <point x="335" y="722"/> + <point x="330" y="866"/> + </stroke> + <stroke> + <point x="630" y="718"/> + <point x="793" y="716"/> + </stroke> + <stroke> + <point x="633" y="722"/> + <point x="630" y="864"/> + </stroke> </strokes> </character> <character> <utf8>薔</utf8> <strokes> + <stroke> + <point x="128" y="213"/> + <point x="865" y="205"/> + </stroke> + <stroke> + <point x="340" y="121"/> + <point x="358" y="272"/> + </stroke> + <stroke> + <point x="668" y="131"/> + <point x="633" y="276"/> + </stroke> + <stroke> + <point x="215" y="330"/> + <point x="763" y="323"/> + </stroke> + <stroke> + <point x="498" y="252"/> + <point x="505" y="515"/> + </stroke> + <stroke> + <point x="93" y="522"/> + <point x="830" y="513"/> + </stroke> + <stroke> + <point x="300" y="366"/> + <point x="185" y="506"/> + </stroke> + <stroke> + <point x="275" y="425"/> + <point x="390" y="483"/> + </stroke> + <stroke> + <point x="698" y="362"/> + <point x="618" y="496"/> + </stroke> + <stroke> + <point x="673" y="409"/> + <point x="763" y="472"/> + </stroke> + <stroke> + <point x="250" y="599"/> + <point x="248" y="817"/> + </stroke> + <stroke> + <point x="248" y="597"/> + <point x="738" y="601"/> + <point x="728" y="808"/> + </stroke> + <stroke> + <point x="385" y="653"/> + <point x="383" y="754"/> + </stroke> + <stroke> + <point x="393" y="651"/> + <point x="608" y="651"/> + <point x="595" y="756"/> + </stroke> + <stroke> + <point x="390" y="756"/> + <point x="585" y="752"/> + </stroke> + <stroke> + <point x="253" y="817"/> + <point x="700" y="806"/> + </stroke> </strokes> </character> <character> <utf8>薛</utf8> <strokes> + <stroke> + <point x="165" y="228"/> + <point x="873" y="220"/> + </stroke> + <stroke> + <point x="348" y="127"/> + <point x="370" y="276"/> + </stroke> + <stroke> + <point x="645" y="140"/> + <point x="615" y="274"/> + </stroke> + <stroke> + <point x="280" y="304"/> + <point x="193" y="416"/> + </stroke> + <stroke> + <point x="140" y="405"/> + <point x="145" y="834"/> + </stroke> + <stroke> + <point x="140" y="414"/> + <point x="370" y="422"/> + <point x="365" y="552"/> + </stroke> + <stroke> + <point x="153" y="552"/> + <point x="358" y="552"/> + </stroke> + <stroke> + <point x="160" y="668"/> + <point x="365" y="666"/> + <point x="368" y="810"/> + </stroke> + <stroke> + <point x="150" y="797"/> + <point x="355" y="793"/> + </stroke> + <stroke> + <point x="695" y="300"/> + <point x="703" y="407"/> + </stroke> + <stroke> + <point x="505" y="409"/> + <point x="895" y="397"/> + </stroke> + <stroke> + <point x="608" y="409"/> + <point x="625" y="541"/> + </stroke> + <stroke> + <point x="793" y="420"/> + <point x="768" y="547"/> + </stroke> + <stroke> + <point x="490" y="567"/> + <point x="903" y="554"/> + </stroke> + <stroke> + <point x="523" y="690"/> + <point x="910" y="685"/> + </stroke> + <stroke> + <point x="688" y="560"/> + <point x="695" y="888"/> + </stroke> </strokes> </character> <character> <utf8>藪</utf8> <strokes> + <stroke> + <point x="145" y="220"/> + <point x="853" y="213"/> + </stroke> + <stroke> + <point x="358" y="121"/> + <point x="375" y="263"/> + </stroke> + <stroke> + <point x="650" y="123"/> + <point x="615" y="261"/> + </stroke> + <stroke> + <point x="168" y="347"/> + <point x="168" y="455"/> + </stroke> + <stroke> + <point x="165" y="347"/> + <point x="435" y="341"/> + <point x="423" y="450"/> + </stroke> + <stroke> + <point x="63" y="394"/> + <point x="513" y="388"/> + </stroke> + <stroke> + <point x="180" y="453"/> + <point x="440" y="448"/> + </stroke> + <stroke> + <point x="303" y="289"/> + <point x="303" y="578"/> + </stroke> + <stroke> + <point x="140" y="506"/> + <point x="163" y="601"/> + </stroke> + <stroke> + <point x="155" y="519"/> + <point x="463" y="517"/> + <point x="425" y="597"/> + </stroke> + <stroke> + <point x="158" y="597"/> + <point x="448" y="597"/> + </stroke> + <stroke> + <point x="305" y="627"/> + <point x="175" y="748"/> + <point x="410" y="849"/> + </stroke> + <stroke> + <point x="413" y="698"/> + <point x="295" y="823"/> + <point x="148" y="869"/> + </stroke> + <stroke> + <point x="90" y="683"/> + <point x="518" y="675"/> + </stroke> + <stroke> + <point x="660" y="321"/> + <point x="580" y="550"/> + </stroke> + <stroke> + <point x="618" y="418"/> + <point x="930" y="405"/> + </stroke> + <stroke> + <point x="830" y="418"/> + <point x="755" y="659"/> + <point x="568" y="832"/> + </stroke> + <stroke> + <point x="635" y="442"/> + <point x="708" y="668"/> + <point x="908" y="825"/> + </stroke> </strokes> </character> <character> <utf8>薇</utf8> <strokes> + <stroke> + <point x="120" y="200"/> + <point x="840" y="198"/> + </stroke> + <stroke> + <point x="358" y="127"/> + <point x="363" y="252"/> + </stroke> + <stroke> + <point x="635" y="127"/> + <point x="623" y="269"/> + </stroke> + <stroke> + <point x="253" y="310"/> + <point x="120" y="440"/> + </stroke> + <stroke> + <point x="250" y="429"/> + <point x="68" y="666"/> + </stroke> + <stroke> + <point x="188" y="528"/> + <point x="183" y="879"/> + </stroke> + <stroke> + <point x="478" y="284"/> + <point x="483" y="433"/> + </stroke> + <stroke> + <point x="355" y="336"/> + <point x="335" y="433"/> + <point x="575" y="425"/> + </stroke> + <stroke> + <point x="585" y="334"/> + <point x="588" y="444"/> + </stroke> + <stroke> + <point x="323" y="522"/> + <point x="573" y="517"/> + </stroke> + <stroke> + <point x="375" y="588"/> + <point x="373" y="720"/> + <point x="305" y="836"/> + </stroke> + <stroke> + <point x="380" y="595"/> + <point x="548" y="593"/> + <point x="515" y="756"/> + <point x="668" y="675"/> + </stroke> + <stroke> + <point x="730" y="319"/> + <point x="633" y="545"/> + </stroke> + <stroke> + <point x="695" y="416"/> + <point x="918" y="403"/> + </stroke> + <stroke> + <point x="870" y="420"/> + <point x="805" y="649"/> + <point x="590" y="862"/> + </stroke> + <stroke> + <point x="693" y="435"/> + <point x="765" y="664"/> + <point x="890" y="864"/> + </stroke> </strokes> </character> <character> <utf8>薜</utf8> <strokes> + <stroke> + <point x="145" y="222"/> + <point x="848" y="220"/> + </stroke> + <stroke> + <point x="370" y="142"/> + <point x="388" y="280"/> + </stroke> + <stroke> + <point x="653" y="144"/> + <point x="628" y="269"/> + </stroke> + <stroke> + <point x="178" y="364"/> + <point x="383" y="366"/> + <point x="388" y="506"/> + </stroke> + <stroke> + <point x="178" y="504"/> + <point x="385" y="502"/> + </stroke> + <stroke> + <point x="170" y="362"/> + <point x="173" y="571"/> + <point x="75" y="795"/> + </stroke> + <stroke> + <point x="183" y="610"/> + <point x="208" y="804"/> + </stroke> + <stroke> + <point x="175" y="616"/> + <point x="410" y="608"/> + <point x="375" y="800"/> + </stroke> + <stroke> + <point x="215" y="795"/> + <point x="388" y="780"/> + </stroke> + <stroke> + <point x="700" y="291"/> + <point x="698" y="394"/> + </stroke> + <stroke> + <point x="463" y="418"/> + <point x="905" y="401"/> + </stroke> + <stroke> + <point x="603" y="425"/> + <point x="618" y="547"/> + </stroke> + <stroke> + <point x="793" y="416"/> + <point x="765" y="541"/> + </stroke> + <stroke> + <point x="483" y="573"/> + <point x="903" y="552"/> + </stroke> + <stroke> + <point x="528" y="698"/> + <point x="843" y="690"/> + </stroke> + <stroke> + <point x="685" y="580"/> + <point x="710" y="866"/> + </stroke> </strokes> </character> <character> <utf8>蕷</utf8> <strokes> + <stroke> + <point x="125" y="218"/> + <point x="885" y="209"/> + </stroke> + <stroke> + <point x="360" y="127"/> + <point x="375" y="272"/> + </stroke> + <stroke> + <point x="655" y="138"/> + <point x="620" y="284"/> + </stroke> + <stroke> + <point x="93" y="343"/> + <point x="375" y="338"/> + <point x="260" y="440"/> + </stroke> + <stroke> + <point x="165" y="407"/> + <point x="280" y="494"/> + </stroke> + <stroke> + <point x="78" y="524"/> + <point x="415" y="511"/> + <point x="350" y="631"/> + </stroke> + <stroke> + <point x="248" y="528"/> + <point x="238" y="866"/> + <point x="138" y="800"/> + </stroke> + <stroke> + <point x="510" y="343"/> + <point x="880" y="332"/> + </stroke> + <stroke> + <point x="678" y="341"/> + <point x="630" y="433"/> + </stroke> + <stroke> + <point x="543" y="433"/> + <point x="545" y="722"/> + </stroke> + <stroke> + <point x="548" y="444"/> + <point x="828" y="440"/> + <point x="815" y="707"/> + </stroke> + <stroke> + <point x="553" y="511"/> + <point x="833" y="511"/> + </stroke> + <stroke> + <point x="550" y="621"/> + <point x="813" y="612"/> + </stroke> + <stroke> + <point x="550" y="711"/> + <point x="798" y="709"/> + </stroke> + <stroke> + <point x="573" y="748"/> + <point x="525" y="881"/> + </stroke> + <stroke> + <point x="750" y="748"/> + <point x="848" y="877"/> + </stroke> </strokes> </character> <character> <utf8>蕾</utf8> <strokes> + <stroke> + <point x="123" y="209"/> + <point x="835" y="211"/> + </stroke> + <stroke> + <point x="360" y="134"/> + <point x="375" y="248"/> + </stroke> + <stroke> + <point x="625" y="140"/> + <point x="620" y="252"/> + </stroke> + <stroke> + <point x="223" y="313"/> + <point x="765" y="313"/> + </stroke> + <stroke> + <point x="158" y="394"/> + <point x="138" y="517"/> + </stroke> + <stroke> + <point x="155" y="399"/> + <point x="880" y="381"/> + <point x="823" y="487"/> + </stroke> + <stroke> + <point x="493" y="334"/> + <point x="493" y="547"/> + </stroke> + <stroke> + <point x="243" y="440"/> + <point x="403" y="453"/> + </stroke> + <stroke> + <point x="263" y="504"/> + <point x="405" y="519"/> + </stroke> + <stroke> + <point x="610" y="433"/> + <point x="723" y="438"/> + </stroke> + <stroke> + <point x="595" y="504"/> + <point x="745" y="526"/> + </stroke> + <stroke> + <point x="203" y="614"/> + <point x="230" y="858"/> + </stroke> + <stroke> + <point x="218" y="629"/> + <point x="755" y="601"/> + <point x="738" y="875"/> + </stroke> + <stroke> + <point x="490" y="631"/> + <point x="490" y="851"/> + </stroke> + <stroke> + <point x="245" y="737"/> + <point x="723" y="724"/> + </stroke> + <stroke> + <point x="240" y="864"/> + <point x="728" y="856"/> + </stroke> </strokes> </character> <character> <utf8>薐</utf8> <strokes> + <stroke> + <point x="128" y="211"/> + <point x="868" y="209"/> + </stroke> + <stroke> + <point x="340" y="127"/> + <point x="368" y="261"/> + </stroke> + <stroke> + <point x="658" y="136"/> + <point x="628" y="265"/> + </stroke> + <stroke> + <point x="373" y="321"/> + <point x="135" y="386"/> + </stroke> + <stroke> + <point x="105" y="481"/> + <point x="390" y="474"/> + </stroke> + <stroke> + <point x="250" y="362"/> + <point x="253" y="851"/> + </stroke> + <stroke> + <point x="250" y="500"/> + <point x="80" y="756"/> + </stroke> + <stroke> + <point x="258" y="504"/> + <point x="373" y="655"/> + </stroke> + <stroke> + <point x="495" y="362"/> + <point x="855" y="360"/> + </stroke> + <stroke> + <point x="653" y="295"/> + <point x="668" y="440"/> + </stroke> + <stroke> + <point x="480" y="446"/> + <point x="883" y="435"/> + </stroke> + <stroke> + <point x="590" y="450"/> + <point x="513" y="584"/> + </stroke> + <stroke> + <point x="738" y="448"/> + <point x="738" y="547"/> + <point x="900" y="545"/> + <point x="883" y="496"/> + </stroke> + <stroke> + <point x="610" y="601"/> + <point x="505" y="720"/> + </stroke> + <stroke> + <point x="585" y="623"/> + <point x="765" y="612"/> + <point x="685" y="754"/> + <point x="485" y="873"/> + </stroke> + <stroke> + <point x="585" y="662"/> + <point x="725" y="765"/> + <point x="870" y="815"/> + </stroke> </strokes> </character> <character> <utf8>藉</utf8> <strokes> + <stroke> + <point x="133" y="224"/> + <point x="860" y="218"/> + </stroke> + <stroke> + <point x="358" y="125"/> + <point x="375" y="269"/> + </stroke> + <stroke> + <point x="660" y="131"/> + <point x="615" y="293"/> + </stroke> + <stroke> + <point x="375" y="353"/> + <point x="120" y="412"/> + </stroke> + <stroke> + <point x="103" y="478"/> + <point x="380" y="470"/> + </stroke> + <stroke> + <point x="83" y="571"/> + <point x="450" y="571"/> + </stroke> + <stroke> + <point x="255" y="313"/> + <point x="263" y="881"/> + </stroke> + <stroke> + <point x="248" y="603"/> + <point x="65" y="810"/> + </stroke> + <stroke> + <point x="265" y="610"/> + <point x="403" y="735"/> + </stroke> + <stroke> + <point x="483" y="401"/> + <point x="860" y="405"/> + </stroke> + <stroke> + <point x="598" y="304"/> + <point x="613" y="522"/> + </stroke> + <stroke> + <point x="795" y="315"/> + <point x="768" y="524"/> + </stroke> + <stroke> + <point x="485" y="530"/> + <point x="923" y="509"/> + </stroke> + <stroke> + <point x="565" y="603"/> + <point x="580" y="823"/> + </stroke> + <stroke> + <point x="575" y="612"/> + <point x="818" y="597"/> + <point x="795" y="830"/> + </stroke> + <stroke> + <point x="593" y="703"/> + <point x="810" y="696"/> + </stroke> + <stroke> + <point x="580" y="815"/> + <point x="805" y="810"/> + </stroke> </strokes> </character> <character> <utf8>薺</utf8> <strokes> + <stroke> + <point x="125" y="209"/> + <point x="873" y="220"/> + </stroke> + <stroke> + <point x="340" y="136"/> + <point x="363" y="276"/> + </stroke> + <stroke> + <point x="663" y="121"/> + <point x="653" y="267"/> + </stroke> + <stroke> + <point x="510" y="250"/> + <point x="513" y="325"/> + </stroke> + <stroke> + <point x="128" y="332"/> + <point x="915" y="325"/> + </stroke> + <stroke> + <point x="430" y="356"/> + <point x="475" y="420"/> + </stroke> + <stroke> + <point x="603" y="366"/> + <point x="490" y="444"/> + </stroke> + <stroke> + <point x="483" y="440"/> + <point x="483" y="569"/> + </stroke> + <stroke> + <point x="98" y="414"/> + <point x="368" y="414"/> + <point x="325" y="556"/> + <point x="225" y="537"/> + </stroke> + <stroke> + <point x="203" y="407"/> + <point x="195" y="494"/> + <point x="83" y="582"/> + </stroke> + <stroke> + <point x="885" y="373"/> + <point x="668" y="425"/> + </stroke> + <stroke> + <point x="668" y="418"/> + <point x="668" y="547"/> + <point x="750" y="524"/> + </stroke> + <stroke> + <point x="788" y="405"/> + <point x="910" y="558"/> + </stroke> + <stroke> + <point x="318" y="597"/> + <point x="325" y="754"/> + <point x="225" y="940"/> + </stroke> + <stroke> + <point x="710" y="606"/> + <point x="708" y="905"/> + </stroke> + <stroke> + <point x="338" y="664"/> + <point x="710" y="659"/> + </stroke> + <stroke> + <point x="320" y="774"/> + <point x="715" y="761"/> + </stroke> </strokes> </character> <character> <utf8>藏</utf8> <strokes> + <stroke> + <point x="130" y="228"/> + <point x="880" y="211"/> + </stroke> + <stroke> + <point x="365" y="147"/> + <point x="385" y="289"/> + </stroke> + <stroke> + <point x="655" y="149"/> + <point x="615" y="300"/> + </stroke> + <stroke> + <point x="108" y="362"/> + <point x="98" y="519"/> + <point x="258" y="509"/> + </stroke> + <stroke> + <point x="248" y="353"/> + <point x="248" y="655"/> + <point x="193" y="871"/> + </stroke> + <stroke> + <point x="103" y="606"/> + <point x="248" y="599"/> + </stroke> + <stroke> + <point x="133" y="603"/> + <point x="83" y="802"/> + </stroke> + <stroke> + <point x="260" y="360"/> + <point x="918" y="351"/> + </stroke> + <stroke> + <point x="363" y="476"/> + <point x="353" y="765"/> + </stroke> + <stroke> + <point x="365" y="466"/> + <point x="620" y="455"/> + </stroke> + <stroke> + <point x="485" y="468"/> + <point x="488" y="545"/> + </stroke> + <stroke> + <point x="373" y="558"/> + <point x="575" y="552"/> + <point x="575" y="655"/> + </stroke> + <stroke> + <point x="378" y="649"/> + <point x="565" y="642"/> + </stroke> + <stroke> + <point x="490" y="647"/> + <point x="490" y="759"/> + </stroke> + <stroke> + <point x="348" y="756"/> + <point x="613" y="748"/> + </stroke> + <stroke> + <point x="683" y="269"/> + <point x="740" y="649"/> + <point x="935" y="847"/> + <point x="948" y="692"/> + </stroke> + <stroke> + <point x="848" y="491"/> + <point x="758" y="703"/> + <point x="608" y="843"/> + </stroke> + <stroke> + <point x="770" y="280"/> + <point x="828" y="330"/> + </stroke> </strokes> </character> <character> <utf8>薹</utf8> <strokes> + <stroke> + <point x="143" y="196"/> + <point x="865" y="194"/> + </stroke> + <stroke> + <point x="348" y="112"/> + <point x="358" y="241"/> + </stroke> + <stroke> + <point x="678" y="112"/> + <point x="648" y="252"/> + </stroke> + <stroke> + <point x="188" y="293"/> + <point x="818" y="289"/> + </stroke> + <stroke> + <point x="495" y="224"/> + <point x="503" y="349"/> + </stroke> + <stroke> + <point x="265" y="351"/> + <point x="708" y="343"/> + </stroke> + <stroke> + <point x="283" y="392"/> + <point x="303" y="496"/> + </stroke> + <stroke> + <point x="288" y="394"/> + <point x="700" y="384"/> + <point x="670" y="500"/> + </stroke> + <stroke> + <point x="315" y="494"/> + <point x="670" y="489"/> + </stroke> + <stroke> + <point x="138" y="534"/> + <point x="138" y="629"/> + </stroke> + <stroke> + <point x="138" y="541"/> + <point x="863" y="532"/> + <point x="783" y="634"/> + </stroke> + <stroke> + <point x="225" y="593"/> + <point x="675" y="580"/> + </stroke> + <stroke> + <point x="430" y="599"/> + <point x="305" y="705"/> + <point x="700" y="683"/> + </stroke> + <stroke> + <point x="668" y="627"/> + <point x="715" y="728"/> + </stroke> + <stroke> + <point x="270" y="759"/> + <point x="675" y="750"/> + </stroke> + <stroke> + <point x="493" y="703"/> + <point x="493" y="862"/> + </stroke> + <stroke> + <point x="115" y="871"/> + <point x="835" y="849"/> + </stroke> </strokes> </character> <character> <utf8>藐</utf8> <strokes> + <stroke> + <point x="115" y="220"/> + <point x="875" y="211"/> + </stroke> + <stroke> + <point x="339" y="144"/> + <point x="362" y="278"/> + </stroke> + <stroke> + <point x="651" y="131"/> + <point x="608" y="261"/> + </stroke> + <stroke> + <point x="347" y="325"/> + <point x="62" y="429"/> + </stroke> + <stroke> + <point x="152" y="422"/> + <point x="219" y="491"/> + </stroke> + <stroke> + <point x="252" y="384"/> + <point x="324" y="478"/> + </stroke> + <stroke> + <point x="409" y="438"/> + <point x="127" y="573"/> + </stroke> + <stroke> + <point x="292" y="509"/> + <point x="394" y="690"/> + <point x="329" y="860"/> + <point x="272" y="815"/> + </stroke> + <stroke> + <point x="307" y="569"/> + <point x="115" y="685"/> + </stroke> + <stroke> + <point x="352" y="623"/> + <point x="137" y="776"/> + </stroke> + <stroke> + <point x="726" y="280"/> + <point x="623" y="384"/> + </stroke> + <stroke> + <point x="526" y="373"/> + <point x="546" y="601"/> + </stroke> + <stroke> + <point x="536" y="401"/> + <point x="855" y="388"/> + <point x="818" y="593"/> + </stroke> + <stroke> + <point x="546" y="489"/> + <point x="833" y="487"/> + </stroke> + <stroke> + <point x="556" y="591"/> + <point x="825" y="588"/> + </stroke> + <stroke> + <point x="623" y="603"/> + <point x="586" y="735"/> + <point x="439" y="858"/> + </stroke> + <stroke> + <point x="733" y="599"/> + <point x="726" y="815"/> + <point x="908" y="821"/> + <point x="928" y="709"/> + </stroke> </strokes> </character> <character> <utf8>藕</utf8> <strokes> + <stroke> + <point x="132" y="218"/> + <point x="878" y="220"/> + </stroke> + <stroke> + <point x="359" y="129"/> + <point x="377" y="284"/> + </stroke> + <stroke> + <point x="653" y="142"/> + <point x="636" y="267"/> + </stroke> + <stroke> + <point x="372" y="351"/> + <point x="130" y="414"/> + </stroke> + <stroke> + <point x="120" y="500"/> + <point x="362" y="494"/> + </stroke> + <stroke> + <point x="102" y="584"/> + <point x="387" y="578"/> + </stroke> + <stroke> + <point x="247" y="302"/> + <point x="254" y="862"/> + </stroke> + <stroke> + <point x="234" y="606"/> + <point x="42" y="828"/> + </stroke> + <stroke> + <point x="259" y="601"/> + <point x="374" y="769"/> + </stroke> + <stroke> + <point x="524" y="338"/> + <point x="536" y="537"/> + </stroke> + <stroke> + <point x="516" y="349"/> + <point x="853" y="345"/> + <point x="813" y="534"/> + </stroke> + <stroke> + <point x="534" y="440"/> + <point x="813" y="433"/> + </stroke> + <stroke> + <point x="541" y="534"/> + <point x="815" y="524"/> + </stroke> + <stroke> + <point x="696" y="351"/> + <point x="681" y="724"/> + </stroke> + <stroke> + <point x="556" y="752"/> + <point x="776" y="703"/> + </stroke> + <stroke> + <point x="776" y="644"/> + <point x="808" y="741"/> + </stroke> + <stroke> + <point x="486" y="599"/> + <point x="476" y="886"/> + </stroke> + <stroke> + <point x="509" y="595"/> + <point x="910" y="595"/> + <point x="890" y="881"/> + <point x="783" y="836"/> + </stroke> </strokes> </character> <character> <utf8>藝</utf8> <strokes> + <stroke> + <point x="127" y="200"/> + <point x="863" y="192"/> + </stroke> + <stroke> + <point x="357" y="114"/> + <point x="369" y="246"/> + </stroke> + <stroke> + <point x="636" y="125"/> + <point x="608" y="254"/> + </stroke> + <stroke> + <point x="145" y="308"/> + <point x="401" y="304"/> + </stroke> + <stroke> + <point x="267" y="246"/> + <point x="277" y="356"/> + </stroke> + <stroke> + <point x="90" y="377"/> + <point x="454" y="373"/> + </stroke> + <stroke> + <point x="222" y="388"/> + <point x="142" y="470"/> + </stroke> + <stroke> + <point x="332" y="379"/> + <point x="329" y="444"/> + <point x="436" y="444"/> + <point x="439" y="407"/> + </stroke> + <stroke> + <point x="135" y="513"/> + <point x="397" y="504"/> + </stroke> + <stroke> + <point x="262" y="431"/> + <point x="267" y="573"/> + </stroke> + <stroke> + <point x="110" y="612"/> + <point x="401" y="575"/> + </stroke> + <stroke> + <point x="661" y="289"/> + <point x="646" y="427"/> + <point x="529" y="567"/> + </stroke> + <stroke> + <point x="504" y="356"/> + <point x="798" y="345"/> + <point x="793" y="552"/> + <point x="930" y="545"/> + <point x="915" y="463"/> + </stroke> + <stroke> + <point x="531" y="412"/> + <point x="701" y="496"/> + </stroke> + <stroke> + <point x="302" y="625"/> + <point x="653" y="627"/> + </stroke> + <stroke> + <point x="187" y="711"/> + <point x="771" y="694"/> + </stroke> + <stroke> + <point x="416" y="716"/> + <point x="304" y="884"/> + <point x="723" y="862"/> + </stroke> + <stroke> + <point x="683" y="778"/> + <point x="778" y="916"/> + </stroke> </strokes> </character> <character> <utf8>藥</utf8> <strokes> + <stroke> + <point x="132" y="200"/> + <point x="895" y="205"/> + </stroke> + <stroke> + <point x="349" y="112"/> + <point x="372" y="252"/> + </stroke> + <stroke> + <point x="663" y="123"/> + <point x="636" y="250"/> + </stroke> + <stroke> + <point x="219" y="276"/> + <point x="112" y="405"/> + <point x="187" y="453"/> + </stroke> + <stroke> + <point x="287" y="362"/> + <point x="112" y="565"/> + <point x="282" y="534"/> + </stroke> + <stroke> + <point x="269" y="476"/> + <point x="327" y="575"/> + </stroke> + <stroke> + <point x="519" y="246"/> + <point x="446" y="349"/> + </stroke> + <stroke> + <point x="399" y="325"/> + <point x="406" y="563"/> + </stroke> + <stroke> + <point x="399" y="345"/> + <point x="596" y="341"/> + <point x="561" y="580"/> + </stroke> + <stroke> + <point x="401" y="438"/> + <point x="571" y="433"/> + </stroke> + <stroke> + <point x="409" y="560"/> + <point x="561" y="552"/> + </stroke> + <stroke> + <point x="800" y="276"/> + <point x="686" y="409"/> + <point x="756" y="457"/> + </stroke> + <stroke> + <point x="860" y="353"/> + <point x="683" y="569"/> + <point x="875" y="537"/> + </stroke> + <stroke> + <point x="850" y="481"/> + <point x="908" y="591"/> + </stroke> + <stroke> + <point x="170" y="651"/> + <point x="813" y="644"/> + </stroke> + <stroke> + <point x="494" y="567"/> + <point x="501" y="899"/> + </stroke> + <stroke> + <point x="484" y="653"/> + <point x="254" y="793"/> + <point x="100" y="853"/> + </stroke> + <stroke> + <point x="526" y="649"/> + <point x="721" y="780"/> + <point x="915" y="838"/> + </stroke> </strokes> </character> <character> <utf8>藜</utf8> <strokes> + <stroke> + <point x="135" y="224"/> + <point x="845" y="213"/> + </stroke> + <stroke> + <point x="359" y="123"/> + <point x="372" y="274"/> + </stroke> + <stroke> + <point x="671" y="129"/> + <point x="631" y="267"/> + </stroke> + <stroke> + <point x="379" y="304"/> + <point x="150" y="351"/> + </stroke> + <stroke> + <point x="102" y="422"/> + <point x="406" y="416"/> + </stroke> + <stroke> + <point x="267" y="321"/> + <point x="274" y="578"/> + </stroke> + <stroke> + <point x="267" y="429"/> + <point x="97" y="552"/> + </stroke> + <stroke> + <point x="267" y="433"/> + <point x="387" y="504"/> + </stroke> + <stroke> + <point x="643" y="295"/> + <point x="564" y="431"/> + </stroke> + <stroke> + <point x="601" y="373"/> + <point x="870" y="366"/> + <point x="818" y="547"/> + <point x="746" y="511"/> + </stroke> + <stroke> + <point x="708" y="384"/> + <point x="636" y="513"/> + </stroke> + <stroke> + <point x="501" y="491"/> + <point x="130" y="677"/> + </stroke> + <stroke> + <point x="506" y="483"/> + <point x="888" y="653"/> + </stroke> + <stroke> + <point x="506" y="580"/> + <point x="501" y="862"/> + <point x="434" y="836"/> + </stroke> + <stroke> + <point x="292" y="634"/> + <point x="352" y="688"/> + </stroke> + <stroke> + <point x="185" y="804"/> + <point x="424" y="737"/> + </stroke> + <stroke> + <point x="703" y="629"/> + <point x="621" y="720"/> + </stroke> + <stroke> + <point x="529" y="703"/> + <point x="803" y="804"/> + </stroke> </strokes> </character> <character> <utf8>藹</utf8> <strokes> + <stroke> + <point x="135" y="218"/> + <point x="840" y="220"/> + </stroke> + <stroke> + <point x="369" y="129"/> + <point x="372" y="276"/> + </stroke> + <stroke> + <point x="641" y="134"/> + <point x="631" y="278"/> + </stroke> + <stroke> + <point x="214" y="319"/> + <point x="302" y="371"/> + </stroke> + <stroke> + <point x="107" y="422"/> + <point x="394" y="420"/> + </stroke> + <stroke> + <point x="160" y="496"/> + <point x="334" y="491"/> + </stroke> + <stroke> + <point x="165" y="578"/> + <point x="324" y="578"/> + </stroke> + <stroke> + <point x="145" y="659"/> + <point x="160" y="830"/> + </stroke> + <stroke> + <point x="155" y="662"/> + <point x="337" y="655"/> + <point x="324" y="817"/> + </stroke> + <stroke> + <point x="167" y="819"/> + <point x="322" y="815"/> + </stroke> + <stroke> + <point x="509" y="325"/> + <point x="526" y="506"/> + </stroke> + <stroke> + <point x="519" y="328"/> + <point x="798" y="313"/> + <point x="776" y="504"/> + </stroke> + <stroke> + <point x="534" y="416"/> + <point x="793" y="403"/> + </stroke> + <stroke> + <point x="521" y="502"/> + <point x="800" y="485"/> + </stroke> + <stroke> + <point x="631" y="506"/> + <point x="419" y="681"/> + </stroke> + <stroke> + <point x="556" y="569"/> + <point x="880" y="569"/> + <point x="818" y="838"/> + <point x="763" y="810"/> + </stroke> + <stroke> + <point x="688" y="588"/> + <point x="616" y="709"/> + </stroke> + <stroke> + <point x="673" y="638"/> + <point x="756" y="705"/> + </stroke> + <stroke> + <point x="516" y="603"/> + <point x="509" y="769"/> + <point x="796" y="739"/> + </stroke> </strokes> </character> <character> <utf8>蘊</utf8> <strokes> + <stroke> + <point x="130" y="220"/> + <point x="850" y="226"/> + </stroke> + <stroke> + <point x="359" y="149"/> + <point x="367" y="276"/> + </stroke> + <stroke> + <point x="646" y="147"/> + <point x="623" y="265"/> + </stroke> + <stroke> + <point x="247" y="313"/> + <point x="142" y="414"/> + <point x="190" y="476"/> + </stroke> + <stroke> + <point x="329" y="364"/> + <point x="120" y="563"/> + <point x="314" y="534"/> + </stroke> + <stroke> + <point x="294" y="474"/> + <point x="362" y="586"/> + </stroke> + <stroke> + <point x="229" y="554"/> + <point x="219" y="853"/> + </stroke> + <stroke> + <point x="135" y="634"/> + <point x="85" y="774"/> + </stroke> + <stroke> + <point x="312" y="636"/> + <point x="339" y="735"/> + </stroke> + <stroke> + <point x="491" y="328"/> + <point x="504" y="528"/> + </stroke> + <stroke> + <point x="491" y="321"/> + <point x="776" y="321"/> + <point x="751" y="534"/> + </stroke> + <stroke> + <point x="648" y="356"/> + <point x="574" y="487"/> + </stroke> + <stroke> + <point x="621" y="407"/> + <point x="696" y="481"/> + </stroke> + <stroke> + <point x="494" y="537"/> + <point x="766" y="528"/> + </stroke> + <stroke> + <point x="469" y="621"/> + <point x="474" y="815"/> + </stroke> + <stroke> + <point x="486" y="623"/> + <point x="800" y="616"/> + <point x="796" y="817"/> + </stroke> + <stroke> + <point x="576" y="616"/> + <point x="581" y="808"/> + </stroke> + <stroke> + <point x="691" y="623"/> + <point x="691" y="808"/> + </stroke> + <stroke> + <point x="349" y="828"/> + <point x="933" y="821"/> + </stroke> </strokes> </character> <character> <utf8>蘓</utf8> <strokes> + <stroke> + <point x="125" y="220"/> + <point x="900" y="222"/> + </stroke> + <stroke> + <point x="364" y="134"/> + <point x="382" y="278"/> + </stroke> + <stroke> + <point x="651" y="131"/> + <point x="621" y="278"/> + </stroke> + <stroke> + <point x="359" y="310"/> + <point x="120" y="399"/> + </stroke> + <stroke> + <point x="75" y="498"/> + <point x="399" y="489"/> + </stroke> + <stroke> + <point x="254" y="349"/> + <point x="254" y="866"/> + </stroke> + <stroke> + <point x="254" y="517"/> + <point x="75" y="772"/> + </stroke> + <stroke> + <point x="252" y="526"/> + <point x="392" y="670"/> + </stroke> + <stroke> + <point x="611" y="332"/> + <point x="446" y="519"/> + </stroke> + <stroke> + <point x="579" y="336"/> + <point x="768" y="334"/> + <point x="668" y="472"/> + </stroke> + <stroke> + <point x="531" y="461"/> + <point x="546" y="681"/> + </stroke> + <stroke> + <point x="534" y="468"/> + <point x="830" y="457"/> + <point x="813" y="679"/> + </stroke> + <stroke> + <point x="693" y="472"/> + <point x="691" y="677"/> + </stroke> + <stroke> + <point x="559" y="563"/> + <point x="808" y="558"/> + </stroke> + <stroke> + <point x="549" y="675"/> + <point x="800" y="666"/> + </stroke> + <stroke> + <point x="504" y="737"/> + <point x="464" y="875"/> + </stroke> + <stroke> + <point x="626" y="744"/> + <point x="668" y="875"/> + </stroke> + <stroke> + <point x="723" y="739"/> + <point x="771" y="823"/> + </stroke> + <stroke> + <point x="843" y="726"/> + <point x="925" y="810"/> + </stroke> </strokes> </character> <character> <utf8>蘋</utf8> <strokes> + <stroke> + <point x="95" y="216"/> + <point x="883" y="207"/> + </stroke> + <stroke> + <point x="352" y="142"/> + <point x="382" y="291"/> + </stroke> + <stroke> + <point x="648" y="138"/> + <point x="618" y="300"/> + </stroke> + <stroke> + <point x="289" y="291"/> + <point x="277" y="519"/> + </stroke> + <stroke> + <point x="289" y="403"/> + <point x="431" y="392"/> + </stroke> + <stroke> + <point x="177" y="347"/> + <point x="167" y="511"/> + </stroke> + <stroke> + <point x="50" y="519"/> + <point x="484" y="515"/> + </stroke> + <stroke> + <point x="267" y="524"/> + <point x="284" y="683"/> + <point x="195" y="657"/> + </stroke> + <stroke> + <point x="175" y="573"/> + <point x="75" y="705"/> + </stroke> + <stroke> + <point x="449" y="584"/> + <point x="299" y="731"/> + <point x="75" y="849"/> + </stroke> + <stroke> + <point x="544" y="338"/> + <point x="888" y="332"/> + </stroke> + <stroke> + <point x="708" y="341"/> + <point x="643" y="438"/> + </stroke> + <stroke> + <point x="556" y="422"/> + <point x="594" y="720"/> + </stroke> + <stroke> + <point x="576" y="444"/> + <point x="848" y="438"/> + <point x="805" y="718"/> + </stroke> + <stroke> + <point x="586" y="530"/> + <point x="835" y="522"/> + </stroke> + <stroke> + <point x="606" y="627"/> + <point x="828" y="614"/> + </stroke> + <stroke> + <point x="596" y="720"/> + <point x="815" y="698"/> + </stroke> + <stroke> + <point x="601" y="767"/> + <point x="546" y="871"/> + </stroke> + <stroke> + <point x="773" y="756"/> + <point x="893" y="864"/> + </stroke> </strokes> </character> <character> <utf8>藾</utf8> <strokes> + <stroke> + <point x="125" y="216"/> + <point x="853" y="211"/> + </stroke> + <stroke> + <point x="354" y="155"/> + <point x="377" y="265"/> + </stroke> + <stroke> + <point x="628" y="153"/> + <point x="623" y="276"/> + </stroke> + <stroke> + <point x="102" y="379"/> + <point x="429" y="371"/> + </stroke> + <stroke> + <point x="130" y="457"/> + <point x="150" y="603"/> + </stroke> + <stroke> + <point x="137" y="455"/> + <point x="414" y="459"/> + <point x="397" y="584"/> + </stroke> + <stroke> + <point x="142" y="588"/> + <point x="382" y="584"/> + </stroke> + <stroke> + <point x="272" y="291"/> + <point x="277" y="856"/> + </stroke> + <stroke> + <point x="269" y="599"/> + <point x="70" y="802"/> + </stroke> + <stroke> + <point x="267" y="601"/> + <point x="454" y="759"/> + </stroke> + <stroke> + <point x="529" y="336"/> + <point x="865" y="336"/> + <point x="796" y="509"/> + <point x="716" y="446"/> + </stroke> + <stroke> + <point x="688" y="341"/> + <point x="594" y="446"/> + <point x="466" y="534"/> + </stroke> + <stroke> + <point x="571" y="509"/> + <point x="564" y="741"/> + </stroke> + <stroke> + <point x="576" y="511"/> + <point x="833" y="509"/> + <point x="820" y="735"/> + </stroke> + <stroke> + <point x="599" y="586"/> + <point x="823" y="584"/> + </stroke> + <stroke> + <point x="596" y="653"/> + <point x="823" y="651"/> + </stroke> + <stroke> + <point x="581" y="733"/> + <point x="818" y="735"/> + </stroke> + <stroke> + <point x="621" y="784"/> + <point x="544" y="879"/> + </stroke> + <stroke> + <point x="781" y="765"/> + <point x="840" y="869"/> + </stroke> </strokes> </character> <character> <utf8>藺</utf8> <strokes> + <stroke> + <point x="112" y="213"/> + <point x="873" y="209"/> + </stroke> + <stroke> + <point x="364" y="125"/> + <point x="382" y="287"/> + </stroke> + <stroke> + <point x="656" y="125"/> + <point x="626" y="276"/> + </stroke> + <stroke> + <point x="145" y="300"/> + <point x="135" y="849"/> + </stroke> + <stroke> + <point x="150" y="302"/> + <point x="401" y="304"/> + <point x="409" y="470"/> + </stroke> + <stroke> + <point x="155" y="377"/> + <point x="399" y="379"/> + </stroke> + <stroke> + <point x="155" y="457"/> + <point x="404" y="459"/> + </stroke> + <stroke> + <point x="576" y="317"/> + <point x="584" y="463"/> + </stroke> + <stroke> + <point x="589" y="306"/> + <point x="865" y="304"/> + <point x="855" y="858"/> + <point x="743" y="797"/> + </stroke> + <stroke> + <point x="576" y="384"/> + <point x="863" y="373"/> + </stroke> + <stroke> + <point x="611" y="442"/> + <point x="848" y="429"/> + </stroke> + <stroke> + <point x="394" y="496"/> + <point x="242" y="662"/> + </stroke> + <stroke> + <point x="347" y="552"/> + <point x="347" y="810"/> + </stroke> + <stroke> + <point x="564" y="468"/> + <point x="501" y="560"/> + </stroke> + <stroke> + <point x="362" y="560"/> + <point x="666" y="547"/> + </stroke> + <stroke> + <point x="364" y="621"/> + <point x="623" y="612"/> + </stroke> + <stroke> + <point x="362" y="690"/> + <point x="643" y="672"/> + </stroke> + <stroke> + <point x="504" y="563"/> + <point x="511" y="756"/> + </stroke> + <stroke> + <point x="337" y="765"/> + <point x="668" y="756"/> + </stroke> </strokes> </character> <character> <utf8>蘆</utf8> <strokes> + <stroke> + <point x="120" y="207"/> + <point x="878" y="205"/> + </stroke> + <stroke> + <point x="332" y="131"/> + <point x="337" y="263"/> + </stroke> + <stroke> + <point x="673" y="127"/> + <point x="626" y="237"/> + </stroke> + <stroke> + <point x="499" y="306"/> + <point x="773" y="302"/> + </stroke> + <stroke> + <point x="494" y="235"/> + <point x="499" y="351"/> + </stroke> + <stroke> + <point x="197" y="360"/> + <point x="880" y="349"/> + <point x="786" y="405"/> + </stroke> + <stroke> + <point x="202" y="356"/> + <point x="175" y="677"/> + <point x="32" y="903"/> + </stroke> + <stroke> + <point x="327" y="444"/> + <point x="663" y="416"/> + </stroke> + <stroke> + <point x="461" y="377"/> + <point x="469" y="500"/> + <point x="736" y="498"/> + <point x="741" y="448"/> + </stroke> + <stroke> + <point x="337" y="530"/> + <point x="339" y="692"/> + </stroke> + <stroke> + <point x="339" y="550"/> + <point x="723" y="534"/> + <point x="703" y="690"/> + </stroke> + <stroke> + <point x="534" y="547"/> + <point x="536" y="692"/> + </stroke> + <stroke> + <point x="342" y="612"/> + <point x="706" y="606"/> + </stroke> + <stroke> + <point x="349" y="683"/> + <point x="711" y="672"/> + </stroke> + <stroke> + <point x="309" y="746"... [truncated message content] |
From: <ik...@us...> - 2007-06-07 12:07:24
|
Revision: 1317 http://tomoe.svn.sourceforge.net/tomoe/?rev=1317&view=rev Author: ikezoe Date: 2007-06-07 05:07:26 -0700 (Thu, 07 Jun 2007) Log Message: ----------- ? Modified Paths: -------------- tomoe/trunk/Makefile.am Modified: tomoe/trunk/Makefile.am =================================================================== --- tomoe/trunk/Makefile.am 2007-06-07 12:06:18 UTC (rev 1316) +++ tomoe/trunk/Makefile.am 2007-06-07 12:07:26 UTC (rev 1317) @@ -30,7 +30,7 @@ intltool-extract.in pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_data= tomoe.pc +pkgconfig_DATA = tomoe.pc CLEANFILES = *~ *.bak DISTCLEANFILES = tomoe.pc This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 12:06:17
|
Revision: 1316 http://tomoe.svn.sourceforge.net/tomoe/?rev=1316&view=rev Author: ikezoe Date: 2007-06-07 05:06:18 -0700 (Thu, 07 Jun 2007) Log Message: ----------- tomoe -> pytomoe. Modified Paths: -------------- tomoe-gtk/trunk/macros/python.m4 Modified: tomoe-gtk/trunk/macros/python.m4 =================================================================== --- tomoe-gtk/trunk/macros/python.m4 2007-06-07 12:05:48 UTC (rev 1315) +++ tomoe-gtk/trunk/macros/python.m4 2007-06-07 12:06:18 UTC (rev 1316) @@ -54,7 +54,7 @@ AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, [python_avairable="no"]) - PYTOMOE_DEFSDIR=`$PKG_CONFIG --variable=defsdir tomoe` + PYTOMOE_DEFSDIR=`$PKG_CONFIG --variable=defsdir pytomoe` AC_SUBST([PYTOMOE_DEFSDIR]) if test x"$PYTOMOE_DEFSDIR" = "x"; then python_available=no This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ik...@us...> - 2007-06-07 12:05:46
|
Revision: 1315 http://tomoe.svn.sourceforge.net/tomoe/?rev=1315&view=rev Author: ikezoe Date: 2007-06-07 05:05:48 -0700 (Thu, 07 Jun 2007) Log Message: ----------- * bindings/python/pytomoe.pc.in: pkg-config file for pytomoe. Modified Paths: -------------- tomoe/trunk/ChangeLog tomoe/trunk/Makefile.am tomoe/trunk/bindings/python/Makefile.am tomoe/trunk/configure.ac tomoe/trunk/tomoe.pc.in Added Paths: ----------- tomoe/trunk/bindings/python/pytomoe.pc.in Modified: tomoe/trunk/ChangeLog =================================================================== --- tomoe/trunk/ChangeLog 2007-06-07 07:35:05 UTC (rev 1314) +++ tomoe/trunk/ChangeLog 2007-06-07 12:05:48 UTC (rev 1315) @@ -12,6 +12,7 @@ function's name. * bindings/python/Makefile.am: Install tomoe.defs. * tomoe.pc.in: Add defsdir for Python binding. + * bindings/python/pytomoe.pc.in: pkg-config file for pytomoe. 2007-06-06 Hiroyuki Ikezoe <poi...@ik...> Modified: tomoe/trunk/Makefile.am =================================================================== --- tomoe/trunk/Makefile.am 2007-06-07 07:35:05 UTC (rev 1314) +++ tomoe/trunk/Makefile.am 2007-06-07 12:05:48 UTC (rev 1315) @@ -30,7 +30,7 @@ intltool-extract.in pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA= tomoe.pc +pkgconfig_data= tomoe.pc CLEANFILES = *~ *.bak DISTCLEANFILES = tomoe.pc Modified: tomoe/trunk/bindings/python/Makefile.am =================================================================== --- tomoe/trunk/bindings/python/Makefile.am 2007-06-07 07:35:05 UTC (rev 1314) +++ tomoe/trunk/bindings/python/Makefile.am 2007-06-07 12:05:48 UTC (rev 1315) @@ -1,3 +1,6 @@ +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = pytomoe.pc + pyexec_LTLIBRARIES = tomoe.la defsdir = $(pkgdatadir)/python Added: tomoe/trunk/bindings/python/pytomoe.pc.in =================================================================== --- tomoe/trunk/bindings/python/pytomoe.pc.in (rev 0) +++ tomoe/trunk/bindings/python/pytomoe.pc.in 2007-06-07 12:05:48 UTC (rev 1315) @@ -0,0 +1,11 @@ +prefix=@prefix@ +datarootdir=@datarootdir@ +datadir=@datadir@ + +# for Python binding +defsdir=${datadir}/@PACKAGE@/python + +Name: Python binding for Tomoe +Description: Python binding for TOMOE +Version: @VERSION@ +Requires: tomoe, pygobject-2.0 Modified: tomoe/trunk/configure.ac =================================================================== --- tomoe/trunk/configure.ac 2007-06-07 07:35:05 UTC (rev 1314) +++ tomoe/trunk/configure.ac 2007-06-07 12:05:48 UTC (rev 1315) @@ -286,6 +286,7 @@ bindings/Makefile bindings/ruby/Makefile bindings/python/Makefile +bindings/python/pytomoe.pc db/Makefile db/lib/Makefile db/migrate/Makefile Modified: tomoe/trunk/tomoe.pc.in =================================================================== --- tomoe/trunk/tomoe.pc.in 2007-06-07 07:35:05 UTC (rev 1314) +++ tomoe/trunk/tomoe.pc.in 2007-06-07 12:05:48 UTC (rev 1315) @@ -5,9 +5,6 @@ datarootdir=@datarootdir@ datadir=@datadir@ -# for Python binding -defsdir=${datadir}/@PACKAGE@/python - Name: Tomoe Description: Tegaki Online MOji-ninshiki Engine Version: @VERSION@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 07:35:06
|
Revision: 1314 http://tomoe.svn.sourceforge.net/tomoe/?rev=1314&view=rev Author: makeinu Date: 2007-06-07 00:35:05 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Arrange indent of configure result output. Modified Paths: -------------- tomoe-gtk/trunk/configure.ac Modified: tomoe-gtk/trunk/configure.ac =================================================================== --- tomoe-gtk/trunk/configure.ac 2007-06-07 07:31:27 UTC (rev 1313) +++ tomoe-gtk/trunk/configure.ac 2007-06-07 07:35:05 UTC (rev 1314) @@ -199,8 +199,10 @@ echo echo " * Language Bindings" echo -echo " Python : ${python_available}" +echo " Python : ${python_available}" echo -echo " Use gucharmap : ${use_gucharmap}" -echo " Use gtk-doc : ${enable_gtk_doc}" +echo " * Other Features" echo +echo " Use gucharmap : ${use_gucharmap}" +echo " Use gtk-doc : ${enable_gtk_doc}" +echo This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2007-06-07 07:31:27
|
Revision: 1313 http://tomoe.svn.sourceforge.net/tomoe/?rev=1313&view=rev Author: makeinu Date: 2007-06-07 00:31:27 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Disable python binding it PYTOMOE_DEFSDIR is empty. Modified Paths: -------------- tomoe-gtk/trunk/ChangeLog tomoe-gtk/trunk/configure.ac tomoe-gtk/trunk/macros/python.m4 Modified: tomoe-gtk/trunk/ChangeLog =================================================================== --- tomoe-gtk/trunk/ChangeLog 2007-06-07 07:07:33 UTC (rev 1312) +++ tomoe-gtk/trunk/ChangeLog 2007-06-07 07:31:27 UTC (rev 1313) @@ -1,3 +1,8 @@ +2007-06-07 Takuro Ashie <as...@ho...> + + * configure.ac, macros/python.m4: Disable python binding if + PYTOMOE_DEFSDIR is empty. + 2007-06-07 Hiroyuki Ikezoe <poi...@ik...> * macros/python.m4, bindings/python/*, configure.ac, Makefile.am: Modified: tomoe-gtk/trunk/configure.ac =================================================================== --- tomoe-gtk/trunk/configure.ac 2007-06-07 07:07:33 UTC (rev 1312) +++ tomoe-gtk/trunk/configure.ac 2007-06-07 07:31:27 UTC (rev 1313) @@ -199,7 +199,7 @@ echo echo " * Language Bindings" echo -echo " Python : ${with_pygtk}" +echo " Python : ${python_available}" echo echo " Use gucharmap : ${use_gucharmap}" echo " Use gtk-doc : ${enable_gtk_doc}" Modified: tomoe-gtk/trunk/macros/python.m4 =================================================================== --- tomoe-gtk/trunk/macros/python.m4 2007-06-07 07:07:33 UTC (rev 1312) +++ tomoe-gtk/trunk/macros/python.m4 2007-06-07 07:31:27 UTC (rev 1313) @@ -56,7 +56,9 @@ PYTOMOE_DEFSDIR=`$PKG_CONFIG --variable=defsdir tomoe` AC_SUBST([PYTOMOE_DEFSDIR]) - + if test x"$PYTOMOE_DEFSDIR" = "x"; then + python_available=no + fi fi AM_CONDITIONAL([WITH_PYTHON], [test "$python_available" = "yes"]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |