/
ScryMUD/mud/
ScryMUD/mud/grrmud/Boards/
ScryMUD/mud/grrmud/Help/
ScryMUD/mud/grrmud/Pfiles/
ScryMUD/mud/grrmud/PlayerSacks/
ScryMUD/mud/grrmud/PlayerShops/
ScryMUD/mud/grrmud/help_filter/
ScryMUD/mud/hegemon/
ScryMUD/mud/hegemon/data/
ScryMUD/mud/hegemon/data/help/battle/
ScryMUD/mud/hegemon/data/help/client/
ScryMUD/mud/hegemon/data/help/communications/
ScryMUD/mud/hegemon/data/help/skills/
ScryMUD/mud/hegemon/data/help/spells/
ScryMUD/mud/include/
ScryMUD/mud/lib/
ScryMUD/mud/lib/bitfield/
ScryMUD/mud/lib/log/
ScryMUD/mud/lib/string2/
// $Id: ScrollComponentGraph.java,v 1.2 1999/06/05 23:29:12 greear Exp $
// $Revision: 1.2 $  $Author: greear $ $Date: 1999/06/05 23:29:12 $

//
//Hegemon Client Code:  Java Client for ScryMUD Server Code
//Copyright (C) 1998  Ben Greear
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// To contact the Author, Ben Greear:  greear@cyberhighway.net, (preferred)
//                                     greearb@agcs.com
//


import java.util.*;
import java.awt.*;

class ScrollComponentGraph extends ScrollComponent {
   Color color;
   float percent_full; /* range zero to 1 */
   int orientation;
   int h_outline;
   int w_outline;
   int dflt_x;
   int dflt_y;

   static final int O_NORTH = 0;
   static final int O_EAST = 1;
   static final int O_SOUTH = 2;
   static final int O_WEST = 3;

   public ScrollComponentGraph(int _x, int _y, int _height, int _width,
                               int vert_spacing, Color _color,
                               int _orientation) {
      super(vert_spacing);
      color = _color;
      h_outline = _height;
      w_outline = _width;
      orientation = _orientation;
      percent_full = (float)0.0;
      dflt_x = _x;
      dflt_y = _y;
      enabled = false;
   }//constructor

   public int getHeight() {
      return h_outline;
   }

   public int getWidth() {
      return w_outline;
   }

   public void setColor(Color c) {
      color = c;
   }

   public Color getColor() {
      return color;
   }

   public void setDefaultCoords(int _x, int _y) {
      dflt_x = _x;
      dflt_y = _y;
   }

   /** p should range from 0.0 to 1.0 */
   public void setPercent(float p) {
      percent_full = p;
   }

   public void paint(Graphics g) {
      if (enabled) {
         paint(g, dflt_x, dflt_y);
      }
   }

   public void paint(Graphics g, int x, int y) {
      if (!enabled) {
         return;
      }

      int fill;
      
      if ((orientation == O_NORTH) || (orientation == O_SOUTH)) {
         fill = (int)(percent_full * h_outline);
      }
      else {
         fill = (int)(percent_full * w_outline);
      }

      fill = Math.min(w_outline, fill); //never overflow the box

      g.setColor(color);
      g.drawRect(x, y, w_outline, h_outline);

      switch (orientation) {
      case O_NORTH: /* sits on the bottom. */
         g.fillRect(x, y + h_outline - fill, w_outline, fill);
         break;
      case O_EAST:
         g.fillRect(x, y, fill, h_outline);
         break;
      case O_SOUTH:
         g.fillRect(x, y, w_outline, fill);
         break;
      case O_WEST:
         g.fillRect(x + w_outline - fill, y, fill, h_outline);
         break;
      default:
         Log.instance().err("Default case in ScrollComponentGraph::paint(): " 
                            + orientation);
      }//switch
   }//paint

   public String toString() {
      return "SC: Graph";
   }
}//ScrollComponentNewline