-
Notifications
You must be signed in to change notification settings - Fork 163
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
レイアウト桁位置に対するロジック桁位置の進め方を改善する #1658
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -153,19 +153,20 @@ class CNativeW final : public CNative{ | |
|
||
public: | ||
// -- -- staticインターフェース -- -- // | ||
static CLogicInt GetSizeOfChar( const wchar_t* pData, int nDataLen, int nIdx ); //!< 指定した位置の文字がwchar_t何個分かを返す | ||
static CHabaXInt GetHabaOfChar( const wchar_t* pData, int nDataLen, int nIdx, | ||
bool bEnableExtEol, CCharWidthCache& cache = GetCharWidthCache() ); | ||
//! 指定した位置の文字がwchar_t何個分かを返す | ||
static CLogicInt GetSizeOfChar( const wchar_t* pData, int nDataLen, int nIdx ); | ||
static CLogicInt GetSizeOfChar( const CStringRef& cStr, int nIdx ) | ||
{ return GetSizeOfChar( cStr.GetPtr(), cStr.GetLength(), nIdx ); } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 追加したオーバーロードを検証するテストが欲しいです。 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CStringRef を扱う GetKetaOfChar There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 対応完了。 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
これはたぶん私のやらかしです。追加していただきありがとうございます。 |
||
//! 指定した位置の文字が半角何個分かを返す | ||
static CKetaXInt GetKetaOfChar( const wchar_t* pData, int nDataLen, int nIdx, | ||
CCharWidthCache& cache = GetCharWidthCache() ); | ||
static CKetaXInt GetKetaOfChar(const CStringRef& cStr, int nIdx, CCharWidthCache& cache = GetCharWidthCache()) | ||
{ return GetKetaOfChar(cStr.GetPtr(), cStr.GetLength(), nIdx, cache); } | ||
static const wchar_t* GetCharNext( const wchar_t* pData, int nDataLen, const wchar_t* pDataCurrent ); //!< ポインタで示した文字の次にある文字の位置を返します | ||
static const wchar_t* GetCharPrev(const wchar_t* pData, size_t nDataLen, const wchar_t* pDataCurrent); //!< ポインタで示した文字の直前にある文字の位置を返します | ||
|
||
static CKetaXInt GetKetaOfChar( const CStringRef& cStr, int nIdx ) //!< 指定した位置の文字が半角何個分かを返す | ||
{ | ||
return GetKetaOfChar(cStr.GetPtr(), cStr.GetLength(), nIdx); | ||
} | ||
static CHabaXInt GetHabaOfChar( const wchar_t* pData, int nDataLen, int nIdx, | ||
bool bEnableExtEol, CCharWidthCache& cache = GetCharWidthCache() ); | ||
static CLayoutXInt GetColmOfChar( const wchar_t* pData, | ||
int nDataLen, int nIdx, bool bEnableExtEol ) | ||
{ return GetHabaOfChar(pData,nDataLen,nIdx, bEnableExtEol); } | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ、削除して大丈夫ですか? ゼロ幅スペースなどの幅0pxの文字でも1px描画するのが今の仕様であるように見えます。消してしまうと仕様変更になりませんか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
現時点ではここに来るのは次の文字の時だけです( IS_KEYWORD_CHAR の仕様による)。
#$0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ\_abcdefghijklmnopqrstuvwxyz
自分には過去に行ったサロゲートペア対応時の削除漏れに見えました。
また、この箇所以外に0桁を1桁にみなす動作をしている箇所はすべてコメントアウトされているはずです。
(このPRではCode Smellになってしまうので除去しています。)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
おっしゃる通り、IS_KEYWORD_CHAR の条件があるので不要ということでよさそうですね。了解しました。