Từ vị trí mIndex, đặt vòng loop quét dò qua phải Xét xem vị trí đang dò có phải là space hoặc tab

Một phần của tài liệu Nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên desktop windows.doc (Trang 76 - 78)

- Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí đầu chuỗi (vị trí 1).

* Kết quả đạt được: Vị trí đầu của từ.

- Từ vị trí mIndex, đặt vòng loop quét dò qua phải - Xét xem vị trí đang dò có phải là space hoặc tab - Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí cuối chuỗi (chiều dài chuỗi). * Kết quả đạt được: Vị trí cuối của từ.

tại: tmAveCharWidth (hàm GetTextMetrics) pt (mIndex) theo công thức:

mIndex=(tđộ.x pt - tđộ.x TextOut)/tmAveCharWidth - Cập nhật CP: Gán lại toạ độ TextOut là CP - Trái/giữa/phải: Chỉnh toạ độ trái/phải - Đỉnh/đáy/baseline: Chỉnh toạ độ trên/dưới

suy ra toạ độ của ký tự mIndex trên màn hình

cho đến khi pt qua trái. cho đến khi pt qua phải.

SVTH : Lương Cao Hoài Tâm Lớp TH40

- Từ vị trí mIndex, đặt vòng loop quét dò qua trái - Xét xem vị trí đang dò có phải là space hoặc tab - Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí đầu chuỗi (vị trí 1).

* Kết quả đạt được: Vị trí đầu của từ.

- Từ vị trí mIndex, đặt vòng loop quét dò qua phải - Xét xem vị trí đang dò có phải là space hoặc tab - Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí cuối chuỗi (chiều dài chuỗi). * Kết quả đạt được: Vị trí cuối của từ.

Bắt đầu

Chuyển toạ độ xuất text trong TextOut; ExtTextOut từ logic qua fullscreen: hàm GetViewportOrgEx; GetDCOrg

pt nằm trong khung bao? (dùng hàm PtInRect)

- Lấy bề rộng ký tự trung bình của font chữ hiện tại: tmAveCharWidth (hàm GetTextMetrics) - Tính chỉ số vị trí ký tự trong dòng text tại toạ độ pt (mIndex) theo công thức:

mIndex=(tđộ.x pt - tđộ.x TextOut)/tmAveCharWidth

Trích từ tại vị trí vừa tính được trong chuỗi (Xin xem lưu đồ kế tiếp)

Kết thúc

LƯU ĐỒ HÀM TRÍCH TỪ TRONG DÒNG TEXT TẠITỌA ĐỘ FullScreen pt (GTDLL - GetWordUnderPoint) TỌA ĐỘ FullScreen pt (GTDLL - GetWordUnderPoint)

Tính khung bao của dòng text (hàm GetTextExtent) Hiệu chỉnh lại vị trí khung bao và toạ độ xuất text tùy theo giá trị của GetTextAlign như sau:

- Cập nhật CP: Gán lại toạ độ TextOut là CP - Trái/giữa/phải: Chỉnh toạ độ trái/phải - Đỉnh/đáy/baseline: Chỉnh toạ độ trên/dưới

Tinh chỉnh lại mIndex bằng cách:

- Tính khung bao chuỗi text từ 1 đến mIndex để suy ra toạ độ của ký tự mIndex trên màn hình - Xét xem pt nằm bên trái hay bên phải mIndex - Nếu pt bên phải thì tăng mIndex rồi loop lại cho đến khi pt qua trái.

- Nếu pt bên trái thì giảm mIndex rồi loop lại cho đến khi pt qua phải.

Yes

Bắt đầu

- Từ vị trí mIndex, đặt vòng loop quét dò qua trái - Xét xem vị trí đang dò có phải là space hoặc tab - Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí đầu chuỗi (vị trí 1).

* Kết quả đạt được: Vị trí đầu của từ.

Kết thúc

LƯU ĐỒ GIẢI THUẬT TRÍCH TỪ TRONG DÒNG TEXTTẠI VỊ TRÍ mIndex (mở rộng lưu đồ GetWordUnderPoint) TẠI VỊ TRÍ mIndex (mở rộng lưu đồ GetWordUnderPoint)

- Từ vị trí mIndex, đặt vòng loop quét dò qua phải - Xét xem vị trí đang dò có phải là space hoặc tab - Xét xem vị trí đang dò có phải là space hoặc tab - Vòng loop kết thúc khi dò được vị trí space hoặc tab, hoặc dò đến vị trí cuối chuỗi (chiều dài chuỗi). * Kết quả đạt được: Vị trí cuối của từ. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên desktop windows.doc (Trang 76 - 78)