Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perf: Change InvertDraw to skia xor blending #193

Merged
merged 1 commit into from
Apr 23, 2024

Conversation

reportingissue
Copy link
Collaborator

I need some reviewing and testing on this one, but it works for all my use cases.

The good parts:

  • Slight performance increase for the default example in the zpl manual on my machine (~40ms -> ~30ms)
  • Offloading the blending logic to skia rather than manual
  • Removes pixel looping so that in the future parallelization opportunities are available (Skia GLView canvas for example)

Current problems (discuss):

  • The ZPL for the second example doesn't match the examples in Speedup drawing of reversed elements #64
  • We are still recreating a canvas the size of the label, then applying it to the base canvas
  • Would like to load strings from a separate folder in the Viewer test, but don't know how

- Also added tests
- Refactored viewer tests
@YipingRuan YipingRuan changed the base branch from master to develop September 19, 2023 02:28
@daanggc daanggc mentioned this pull request Apr 12, 2024
@primo-ppcg primo-ppcg merged commit a41fc18 into BinaryKits:develop Apr 23, 2024
2 checks passed
primo-ppcg pushed a commit that referenced this pull request Apr 23, 2024
* Change invertdraw to skia xor blending

- Also added tests
- Refactored viewer tests

* Begin structuring viewer testing project

- readme for goals
- custom test for feature development
- zpl/png data folder copied to output
- factor out more to common

* Try to fix cannot copy data to output for linux build

* Copy data again

* Capitalization mistake
primo-ppcg added a commit that referenced this pull request Apr 26, 2024
* Create dotnet - test.yml

* Bump SkiaSharp from 2.88.3 to 2.88.6 in /src/BinaryKits.Zpl.Viewer

