2024年10月
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 96,441 アクセス


シン・クラウド for Free 申込み

以前から,テスト用に Xfree を利用してきた.
それで困っていたのが,https 化と WordPress が開けなくなったこと.
WordPress は DB の容量不足( 94 / 100 MB )と思われる.


1ヶ月位前,シン・アカウントへの統合と「シン・クラウド for Free」になるとメールが来ていた.
その時,アカウント情報は更新したが,既存の mish.*.xdomain.jp はそのままとしていた.


「シン・クラウド for Free お申し込みフォーム」から「ログイン」して申し込み.
シン・クラウド for Free 申し込み
無料レンタルサーバーの申し込み.
サーバーは 5 つまで 追加できる.
無料レンタルサーバーの申し込み
暫くすると,***.cloudfree.jp にアクセスできる様になった.
https://mish.cloudfree.jp/


ファイルマネージャで見ると次の様になっている.
シン・クラウド for Free  ファイルマネージャ


アップロード用の php をコピーして動作することを確認.
シン・クラウド for Free  アップロードテスト
https://jml.mish.work/index.php/i-tools/upload-htm-php.html

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DSM 7.2 仮想ホストの設定

以前設定した時と変更されているみたいで,DSM 7.2 での設定手順.


「Web Station」を起動して「Web サービス」を選択して「作成」.
今回は静的なページのため「静的なウェブサイト」を選択して「次へ」.
Web サービスを作成 サービス タイプを選択
「ドキュメント ルート」などを指定して「次へ」,「作成」.
Web サービスを作成 全般設定の構成
「Web Station」の「Web ポータル」を選択して「作成」.
ポータル作成ウィザード ポータル タイプを選択
「サービス」は「Web サービス」で追加したものを選択.
サブドメインの設定がまだなので,ホスト名は仮の名称(ここでは image ).
ポータル作成ウィザード ウェブ サービス ポータルをセットアップ
//image/… でアクセスできる様になる.
https://image/173817__.png


あとはドメインの DNS レコードを設定して,ホスト名をサブドメインに設定.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

$(WindowsSDK_IncludePath)

VC 2017 以降?,VS の更新により Windows SDK のパスも更新されてしまうことがある?
プロジェクトの設定にもよるみたいだが…
Windows SDK バージョンの指定


対象のプロジェクトがどれを使用しているかは,次のマクロで確認できる.
$(WindowsSDK_IncludePath) ,$(WindowsSDK_LibraryPath_x86) など.
$(WindowsSDK_IncludePath)
C:\Program Files (x86)\Windows Kits\10\


他によく使うのが,Windows.h などを開いて「このアイテムのフォルダーを開く」.
Windows.h  このアイテムのフォルダーを開く

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

C2039 , C3861 , C2665

個人的なメモです.
VC 6 プロジェクトを VC 7 以降にあげた時のエラー.

1>------ ビルド開始: プロジェクト: PLtoB, 構成: Debug Win32 ------
1>コンパイルしています...
1>PLtoBDlg.cpp
1> ...
1>t:\develop\_.src\__iwao\htmo_th.hxx(70) : error C2039: 'ToImage' : '`global namespace'' のメンバではありません。
1>t:\develop\_.src\__iwao\htmo_th.hxx(70) : error C3861: 'ToImage': 識別子が見つかりませんでした
1>t:\develop\_.src\__iwao\htmo_th.hxx(155) : error C2665: 'ToDIB' : 3 オーバーロードのどれも、すべての引数の型を変換できませんでした
1>        t:\develop\_.src\__win\i_dib_fn.hxx(188): 'i_DIB ToDIB(const HBITMAP)' の可能性があります。
1>        t:\develop\_.src\_afxw\i_dib_x.hxx(86): または 'i_DIB ToDIB(const MemoryDC &)'
1>        引数リスト '(Image)' を一致させようとしているとき
1> ...
1>PLtoB - エラー 3、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

Imgae.hxx を XxxDlg.h に追加.
次の場合は,MemoryDC.hxx を追加.

