gdi++.dll @ wiki gdi++.dll


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。






本家版(最新のみ)

stable version (gdi++20060927)

本家ダウンロードページにて。
784 名前: ◆0x0D/0x20I 2006/09/27(水) 12:00:00 ID:kdcoJI+4
  • GetTextExtentPoint32()が除外フォントでも処理していたのを修正
  • IsValidDC()関数を新たに作って、画面用のDCかどうかをチェックするようになった
  • 印刷時に崩れる問題が解決しているかもしれない)
  • >>501氏によるソースの整理
  • 狩野氏によるエッジ強調フィルタの搭載(Enhanceオプションが追加されています)
  • gdi++.dllがGetMsgProc()をエクスポートする仕様に(>>654氏=>>168氏)
  • デフォルトでFixedSysとMarlettを除外するようにしておく
ここらへんで、とりあえずまとめておきました。サイトにうpしてるのは、ある程度stableなnightly>build(今日はお昼だけど)って感じです。
大勢の人が関わってもらえるようになってきて、現状の流れで漏れのサイトにうpし続けるっていうのもちょっとアレだと思うし、そろそろライセンスとか権利の問題を明確にしておかなきゃいけないんだろうと思う。
779
779 名前:名無し~3.EXE 2006/09/27(水) 11:24:52 ID:o91aaQSC
gVimで表示がおかしくなります。

http://www.uploda.org/uporg529423.png
右は0924版で表示が崩れ、左は0926版(0925版も一緒)でAA効いてません。
フォントはMSゴシック10ポイント、設定はデフォルトのini、SSはVista RC1ですがXP SP2でも状況は同じでした。
他のアプリでは問題ないんですが・・・
うーん、スムージングが効いてないですかぁ。0924でズレってるってことはExtTextOutA周りの問題ってことだけど、うーん、XP以降のバージョンではオリジナルのExtTextOutAがExtTextOutWを呼ぶ計算になってるんだけど・・・ちょっとチェックしてみます。
780
780 名前:名無し~3.EXE 2006/09/27(水) 11:25:00 ID:hvd1nGGx
Sn でつくってみた。なにか設定が必要なら言ってください。
アクセス制限に引っかかることはないと思いたい。

ttp://free.flop.jp/gdi++/
うわ、ロダができてる。乙。

800 名前:名無し~3.EXE 2006/09/27(水) 14:39:27 ID:a1jtWTIq
784
Firefoxで選択範囲がずれてる件(>>758)は治りました。乙!

ただ、textareaに入力してるとだんだんおかしくなる
http://free.flop.jp/gdi++/src/gdi0003.png

888 名前:名無し~3.EXE 2006/09/27(水) 20:16:57 ID:amHmqYMt
784
のバージョンだとEnhance=1以上にすると
シャープネスノイズが出るようになってます。
20pt程度のフォントサイズで適用するとよくわかるかも。
個人的には1を基準とするなら0.2くらいの効果が好みです。

