示例#1
0
  public void setPuzzle(AndokuPuzzle puzzle) {
    this.puzzle = puzzle;
    size = puzzle == null ? 0 : puzzle.getSize();
    multiValuesPainter.setPuzzleSize(size);

    requestLayout();
    invalidate();
  }
示例#2
0
  public void setTheme(Theme theme) {
    this.theme = theme;

    setCurrentTextSizeOnTheme();

    multiValuesPainter.setTheme(theme);

    int[] padding = theme.getPuzzlePadding();
    setPadding(padding[0], padding[1], padding[2], padding[3]);
  }
示例#3
0
  private void setSize(int width, int height) {
    if (Constants.LOG_V) Log.v(TAG, "setSize(" + width + ", " + height + ")");

    setMeasuredDimension(width, height);

    int gridWidth = width - getPaddingLeft() - getPaddingRight();
    int gridHeight = height - getPaddingTop() - getPaddingBottom();
    cellWidth = gridWidth / (float) size;
    cellHeight = gridHeight / (float) size;
    offsetX = getPaddingLeft();
    offsetY = getPaddingTop();

    textSize = Math.min(cellWidth, cellHeight) * 0.8f;
    setCurrentTextSizeOnTheme();
    calcTextOffset();

    multiValuesPainter.setCellSize(cellWidth, cellHeight);
  }
示例#4
0
  private void drawValues(Canvas canvas, int row, int col) {
    ValueSet values = puzzle.getValues(row, col);
    if (values.isEmpty()) return;

    if (preview && !puzzle.isSolved()) {
      if (puzzle.isClue(row, col)) {
        boolean show = previewClueCounter++ % 3 != 0;
        String dv = show ? String.valueOf(theme.getSymbol(values.nextValue(0))) : "?";
        canvas.drawText(dv, cellWidth / 2f, textOffset, theme.getCluePaint(preview));
      }
    } else if (values.size() == 1) {
      String dv = String.valueOf(theme.getSymbol(values.nextValue(0)));
      Paint paint = puzzle.isClue(row, col) ? theme.getCluePaint(preview) : theme.getValuePaint();
      canvas.drawText(dv, cellWidth / 2f, textOffset, paint);
    } else {
      multiValuesPainter.paintValues(canvas, values);
    }
  }