diff options
| author | Kim F. Storm | 2003-03-21 22:56:52 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2003-03-21 22:56:52 +0000 |
| commit | e080d3ebbf5823a103ff1f9c7614f05e55d91793 (patch) | |
| tree | 2289a36a54a56d6edf18cb0b8d983a31701cf0ad /src/w32term.c | |
| parent | 1853f74c1cede3a355e61ee504ec6289e0c58833 (diff) | |
| download | emacs-e080d3ebbf5823a103ff1f9c7614f05e55d91793.tar.gz emacs-e080d3ebbf5823a103ff1f9c7614f05e55d91793.zip | |
* xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords):
Add generic versions here. Remove system specific versions
defined elsewhere.
Diffstat (limited to 'src/w32term.c')
| -rw-r--r-- | src/w32term.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/src/w32term.c b/src/w32term.c index d539d53e691..24167caa3a8 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -2800,106 +2800,6 @@ x_get_keysym_name (keysym) | |||
| 2800 | 2800 | ||
| 2801 | /* Mouse clicks and mouse movement. Rah. */ | 2801 | /* Mouse clicks and mouse movement. Rah. */ |
| 2802 | 2802 | ||
| 2803 | /* Given a pixel position (PIX_X, PIX_Y) on frame F, return glyph | ||
| 2804 | co-ordinates in (*X, *Y). Set *BOUNDS to the rectangle that the | ||
| 2805 | glyph at X, Y occupies, if BOUNDS != 0. If NOCLIP is non-zero, do | ||
| 2806 | not force the value into range. */ | ||
| 2807 | |||
| 2808 | void | ||
| 2809 | pixel_to_glyph_coords (f, pix_x, pix_y, x, y, bounds, noclip) | ||
| 2810 | FRAME_PTR f; | ||
| 2811 | register int pix_x, pix_y; | ||
| 2812 | register int *x, *y; | ||
| 2813 | RECT *bounds; | ||
| 2814 | int noclip; | ||
| 2815 | { | ||
| 2816 | /* Support tty mode: if Vwindow_system is nil, behave correctly. */ | ||
| 2817 | if (NILP (Vwindow_system)) | ||
| 2818 | { | ||
| 2819 | *x = pix_x; | ||
| 2820 | *y = pix_y; | ||
| 2821 | return; | ||
| 2822 | } | ||
| 2823 | |||
| 2824 | /* Arrange for the division in PIXEL_TO_CHAR_COL etc. to round down | ||
| 2825 | even for negative values. */ | ||
| 2826 | if (pix_x < 0) | ||
| 2827 | pix_x -= FONT_WIDTH (FRAME_FONT (f)) - 1; | ||
| 2828 | if (pix_y < 0) | ||
| 2829 | pix_y -= (f)->output_data.w32->line_height - 1; | ||
| 2830 | |||
| 2831 | pix_x = PIXEL_TO_CHAR_COL (f, pix_x); | ||
| 2832 | pix_y = PIXEL_TO_CHAR_ROW (f, pix_y); | ||
| 2833 | |||
| 2834 | if (bounds) | ||
| 2835 | { | ||
| 2836 | bounds->left = CHAR_TO_PIXEL_COL (f, pix_x); | ||
| 2837 | bounds->top = CHAR_TO_PIXEL_ROW (f, pix_y); | ||
| 2838 | bounds->right = bounds->left + FONT_WIDTH (FRAME_FONT (f)) - 1; | ||
| 2839 | bounds->bottom = bounds->top + f->output_data.w32->line_height - 1; | ||
| 2840 | } | ||
| 2841 | |||
| 2842 | if (!noclip) | ||
| 2843 | { | ||
| 2844 | if (pix_x < 0) | ||
| 2845 | pix_x = 0; | ||
| 2846 | else if (pix_x > FRAME_WINDOW_WIDTH (f)) | ||
| 2847 | pix_x = FRAME_WINDOW_WIDTH (f); | ||
| 2848 | |||
| 2849 | if (pix_y < 0) | ||
| 2850 | pix_y = 0; | ||
| 2851 | else if (pix_y > f->height) | ||
| 2852 | pix_y = f->height; | ||
| 2853 | } | ||
| 2854 | |||
| 2855 | *x = pix_x; | ||
| 2856 | *y = pix_y; | ||
| 2857 | } | ||
| 2858 | |||
| 2859 | |||
| 2860 | /* Given HPOS/VPOS in the current matrix of W, return corresponding | ||
| 2861 | frame-relative pixel positions in *FRAME_X and *FRAME_Y. If we | ||
| 2862 | can't tell the positions because W's display is not up to date, | ||
| 2863 | return 0. */ | ||
| 2864 | |||
| 2865 | int | ||
| 2866 | glyph_to_pixel_coords (w, hpos, vpos, frame_x, frame_y) | ||
| 2867 | struct window *w; | ||
| 2868 | int hpos, vpos; | ||
| 2869 | int *frame_x, *frame_y; | ||
| 2870 | { | ||
| 2871 | int success_p; | ||
| 2872 | |||
| 2873 | xassert (hpos >= 0 && hpos < w->current_matrix->matrix_w); | ||
| 2874 | xassert (vpos >= 0 && vpos < w->current_matrix->matrix_h); | ||
| 2875 | |||
| 2876 | if (display_completed) | ||
| 2877 | { | ||
| 2878 | struct glyph_row *row = MATRIX_ROW (w->current_matrix, vpos); | ||
| 2879 | struct glyph *glyph = row->glyphs[TEXT_AREA]; | ||
| 2880 | struct glyph *end = glyph + min (hpos, row->used[TEXT_AREA]); | ||
| 2881 | |||
| 2882 | *frame_y = row->y; | ||
| 2883 | *frame_x = row->x; | ||
| 2884 | while (glyph < end) | ||
| 2885 | { | ||
| 2886 | *frame_x += glyph->pixel_width; | ||
| 2887 | ++glyph; | ||
| 2888 | } | ||
| 2889 | |||
| 2890 | success_p = 1; | ||
| 2891 | } | ||
| 2892 | else | ||
| 2893 | { | ||
| 2894 | *frame_y = *frame_x = 0; | ||
| 2895 | success_p = 0; | ||
| 2896 | } | ||
| 2897 | |||
| 2898 | *frame_y = WINDOW_TO_FRAME_PIXEL_Y (w, *frame_y); | ||
| 2899 | *frame_x = WINDOW_TO_FRAME_PIXEL_X (w, *frame_x); | ||
| 2900 | return success_p; | ||
| 2901 | } | ||
| 2902 | |||
| 2903 | /* Parse a button MESSAGE. The button index is returned in PBUTTON, and | 2803 | /* Parse a button MESSAGE. The button index is returned in PBUTTON, and |
| 2904 | the state in PUP. XBUTTON provides extra information for extended mouse | 2804 | the state in PUP. XBUTTON provides extra information for extended mouse |
| 2905 | button messages. Returns FALSE if unable to parse the message. */ | 2805 | button messages. Returns FALSE if unable to parse the message. */ |