Raclamusi
Raclamusi
`TextInput::UpdateText()` や `Platform::Web::TextInput::GetCursorIndex()` の実装に合わせて、`String` のインデックスに合わせるのがよさそうです。
**`SimpleGUI::TextBox()` 異体字対応の実装案** https://gist.github.com/Raclamusi/1caaacf34a552be9881ba7877223c683/29caa5de8059cbc4c85b4f0c36d36915a321b7b9 Revisions: https://gist.github.com/Raclamusi/1caaacf34a552be9881ba7877223c683/revisions#diff-ff9db3cb6025e343dacac7fe1b565394e85d2b614be4ab7b7fedb99d8e8b762d `Font::getGlyphClusters()` から取得できるグリフに対応する文字のインデックスを利用して、カーソルの移動をグリフ単位で行うようにしました。 グリフ単位での削除については `TextInput::UpdateText()` をいじる必要があるため対応しませんでしたが、これはあまり重要ではないと思います。 フォントのフォールバックなしで実装しています。
`SimpleGUI::TextArea()` で `GlyphCluster` から取った情報を `TextAreaEditState` にキャッシュするようにしました。 https://gist.github.com/Raclamusi/1caaacf34a552be9881ba7877223c683/f7cb5131578fdd800107ab46d95f588f4dfd2c9e Revisions: https://gist.github.com/Raclamusi/1caaacf34a552be9881ba7877223c683/revisions#diff-ff9db3cb6025e343dacac7fe1b565394e85d2b614be4ab7b7fedb99d8e8b762d
この問題、Boost 1.78.0 では修正されてそうです。 Wandbox 上の Boost で実験しました。 https://wandbox.org/permlink/lw5WQpxdtb7SrZJi ```c++ # include // OpenSiv3D v0.6.13 void Main() { const Polygon polygon { Array{ Vec2{ 0x1.da5b167041beap+2, -0x1.3518a4c8d776ep+3 }, Vec2{ 0x1.4000000000002p+3, -0x1.4p+3 },...
`TextToSpeech::Speak()` の直後に `TextToSpeech::IsSpeaking()` が `true` を返すようにすると、実際に再生が開始されたタイミングを取得する方法がなくなってしまいます。 `TextToSpeech::Speak()` を呼び出したタイミングは `TextToSpeech::IsSpeaking()` を呼ばずともわかる( `TextToSpeech::Speak()` を呼び出すときにフラグを立てればよい)ので、`TextToSpeech::IsSpeaking()` の動作は変更しないのもアリだと思います。 ヘッダのコメントにこの仕様を明記することで、ある程度この仕様による混乱は避けられると思います。
**`Script` に実装されていない機能** Array - `assign` - `at` - `operator bool` - `max_size` - `capacity` - `shrink_to_fit` - `swap` - `release` - `size_bytes` - `pop_front_N` - `pop_back_N` - `append` - `chunk`...
大雑把に調べているので、抜けがあったり、関係ないものが混ざってるかもです。 イテレータやアロケータ関連、可変長引数を取るものは除いてあります。