| | 794 | |
|---|
| | 795 | |
|---|
| | 796 | /// |
|---|
| | 797 | int getFirstCharIndexFromLine(int line) |
|---|
| | 798 | { |
|---|
| | 799 | if(!isHandleCreated) |
|---|
| | 800 | return -1; // ... |
|---|
| | 801 | if(line < 0) |
|---|
| | 802 | return -1; |
|---|
| | 803 | return SendMessageA(hwnd, EM_LINEINDEX, line, 0); |
|---|
| | 804 | } |
|---|
| | 805 | |
|---|
| | 806 | /// ditto |
|---|
| | 807 | int getFirstCharIndexOfCurrentLine() |
|---|
| | 808 | { |
|---|
| | 809 | if(!isHandleCreated) |
|---|
| | 810 | return -1; // ... |
|---|
| | 811 | return SendMessageA(hwnd, EM_LINEINDEX, -1, 0); |
|---|
| | 812 | } |
|---|
| | 813 | |
|---|
| | 814 | |
|---|
| | 815 | /// |
|---|
| | 816 | int getLineFromCharIndex(int charIndex) |
|---|
| | 817 | { |
|---|
| | 818 | if(!isHandleCreated) |
|---|
| | 819 | return -1; // ... |
|---|
| | 820 | if(charIndex < 0) |
|---|
| | 821 | return -1; |
|---|
| | 822 | return SendMessageA(hwnd, EM_LINEFROMCHAR, charIndex, 0); |
|---|
| | 823 | } |
|---|
| | 824 | |
|---|
| | 825 | |
|---|
| | 826 | /// |
|---|
| | 827 | Point getPositionFromCharIndex(int charIndex) |
|---|
| | 828 | { |
|---|
| | 829 | if(!isHandleCreated) |
|---|
| | 830 | return Point(0, 0); // ... |
|---|
| | 831 | if(charIndex < 0) |
|---|
| | 832 | return Point(0, 0); |
|---|
| | 833 | POINT point; |
|---|
| | 834 | SendMessageA(hwnd, EM_POSFROMCHAR, cast(WPARAM)&point, charIndex); |
|---|
| | 835 | return Point(point.x, point.y); |
|---|
| | 836 | } |
|---|
| | 837 | |
|---|
| | 838 | /// ditto |
|---|
| | 839 | int getCharIndexFromPosition(Point pt) |
|---|
| | 840 | { |
|---|
| | 841 | if(!isHandleCreated) |
|---|
| | 842 | return -1; // ... |
|---|
| | 843 | if(!multiline) |
|---|
| | 844 | return 0; |
|---|
| | 845 | auto lresult = SendMessageA(hwnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y)); |
|---|
| | 846 | if(-1 == lresult) |
|---|
| | 847 | return -1; |
|---|
| | 848 | return cast(int)cast(short)(lresult & 0xFFFF); |
|---|
| | 849 | } |
|---|