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> ------------------------------------------------