1>------ ビルド開始: プロジェクト: PLtoB, 構成: Debug Win32 ------
1>コンパイルしています...
1>PLtoBDlg.cpp
1> ...
1>t:\develop\_.src\__iwao\htmo_th.hxx(35) : error C2665: 'ToDIB' : 3 オーバーロードのどれも、すべての引数の型を変換できませんでした
1>        t:\develop\_.src\__win\i_dib_fn.hxx(188): 'i_DIB ToDIB(const HBITMAP)' の可能性があります。
1>        t:\develop\_.src\_afxw\i_dib_x.hxx(56): または 'i_DIB ToDIB(const Image &)'
1>        引数リスト '(MemoryDC)' を一致させようとしているとき
1> ...
1>PLtoB - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

文字の立体化


Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

::bezier(ps,p1,p2,pe)

::bezier に与えている分割数.

	Vd2	ps(0.0,0) ;
	Vd2	p1(0.0,1) ;
	Vd2	p2(1.0,1) ;
	Vd2	pe(1.0,0) ;
	Vd2	pm = (p1+p2)/2 ;
	vv_PLF	vvplf ;
	for (long dv=1 ; dv<10 ; dv++) {
		v_PLF	v_plf ;
		Vd2A	bz2 = ::bezier(ps, pm , pe,dv+1) ;
		Vd2A	bz3 = ::bezier(ps,p1,p2,pe,dv+1) ;
		Vd3A	b23 = ::ToVd3A(bz2) ;
		Vd3A	b33 = ::ToVd3A(bz3) ;
		PLF	plf_2(PLF::line,::ToVd4A(b23)) ;
		PLF	plf_3(PLF::line,::ToVd4A(b33)) ;
		v_plf.push_back(plf_2) ;
		v_plf.push_back(plf_3) ;
		vvplf.push_back(v_plf) ;
		}

::besier の分割数
分割数の最小値を 4 としていたが,データによっては大きくなりすぎるため 2 に変更.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

@MS PGothic の高さ方向の間隔

以前から気になっていたことだが,文字列を縦書きにした時重なってしまうことがある.
「@MS Pゴシック」での () () 高さ指定なし
文字ごとに ::GetGlyphOutline を呼出して,位置をずらしている( += gm.gmCellIncX ).


gmptGlyphOrigin を使えばよいのかもしれないが,テストした限りではうまくできなかった.
更にいろいろと試していると,LOGFONT の文字の高さを 23 より大きくするとうまくいく.
@MS Pゴシック」での () () 高さ 23
また,他のプロポーショナルフォントではうまくいくものもが多い.
@Meiryo UI

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

::IsFontInstalled (LPCTSTR pszFace)

EnumFont… を調べていて,::IsFontInstalled を見つけた.
MFC 6 位に追加されたみたいだが,static 宣言されている.
VC 6 RTM では存在していなさそう.
正確なタイミングはわからないが,VC 6 SP6 には存在していて …\MFC\SRC\CCDATA.CPP にある,
IsFontInstalled
フォントがインストールされているかのチェックに利用できそうなので,関数として定義予定.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CComboBox Get…Text() ?

CComboBox の選択項目の取得には GetLBText がある.
が,エディットボックス部分の取得方法がそこには書かれていない?
検索しても,あまりうまく引っかからない.


::GetWindowText(m_CtrlComboBox.GetSafeHwnd(),…) でいけそうなことは確認した.
Spy++ で見ると,エディットボックスの部分は「子ウィンドウ」になっている?


いろいろと調べると次の様なものもあり.
WindowsX.h
#define ComboBox_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))


CComboBox の DDX_CBString を追加して,デバッガで追いかけると,::GetWindowText を呼出している.
DDX_CBString


MFC による Windows 95 プログラミングの 358 ページに次の様にあった.
コンボボックスの操作
… CWnd から継承している GetWindowText,SetWindowText 関数は,予想通り,エディットコントロール内のテキストを取得,設定する.


MFC だと次の様にできる.
CString str ;
m_CtrlComboBox.GetWindowText(str) ;

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

EnumFontFam…Proc

CALLBACK で呼び出されたものを FontType で分類して文字列の配列に登録.

#include	<Windows.h>

