Design: 04.02.04.02/P07

This is an abstract, language-independent design. Grim details may be found in the corresponding source code. You may return to the documentation for the module containing this program design, or to the entire hierarchical table of topics covered by the PVT.


PROGRAM 7: Appearance of text color index

CHARACTERISTICS: ynny

OPERATOR SCRIPT:

DEFINED TEXT COLOR INDICES: All annotation text lines but one are
drawn in the background color.  Identify the single annotation text
line drawn in the default foreground color.

UNDEFINED TEXT COLOR INDICES: A star is drawn with several
horizontal annotation text lines beneath it.  Normally, all of these
will be the same color as the star.  Count up and report the number of
annotation text lines that match the star in color.

DESIGN:

set all ASFs to BUNDLED

TEST: #SR 1 3 4 29 30
      "A defined text color index should cause the addressed
       entry in the color table to be used when rendering an
       annotation text primitive."

bckcol = background color = realized color spec for entry #0
forcol = foreground color = realized color spec for entry #1

szcolt = maximum size of color table (including entry #0)
numlin = number of annotation text lines to be drawn = min(8, szcolt)
lncol  = random permutation of #0,#1, and numlin-2 random choices
         from entries #2 to #szcolt-1
visdx = from lncol, randomly select an entry to be made visible
        but not the one that contains 0, since this may not be
        re-settable.

for ix = 1 to numlin
   set entry lncol(ix) to bckcol
   randomly pick prec = precision, to ensure no interaction

   set text index = ix
   set text rep #ix color = lncol(ix)

   draw annotation text line #ix, using text rep #ix
next ix

set entry lncol(visdx) to forcol

OPQA/DEFINED TEXT COLOR INDICES: which annotation text line is visible?
pass/fail depending on (response = annotation text line colored by visdx)

end_def_col:

TEST: #SR 1 3 4 29 31
      "An undefined text color index should cause entry
       number 1 in the color table to be used when rendering an
       annotation text primitive."

set entry #1 in color table opposite from BCKCOL
set entry #1 different from FORCOL - make sure that the undefined
  entries default to *current* color-rep of #1, not just a
  predefined color.

set polyline index = 1
set polyline rep #1: type, width, color
                     1,    3.0,   1
draw star, using polyline rep #1

u1,u2,u3 = 3 undefined, positive color indices - all greater
  than maximum defined entry in color table
explct = number of explicit annotation text lines of color #1 =
   random integer from 0 to 4

set text rep #1: color = u1
set text rep #2: color = u2
set text rep #3: color = u3
set text rep #4: color = 1

display interleaved:
  three annotation text lines of color u1,u2,u3 (using text rep #1,2,3)
  explct annotation text lines of color #1 (using text rep #4)

OPQA/UNDEFINED TEXT COLOR INDICES: how many annotation text lines are the
  same color as the star?
pass/fail depending on response = 3+explct

END PROGRAM 7