[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/fringe.c
From: |
Kim F . Storm |
Subject: |
[Emacs-diffs] Changes to emacs/src/fringe.c |
Date: |
Wed, 29 Sep 2004 08:04:28 -0400 |
Index: emacs/src/fringe.c
diff -c emacs/src/fringe.c:1.13 emacs/src/fringe.c:1.14
*** emacs/src/fringe.c:1.13 Wed Sep 29 08:51:40 2004
--- emacs/src/fringe.c Wed Sep 29 11:57:48 2004
***************
*** 450,471 ****
static int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
! /* Return 1 if FRINGE_ID is a valid fringe bitmap id. */
int
! valid_fringe_bitmap_p (bitmap)
Lisp_Object bitmap;
{
int bn;
if (!INTEGERP (bitmap))
return 0;
bn = XINT (bitmap);
! return (bn >= NO_FRINGE_BITMAP
! && bn < max_used_fringe_bitmap
! && (bn < MAX_STANDARD_FRINGE_BITMAPS
! || fringe_bitmaps[bn] != NULL));
}
/* Get fringe bitmap name for bitmap number BN.
--- 450,477 ----
static int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
!
! /* Lookup bitmap number for symbol BITMAP.
! Return 0 if not a bitmap. */
int
! lookup_fringe_bitmap (bitmap)
Lisp_Object bitmap;
{
int bn;
+ bitmap = Fget (bitmap, Qfringe);
if (!INTEGERP (bitmap))
return 0;
bn = XINT (bitmap);
! if (bn > NO_FRINGE_BITMAP
! && bn < max_used_fringe_bitmap
! && (bn < MAX_STANDARD_FRINGE_BITMAPS
! || fringe_bitmaps[bn] != NULL))
! return bn;
!
! return 0;
}
/* Get fringe bitmap name for bitmap number BN.
***************
*** 501,542 ****
}
- /* Resolve a BITMAP parameter.
-
- An INTEGER, corresponding to a bitmap number.
- A STRING which is interned to a symbol.
- A SYMBOL which has a fringe property which is a bitmap number.
- */
-
- static int
- resolve_fringe_bitmap (bitmap, namep)
- Lisp_Object bitmap;
- Lisp_Object *namep;
- {
- if (namep)
- *namep = Qnil;
-
- if (STRINGP (bitmap))
- bitmap = intern (SDATA (bitmap));
-
- if (SYMBOLP (bitmap))
- {
- if (namep)
- *namep = bitmap;
- bitmap = Fget (bitmap, Qfringe);
- }
-
- if (valid_fringe_bitmap_p (bitmap))
- {
- if (namep && NILP (*namep))
- *namep = get_fringe_bitmap_name (XINT (bitmap));
- return XINT (bitmap);
- }
-
- return -1;
- }
-
-
/* Draw the bitmap WHICH in one of the left or right fringes of
window W. ROW is the glyph row for which to display the bitmap; it
determines the vertical position at which the bitmap has to be
--- 507,512 ----
***************
*** 1068,1074 ****
}
! void
destroy_fringe_bitmap (n)
int n;
{
--- 1038,1046 ----
}
! /* Free resources used by a user-defined bitmap. */
!
! int
destroy_fringe_bitmap (n)
int n;
{
***************
*** 1099,1118 ****
Lisp_Object bitmap;
{
int n;
- Lisp_Object sym;
! n = resolve_fringe_bitmap (bitmap, &sym);
! if (n < 0)
return Qnil;
destroy_fringe_bitmap (n);
! if (SYMBOLP (sym))
{
! Vfringe_bitmaps = Fdelq (sym, Vfringe_bitmaps);
/* It would be better to remove the fringe property. */
! Fput (sym, Qfringe, Qnil);
}
return Qnil;
}
--- 1071,1091 ----
Lisp_Object bitmap;
{
int n;
! CHECK_SYMBOL (bitmap);
! n = lookup_fringe_bitmap (bitmap);
! if (!n)
return Qnil;
destroy_fringe_bitmap (n);
! if (n >= MAX_STANDARD_FRINGE_BITMAPS)
{
! Vfringe_bitmaps = Fdelq (bitmap, Vfringe_bitmaps);
/* It would be better to remove the fringe property. */
! Fput (bitmap, Qfringe, Qnil);
}
+
return Qnil;
}
***************
*** 1216,1227 ****
unsigned short *b;
struct fringe_bitmap fb, *xfb;
int fill1 = 0, fill2 = 0;
- Lisp_Object sym;
! n = resolve_fringe_bitmap (bitmap, &sym);
! if (NILP (sym) || INTEGERP (sym))
! sym = wrong_type_argument (Qsymbolp, bitmap);
if (!STRINGP (bits) && !VECTORP (bits))
bits = wrong_type_argument (Qstringp, bits);
--- 1189,1198 ----
unsigned short *b;
struct fringe_bitmap fb, *xfb;
int fill1 = 0, fill2 = 0;
! CHECK_SYMBOL (bitmap);
! n = lookup_fringe_bitmap (bitmap);
if (!STRINGP (bits) && !VECTORP (bits))
bits = wrong_type_argument (Qstringp, bits);
***************
*** 1274,1280 ****
else if (!NILP (align) && !EQ (align, Qcenter))
error ("Bad align argument");
! if (n < 0)
{
if (max_used_fringe_bitmap < MAX_FRINGE_BITMAPS)
n = max_used_fringe_bitmap++;
--- 1245,1251 ----
else if (!NILP (align) && !EQ (align, Qcenter))
error ("Bad align argument");
! if (!n)
{
if (max_used_fringe_bitmap < MAX_FRINGE_BITMAPS)
n = max_used_fringe_bitmap++;
***************
*** 1289,1296 ****
error ("Cannot define more fringe bitmaps");
}
! Vfringe_bitmaps = Fcons (sym, Vfringe_bitmaps);
! Fput (sym, Qfringe, make_number (n));
}
fb.dynamic = 1;
--- 1260,1267 ----
error ("Cannot define more fringe bitmaps");
}
! Vfringe_bitmaps = Fcons (bitmap, Vfringe_bitmaps);
! Fput (bitmap, Qfringe, make_number (n));
}
fb.dynamic = 1;
***************
*** 1318,1324 ****
init_fringe_bitmap (n, xfb, 0);
! return sym;
}
DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face,
Sset_fringe_bitmap_face,
--- 1289,1295 ----
init_fringe_bitmap (n, xfb, 0);
! return bitmap;
}
DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face,
Sset_fringe_bitmap_face,
***************
*** 1328,1338 ****
(bitmap, face)
Lisp_Object bitmap, face;
{
! int bn;
int face_id;
! bn = resolve_fringe_bitmap (bitmap, 0);
! if (bn < 0)
error ("Undefined fringe bitmap");
if (!NILP (face))
--- 1299,1310 ----
(bitmap, face)
Lisp_Object bitmap, face;
{
! int n;
int face_id;
! CHECK_SYMBOL (bitmap);
! n = lookup_fringe_bitmap (bitmap);
! if (!n)
error ("Undefined fringe bitmap");
if (!NILP (face))
***************
*** 1344,1350 ****
else
face_id = FRINGE_FACE_ID;
! fringe_faces [bn] = face_id;
return Qnil;
}
--- 1316,1322 ----
else
face_id = FRINGE_FACE_ID;
! fringe_faces[n] = face_id;
return Qnil;
}