class	EnumFont	{
public:
	static	int	CALLBACK	CB_EnumFontFam		(const ENUMLOGFONT*   lpelf_,const NEWTEXTMETRIC*   lpntm_,DWORD font_type,LPARAM lparam) ;
	static	int	CALLBACK	CB_EnumFontFamEx	(const ENUMLOGFONTEX* lpelfe,const NEWTEXTMETRICEX* lpntme,DWORD font_type,LPARAM lparam) ;
protected:
public:
	v_tstring	Font_________ ;		//	0
	v_tstring	Font_raster__ ;		//	1	RASTER_FONTTYPE
	v_tstring	Font_device__ ;		//	2	DEVICE_FONTTYPE
	v_tstring	Font_truetype ;		//	4	TRUETYPE_FONTTYPE
	} ;

inline	int	CALLBACK	EnumFont::CB_EnumFontFam	(const ENUMLOGFONT*   lpelf_,const NEWTEXTMETRIC*   lpntm_,DWORD font_type,LPARAM p_this)
{
	const	LOGFONT&	lf = lpelf_->elfLogFont ;
	EnumFont*	pthis = (EnumFont*)p_this ;
	if      (font_type & RASTER_FONTTYPE)	{	pthis->Font_raster__.push_back(lf.lfFaceName) ;		}
	else if (font_type & TRUETYPE_FONTTYPE)	{	pthis->Font_truetype.push_back(lf.lfFaceName) ;		}
	else if (font_type & DEVICE_FONTTYPE)	{	pthis->Font_device__.push_back(lf.lfFaceName) ;		}
	else                                    	{	pthis->Font_________.push_back(lf.lfFaceName) ;		}
	return	1 ;
	}

inline	int	CALLBACK	EnumFont::CB_EnumFontFamEx	(const ENUMLOGFONTEX* lpelfe,const NEWTEXTMETRICEX* lpntme,DWORD font_type,LPARAM p_this)
{
	const	LOGFONT&	lf = lpelfe->elfLogFont ;
	EnumFont*	pthis = (EnumFont*)p_this ;
	if      (font_type & RASTER_FONTTYPE)	{	pthis->Font_raster__.push_back(lf.lfFaceName) ;		}
	else if (font_type & TRUETYPE_FONTTYPE)	{	pthis->Font_truetype.push_back(lf.lfFaceName) ;		}
	else if (font_type & DEVICE_FONTTYPE)	{	pthis->Font_device__.push_back(lf.lfFaceName) ;		}
	else                                    	{	pthis->Font_________.push_back(lf.lfFaceName) ;		}
	return	1 ;
	}

次の様に呼出し.

bool	test	(void)
{
	HWND	hWnd = ::GetConsoleWindow() ;
	HDC	hdc = ::GetDC(hWnd);
	{
		EnumFont	ef_ ;
		EnumFont	efe ;
		{
			::EnumFontFamilies  (hdc,NULL,(FONTENUMPROC)EnumFont::CB_EnumFontFam,  (LPARAM)&ef_) ;
			::EnumFontFamiliesEx(hdc,NULL,(FONTENUMPROC)EnumFont::CB_EnumFontFamEx,(LPARAM)&efe,0) ;
			}
		{
			tstring	tmp_path = ::Get_i_Tools_tmp_date() ;
			tstring	fet_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ffe_t.txt") ;
			tstring	fer_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ffe_r.txt") ;
			tstring	fed_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ffe_d.txt") ;
			tstring	fe__name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ffe__.txt") ;
			tstring	f_t_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ff__t.txt") ;
			tstring	f_r_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ff__r.txt") ;
			tstring	f_d_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ff__d.txt") ;
			tstring	f___name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_ff___.txt") ;
			::SaveText(fet_name.c_str(),efe.Font_truetype) ;
			::SaveText(fer_name.c_str(),efe.Font_raster__) ;
			::SaveText(fed_name.c_str(),efe.Font_device__) ;
			::SaveText(fe__name.c_str(),efe.Font_________) ;
			::SaveText(f_t_name.c_str(),ef_.Font_truetype) ;
			::SaveText(f_r_name.c_str(),ef_.Font_raster__) ;
			::SaveText(f_d_name.c_str(),ef_.Font_device__) ;
			::SaveText(f___name.c_str(),ef_.Font_________) ;
			}
		}
	::ReleaseDC(NULL,hdc);
	return	true ;
	}

これで出力したもの.
EnumFontFam...Proc  FontType

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

::EnumFont…

