Skip to content

Latest commit

 

History

History
525 lines (371 loc) · 23.2 KB

CHANGELOG.md

File metadata and controls

525 lines (371 loc) · 23.2 KB

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

Note: Unlisted patch versions only involve non-code or otherwise excluded changes and/or version bumps of transitive dependencies.

6.1.29 (2024-04-20)

♻️ Refactoring

6.1.21 (2024-03-18)

♻️ Refactoring

  • update .rotateByID() impls (de6bd05)

6.1.11 (2024-02-22)

♻️ Refactoring

  • update object destructuring in all pkgs & examples (f36aeb0)

6.1.0 (2024-01-26)

🚀 Features

  • add canvasFromPixelBuffer(), update canvasPixels() (7f8583b)

6.0.0 (2023-12-19)

🛑 Breaking changes

  • remove canvas2d() & related types (20d1879)
  • BREAKING CHANGE: migrate canvas2d() & related types to new pkg @thi.ng/canvas
    • add canvas opts arg for imageCanvas()

5.0.0 (2023-11-12)

🛑 Breaking changes

  • update getRegion() return type (6c22953)
  • BREAKING CHANGE: update getRegion() to return undefined if result region < 1 pixel
    • add size checks to impls in IntBuffer/FloatBuffer

4.3.3 (2023-11-09)

♻️ Refactoring

  • update all tests (packages A-S) (e3085e4)

4.3.0 (2023-10-27)

🚀 Features

  • add imageFromFile(), deprecate imagePromise() (cac6468)
    • internal restructure, move all imageXXX() fns to /src/image.ts
    • add imageFromFile()
    • deprecate imagePromise(), add as imageFromURL()

4.2.9 (2023-08-04)

♻️ Refactoring

  • update identity usage in various pkgs (b6db053)

4.2.0 (2023-04-08)

🚀 Features

  • add IRotate and impls for int/float buffers (a25b52a)
    • add rotateCW/CCW/180 methods
    • add rotateByID()

4.1.0 (2023-01-10)

🚀 Features

  • add normalize opt for defKernel()/defLargeKernel() (9286590)
  • add FloatFormat.getNormalized() (ddf0980)
  • add FLOAT_GRAY_RANGE format (eedb24f)
  • update/improve FloatBuffer.as() single channel conversions (0146075)
    • check if both source & dest formats are single channel
    • if so, convert directly via getNormalized() and avoid intermediate (lossy) conversion via ABGR
    • using only scalar access also faster than per-pixel subarrays
  • add FloatFormat.range (0dbac7d)
    • update all float formats
    • update FloatBuffer.clamp/clampChannel/getChannel()
  • add IntBuffer/FloatBuffer.flipX() (daa7c32)

♻️ Refactoring

  • update IBlend (1d3f358)
    • include pre/postmultiply() fns
    • add docs
    • add FloatBuffer.isPremultiplied()

4.0.0 (2022-09-27)

🛑 Breaking changes

  • update .blitCanvas(), .toImageData() (85e4e38)
  • BREAKING CHANGE: add BlitCanvasOpts for optional .blitCanvas() args
    • update .blitCanvas() impls
    • update .toImageData() impls to accept pre-existing ImageData instance
    • add ensureImageData() check

3.4.0 (2022-04-07)

🚀 Features

  • buffer method additions, internal checks (a70b3c1)
    • add FloatBuffer.premultiply/postmultiply()
    • add Int/FloatBuffer.fill()

3.3.0 (2021-12-13)

🚀 Features

  • add Canvas2DOpts, update canvas2d() (7ff99a2)
  • add MAXIMA convolution kernels (d15caed)
    • add MAXIMA4_CROSS, MAXIMA4_DIAG
    • add MAXIMA8
  • add 8/16/32bit support for defIndexed() (b20a924)
    • add defIndexed8/16/32()
    • update defIndexed() to decide about required bitdepth
    • add/update docs strings

3.2.0 (2021-11-17)

