void onDrawContent(SkCanvas* canvas) override { fFB.drawBG(canvas); if (fFB.getTriangle()) { fFB.drawTriangle(canvas, fPts); } else if (fIsRect) { fFB.drawRect(canvas, fPts); } else { fFB.drawLine(canvas, fPts); } fFB.drawFG(canvas); { SkString str; str.printf("%s %s %s %s", fFB.getAA() ? "AA" : "BW", FatBits::kHair_Style == fFB.getStyle() ? "Hair" : "Stroke", fFB.getUseGPU() ? "GPU" : "CPU", fFB.getUseClip() ? "clip" : "noclip"); SkPaint paint; paint.setAntiAlias(true); paint.setTextSize(16); paint.setColor(SK_ColorBLUE); canvas->drawText(str.c_str(), str.size(), 10, 16, paint); } }
DrawLineView() { fFB.setWHZ(24, 16, 48); fPts[0].set(48, 48); fPts[1].set(48 * 5, 48 * 4); fPts[2].set(48 * 2, 48 * 6); fIsRect = false; }
DrawLineView() { fFB.setWHZ(24*2, 16*2, fZoom); fPts[0].set(1, 1); fPts[1].set(5, 4); fPts[2].set(2, 6); SkMatrix::MakeScale(SkIntToScalar(fZoom)).mapPoints(fPts, 3); fIsRect = false; }
DrawLineView() { fFB.setWHZ(24, 16, kZoom); fPts[0].set(1, 1); fPts[1].set(5, 4); fPts[2].set(2, 6); SkMatrix::MakeScale(kZoom, kZoom).mapPoints(fPts, 3); fIsRect = false; }
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override { SkPoint pt = { x, y }; int index = -1; int count = fFB.getTriangle() ? 3 : 2; SkScalar tol = 12; for (int i = 0; i < count; ++i) { if (fPts[i].equalsWithinTolerance(pt, tol)) { index = i; break; } } return new IndexClick(this, index); }
void onDrawContent(SkCanvas* canvas) override { fFB.drawBG(canvas); if (fFB.getTriangle()) { fFB.drawTriangle(canvas, fPts); } else if (fIsRect) { fFB.drawRect(canvas, fPts); } else { fFB.drawLine(canvas, fPts); } fFB.drawFG(canvas); { SkString str; str.printf("%s %s %s", fFB.getAA() ? "AA" : "BW", FatBits::kHair_Style == fFB.getStyle() ? "Hair" : "Stroke", fFB.getUseClip() ? "clip" : "noclip"); SkPaint paint; paint.setColor(SK_ColorBLUE); SkFont font(nullptr, 16); canvas->drawString(str, 10, 16, font, paint); } }
bool onQuery(SkEvent* evt) override { if (SampleCode::TitleQ(*evt)) { SampleCode::TitleR(evt, "FatBits"); return true; } SkUnichar uni; if (SampleCode::CharQ(*evt, &uni)) { switch (uni) { case 'c': fFB.setUseClip(!fFB.getUseClip()); this->inval(NULL); return true; case 'r': fIsRect = !fIsRect; this->inval(NULL); return true; case 'o': fFB.toggleRectAsOval(); this->inval(NULL); return true; case 'x': fFB.setGrid(!fFB.getGrid()); this->inval(NULL); return true; case 's': if (FatBits::kStroke_Style == fFB.getStyle()) { this->setStyle(FatBits::kHair_Style); } else { this->setStyle(FatBits::kStroke_Style); } return true; case 'a': fFB.setAA(!fFB.getAA()); this->inval(NULL); return true; case 'w': fFB.setShowSkeleton(!fFB.getShowSkeleton()); this->inval(NULL); return true; case 'g': fFB.setUseGPU(!fFB.getUseGPU()); this->inval(NULL); return true; case 't': fFB.setTriangle(!fFB.getTriangle()); this->inval(NULL); return true; } } return this->INHERITED::onQuery(evt); }
void setStyle(FatBits::Style s) { fFB.setStyle(s); this->inval(NULL); }
bool onQuery(SkEvent* evt) override { if (SampleCode::TitleQ(*evt)) { SampleCode::TitleR(evt, "FatBits"); return true; } SkUnichar uni; if (SampleCode::CharQ(*evt, &uni)) { switch (uni) { case 'c': fFB.setUseClip(!fFB.getUseClip()); return true; case 'r': fIsRect = !fIsRect; return true; case 'o': fFB.toggleRectAsOval(); return true; case 'x': fFB.setGrid(!fFB.getGrid()); return true; case 's': if (FatBits::kStroke_Style == fFB.getStyle()) { this->setStyle(FatBits::kHair_Style); } else { this->setStyle(FatBits::kStroke_Style); } return true; case 'k': { const SkPaint::Cap caps[] = { SkPaint::kButt_Cap, SkPaint::kRound_Cap, SkPaint::kSquare_Cap, }; fFB.fStrokeCap = caps[(fFB.fStrokeCap + 1) % 3]; return true; } break; case 'a': fFB.setAA(!fFB.getAA()); return true; case 'w': fFB.setShowSkeleton(!fFB.getShowSkeleton()); return true; case 'g': fFB.togglePixelColors(); return true; case 't': fFB.setTriangle(!fFB.getTriangle()); return true; case '-': fFB.fStrokeWidth -= 0.125f; return true; case '=': fFB.fStrokeWidth += 0.125f; return true; } } return this->INHERITED::onQuery(evt); }
void setStyle(FatBits::Style s) { fFB.setStyle(s); }