あと、Quality=4にすると対応していないマシンのせいか
適用したアプリが全て強制終了するように。。。
AllGdiで実行したのでOSを巻き込んで死亡(;´д⊂

スペッコ:WinXP SP2、AthlonXP、1024M




以下改良版(上に行くほど最新)


容量規制の為FreeType版は【gdi++.dll FreeType】のページへ移しました。



gdi0261 (常駐GUI)

  • http://free.flop.jp/gdi++/src/gdi0261.zip
gdippManager ver.1105
ver.1029 ベース

機能の変更点
 ・GUIつけてみた
 ・DLL側の関数で代用できるケースはまずそちらを使うようにした
 ・細かい修正とか
 ・VS2005EEのプロジェクトつけた *.sln / *.vcproj

 ※GUI注意
  ・セクションがない、キーがない、値がない(一部除く)項目は編集できず出力もしません
    無条件に出力するとDLLが対応してないINI項目がふえちゃうから
  ・数値を自由に指定できる項目は-1~99で指定できます
    「基本的には」DLL側で最小値/最大値に丸めてるので
    実際にどの項目がどの値まで有効値とするのかあまり見てないです
  ・Individualセクションにダミーでもデータ入れておかないと、
    新旧どっちの書式かわからないので警告出てうざいです

 ※FreeType版
  ・そのうちに explorer.exe がハングするので事実上利用不能
   右クリックメニューとかでハングする



gdi0147 (常駐 gdippManager)

692 名前:名無し~3.EXE 2006/10/28(土) 02:21:10 ID:SN2pkdqO
常駐
システムディレクトリとexeサブディレクトリ内にある複数のDLLを管理できるようにした
でもGUIは実装してない

※Studentがイチから書き直しているので利用は警戒しる



gdi0118 (gdi0116のバグ修正+おまけ改)

883 名前:168 2006/10/06(金) 10:09:12 ID:iQtt8ZFA
868(gdi0116)で落ちるバグ取れたかも。__assume入れてたの忘れてた
ついでにおまけに少し手を加えますた。
多重起動とかバージョン情報のハイパーリンクとかww



gdi0116 (gdi0093のバグ修正+Pico氏(gdi0112)の縮小アルゴリズムを組み込み)

868 名前:名無し~3.EXE 2006/10/06(金) 01:47:44 ID:iQtt8ZFA
漸くデバッグ完了したのでとりあえず暫定版ビルドしてみますた

多分>>644,>>655,>>659,>>712あたりの修正とPico氏の>>834ぐらい
ってか日が経ちすぎて忘れたorz
644 名前:名無し~3.EXE 2006/10/01(日) 19:19:42 ID:2rzB94Gp
とりあえずDrawStateもフックして強引に灰色テキストを描画できるようにしてみたけど、なんかイマイチ
http://free.flop.jp/gdi++/src/gdi0098.png

639
漏れの環境だとそのアドレスには既にINDICDLL.DLLとかいうのが読み込まれててバッティングするけど

655 名前:名無し~3.EXE 2006/10/01(日) 22:05:23 ID:2rzB94Gp
うpろだ100記念w

644のやつはアイコンとかが灰色で描画されてなかったので他の方法を模索してみた。

とりあえずDST_TEXTとDST_PREFIXTEXTは何とかなったけど、DST_COMPLEXはもうこれ以上無理のような気がしてきた
http://free.flop.jp/gdi++/src/gdi0100.png

654
んーotfか・・・とりあえずDrawStateの問題が片付いたら調べてみます。
片付きそうにないけどorz

659 名前:名無し~3.EXE 2006/10/01(日) 23:01:51 ID:2rzB94Gp
DrawStateとは関係ないけどこれ直してみますた。
http://free.flop.jp/gdi++/src/gdi0101.png

これで1行下にズレてる系のバグは全部直ってるはず。

712 名前:名無し~3.EXE 2006/10/02(月) 22:44:45 ID:dtRB8HD5
スタート→プログラムにあるIEのショートカットをgdi++.exeで開けない気がする

あと理由は知らんけどダイアログがズレるバグとwin2kでメモリがreadに・・・のバグはなぜか出てない模様(環境によっては出てるかも)

おまけフォルダにサービス化セットあり




gdi0112 (MMX対応など)

834 名前:Pico ◆PicoKHZGNI 2006/10/05(木) 07:47:55 ID:3uBaMu8k
意外とMMX版に需要が有るようなので作成してみました。

  • Qualityをちゃんと読むようになりました。
 Quality=7 の時のみSSE2やMMXを使用します。
 それ以外(0~6,11,15)の場合は、Cのコードで動きます。割と遅いですorz

  • MMXに対応しました。いやぁ命令の名前が共通ってのは便利だな。
 デフォルトではSSE2以上向けのgdi++.dllが入っているので、
 MMX対応CPUならmmxフォルダ、そうでないならgenericフォルダの物と置き換えてください。

  • ズレとかはまだ全然直っていないはず。



gdi0110 (gdi0102 + 735Image)

832 名前:名無し~3.EXE 2006/10/05(木) 02:36:25 ID:qwK8X3LA
常駐Manager とりあえずプレビュー機能と適用ボタンまでINI処理を結構書き換えてしまったのでINIに保存されてねーぞゴルァ! みたいなのがあったらごめん

735に触発されて作ってたんだけど今の今まで要旨が "プレビュー" のほうだと思ってたせいで "Managerだけに適用" をすっ飛ばしてました('A`)
735 名前:名無し~3.EXE 2006/10/03(火) 16:36:33 ID:U1YlA+Z8
gdippMangager.exeに適用ボタン、またはgdippManager.exeだけに変更を加えてプレビューできる機能とか出来ないかな?

こんな感じに
http://free.flop.jp/gdi++/src/gdi0103.png
まだ全体をころころ変えてるとエラー出る場合があるのであったらいいなというだけです



gdi0109 (up105のSSE無し版)

825 名前:369 2006/10/05(木) 00:32:32 ID:KJEE4Gl9
778
SSE使わないようにしてみたが動くか?
縮小が3倍、全体で見ると1割ぐらい遅くなってるけど。



gdi0107 (gdi0104-エンハンスフィルタの改良版-のバグ修正)

766 名前:67 2006/10/04(水) 02:49:30 ID:vnJAecEO
エッジ強調フィルタの改良版をアップローダに上げました。今回は、文字のいちばん外側のピクセルにはフィルタを掛けず、内側にはきっちり今まで通りの処理を施すようにしてあります。
ベースバージョンは公式の20060927です。

754
754 名前:名無し~3.EXE 2006/10/03(火) 22:26:21 ID:ylMzz5mE
すまん、アイデアだけ。

①現状の単純平均から重みつき平均を使う。
111
141
111 これでもやっと感を減らしつつ、出すところは出す。どんなフィルタがいいんだろ?

②現在の平均を取る部分の変わりに、ルックアップテーブルを作る。
LUT[0-256*16]
データサイズはせいぜい
もしガンマ補正が必要ならば、LUT上にかける。
これで除算が無くなるから、そこそこ二次キャッシュがあればスピードも上がる?
縮小時に重みつき平均を取ると、同じ太さの線が(縮小後の)ピクセルのまん中にある時と橋にある時で濃さが変わってしまうのが難点です。2つのピクセルの境界に沿って線が引かれているような時は、片方のピクセルにかかっている分を無視して、隣のピクセルに足し込んでやると文字全体の濃さが変わらずにコントラストが改善できるんですが、とても重い処理になりそうです。
755
755 名前:名無し~3.EXE 2006/10/03(火) 22:43:03 ID:EozvE0/P
ラプラシアンフィルタを使ったシャープネスフィルタがいいかも

laplacian:
0 1 0
1 -4 1
0 1 0

double rate = /* 0.0 - 1.0 */;
double result = cm->i() - rate*(ct->i() + lm->i() + rm->i() + cb->i() - 4*cm->i());
今までのフィルタがまさにラプラシアンをめんどくさいやり方で実装したものです。-1 2 -1 のフィルタを縦横にかけて中間結果を別々に持ち、最後に総和を取っています。
758
758 名前:名無し~3.EXE 2006/10/03(火) 23:53:17 ID:PbXGshjl
754
ルックアップテーブルは考えた。
描画エリアの背景を拡大してフォントレンダラに送り込んで描画後に縮小だ。
白地に黒とかなら問題ないんだが、ガンマ補正入りルックアップテーブルなぞ使ったら背景の影響を受けるし、文字の背景画像にも影響を与えるんだなコレが。
常に白黒で書いて好きにガンマ補正をかけてから、背景との合成は自前で計算したほうがいいかも。8倍に拡大描画すれば、1の立ったビットの個数を表引きで求められるので、それなりに速く実装できそう



gdi0105 (1bit+アルファブレンド(注:要SSE2、きわめて未完成))

770 名前:Pico ◆PicoKHZGNI 2006/10/04(水) 07:11:53 ID:hsbLqC/N
0079版をベースにして、1bitで8x8倍で描画して、アルファブレンドさせてみました。
SSE2を使った縮小アルゴリズムを書いてみたら、かなり軽くなった気がするので、まだアルファ版以下の完成度ですが、良かったら試してみてください。

注意:
△とても未完成です。
△Quality、Enhanceの値は無視しています。
△8*8なので64階調です。
△SSE2専用です。
△かなり大量にコードが変更されています。新しいバグが入っているかも。



gdi0102 (gdi0097の環境設定拡張版)

708 名前:名無し~3.EXE 2006/10/02(月) 22:00:24 ID:WNYntwRQ
guiで環境設定のExcludeModuleとIndividualにも対応してみました。

機能の変更点
 ・環境設定のExcludeModuleとIndividualにも対応
 ・Weightの最大値をとりあえず32に変更

ソースの注釈
 ・個人的にリソースいじるのにVC6を使うので、それ用のプロジェクトファイルも追加。
 ・INIパラメータ用の変数を動的に取得して、設定後解放するようにした。
 ・他いくつか細かい修正。



gdi0097 (トレイ格納タイプのgdi.exe gdi0060+gdi0061)

630 名前:名無し~3.EXE 2006/10/01(日) 16:49:31 ID:h1TSe0i6
常駐gdi 60(gdi0060)ベース+61(gdi0061)のGUI

基本的にはくっつけただけだけど変更点は/***/で検索してたどってね
あとVSEEならプリコンパイル済みヘッダ機能使えるファイル構成にした



gdi0093 (ソースをシェイプアップ?20060923版相当に戻してみた)

508 名前:名無し~3.EXE 2006/10/01(日) 02:47:10 ID:2rzB94Gp
501
501 名前:名無し~3.EXE 2006/10/01(日) 01:37:31 ID:9nVDSxVX
0922改造版レベルまでソースをシェイプアップしたまへ
ソースをシェイプアップ、の意味が判らんが

とりあえず20060923版相当に戻してみた
ここ最近の追加機能が全く使えんけどソースは見やすくなったと思うw

20060923版と比べて
  • 20060927版までのバグ修正
  • Jane Doeなどでズレるバグ修正
  • UseSubPixel=1のときは常にサブピクセルレンダリング
  • ビットマップフォントは常にExclude
  • キャッシュ、TLS

使えるもの
  • Quality
  • Weight
  • UseSubpixel
  • SubpixelDirection
  • Exclude

使えないもの
  • Enhance
  • MaxHeight
  • ForceAntialiasedQuality
  • ExcludeModule
  • SSE2、SSE3用縮小ソース
  • allgdi++、gdiなど常駐機能全て


gdi0088 (サー(ry )

412 名前:名無し~3.EXE 2006/09/30(土) 17:39:32 ID:4i2JaSpG
http://free.flop.jp/gdi++/src/gdi0081.png
むしゃくしゃしたのでやった。今も反省していない。

確認環境:win2k on VMware Playerのみ

  • gdisetup.exeを実行すると登録できる
  • 削除する時もgdisetup.exeを使用する
  • これとallgdi++.exe、gdi.exe等を併用したときの動作は無保証
  • 付属のgdi++.dll以外での動作も無保証
  • 何が起こっても一切無保証



gdi0079 (20060927+allgdi+ExcludeModule+TLS その2)

中身は多分20060927+allgdi+ExcludeModule+TLSぐらい

  • ズレるバグ修正(OpenJaneDoe、part2>>82で確認、それ以外は不明)
  • ビットマップフォントはExcludeの設定に関わらず強制的にExcludeする
  • gdi++、allgdi++相当の機能をdllに内包
  • gdi++.exe経由で起動したらExcludeModuleは読み飛ばすようにした
  • IMPL_ExtTextOutWをいろいろ整理
  • UseSubPixel=1のときQualityの設定を無視(Quality=2とみなす)
  • TLS周りでメモリリークしてたのを修正
  • StringHashのignoreCaseの動作が逆だったのを修正

  • gdi++
 gdi++.exe又はgdi++.vbsを使うと従来通りの動作
 以下のコマンドも利用できる
 rundll32.exe "gdi++.dll",GDIPlusPlus_RunDLL <file> argument ...

  • allgdi
 allgdi++.vbsを実行すると起動中の全プロセスにgdi++.dllが読み込まれる
 allgdi+p.vbsで常駐モード(もう一度実行すると常駐解除)

 それぞれ以下のコマンドを実行しても同じ事が得られる
 rundll32.exe "gdi++.dll",AllGDIPlusPlus_RunDLL
 rundll32.exe "gdi++.dll",AllGDIPlusPlus_RunDLL -p

  • ExcludeModule
 allgdi++使用時のみ有効。特定のプロセスにgdi++.dllを読み込ませなくする
 Exclude"Process"ではないので↓とかも可能

 [ExcludeModule]
 hogehoge.dll



gdi0076 (gdi0075のズレるバグ修正)

384 名前:名無し~3.EXE 2006/09/30(土) 12:26:57 ID:4i2JaSpG
  • >>350(gdi0075)でズレるバグ修正
  • UseSubPixel=1のときQualityを無視

<チラシの裏>
ズレるバグって浮動小数点の丸め誤差かよorz
</チラシの裏>



gdi0075 (20060927+allgdi+ExcludeModule+TLS)

350 名前:名無し~3.EXE 2006/09/30(土) 01:01:43 ID:4i2JaSpG
今日のGDI++w
中身は多分20060927+allgdi+ExcludeModule+TLSぐらい

  • ズレるバグ修正(OpenJaneDoe、GreenPad、>>82で確認、それ以外は不明)
82 名前:名無し~3.EXE 2006/09/28(木) 08:56:41 ID:75MYieLo
OpenJaneDoeのソースを元にして描画がズレるのを再現してみました。
時間のある人はこれ使ってgdi++.dllをデバッグしてください。
http://free.flop.jp/gdi++/src/gdi0032.zip
  • ビットマップフォントはExcludeの設定に関わらず強制的にExcludeする
  • gdi++、allgdi++相当の機能をdllに内包
  • gdi++.exe経由で起動したらExcludeModuleは読み飛ばすようにした
  • IMPL_ExtTextOutWをいろいろ整理

ソースは付けていません(弄りすぎたし派生バージョン多すぎてpatch作っても意味無さそう)
が、漏れにソースくれればpatchをマージして送り返しますw



gdi0061 (gdi0029+GUI)

296 名前:名無し~3.EXE 2006/09/29(金) 18:26:49 ID:Thxs4ylL
Win32SDK でGUI作ってみた。
ベースはgdi0029

こういうのへの参加が初体験でドキドキ・・・

gdi0029.zip をベースにINIファイル用GUIを追加。
名前もgdipp.exeに変更しました。

  • メニューの「INIファイルを開く」を「環境設定...」に変更

 ダイアログが開いて、各設定値を変更できます。
 対応しているのは基本的にstable版のもの。

 *[Exclude]セクションは一度クリアしてから追加しているため、途中にコメント行があっても消えてしまいます。

 OKボタンでダイアログを閉じると、新しい設定値でINIファイルを更新します。
 更新内容を反映するために gdi++のフックをやり直しています。
 *このやり直し方がこれで問題無いかは、今いち自信無かったり・・・



gdi0060 (トレイ格納タイプのgdi.exe)

267 名前:名無し~3.EXE 2006/09/29(金) 15:47:40 ID:uT1dBezs
264
お疲れさんです

gdi.exe(ちなみに常駐ソース起こしたのは前スレ742:◆0x0D/0x20I氏

とりあえずDLLのバージョンが表示できたり
DLL読んでないときに操作できるようにしてみた



gdi0052 (gdi0049 修正版)

215 名前:555 2006/09/29(金) 03:46:30 ID:l/FxUuFO
207,>>209
207 名前:名無し~3.EXE 2006/09/29(金) 02:00:58 ID:S45t8QPf
ExcludeModule効かないです。ウィルスソフトの数個のプロセスがunlockerでもロック解除出来なくて、再起動するまでロックしたままなので死活問題なんです。

209 名前:名無し~3.EXE 2006/09/29(金) 02:15:53 ID:ad2vtG2/
206のはgdi0025ベース(ExcludeModule効かない)だからかな。
Enhanceはいい感じになりますた。メニュー部分がおかしくなるけど…。

207
普通にD&Dとかで、指定アプリのみ++適用で我慢するしか。
一度allgdiやっちゃったら病み付きになるのは仕方ないけどw
ExcludeModule修正しました。
Excludeも148のを取り込んでみた。
148 名前:名無し~3.EXE 2006/09/28(木) 18:06:00 ID:+FMMBxuw
ほかにもビットマップって結構あるんだね

[Exclude]
メイリオ
Meiryo
Marlett
System
FixedSys
Modern
MS Sans Serif
MS Serif
Roman
Small Fonts
Script
Courier

218 名前:名無し~3.EXE 2006/09/29(金) 10:56:30 ID:2RRtMqFQ
215
Quality=1 のとき Enhance= を1以上にすると落ちる。
あと、void Cache::ProcessTerm() で
voidなのにreturnがあると怒られる。



gdi0049 (gdi0025+194+ソース分割)

206 名前:555:2006/09/29(金) 01:51:55 ID:l/FxUuFO
gdi0025.lzh をベースに 194(gdi++20060929-enhance) を取り入れてソースを分割したもの
一応、SSE, SSE2 版付き。PGO 下のは無いです。

後の修正は builderscomment.txt 参照のこと
余計なお節介だったらごめん。これにてたぶん名無しに戻ります。



gdi++20060929-enhance (>>104-106の修正)

194 名前:67 2006/09/29(金) 00:45:24 ID:b1ozCFz3
104-106
104 名前:名無し~3.EXE 2006/09/28(木) 12:49:39 ID:czObJZg9
http://free.flop.jp/gdi++/src/gdi0035.png
別なバグが発生したようです

105 名前:名無し~3.EXE 2006/09/28(木) 12:49:48 ID:4Y3odhPr
103
選択文字列がおかしくなってます。

106 名前:名無し~3.EXE 2006/09/28(木) 12:50:54 ID:Ojx0uxHz
104
ファミコンゲームの画面かと思った。
修正しました。

背景が透明な場合をちゃんと区別するようにしたので、これで直ったはずです。Enhance 有効のときだけ出るバグはもうないという希望的観測を持っております。

あとは画質の改善 (今は o が八角形ぽく見える) や高速化を考えていきたいと思っております。では。

199 名前:名無し~3.EXE 2006/09/29(金) 01:04:15 ID:F1gcbA5c
194
Live2ch でぐりぐりスクロースしてもレインボーカラーがでなくなった.GJ!

Enhance = 0 と Enhance が1以上のときでメニューバーの表示がグレーアウトしているときの品位が結構違うので今後の課題として取り組んでほすい



gdi0038 (エンハンサの修正 SSE2 & Normal)

164 名前:名無し~3.EXE 2006/09/28(木) 22:16:08 ID:rkTHKpkV
amd系のcpu使ってる人はnormalだとふつーにうごくかも

(buiderscommentより)
今回は2つ作ってみました。
エンハンサの修正をとりこんでます。

sse2ディレクトリにはいってるのはicc9.1でsse2持ってるプロセッサに対して最適化してます。
normalディレクトリに入ってるのはvc8.0でふつうに最適化かけたやつです。

(付属gdi++.iniより)
generalセクション
基本機能の設定をします

excludeセクション
適用しないフォントを列挙してください。たぶん32フォントまで

individual(仮)セクション
列挙されるときのフォント名を正確に書かないとだめっぽい
スペース入ってるのはめんどいね。
ウェイトを指定するフォントを列挙してください。たぶん32フォントまで

excludemoduleセクション
allgdi+p.exeを使用する際にインジェクションしないプロセスを列挙してください。たぶん32プロセスまで。




gdi++20060928-enhance (バグ修正)

67 名前:前スレ672 2006/09/28(木) 07:18:19 ID:SkKHpb6+
修正版できました。

バグが出ないことを最優先にして修正しました。
  • バグ「レインボーエフェクト」を修正 (ビットの並びが BGR なのを RGB と勘違いしていた)
  • static な配列を書き換えるのをやめ、比較演算を行うようにした (そのぶん遅い)
  • 色情報が正しく取れていない (前景色と背景色が同じ) 場合、出力色空間の制限をオフ。
  • Enhance の設定できる値を 0~9 に増やし、全体に弱くした。
  • サイズによってエッジ強調の強さを変える小細工をとりあえず停止した。



gdi0031 (gdi++ GUI)

58 名前:名無し~3.EXE 2006/09/28(木) 04:21:05 ID:drc9K0aW
即席GUI



gdi0029 (トレイ格納タイプのgdi.exe)

45 名前:名無し~3.EXE 2006/09/28(木) 02:43:34 ID:SlyLH6Ox
17
17 名前:名無し~3.EXE 2006/09/28(木) 01:07:38 ID:NR4yXAMz
常駐のgdi.exeからiniの設定が出来たら素敵。
アイコンがいい感じなので、もうちょっと発展して欲しいなぁ…
DLLディレクトリを開く・INIを開く・ダブルクリックで有効/無効を切り替え
を追加

新規に加工したところは /***/
555氏みたいにバージョン情報埋め込もうかとおもったけどVSEEだとリソース生成できないのよね



gdi0027 (944 をベースにソースを整理してみた。)

43 名前:555 2006/09/28(木) 02:31:14 ID:VpFSBTN6
前スレ944(gdi0021) を元にソースを分割したりいろいろしてみた。
もしよければ取り入れてください。arch:SSE, arch:SSE2 指定のビルドも添付しました。

  • 944(gdi0021)のソースを元にソースファイルを分割整理。
  • Cache, Settings をクラス化。グローバル変数 →クラスの static 変数 ってだけです。
  • Quality の上限、下限チェックを修正。
  • リソースファイルの取り込み
  • malloc/free → new/delete[]、memcpy → ZeroMemory
  • Makefile にリソースファイルのコンパイル、リンクを追加
  • Makefile に VisualC++ 8 による SSE / SSE2 最適化を追加
  • Intel C++ Compiler 用のソース、Makefile を分離(ICC 持ってないので未確認)
  • make 用のバッチファイルを添付

111 名前:名無し~3.EXE 2006/09/28(木) 13:38:13 ID:yQRtr3PG
gdi0027のGDI++.DLL(2006/09/28 02:27)をLive2chでうごかしてみた


設定は以下のとおり。
[General]
Quality=3
Weight=8
Enhance=2
MaxHeight=0
UseSubpixel=1
SubpixelDirection=0
ForceAntialiasedQuality=1
[Exclude]
FixedSys
Marlett
メイリオ
Meiryo
[Individual]
[ExcludeModule]

環境
PenM + Xp SP2 + RADEON X300 + 2048x1536モード



gdi0025 (gdi0021+953+951+最適化)

40 名前:前スレ801 2006/09/28(木) 02:13:32 ID:rkTHKpkV
33
もうやっちゃった・・・
33 名前: ◆0x0D/0x20I 2006/09/28(木) 01:58:20 ID:fkDxjKfA
Osakaフォントスレで、へた字を移植する予定だったけど、だいたい道筋がついて、BDFエディタを作りかけて放置してあることに気づいた。最近、そっちの方がむしろ気になってる漏れがいる。

ま、そっちは置いといて、今のgdi++.dllの当面の目標は、
 ・ズレ修正(結構厄介そうな悪寒)
 ・allgdiを仕上げて同梱
 ・縦書き対応
だいたい、これくらいかな?最適化の問題は付いて回ると思う。エッジ強調やガンマ補正である程度の品質向上は望めるだろうけど、劇的な変化はちょっと難しいだろうから、今のgdi++.dllが一段落ついたら、FreeType2を使ってレンダリングする方向で逝くべきかもしれない。あくまでこれは妄想だけど('A`)

後で前スレ>>944(gdi0021)と>>951(gdi0023)をマージさせて頂いて、サイトにうpしておきます。
28
むしろ、たいした設定項目もないから、GUIを用意してもいいんじゃないかな。
VBで良ければパパッと作れるけど、SDKはマンドクセ('A`)

前スレ944(gdi0021)に前スレ953の再修正を加えました。
また、前スレ951(gdi0023)のスレッドローカルストレージパッチを取り込みました。
P4+SSE2, later or compatible processor向け最適化(w/PGO)

お休みなさい __o_

SSE2に最適化されてるかわからないビルド
今回もPGOしました。
スレの>881(gdi0018)さんのパッチ見てこちらのビルドにもGetMsgProc()を追加しました。
ExcludeModuleセクションパッチを取り込みました。

プロファイル取ったときの設定はこんな感じです。
[General]
Quality=3
Weight=1
Enhance=0
MaxHeight=0
UseSubpixel=0
SubpixelDirection=0
ForceAntialiasedQuality=1

流し読みしかしてないんだけど、enhancerで unsigned char を signed char にキャストしてる箇所があった。
いいんだろうか。

あと、勝手にソース分割しちゃいました。
分割したソースについては /src 以下をご覧ください。
不都合があればどんどん戻しちゃってください。>関係各位



gdi0023 (キャッシュ周りをマルチスレッド化)

951 名前:名無し~3.EXE 2006/09/27(水) 23:46:43 ID:A4syXu0J
キャッシュ周りにTls~系を使用して複数スレッドからの非同期アクセスを可能にしました。
デュアルコア環境とかでallgdi++使ってると軽くなってるかも。
20060927版がベースなのでExcludeModuleとかはありません。



gdi0021 (最適化ビルド+いろいろ)

944 名前:801 2006/09/27(水) 23:30:01 ID:UQWYzagB
疲れた・・

Pentium4(SSE2もち)以降用に最適化(w/PGO)しました。
784の本家ベースに、>790(gdi++20060927-enhance)さん、>833(gdi0012)さん、>881(gdi0018)さんのallgdi++.exe向けGetMsgProc()実装、>891(gdi0019)さんの[ExcludeModule]セクションパッチを取り込みました。

さらっと動作確認しただけなので、完動するかは保証しません・・・



gdi0019 (20060927版+バージョンリソース付きdll+>>730のallgdi++)

891 名前:名無し~3.EXE 2006/09/27(水) 20:37:08 ID:A4syXu0J
一応20060927版にバージョンリソース付きdllと>>730のallgdi++をセットにした
パッケージを作ってみますた。

746
746 名前:名無し~3.EXE 2006/09/27(水) 02:34:00 ID:kdcoJI+4
743-744
http://drwatson.nobody.jp/gdi++/tray_allgdi2.zip
とりあえずそこだけ直したけど、基本的に書き殴りっぱなしのとりあえず動くってゆーコードなので、人様には見せられないクオリティですし、なんだかallgdiの作者さんにも申し訳ないですが・・・
㌧でもないです。漏れがタスクトレイ常駐にしなかった理由は、単にpcがXGAにもかかわらず既にトレイにアイコンが15個ぐらい並んでるからです。
というかこちらこそ最近出しゃばり過ぎてスマソ



gdi0018 (0017+version+allgdi)

881 名前:名無し~3.EXE 2006/09/27(水) 19:26:38 ID:C9KiwGRj
とりあえずallgdi適用可能になった(と思う)>>869

実態は>>869(gdi0017)に>>654の差分を追加しただけなんで整合性が非常に妖しいです
できれば理解してる方に修正してもらいたい
654 名前:名無し~3.EXE 2006/09/26(火) 22:02:26 ID:BnjtjUIR
http://www.uploda.org/uporg528876.zip.html
pass: gdi

allgdi.exeを実行すると起動中の全プロセスにgdi++.dllが読み込まれる。
allgdi.exe -pで常駐モード。(終了はタスクマネージャで)
結構定期的に出てそうな要望なので試しに作ってみた。



gdi0017 (gdi0004lzh+individualセクション有効化)

869 名前:801 2006/09/27(水) 18:48:09 ID:UQWYzagB
833(gdi0012)さんのIndividualセクション設定の部分をポーティングしてみました。
今回もSSE2+Pentium4向けに最適化してます。

とりあえずポーティングしてみたものの見やすくなってるんだろうか。。。
失敗してるかも?



gdi0016 (ICC9.1にてPGO付きビルドSSE2/Pentium4向け)

698 名前:名無し~3.EXE 2006/09/26(火) 23:37:27 ID:RFsWnBd0
今回は、SSE2+PGOでビルドしてみました。SSE2を持っているプロセッサで動くと思います。
エンハンスフィルタも取り込んでおきました

>[General]
>Quality=3
>Weight=0
>Enhance=1
>MaxHeight=0
>UseSubpixel=0
>SubpixelDirection=0
>ForceAntialiasedQuality=1

iniはこんな感じの設定で、firefoxで多少ブラウジングしてみただけですが
どれくらい速くなったのかわかりません

最適化ビルド好きなあなたへ。

buildlog.htmは好き者用です



gdi0012 (フォントごとにウェイト指定)

833 名前:名無し~3.EXE 2006/09/27(水) 16:44:08 ID:HJorFkvP
MSゴシックに比べてMS明朝が薄くて困ってたので、
フォントごとにウェイト指定できるようにしてみました。

しょぼくてすまん。
最近、話題が高度でついて行けません('A`)



gdi0011 (デバッグビルド)

829 名前:801 2006/09/27(水) 16:36:02 ID:UQWYzagB
819
すでに何かのアプリがgdi++.dll使ってて上書きできないとか言う話でもないよね?

とりあえず、デバッグビルドつくってみました。最適化なんぞ一切かかっていません。
すごい遅くても、これ無事に起動する?
リネームしてないんで自力でgdi++.dllにしてからよろり



gdi0009 (PentiumM(Banias or later))

816 名前:801 2006/09/27(水) 16:21:34 ID:UQWYzagB
814
ファイル壊れてるなら他の人も使えないだろうし・・・なんでだろう。

とりあえずPentiumM(baniasかそれ以降用)向けにビルドし直してみた。
PGOはプロセッサ持ってないからかけれなかったけども。

819 名前:名無し~3.EXE 2006/09/27(水) 16:24:06 ID:NdJgLUsq
816
やっぱダメでごんす・・・



gdi0004 (sse2/pentium4用に最適化したもの)

801 名前:名無し~3.EXE 2006/09/27(水) 15:17:51 ID:UQWYzagB
最適化ビルドです。784のソースに新エンハンサーをポーティングしてみました。
なんか、新エンハンサーって一定の幅以下の文字の描画の時におかしくなります?

<ちらしのうら>
const staticじゃなくてstatic constだとおもうんd
</ちらしのうら>

805 名前:名無し~3.EXE 2006/09/27(水) 15:59:25 ID:6BLvjhDr
801
Xp SP2 + IE7RC1では発生しないね
http://free.flop.jp/gdi++/src/gdi0008.png IE7RC

Enhance の設定をしても落ちないので助かったよ

808 名前:名無し~3.EXE 2006/09/27(水) 16:10:01 ID:NdJgLUsq
801
PentiumMマシンでだとGDI++.DLLがロードできないと言われるんだけど
814 名前:名無し~3.EXE 2006/09/27(水) 16:19:50 ID:NdJgLUsq
PenitumM745(Dothan)でMMX,SSE,SSE2対応でした。
なんでだめなんだろう・・・



gdi++20060927-enhance (フィルタ修正版)

790 名前:672 2006/09/27(水) 12:42:30 ID:hbbR6JaG
フィルタ修正版を作ったよ。
変更点
  • リンギング防止
  • Enhance の設定できる値を0~8に増やした。
  • 16ピクセル超で一段階弱く、32ピクセル超でエフェクトオフ。
グレーアウトのテキストも許容範囲内になったようです。
ソースは >>698 さんのバージョンを元にしました。
698 名前:名無し~3.EXE 2006/09/26(火) 23:37:27 ID:RFsWnBd0
http://www.uploda.org/uporg529021.lzh.html
pass:gdi

今回は、SSE2+PGOでビルドしてみました。SSE2を持っているプロセッサで動くと思います。
エンハンスフィルタも取り込んでおきました。

795 名前:名無し~3.EXE 2006/09/27(水) 12:54:21 ID:YoS2OVs9
790
Enhance有効だと、こんな風に色が変わります…。
http://free.flop.jp/gdi++/src/gdi0002.png



アイコン

icon

| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
|ログイン|