Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
676ce10
Introduce ProjectionKind and capability-based projection dispatch
trasch Sep 14, 2026
4a05232
Route projections through a ProjectionDefinition registry
trasch Sep 14, 2026
5e639b0
NoSRID coordinates are copied verbatim
trasch Sep 14, 2026
20df758
Add EPSG:3395 and EPSG:32662 projections
trasch Sep 14, 2026
8d2434a
Make WKT CRS matching registry-driven and extend coder/tile tests
trasch Sep 14, 2026
41c0671
Add all 120 UTM zone projections (EPSG:32601-32660, 32701-32760)
trasch Sep 14, 2026
f2bb3d6
Identify UTM zones in WKT strings via regex
trasch Sep 14, 2026
40288c5
Add projection-extent validation, UTM convenience API and benchmarks
trasch Sep 14, 2026
c380480
Restructure Projection as a struct with a public registration API
trasch Sep 15, 2026
b84315f
Support non-WGS84 datums: ETRS89/NAD27/OSGB1936/BNG built-in CRSs
trasch Sep 15, 2026
5f0cd25
Updated AGENTS.md
trasch Sep 15, 2026
a9f1b43
Move projection code into Sources/GISTools/Projections
trasch Sep 15, 2026
376a561
Add batch coordinate conversion with hoisted conversion setups
trasch Sep 15, 2026
6c9b6f7
Add Swiss and Irish datum CRSs and UTM zone selection
trasch Sep 15, 2026
b5811ef
Move projection definitions into Projections/Definitions
trasch Sep 15, 2026
4d2a332
Add pan-European and national CRSs: LAEA/LCC Europe, Lambert-93, RD N…
trasch Sep 15, 2026
ce7498f
Replace Snyder transverse Mercator in UTM with Karney's algorithm
trasch Sep 15, 2026
8cb3732
Add projection matrix cross-validation against PROJ reference data
trasch Sep 16, 2026
d6fdc0e
Upgrade the laea authalic latitude to the Karney auxlat series
trasch Sep 16, 2026
b482f28
Preserve the height in the Helmert datum transformations
trasch Sep 16, 2026
024ae64
Some cleanup
trasch Sep 16, 2026
a2d77af
Moved some test files around
trasch Sep 16, 2026
65f2278
Moved another two files
trasch Sep 16, 2026
1f31f9d
Add German and Austrian Gauss-Krueger zone belts
trasch Sep 16, 2026
06a58ae
Add North American NAD83 CRSs: UTM belt, Albers and Canadian grids
trasch Sep 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
--acronyms ID,URL,UUID
--allman false
--allow-partial-wrapping false
--anonymous-for-each convert
--asset-literals visual-width
--async-capturing
--before-marks
--binary-grouping 4,8
--blank-line-after-switch-case multiline-only
--call-site-paren same-line
--category-mark "MARK: %c"
--class-threshold 0
--closing-paren default
--closure-void remove
--complex-attributes preserve
--computed-var-attributes preserve
--conditional-assignment after-property
--conflict-markers reject
--date-format system
--decimal-grouping 3,6
--default-test-suite-attributes
--doc-comments before-declarations
--else-position next-line
--empty-braces no-space
--enum-namespaces always
--enum-threshold 0
--equatable-macro none
--exponent-case lowercase
--exponent-grouping disabled
--extension-acl on-declarations
--extension-mark "MARK: - %t + %c"
--extension-threshold 0
--file-macro "#file"
--fraction-grouping disabled
--fragment false
--func-attributes preserve
--generic-types
--group-blank-lines true
--grouped-extension "MARK: %c"
--guard-else auto
--guard-like-if-statements preserve
--header ignore
--hex-grouping 4,8
--hex-literal-case uppercase
--ifdef no-indent
--import-grouping alpha
--indent 4
--indent-blank-lines false
--indent-case false
--indent-strings false
--inferred-types always
--init-coder-nil false
--lifecycle
--line-after-marks true
--line-between-guards false
--linebreaks lf
--list-wrap-threshold none
--mark-categories true
--mark-class-threshold 0
--mark-enum-threshold 0
--mark-extension-threshold 0
--mark-extensions always
--mark-struct-threshold 0
--mark-types always
--markdown-files ignore
--max-width none
--modifier-order
--never-trailing
--nil-init remove
--no-space-operators
--no-wrap-operators
--non-complex-attributes
--octal-grouping 4,8
--operator-func spaced
--organization-mode visibility
--organize-types actor,class,enum,struct
--pattern-let hoist
--prefer-synthesized-init-for-internal-structs never
--preserve-acronyms
--preserve-decls
--preserved-property-types Package
--property-types infer-locals-only
--ranges spaced
--redundant-async tests-only
--redundant-optional-binding same-name-only
--redundant-throws tests-only
--self init-only
--self-required
--semicolons inline-only
--short-optionals except-properties
--single-line-for-each ignore
--single-line-ternary convert
--smart-tabs enabled
--some-any true
--sort-swiftui-properties none
--sorted-patterns
--stored-var-attributes preserve
--strip-unused-args always
--struct-threshold 0
--suite-name-format preserve
--tab-width unspecified
--test-case-access-control internal
--test-case-name-format raw-identifiers
--throw-capturing
--timezone system
--trailing-closures
--trailing-commas always
--trim-whitespace always
--type-attributes prev-line
--type-blank-lines insert
--type-body-marks preserve
--type-delimiter space-after
--type-mark "MARK: - %t"
--type-marks
--type-order
--url-macro none
--visibility-marks
--visibility-order
--void-type Void
--wrap-arguments before-first
--wrap-collections before-first
--wrap-conditions preserve
--wrap-effects never
--wrap-enum-cases with-values
--wrap-parameters before-first
--wrap-return-type never
--wrap-string-interpolation false
--wrap-ternary before-operators
--wrap-type-aliases before-first
--xcode-indentation enabled
--xctest-symbols
--yoda-swap always
--disable trailingClosures,unusedArguments,preferExplicitFalse
--enable blankLineAfterSwitchCase,blankLinesAfterGuardStatements,blockComments,isEmpty,preferContains,preferCountWhere,preferFirstWhere,preferFlatMap,preferLazyMap,preferMinOverSorted,preferSwiftStringAPI,preferSwiftTesting,singlePropertyPerLine,sortSwitchCases,unusedPrivateDeclarations,wrapEnumCases,wrapMultilineConditionalAssignment,wrapMultilineFunctionChains
9 changes: 8 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,14 @@ When a function **call** is split across multiple lines, place each argument on
## General instructions

