Exemple #1
0
  /*
   * We assume a match was made at the given position.
   */
  public void applyRule(Rule r, Position p) {
    IntegerElement i, j;

    CharacterElement wildcard = r.getWildcard();
    // System.out.printf("applying at %s: %s", p.toString(), r.dump());
    /* Note that r.getHeight() == width/2 ... */
    for (i = IntegerElement.ZERO; i.compareTo(r.getHeight()) < 0; i = i.succ()) {
      for (j = IntegerElement.ZERO; j.compareTo(r.getHeight()) < 0; j = j.succ()) {
        CharacterElement replacement = r.get(i.add(r.getHeight()), j);
        IntegerElement destX = p.getX().add(i);
        IntegerElement destY = p.getY().add(j);
        // System.out.printf("(%s,%s): [%s] '%s' -> (%s,%s)\n", i, j, wildcard,
        // replacement.getChar(), destX, destY);
        if (wildcard == null || wildcard.getChar() != replacement.getChar()) {
          set(destX, destY, replacement);
        }
      }
    }
  }