MCPcopy Create free account
hub / github.com/ErrorAtLine0/infinipaint / draw

Method draw

src/DrawingProgram/Tools/ScreenshotTool.cpp:365–402  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363}
364
365void ScreenshotTool::draw(SkCanvas* canvas, const DrawData& drawData) {
366 if(controls.selectionMode == ScreenshotControls::SelectionMode::NO_SELECTION) {
367 SkPaint paint1;
368 paint1.setColor4f({0.0f, 0.0f, 0.0f, 0.3f});
369 canvas->drawPaint(paint1);
370 }
371 else {
372 canvas->save();
373 controls.coords.transform_sk_canvas(canvas, drawData);
374 float x1 = std::min(controls.rectX1, controls.rectX2);
375 float x2 = std::max(controls.rectX1, controls.rectX2);
376 float y1 = std::min(controls.rectY1, controls.rectY2);
377 float y2 = std::max(controls.rectY1, controls.rectY2);
378 SkPoint p1{x1, y1};
379 SkPoint p2{x2, y2};
380 SkPathBuilder path1B;
381 path1B.addRect(SkRect::MakeLTRB(p1.x(), p1.y(), p2.x(), p2.y()));
382 path1B.setFillType(SkPathFillType::kInverseWinding);
383 SkPath path1 = path1B.detach();
384 SkPaint paint1;
385 paint1.setColor4f({0.0f, 0.0f, 0.0f, 0.3f});
386 canvas->drawPath(path1, paint1);
387
388 path1.setFillType(SkPathFillType::kWinding);
389 SkPaint paint2;
390 paint2.setColor4f({1.0f, 1.0f, 1.0f, 0.9f});
391 paint2.setStyle(SkPaint::kStroke_Style);
392 canvas->drawPath(path1, paint2);
393
394 canvas->restore();
395
396 if(controls.selectionMode == ScreenshotControls::SelectionMode::SELECTION_EXISTS) {
397 paint2.setStyle(SkPaint::kFill_Style);
398 for(auto& circ : controls.circles)
399 drawP.draw_drag_circle(canvas, circ.pos, {0.1f, 0.9f, 0.9f, 1.0f}, drawData, 1.0f);
400 }
401 }
402}

Callers

nothing calls this directly

Calls 6

transform_sk_canvasMethod · 0.80
restoreMethod · 0.80
draw_drag_circleMethod · 0.80
saveMethod · 0.45
xMethod · 0.45
yMethod · 0.45

Tested by

no test coverage detected