窓助タッチバージョンアップ ver 1.13
自作ソフト 窓助タッチ をバージョンアップしました。
http://www.geocities.jp/mocchi_2003/soft.html
最新バージョンは 1.13です。
前回のバージョンアップで、キー操作による透明度調整を可能にしましたが、
テキストエディタでコピー&ペースト等を繰り返すと、窓助タッチのキー操作モード
への移行コマンドshift,shift,ctrlを無意識のうちに入力してしまうことが結構あり
ましたので、この移行コマンドの変更をしました。
ctrl,ctrl,ctrl,ctrl(最後のctrlは押しっぱなし)が新しいコマンドです。
変更はこれだけです。
http://www.geocities.jp/mocchi_2003/soft.html
最新バージョンは 1.13です。
前回のバージョンアップで、キー操作による透明度調整を可能にしましたが、
テキストエディタでコピー&ペースト等を繰り返すと、窓助タッチのキー操作モード
への移行コマンドshift,shift,ctrlを無意識のうちに入力してしまうことが結構あり
ましたので、この移行コマンドの変更をしました。
ctrl,ctrl,ctrl,ctrl(最後のctrlは押しっぱなし)が新しいコマンドです。
変更はこれだけです。
dlib C++ ライブラリ 本家アップデート(Ver.16.1)
Davis E. King氏が作成・配布している、dlib C++ ライブラリのバージョンが16.1になりました。
今回のバージョンアップにより、フォントの切り替えができるようになりました。
これまで配布してきた日本語化パッチでは、日本語に対応しているフォントクラスをパッチの
中に含めていましたが、今回のアップデートによりそのフォントクラスとdlibを分離できるよ
うになりましたので、今回から別々にしたいと思います。
中に含めていましたが、今回のアップデートによりそのフォントクラスとdlibを分離できるよ
うになりましたので、今回から別々にしたいと思います。
使い方
・dlib_widgets.hとnativefont.hをそれぞれインクルードする。
#include "dlib_widgets.h"
#include "nativefont.h"
・dlib_widgets.hとnativefont.hをそれぞれインクルードする。
#include "dlib_widgets.h"
#include "nativefont.h"
・drawable_window派生クラス(例 gui_api_ex.cppのwinクラス)のコンストラクタ内などで、
widget 派生クラスのオブジェクトのset_main_fontメソッドを呼ぶ
// (widget 派生クラスのオブジェクト名を b1とします)
この処理を行ったウィジェットはこれまでと同じように日本語が表示できるようになります。
widget 派生クラスのオブジェクトのset_main_fontメソッドを呼ぶ
// (widget 派生クラスのオブジェクト名を b1とします)
b1.set_main_font(nativefont::native_font::get_font());
これでb1で表示される文字がnative_fontクラスの文字になります。この処理を行ったウィジェットはこれまでと同じように日本語が表示できるようになります。
また、フォント切り替え機能を応用することで、専用のマークを文字として扱うことも簡単に
できるかと思います。
手順の例
(1) 専用マークが登録されているbdfフォントファイルをあらかじめ作成する。
(2) bdf_fontオブジェクトを作成する。
(3) bdf_font::read_bdf_file メソッドで(1)を読み込む
(4) 専用マークを表示したいwidgetにset_main_fontで(2)のフォントを登録する。
できるかと思います。
手順の例
(1) 専用マークが登録されているbdfフォントファイルをあらかじめ作成する。
(2) bdf_fontオブジェクトを作成する。
(3) bdf_font::read_bdf_file メソッドで(1)を読み込む
(4) 専用マークを表示したいwidgetにset_main_fontで(2)のフォントを登録する。
関連
- dlib C++ Library 目次
- dlib C++ ライブラリ メジャーバージョンアップ
- dlib C++ ライブラリ OpenGLサンプル
- dlib C++ ライブラリ GUI部品のマルチバイト化
dlib C++ ライブラリ メジャーバージョンアップ
dlib C++ ライブラリのバージョンが16.0になりました。
メジャーバージョンの変更(15=>16)ということで、色々追加修正が施されている模様です。
GUI周りで気になる追加修正点が数点あります。
・winmain関数の廃止
バージョン15台では、winmain関数がエントリポイントとなっていましたが、
今回のバージョンはこれを廃止し、通常のプログラムと同様にmain関数(またはWinMain関数)
からスタートするようになっています。
この変更に伴い、プログラム開始と同時にメッセージループを回す専用のスレッドが作られる
ようになりました。つまり、メッセージループはmain関数(WinMain関数)とは別のスレッドで
動きます。main関数(WinMain関数)を終了させるとプログラムが終了してしまいますので、
base_window::wait_until_closed()メソッドをmain関数(WinMain関数)の最後に入れて、
ウィンドウが閉じるまで処理を止めておく必要があります。
・winmain関数の廃止
バージョン15台では、winmain関数がエントリポイントとなっていましたが、
今回のバージョンはこれを廃止し、通常のプログラムと同様にmain関数(またはWinMain関数)
からスタートするようになっています。
この変更に伴い、プログラム開始と同時にメッセージループを回す専用のスレッドが作られる
ようになりました。つまり、メッセージループはmain関数(WinMain関数)とは別のスレッドで
動きます。main関数(WinMain関数)を終了させるとプログラムが終了してしまいますので、
base_window::wait_until_closed()メソッドをmain関数(WinMain関数)の最後に入れて、
ウィンドウが閉じるまで処理を止めておく必要があります。
・Unicode文字列の実装
UTF32を扱うための文字列クラスustringと、文字型unicharが実装されました。
C++標準のワイド文字列wstringでもUnicodeを扱うことができますが、
wstringはWindowsではUTF16、LinuxではUTF32という具合に内部形式が環境によりまちまち
となりますので、ustringを使うことで文字列形式をUTF32に統一できるというメリットがあります。
また、今回のバージョンアップにより合成文字かどうかを判定するメソッドが実装さ
れ、それをGUI周りの内部処理に使っています。まだ文字列の入出力はstd::stringを
使っていますが、今後ustringを使うようになるのかもしれません。
UTF32を扱うための文字列クラスustringと、文字型unicharが実装されました。
C++標準のワイド文字列wstringでもUnicodeを扱うことができますが、
wstringはWindowsではUTF16、LinuxではUTF32という具合に内部形式が環境によりまちまち
となりますので、ustringを使うことで文字列形式をUTF32に統一できるというメリットがあります。
また、今回のバージョンアップにより合成文字かどうかを判定するメソッドが実装さ
れ、それをGUI周りの内部処理に使っています。まだ文字列の入出力はstd::stringを
使っていますが、今後ustringを使うようになるのかもしれません。
自作パッチで追加した機能
・OpenGL機能 (いままでと同様です。)
・widget系クラスとクリップボード関数の文字列入出力のマルチバイト化及びUnicode化
オリジナルのライブラリでは現在もまだwidget系クラスの文字列入出力は
std::string(非マルチバイト)です。これを
しています。
・OpenGL機能 (いままでと同様です。)
・widget系クラスとクリップボード関数の文字列入出力のマルチバイト化及びUnicode化
オリジナルのライブラリでは現在もまだwidget系クラスの文字列入出力は
std::string(非マルチバイト)です。これを
・std::string(マルチバイト)
・std::wstring
・dlib::ustring
で入出力できるようにしました。また、内部形式もstd::stringからdlib::ustringに変更・std::wstring
・dlib::ustring
しています。
・std::string<=>std::wstring、std::string<=>dlib::ustring、std::wstring<=>dlib::ustring変換関数の実装
stringをwstringに変換するためには convert_mbstring_to_wstring
wstringをustringに変換するためには convert_wstring_to_utf32
ustringをstringに変換するためには convert_utf32_to_mbstring
という具合に関数名を作成しました。
ただし、std::stringはプラットフォーム依存のマルチバイト文字列として解釈します。
例えばWindowsならばCP932(シフトJIS)、Linuxならば環境により設定されている文字コード
(EUC-JPかUTF8といったところでしょうか)として解釈します。
stringをwstringに変換するためには convert_mbstring_to_wstring
wstringをustringに変換するためには convert_wstring_to_utf32
ustringをstringに変換するためには convert_utf32_to_mbstring
という具合に関数名を作成しました。
ただし、std::stringはプラットフォーム依存のマルチバイト文字列として解釈します。
例えばWindowsならばCP932(シフトJIS)、Linuxならば環境により設定されている文字コード
(EUC-JPかUTF8といったところでしょうか)として解釈します。
関連
- dlib C++ Library 目次
- dlib C++ ライブラリ OpenGLサンプル
- dlib C++ ライブラリ winmain関数について
- dlib C++ ライブラリ GUI部品のマルチバイト化
dlib C++ 本家ライブラリ アップデート + initialize_opengl関数バグ修正
dlib C++ ライブラリの本家のバージョンが15.11になったようです。
以下のような追加修正がそれぞれのバージョンアップで行われているようです。
それと、自分がパッチとして追加したinitialize_opengl関数の処理が原因で、
initialize_opengl関数を行ったウィンドウで突然OpenGL描画が利かなくなるという
不具合が発生していましたので、それも修正してあります。
initialize_opengl関数を行ったウィンドウで突然OpenGL描画が利かなくなるという
不具合が発生していましたので、それも修正してあります。
関連
- dlib C++ Library 目次
- dlib C++ ライブラリにglutの幾何系関数をそのまま組み込んでみた
- dlib C++ライブラリでOpenGLを使えるようにした
- dlib C++ ライブラリ GUI部品のマルチバイト化
dlib C++ ライブラリにglutの幾何系関数をそのまま組み込んでみた
以下の関数をdlib名前空間に入れてあります。
void glutWireCube( GLdouble size );
void glutSolidCube( GLdouble size );
void glutWireSphere( GLdouble radius, GLint slices, GLint stacks );
void glutSolidSphere( GLdouble radius, GLint slices, GLint stacks );
void glutWireCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
void glutSolidCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
void glutWireTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
void glutSolidTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
void glutWireDodecahedron( void );
void glutSolidDodecahedron( void );
void glutWireOctahedron( void );
void glutSolidOctahedron( void );
void glutWireTetrahedron( void );
void glutSolidTetrahedron( void );
void glutWireIcosahedron( void );
void glutSolidIcosahedron( void );
void glutWireTeapot( GLdouble size );
void glutSolidTeapot( GLdouble size );
freeglut 2.4.0 のソース freeglut_geometry.c と freeglut_teapot.c に対してvoid glutSolidCube( GLdouble size );
void glutWireSphere( GLdouble radius, GLint slices, GLint stacks );
void glutSolidSphere( GLdouble radius, GLint slices, GLint stacks );
void glutWireCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
void glutSolidCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
void glutWireTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
void glutSolidTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
void glutWireDodecahedron( void );
void glutSolidDodecahedron( void );
void glutWireOctahedron( void );
void glutSolidOctahedron( void );
void glutWireTetrahedron( void );
void glutSolidTetrahedron( void );
void glutWireIcosahedron( void );
void glutSolidIcosahedron( void );
void glutWireTeapot( GLdouble size );
void glutSolidTeapot( GLdouble size );
以下の処理を施してます。
関連
- dlib C++ Library 目次
- dlib C++ ライブラリ OpenGLサンプル
- dlib C++ ライブラリ winmain関数について
- dlib C++ ライブラリ GUI部品のマルチバイト化
dlib C++ Library 目次
自分が書いたdlib C++ ライブラリ に関するブログエントリが多くなってきたので目次を作ってみました。
- dlib C++ ライブラリ バージョンアップ (ver 17.6)
- dlib C++ ライブラリ 本家アップデート(Ver.17.1)
- dlib C++ ライブラリでAntTweakBarを使う
- dlib C++ ライブラリ 本家アップデート(Ver.16.1)
- dlib C++ ライブラリ メジャーバージョンアップ
- dlib C++ 本家ライブラリ アップデート + initialize_opengl関数バグ修正
- dlib C++ ライブラリにglutの幾何系関数をそのまま組み込んでみた
- dlib C++ ライブラリ OpenGLサンプル
- dlib C++ライブラリでOpenGLを使えるようにした
- dlib C++ ライブラリ winmain関数について
- dlib C++ ライブラリ GUI部品のマルチバイト化
- オープンソースでGPLでもLGPLでもなくてマルチプラットフォームなC/C++用GUIライブラリ
- dlib C++ ライブラリ 本家アップデート(Ver.17.1)
- dlib C++ ライブラリでAntTweakBarを使う
- dlib C++ ライブラリ 本家アップデート(Ver.16.1)
- dlib C++ ライブラリ メジャーバージョンアップ
- dlib C++ 本家ライブラリ アップデート + initialize_opengl関数バグ修正
- dlib C++ ライブラリにglutの幾何系関数をそのまま組み込んでみた
- dlib C++ ライブラリ OpenGLサンプル
- dlib C++ライブラリでOpenGLを使えるようにした
- dlib C++ ライブラリ winmain関数について
- dlib C++ ライブラリ GUI部品のマルチバイト化
- オープンソースでGPLでもLGPLでもなくてマルチプラットフォームなC/C++用GUIライブラリ
本家ライブラリ配布元
http://dclib.sourceforge.net/
もっちーの小部屋 自作のソフトを公開してます。
http://www.geocities.jp/mocchi_2003/index.html