- DO NOT take any shortcuts while implementing an algorithm. Correctness is the highest priority
- DO NOT commit changes unless the user tells you to do so, ALWAYS let the user review your changes

## NEVER COMMIT OR PUSH WITHOUT THE USER'S EXPLICIT REVIEW — THIS IS THE HIGHEST PRIORITY RULE IN THIS FILE

- **NEVER commit without the user having explicitly reviewed the changes.** Not once, not "just this once", not even when the user asks for a PR implicitly or you believe they'd want it. Zero exceptions without a direct instruction.
- **NEVER push** to any remote without the user's explicit, per-action consent — this includes branch moves, force-pushes, and pushes done as part of "creating a PR".
- **ALWAYS leave changes uncommitted** in the working tree for review. Let the user run `git add`/`git commit`/`git push` themselves, or explicitly grant permission.
- **When in ANY doubt, ask first.** A wrongly published change cannot be unpublished; a delayed commit costs nothing. This has caused real problems before (public review-bypass, lost user control); treat every `git commit`, `git push`, and `gc` remote action as requiring an unambiguous "yes, commit/push" from the user.
- An explicit user request to commit applies **only to that request** — never carry permission forward into follow-up turns; each new task starts back at "working tree only".
- DO NOT create free functions (un-namespaced top-level functions). Always use a `private enum` namespace or extensions on existing types.
- Code MUST compile cleanly, with no warnings
- New algorithms and bug fixes MUST include tests for all projections (EPSG:4326, EPSG:3857, EPSG:4978, noSRID)
Expand Down
157 changes: 0 additions & 157 deletions CRASH_NOTE.md

This file was deleted.

Loading
Loading