home *** CD-ROM | disk | FTP | other *** search
/ PC-Test Pro / PCTESTPRO.iso / video / qtest / entp / patterns.bas < prev    next >
Encoding:
BASIC Source File  |  1995-04-06  |  7.9 KB  |  264 lines

  1. Option Explicit
  2. DefInt A-Z
  3.  
  4. Sub ColorTrackingPattern ()
  5.    
  6.    'BoxNum is box number, G is value of red, green, and
  7.    ' blue components of gray color
  8.    Dim BoxNum As Long, BoxWidth As Long, G As Long
  9.    Screen.MousePointer = 11
  10.    BoxWidth = PatternForm.ScaleWidth / NumberOfGrays
  11.    
  12.    'Draw the filled rectangles
  13.    If NumberOfGrays = 4 Then
  14.       PatternForm.Line (0, 1)-(BoxWidth, PatternForm.ScaleHeight), RGB(0, 0, 0), BF
  15.       PatternForm.Line (BoxWidth, 1)-(2 * BoxWidth, PatternForm.ScaleHeight), RGB(112, 112, 112), BF
  16.       PatternForm.Line (2 * BoxWidth, 1)-(3 * BoxWidth, PatternForm.ScaleHeight), RGB(192, 192, 192), BF
  17.       PatternForm.Line (3 * BoxWidth, 1)-(4 * BoxWidth, PatternForm.ScaleHeight), RGB(255, 255, 255), BF
  18.    Else
  19.       For BoxNum = 1 To NumberOfGrays
  20.      G = (BoxNum - 1) * 255 / (NumberOfGrays - 1)
  21.      PatternForm.Line ((BoxNum - 1) * BoxWidth, 1)-(BoxNum * BoxWidth, PatternForm.ScaleHeight), RGB(G, G, G), BF
  22.       Next
  23.    End If
  24.    Screen.MousePointer = 0
  25.  
  26. End Sub
  27.  
  28. Sub DrawGrid (NumRows, NumColumns)
  29.    'This routine draws a grid with the given number of
  30.    'rows and columns.
  31.    
  32.    Dim n
  33.    Dim x As Single, y As Single  'width & length of rectangles
  34.    x = PatternForm.ScaleWidth / (NumColumns + .0055 * NumColumns)
  35.    y = PatternForm.ScaleHeight / (NumRows + .0055 * NumColumns)
  36.    
  37.    'draw horizontal lines
  38.    PatternForm.Line (1, 1)-(PatternForm.ScaleWidth, 1)
  39.    For n = 1 To NumRows
  40.       PatternForm.Line (1, 2 + n * y)-(PatternForm.ScaleWidth, 2 + n * y)
  41.    Next
  42.    'draw vertical lines
  43.    PatternForm.Line (1, 1)-(1, PatternForm.ScaleHeight)
  44.    For n = 1 To NumColumns
  45.       PatternForm.Line (2 + n * x, 1)-(2 + n * x, PatternForm.ScaleHeight)
  46.    Next
  47.  
  48. End Sub
  49.  
  50. Sub FocusPattern ()
  51.    'This routine displays text of the given font and
  52.    'font size on the pattern form.
  53.    Dim FocusText$
  54.    Dim n, m 'counters
  55.    PatternForm.Cls
  56.    Screen.MousePointer = 11
  57.    
  58.    'Print entire screen with "EM" in current font
  59.    For n = 1 To PatternForm.ScaleHeight / PatternForm.TextHeight("EM")
  60.       For m = 1 To PatternForm.ScaleWidth / PatternForm.TextWidth("EM") - 1
  61.      PatternForm.Print "EM";
  62.       Next m
  63.       PatternForm.Print "EM"
  64.    Next n
  65.    
  66.    'Display name and size of font in centered label
  67.    PatternForm.PatternLabel.FontName = FocusFont$
  68.    PatternForm.PatternLabel.Caption = PatternForm.FontName & " " & PatternForm.FontSize & " points"
  69.    'center the font name and size label
  70.    PatternForm.PatternLabel.Move (PatternForm.ScaleWidth - PatternForm.PatternLabel.Width) \ 2, (PatternForm.ScaleHeight - PatternForm.PatternLabel.Height) \ 2
  71.    PatternForm.PatternLabel.Visible = True
  72.    Screen.MousePointer = 0
  73.  
  74. End Sub
  75.  
  76. Sub GeometryPattern ()
  77.    'This routine displays a white grid on a black background,
  78.    'by calling DrawGrid, draws diagonal lines from corner
  79.    'to corner, then draws 5 red circles, one in the center
  80.    'and one in each corner.
  81.    
  82.    Dim r As Single
  83.    Dim Wide As Single, High  As Single, Radius As Single
  84.    PatternForm.Cls
  85.    Screen.MousePointer = 11
  86.    
  87.    ' Draw the grid
  88.    DrawGrid NumCols * 3 / 4, NumCols
  89.    
  90.    ' Draw circles in center and in each corner
  91.    PatternForm.ForeColor = RED
  92.    Wide = PatternForm.ScaleWidth - 5
  93.    High = PatternForm.ScaleHeight - 5
  94.    Radius = High / 8
  95.    r = Radius
  96.    ' To make the circles thicker, two circles are drawn,
  97.    ' one just inside the other.
  98.    PatternForm.Circle (r + 1, r + 1), Radius
  99.    PatternForm.Circle (r + 1, r + 1), Radius - 1
  100.    PatternForm.Circle (Wide + 1 - r, r + 1), Radius
  101.    PatternForm.Circle (Wide + 1 - r, r + 1), Radius - 1
  102.    PatternForm.Circle (1 + Wide / 2, 1 + High / 2), Radius
  103.    PatternForm.Circle (1 + Wide / 2, 1 + High / 2), Radius - 1
  104.    PatternForm.Circle (r + 2, 1 + High - r), Radius
  105.    PatternForm.Circle (r + 2, 1 + High - r), Radius - 1
  106.    PatternForm.Circle (Wide + 2 - r, High - r), Radius
  107.    PatternForm.Circle (Wide + 2 - r, High - r), Radius - 1
  108.    
  109.    ' Draw diagonal lines:
  110.    PatternForm.ForeColor = WHITE
  111.    PatternForm.Line (1, 1)-(PatternForm.ScaleWidth, PatternForm.ScaleHeight)
  112.    PatternForm.Line (1, PatternForm.ScaleHeight - 2)-(PatternForm.ScaleWidth - 2, 1)
  113.    Screen.MousePointer = 0
  114.  
  115. End Sub
  116.  
  117. Sub HConvPattern ()
  118.    
  119.    'This routine draws horizontal convergence test lines.
  120.    'Each line has 6 segments. Half of each segment is
  121.    'green and half is either red or blue. The colors
  122.    'switch after the time specified by Timer1.Interval.
  123.    Dim ColGap, RowSeg, ColSeg, SC, Num, m, n, x
  124.    Static Flag 'tells Sub how to color line segments
  125.    Num = 12    '6 sets of two-color segments
  126.    ConvOrient = HORIZONTAL 'horizontal line segments
  127.    Static SegColor(4) As Long 'color of line segments
  128.    
  129.    ' Toggle Flag
  130.    If Flag = False Then
  131.       Flag = True
  132.    Else
  133.       Flag = False
  134.    End If
  135.    
  136.    ' Set line segment colors
  137.    If Flag = True Then
  138.       SegColor(1) = GREEN
  139.       SegColor(2) = RED
  140.       SegColor(3) = GREEN
  141.       SegColor(4) = BLUE
  142.    Else
  143.       SegColor(1) = RED
  144.       SegColor(2) = GREEN
  145.       SegColor(3) = BLUE
  146.       SegColor(4) = GREEN
  147.    End If
  148.    
  149.    SC = 1   'Segment Color (see below)
  150.    'length of row segment
  151.    RowSeg = PatternForm.ScaleHeight / 4
  152.    'length of gap between horizontal segments
  153.    ColGap = PatternForm.ScaleWidth / 32
  154.    'length of horizontal segments
  155.    ColSeg = (PatternForm.ScaleWidth / Num) - ColGap / (Num * 3 / 16)
  156.    
  157.    'draw horizontal lines segments
  158.    x = 1
  159.    For n = 0 To 3
  160.       'this alternates color pairs from row to row
  161.       If SC = 1 Then
  162.      SC = 3
  163.       Else
  164.      SC = 1
  165.       End If
  166.       PatternForm.Line (1, x)-(ColSeg, x), SegColor(SC)
  167.       For m = 1 To Num
  168.      SC = SC + 1
  169.      If SC > 4 Then SC = 1
  170.      PatternForm.Line -Step(ColSeg, 0), SegColor(SC)
  171.      PatternForm.Line -Step(ColGap * (m Mod 2), 0), BLACK
  172.       Next
  173.       x = x + RowSeg
  174.    Next
  175.    
  176.    'draw the last horizontal line
  177.    If SC = 1 Then    'this alternates color pairs row to row
  178.       SC = 3
  179.    Else
  180.       SC = 1
  181.    End If
  182.    PatternForm.Line (1, PatternForm.ScaleHeight - 4)-(ColSeg, PatternForm.ScaleHeight - 4), SegColor(SC)
  183.    For m = 1 To Num
  184.       SC = SC + 1
  185.       If SC > 4 Then SC = 1
  186.       PatternForm.Line -Step(ColSeg, 0), SegColor(SC)
  187.       PatternForm.Line -Step(ColGap * (m Mod 2), 0), BLACK
  188.    Next
  189.  
  190. End Sub
  191.  
  192. Sub PurityPattern ()
  193.    
  194.    'This displays a plain white screen
  195.    PatternForm.Cls
  196.  
  197. End Sub
  198.  
  199. Sub VConvPattern ()
  200.    
  201.    'See HVonvPattern for comments.
  202.    Dim RowSeg, ColSeg, RowGap, SC, Num, m, n, x
  203.    Static Flag
  204.    Num = 8
  205.    FirstConvTest = False
  206.    ConvOrient = VERTICAL
  207.    If Flag = False Then
  208.       Flag = True
  209.    Else
  210.       Flag = False
  211.    End If
  212.    Static SegColor(4) As Long
  213.    If Flag = True Then
  214.       SegColor(1) = GREEN
  215.       SegColor(2) = RED
  216.       SegColor(3) = GREEN
  217.       SegColor(4) = BLUE
  218.    Else
  219.       SegColor(1) = RED
  220.       SegColor(2) = GREEN
  221.       SegColor(3) = BLUE
  222.       SegColor(4) = GREEN
  223.    End If
  224.    SC = 1
  225.    ColSeg = PatternForm.ScaleWidth / 5
  226.    RowGap = PatternForm.ScaleHeight / 32
  227.    RowSeg = (PatternForm.ScaleHeight / Num) - RowGap / (Num * 5 / 16)
  228.    PatternForm.BackColor = BLACK
  229.    
  230.    'draw vertical line segments
  231.    x = 1
  232.    For n = 0 To 4
  233.       If SC = 1 Then
  234.      SC = 3
  235.       Else
  236.      SC = 1
  237.       End If
  238.       PatternForm.Line (x, 1)-(x, RowSeg), SegColor(SC)
  239.       For m = 1 To Num
  240.      SC = SC + 1
  241.      If SC > 4 Then SC = 1
  242.      PatternForm.Line -Step(0, RowSeg), SegColor(SC)
  243.      PatternForm.Line -Step(0, RowGap * (m Mod 2)), BLACK
  244.       Next
  245.       x = x + ColSeg
  246.    Next
  247.    
  248.    ' Draw right-most vertical line segments
  249.    If SC = 1 Then
  250.       SC = 3
  251.    Else
  252.       SC = 1
  253.    End If
  254.    PatternForm.Line (PatternForm.ScaleWidth - 4, 1)-(PatternForm.ScaleWidth - 4, RowSeg), SegColor(SC)
  255.    For m = 1 To Num
  256.       SC = SC + 1
  257.       If SC > 4 Then SC = 1
  258.       PatternForm.Line -Step(0, RowSeg), SegColor(SC)
  259.       PatternForm.Line -Step(0, RowGap * (m Mod 2)), BLACK
  260.    Next
  261.  
  262. End Sub
  263.  
  264.