#import "@local/handout:0.1.0": *
#import "@preview/cetz:0.4.2"


// Shorthand, we'll be using these a lot.
#let tp = sym.plus.circle
#let tm = sym.times.circle

#let graphgrid(inner_content) = {
  align(center, box(inset: 3mm, cetz.canvas({
    import cetz.draw: *
    let x = 5.25

    grid(
      (0, 0),
      (x, x),
      step: 0.75,
      stroke: luma(100) + 0.3mm,
    )

    if (inner_content != none) {
      inner_content
    }

    mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
    mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)

    line(
      (0, x + 0.25),
      (0, 0),
      (x + 0.25, 0),
      stroke: 0.75mm + black,
    )
  })))
}

/// Adds extra padding to an equation.
/// Used as follows:
///
/// #eqmbox($
///   f(x) = -2(x #tp 2)(x #tp 8)
/// $)
///
/// Note that there are newlines between the $ and content,
/// this gives us display math (which is what we want when using this macro)
#let eqnbox(eqn) = {
  align(center, box(
    inset: 3mm,
    eqn,
  ))
}

#let dotline(a, b) = {
  cetz.draw.line(a, b, stroke: (
    dash: "dashed",
    thickness: 0.5mm,
    paint: ored,
  ))
}
