001: /*=============================================================================
002: * Copyright Texas Instruments, Inc., 2002. All Rights Reserved.
003: *
004: * This program is free software; you can redistribute it and/or modify
005: * it under the terms of the GNU General Public License as published by
006: * the Free Software Foundation; either version 2 of the License, or
007: * (at your option) any later version.
008: *
009: * This program is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU General Public License for more details.
013: *
014: * You should have received a copy of the GNU General Public License
015: * along with this program; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package ti.swing.console;
020:
021: /**
022: * A region gets mapped over a section of a character stream. It can be used
023: * to modify the state of the graphics as the {@link Console} is being rendered.
024: * It can also be used to just track a section of the character stream.
025: * <p>
026: * A region is immutable. It is not possible to modify the offset or length of
027: * a region once it is created.
028: *
029: * @author Rob Clark
030: * @version 0.0
031: */
032: public abstract class Region {
033: private int offset;
034: private int length;
035:
036: /* give a unique count to each region, used by the comparator internally in
037: * ConsoleBuffer to prevent any two RegionPoint-s corresponding to different
038: * Region-s from being equal, but still preserve transitiveness.
039: */
040: private static int cntr = 0;
041: private int cnt = cntr++;
042:
043: final int getCount() {
044: return cnt;
045: }
046:
047: /**
048: * Region class constructor.
049: *
050: * @param offset the offset into the character stream where this
051: * region begins
052: * @param length the length of this region
053: */
054: protected Region(int offset, int length) {
055: this .offset = offset;
056: this .length = length;
057: }
058:
059: /**
060: * Get the offset of the start of this region, inclusive.
061: *
062: * @return the start offset
063: */
064: public int getStart() {
065: return offset;
066: }
067:
068: /**
069: * Get the offset of the end of this region, exclusive.
070: *
071: * @return the end offset
072: */
073: public int getEnd() {
074: return offset + length;
075: }
076:
077: /**
078: * Get the length of this region.
079: *
080: * @return the length, in number of characters.
081: */
082: public int getLength() {
083: return length;
084: }
085:
086: /**
087: * Modify the state of the graphics, for example to modify the state of
088: * the graphics if this region applies some attribute.
089: *
090: * @param g the graphics
091: */
092: public void enter(ConsoleGraphics g) {
093: }
094:
095: /**
096: * Modify the state of the graphics, for example to restore the original
097: * graphics state if this region applies some attribute.
098: *
099: * @param g the graphics
100: */
101: public void leave(ConsoleGraphics g) {
102: }
103: }
104:
105: /*
106: * Local Variables:
107: * tab-width: 2
108: * indent-tabs-mode: nil
109: * mode: java
110: * c-indentation-style: java
111: * c-basic-offset: 2
112: * eval: (c-set-offset 'substatement-open '0)
113: * eval: (c-set-offset 'case-label '+)
114: * eval: (c-set-offset 'inclass '+)
115: * eval: (c-set-offset 'inline-open '0)
116: * End:
117: */
|