Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


皆様
八木 です。

長らく進展の無い Bug 37129 について、不具合を解消しようとしていますが躓 いています。
https://bugs.freedesktop.org/show_bug.cgi?id=37129
私の調べた事や考えた事を書きます。宜しければご意見等を頂ければと思います。

[経緯]Cédric さんは、パッチ(Clac の罫線を drawinglayer で描画する修 正)を撤回する意思はない。    よって、この不具合を修正するためには、drawinglayer を使って点線/ 破線を正しく描画する必要がある。

[不具合の原因]drawinglayer を使った点線/破線の描画には、現状、3つの不 具合があると思われます。
   不具合1:細い点線/破線を描画すると、実線で描画される。
        ただし、これは次の不具合2を回避するためと思われます。
   不具合2:細い点線/破線を描画できない(何も描画されない)。
        不具合1を回避する修正を加えたとしても、細い点線/破線が 描画されない不具合があります。         パッチ適用後に、細い点線/破線の描画時にアンチエリアス制 御が行われなくなった事が原因と推測されます。
        (パッチ適用前には処理がありました)
   不具合3:描画される点線/破線の点の長さ、間隔がおかしい。
        太い点線/破線で出ている不具合です。
        デバイスの解像度や画面の拡大/縮小率に関わらず、固定され たドット数で点線/破線を描画するのが
        原因と思われます。
        svtools::GetDashing が固定の値を返すのが直接的な原因と思 いますが、         このメソッドを BorderLinePrimitive2D::create2DDecomposition 内の一連の処理内で呼び出すのが
        適切なのかどうなのか...。

[不具合の解消方法]
   不具合1:BorderLinePrimitive2D.cxx 内の、 BorderLinePrimitive2D::create2DDecomposition にある
        処理を修正する(場合分け処理の修正)。
   不具合2:vclpixelprocessor2d.cxx において thick line 用に用意され ている mnPolygonStrokePrimitive2D が         点線/破線描画においても使える様なので、これを利用してア ンチエリアスをキャンセルして描画する。
   不具合3:良い案がありません...。
        svtools::GetDashing 呼び出し時に、画面上の1ドットが何 TWIP 相当かの情報があれば、         画面/用紙に合わせた点線/破線の長さを計算できると思われ ます。         create2DDecomposition メソッドに渡される、 geometry::ViewInformation2D 引数から
        情報を得られるか調べて見ましたが、私には分かりませんでした。
        呼び出し元の ScOutputData オブジェクトには、そのものズバ リな情報がありますが、
        drawinglayer からは使わない方が良いように思えます。
 
長々と失礼致しました。
ご意見、ご指摘等頂ければ幸いです。

(11/06/07 7:29), yagit@mknada.sakura.ne.jp wrote:
安部 様

ありがとうございました。凄く助けられました。

bugzilla にてコメントを追加しました。

https://bugs.freedesktop.org/show_bug.cgi?id=37129


(11/06/07 2:26), Takeshi Abe wrote:
八木さん

早速のご返事ありがとうございます。

On Tue, 07 Jun 2011 00:18:14 +0900,"yagit@mknada.sakura.ne.jp" <yagit@mknada.sakura.ne.jp> wrote:
リグレッションの原因と思われる修正は、こちらでした。

  commit bf9aaaec78793e1572df1812308c7aae2cb9f4b3
  Author: Cédric Bosdonnat<cedricbosdo@openoffice.org>
  Date:   Tue Feb 22 15:26:34 2011 +0100

     Use svx::frame::DrawRange with the drawinglayer in calc now
なるほど、これはかなり絞り込まれていますね。

次のようにコメントしたいと考えています。
推測の理由を入れました。
拙い文だと思いますので、おかしい部分があればご指摘頂ければ嬉しいです。
問題ないと思います。

-- Takeshi Abe

ーーーーーコメント案ここからーーーーー
Temporarily, how about reverting a part of the patches?


I'm guessing that this problem occurs because of the following commit.

   Commit bf9aaaec78793e1572df1812308c7aae2cb9f4b3
   "Use svx:: frame:: DrawRange with the drawinglayer in calc now"

Because in Calc, this problem is solved in the following modifications.
----- here -----
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -1232,7 +1232,7 @@ void ScOutputData::DrawFrame()
          {
              size_t nRow2 = nRow1;
while( (nRow2 + 1<= nLastRow)&& pRowInfo[ nRow2 + 1 ].bChanged ) ++nRow2; - rArray.DrawRange( pProcessor, nFirstCol, nRow1, nLastCol, nRow2, pForceColor ); + rArray.DrawRange( *pDev, nFirstCol, nRow1, nLastCol, nRow2, pForceColor );
              nRow1 = nRow2 + 1;
          }
      }
----- now  -----
ーーーーーコメント案ここまでーーーーー





--
Unsubscribe instructions: E-mail to discuss+help@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.