Bumps [SkiaSharp](https://github.com/mono/SkiaSharp) from 2.88.3 to 2.88.6.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](mono/SkiaSharp@v2.88.3...v2.88.6)

---
updated-dependencies:
- dependency-name: SkiaSharp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(viewer): cannot find package vue@next (#208)

* fix(viewer): cannot find package vue@next

* Update index.html

Don't use specific versions for web dependencies.

* Enable ^FV command (needed for UPS) (#195)

* Enable ^FV command

- Based off ^FD

* ZPL Parser: Enable ignoring certain commands (#194)

* Enable ignoring certain commands

- small refactors + comments in the zpl parser

* Comment specification

* Add documentation on how to add barcode support (#198)

* Change invertdraw to skia xor blending (#193)

- Also added tests
- Refactored viewer tests

* Structure Viewer UnitTest project (merge after #193) (#199)

* Change invertdraw to skia xor blending

- Also added tests
- Refactored viewer tests

* Begin structuring viewer testing project

- readme for goals
- custom test for feature development
- zpl/png data folder copied to output
- factor out more to common

* Try to fix cannot copy data to output for linux build

* Copy data again

* Capitalization mistake

* Added: Font fallback structure for the default fonts. (#217)

* Added: Font fallback structure for the default fonts.

* Improved: DejaVu Sans Mono as first mono type
Improved: Courier New is more often available than Courier

* Added: Roboto font to Dockerfile

* Improved: Enabled antialiased text (#218)

* Improved: Barcode scaling for PDF417 and Code128 (#219)

* Improved: Code128 charset usage
Improved: PDF417 scaling
Improved: DHL uses a decimal height for PDF417
Improved: PDF417 size when no column value is given

* Improved: PDF417 uses correct vertical scaling now

* Improved: GS1 type support
Improved: Code128 invocation filtering

* Added: PDF generation (#220)

* Added: Font fallback structure for the default fonts.

* Improved: DejaVu Sans Mono as first mono type
Improved: Courier New is more often available than Courier

* Improved: Enabled antialiased text

* Improved: Code128 charset usage
Improved: PDF417 scaling
Improved: DHL uses a decimal height for PDF417
Improved: PDF417 size when no column value is given

* Added: Roboto fontface to docker image

* Improved: Added a working roboto font to the Dockerfile

* Improved: PDF417 uses correct vertical scaling now

* Added: PDF support
Added: Download buttons for ZPL, PNG and PDF
Fixed: GraphicBox radius with thicker lines
Improved: Invert/Reverse draw results when using white elements
Improved: White background for PNG requested from viewer

* Added: More real world tests
Improved: Tabs for tests and examples in webinterface

* Improved: GraphicBox can't have a border smaller than 1

* Improved: Made more ^FR blending native for performance

* Improved: GraphicBox border should not exceed half of the smallest side.
Improved: Adjusted some example sizes

* Fixed: Build issues

* Improved: More Skia blending to improve performance
Improved: Performance of GraphicBox rounding fix
Added: GraphicCircle supports reverse draw now
Improved: Overlay can handle custom label sizes better now

* Improved: Overlay requests may use wrong number formatting

* Bump Dependencies

Bump ImageSharp and SkiaSharp dependencies.

* Added: MaxiCode support (#224)

* Added: MaxiCode support

* Improved: Slight finetune on maxicode linux fix

* Patch #194 (#227)

Don't neglect to append on ignore.

* Added: Barcode93 support (#226)

* Added: Barcode93 support

* Update Code93

Update interpretation line
Add test to WebApi

* Fix vue lib URL (#228)

* Drop BarcodeLib dependency (#229)

* Drop BarcodeLib dependency

* don't inline regex

* Prepare for release

* Silence warnings

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Yiping <YipingRuan@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dmitrii Savchenkov <dmisavchenkv@gmail.com>
Co-authored-by: reportingissue <136993729+reportingissue@users.noreply.github.com>
Co-authored-by: Daniël van der Garde <12891775+daanggc@users.noreply.github.com>
Co-authored-by: Marius Starke <72494359+marius-arch@users.noreply.github.com>
Co-authored-by: Yiping <kookaburracc@msn.com>
primo-ppcg added a commit that referenced this pull request Apr 26, 2024
* Create dotnet - test.yml

* Bump SkiaSharp from 2.88.3 to 2.88.6 in /src/BinaryKits.Zpl.Viewer

Bumps [SkiaSharp](https://github.com/mono/SkiaSharp) from 2.88.3 to 2.88.6.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](mono/SkiaSharp@v2.88.3...v2.88.6)

---
updated-dependencies:
- dependency-name: SkiaSharp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(viewer): cannot find package vue@next (#208)

* fix(viewer): cannot find package vue@next

* Update index.html

Don't use specific versions for web dependencies.

* Enable ^FV command (needed for UPS) (#195)

* Enable ^FV command

- Based off ^FD

* ZPL Parser: Enable ignoring certain commands (#194)

* Enable ignoring certain commands

- small refactors + comments in the zpl parser

* Comment specification

* Add documentation on how to add barcode support (#198)

* Change invertdraw to skia xor blending (#193)

- Also added tests
- Refactored viewer tests

* Structure Viewer UnitTest project (merge after #193) (#199)

* Change invertdraw to skia xor blending

- Also added tests
- Refactored viewer tests

* Begin structuring viewer testing project

- readme for goals
- custom test for feature development
- zpl/png data folder copied to output
- factor out more to common

* Try to fix cannot copy data to output for linux build

* Copy data again

* Capitalization mistake

* Added: Font fallback structure for the default fonts. (#217)

* Added: Font fallback structure for the default fonts.

* Improved: DejaVu Sans Mono as first mono type
Improved: Courier New is more often available than Courier

* Added: Roboto font to Dockerfile

* Improved: Enabled antialiased text (#218)

* Improved: Barcode scaling for PDF417 and Code128 (#219)

* Improved: Code128 charset usage
Improved: PDF417 scaling
Improved: DHL uses a decimal height for PDF417
Improved: PDF417 size when no column value is given

* Improved: PDF417 uses correct vertical scaling now

* Improved: GS1 type support
Improved: Code128 invocation filtering

* Added: PDF generation (#220)

* Added: Font fallback structure for the default fonts.

* Improved: DejaVu Sans Mono as first mono type
Improved: Courier New is more often available than Courier

* Improved: Enabled antialiased text

* Improved: Code128 charset usage
Improved: PDF417 scaling
Improved: DHL uses a decimal height for PDF417
Improved: PDF417 size when no column value is given

* Added: Roboto fontface to docker image

* Improved: Added a working roboto font to the Dockerfile

* Improved: PDF417 uses correct vertical scaling now

* Added: PDF support
Added: Download buttons for ZPL, PNG and PDF
Fixed: GraphicBox radius with thicker lines
Improved: Invert/Reverse draw results when using white elements
Improved: White background for PNG requested from viewer

* Added: More real world tests
Improved: Tabs for tests and examples in webinterface

* Improved: GraphicBox can't have a border smaller than 1

* Improved: Made more ^FR blending native for performance

* Improved: GraphicBox border should not exceed half of the smallest side.
Improved: Adjusted some example sizes

* Fixed: Build issues

* Improved: More Skia blending to improve performance
Improved: Performance of GraphicBox rounding fix
Added: GraphicCircle supports reverse draw now
Improved: Overlay can handle custom label sizes better now

* Improved: Overlay requests may use wrong number formatting

* Bump Dependencies

Bump ImageSharp and SkiaSharp dependencies.

* Added: MaxiCode support (#224)

* Added: MaxiCode support

* Improved: Slight finetune on maxicode linux fix

* Patch #194 (#227)

Don't neglect to append on ignore.

* Added: Barcode93 support (#226)

* Added: Barcode93 support

* Update Code93

Update interpretation line
Add test to WebApi

* Fix vue lib URL (#228)

* Drop BarcodeLib dependency (#229)

* Drop BarcodeLib dependency

* don't inline regex

* Prepare for release

* Silence warnings

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Yiping <YipingRuan@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dmitrii Savchenkov <dmisavchenkv@gmail.com>
Co-authored-by: reportingissue <136993729+reportingissue@users.noreply.github.com>
Co-authored-by: Daniël van der Garde <12891775+daanggc@users.noreply.github.com>
Co-authored-by: Marius Starke <72494359+marius-arch@users.noreply.github.com>
Co-authored-by: Yiping <kookaburracc@msn.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants