(linenum→info "unix/slp.c:2238")

bsd-games/2.17/dab/box.h

    1: /*      $NetBSD: box.h,v 1.1.1.1 2003/12/26 17:57:03 christos Exp $  */
    2: 
    3: /*-
    4:  * Copyright (c) 2003 The NetBSD Foundation, Inc.
    5:  * All rights reserved.
    6:  *
    7:  * This code is derived from software contributed to The NetBSD Foundation
    8:  * by Christos Zoulas.
    9:  *
   10:  * Redistribution and use in source and binary forms, with or without
   11:  * modification, are permitted provided that the following conditions
   12:  * are met:
   13:  * 1. Redistributions of source code must retain the above copyright
   14:  *    notice, this list of conditions and the following disclaimer.
   15:  * 2. Redistributions in binary form must reproduce the above copyright
   16:  *    notice, this list of conditions and the following disclaimer in the
   17:  *    documentation and/or other materials provided with the distribution.
   18:  * 3. All advertising materials mentioning features or use of this software
   19:  *    must display the following acknowledgement:
   20:  *        This product includes software developed by the NetBSD
   21:  *        Foundation, Inc. and its contributors.
   22:  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23:  *    contributors may be used to endorse or promote products derived
   24:  *    from this software without specific prior written permission.
   25:  *
   26:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36:  * POSSIBILITY OF SUCH DAMAGE.
   37:  */
   38: 
   39: /*
   40:  * box.C: Single box utilities; A box is an entity with four edges, four
   41:  *        corners, and a center that maps directly to a board
   42:  */
   43: 
   44: #ifndef _H_BOX
   45: #define _H_BOX
   46: 
   47: #include <stdlib.h>
   48: 
   49: class BOARD;
   50: 
   51: class POINT {
   52:   public:
   53:     int x;
   54:     int y;
   55: };
   56: 
   57: class BOX {
   58:   public:
   59:     enum EDGE {
   60:         first  = 0,
   61:         top    = 0,
   62:         bottom = 1,
   63:         left   = 2,
   64:         right  = 3,
   65:         last   = 4,
   66:     };
   67: 
   68:     BOX(size_t py, size_t px, BOARD& b);
   69: 
   70:     void reset(void);           // Clear a box
   71:     void paint(void);           // Paint a box
   72: 
   73:     // Member access
   74:     int& name(void);
   75:     int& edge(int e);
   76: 
   77:     // Edge maniputations
   78:     void set(int e);
   79:     void clr(int e);
   80:     int isset(int e) const;
   81: 
   82:     int count(void) const;      // Count the number of edges in use
   83: 
   84:     // Useful constants
   85:     // Relative coordinates of the edges from the center of the box.
   86:     static const POINT edges[BOX::last];
   87:     // Relative coordinates of the corners from the center of the box.
   88:     static const POINT corners[BOX::last];
   89:     // Character symbols of the four edges
   90:     static const int syms[BOX::last];
   91: 
   92:   private:
   93:     void addcorner(size_t y, size_t x); // add a corner character
   94: 
   95:     size_t _centerx;    // Coordinates of the center in board units
   96:     size_t _centery;
   97:     BOARD& _b;          // The board we refer to
   98: };
   99: 
  100: #endif
Syntax (Markdown)