Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

アウトライン解析にタイプ別設定フォントを使う #1450

Closed

Conversation

suconbu
Copy link
Member

@suconbu suconbu commented Oct 31, 2020

PR の目的

#1326 - OSDNより転載:アウトライン解析のフォント

アウトライン解析のリストビュー / ツリービュー部分に「タイプ別設定」または「フォント設定」のフォントを使うようにします。
※現在は選択言語が日本語の時にはシステムフォント (Yu Gothic UI)、英語の時には Tahoma が使われます。

変更前1 (#1421 マージ前)

フォント設定:VL Gothic
image

変更前2 (#1421 マージ後)

フォント設定:VL Gothic
image

変更後

フォント設定:VL Gothic
image

フォント設定:HGP行書体
image

フォント設定:Segoe Script
image

カテゴリ

  • 仕様変更

PR の背景

PR のメリット

PR のデメリット (トレードオフとかあれば)

仕様・動作説明

アウトライン解析のリストビュー / ツリービューに対してエディタ部分 (CEditWnd) と同じフォントを設定します。
ただしフォントのサイズは元々リストビュー / ツリービューに設定されていたフォントと同じサイズとします。

テスト内容

PR の影響範囲

関連 issue, PR

#1326 #1400

参考資料

@AppVeyorBot
Copy link

Build sakura 1.0.3217 completed (commit 8a287cf216 by @suconbu)

@beru beru added the specification change ■仕様変更 label Oct 31, 2020
@@ -230,5 +232,7 @@ class CDlgFuncList final : public CDialog
RECT m_rcItems[12];

bool m_bFuncInfoArrIsUpToDate;

CFont m_cFontView;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

アフォな指摘だなぁ~と感じると思うんですがまじめな指摘です。

変数名に違和感があります。

m_cFontView;

パッと見、Viewを表す変数に見えます。

日本語で書くと「ビューフォント」を表す変数だと思うので、そのままViewFontとすべきな気がします。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

違和感ありますね。

多くの箇所でメンバ変数名は「"m_" + {型} + {任意}」の形式を取っていますが、{型} の部分をどう扱うかが自分としては曖昧だったりします。
(例えば、データ型が HFONT の場合は "h" なのか、あるいは "hFont" まで含んでいるのか?)

{型} の部分については、できあがる名前の自然さを考えると一文字のみ、ハンドルなら "h"、クラスなら "c" がいいような気がします。
今回のケースにこれを適用するとm_cViewFontとしっくりきますね。

@@ -192,6 +192,50 @@ class CDCFont
HFONT m_hFont;
};

class CFont
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

一般的な名前のクラスを作るときは CMyFont のような名前にする文化のような気がします。
例外、MFCモロパクりの CWnd、CDialog 。

こういうクソみたいな指摘によりプロジェクトの進化は妨げられてきた歴史があります。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MFC のそれと被っているので別名にするつもりでしたが、いい名前が思いつかなかったので一旦これにしています。

::DeleteObject( m_hFont );
}
}
CFont& operator=(CFont& other) = delete;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

シグニチャは正確に記載すべきです。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(const CFont& other) でした。

{
public:
CFont() = default;
CFont( const CFont& font ) : CFont( font.m_hFont ){}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コピー代入演算子がdeleteなのに、コピーコンストラクタが有効。
これは普通に「なんでやねん!」だと思います。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コピー代入を蓋した意図は、ムーブ代入のつもりがコピー代入をしてしまうミスを検知するためです。
一方で初期化ではコピーが必要なケースはあると考えているのでコピーコンストラクタは有効としています。

}
HFONT GetHandle(){ return m_hFont; }
LONG GetLogicalHeight(){ return m_nLogicalHeight; }
const TCHAR* GetFaceName(){ return m_strFaceName.c_str(); }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3つともconst修飾を付けられるメソッドです。

const TCHAR* GetFaceName(){ return m_strFaceName.c_str(); }

private:
LOGFONT GetLogFont( HFONT hFont ){
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これもconstにできます。
というか、引数hFontをとるならstaticにできます。
引数チェックしてないからprivateにしたいんだとは思いますが、
こういうアフォみたいにクソ細かいことを考えるのがメソッド設計だと思います。

* クラス名変更(CFont->CGdiFont)
* Get系メソッドにconst付加
* コピー代入演算子の引数にconst付加
* GetLogFontをstaticにした
* 変数名見直し
@suconbu
Copy link
Member Author

suconbu commented Nov 1, 2020

指摘ありがとうございます。コメント頂いた所を修正しました。

@AppVeyorBot
Copy link

Build sakura 1.0.3220 completed (commit a7c29b7e8b by @suconbu)

@suconbu
Copy link
Member Author

suconbu commented Mar 21, 2021

「タイプ別設定のフォントに併せる」とした場合の見た目を確認することができましたので一旦クローズします。

エディタ部分に設定されているフォント次第では逆に見づらくなってしまうこともあったため、もし実際に対応するならば「システムフォント (現状)」「エディタ部分と連動 (この試作)」「任意のフォント」からユーザーが選択できると良さそうです。

@suconbu suconbu closed this Mar 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
specification change ■仕様変更
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants