grixy 0.6.2

Zero-cost 2D grids for embedded systems and graphics
Documentation

### Added

- `ops::draw::copy_rect_clamped`, a variant of `copy_rect` bounded on `ExactSizeGrid` (in addition
  to `GridRead`/`GridWrite`). `from` is clamped to the source grid's bounds, the equivalent
  destination rectangle is translated from that clamp and clamped again to the destination grid's
  bounds, and the resulting equal-sized rectangles are copied position-for-position. Because both
  clamps use the grid's authoritative size instead of `GridBase::trim_rect`'s best-effort hint, the
  copy is always bounded to the actual overlapping region - useful when `from` may be much larger
  than the source's real bounds and the source has no accurate `size_hint`. Exported from `ops` and
  the prelude alongside `copy_rect`.

### Fixed

- `ops::draw::copy_rect` misaligned rows whenever either the source or the destination rectangle
  clipped. The implementation zipped a lazily filter-mapped source value stream against a
  separately computed destination position stream; when either side dropped a cell (because it
  was out of bounds), the two streams desynced and every subsequent cell in the zip shifted by
  one, corrupting the rest of the copy instead of just skipping the clipped cell. Fixed by pairing
  each source position with its destination position by a fixed offset and copying them one at a
  time via `get`/`set`, so an out-of-bounds cell on either side is skipped in place - matching what
  the function's own docs already claimed ("those individual cells are ignored"). No API change;
  `trim_rect` is still used to narrow the candidate area as an optimization where a grid's
  `size_hint` supports it, but correctness no longer depends on it.
- `transform::Viewed::get` double-offset `pos`: it translated `pos` by subtracting
  `bounds.top_left()` and then checked the *already-translated* position against the
  *untranslated* `bounds`, which only happened to work when `bounds.top_left() == Pos::ORIGIN`
  (the only case the crate's own tests covered) and underflow-panicked for any `pos` smaller than
  `bounds.top_left()`. `Viewed::iter_rect` had the same directional bug (translating by
  subtracting instead of adding) plus no clamping, so it could both panic and leak cells from
  outside the view. Fixed by treating the incoming position/rect as view-local (checking it
  against the view's own zero-based size, or clamping via `trim_rect`, before adding
  `bounds.top_left()` to reach the source's coordinate space).