約 3,059,791 件
https://w.atwiki.jp/gdiplus2/pages/35.html
注意 FreeType について freetype.dllの入手GnuWin32 の freetype.dll を使う場合 GDI++専用 Uploader の freetype.dll を使う場合 注意 基本的に、新しいバージョンのものを使用します。 このページの情報は古い可能性があります。最新版の情報などは2chスレを各自追いましょう。 バージョン2.3.5以前に複数の欠陥。2.3.6で修正されています( http //secunia.com/advisories/30600/ )。 FreeType について Portions of this software are copyright (c) 2005-2007 The FreeType Project (www.freetype.org). All rights reserved. freetype.dllの入手 GnuWin32 の freetype.dll を使う場合 バージョン2.3.5以前で確認された複数の欠陥は2.3.6で修正されましたが、GnuWin32のFreeType2.3.6以降はまだないようです。 http //sourceforge.net/projects/gnuwin32/ GDI++専用 Uploader の freetype.dll を使う場合 gdi0869.7z FreeType2.3.7 gdi0866.zip FreeType2.3.6 gdi0856.zip FreeType2.3.5(?) / これ以前のバージョンには複数の欠陥が確認されています。 gdi0467(ft232.zip) gdi0434(ft231.zip) gdi0420(ft230.zip) gdi0299(freetype221.zip)
https://w.atwiki.jp/gdiplus2/pages/4.html
1.使い方 2.バイナリ 3.readme 4.SS 5.履歴 本家版(最新のみ)stable version (gdi++20060927) 以下改良版(上に行くほど最新)gdi0261 (常駐GUI) gdi0147 (常駐 gdippManager) gdi0118 (gdi0116のバグ修正+おまけ改) gdi0116 (gdi0093のバグ修正+Pico氏(gdi0112)の縮小アルゴリズムを組み込み) gdi0112 (MMX対応など) gdi0110 (gdi0102 + 735Image) gdi0109 (up105のSSE無し版) gdi0107 (gdi0104-エンハンスフィルタの改良版-のバグ修正) gdi0105 (1bit+アルファブレンド(注 要SSE2、きわめて未完成)) gdi0102 (gdi0097の環境設定拡張版) gdi0097 (トレイ格納タイプのgdi.exe gdi0060+gdi0061) gdi0093 (ソースをシェイプアップ?20060923版相当に戻してみた) gdi0088 (サー(ry ) gdi0079 (20060927+allgdi+ExcludeModule+TLS その2) gdi0076 (gdi0075のズレるバグ修正) gdi0075 (20060927+allgdi+ExcludeModule+TLS) gdi0061 (gdi0029+GUI) gdi0060 (トレイ格納タイプのgdi.exe) gdi0052 (gdi0049 修正版) gdi0049 (gdi0025+194+ソース分割) gdi++20060929-enhance ( 104-106の修正) gdi0038 (エンハンサの修正 SSE2 Normal) gdi++20060928-enhance (バグ修正) gdi0031 (gdi++ GUI) gdi0029 (トレイ格納タイプのgdi.exe) gdi0027 (944 をベースにソースを整理してみた。) gdi0025 (gdi0021+953+951+最適化) gdi0023 (キャッシュ周りをマルチスレッド化) gdi0021 (最適化ビルド+いろいろ) gdi0019 (20060927版+バージョンリソース付きdll+ 730のallgdi++) gdi0018 (0017+version+allgdi) gdi0017 (gdi0004lzh+individualセクション有効化) gdi0016 (ICC9.1にてPGO付きビルドSSE2/Pentium4向け) gdi0012 (フォントごとにウェイト指定) gdi0011 (デバッグビルド) gdi0009 (PentiumM(Banias or later)) gdi0004 (sse2/pentium4用に最適化したもの) gdi++20060927-enhance (フィルタ修正版) アイコンicon 本家版(最新のみ) 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) http //free.flop.jp/gdi++/src/gdi0147.zip 692 名前:名無し~3.EXE 2006/10/28(土) 02 21 10 ID SN2pkdqO 常駐 システムディレクトリとexeサブディレクトリ内にある複数のDLLを管理できるようにした でもGUIは実装してない ※Studentがイチから書き直しているので利用は警戒しる gdi0118 (gdi0116のバグ修正+おまけ改) http //free.flop.jp/gdi++/src/gdi0118.zip 883 名前:168 2006/10/06(金) 10 09 12 ID iQtt8ZFA 868(gdi0116)で落ちるバグ取れたかも。__assume入れてたの忘れてた ついでにおまけに少し手を加えますた。 多重起動とかバージョン情報のハイパーリンクとかww gdi0116 (gdi0093のバグ修正+Pico氏(gdi0112)の縮小アルゴリズムを組み込み) http //free.flop.jp/gdi++/src/gdi0116.zip 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対応など) http //free.flop.jp/gdi++/src/gdi0112.zip 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) http //free.flop.jp/gdi++/src/gdi0110.zip 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無し版) http //free.flop.jp/gdi++/src/gdi0109.zip 825 名前:369 2006/10/05(木) 00 32 32 ID KJEE4Gl9 778 SSE使わないようにしてみたが動くか? 縮小が3倍、全体で見ると1割ぐらい遅くなってるけど。 gdi0107 (gdi0104-エンハンスフィルタの改良版-のバグ修正) http //free.flop.jp/gdi++/src/gdi0107.zip(gdi0104のバグ修正版) http //free.flop.jp/gdi++/src/gdi0104.zip(エンハンスフィルタの改良版) 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、きわめて未完成)) http //free.flop.jp/gdi++/src/gdi0105.zip 770 名前:Pico ◆PicoKHZGNI 2006/10/04(水) 07 11 53 ID hsbLqC/N 0079版をベースにして、1bitで8x8倍で描画して、アルファブレンドさせてみました。 SSE2を使った縮小アルゴリズムを書いてみたら、かなり軽くなった気がするので、まだアルファ版以下の完成度ですが、良かったら試してみてください。 注意 △とても未完成です。 △Quality、Enhanceの値は無視しています。 △8*8なので64階調です。 △SSE2専用です。 △かなり大量にコードが変更されています。新しいバグが入っているかも。 gdi0102 (gdi0097の環境設定拡張版) http //free.flop.jp/gdi++/src/gdi0102.zip 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) http //free.flop.jp/gdi++/src/gdi0097.zip 630 名前:名無し~3.EXE 2006/10/01(日) 16 49 31 ID h1TSe0i6 常駐gdi 60(gdi0060)ベース+61(gdi0061)のGUI 基本的にはくっつけただけだけど変更点は/***/で検索してたどってね あとVSEEならプリコンパイル済みヘッダ機能使えるファイル構成にした gdi0093 (ソースをシェイプアップ?20060923版相当に戻してみた) http //free.flop.jp/gdi++/src/gdi0093.zip 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 ) http //free.flop.jp/gdi++/src/gdi0088.zip 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) http //free.flop.jp/gdi++/src/gdi0079.zip 中身は多分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のズレるバグ修正) http //free.flop.jp/gdi++/src/gdi0076.zip 384 名前:名無し~3.EXE 2006/09/30(土) 12 26 57 ID 4i2JaSpG 350(gdi0075)でズレるバグ修正 UseSubPixel=1のときQualityを無視 チラシの裏 ズレるバグって浮動小数点の丸め誤差かよorz /チラシの裏 gdi0075 (20060927+allgdi+ExcludeModule+TLS) http //free.flop.jp/gdi++/src/gdi0075.zip 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) http //free.flop.jp/gdi++/src/gdi0061.zip 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) http //free.flop.jp/gdi++/src/gdi0060.zip 267 名前:名無し~3.EXE 2006/09/29(金) 15 47 40 ID uT1dBezs 264 お疲れさんです gdi.exe(ちなみに常駐ソース起こしたのは前スレ742:◆0x0D/0x20I氏 とりあえずDLLのバージョンが表示できたり DLL読んでないときに操作できるようにしてみた gdi0052 (gdi0049 修正版) http //free.flop.jp/gdi++/src/gdi0052.zip 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+ソース分割) http //free.flop.jp/gdi++/src/gdi0049.zip 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の修正) http //khdd.net/kanou/kangae/2006/gdi++20060929-enhance.zip 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) http //free.flop.jp/gdi++/src/gdi0038.lzh 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 (バグ修正) http //khdd.net/kanou/kangae/2006/gdi++20060928-enhance.zip 67 名前:前スレ672 2006/09/28(木) 07 18 19 ID SkKHpb6+ 修正版できました。 バグが出ないことを最優先にして修正しました。 バグ「レインボーエフェクト」を修正 (ビットの並びが BGR なのを RGB と勘違いしていた) static な配列を書き換えるのをやめ、比較演算を行うようにした (そのぶん遅い) 色情報が正しく取れていない (前景色と背景色が同じ) 場合、出力色空間の制限をオフ。 Enhance の設定できる値を 0~9 に増やし、全体に弱くした。 サイズによってエッジ強調の強さを変える小細工をとりあえず停止した。 gdi0031 (gdi++ GUI) http //free.flop.jp/gdi++/src/gdi0031.lzh 58 名前:名無し~3.EXE 2006/09/28(木) 04 21 05 ID drc9K0aW 即席GUI gdi0029 (トレイ格納タイプのgdi.exe) http //free.flop.jp/gdi++/src/gdi0029.zip 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 をベースにソースを整理してみた。) http //free.flop.jp/gdi++/src/gdi0027.zip 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でうごかしてみた http //free.flop.jp/gdi++/src/gdi0036.png 設定は以下のとおり。 [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+最適化) http //free.flop.jp/gdi++/src/gdi0025.lzh 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 (キャッシュ周りをマルチスレッド化) http //free.flop.jp/gdi++/src/gdi0023.zip 951 名前:名無し~3.EXE 2006/09/27(水) 23 46 43 ID A4syXu0J キャッシュ周りにTls~系を使用して複数スレッドからの非同期アクセスを可能にしました。 デュアルコア環境とかでallgdi++使ってると軽くなってるかも。 20060927版がベースなのでExcludeModuleとかはありません。 gdi0021 (最適化ビルド+いろいろ) http //free.flop.jp/gdi++/src/gdi0021.lzh 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++) http //free.flop.jp/gdi++/src/gdi0019.zip 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) http //free.flop.jp/gdi++/src/gdi0018.zip 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セクション有効化) http //free.flop.jp/gdi++/src/gdi0017.lzh 869 名前:801 2006/09/27(水) 18 48 09 ID UQWYzagB 833(gdi0012)さんのIndividualセクション設定の部分をポーティングしてみました。 今回もSSE2+Pentium4向けに最適化してます。 とりあえずポーティングしてみたものの見やすくなってるんだろうか。。。 失敗してるかも? gdi0016 (ICC9.1にてPGO付きビルドSSE2/Pentium4向け) http //free.flop.jp/gdi++/src/gdi0016.lzh 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 (フォントごとにウェイト指定) http //free.flop.jp/gdi++/src/gdi0012.zip 833 名前:名無し~3.EXE 2006/09/27(水) 16 44 08 ID HJorFkvP MSゴシックに比べてMS明朝が薄くて困ってたので、 フォントごとにウェイト指定できるようにしてみました。 しょぼくてすまん。 最近、話題が高度でついて行けません( A`) gdi0011 (デバッグビルド) http //free.flop.jp/gdi++/src/gdi0011.lzh 829 名前:801 2006/09/27(水) 16 36 02 ID UQWYzagB 819 すでに何かのアプリがgdi++.dll使ってて上書きできないとか言う話でもないよね? とりあえず、デバッグビルドつくってみました。最適化なんぞ一切かかっていません。 すごい遅くても、これ無事に起動する? リネームしてないんで自力でgdi++.dllにしてからよろり gdi0009 (PentiumM(Banias or later)) http //free.flop.jp/gdi++/src/gdi0009.lzh 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用に最適化したもの) http //free.flop.jp/gdi++/src/gdi0004.lzh 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 (フィルタ修正版) http //khdd.net/kanou/kangae/2006/gdi++20060927-enhance.zip 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 http //free.flop.jp/gdi++/src/gdi0089.zip
https://w.atwiki.jp/freememo/pages/31.html
概要メリット DLL探索順序 PATH設定方法 DLLのリソースを利用する文字列の場合 アイコンの場合 コメント 概要 DLL (Dynamic Loadable Library)。UNIXプラットフォームの「Shared Library」に相当する機能。 Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、 必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。 WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。 メリット 関数、データ及びリソースを複数のアプリケーションから共有できる アプリケーションの機能を追加or修正を行う場合,アプリケーションの再ビルドを行わず,DLLのみの交換で保守が可能になる DLL探索順序 アプリケーションが読み込まれたディレクトリ 現在のディレクトリ Windowsシステム ディレクトリ(GetSystemDirectory()で取得可能) Windowsディレクトリ(GetWindowsDirectory()で取得可能) PATH環境変数に設定されているディレクトリ (PATH確認方法) PATH設定方法 Windows7の場合 マイコンピューターのプロパティからこの画面を表示して、環境変数ボタンを押下する。 Pathが設定されている項目を選択し、編集ボタンを押下する。 Pathを編集することで、新しいPathを設定する。 TOP DLLのリソースを利用する 文字列の場合 リソースDLLで使用しているresource.hをインクルードする。 #include "..\Samp\resource.h" モジュールインスタンスをロードする。 HMODULE m_hModule = LoadLibraryEx(_T("Samp.dll"), NULL, 0); 既にロードしている場合 HMODULE m_hModule = GetModuleHandle(_T("Samp.dll"); 文字列リソースを取得する。 int nSize = 32; CString str = _T(""); TCHAR* lpszBuff = str.GetBuffer(nSize-1); int nLen = LoadString(m_hModule, IDS_STRING1, lpszBuff, nSize); str.ReleaseBuffer(); モジュールインスタンスを開放する。 FreeLibrary(m_hModule); アイコンの場合 リソースDLLで使用しているresource.hをインクルードする。 #include "..\Samp\resource.h" モジュールインスタンスをロードする。 HMODULE m_hModule = LoadLibraryEx(_T("Samp.dll"), NULL, 0); 既にロードしている場合 HMODULE m_hModule = GetModuleHandle(_T("Samp.dll"); 文字列リソースを取得する。 HICON m_hIcon = LoadIcon(m_hModule, MAKEINTRESOURCE(IDC_ICON1)); モジュールインスタンスを開放する。 FreeLibrary(m_hModule); TOP コメント 名前 コメント TOP
https://w.atwiki.jp/gdiplus2/pages/14.html
動作に必要なファイルは、以下のリンクを辿って入手してください。 gdi++.dll(FreeType版)本体 freetype.dll ※以下の内容は、バイナリ(F)とほぼ重複し、かつ情報量が多いです。過去の経緯を詳細に調べる場合などに有効です。 gdi++ FreeType版(上に行くほど最新) ※ gdi++ FreeType版 の動作には、別途freetype.dllが必要です。 gdi0850 (IdeographicVariationSequences(異体字)対応テスト版) http //free.flop.jp/gdi++/src/gdi0850.zip (中略) (Helium派生~現在公開停止) gdi0789 (実験版(ソース整理・機能削減。再up・転載は控えて)) http //free.flop.jp/gdi++/oldsrc/gdi0789.lzh gdi0787 (メモリーリーク・バッファオーバーラン修正) http //free.flop.jp/gdi++/oldsrc/gdi0787.lzh (中略) gdi0577 http //free.flop.jp/gdi++/oldsrc/gdi0577.zip (中略) gdi0260 (gdi0257を3倍近く高速化) gdi0257 ([DLL] gdi0238で修正) http //free.flop.jp/gdi++/src/gdi0260.zip (3倍近く高速化) http //free.flop.jp/gdi++/src/gdi0257.zip 255 名前:名無し~3.EXE 2006/11/05(日) 03 10 23 ID gDmtJ1sE 251 251 名前:名無し~3.EXE 2006/11/05(日) 02 30 44 ID jqpBSdu7 AntiAliasMode=1だと諸々のダイアログが寸詰りになります。 gdi0257.zip XP SP2 上:0 下:1 http //free.flop.jp/gdi++/src/gdi0259.png 確かにAntiAliasMode=1、HintingMode≠1の時に詰まってるなぁ FreeTypeのバグなのか、LightはMacOSX風らしいから文字幅計算もMacに合わせてたりして。 252 252 名前:名無し~3.EXE 2006/11/05(日) 02 40 06 ID yP5zBn6r めちゃくちゃおもくなった やあアンチ君。君の要望に応えて3倍近く高速化してみたよ。 HDBENCHのText 前 2745 後 7966 250 名前:名無し~3.EXE 2006/11/05(日) 02 04 02 ID gDmtJ1sE 結局 231の問題は解決したかどうか分からんが正式age 231 名前:名無し~3.EXE 2006/11/04(土) 21 31 50 ID ByU7etch それよりも http //free.flop.jp/gdi++/src/gdi0248.png 選択範囲がズレる問題。 非FreeTypeの時は浮動小数点の丸め誤差が原因らしかったけど、 こっちでは如何なの? それと、このInformationってやつ、 本来はCSSのletter-spacingで文字間が0.5em空く筈なんだが、 Operaでgdi++使うと見ての通りそれが無くなっちゃう。(FirefoxやIEでは無くならない 非FreeTypeでも、試してみたら発生した。その頃からの問題みたい。 OSはWinXP SP2。 おまけ 付属ツールの転載条件がよー分からんのでマズかったら削除するかも http //free.flop.jp/gdi++/src/gdi0258.zip gdi0238 (ズレが何さ。) http //free.flop.jp/gdi++/src/gdi0237.7z http //free.flop.jp/gdi++/src/gdi0238.zip 153 名前:555 ◆T5FLAkjak. [sage] 投稿日:2006/11/03(金) 20 05 07 ID NerZQo4F 流れをぶった切って投下 gdi0235ベース ずっとくすぶってる上下ズレに終止符をうつべく焼きいもを食いながらビルド。 Helveticaの人とかヒラギノMYCOMの人とかどんなもんでしょう。 ちょいと微妙なのでうまくいかないときは破棄で。 gdi0235 ([DLL] gdi0228に機能追加) http //free.flop.jp/gdi++/src/gdi0235.zip 146 名前:693[sage] 投稿日:2006/11/03(金) 18 47 40 ID x3TcwljQ 555氏のreadmeをマージして正式age 横幅80文字派だから勝手に改行しちゃった。テヘ ついでに[HintingMode]が[Individual]という懐かしい名前に変わりますた。 gdi0230 ([DLL] Hinting暫定age) http //free.flop.jp/gdi++/src/gdi0230.zip 126 名前:名無し~3.EXE[sage] 投稿日:2006/11/03(金) 12 16 36 ID x3TcwljQ Hintingの話が出てるのでここらで暫定age [HintingMode] メイリオ=0 MS Pゴシック=2 とかできる。 123 って555氏? readme統合中なので追記する部分とかあったら修正してホスィ gdi0228 ([DLL] gdi0224ベースで色々修正) http //free.flop.jp/gdi++/src/gdi0228.zip 101 名前:名無し~3.EXE[sage] 投稿日:2006/11/03(金) 01 13 27 ID x3TcwljQ マジでM$頃してぇ・・・ http //free.flop.jp/gdi++/src/gdi0229.png (冥霊から明瞭へ) gdi0224 (gdi0216mod3) http //free.flop.jp/gdi++/src/gdi0224.lzh 86 名前:名無し~3.EXE 2006/11/02(木) 20 10 40 ID 350fdeQH 標準のアンチエイリアスみたいだね。 直ったと思う。多分。 #大ポカしてた。orz gdi0222 (gdi0216mod2) http //free.flop.jp/gdi++/src/gdi0222.lzh 71 名前:555 2006/11/02(木) 16 47 39 ID YW+1VgIQ 53 の修正とか。 53 名前:名無し~3.EXE 2006/11/02(木) 12 58 14 ID /VM5C/mp IEだと LI タグの表示がおかしくなるね 50 のgの下欠けはどう? 50 名前:名無し~3.EXE 2006/11/02(木) 11 25 02 ID OnVg6K6s 46 OpenTypeでもまともに表示されるようになったっぽい。 "g"みたいに下に出っ張る文字は底が欠けるけど、これはしょうがないのかな。 パッケージから2ch.gdi++.freetype.manifestがなくなってるので、 またfreetype.dllの場所問題が出そう。 旧アーカイブからもってくればいいんだけど。 55 37にお礼 55 名前:名無し~3.EXE 2006/11/02(木) 13 55 15 ID mcy3bCvh modの0.54で化けなくなったね。 Opentypeのヒラギノでも化けなくなったね。 乙 56 56 名前:名無し~3.EXE[sage] 投稿日:2006/11/02(木) 14 07 22 ID OnVg6K6s 52 特定フォントの位置ズレ。SHG30Pも半角文字がずれるんだが、 ASCIIArtを表示させるために時幅?を調整するパッチを当てたものだと ズレが出ないで普通に表示できることに気づいた。 インターセプトのところは普通にフックでいいと思う。 昔のとおり「横取り」でもいい。何で変えたんだろう。 TTFでは文字幅に限らずいろんなところに同じ意味の値が格納されていて MacとWindowsで描画が異なったりする。で、FreeTypeがみてるのがWindowsと違うというオチ。 これはフォント側の責任な気がしてならない。ちゃんと同じ値を指定して欲しい。 fontforgeあたりで編集したりするとまともになったりするのはそのせい。 67 67 名前:名無し~3.EXE 2006/11/02(木) 16 15 31 ID dQFx1awV gdi0217+gdi0155でなんか少しずれる 使ったとき┐|┘とかの描写も少し変になってる 同上。だけど違う問題かもしれない。要調査。 64 64 名前:名無し~3.EXE 2006/11/02(木) 15 54 06 ID cW6PiSjM XPですがfreetype版だと大半のアプリケーションでメニュー、コンテキストメニュー等に効かなくなっています。 http //free.flop.jp/gdi++/src/gdi0219.png それと、本家のバージョンでは正常に動きます。 これは多分CreateFontしないでフォントを使ったりしてるときにでてくるはず。 GetObjectでLOGFONTを取得してもフォント名が空っぽなんで弾いてる。 なんとかならんかね? gdi0217 ([DLL] gdi0216+XPで化ける対策) http //free.flop.jp/gdi++/src/gdi0217.zip 46 :名無し~3.EXE:2006/11/02(木) 10 01 00 ID F3TiC1I8 はい。皆さんおはよう御座います。7-zipがうpろだでうまく扱えないのに気づきまして御座います。 さて、ズレに関してGetTextMetrics内でAscendをFTのものに書き換え、 かつTextOut内でAscenderをベースラインに使えばいいのではないかと気づきましたところ 手元ではずれがなくなったように思えますので報告させていただきます。 #どうもOpenType系だとOUTLINETEXTMETRICのMacAscend(FTもこれ)と一致しないがTrueTypeだと大体一致するっぽい。 #GetTextExtentPointは変えてない。 #freetype_face- heightはLineGapをアセンダ+ディセンダに足してあるのでLineGapが100%の書体で面白いことになる。 化ける報告がXPばかりということもうすうす気づいておりましたが 37 氏の報告を読みまして とりあえずXPでORIG_*TextOutAを呼び出す部分を殺してみました。お試しください。 #これって何か深い意味あるのかね? (履歴は更新してない) #readme統一したほうがよくね? むしろマージしてくれ。 gdi0216 ([DLL] gdi0209修正+機能追加) http //free.flop.jp/gdi++/src/gdi0216.zip 993 名前:名無し~3.EXE 2006/11/01(水) 23 17 06 ID GIgSb3ky 終わりかけの3pxにあえて書いてみる 豪速化オプション搭載。マジで目ん玉飛び出るぐらい速くなるが使用は要注意 メイリオ改造版 は悪いけどgdi++側でどうする事もできんと思われ。 上でageてくれた170MBのダンプtxtと睨めっこしても何も分からんかったしなぁ。 gdi0206 (gdi0181+...) http //free.flop.jp/gdi++/src/gdi0206.zip 914 名前:名無し~3.EXE 2006/11/01(水) 01 32 00 ID +pKdjOuP とりあえずこの辺で投下 メイリオ 本家メイリオで試してみたら特に化けてないなぁ 何となく改造版のヘッダが壊れてそうな気がするけど誰かttfdumpで調べてホスィ 912 BoldなM+2VM+IPAG circleが、0だけ妙に細くなる CVSのやつでは問題ないのでFreeType2.2.1のバグと思われ。 つか我ながらデバッグにCVS版使ってるのマズいか。いやLCDの画質が良くて病みつきになってしm(ry batファイルを実行しようとすると、EXEファイルではないと怒られる。 いや、まぁbatだし・・・ あと現時点でFreeType版gdi++とManagerの併用は動作保証外。 非FreeType版gdi++とは内部的に結構違ってるので。 gdi0202 (gdi0181+gdi0195+gdi0198) http //free.flop.jp/gdi++/src/gdi0202.zip 902 名前:名無し~3.EXE 2006/10/31(火) 23 12 32 ID Gx/SI8LD 900 900 名前:名無し~3.EXE[] 投稿日:2006/10/31(火) 23 01 32 ID Ay/lTox0 884 修正お疲れ様です。 gdi195で、こちらで確認した 829のズレは直ってるようです。 その影響でしょうか、今までずれていなかったフォント全般(?)が 1dotだけ下にシフトしてるようです。 環境は Win2k + Fx1.5 + gdi195 です。 FreeTypeの影響で沈んでるようにみえるのかと確認してみましたが gdi++無しと比較し、gdi193(またはそれ以前)で 1dotのズレは確認できませんでした。 あ、マジだ 直し方分からんからとりあえず描画位置を1px引き算しておくww メイリオ FreeType使ってほしくないというM$の最後の抵抗 (冗談なので間に受けないように) gdi0193 (gdi0181修正版) http //free.flop.jp/gdi++/src/gdi0193.lzh 876 名前:名無し~3.EXE 2006/10/31(火) 19 08 25 ID N65EMYrT とりあえず0181に 874のIMEと位置ズレの変更をしただけ。 化けない俺だけど一応メイリオのやつ meiryoKeGothic.ttc(5.00+rev1) size 9260904 CRC32 f5422589 MD5 c1c6c6f4ab8e8ff5626e991f46160e72 SHA1 3ca51f1697155c2c23fcf87516d6f0ba57c895c8 OSはWindows2000。何度か試してるけど化けには出会えない。 gdi0181 (gdi0177の修正) http //free.flop.jp/gdi++/src/gdi0181.zip 822 名前:名無し~3.EXE 2006/10/30(月) 04 00 33 ID ojq82nNs ちゅーかサブピクセルレンダリングのコードバグってるやん って事で修正+比較スクショ ttp //free.flop.jp/gdi++/src/gdi0180.png ttp //free.flop.jp/gdi++/src/gdi0181.zip 821 ウィンドウタイトルが化ける フォントリンクは化けるのでExclude推奨 リンクの下線が少し下の部分に表示される つ gdi0181 ビットマップフォントがビットマップで表示されない 擬似TTFなら表示されないのは仕様 MS IMEの変換部分で選択している文字列が一文字目しか表示されない ん、これは・・・クリッピングの計算がバグってるのかな? 手元の環境でも再現できたからまー明日にでも調べてみるか つか何だこの時間は( A`) gdi0177 (gdi0172+カーニングオプションと文字サイズの何) http //free.flop.jp/gdi++/src/gdi0177.lzh 817 名前:555 2006/10/29(日) 22 36 24 ID JRY0gR7g とりあえずカーニングのオプションだけつけてみただけ。 0172ベースにしちゃった。ごめん。 んで、文字のサイズ計算をちょっといじくっちゃいました。 また欠けとかでるかもしれないので注意してくださいませ。 なんでこんなことしたかというとですね TextExtentPointあたりでしっかりサイズ計算するためには どうしてもちゃんとTextOutと整合したサイズ計算にしたいと思ったのですね。 んでなぜかFT_Request_Sizeを使うと落ちるんですね。 face_requesterから返されたFaceのsizeをキャッシュマネージャが解放しているんですが FT_Request_Sizeではsizeを使って関連付けられたfaceを参照するんですね。 face- size saze- faceと。 んで検索して見たりしたらこんなのを見つけた。 ttp //www.mail-archive.com/freetype@nongnu.org/msg00952.html このあたり見ると大嘘ですね。ぶち切れですね。 gdi0173 (manifest付きgdi0172) http //free.flop.jp/gdi++/src/gdi0173.zip 815 名前:名無し~3.EXE 2006/10/29(日) 21 27 12 ID wMbHDms7 論より証拠でgdi0172のgdi++.dllにmanifestを付けただけのものを作ってみた。 中のgdi++.dllをgdi0172のものと置き換えて2ch.gdipp.freetype.manifestと freetype.dllをgdi++.dllと同じフォルダにコピーすればおk gdi0172 (gdi0170ベース+何か) http //free.flop.jp/gdi++/src/gdi0172.zip 784 名前:名無し~3.EXE 2006/10/29(日) 14 14 29 ID Wb5LTQDj 781 キタ━━━━(゚∀゚)━━━━!! で、早速w http //free.flop.jp/gdi++/src/gdi0172.zip gdi0169.png それなんて風水? まー漏れも普段こんな感じなんだが。PC-98マンセー http //free.flop.jp/gdi++/src/gdi0171.png gdi0170 (gdi0168修正版) {http //free.flop.jp/gdi++/src/gdi0170.lzh} 781 名前:555 2006/10/29(日) 13 20 36 ID qRA4JHFa 太字と斜体をつけといた。 今回は要DLL 775 名前:名無し~3.EXE 2006/10/29(日) 11 39 41 ID Wb5LTQDj 774 鯖の容量は2MB*10000も無いと思うけど、どうなんでしょ>中の人 とか言ってる間にgdi0164+gdi0166が出来たので差分うpってみるてすと 手動でマージしたのでおかしい所があるかも ttp //free.flop.jp/gdi++/src/gdi0168.zip ちらしのうら readme_555の最後の行が気になる・・・ でも何となく想像がついたりしてw /ちらしのうら gdi0164 (gdi0156の修正版) http //free.flop.jp/gdi++/src/gdi0164.zip 764 名前:名無し~3.EXE 2006/10/29(日) 10 15 14 ID Wb5LTQDj いろいろ修正+整理。 まとめレス。 悪い事は言わんからfreetype.dllは*PATHの通ったフォルダ*に桶 漏れはフォントリンクに対応する気は無いからExclude追加で諦めれ 表示周りの不具合はここに書かれても困る ↓の中の人にメールでも送って修正頼んだ方がいいかと ttp //hp.vector.co.jp/authors/VA028002/ gdi0156 (gdi0152の修正版) http //free.flop.jp/gdi++/src/gdi0156.zip 735 名前:名無し~3.EXE 2006/10/28(土) 17 41 18 ID lCUfvZHY ズレ欠け+色化け修正 ビフォーアフター http //free.flop.jp/gdi++/src/gdi0157.png gdi0152 (gdi0143 + FreeType = gdi0149 の修正版) gdi0151 (FreeType DLL版) http //free.flop.jp/gdi++/src/gdi0152.zip http //free.flop.jp/gdi++/src/gdi0151.zip 703 名前:名無し~3.EXE 2006/10/28(土) 11 38 59 ID lCUfvZHY 先越されたorz 700 700 名前:名無し~3.EXE 2006/10/28(土) 11 11 31 ID O3+ZmekM http //free.flop.jp/gdi++/src/gdi0150.zip こうかな。コマンドライン修正したつもり。 多分直ってない・・・と思う 同じフォルダにあるreadme.txtとかをgdi++.exeにD Dしてもファイルが開けないし。 ついでに言うと本家0927版は↓みたいなショートカットをD Dしても正常に動作しなかった。 "C \Program Files\Mozilla Firefox 2\firefox.exe" -P bonecho ってことで直しますた http //free.flop.jp/gdi++/src/gdi0152.zip ついでにFreeTypeでバイトコードインタプリタを有効にしてみた。効いてるかは知らん http //free.flop.jp/gdi++/src/gdi0151.zip 702 702 名前:名無し~3.EXE 2006/10/28(土) 11 29 43 ID PFUQVBGY ひさびさに見たらついていけなくなってるorz どれ落とせばいいんだよ( A`) つ gdi0151&gdi0152 gdi0143 (up0133をコンパイルした物) http //free.flop.jp/gdi++/src/gdi0143.zip 659 名前:名無し~3.EXE 2006/10/27(金) 01 13 36 ID XKMY1awz 656 656 名前:名無し~3.EXE 2006/10/27(金) 00 51 42 ID W5WEBeIk 除外フォント機能はうまく利いていない気がする。 スクロールすると適用されてしまう。 Windows 2000 Service Pack 4 そういやExcludeチェックにバグがあったの忘れてた 多分up0118・up0133(今は無い)以外では直ってないはずなので、 とりあえずup0133をコンパイルした物を置いといた これで直ってなかったら知らん 657 それなら"[除外]"にしてもいいかと。日本語大丈夫だったはず。 up0139 (FreeType2 MS Pゴシック 16ピクセルのみ) http //free.flop.jp/gdi++/src/gdi0139.lzh 555 名前:名無し~3.EXE 2006/10/24(火) 14 19 54 ID WYOEybts FreeType2 MS Pゴシック 16ピクセル 自分で自分のJaneのスレ内だけかかれば良し。ツリーもリストもシラネーヨ版。 570 名前:555 2006/10/24(火) 22 41 16 ID 06MRDaL0 作りについての情報とか 元にしたのは本家gdi++20060927.zipで FreeTypeの使い方は LINK ほぼそのまま(コメント入れときゃ良かった)。 1.ロード時にFreeTypeを初期化してフォントをロードしている。 2.元でlfEscapementをチェックしている後にフォントのチェックを入れている(フォント名チェックはずしてReleaseしたかも御免)。 少し改善案とか 一.動いて少し試せればイイダロぐらいの気持ちでやったので無駄があるはずだからそれをつぶすこと。 ニ.1でのフォントロードを止めて2でロードするように変更すると色々対応できるかも 三.ニの案のかわりに1のタイミングでロードしておくフォントをiniか何かで指定する方法もありそう 四.MMX、SSEなんかを使ったアルファブレンド 五.サブピクセルレンダリングとかLINK みたいな調整とか
https://w.atwiki.jp/dtmer/pages/53.html
「Dynamic Link Library」の略称。 複数のソフトウェア?が参照するような利用率の高いプログラムを部品化(ルーチン化)して作成されたファイルのこと。 必要に応じてメモリ?に呼び出し、使用される。 DLLとなっているプログラムは、ほかのアプリケーションにおいて作成する必要がないので、ソフトウェアが開発しやすくなるというメリットがある。 DTMにおいてのDLLファイル VSTi?としてファイル化・配布されることがある。 ファイル容量なども様々で、大きいメモリが推奨される。 DTMに関連して、有名なDLL GOGO.DLLMP3エンコーダ?ソフト「午後のこ~だ?」に同梱されているDLLファイル。lameというMP3エンコーダから創られていてWAVEデータ・AIFFデータなどの音声データを、MP3に変換することができる。その機能性から多くのソフトウェアにも引用されている。リンク:午後のこ~だ lame.dllGOGO.DLLの基になったDLLファイル。多くの再生プレーヤー等に利用されているため、現在ではこちらのほうが主流になりつつある。
https://w.atwiki.jp/sylx/pages/27.html
DLLの種類 非MFC DLL MFCと静的にリンクされるレギュラーDLL MFCと動的にリンクされるレギュラーDLL 拡張DLL 非MFC DLL 非 MFC DLL は、MFC を内部的に使わない DLL です。非 MFC DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。通常、関数は C 言語の標準インターフェイスを使って非 MFC DLL からエクスポートされます。 MFCと静的にリンクされるレギュラーDLL MFC と静的にリンクするレギュラー DLL は、MFC を内部的に使用します。このレギュラー DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。名前からもわかるように、この種の DLL は MFC のスタティック リンク ライブラリ バージョンを使ってビルドされます。通常、関数は C 言語の標準インターフェイスを使ってレギュラー DLL からエクスポートされます。 USRDLL という用語は、Visual C++ ドキュメントでは使用されなくなりました。MFC に静的にリンクしたライブラリが以前の USRDLL に相当します。 MFC と静的にリンクされるレギュラー DLL の特徴は、以下のとおりです。 クライアントの実行可能ファイルは、DLL を使用できる任意の言語 (C、C++、Pascal、Visual Basic など) で記述できます。MFC アプリケーションでなくてもかまいません。 複数のアプリケーションで使用される MFC のスタティック リンク ライブラリとリンクできます。DLL のスタティック リンク バージョンのライブラリは、今後使用されなくなります。 MFC のバージョン 4.0 以前では、MFC と静的にリンクされるレギュラー DLL と同じ種類の機能を各種の USRDLL が提供していました。しかし、Visual C++ バージョン 4.0 では USRDLL という用語は使用しません。 MFC と静的にリンクされるレギュラー DLL の必要条件は、以下のとおりです。 CWinApp 派生クラスをインスタンス化します。 MFC から提供される DllMain を使用します。通常の MFC アプリケーションと同じく、DLL 固有のすべての初期化コードをInitInstance メンバ関数に配置し、終了コードを ExitInstance メンバ関数に配置します。 USRDLL という用語は使用されませんが、コンパイラのコマンド ラインではまだ "_USRDLL" を定義する必要があります。この定義により、MFC ヘッダーファイルから取り込まれる宣言が決まります。 MFCと動的にリンクされるレギュラーDLL MFC と動的にリンクするレギュラー DLL は、MFC を内部的に使用します。このレギュラー DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。名前からもわかるように、この種の DLL は MFC のダイナミック リンク ライブラリ バージョン (MFC の共有バージョン) を使ってビルドされます。通常、関数は C 言語の標準インターフェイスを使ってレギュラー DLL からエクスポートされます。 MFC と動的にリンクする標準 DLL 中のエクスポートされるすべての関数の先頭に AFX_MANAGE_STATE マクロを追加して、現在のモジュール ステートを DLL のモジュール ステートに設定する必要があります。これは、DLL からエクスポートされる関数の先頭に次のコード行を追加して行います。 AFX_MANAGE_STATE(AfxGetStaticModuleState( )) MFC と動的にリンクされるレギュラー DLL の特徴は、以下のとおりです。 Visual C++ 4.0 で新たに導入された DLL です。 クライアントの実行可能ファイルは、DLL を使用できる任意の言語 (C、C++、Pascal、Visual Basic など) で記述できます。MFCアプリケーションでなくてもかまいません。 静的にリンクされるレギュラー DLL とは異なり、MFC DLL と動的にリンクされます。MFC DLL は、MFC の共有 DLL とも呼ばれます。 この種の DLL にリンクされる MFC インポート ライブラリは、MFC DLL を利用するアプリケーションや拡張 DLL で使われるものと同じもので、MFCxx(D).lib です。 MFC と動的にリンクされるレギュラー DLL には、以下の必要条件があります。 MFC DLL と動的にリンクされる実行可能ファイルと同じく、_AFXDLL を定義してコンパイルされます。ただし、MFC と静的にリンクされるレギュラー DLL と同じく、_USRDLL も定義されます。 CWinApp 派生クラスをインスタンス化します。 MFC から提供される DllMain を使用します。通常の MFC アプリケーションと同じく、DLL 固有のすべての初期化コードをInitInstance メンバ関数に配置し、終了コードを ExitInstance メンバ関数に配置します。 拡張DLL MFC 拡張 DLL は、既存の MFC ライブラリ クラスから派生した再利用可能なクラスを主に実装する DLL です。拡張 DLL は、MFC のダイナミック リンク ライブラリ バージョン (MFC の共有バージョン) を使ってビルドされます。ただし、拡張 DLL を使用できるのは、MFC の共有バージョンを使ってビルドされた MFC の実行可能ファイル (アプリケーションまたはレギュラー DLL) だけです。拡張 DLL を使うと、MFC から新しいカスタム クラスを派生し、この拡張バージョンの MFC を DLL を呼び出すアプリケーションに提供できます。 また、拡張 DLL を使うと、アプリケーションと DLL の間で MFC の派生オブジェクトをやり取りすることもできます。やり取りされるオブジェクトに関連付けられたメンバ関数は、そのオブジェクトが作成されたモジュール内にあります。これらの関数は MFC の共有 DLL バージョンの使用時に正しくエクスポートされるので、MFC のポインタまたは MFC の派生オブジェクトのポインタをアプリケーションと拡張 DLL との間で自由にやり取りできます。 DLLのリソースを使う DLLからリソースを使おうとすると、EXE側のリソースが使われてしまう。 使用するリソースを切り替えるために、DLLでリソースを使うスコープで、AFX_MANAGE_STATE(AfxGetStaticModuleState())の処理を入れる。 切り替えたリソースは、スコープから外れると自動で元に戻る。 ただし、DLLでリソースを使うたびに処理を入れるのは面倒なので、リソースDLLを作ってEXEと共有するのが楽だと思う。
https://w.atwiki.jp/1note/pages/114.html
DLL 読み方 : ディーエルエル フルスペル : Dynamic Link Library 分野 : Windows 実行環境 Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。DLLとして提供されている機能は開発せずにすむので、アプリケーションソフトの開発効率が高まる。また、同じプログラム部品を複数のアプリケーションソフトで共有するので、ディスクやメモリの容量を節約できる。WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。
https://w.atwiki.jp/wiki3_ao/pages/175.html
#blognavi 自前でコンパイルして試してみた。エンコーダはencoder_example.cを使って、ffmpegからの出力を入力するようにした。avisynthをサポートしているffmpegならばソースを選ばないし、プリ処理も自由自在でいい感じ(その分複雑ではあるけれど) ただエンコード結果としては、ブロックノイズが多い。Theoraの元となっているVP3ではこんなには酷くない。エンコードプロセスの問題か、ポストプロセスの違いか。 ffmpeg2theoraでもこの辺は変わらないようなので、現在のtheoraの問題点と言えるかも知れない。反面、モスキートノイズはマシになっている感じなのだが。ちゃんと比較したわけではないので気のせいかも知れない。 今回のバッチファイル ffmpeg -y -i encta.avs -vn -acodec pcm_s16le -ac 2 -ar 48000 -f wav temp.wav ffmpeg -bitexact -y -i encta.avs -vcodec rawvideo -pix_fmt yuv420p -an -f yuv4mpegpipe - | theora -v 1 -o output.ogg temp.wav - del temp.wav encoder_example.cの実行ファイルをtheora.exeにリネームしておく。 ffmpegはavisynth対応版が必須。 avisynthはもちろん必要。encta.avsにスクリプトを記述しておく。 encoder_example.cのオプション関係は"-?"とかすれば、説明が出てくる。(unknown optionとか言われるけど気にしない) カテゴリ [ソフトウェア] - trackback- 2008年01月27日 11 38 54 名前 コメント #blognavi
https://w.atwiki.jp/abwiki/pages/211.html
DLL(でるる)とは、Dynamic Link Libraryの略でABの真の分割コンパイルを行う唯一の手法のことである。
https://w.atwiki.jp/sida/pages/13.html
TinySchemeの外部関数の作り方(Windows用) Cで外部関数を定義できます。 DLLを使って動的に拡張する仕組みも用意されています。 DLLの読み込みかた (load-extension 拡張子無しのファイル名 ) DLLの構造 init_ 拡張子無しのファイル名 ()関数が必要です。 load-extensionしたときに最初にコールされます。 foo.dllだったらinit_foo() 外部関数の定義もここでやります。 外部関数の構造 引数 戻り値 インターフェース関数 "scheme"構造体内に定義されていて外部関数が使うことができる。 ドキュメントでは As of v.1.17, the canonical way for a foreign function in a DLL to manipulate Scheme data is using the function pointers in sc- interface. のように書いてあってサンプルのコードにも sc- interface- mk_symbol(sc,"square") のように書いてあるが実際には sc- vptr- mk_symbol(sc,"square") のようになっている。 void (*scheme_define)(scheme *sc, pointer env, pointer symbol, pointer value); pointer (*cons)(scheme *sc, pointer a, pointer b); pointer (*immutable_cons)(scheme *sc, pointer a, pointer b); pointer (*reserve_cells)(scheme *sc, int n); pointer (*mk_integer)(scheme *sc, long num); pointer (*mk_real)(scheme *sc, double num); pointer (*mk_symbol)(scheme *sc, const char *name); pointer (*gensym)(scheme *sc); pointer (*mk_string)(scheme *sc, const char *str); pointer (*mk_counted_string)(scheme *sc, const char *str, int len); pointer (*mk_character)(scheme *sc, int c); pointer (*mk_vector)(scheme *sc, int len); pointer (*mk_foreign_func)(scheme *sc, foreign_func f); void (*putstr)(scheme *sc, const char *s); void (*putcharacter)(scheme *sc, int c); int (*is_string)(pointer p); char *(*string_value)(pointer p); int (*is_number)(pointer p); num (*nvalue)(pointer p); long (*ivalue)(pointer p); double (*rvalue)(pointer p); int (*is_integer)(pointer p); int (*is_real)(pointer p); int (*is_character)(pointer p); long (*charvalue)(pointer p); int (*is_vector)(pointer p); long (*vector_length)(pointer vec); void (*fill_vector)(pointer vec, pointer elem); pointer (*vector_elem)(pointer vec, int ielem); pointer (*set_vector_elem)(pointer vec, int ielem, pointer newel); int (*is_port)(pointer p); int (*is_pair)(pointer p); pointer (*pair_car)(pointer p); pointer (*pair_cdr)(pointer p); pointer (*set_car)(pointer p, pointer q); pointer (*set_cdr)(pointer p, pointer q); int (*is_symbol)(pointer p); char *(*symname)(pointer p); int (*is_syntax)(pointer p); int (*is_proc)(pointer p); int (*is_foreign)(pointer p); char *(*syntaxname)(pointer p); int (*is_closure)(pointer p); int (*is_macro)(pointer p); pointer (*closure_code)(pointer p); pointer (*closure_env)(pointer p); int (*is_continuation)(pointer p); int (*is_promise)(pointer p); int (*is_environment)(pointer p); int (*is_immutable)(pointer p); void (*setimmutable)(pointer p); void (*load_file)(scheme *sc, FILE *fin); void (*load_string)(scheme *sc, const char *input);