// Copyright (c) 1996-98 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation for educational, research and non-profit // purposes, without fee, and without a written agreement is hereby granted, // provided that the above copyright notice and this paragraph appear in all // copies. Permission to incorporate this software into commercial products may // be obtained by contacting the University of California. David F. Redmiles // Department of Information and Computer Science (ICS) University of // California Irvine, California 92697-3425 Phone: 714-824-3823. This software // program and documentation are copyrighted by The Regents of the University // of California. The software program and documentation are supplied "as is", // without any accompanying services from The Regents. The Regents do not // warrant that the operation of the program will be uninterrupted or // error-free. The end-user understands that the program was developed for // research purposes and is advised not to rely exclusively on the program for // any reason. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY // PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS // DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY // DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE // SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, // ENHANCEMENTS, OR MODIFICATIONS. // File: FigInk.java // Classes: FigInk // Original Author: jrobbins@ics.uci.edu // $Id: FigInk.java,v 1.9 1997/06/10 23:42:42 jrobbins Exp $ package uci.graphedit; import java.applet.*; import java.awt.*; import java.io.*; import java.util.*; /** Primitive Fig to draw Ink on a LayerDiagram. Ink is like an open * polygon with no fill. The main difference between FigInk and * FigPoly is in the way that they are created. * * FEATURE: basic_shapes_ink * * @see FigPoly * @see ModeCreateFigInk */ public class FigInk extends FigPoly { /** Construct a new FigInk w/ the given line color, * and fill color. */ public FigInk(Color line_color, Color fill_color) { super(line_color, fill_color); filled = false; } /** Construct a new FigInk w/ the given line color. */ public FigInk(Color line_color) { super(line_color); filled = false; } /** Construct a new FigInk w/ the given attributes. */ public FigInk(Hashtable gAttrs){ super(gAttrs); filled = false;} /** Construct a new FigInk w/ the given point and attributes. */ public FigInk(int x, int y, Hashtable gAttrs){ this(null, null); put(gAttrs); addPoint(x, y); filled = false; } //////////////////////////////////////////////////////////////// // accessors /** Line width of ink must be at least 1. Since Java does not support * thicker lines, it will always be 2. */ public void setLineWidth(int w) { lineWidth = Math.max(1, Math.min(1, w)); } /** FigInks can never be filled, do nothing. */ public void setFilled(boolean f) { filled = false; } /** FigInks can never be rectilinear, do nothing. */ public void rectilinear(boolean r) { _rectilinear = false; } public boolean canPut(String key) { if (key.equals(pFILLED) || key.equals(pLINE_WIDTH) || key.equals(pRECTILINEAR)) return false; return super.canPut(key); } //////////////////////////////////////////////////////////////// // drawing methods public void draw(Graphics g) { // FigInk's are never filled if (lineWidth > 0) { g.setColor(objectLineColor); Compat.drawPolyline(polygon(), g); } } /** Needs-More-Work: remove this method, its logic has been moved to * SelectionBox. */ public void drawSelected(Graphics g) { } //////////////////////////////////////////////////////////////// // selection methods public Selection selectionObject() { // no one handle is selected when the polygon is first selected _selectedHandle = -1; return new SelectionBox(this); } /** Return a handle ID for the handle under the mouse, or -1 if * none. Needs-More-Work: in the future, return a Handle instance * or null. */ public int pickHandle(int x, int y) { return -1; } public boolean inside(int x, int y) { return super.pickHandle(x, y) != -1; } } /* end class FigInk */