🚀 Features

  • Using workspaces for local tools (bf7a404) Improving the overall build ergonomics
    • introduced a tools workspaces
    • imported it in all needed packages/examples
    • inclusive project root

♻️ Refactoring

  • testrunner to binary (4ebbbb2) this commit reverts (partly) changes made in: ef346d7a8753590dc9094108a3d861a8dbd5dd2c overall purpose is better testament ergonomics: instead of having to pass NODE_OPTIONS with every invocation having a binary to handle this for us.

3.1.0 (2021-11-10)

🚀 Features

  • add IGrid2D impls, update ctors (3ac0327)

♻️ Refactoring

  • minor update mixin sites (6980c3a)
  • update all countdown loops (a5f374b)

3.0.0 (2021-11-04)

🛑 Breaking changes

  • rename int buffer/format types (6be02f1)
  • BREAKING CHANGE: rename int buffer/format types
    • rename:
      • PackedBuffer => IntBuffer
      • PackedFormat/Spec => IntFormat/Spec
      • PackedChannel/Spec => IntChannel/Spec
    • replace static FloatBuffer.fromInt() with standalone fn floatBufferFromInt()
    • add floatBufferFromImage()
    • add floatBufferFromCanvas()
    • update readme

2.2.0 (2021-11-03)

🚀 Features

  • add flood fill functions (65796b9)
  • add unsafe getters/setters (714d6f7)
    • update IPixelBuffer and all impls
  • add shape drawing fns (d1e284b)
    • add drawLine(), drawLineWith()
    • add drawCircle()
    • add drawRect()

♻️ Refactoring

  • update types (IGrid2D) (2fe8d4f)
    • update IPixelBuffer to extend new IGrid2D
    • deprecate .pixels property (use .data)
    • add .rowStride getter for PackedBuffer

2.1.0 (2021-10-13)

🚀 Features

  • add CORS config for imagePromise() (a5a2058)

2.0.1 (2021-10-13)

♻️ Refactoring

  • update imports in all pkgs (5fa2b6f)
    • add .js suffix for all relative imports
  • update imports in all tests/pkgs (effd591)

2.0.0 (2021-10-12)

🛑 Breaking changes

  • major update of ALL pkgs (export maps, ESM only) (0d1d6ea)
  • BREAKING CHANGE: discontinue CommonJS & UMD versions
    • only ESM modules will be published from now on
    • CJS obsolete due to ESM support in recent versions of node:
      • i.e. launch NodeJS via:
      • node --experimental-specifier-resolution=node --experimental-repl-await
      • in the node REPL use await import(...) instead of require()
    • UMD obsolete due to widespread browser support for ESM Also:
    • normalize/restructure/reorg all package.json files
    • cleanup all build scripts, remove obsolete
    • switch from mocha to @thi.ng/testament for all tests
  • restructure package (698130a)
  • BREAKING CHANGE: migrate dither ops to new pkg @thi.ng/pixel-dither
    • remove dither related types & functions
    • remove PackedBuffer.dither()
    • move internal helpers
  • replace static PackedBuffer methods (8e5d2db)
  • BREAKING CHANGE: replace static PackedBuffer methods w/ standalone functions
    • add packedBufferFromImage()
    • add packedBufferFromCanvas()
    • remove deprecated buffer() ctor fn

♻️ Refactoring

  • update all tests in all pkgs (8b582bc)
  • update imports (138571a)
  • update deps & imports in various pkgs (e1cf29e)
    • largely related to recent updates/restructuring of these packages:
      • api
      • defmulti
      • errors
      • logger
  • dedupe defIndexed() internals (a4a3e61)
  • internal restructure (8a7ec9c)
  • rename internals (055e799)

0.11.0 (2021-08-04)

🚀 Features

  • add DominantColorOpts (a57882b)
    • add filter option to pre-filter eligible pixels

0.10.3 (2021-06-08)

♻️ Refactoring

  • dedupe defKernel() internals (084c84a)
    • extract declOffset() helper to dedupe offset var declarations

