public void setPuzzle(AndokuPuzzle puzzle) { this.puzzle = puzzle; size = puzzle == null ? 0 : puzzle.getSize(); multiValuesPainter.setPuzzleSize(size); requestLayout(); invalidate(); }
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]); }
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); }
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); } }