幾つかの所で使用している ::EnumFont フォント 選択
文字列 DXF 変換  2023.09
最近追加したフォントでうまく列挙されないものがある.
先日試したコード では列挙されているので,コールバック関数の部分がうまくない.
フォントを列挙する部分は 20 年以上前に書いたコード.
間違ってはなさそうだが,MFC に依存しているので見直すことに.


プログラミング Windows 第5版 を見たが,1 ページ程度.
::EnumFonts , ::EnumFontFamilies , ::EnumFontFamiliesEx の違いなどが簡単に書かれている.


当時参考にしたのは,MFC による Windows 95 プログラミング だったみたい.ソースにコメントが残っていた.


コールバック関数の EnumFontFamExProc が呼ばれるのは,::EnumFontFamiliesEx が呼ばれた直後.
EnumFontFamExProc


インストールされているフォントの列挙
インストールされているフォントの列挙


::EnumFontFamilies と ::EnumFontFamiliesEx とでは,列挙される数が異なる.
EnumFontFamilies と EnumFontFamiliesEx で列挙されるフォント

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

J2XML アンインストールでエラー

DS220 に J2XML 3.9 を入れて,更新したものを出力.
J2XML 3.9 にあげてある DS116 へのインポートは問題ないが,J2XML 3.7 では読み込めない..
それで,J2XML をアンインストールしようとするとエラー.
エラーが発生しました。   0 Joomla\Filesystem\File::delete: Failed deleting inaccessible file .htaccess
正しい対応方法がわからない.
joomla 以下の *j2xml*.* を検索して手動で削除.
どこかに情報が残っているみたいでうまくインストールできなかった.
警告 エクステンション インストール: エクステンション J2XML 3.9 はすでに存在します。
インポートに必要な部分はそれなりに入っている様で,更新分の取り込みはできる様になった.
Joomla! を 4 に更新しなければならないのかもしれない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Class “JPlatform” not found

Joomla! 4 にあげてうまく動作しなかった環境
記事の一覧などに入ろうとすると
Class "JPlatform" not found
もう一つの Synology NAS で Joomla! 4 の環境が それなりに設定できた
その時 j2xml が対応してなさそうだったので,それを無効に.
j2xml を無効に
何とか記事の一覧などは表示できる様になった.
https://jml.mish.work/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Joomla! のメニューの追加

Joomla! などを再インストールして,記事のインポートまで行った環境.
Joomla!  Home
先頭のページは表示できるが,それぞれの記事が見られない状態.
Joomla!  The requested page can't be found.


記事の移行だけで,メニューなどはまだ追加していなかった.
Joomla!  メニューアイテムの追加


全体的に英語になっていたので…
管理画面の「システム」-「言語」.
Joomla!  「日本語」に
デフォルトを「日本語」に設定.
https://jml.mish.work/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

AfxGetInstanceHandle

コンソール AP を変更していて「MFC を使用」にすると AfxGetInstanceHandle で ASSERT .
AfxGetInstanceHandle ASSERT

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: c:\Temp\TOutline\tolmba\Debug.060\tolmba.exe
File: afxwin1.inl
Line: 19

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
中止(A)   再試行(R)   無視(I)   
---------------------------

この単体テスト用プロジェクトは,最初 MFC を使用しないでコードを書いていた.
が,幾つかの機能を付けていくと MFC を使用した既存のコードが必要になった.
その中で AfxGetInstanceHandle() を呼出している所があり,そこで ASSERT .


次の様に MFC の初期化 ::AfxWinInit を追加して対応.

int	_tmain	(int argc,TCHAR* argv[])
{
	#ifdef	_MFC_VER
	if (!::AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0)) {
		return	1 ;
		}
	#endif
	_tsetlocale(LC_ALL,_T("")) ;
//	...
	return	0 ;
	}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

::EnumFontFamilies…

フォントを列挙する方法を「ChatGPT」と「Bingチャット」で問合わせてみた.


ChatGPT

#include <windows.h>
#include <iostream>

int main() {
    HDC hdc = GetDC(NULL);
    LOGFONT lf;
    memset(&lf, 0, sizeof(LOGFONT));
    lf.lfCharSet = DEFAULT_CHARSET;
    std::cout << "Available Fonts:" << std::endl;
    EnumFontFamiliesEx(hdc, &lf, (FONTENUMPROC)EnumFontFamiliesCallback, 0, 0);
    ReleaseDC(NULL, hdc);
    return 0;
}

