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

Method draw

src/DrawingProgram/Tools/GridModifyTool.cpp:257–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

255}
256
257void GridModifyTool::draw(SkCanvas* canvas, const DrawData& drawData) {
258 NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();
259 if(gLock) {
260 WorldGrid& g = *gLock;
261 if(g.bounds.has_value()) {
262 const auto& b = g.bounds.value();
263 Vector2f bMin = drawP.world.drawData.cam.c.to_space(b.min);
264 Vector2f bMax = drawP.world.drawData.cam.c.to_space(b.max);
265 SkPaint rectBoundsPaint;
266 rectBoundsPaint.setColor4f(drawP.world.canvasTheme.get_tool_front_color());
267 rectBoundsPaint.setStroke(true);
268 rectBoundsPaint.setStrokeWidth(0.0f);
269 rectBoundsPaint.setAntiAlias(drawData.skiaAA);
270 canvas->drawRect(SkRect::MakeLTRB(bMin.x(), bMin.y(), bMax.x(), bMax.y()), rectBoundsPaint);
271 if(selectionMode == 0 || selectionMode == 4)
272 drawP.draw_drag_circle(canvas, bMax, {0.9f, 0.5f, 0.1f, 1.0f}, drawData);
273 if(selectionMode == 0 || selectionMode == 3)
274 drawP.draw_drag_circle(canvas, bMin, {0.9f, 0.5f, 0.1f, 1.0f}, drawData);
275 }
276 if(selectionMode == 0 || selectionMode == 2) {
277 Vector2f gSizeScreenPos;
278 auto mouseWorldPos = drawP.world.drawData.cam.c.from_space(drawData.main->input.mouse.pos);
279 if(mouseWorldPos.x() < g.offset.x() && selectionMode == 2)
280 gSizeScreenPos = drawData.cam.c.to_space(g.offset - WorldVec{g.size, 0});
281 else
282 gSizeScreenPos = drawData.cam.c.to_space(g.offset + WorldVec{g.size, 0});
283 drawP.draw_drag_circle(canvas, gSizeScreenPos, {0.1f, 0.9f, 0.9f, 1.0f}, drawData);
284 }
285 if(selectionMode == 0 || selectionMode == 1 || selectionMode == 3 || selectionMode == 4) {
286 Vector2f gOffset = drawData.cam.c.to_space(g.offset);
287 drawP.draw_drag_circle(canvas, gOffset, {1.0f, 0.27f, 0.27f, 1.0f}, drawData);
288 }
289 }
290}
291
292void GridModifyTool::switch_tool(DrawingProgramToolType newTool) {
293 NetworkingObjects::NetObjTemporaryPtr<WorldGrid> gLock = grid.lock();

Callers

nothing calls this directly

Calls 7

lockMethod · 0.80
draw_drag_circleMethod · 0.80
valueMethod · 0.45
to_spaceMethod · 0.45
xMethod · 0.45
yMethod · 0.45
from_spaceMethod · 0.45

Tested by

no test coverage detected