0.10.2 (2021-04-24)

♻️ Refactoring

0.10.0 (2021-04-19)

🚀 Features

0.9.0 (2021-04-03)

🚀 Features

  • add IToImageData & impls (3172e1e)
  • update/fix convolution, add LANCZOS (eadefda)
    • remove pad option (now always enabled)
    • add offset option
    • update defKernel() codegen to consider/repeat edge pixels
    • update/fix defLargeKernel() for even sized kernels and consider edges
    • add LANCZOS kernel gen
  • add imagePyramid() iterator (7f77e07)
  • add .upsize() impls, fix convolve() (08f0d7c)
    • add Packed/FloatBuffer.upsize()
    • fix channel offset handling in convolve()

0.8.1 (2021-03-20)

🩹 Bug fixes

  • update convolve() for even kernel sizes (b086224)
    • since even kernel sizes are more left/top centric, update max iteration limits to ensure right colum & bottom row will be processed

♻️ Refactoring

  • dedupe sampling functions (2643bdd)

0.8.0 (2021-03-17)

🚀 Features

  • add defIndexed() HOF pixel format (c13a568)
  • add defSampler(), resize() (aa71eb7)
    • replace Filter & Wrap enums w/ type aliases (#256)
    • add HOF defSampler() w/ impls for PackedBuffer only (so far)
    • add resize() (also PackedBuffer only)
  • add bicubic samplers, fix resize() (951fa9e)
  • add float format samplers, update various types (6f9dae6)
    • add IResizable and implement for Packed/FloatBuffer
    • add FloatBuffer.invert()
    • fix .forEach() impls (esp. FloatBuffer), use return values
    • update IBlit, IBlend, IInvert generics

♻️ Refactoring

  • convert resize() into class method (1c4dcaa)
    • move IntSampler, FloatSampler types to api.ts
    • migrate resize() to PackedBuffer.resize()
    • replace PackedBuffer.downsample() w/ new PackedBuffer.scale()
    • update resize filter arg to also accept custom sampler
  • simplify bilinearABGR() (1ec724c)

0.7.0 (2021-03-03)

🚀 Features

  • add gradientImage() & FLOAT_NORMAL format (78683b7)
  • add convolve() & preset kernels (6a31dc3)
  • add normalMap(), add more kernels (f32686d)
    • replace gradientImage() w/ normalMap()
    • add GRADIENT_X/Y, HIGHPASS3 preset kernels
  • add defKernel() kernel fn codegen (25b97a3)
  • add step size support for normalMap() (ab72a79)
  • add 5x5 kernel presets (56f96f4)
  • update/extend/refactor convolveChannel/Image() (6692865)
    • add new convolution related types
    • add pooling & stride support (convolve(), defKernel())
    • add POOL_* filter presets
    • update normalMap()
  • add IEmpty impls for Float/PackedBuffer (46ac1a1)
  • add/update buffer factory fns (ba38e13)
    • add fn overrides to simplify userland API
  • add POOL_THRESHOLD preset (5f1c1de)
  • update PackedBuffer.fromCanvas() (3bdb086)
    • add support for format conversion
    • simplify .fromImage()
  • add defLargeKernel(), conv presets (9c71165)
    • add HOF GAUSSIAN kernel factory
    • fix internal K var naming in defKernelx

🩹 Bug fixes

  • add clamping for float->ABGR conversion (41540e0)
  • fix POOL_NEAREST index (b98d05d)

♻️ Refactoring

  • migrate interfaces to api.ts (0e3a742)

0.6.1 (2021-02-20)

♻️ Refactoring

  • update IPixelBuffer, extract format defs (3416ff7)
    • make IPixelBuffer fields readonly, expose stride
    • move all format related defs to /format subdir
  • update format defs, typed array handling (2b06774)
  • update ARGB8888, update deps (9b86922)
  • split defFloatFormat(), extract helpers (c9ade11)

0.6.0 (2021-01-13)

🚀 Features

  • add downsample() for both buffer types (0b9b0fa)

0.5.0 (2021-01-02)

🚀 Features

  • add FLOAT_HSVA format, update FloatFormatSpec (118c4ed)
    • update FloatFormatSpec & defFloatFormat() to support manual conversions
  • add FloatBuffer.fromPacked() (abd1ca8)
    • implement IPixelBuffer

♻️ Refactoring

  • implement IPixelBuffer for PackedBuffer (2dcbde5)

0.4.9 (2020-12-07)

♻️ Refactoring

  • update type-only imports in various tests/pkgs (3fd9c24)
  • update type-only imports in remaining pkgs (b22aa30)

0.4.7 (2020-11-24)

♻️ Refactoring

0.4.5 (2020-09-13)

♻️ Refactoring

  • update imports, use new Fn types (213ec33)

0.4.0 (2020-07-22)

🚀 Features

0.3.0 (2020-05-29)

🚀 Features

  • add FloatBuffer and float format support (d6c490f)
  • add dither support for int buffers/formats (4475fc1)
  • add/update float formats, tests (6eb1f67)

0.2.0 (2020-05-19)

🚀 Features

  • update canvas2d(), imageCanvas() (65929a2)
    • add opt parent arg to append canvas as child node
  • add .copy(), update .blitCanvas() (f4b2c3e)

0.1.14 (2020-04-05)

♻️ Refactoring

  • switch to non-const enums (99fb1e6)

0.1.9 (2020-02-25)

♻️ Refactoring

0.1.4 (2019-09-21)

🩹 Bug fixes

  • clamp values in PackedChannel.setFloat() (ce78467)

0.1.3 (2019-08-21)

♻️ Refactoring

  • update setChannel(), pre/postmultiply(), extract & re-use (17e5f3d)

0.1.0 (2019-07-31)

🚀 Features

  • initial import pixel buffer pkg (1836ea7)
  • add invert, add/split interfaces, refactor blit fns (22a456a)
  • (#106) add IBlend interface/impls, refactor IBlit (e068f46)
    • add BlitOpts, update .blit() args
    • add IBlend impls for ABGRBuffer, ARGBBuffer, RGBAFloatBuffer
    • update blit1(), blitStrided()
    • add blendInt(), blendFloat()
  • (#106) add Uint16Buffer, update IColorChannel, add Channel.GRAY (3088646)
  • update canvasPixels() (5ea200d)
  • complete rewrite/simplify/extend using format descriptors (cde7bf9)
    • remove all existing buffer impls
    • add PackedBuffer as currently only buffer type
    • add preset buffer formats:
      • GRAY8
      • GRAY_ALPHA88
      • ARGB4444
      • ARGB1555
      • RGB565
      • RGB888
      • ARGB8888
      • BGR888
      • ABGR8888
    • add defPackedFormat() to define & compile new formats
    • add various codegen utils
    • add new types / interfaces
  • add channel float accessors, update PackedChannel (b4168f8)
    • add precomputed masks and get/setFloat to PackedChannel
    • refactor code gens
    • add PackedBuffer.get/setChannelAt()
    • add ensureChannel() helper
  • add pre/postmultiply & isPremultiplied checks (969d6b8)
    • add porter-duff dep
    • update readme
  • updat setChannel, add ALPHA8, update readme (899f1a3)
    • setChannel now supports format conversion
  • add PackedBuffer.fromCanvas(), update readme (ac283ee)
  • add buffer() syntax sugar, PackedBuffer.forEach (bc17ac9)
  • add 16bit formats, add docs, update readme (5d72c37)

🩹 Bug fixes

  • byte order fixes, extract luminance fns (b3c79e3)
  • update clampRegion(), adjust src pos if dest is outside (bb6ba47)
  • update prepRegions() (ad8d2d7)
  • fast-route check in setChannel() (b59069a)
  • update 16bit formats & handling in getChannel (aa15179)