int CALLBACK EnumFontFamiliesCallback(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, DWORD FontType, LPARAM lParam) {
    std::cout << lpelfe->elfFullName << std::endl;
    return 1;
}

Bingチャット

#include <windows.h>
#include <iostream>
#include <string>

int CALLBACK EnumFontFamExProc(ENUMLOGFONTEXW* lpelfe, NEWTEXTMETRICEXW* lpntme, DWORD FontType, LPARAM lParam)
{
    std::wcout << lpelfe->elfFullName << std::endl;
    return 1;
}

int main()
{
    HDC hdc = GetDC(NULL);
    LOGFONTW lf = { 0 };
    lf.lfCharSet = DEFAULT_CHARSET;
    EnumFontFamiliesExW(hdc, &lf, (FONTENUMPROCW)EnumFontFamExProc, 0, 0);
    ReleaseDC(NULL, hdc);
    return 0;
}

以前よりも精度が上がった様に感じる.
EnumFontFamilies...

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 14.x での MFC のソース?

VC 2019 など最新でない VC を使用していると,MFC ソースにステップイン できなくなることがある.
VC 2019 MFC cstring.h
大抵は,インストールされている最新の MFC の場所を指定すれば良さそう.

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.37.32822\atlmfc\include
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.37.32822\atlmfc\src\mfc

VC 2019 atlmfc src mfc


VC のアップデートがあり更新したためか,一部で「ビルド時のものと異なる」と表示されるようになった.

---------------------------
Microsoft Visual Studio
---------------------------
ソース ファイル:C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.37.32822\atlmfc\include\cstringt.h
モジュール:C:\Windows\SysWOW64\mfc140ud.dll
プロセス:[28036] GLSmth.exe
ソース ファイルがモジュールがビルドされたときのものと異なります。デバッガーでこのファイルを使用しますか?
---------------------------
はい(Y)   いいえ(N)   
---------------------------

VC 2022 MFC cstring.h
VC 2022 で試しても同様になるので,アップデートの問題か?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

角の二等分線

https://en.wikipedia.org/wiki/Bisection
wiki にあるアニメーションをコードにしたもの.

Ld2	V2_get_bisector	(const Vd2& vp,const Vd2& vc,const Vd2& vn)
{
	//	    * vp    
	//	    |       
	//	    |       
	//	    |       * vcx
	//	    |     / 
	//	    | o /   
	//	    | / o   
	//	vc  * - - - - - - * vn
	Vd2	vcp = (vp-vc).Normalized() ;
	Vd2	vcn = (vn-vc).Normalized() ;
	Vd2	vcb = (vcp+vcn)/2. ;
	Vd2	vcx = vcb + vc ;
	{
		vcx = ::get_cross_line(vp,vn,vc,vcx) ;
		}
	Ld2	lbs(vc,vcx) ;
	return	lbs ;
	}

青い円弧が,最初の 2 行の Normalized .
次の中点を求めているのは,赤い円弧の交点を結ぶ線にあたる.
二等分線を対辺?まで延長.
二等分線
角の二等分線

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MariaDB「データベースをリセット」

先日 Synology NAS を DSM 7.2 に更新して,困った現象があった.
実際は DSM の問題ではなく,Joomla! のバージョンが 3.10 から 4.2.9 になったとこによるもの.
記事などの一覧を表示しようとすると,エラーになってしまう.
Joomla! 4 の記事一覧などでエラー


検索などもしてみたが,いい情報に引っ掛からない.
それでいろいろと弄っていて,間違って DS116 の DB を削除してしまった
MariaDB 10  「データベースを
リセット」
Joomla! や WordPress の記事がきれいになくなってしまった.


こうなると何でもできるので,WordPress と Joomla! のパッケージを削除,再インストール.
WordPress は,完全ではないが DS220 からインポート.
Joomla! の方はこれからだが,記事の一覧などを表示できそうなところまでは確認済み.
Joomla! 4  カテゴリ一覧


データをインポートするために J2XML を使おうとするが,4.0 での対応が不明.
エクステンションのインストール画面で検索しても出てこない(All Version とすると表示はされる).
検索すると J2XML 3.9 だと対応しているみたい.
pkg_j2xml-3.9.231.zip をダウンロードして,インストール.
1 つの記事だけ 何故かダメだったが,何とかインポートまではできた.
xml の中身を見ると環境依存文字?が含まれていた.
J2XML でインポートできなかったデータ
それを削除すると何とか通った.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

