[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003576] color_bar メソッドでカラーバーが描かれないときの挙動



gphys 開発グループ御中,

名古屋大学の辻野です.


gphys-1.2.2 の dclext.rb 内のカラーバー描画メソッド
color_bar の挙動についてですが,
このメソッドはカラーで描く変数の最大最小値を比較し,
これらの値が同じ場合, カラーバーを描かないようになっています.

しかし, color_bar 内で最大最小値の比較をする前に設定された
文字の大きさ等が元の値に戻されることなくメソッドを抜けるので,
カラーバーが描かれない場合に限り, color_bar を複数呼び出すと,
その都度グラフ全体の文字の大きさが変わってしまいます.

これはそういう仕様なのでしょうか.

もし意図した挙動でないのであれば, メソッドを抜ける直前に
文字設定等を元に戻す処理を施したパッチを以下に添付致しましたので,
修正して頂ければと思います.

意図した挙動でしたら申し訳ございません.

-- 
------------------------
Satoki TSUJINO
Hydrospheric Atmospheric Research Center,
Nagoya University (JAPAN),
Furo-cho, Chikusa-ku, Nagoya-city,
ZIP : 464-8601
TEL : 81-52-789-3494
E-mail : satoki@xxxxxxxxxxxxxxxxxxxxxxxxx
URL : http://www.rain.hyarc.nagoya-u.ac.jp/~satoki/index.html
------------------------
--- dclext.rb.org	2012-06-26 19:45:53.000000000 +0900
+++ dclext.rb	2012-06-26 19:45:39.000000000 +0900
@@ -1833,6 +1833,14 @@
       if levels[0] == rmiss
         inf0 = true
         dummy1,dummy2,ipat0 = DCL::ueqtlv(1)
+
+##### modified by satoki
+        DCL::uziset("indext1",indext1_bk)
+        DCL::uziset("indext2",indext2_bk)
+        DCL::uziset("indexl1",indexl1_bk)
+        DCL::uzrset("rsizel1",rsizel1_bk)
+##### modified by satoki
+
         return if levels.length==2
       else
         inf0 = false
@@ -1840,6 +1848,14 @@
       if levels[-1] == rmiss
         inf1 = true
         dummy1,dummy2,ipat1 = DCL::ueqtlv(nton)
+
+##### modified by satoki
+        DCL::uziset("indext1",indext1_bk)
+        DCL::uziset("indext2",indext2_bk)
+        DCL::uziset("indexl1",indexl1_bk)
+        DCL::uzrset("rsizel1",rsizel1_bk)
+##### modified by satoki
+
         return if levels.length==2
       else
         inf1 = false