1   // joi/5/shapes/HLine.java                         
2   //                                                            
3   //                                                            
4   // Copyright 2003 Bill Campbell and Ethan Bolker                         
5                                                               
6   
7   /**
8    * An HLine is a horizontal Line.
9    */
10  
11  public class HLine extends Line
12  {
13      /**
14       * Construct an HLine having a paintChar and a length.
15       *
16       * @param length length in (character) pixels.
17       * @param paintChar character used for painting this Line.
18       */
19  
20      public HLine( int length, char paintChar )
21      {
22          super( length, paintChar );
23      }
24  
25      /**
26       * Paint this Line on Screen s at position (x,y).
27       *
28       * @param screen the Screen on which this Line is to be painted.
29       * @param x      the x position for the line.
30       * @param y      the y position for the line.
31       */
32  
33      public void paintOn( Screen screen, int x, int y )
34      {
35          for ( int i = 0; i < length; i++ )
36              screen.paintAt( paintChar, x+i, y );
37      }
38  
39      /**
40       * Unit test for class HLine. 
41       */
42  
43      public static void main( String[] args )
44      {
45          Terminal terminal = new Terminal();
46  
47          terminal.println( "Self documenting unit test of HLine.");
48          terminal.println( "The two Screens that follow should match.");
49          terminal.println();
50          terminal.println( "Hard coded picture:");
51          terminal.println( "++++++++++++++++++++++");
52          terminal.println( "+xxxxxxxxxx          +");
53          terminal.println( "+xxxxx               +");
54          terminal.println( "+                    +");
55          terminal.println( "+   *****            +");
56          terminal.println( "+    1               +");
57          terminal.println( "+                    +");
58          terminal.println( "++++++++++++++++++++++");
59          terminal.println();
60  
61          terminal.println( "Picture drawn using HLine methods:");
62          Screen screen = new Screen( 20, 6 );
63  
64          Line hline = new HLine( 10, 'x' );
65          hline.paintOn( screen );
66  
67          hline.setLength(5); 
68          hline.paintOn( screen, 0, 1 );  
69  
70          hline.setPaintChar('*');
71          hline.paintOn( screen, 3, 3 );
72          
73          hline.setLength(1); 
74          hline.setPaintChar('1');
75          hline.paintOn( screen, 4, 4 );
76  
77          screen.draw( terminal );
78      }
79  
80  }
81