WebGL での 3D データ表示

さらに,以前作成した Web サーバ を利用して WebGL での表示に

bool	test	(void)
{
	Vd2A	pts ;
	{
		pts.push_back(Vd2(  0,  0)) ;
		pts.push_back(Vd2( 70,  0)) ;
		pts.push_back(Vd2( 90, 50)) ;
		pts.push_back(Vd2(100,100)) ;
		pts.push_back(Vd2( 50,100)) ;
		pts.push_back(Vd2( 30, 70)) ;
		pts.push_back(Vd2( 40, 30)) ;
		pts.push_back(Vd2(  0,  0)) ;
		}
	vv_PLF	vvplf ;
	{
		Vd3A	v3a = ::ToVd3A(pts) ;
		Vd4A	v4a = ::ToVd4A(v3a) ;
		PLF	plf_l(PLF::line,v4a) ;
		PLF	plf_f(PLF::face,v4a) ;
		v_PLF	v_plf ;
			v_plf.push_back(plf_l) ;
			v_plf.push_back(plf_f) ;
			vvplf.push_back(v_plf) ;
		}
	{
		tstring	tmp_path = ::Get_i_Tools_tmp_date() ;
		tstring	out_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("__.htm") ;
		tstring	outtname = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_t.htm") ;
		tstring	outnname = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T("_n.htm") ;
		{
			GonsA	gnsa = ::PLF_ToGonsA(vvplf) ;
			::GonsA_ToWGL(gnsa,out_name.c_str()) ;
				gnsa = ::GonsA_Triangulation(gnsa) ;
			::GonsA_ToWGL(gnsa,outtname.c_str()) ;
				gnsa = ::GonsA_CalcNormal   (gnsa) ;
			::GonsA_ToWGL(gnsa,outnname.c_str()) ;
			}
		{
			::start_web_server(tmp_path) ;
			}
		}
	tstring	g3_d_exe = ::get_g3_d_exe() ;
	if (!g3_d_exe.empty()) {
		tstring	tmp_path = ::Get_i_Tools_tmp_date() ;
		tstring	ipl_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T(".ipl") ;
		::To_ipl  (vvplf,ipl_name.c_str()) ;
		::start_g3_d(ipl_name.c_str()) ;
		}
	return	true ;
	}

簡易 Web サーバで WebGL

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Linux での GLUT 3D データ表示

昨日のコードをもう少し汎用的に修正.そしてそれを他から呼出せるように変更.
次の様なコードで 3D データを生成して,GLUT で表示できる様にした.

bool	test	(void)
{
	Vd2A	pts ;
	{
		pts.push_back(Vd2(  0,  0)) ;
		pts.push_back(Vd2( 70,  0)) ;
		pts.push_back(Vd2( 90, 50)) ;
		pts.push_back(Vd2(100,100)) ;
		pts.push_back(Vd2( 50,100)) ;
		pts.push_back(Vd2( 30, 70)) ;
		pts.push_back(Vd2( 40, 30)) ;
		pts.push_back(Vd2(  0,  0)) ;
		}
	vv_PLF	vvplf ;
	{
		Vd3A	v3a = ::ToVd3A(pts) ;
		Vd4A	v4a = ::ToVd4A(v3a) ;
		PLF	plf_l__ (PLF::line,v4a) ;
		PLF	plf_f__ (PLF::face,v4a) ;
		v_PLF	v_plf ;
			v_plf.push_back(plf_l__) ;
			v_plf.push_back(plf_f__) ;
			vvplf.push_back(v_plf) ;
		}
	tstring	txt_name = ::g3_d_get_txt_name() ;
	{
		tstring	tmp_path = ::Get_i_Tools_tmp_date() ;
		tstring	ipl_name = ::Path_AddLastSP(tmp_path) + ::Now_Format(_T("%H%M%S")) + _T(".ipl") ;
		::To_ipl  (vvplf,ipl_name.c_str()) ;
		::SaveText(txt_name.c_str(),ipl_name) ;
		}
	{
		::exec_g3_d(txt_name.c_str()) ;
		}
	return	true ;
	}

g3_d_gl

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.