private void onDraw0(Canvas canvas) { if (Constants.LOG_V) Log.v(TAG, "onDraw(" + canvas.getClipBounds() + ")"); canvas.save(); canvas.translate(offsetX, offsetY); canvas.clipRect(0, 0, size * cellWidth, size * cellHeight); Rect clipBounds = canvas.getClipBounds(); if (theme.isDrawAreaColors(puzzle.getPuzzleType())) drawAreaColors(canvas, clipBounds); else drawBackground(canvas); drawExtraRegions(canvas, clipBounds); if (puzzle.isSolved()) drawCongrats(canvas); else if (paused) drawPaused(canvas); else { drawHighlightedCells(canvas, clipBounds); drawMarkedPosition(canvas); } if (!preview && puzzle.hasErrors()) drawErrors(canvas, clipBounds); drawValues(canvas, clipBounds); drawGrid(canvas); drawRegionBorders(canvas, clipBounds); canvas.restore(); drawOuterBorder(canvas); }
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); } }