/* Fringe handling (split from xdisp.c).
- Copyright (C) 1985-1988, 1993-1995, 1997-2013 Free Software
+ Copyright (C) 1985-1988, 1993-1995, 1997-2014 Free Software
Foundation, Inc.
This file is part of GNU Emacs.
#include <config.h>
#include <stdio.h>
+#include <byteswap.h>
+
#include "lisp.h"
#include "frame.h"
#include "window.h"
#include "blockinput.h"
#include "termhooks.h"
-#ifdef HAVE_WINDOW_SYSTEM
-
/* Fringe bitmaps are represented in three different ways:
Logical bitmaps are used internally to denote things like
unsigned width : 8;
unsigned period : 8;
unsigned align : 2;
- unsigned dynamic : 1;
+ bool_bf dynamic : 1;
};
\f
#define NO_FRINGE_BITMAP 0
#define UNDEF_FRINGE_BITMAP 1
-#define MAX_STANDARD_FRINGE_BITMAPS (sizeof (standard_bitmaps)/sizeof (standard_bitmaps[0]))
+#define MAX_STANDARD_FRINGE_BITMAPS ARRAYELTS (standard_bitmaps)
static struct fringe_bitmap **fringe_bitmaps;
static Lisp_Object *fringe_faces;
static int max_fringe_bitmaps;
-#ifndef HAVE_NS
-static
-#endif
int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
return;
}
- PREPARE_FACE_FOR_DISPLAY (f, p.face);
+ prepare_face_for_display (f, p.face);
/* Clear left fringe if no bitmap to draw or if bitmap doesn't fill
the fringe. */
{
/* If W has a vertical border to its left, don't draw over it. */
wd -= ((!WINDOW_LEFTMOST_P (w)
+ /* This could be wrong when we allow window local
+ right dividers - but the window on the left is hard
+ to get. */
+ && !FRAME_RIGHT_DIVIDER_WIDTH (f)
&& !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
/* But don't reduce the fringe width if the window
has a left margin, because that means we are not
}
}
- FRAME_RIF (f)->draw_fringe_bitmap (w, row, &p);
+ if (p.x >= WINDOW_BOX_LEFT_EDGE_X (w)
+ && (p.x + p.wd) <= WINDOW_BOX_LEFT_EDGE_X (w) + WINDOW_PIXEL_WIDTH (w))
+ FRAME_RIF (f)->draw_fringe_bitmap (w, row, &p);
}
static int
| (swap_nibble[(b>>12) & 0xf]));
b >>= (16 - fb->width);
#ifdef WORDS_BIGENDIAN
- b = ((b >> 8) | (b << 8));
+ b = bswap_16 (b);
#endif
*bits++ = b;
}
Fput (bitmap, Qfringe, make_number (n));
}
- fb.dynamic = 1;
+ fb.dynamic = true;
xfb = xmalloc (sizeof fb + fb.height * BYTES_PER_BITMAP_ROW);
fb.bits = b = (unsigned short *) (xfb + 1);
DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face,
1, 2, 0,
doc: /* Set face for fringe bitmap BITMAP to FACE.
+FACE is merged with the `fringe' face, so normally FACE should specify
+only the foreground color.
If FACE is nil, reset face to default fringe face. */)
(Lisp_Object bitmap, Lisp_Object face)
{
}
#endif /* HAVE_NTGUI */
-
-#endif /* HAVE_WINDOW_SYSTEM */