[Opfc-developer 78] Re: indexed color -> RGB の変換問題

Back to archive index

Koji Otani sho****@bbr*****
2007年 9月 4日 (火) 18:16:27 JST


斉藤さん。
大谷です。
ありがとうございます。

SVNのリポジトリを修正しました。

From: Tatsuya Saito <saito****@mxd*****>
Subject: indexed color -> RGB の変換問題
Date: Mon, 3 Sep 2007 12:22:42 +0900
Message-ID: <20070****@mail*****>

saitou-t> TO:大谷殿
saitou-t> 
saitou-t> 齋藤@NECソフト新潟支社第五SIグループです。
saitou-t> いつもお世話になっております。
saitou-t> 
saitou-t> OPVP1.0のテスト中にindexed colorのビットマップデータで印刷不正が発生しました。
saitou-t> 原因はopvpStartDrawImage()のsourcePitchに渡される値と、実際に送られてくる
saitou-t> データのサイズに不整合があることのようです。
saitou-t> 
saitou-t> 印刷不正が発生したデータは、opvp_image_plane_data():L4014にきた段階で、
saitou-t> vinfo->width = 577
saitou-t> vinfo->height = 555
saitou-t> color_index == gs_color_space_index_Indexed
saitou-t> bits_per_pixel = 1
saitou-t> となっています。
saitou-t> L3816、3817で計算している、opvpStartDrawImage()のsourcePitchへ渡すadj_raster 
saitou-t> の計算結果は1732になります。
saitou-t>  adj_raster = (((24 * 577) + 31) >> 5) << 2
saitou-t>             = 1732
saitou-t> 一方、L4014で計算しているopvpTransferDrawImage()で渡すデータのサイズは、
saitou-t> data_bytes=73で来るため1752となります。
saitou-t>  data_bytes = (1 * 577 + 7) >> 3
saitou-t>             = 73
saitou-t>  dst_length = ((73 * 3 * 8) + 3) >> 2 << 2
saitou-t>             = 1752
saitou-t> このため、sourcePitchを元にopvpTransferDrawImage()で転送されたデータを
saitou-t> 処理すると不正になります。
saitou-t> 本来は、L4073同様各ピクセルあたり3バイトとしてdata_bytesを計算するべき
saitou-t> だと思います。
saitou-t> 
saitou-t> 修正パッチを作成して添付しましたので、お忙しいところ申し訳ありませんが、
saitou-t> ご確認をお願いいたします。
saitou-t> ESP GS8.15+修正したGluecodeで、NPDLドライバのOPVP1.0RC4対応版、OPVP0.2
saitou-t> 対応版、Canonさんのドライバ(WEBアップされているもの)で正しく印刷できることを
saitou-t> 確認しています。
saitou-t> #修正前は、NPDLドライバのOPVP1.0RC4対応版、Canonさんのドライバで
saitou-t> #不正な印刷となりました。
saitou-t> 
saitou-t> 以上、よろしくお願いいたします。
saitou-t> 
saitou-t> ------------------------------------------------
saitou-t> 齋藤 達也
saitou-t> NECソフト株式会社 新潟支社 第五SIグループ
saitou-t> ------------------------------------------------




Opfc-developer メーリングリストの案内
Back to archive index