emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/xterm.c


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/src/xterm.c
Date: Fri, 21 Mar 2003 17:56:53 -0500

Index: emacs/src/xterm.c
diff -c emacs/src/xterm.c:1.783 emacs/src/xterm.c:1.784
*** emacs/src/xterm.c:1.783     Fri Mar 21 16:47:45 2003
--- emacs/src/xterm.c   Fri Mar 21 17:56:50 2003
***************
*** 3474,3572 ****
  
  /* Mouse clicks and mouse movement.  Rah.  */
  
- /* Given a pixel position (PIX_X, PIX_Y) on frame F, return glyph
-    co-ordinates in (*X, *Y).  Set *BOUNDS to the rectangle that the
-    glyph at X, Y occupies, if BOUNDS != 0.  If NOCLIP is non-zero, do
-    not force the value into range.  */
- 
- void
- pixel_to_glyph_coords (f, pix_x, pix_y, x, y, bounds, noclip)
-      FRAME_PTR f;
-      register int pix_x, pix_y;
-      register int *x, *y;
-      XRectangle *bounds;
-      int noclip;
- {
-   /* Arrange for the division in PIXEL_TO_CHAR_COL etc.  to round down
-      even for negative values.  */
-   if (pix_x < 0)
-     pix_x -= FONT_WIDTH ((f)->output_data.x->font) - 1;
-   if (pix_y < 0)
-     pix_y -= (f)->output_data.x->line_height - 1;
- 
-   pix_x = PIXEL_TO_CHAR_COL (f, pix_x);
-   pix_y = PIXEL_TO_CHAR_ROW (f, pix_y);
- 
-   if (bounds)
-     {
-       bounds->width  = FONT_WIDTH  (f->output_data.x->font);
-       bounds->height = f->output_data.x->line_height;
-       bounds->x = CHAR_TO_PIXEL_COL (f, pix_x);
-       bounds->y = CHAR_TO_PIXEL_ROW (f, pix_y);
-     }
- 
-   if (!noclip)
-     {
-       if (pix_x < 0)
-       pix_x = 0;
-       else if (pix_x > FRAME_WINDOW_WIDTH (f))
-       pix_x = FRAME_WINDOW_WIDTH (f);
- 
-       if (pix_y < 0)
-       pix_y = 0;
-       else if (pix_y > f->height)
-       pix_y = f->height;
-     }
- 
-   *x = pix_x;
-   *y = pix_y;
- }
- 
- 
- /* Given HPOS/VPOS in the current matrix of W, return corresponding
-    frame-relative pixel positions in *FRAME_X and *FRAME_Y.  If we
-    can't tell the positions because W's display is not up to date,
-    return 0.  */
- 
- int
- glyph_to_pixel_coords (w, hpos, vpos, frame_x, frame_y)
-      struct window *w;
-      int hpos, vpos;
-      int *frame_x, *frame_y;
- {
-   int success_p;
- 
-   xassert (hpos >= 0 && hpos < w->current_matrix->matrix_w);
-   xassert (vpos >= 0 && vpos < w->current_matrix->matrix_h);
- 
-   if (display_completed)
-     {
-       struct glyph_row *row = MATRIX_ROW (w->current_matrix, vpos);
-       struct glyph *glyph = row->glyphs[TEXT_AREA];
-       struct glyph *end = glyph + min (hpos, row->used[TEXT_AREA]);
- 
-       *frame_y = row->y;
-       *frame_x = row->x;
-       while (glyph < end)
-       {
-         *frame_x += glyph->pixel_width;
-         ++glyph;
-       }
- 
-       success_p = 1;
-     }
-   else
-     {
-       *frame_y = *frame_x = 0;
-       success_p = 0;
-     }
- 
-   *frame_y = WINDOW_TO_FRAME_PIXEL_Y (w, *frame_y);
-   *frame_x = WINDOW_TO_FRAME_PIXEL_X (w, *frame_x);
-   return success_p;
- }
- 
- 
  /* Prepare a mouse-event in *RESULT for placement in the input queue.
  
     If the event is a button press, then note that we have grabbed
--- 3474,3479 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]