emacs-diffs
[Top][All Lists]
Advanced

[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;
  }




reply via email to

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