18. 情報共有 LibOバグ修正4  
以下のアドバイスをメーリングリストで頂きました。
メーリングリストは、以下のページで登録できます。
今回、「discuss@ja.libreoffice.org: プロジェクトおよびコミュニティについての議論」
を使用しました。
https://ja.libreoffice.org/get-help/mailing-lists/

★Diffの取り方

libvisio のリポジトリの下で修正したなら、単に
$ git diff
するのが一番簡単です。(gitのHEADにコミットしてあるソースと、
ワーキングセット……修正中でコミットしていないものとの差分
を見るというコマンド)


★条件文をスッキリさせる

ここはstd::maxがオススメです。
styleProps.insert("draw:marker-end-width", std::max(w, 0.05)); 


★できたパッチファイル。

diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp
index 9de0d30..a3cd0f1 100644
--- a/src/lib/VSDContentCollector.cpp
+++ b/src/lib/VSDContentCollector.cpp
@@ -2277,13 +2277,15 @@ void libvisio::VSDContentCollector::_lineProperties(const VSDLineStyle &style, l
   {
     styleProps.insert("draw:marker-start-viewbox", _linePropertiesMarkerViewbox(style.startMarker));
     styleProps.insert("draw:marker-start-path", _linePropertiesMarkerPath(style.startMarker));
-    styleProps.insert("draw:marker-start-width", m_scale*_linePropertiesMarkerScale(style.startMarker)*(0.1/(style.width*style.width+1)+2.54*style.width));
+    double w =  m_scale*_linePropertiesMarkerScale(style.startMarker)*(0.1/(style.width*style.width+1)+2.54*style.width);
+    styleProps.insert("draw:marker-start-width", std::max(w, 0.05));
   }
   if (style.endMarker > 0)
   {
     styleProps.insert("draw:marker-end-viewbox", _linePropertiesMarkerViewbox(style.endMarker));
     styleProps.insert("draw:marker-end-path", _linePropertiesMarkerPath(style.endMarker));
-    styleProps.insert("draw:marker-end-width", m_scale*_linePropertiesMarkerScale(style.endMarker)*(0.1/(style.width*style.width+1)+2.54*style.width));
+    double w =  m_scale*_linePropertiesMarkerScale(style.endMarker)*(0.1/(style.width*style.width+1)+2.54*style.width);
+    styleProps.insert("draw:marker-end-width", std::max(w, 0.05));
   }
 
   int dots1 = 0;


★パッチを当てる際の参考

もちろん workdir/ 以下を直接変更するのはあくまで開発上の一時的な手段で、
正攻法としては
external/libvisio/UnpackedTarball_libvisio.mk
にあるように、変更したい箇所をパッチとして登録すればいいと思います。


前へ次へ