├── .gitignore ├── .gitlab-ci.yml ├── .gitlab-ci.yml-ignored ├── .gitlab ├── run_meson_health_diff.sh └── search-common-ancestor.sh ├── .kateconfig ├── .mailmap ├── AUTHORS ├── COPYING ├── COPYING.LESSER ├── MAINTAINERS ├── bin ├── argvs.c ├── argvs.h ├── gegl-options.c ├── gegl-options.h ├── gegl-path-smooth.c ├── gegl-path-smooth.h ├── gegl-path-spiro.c ├── gegl-path-spiro.h ├── gegl.c ├── lua │ ├── cairo.lua │ ├── cairo_h.lua │ ├── gegl_box-blur.lua │ ├── gegl_c2g.lua │ ├── gegl_crop.lua │ ├── gegl_edge-neon.lua │ ├── gegl_fill-path.lua │ ├── gegl_gaussian-blur.lua │ ├── gegl_linear-gradient.lua │ ├── gegl_median-blur.lua │ ├── gegl_radial-gradient.lua │ ├── gegl_rectangle.lua │ ├── gegl_rotate.lua │ ├── gegl_snn-mean.lua │ ├── gegl_stress.lua │ ├── gegl_translate.lua │ ├── gegl_unsharp-mask.lua │ ├── gegl_vector-stroke.lua │ ├── init.lua │ ├── meson.build │ ├── mime.lua │ ├── mrg.lua │ ├── mrl.lua │ ├── preferences.lua │ └── viewer.lua ├── meson.build ├── mrg-gegl.c ├── mrg-gegl.h ├── ui-collection.c ├── ui-core.c ├── ui-viewer.c └── ui.h ├── docs ├── ChangeLog ├── NEWS.adoc ├── abyss_policy.adoc ├── build.adoc.in ├── commandline.adoc ├── contribute.adoc ├── copyright.adoc ├── development.adoc ├── devhelp.css ├── editor.adoc ├── environment.adoc ├── features.adoc ├── gegl-chain.adoc ├── gegl-usage.py ├── gegl.css ├── glossary.adoc ├── hello-world.adoc ├── images │ ├── GEGL-250.png │ ├── GEGL.png │ ├── GEGL.svg │ ├── gaussian-blur-graph.png │ ├── gegl.ico │ ├── standard-aux.png │ ├── standard-input.png │ └── standard-panorama.png ├── index.adoc ├── journal.adoc ├── meson.build ├── obsolete │ ├── gcut.adoc │ ├── gegl-sharp │ │ └── index.html │ ├── gegl-vala │ │ └── index.html │ ├── pygegl │ │ └── index.html │ ├── references.adoc │ └── rgegl │ │ └── index.html ├── operation-api.adoc ├── reference │ ├── gegl-docs.xml │ ├── gegl.toml.in │ ├── meson.build │ └── urlmap.js ├── release-notes.adoc ├── source-overview.adoc └── website │ ├── images │ └── meson.build │ ├── meson.build │ ├── operations │ ├── images │ │ └── meson.build │ └── meson.build │ ├── website-content.adoc │ └── website-listing.adoc ├── examples ├── 2geglbuffer.c ├── data │ └── surfer.png ├── frame-counter.c ├── gegl-convert.c ├── gegl-slicer.c ├── gegl-video.c ├── geglbuffer-add-image.c ├── geglbuffer-clock.c ├── hello-world.c ├── lgitest.lua ├── meson.build ├── sdl-draw.c ├── simple-graph.py ├── video-invert.c └── xml-graph.py ├── gegl.doap ├── gegl ├── Gegl.metadata.in ├── buffer │ ├── gegl-algorithms-2x2-downscale.inc │ ├── gegl-algorithms-bilinear.inc │ ├── gegl-algorithms-boxfilter.inc │ ├── gegl-algorithms.c │ ├── gegl-algorithms.h │ ├── gegl-buffer-access.c │ ├── gegl-buffer-backend.h │ ├── gegl-buffer-config.c │ ├── gegl-buffer-config.h │ ├── gegl-buffer-enums.c │ ├── gegl-buffer-enums.h │ ├── gegl-buffer-formats.h │ ├── gegl-buffer-index.h │ ├── gegl-buffer-iterator-private.h │ ├── gegl-buffer-iterator.c │ ├── gegl-buffer-iterator.h │ ├── gegl-buffer-linear.c │ ├── gegl-buffer-load.c │ ├── gegl-buffer-matrix2.c │ ├── gegl-buffer-matrix2.h │ ├── gegl-buffer-private.h │ ├── gegl-buffer-save.c │ ├── gegl-buffer-swap-private.h │ ├── gegl-buffer-swap.c │ ├── gegl-buffer-swap.h │ ├── gegl-buffer-types.h │ ├── gegl-buffer.c │ ├── gegl-buffer.h │ ├── gegl-compression-nop.c │ ├── gegl-compression-nop.h │ ├── gegl-compression-rle.c │ ├── gegl-compression-rle.h │ ├── gegl-compression-zlib.c │ ├── gegl-compression-zlib.h │ ├── gegl-compression.c │ ├── gegl-compression.h │ ├── gegl-memory-private.h │ ├── gegl-memory.c │ ├── gegl-memory.h │ ├── gegl-rectangle.c │ ├── gegl-rectangle.h │ ├── gegl-sampler-cubic.c │ ├── gegl-sampler-cubic.h │ ├── gegl-sampler-linear.c │ ├── gegl-sampler-linear.h │ ├── gegl-sampler-lohalo.c │ ├── gegl-sampler-lohalo.h │ ├── gegl-sampler-nearest.c │ ├── gegl-sampler-nearest.h │ ├── gegl-sampler-nohalo.c │ ├── gegl-sampler-nohalo.h │ ├── gegl-sampler.c │ ├── gegl-sampler.h │ ├── gegl-scratch-private.h │ ├── gegl-scratch.c │ ├── gegl-scratch.h │ ├── gegl-tile-alloc.c │ ├── gegl-tile-alloc.h │ ├── gegl-tile-backend-buffer.c │ ├── gegl-tile-backend-buffer.h │ ├── gegl-tile-backend-file-async.c │ ├── gegl-tile-backend-file.h │ ├── gegl-tile-backend-ram.c │ ├── gegl-tile-backend-ram.h │ ├── gegl-tile-backend-swap.c │ ├── gegl-tile-backend-swap.h │ ├── gegl-tile-backend.c │ ├── gegl-tile-backend.h │ ├── gegl-tile-handler-cache.c │ ├── gegl-tile-handler-cache.h │ ├── gegl-tile-handler-chain.c │ ├── gegl-tile-handler-chain.h │ ├── gegl-tile-handler-empty.c │ ├── gegl-tile-handler-empty.h │ ├── gegl-tile-handler-log.c │ ├── gegl-tile-handler-log.h │ ├── gegl-tile-handler-private.h │ ├── gegl-tile-handler-zoom.c │ ├── gegl-tile-handler-zoom.h │ ├── gegl-tile-handler.c │ ├── gegl-tile-handler.h │ ├── gegl-tile-source.c │ ├── gegl-tile-source.h │ ├── gegl-tile-storage.c │ ├── gegl-tile-storage.h │ ├── gegl-tile.c │ ├── gegl-tile.h │ ├── gegl-variants.inc │ └── meson.build ├── gegl-apply.c ├── gegl-apply.h ├── gegl-config.c ├── gegl-config.h ├── gegl-cpuaccel-private.h ├── gegl-cpuaccel.c ├── gegl-cpuaccel.h ├── gegl-debug.h ├── gegl-dot-visitor.c ├── gegl-dot-visitor.h ├── gegl-dot.c ├── gegl-dot.h ├── gegl-enums.c ├── gegl-enums.h ├── gegl-gio-private.h ├── gegl-gio.c ├── gegl-init-private.h ├── gegl-init.c ├── gegl-init.h ├── gegl-instrument.c ├── gegl-instrument.h ├── gegl-introspection-support.c ├── gegl-introspection-support.h ├── gegl-lookup.c ├── gegl-lookup.h ├── gegl-math.h ├── gegl-matrix.c ├── gegl-matrix.h ├── gegl-metadata.c ├── gegl-metadata.h ├── gegl-metadatahash.c ├── gegl-metadatahash.h ├── gegl-metadatastore.c ├── gegl-metadatastore.h ├── gegl-module.h ├── gegl-op.h ├── gegl-operations-util.h ├── gegl-parallel-private.h ├── gegl-parallel.c ├── gegl-parallel.h ├── gegl-plugin.h ├── gegl-random-private.h ├── gegl-random.c ├── gegl-random.h ├── gegl-serialize.c ├── gegl-stats.c ├── gegl-stats.h ├── gegl-types-internal.h ├── gegl-types.h ├── gegl-utils.c ├── gegl-utils.h ├── gegl-version.h.in ├── gegl-xml.c ├── gegl-xml.h ├── gegl.h ├── graph │ ├── gegl-cache.c │ ├── gegl-cache.h │ ├── gegl-callback-visitor.c │ ├── gegl-callback-visitor.h │ ├── gegl-connection.c │ ├── gegl-connection.h │ ├── gegl-node-output-visitable.c │ ├── gegl-node-output-visitable.h │ ├── gegl-node-private.h │ ├── gegl-node.c │ ├── gegl-node.h │ ├── gegl-pad.c │ ├── gegl-pad.h │ ├── gegl-region-generic.c │ ├── gegl-region-generic.h │ ├── gegl-region.h │ ├── gegl-visitable.c │ ├── gegl-visitable.h │ ├── gegl-visitor.c │ ├── gegl-visitor.h │ └── meson.build ├── meson.build ├── module │ ├── gegldatafiles.c │ ├── gegldatafiles.h │ ├── geglmodule.c │ ├── geglmodule.h │ ├── geglmoduledb.c │ ├── geglmoduledb.h │ └── meson.build ├── opencl │ ├── cl.h │ ├── cl_d3d10.h │ ├── cl_d3d11.h │ ├── cl_dx9_media_sharing.h │ ├── cl_egl.h │ ├── cl_ext.h │ ├── cl_gl.h │ ├── cl_half.h │ ├── cl_icd.h │ ├── cl_layer.h │ ├── cl_platform.h │ ├── cl_va_api_media_sharing_intel.h │ ├── cl_version.h │ ├── gegl-buffer-cl-cache.c │ ├── gegl-buffer-cl-cache.h │ ├── gegl-buffer-cl-iterator.c │ ├── gegl-buffer-cl-iterator.h │ ├── gegl-cl-color.c │ ├── gegl-cl-color.h │ ├── gegl-cl-init.c │ ├── gegl-cl-init.h │ ├── gegl-cl-introspection-support.h │ ├── gegl-cl-random.c │ ├── gegl-cl-random.h │ ├── gegl-cl-types.h │ ├── gegl-cl-version.h │ ├── gegl-cl.c │ ├── gegl-cl.h │ ├── meson.build │ ├── opencl.h │ └── opencl.hpp ├── operation │ ├── gegl-extension-handler.c │ ├── gegl-extension-handler.h │ ├── gegl-operation-area-filter.c │ ├── gegl-operation-area-filter.h │ ├── gegl-operation-composer.c │ ├── gegl-operation-composer.h │ ├── gegl-operation-composer3.c │ ├── gegl-operation-composer3.h │ ├── gegl-operation-context-private.h │ ├── gegl-operation-context.c │ ├── gegl-operation-context.h │ ├── gegl-operation-filter.c │ ├── gegl-operation-filter.h │ ├── gegl-operation-handlers-private.h │ ├── gegl-operation-handlers.c │ ├── gegl-operation-handlers.h │ ├── gegl-operation-meta-json.c │ ├── gegl-operation-meta-json.h │ ├── gegl-operation-meta.c │ ├── gegl-operation-meta.h │ ├── gegl-operation-point-composer.c │ ├── gegl-operation-point-composer.h │ ├── gegl-operation-point-composer3.c │ ├── gegl-operation-point-composer3.h │ ├── gegl-operation-point-filter.c │ ├── gegl-operation-point-filter.h │ ├── gegl-operation-point-render.c │ ├── gegl-operation-point-render.h │ ├── gegl-operation-private.h │ ├── gegl-operation-property-keys.c │ ├── gegl-operation-property-keys.h │ ├── gegl-operation-sink.c │ ├── gegl-operation-sink.h │ ├── gegl-operation-source.c │ ├── gegl-operation-source.h │ ├── gegl-operation-temporal.c │ ├── gegl-operation-temporal.h │ ├── gegl-operation.c │ ├── gegl-operation.h │ ├── gegl-operations.c │ ├── gegl-operations.h │ └── meson.build ├── process │ ├── gegl-eval-manager.c │ ├── gegl-eval-manager.h │ ├── gegl-graph-debug.h │ ├── gegl-graph-traversal-debug.c │ ├── gegl-graph-traversal-private.h │ ├── gegl-graph-traversal.c │ ├── gegl-graph-traversal.h │ ├── gegl-processor-private.h │ ├── gegl-processor.c │ ├── gegl-processor.h │ └── meson.build └── property-types │ ├── gegl-audio-fragment.c │ ├── gegl-audio-fragment.h │ ├── gegl-color.c │ ├── gegl-color.h │ ├── gegl-curve.c │ ├── gegl-curve.h │ ├── gegl-paramspecs.c │ ├── gegl-paramspecs.h │ ├── gegl-path.c │ ├── gegl-path.h │ └── meson.build ├── libs ├── ctx │ ├── ctx.h │ ├── gegl_ctx.c │ └── meson.build ├── npd │ ├── deformation.c │ ├── deformation.h │ ├── graphics.c │ ├── graphics.h │ ├── lattice_cut.c │ ├── lattice_cut.h │ ├── meson.build │ ├── npd.h │ ├── npd_common.c │ ├── npd_common.h │ ├── npd_debug.c │ ├── npd_debug.h │ ├── npd_gegl.c │ ├── npd_gegl.h │ ├── npd_math.c │ └── npd_math.h └── rgbe │ ├── meson.build │ ├── rgbe.c │ └── rgbe.h ├── meson.build ├── meson_install_win_debug.py ├── meson_options.txt ├── opencl ├── alien-map.cl ├── bilateral-filter-fast.cl ├── bilateral-filter.cl ├── box-blur.cl ├── box-max.cl ├── box-min.cl ├── boxblur-1d.cl ├── brightness-contrast.cl ├── c2g.cl ├── checkerboard.cl ├── cltostring.py ├── color-exchange.cl ├── color-temperature.cl ├── color-to-alpha.cl ├── colors-8bit-lut.cl ├── colors.cl ├── contrast-curve.cl ├── diffraction-patterns.cl ├── edge-laplace.cl ├── edge-sobel.cl ├── gaussian-blur-selective.cl ├── gblur-1d.cl ├── hue-chroma.cl ├── invert-linear.cl ├── levels.cl ├── meson.build ├── mono-mixer.cl ├── motion-blur-circular.cl ├── motion-blur-linear.cl ├── noise-cell.cl ├── noise-hsv.cl ├── noise-hurl.cl ├── noise-reduction.cl ├── noise-simplex.cl ├── oilify.cl ├── opacity.cl ├── pixelize.cl ├── posterize.cl ├── random.cl ├── red-eye-removal.cl ├── shadows-highlights-correction.cl ├── snn-mean.cl ├── stretch-contrast.cl ├── svg-src-over.cl ├── texturize-canvas.cl ├── threshold.cl ├── value-invert.cl ├── video-degradation.cl ├── vignette.cl └── weighted-blend.cl ├── operations ├── common-cxx │ ├── dct-basis.inc │ ├── denoise-dct.cc │ ├── distance-transform.cc │ ├── focus-blur.c │ ├── lens-blur.cc │ ├── meson.build │ ├── piecewise-blend.cc │ ├── variable-blur.c │ └── warp.cc ├── common-gpl3+ │ ├── antialias.c │ ├── apply-lens.c │ ├── bayer-matrix.c │ ├── bump-map.c │ ├── cartoon.c │ ├── channel-mixer.c │ ├── color-exchange.c │ ├── color-to-alpha.c │ ├── cubism.c │ ├── deinterlace.c │ ├── diffraction-patterns.c │ ├── displace.c │ ├── edge-laplace.c │ ├── edge.c │ ├── emboss.c │ ├── engrave.c │ ├── fractal-explorer.c │ ├── fractal-trace.c │ ├── gaussian-blur-selective.c │ ├── illusion.c │ ├── lens-distortion.c │ ├── lens-flare.c │ ├── linear-sinusoid.c │ ├── maze.c │ ├── meson.build │ ├── mosaic.c │ ├── motion-blur-circular.c │ ├── motion-blur-zoom.c │ ├── noise-slur.c │ ├── noise-solid.c │ ├── oilify.c │ ├── photocopy.c │ ├── plasma.c │ ├── polar-coordinates.c │ ├── red-eye-removal.c │ ├── ripple.c │ ├── shadows-highlights-correction.c │ ├── shadows-highlights.c │ ├── shift.c │ ├── sinus.c │ ├── softglow.c │ ├── spiral.c │ ├── supernova.c │ ├── texturize-canvas.c │ ├── tile-glass.c │ ├── tile-paper.c │ ├── value-propagate.c │ ├── video-degradation.c │ ├── waves.c │ ├── whirl-pinch.c │ └── wind.c ├── common │ ├── absolute.c │ ├── alien-map.c │ ├── alpha-clip.c │ ├── bevel.c │ ├── bilateral-filter.c │ ├── bloom.c │ ├── blue-noise-data.inc │ ├── box-blur.c │ ├── brightness-contrast.c │ ├── buffer-sink.c │ ├── buffer-source.c │ ├── c2g.c │ ├── checkerboard.c │ ├── color-assimilation-grid.c │ ├── color-enhance.c │ ├── color-overlay.c │ ├── color-rotate.c │ ├── color-temperature.c │ ├── color-warp.c │ ├── color.c │ ├── component-extract.c │ ├── contrast-curve.c │ ├── convolution-matrix.c │ ├── copy-buffer.c │ ├── difference-of-gaussians.c │ ├── display.c │ ├── dither.c │ ├── domain-transform.c │ ├── dropshadow.c │ ├── edge-neon.c │ ├── edge-sobel.c │ ├── envelopes.h │ ├── exp-combine.c │ ├── exposure.c │ ├── fattal02.c │ ├── gaussian-blur.c │ ├── gblur-1d.c │ ├── gegl-buffer-load-op.c │ ├── gegl-buffer-save-op.c │ ├── gegl.c │ ├── grey.c │ ├── grid.c │ ├── high-pass.c │ ├── hue-chroma.c │ ├── icc-load.c │ ├── icc-save.c │ ├── image-compare.c │ ├── image-gradient.c │ ├── inner-glow.c │ ├── introspect.c │ ├── invert-common.h │ ├── invert-gamma.c │ ├── invert-linear.c │ ├── layer.c │ ├── levels.c │ ├── linear-gradient.c │ ├── little-planet.c │ ├── local-threshold.c │ ├── long-shadow.c │ ├── magick-load.c │ ├── mantiuk06.c │ ├── map-absolute.c │ ├── map-common.h │ ├── map-relative.c │ ├── matting-global.c │ ├── mblur.c │ ├── mean-curvature-blur.c │ ├── median-blur.c │ ├── meson.build │ ├── mirrors.c │ ├── mix.c │ ├── mono-mixer.c │ ├── motion-blur-linear.c │ ├── negative-darkroom.c │ ├── negative-darkroom │ │ ├── negative-darkroom-curve-enum.c │ │ └── negative-darkroom-curve-enum.h │ ├── newsprint.c │ ├── noise-cell.c │ ├── noise-cie-lch.c │ ├── noise-hsv.c │ ├── noise-hurl.c │ ├── noise-perlin.c │ ├── noise-pick.c │ ├── noise-reduction.c │ ├── noise-rgb.c │ ├── noise-simplex.c │ ├── noise-spread.c │ ├── normal-map.c │ ├── opacity.c │ ├── open-buffer.c │ ├── over.c │ ├── pack.c │ ├── panorama-projection.c │ ├── perlin │ │ ├── perlin.c │ │ └── perlin.h │ ├── pixelize.c │ ├── posterize.c │ ├── radial-gradient.c │ ├── rectangle.c │ ├── recursive-transform.c │ ├── reinhard05.c │ ├── remap.c │ ├── rgb-clip.c │ ├── saturation.c │ ├── save.c │ ├── sepia.c │ ├── slic.c │ ├── snn-mean.c │ ├── spherize.c │ ├── stress.c │ ├── stretch-contrast-hsv.c │ ├── stretch-contrast.c │ ├── styles.c │ ├── svg-huerotate.c │ ├── svg-luminancetoalpha.c │ ├── svg-matrix.c │ ├── svg-saturate.c │ ├── threshold.c │ ├── tile-seamless.c │ ├── tile.c │ ├── unpremultiply.c │ ├── unsharp-mask.c │ ├── value-invert.c │ ├── vignette.c │ ├── waterpixels.c │ ├── watershed-transform.c │ ├── wavelet-blur-1d.c │ ├── wavelet-blur.c │ ├── weighted-blend.c │ └── write-buffer.c ├── core │ ├── cache.c │ ├── cast-format.c │ ├── cast-space.c │ ├── clone.c │ ├── convert-format.c │ ├── convert-space.c │ ├── crop.c │ ├── json.c │ ├── load.c │ ├── meson.build │ └── nop.c ├── external │ ├── exr-load.cpp │ ├── exr-save.cc │ ├── ff-load.c │ ├── ff-save.c │ ├── gif-load.c │ ├── jp2-load.c │ ├── jpg-load.c │ ├── jpg-save.c │ ├── lcms-from-profile.c │ ├── matting-levin-cblas.c │ ├── matting-levin-cblas.h │ ├── matting-levin.c │ ├── meson.build │ ├── npd.c │ ├── npy-save.c │ ├── path.c │ ├── pdf-load.c │ ├── pixbuf.c │ ├── png-load.c │ ├── png-save.c │ ├── ppm-load.c │ ├── ppm-save.c │ ├── raw-load.c │ ├── rgbe-load.c │ ├── rgbe-save.c │ ├── save-pixbuf.c │ ├── sdl-display.c │ ├── sdl2-display.c │ ├── svg-load.c │ ├── text.c │ ├── tiff-load.c │ ├── tiff-save.c │ ├── v4l.c │ ├── v4lutils │ │ ├── README │ │ ├── v4lutils.c │ │ └── v4lutils.h │ ├── vector-fill.c │ ├── vector-stroke.c │ ├── webp-load.c │ └── webp-save.c ├── generated │ ├── add.c │ ├── clear.c │ ├── color-burn.c │ ├── color-dodge.c │ ├── darken.c │ ├── difference.c │ ├── divide.c │ ├── dst-atop.c │ ├── dst-in.c │ ├── dst-out.c │ ├── dst-over.c │ ├── dst.c │ ├── exclusion.c │ ├── gamma.c │ ├── hard-light.c │ ├── lighten.c │ ├── math.rb │ ├── meson.build │ ├── multiply.c │ ├── overlay.c │ ├── plus.c │ ├── screen.c │ ├── soft-light.c │ ├── src-atop.c │ ├── src-in.c │ ├── src-out.c │ ├── src.c │ ├── subtract.c │ ├── svg-12-blend.rb │ ├── svg-12-porter-duff.rb │ └── xor.c ├── json │ ├── dropshadow2.fbp │ ├── dropshadow2.json │ ├── grey2.fbp │ ├── grey2.json │ └── meson.build ├── meson.build ├── seamless-clone │ ├── meson.build │ ├── seamless-clone-compose.c │ ├── seamless-clone.c │ └── seamless-clone.h ├── transform │ ├── border-align.c │ ├── meson.build │ ├── module.c │ ├── module.h │ ├── reflect.c │ ├── reset-origin.c │ ├── rotate-on-center.c │ ├── rotate.c │ ├── scale-ratio.c │ ├── scale-size-keepaspect.c │ ├── scale-size.c │ ├── scale.c │ ├── scale.h │ ├── shear.c │ ├── transform-core.c │ ├── transform-core.h │ ├── transform.c │ └── translate.c └── workshop │ ├── aces-rrt.c │ ├── alpha-inpaint.c │ ├── band-tune.c │ ├── bilateral-filter-fast.c │ ├── boxblur-1d.c │ ├── boxblur.c │ ├── connected-components.c │ ├── demosaic-bimedian.c │ ├── demosaic-simple.c │ ├── ditto.c │ ├── external │ ├── ctx-script.c │ ├── gluas.c │ ├── lens-correct.c │ ├── line-profile.c │ ├── meson.build │ ├── paint-select.cc │ ├── spyrograph.c │ ├── v4l2.c │ └── voronoi-diagram.cc │ ├── gcr.c │ ├── generated │ ├── average.c │ ├── blend-reflect.c │ ├── blend.rb │ ├── meson.build │ ├── negation.c │ ├── soft-burn.c │ ├── soft-dodge.c │ └── subtractive.c │ ├── gradient-map.c │ ├── integral-image.c │ ├── meson.build │ ├── rawbayer-load.c │ ├── segment-kmeans.c │ ├── selective-hue-saturation.c │ └── shuffle-search.c ├── perf ├── Makefile-retrospect ├── Makefile-tests ├── create-report.rb ├── joblist ├── makejobs.rb ├── meson.build ├── perf-build.sh ├── test-bcontrast-4x.c ├── test-bcontrast-minichunk.c ├── test-bcontrast.c ├── test-blur.c ├── test-common.h ├── test-compression.c ├── test-gegl-buffer-access.c ├── test-init.c ├── test-rotate.c ├── test-samplers.c ├── test-saturation.c ├── test-scale.c ├── test-translate.c └── test-unsharpmask.c ├── po ├── LINGUAS ├── POTFILES.in ├── POTFILES.skip ├── bg.po ├── bs.po ├── ca.po ├── da.po ├── de.po ├── el.po ├── en_GB.po ├── eo.po ├── es.po ├── eu.po ├── fr.po ├── gl.po ├── hr.po ├── id.po ├── is.po ├── it.po ├── ka.po ├── kab.po ├── ko.po ├── lv.po ├── meson.build ├── mr.po ├── nb.po ├── ne.po ├── nl.po ├── nn.po ├── oc.po ├── pl.po ├── pt.po ├── pt_BR.po ├── ro.po ├── ru.po ├── sk.po ├── sl.po ├── sr.po ├── sr@latin.po ├── sv.po ├── tr.po ├── uk.po └── zh_CN.po ├── seamless-clone ├── gegl-sc.pc.in ├── meson.build ├── sc-common.h ├── sc-context-private.h ├── sc-context.c ├── sc-context.h ├── sc-outline.c ├── sc-outline.h ├── sc-sample.c └── sc-sample.h ├── subprojects ├── babl.wrap ├── glib.wrap ├── json-glib.wrap ├── libjpeg-turbo.wrap ├── libnsgif │ ├── COPYING │ ├── README.md │ ├── gif.c │ ├── lzw.c │ ├── lzw.h │ ├── meson.build │ ├── nsgif.h │ └── update.sh ├── libpng.wrap └── poly2tri-c │ ├── COPYING │ ├── LICENSE-Poly2Tri-C.txt │ ├── LICENSE-Poly2Tri.txt │ ├── README │ ├── meson.build │ └── poly2tri-c │ ├── p2t │ ├── common │ │ ├── cutils.h │ │ ├── meson.build │ │ ├── poly2tri-private.h │ │ ├── shapes.c │ │ ├── shapes.h │ │ ├── utils.c │ │ └── utils.h │ ├── meson.build │ ├── poly2tri.h │ └── sweep │ │ ├── advancing_front.c │ │ ├── advancing_front.h │ │ ├── cdt.c │ │ ├── cdt.h │ │ ├── meson.build │ │ ├── sweep.c │ │ ├── sweep.h │ │ ├── sweep_context.c │ │ └── sweep_context.h │ ├── refine │ ├── bounded-line.c │ ├── bounded-line.h │ ├── cdt-flipfix.c │ ├── cdt-flipfix.h │ ├── cdt.c │ ├── cdt.h │ ├── circle.c │ ├── circle.h │ ├── cluster.c │ ├── cluster.h │ ├── delaunay-terminator.c │ ├── delaunay-terminator.h │ ├── edge.c │ ├── edge.h │ ├── line.c │ ├── line.h │ ├── mesh-action.c │ ├── mesh-action.h │ ├── mesh.c │ ├── mesh.h │ ├── meson.build │ ├── point.c │ ├── point.h │ ├── pslg.c │ ├── pslg.h │ ├── refine.h │ ├── refiner.c │ ├── refiner.h │ ├── rmath.c │ ├── rmath.h │ ├── triangle.c │ ├── triangle.h │ ├── triangulation.h │ ├── utils.c │ ├── utils.h │ ├── vector2.c │ ├── vector2.h │ ├── vedge.c │ ├── vedge.h │ ├── visibility.c │ ├── visibility.h │ ├── vtriangle.c │ └── vtriangle.h │ └── render │ ├── mesh-render.c │ ├── mesh-render.h │ ├── meson.build │ ├── svg-plot.c │ └── svg-plot.h ├── tests ├── buffer │ ├── README │ ├── buffer-test-wrapper.c │ ├── buffer-test.c │ ├── buffer-test.py │ ├── meson.build │ ├── reference │ │ ├── blank.buf │ │ ├── buffer_copy.buf │ │ ├── buffer_copy_abyss.buf │ │ ├── buffer_copy_lower_left.buf │ │ ├── buffer_copy_lower_right.buf │ │ ├── buffer_copy_self.buf │ │ ├── buffer_copy_upper_left.buf │ │ ├── buffer_copy_upper_right.buf │ │ ├── buffer_dup_copy1.buf │ │ ├── buffer_dup_copy2.buf │ │ ├── buffer_dup_delete1.buf │ │ ├── buffer_dup_delete2.buf │ │ ├── buffer_dup_write1.buf │ │ ├── buffer_dup_write2.buf │ │ ├── buffer_dup_write3.buf │ │ ├── buffer_dup_write4.buf │ │ ├── buffer_iterator1.buf │ │ ├── buffer_iterator1sub.buf │ │ ├── buffer_iterator2.buf │ │ ├── buffer_iterator2sub.buf │ │ ├── buffer_iterator3.buf │ │ ├── buffer_iterator3sub.buf │ │ ├── buffer_iterator4.buf │ │ ├── buffer_iterator4sub.buf │ │ ├── buffer_linear_copy.buf │ │ ├── buffer_linear_iter.buf │ │ ├── buffer_linear_iter2.buf │ │ ├── buffer_multcopy.buf │ │ ├── buffer_set_pattern.buf │ │ ├── buffer_shift_diagonal.buf │ │ ├── buffer_shift_horizontal.buf │ │ ├── buffer_shift_vertical.buf │ │ ├── checks.buf │ │ ├── disabled_abyss.buf │ │ ├── dup_linear_from_data.buf │ │ ├── get_abyss_black.buf │ │ ├── get_abyss_clamp.buf │ │ ├── get_abyss_empty_buffer.buf │ │ ├── get_abyss_loop.buf │ │ ├── get_abyss_none.buf │ │ ├── get_abyss_white.buf │ │ ├── get_buffer_scaled.buf │ │ ├── get_buffer_scaled2.buf │ │ ├── get_shifted.buf │ │ ├── gray.buf │ │ ├── grow_extent.buf │ │ ├── linear_from_data.buf │ │ ├── linear_from_data_rows.buf │ │ ├── linear_modify.buf │ │ ├── linear_new.buf │ │ ├── linear_proxy_modify.buf │ │ ├── linear_shift.buf │ │ ├── mipmap_iterator.buf │ │ ├── mipmap_iterator2.buf │ │ ├── mipmap_sampler.buf │ │ ├── mipmap_set.buf │ │ ├── mipmap_set2.buf │ │ ├── rect.buf │ │ ├── sample.buf │ │ ├── save_small_roi.buf │ │ ├── sub_rect_fills_and_gets.buf │ │ ├── sub_sub_fill.buf │ │ ├── sub_sub_fill2.buf │ │ └── vertical_gradient.buf │ └── tests │ │ ├── blank.c │ │ ├── buffer_copy.c │ │ ├── buffer_copy_abyss.c │ │ ├── buffer_copy_lower_left.c │ │ ├── buffer_copy_lower_right.c │ │ ├── buffer_copy_self.c │ │ ├── buffer_copy_upper_left.c │ │ ├── buffer_copy_upper_right.c │ │ ├── buffer_dup_copy1.c │ │ ├── buffer_dup_copy2.c │ │ ├── buffer_dup_delete1.c │ │ ├── buffer_dup_delete2.c │ │ ├── buffer_dup_write1.c │ │ ├── buffer_dup_write2.c │ │ ├── buffer_dup_write3.c │ │ ├── buffer_dup_write4.c │ │ ├── buffer_iterator1.c │ │ ├── buffer_iterator1sub.c │ │ ├── buffer_iterator2.c │ │ ├── buffer_iterator2sub.c │ │ ├── buffer_iterator3.c │ │ ├── buffer_iterator3sub.c │ │ ├── buffer_iterator4.c │ │ ├── buffer_iterator4sub.c │ │ ├── buffer_linear_copy.c │ │ ├── buffer_linear_iter.c │ │ ├── buffer_linear_iter2.c │ │ ├── buffer_multcopy.c │ │ ├── buffer_set_pattern.c │ │ ├── buffer_shift_diagonal.c │ │ ├── buffer_shift_horizontal.c │ │ ├── buffer_shift_vertical.c │ │ ├── checks.c │ │ ├── disabled_abyss.c │ │ ├── dup_linear_from_data.c │ │ ├── get_abyss_black.c │ │ ├── get_abyss_clamp.c │ │ ├── get_abyss_empty_buffer.c │ │ ├── get_abyss_loop.c │ │ ├── get_abyss_none.c │ │ ├── get_abyss_white.c │ │ ├── get_buffer_scaled.c │ │ ├── get_buffer_scaled2.c │ │ ├── get_shifted.c │ │ ├── gray.c │ │ ├── grow_extent.c │ │ ├── linear_from_data.c │ │ ├── linear_from_data_rows.c │ │ ├── linear_modify.c │ │ ├── linear_new.c │ │ ├── linear_proxy_modify.c │ │ ├── linear_shift.c │ │ ├── mipmap_iterator.c │ │ ├── mipmap_iterator2.c │ │ ├── mipmap_sampler.c │ │ ├── mipmap_set.c │ │ ├── mipmap_set2.c │ │ ├── rect.c │ │ ├── sample.c │ │ ├── save_small_roi.c │ │ ├── sub_rect_fills_and_gets.c │ │ ├── sub_sub_fill.c │ │ ├── sub_sub_fill2.c │ │ └── vertical_gradient.c ├── compositions │ ├── affine-with-negative.xml │ ├── alien-map.xml │ ├── apply-lens.xml │ ├── apply-lens3.xml │ ├── bump-map.xml │ ├── checkerboard.xml │ ├── clones.xml │ ├── color-enhance.xml │ ├── color-exchange.xml │ ├── color-reduction.xml │ ├── color-to-alpha.xml │ ├── colors.xml │ ├── composite-transform.xml │ ├── contrast-curve.xml │ ├── convolve1.xml │ ├── convolve2.xml │ ├── data │ │ ├── .gitattributes │ │ ├── boats.png │ │ ├── car-stack-eighth.hdr │ │ ├── car-stack.png │ │ ├── duck-8bit-ascii.pnm │ │ ├── duck-8bit-raw.pnm │ │ ├── duck.png │ │ ├── duck_scribble.png │ │ ├── gegl-16bit-float-4ch-assoc-contiguous.tif │ │ ├── gegl-8bit-4ch-assoc-contiguous.tif │ │ ├── gegl-8bit-4ch-assoc-separated.tif │ │ ├── gegl-8bit-4ch-unassoc-contiguous.tif │ │ ├── gegl.png │ │ ├── grid.png │ │ ├── matting-global.png │ │ ├── matting-global_scribble.png │ │ ├── mid_grey_dot.png │ │ ├── om.jp2 │ │ ├── parliament.hdr │ │ ├── parliament_0.png │ │ ├── parliament_1.png │ │ ├── parliament_2.png │ │ └── red-eye.png │ ├── dropshadow-json.xml │ ├── edge.xml │ ├── exposure.xml │ ├── fattal02.xml │ ├── gamma.xml │ ├── gegl.xml │ ├── grey-json.xml │ ├── hdr-color.xml │ ├── illusion.xml │ ├── image-compare.xml │ ├── jp2-load.xml │ ├── jpg-load-datauri.xml │ ├── lens-flare.xml │ ├── mantiuk06.xml │ ├── matting-global.xml │ ├── matting-levin.xml │ ├── meson.build │ ├── noise-cell.xml │ ├── noise-hurl.xml │ ├── noise-simplex.xml │ ├── noise-solid.xml │ ├── pnm-ascii-load.xml │ ├── pnm-raw-load.xml │ ├── posterize.xml │ ├── rectangles.xml │ ├── red-eye-removal.xml │ ├── reference │ │ ├── affine-with-negative.png │ │ ├── alien-map.png │ │ ├── apply-lens.png │ │ ├── apply-lens3.png │ │ ├── bump-map.png │ │ ├── checkerboard.png │ │ ├── clones.png │ │ ├── color-enhance.png │ │ ├── color-exchange.png │ │ ├── color-reduction.png │ │ ├── color-to-alpha.png │ │ ├── colors.png │ │ ├── composite-transform.png │ │ ├── contrast-curve.png │ │ ├── convolve1.png │ │ ├── convolve2.png │ │ ├── dropshadow-json.png │ │ ├── edge.png │ │ ├── exposure.png │ │ ├── fattal02.png │ │ ├── gamma.png │ │ ├── gegl.png │ │ ├── grey-json.png │ │ ├── hdr-color.little-endian.gegl │ │ ├── illusion.png │ │ ├── image-compare.png │ │ ├── jp2-load.png │ │ ├── jpg-load-datauri.png │ │ ├── lens-flare.png │ │ ├── mantiuk06.png │ │ ├── matting-global.png │ │ ├── matting-levin.png │ │ ├── noise-cell.png │ │ ├── noise-hurl.png │ │ ├── noise-simplex.png │ │ ├── noise-solid.png │ │ ├── pnm-ascii-load.png │ │ ├── pnm-raw-load.png │ │ ├── posterize.png │ │ ├── rectangles.png │ │ ├── red-eye-removal.png │ │ ├── reflect.png │ │ ├── reflect2.png │ │ ├── reinhard05.png │ │ ├── rgb-params.little-endian.gegl │ │ ├── rgbe-load.png │ │ ├── rgbe-save.hdr │ │ ├── rotate-on-center.png │ │ ├── rotate.png │ │ ├── saturation.png │ │ ├── scale-size-keepaspect.png │ │ ├── shift.png │ │ ├── simple-scale.png │ │ ├── sinus.png │ │ ├── stretch-contrast-hsv.png │ │ ├── stretch-contrast.png │ │ ├── supernova.png │ │ ├── tiff-load.png │ │ ├── tile.png │ │ ├── transform.png │ │ └── weighted-blend.png │ ├── reflect.xml │ ├── reflect2.xml │ ├── reinhard05.xml │ ├── rgb-params.xml │ ├── rgbe-load.xml │ ├── rgbe-save.xml │ ├── rotate-on-center.xml │ ├── rotate.xml │ ├── run-compositions.py │ ├── saturation.xml │ ├── scale-size-keepaspect.xml │ ├── shift.xml │ ├── simple-scale.xml │ ├── sinus.xml │ ├── stretch-contrast-hsv.xml │ ├── stretch-contrast.xml │ ├── supernova.xml │ ├── tiff-load.xml │ ├── tile.xml │ ├── transform.xml │ └── weighted-blend.xml ├── ff-load-save │ ├── meson.build │ └── tests_ff_load_save.sh ├── meson.build ├── mipmap │ ├── meson.build │ └── reference │ │ ├── invert-crop.png │ │ ├── invert.png │ │ ├── rotate-crop.png │ │ ├── rotate.png │ │ ├── unsharp-crop.png │ │ └── unsharp.png ├── opencl │ ├── TODO │ ├── bilateral-filter.xml │ ├── box-blur.xml │ ├── brightness-contrast.xml │ ├── color-temperature.xml │ ├── edge-sobel.xml │ ├── focus-blur.xml │ ├── gaussian-blur.xml │ ├── invert-linear.xml │ ├── levels.xml │ ├── meson.build │ ├── mono-mixer.xml │ ├── motion-blur.xml │ ├── noise-reduction.xml │ ├── oilify.xml │ ├── opacity.xml │ ├── opencl_test.sh │ ├── pixelize.xml │ ├── snn-mean.xml │ ├── svg-src-over.xml │ ├── threshold.xml │ ├── value-invert.xml │ └── vignette.xml ├── operations │ └── meson.build ├── python │ ├── meson.build │ ├── test-gegl-buffer.py │ ├── test-gegl-color.py │ ├── test-gegl-format.py │ ├── test-gegl-node.py │ └── test-gegl.py ├── simple │ ├── meson.build │ ├── reference │ │ └── exp-combine.hdr │ ├── test-backend-file.c │ ├── test-buffer-cast.c │ ├── test-buffer-changes.c │ ├── test-buffer-extract.c │ ├── test-buffer-hot-tile.c │ ├── test-buffer-iterator-aliasing.c │ ├── test-buffer-sharing.c │ ├── test-buffer-tile-voiding.c │ ├── test-buffer-unaligned-access.c │ ├── test-change-processor-rect.c │ ├── test-color-op.c │ ├── test-compression.c │ ├── test-convert-format.c │ ├── test-empty-tile.c │ ├── test-exp-combine.py │ ├── test-format-sensing.c │ ├── test-gegl-color.c │ ├── test-gegl-rectangle.c │ ├── test-gegl-tile.c │ ├── test-image-compare.c │ ├── test-license-check.c │ ├── test-misc.c │ ├── test-node-connections.c │ ├── test-node-exponential.c │ ├── test-node-passthrough.c │ ├── test-node-properties.c │ ├── test-object-forked.c │ ├── test-opencl-colors.c │ ├── test-path.c │ ├── test-proxynop-processing.c │ ├── test-scaled-blit.c │ ├── test-serialize.c │ └── test-svg-abyss.c ├── test-runner.py └── xml │ ├── common.c │ ├── data │ ├── hdr-color.xml │ └── rgb-params.xml │ ├── meson.build │ ├── test-load.c │ ├── test-roundtrip.c │ └── test-save.c └── tools ├── argvs_extract.sh ├── detect_opencl.c ├── dist-script.py ├── exp_combine.cpp ├── gegl-imgcmp.c ├── gegl-tester.c ├── gen-loader.py ├── gobj2dot.py ├── gobj2dot.rb ├── introspect.c ├── make-init-types.sh ├── meson.build ├── operation_reference.c ├── operations_html.c ├── run-exe.py └── xml_insert.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # Meson build system 2 | /_build 3 | /compile_commands.json 4 | 5 | # Atom 6 | /.vscode 7 | -------------------------------------------------------------------------------- /.kateconfig: -------------------------------------------------------------------------------- 1 | kate: indent-mode cstyle; 2 | kate: indent-width 2; tab-width 8; 3 | kate: tab-indents off; replace-tabs on; 4 | kate: remove-trailing-spaces modified; 5 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Morgane Glidic 2 | -------------------------------------------------------------------------------- /MAINTAINERS: -------------------------------------------------------------------------------- 1 | Øyvind Kolås 2 | E-mail: pippin@gimp.org 3 | Userid: ok 4 | -------------------------------------------------------------------------------- /bin/argvs.h: -------------------------------------------------------------------------------- 1 | #ifndef __ARGVS__ 2 | #define __ARGVS__ 3 | 4 | /********/ 5 | #define UNUSED __attribute__((__unused__)) 6 | #define COMMAND_ARGS int argc UNUSED, char **argv UNUSED, void *userdata 7 | /*******/ 8 | 9 | void argvs_add (int (*fun)(COMMAND_ARGS), 10 | const char *name, 11 | int required_arguments, 12 | const char *argument_help, 13 | const char *help); 14 | int argvs_eval_argv (char **cargv, int cargc); 15 | int argvs_eval (const char *cmdline); /* this evals one command, 16 | no newlines or semicolons are taken into account. */ 17 | int argvs_source (const char *path); 18 | int argvs_command_exist (const char *command); 19 | void argvs_register (void); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /bin/gegl-path-smooth.h: -------------------------------------------------------------------------------- 1 | #ifndef _GEGL_PATH_SMOOTH__H 2 | #define _GEGL_PATH_SMOOTH__H 3 | 4 | void gegl_path_smooth_init (void); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /bin/gegl-path-spiro.h: -------------------------------------------------------------------------------- 1 | #ifndef _GEGL_PATH_SPIRO__H 2 | #define _GEGL_PATH_SPIRO__H 3 | 4 | void gegl_path_spiro_init (void); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /bin/lua/gegl_box-blur.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | -------------------------------------------------------------------------------- /bin/lua/gegl_c2g.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | -------------------------------------------------------------------------------- /bin/lua/gegl_crop.lua: -------------------------------------------------------------------------------- 1 | gegl_rectangle.lua -------------------------------------------------------------------------------- /bin/lua/gegl_edge-neon.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | cr:arc(centerx, centery, radius * 2, 0, 3.14152 * 2) 18 | contrasty_stroke() 19 | -------------------------------------------------------------------------------- /bin/lua/gegl_fill-path.lua: -------------------------------------------------------------------------------- 1 | gegl_vector-stroke.lua -------------------------------------------------------------------------------- /bin/lua/gegl_gaussian-blur.lua: -------------------------------------------------------------------------------- 1 | local std_dev = active:get_property("std-dev-x").value 2 | 3 | touch_point(centerx - dim - std_dev, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("std-dev-x").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("std-dev-y", GObject.Value(GObject.Type.DOUBLE, x)) 10 | active:set_property("std-dev-x", GObject.Value(GObject.Type.DOUBLE, x)) 11 | ev:stop_propagate(); 12 | end 13 | end) 14 | cr:new_path() 15 | 16 | cr:arc(centerx, centery, std_dev, 0, 3.14152 * 2) 17 | contrasty_stroke() 18 | cr:arc(centerx, centery, std_dev * 2, 0, 3.14152 * 2) 19 | contrasty_stroke() 20 | -------------------------------------------------------------------------------- /bin/lua/gegl_median-blur.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | -------------------------------------------------------------------------------- /bin/lua/gegl_radial-gradient.lua: -------------------------------------------------------------------------------- 1 | gegl_linear-gradient.lua -------------------------------------------------------------------------------- /bin/lua/gegl_snn-mean.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | cr:arc(centerx, centery, radius * 2, 0, 3.14152 * 2) 18 | contrasty_stroke() 19 | -------------------------------------------------------------------------------- /bin/lua/gegl_stress.lua: -------------------------------------------------------------------------------- 1 | local radius = active:get_property("radius").value 2 | 3 | touch_point(centerx - dim - radius, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("radius").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("radius", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, radius, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | -------------------------------------------------------------------------------- /bin/lua/gegl_translate.lua: -------------------------------------------------------------------------------- 1 | local x = active:get_property("x").value 2 | local y = active:get_property("y").value 3 | 4 | touch_point(x,y) 5 | mrg:listen(Mrg.DRAG, function(ev) 6 | if ev.type == Mrg.DRAG_MOTION then 7 | local x = active:get_property("x").value 8 | local y = active:get_property("y").value 9 | x = x + ev.delta_x 10 | y = y + ev.delta_y 11 | active:set_property("y", GObject.Value(GObject.Type.DOUBLE, y)) 12 | active:set_property("x", GObject.Value(GObject.Type.DOUBLE, x)) 13 | ev:stop_propagate(); 14 | end 15 | end) 16 | cr:new_path() 17 | -------------------------------------------------------------------------------- /bin/lua/gegl_unsharp-mask.lua: -------------------------------------------------------------------------------- 1 | local std_dev = active:get_property("std-dev").value 2 | 3 | touch_point(centerx - dim - std_dev, centery) 4 | mrg:listen(Mrg.DRAG, function(ev) 5 | if ev.type == Mrg.DRAG_MOTION then 6 | local x = active:get_property("std-dev").value 7 | x = x - ev.delta_x 8 | if x < 0 then x = 0 end 9 | active:set_property("std-dev", GObject.Value(GObject.Type.DOUBLE, x)) 10 | ev:stop_propagate(); 11 | end 12 | end) 13 | cr:new_path() 14 | 15 | cr:arc(centerx, centery, std_dev, 0, 3.14152 * 2) 16 | contrasty_stroke() 17 | cr:arc(centerx, centery, std_dev * 2, 0, 3.14152 * 2) 18 | contrasty_stroke() 19 | -------------------------------------------------------------------------------- /bin/meson.build: -------------------------------------------------------------------------------- 1 | 2 | subdir('lua', if_found: lua) 3 | 4 | gegl_sources = files( 5 | 'gegl-options.c', 6 | 'gegl-path-smooth.c', 7 | 'gegl.c', 8 | ) 9 | 10 | gegl_deps = [ 11 | babl, 12 | glib, 13 | gobject, 14 | math, 15 | ] 16 | 17 | if libpng.found() 18 | gegl_deps += libpng 19 | endif 20 | 21 | if mrg.found() and gexiv2.found() and lua.found() 22 | gegl_sources += files( 23 | 'argvs.c', 24 | 'mrg-gegl.c', 25 | 'ui-collection.c', 26 | 'ui-core.c', 27 | 'ui-viewer.c', 28 | ) 29 | 30 | gegl_sources += custom_target('argvs-commands.inc', 31 | input : gegl_sources, 32 | output: 'argvs-commands.inc', 33 | command: [argvs_extract, '@INPUT@'], 34 | capture: true, 35 | ) 36 | 37 | gegl_deps += [mrg, gexiv2, lua, gio] 38 | endif 39 | 40 | if libspiro.found() 41 | gegl_sources += files('gegl-path-spiro.c') 42 | gegl_deps += libspiro 43 | endif 44 | 45 | gegl_bin = executable('gegl', 46 | gegl_sources, 47 | include_directories: [rootInclude, geglInclude], 48 | dependencies: gegl_deps, 49 | export_dynamic: true, 50 | link_with: gegl_lib, 51 | install: true, 52 | ) 53 | -------------------------------------------------------------------------------- /bin/mrg-gegl.h: -------------------------------------------------------------------------------- 1 | #ifndef MRG_GEGL_H 2 | #define MRG_GEGL_H 3 | 4 | #include 5 | #include 6 | 7 | void mrg_gegl_buffer_blit (Mrg *mrg, 8 | float x0, float y0, 9 | float width, float height, 10 | GeglBuffer *buffer, 11 | float u, float v, 12 | float scale, 13 | float preview_multiplier, 14 | int nearest_neighbor, 15 | int color_manage); 16 | 17 | 18 | void mrg_gegl_blit (Mrg *mrg, 19 | float x0, float y0, 20 | float width, float height, 21 | GeglNode *node, 22 | float u, float v, 23 | float scale, 24 | float preview_multiplier, 25 | int nearest_neighbor, 26 | int color_manage); 27 | 28 | 29 | void mrg_gegl_dirty (Mrg *mrg); 30 | int mrg_gegl_got_nearest (void); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /docs/commandline.adoc: -------------------------------------------------------------------------------- 1 | gegl command-line 2 | ----------------- 3 | 4 | In addition to installing a library, GEGL also installs gegl - a 5 | binary/program that permits doing image processing from the command-line 6 | as well as an aid during development of GEGL operations. GEGL behaviour 7 | can be modified at runtime by setting appropriate 8 | link:environment.html[environment variables]. 9 | 10 | Some examples:: 11 | Render a composition to a PNG file, the composition can be in GEGLs XML 12 | format or the one-liner friendly terser link:gegl-chain.html[gegl-chain] 13 | format. 14 | 15 | $ gegl composition.xml -o composition.png 16 | 17 | gegl usage 18 | ~~~~~~~~~~ 19 | 20 | The following is the usage information of the gegl binary, this 21 | documentation might not be complete. 22 | 23 | ..... 24 | include::{build_root}/docs/gegl-usage.txt[] 25 | ..... 26 | -------------------------------------------------------------------------------- /docs/copyright.adoc: -------------------------------------------------------------------------------- 1 | Copyright 2 | --------- 3 | 4 | GEGL is free software; you can redistribute it and/or modify it under 5 | the terms of the 6 | link:https://www.gnu.org/licenses/lgpl-3.0.html[GNU Lesser General 7 | Public License] and link:https://www.gnu.org/licenses/gpl-3.0.html[GNU 8 | General Public License] as published by the Free Software Foundation; 9 | either version 3 of the Licenses, or (at your option) any later version. 10 | The library itself is licensed under the LGPL while the sample 11 | command-line applications and GUI binary gegl is licensed under the GPL. 12 | GEGL depends on and ships with the 13 | link:http://code.google.com/p/poly2tri-c[Poly2Tri-C] library, which is 14 | also free software; you can redistribute it and/or modify it under the 15 | terms of the 16 | link:https://opensource.org/licenses/BSD-3-Clause[New BSD License]. 17 | 18 | Contributors 19 | ~~~~~~~~~~~~ 20 | Many people have worked on GEGL 21 | link:https://gitlab.gnome.org/GNOME/gegl/-/graphs/master[over time]. The 22 | following is an incomplete list of contributors: 23 | 24 | include::{source_root}/AUTHORS[] 25 | -------------------------------------------------------------------------------- /docs/hello-world.adoc: -------------------------------------------------------------------------------- 1 | Hello world 2 | ----------- 3 | The following is a small sample GEGL application that animates a zoom on 4 | a mandelbrot fractal. compile it with: 5 | 6 | $ gcc hello-world.c `pkg-config --libs --cflags gegl` -o hello-world 7 | 8 | This example and others can be found in the 9 | link:http://git.gnome.org/browse/gegl/tree/examples/[examples 10 | subdirectory] of the GEGL source tree. 11 | 12 | // Use source highlighting if available 13 | ifeval::["{highlight}" == "true"] 14 | .hello-world.c 15 | [source, txt] 16 | ----- 17 | include::{source_root}/examples/hello-world.c[] 18 | ----- 19 | endif::[] 20 | 21 | // Otherwise use a literal block 22 | ifeval::["{highlight}" != "true"] 23 | .hello-world.c 24 | ..... 25 | include::{source_root}/examples/hello-world.c[] 26 | ..... 27 | endif::[] 28 | -------------------------------------------------------------------------------- /docs/images/GEGL-250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/GEGL-250.png -------------------------------------------------------------------------------- /docs/images/GEGL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/GEGL.png -------------------------------------------------------------------------------- /docs/images/gaussian-blur-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/gaussian-blur-graph.png -------------------------------------------------------------------------------- /docs/images/gegl.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/gegl.ico -------------------------------------------------------------------------------- /docs/images/standard-aux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/standard-aux.png -------------------------------------------------------------------------------- /docs/images/standard-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/standard-input.png -------------------------------------------------------------------------------- /docs/images/standard-panorama.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/docs/images/standard-panorama.png -------------------------------------------------------------------------------- /docs/reference/urlmap.js: -------------------------------------------------------------------------------- 1 | // A map between namespaces and base URLs for their online gi-docgen documentation 2 | baseURLs = [ 3 | [ 'Babl', 'https://developer.gimp.org/api/babl/' ], 4 | [ 'GLib', 'https://docs.gtk.org/glib/' ], 5 | [ 'GObject', 'https://docs.gtk.org/gobject/' ], 6 | [ 'Gio', 'https://docs.gtk.org/gio/' ], 7 | ] 8 | -------------------------------------------------------------------------------- /docs/release-notes.adoc: -------------------------------------------------------------------------------- 1 | 2 | include::NEWS.adoc[] 3 | -------------------------------------------------------------------------------- /docs/website/images/meson.build: -------------------------------------------------------------------------------- 1 | 2 | # image files 3 | foreach _file : images 4 | configure_file( 5 | input: _file, 6 | output: '@PLAINNAME@', 7 | copy: true, 8 | ) 9 | endforeach 10 | 11 | # Inheritance diagram 12 | if dot.found() 13 | custom_target( 14 | 'inheritance_png', 15 | input: inheritance_txt, 16 | output: 'inheritance.png', 17 | command: [dot, '-Tpng', '-o@OUTPUT@', '@INPUT@'], 18 | build_by_default: true, 19 | ) 20 | endif 21 | -------------------------------------------------------------------------------- /docs/website/operations/meson.build: -------------------------------------------------------------------------------- 1 | 2 | if not can_run_host_binaries 3 | warning('Cannot create operation gallery in this environment') 4 | subdir_done() 5 | endif 6 | 7 | subdir('images') 8 | 9 | # Generate operation html files. 10 | doc_ops_html_cmd = [ 11 | find_program(project_source_root / 'tools' / 'run-exe.py'), 12 | '--output-dir', '@OUTDIR@', 13 | operations_html, 14 | ] 15 | 16 | doc_operations_html = custom_target('doc_operations_html', 17 | env: doc_env, 18 | output: 'index.html', 19 | command: [doc_ops_html_cmd], 20 | depends: doc_operations_img, 21 | build_by_default: true, 22 | ) 23 | -------------------------------------------------------------------------------- /docs/website/website-content.adoc: -------------------------------------------------------------------------------- 1 | {name} 2 | ====== 3 | 4 | [[top]] 5 | image::images/GEGL-250.png[link="index.html"] 6 | 7 | 8 | include::{build_root}/{content}[] 9 | 10 | 11 | {empty} + 12 | xref:top[top] 13 | [[end]] 14 | -------------------------------------------------------------------------------- /docs/website/website-listing.adoc: -------------------------------------------------------------------------------- 1 | {name} 2 | ====== 3 | 4 | [[top]] 5 | image::images/GEGL-250.png[link="index.html"] 6 | 7 | 8 | link:{parent_link}[{parent}] 9 | ---------------------------- 10 | 11 | // Use source highlighting if available 12 | ifeval::["{highlight}" == "true"] 13 | [source, c] 14 | .{name} 15 | ----- 16 | include::{content}[] 17 | ----- 18 | endif::[] 19 | 20 | // Otherwise use a literal block 21 | ifeval::["{highlight}" != "true"] 22 | .{name} 23 | ..... 24 | include::{content}[][] 25 | ..... 26 | endif::[] 27 | 28 | 29 | 30 | {empty} + 31 | xref:top[top] 32 | [[end]] 33 | -------------------------------------------------------------------------------- /examples/2geglbuffer.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | gint 6 | main (gint argc, 7 | gchar **argv) 8 | { 9 | GeglBuffer *buffer; 10 | GeglNode *gegl, *load_file, *save_file; 11 | 12 | gegl_init (&argc, &argv); 13 | 14 | 15 | if (argv[1]==NULL || 16 | argv[2]==NULL) 17 | { 18 | g_print ("\nusage: %s in.png out.gegl\n\nCreates a GeglBuffer from an image file.\n\n", argv[0]); 19 | exit (-1); 20 | } 21 | 22 | gegl = gegl_node_new (); 23 | load_file = gegl_node_new_child (gegl, 24 | "operation", "gegl:load", 25 | "path", argv[1], 26 | NULL); 27 | save_file = gegl_node_new_child (gegl, 28 | "operation", "gegl:buffer-sink", 29 | "buffer", &buffer, 30 | NULL); 31 | 32 | gegl_node_link_many (load_file, save_file, NULL); 33 | gegl_node_process (save_file); 34 | 35 | 36 | gegl_buffer_save (buffer, argv[2], NULL); 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /examples/data/surfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/examples/data/surfer.png -------------------------------------------------------------------------------- /gegl/Gegl.metadata.in: -------------------------------------------------------------------------------- 1 | ParamSpecFormat skip 2 | ParamFormat skip 3 | param_spec_format skip 4 | init.argv unowned 5 | 6 | render_op skip=false 7 | apply_op skip=false 8 | filter_op skip=false 9 | 10 | Node 11 | .new_child skip=false 12 | .link_many skip=false 13 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-buffer-iterator-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL. 2 | * 3 | * This library is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * This library is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with this library; if not, see . 15 | * 16 | * Copyright 2013 Michael Henning 17 | */ 18 | 19 | #ifndef __GEGL_BUFFER_ITERATOR_PRIVATE_H__ 20 | #define __GEGL_BUFFER_ITERATOR_PRIVATE_H__ 21 | 22 | G_STATIC_ASSERT (GEGL_BUFFER_READWRITE == 0x3); 23 | 24 | #define GEGL_ITERATOR_INCOMPATIBLE (1 << 2) 25 | #define GEGL_ITERATOR_NO_NOTIFY (1 << 3) 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-buffer-swap-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | */ 16 | 17 | #ifndef __GEGL_BUFFER_SWAP_PRIVATE_H__ 18 | #define __GEGL_BUFFER_SWAP_PRIVATE_H__ 19 | 20 | 21 | #include 22 | #include 23 | 24 | G_BEGIN_DECLS 25 | 26 | void gegl_buffer_swap_init (void); 27 | void gegl_buffer_swap_cleanup (void); 28 | 29 | G_END_DECLS 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-compression-nop.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | */ 16 | 17 | #ifndef __GEGL_COMPRESSION_NOP_H__ 18 | #define __GEGL_COMPRESSION_NOP_H__ 19 | 20 | 21 | #include 22 | #include 23 | 24 | G_BEGIN_DECLS 25 | 26 | void gegl_compression_nop_init (void); 27 | 28 | G_END_DECLS 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-compression-rle.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | */ 16 | 17 | #ifndef __GEGL_COMPRESSION_RLE_H__ 18 | #define __GEGL_COMPRESSION_RLE_H__ 19 | 20 | 21 | #include 22 | #include 23 | 24 | G_BEGIN_DECLS 25 | 26 | void gegl_compression_rle_init (void); 27 | 28 | G_END_DECLS 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-compression-zlib.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | */ 16 | 17 | #ifndef __GEGL_COMPRESSION_ZLIB_H__ 18 | #define __GEGL_COMPRESSION_ZLIB_H__ 19 | 20 | 21 | #include 22 | #include 23 | 24 | G_BEGIN_DECLS 25 | 26 | void gegl_compression_zlib_init (void); 27 | 28 | G_END_DECLS 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-memory-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL. 2 | * 3 | * This library is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * This library is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with this library; if not, see . 15 | */ 16 | 17 | #ifndef __GEGL_MEMORY_PRIVATE_H__ 18 | #define __GEGL_MEMORY_PRIVATE_H__ 19 | 20 | 21 | #define GEGL_ALIGNMENT 16 22 | #define GEGL_ALIGN(n) \ 23 | (((n) + (GEGL_ALIGNMENT - 1)) / \ 24 | GEGL_ALIGNMENT * \ 25 | GEGL_ALIGNMENT) 26 | 27 | 28 | #endif /* __GEGL_MEMORY_PRIVATE_H__ */ 29 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-scratch-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | * 16 | * Copyright 2019 Ell 17 | */ 18 | 19 | #ifndef __GEGL_SCRATCH_PRIVATE_H__ 20 | #define __GEGL_SCRATCH_PRIVATE_H__ 21 | 22 | 23 | guint64 gegl_scratch_get_total (void); 24 | 25 | 26 | #endif /* __GEGL_SCRATCH_PRIVATE_H__ */ 27 | -------------------------------------------------------------------------------- /gegl/buffer/gegl-variants.inc: -------------------------------------------------------------------------------- 1 | 2 | #if ARCH_X86_64 3 | GEGL_VARIANTS(x86_64_v2) 4 | GEGL_VARIANTS(x86_64_v3) 5 | #endif 6 | #if ARCH_ARM 7 | GEGL_VARIANTS(arm_neon) 8 | #endif 9 | 10 | -------------------------------------------------------------------------------- /gegl/gegl-module.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | * 16 | * Copyright 2006 Øyvind Kolås 17 | */ 18 | 19 | #ifndef __GEGL_MODULE_META_H__ 20 | #define __GEGL_MODULE_META_H__ 21 | 22 | #include 23 | 24 | /*#include */ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | #endif /* __GEGL_H__ */ 31 | -------------------------------------------------------------------------------- /gegl/graph/meson.build: -------------------------------------------------------------------------------- 1 | gegl_sources += files( 2 | 'gegl-cache.c', 3 | 'gegl-callback-visitor.c', 4 | 'gegl-connection.c', 5 | 'gegl-node-output-visitable.c', 6 | 'gegl-node.c', 7 | 'gegl-pad.c', 8 | 'gegl-region-generic.c', 9 | 'gegl-visitable.c', 10 | 'gegl-visitor.c', 11 | ) 12 | 13 | gegl_introspectable_headers += files( 14 | 'gegl-node.h', 15 | ) 16 | -------------------------------------------------------------------------------- /gegl/module/meson.build: -------------------------------------------------------------------------------- 1 | gegl_sources += files( 2 | 'gegldatafiles.c', 3 | 'geglmodule.c', 4 | 'geglmoduledb.c', 5 | ) 6 | -------------------------------------------------------------------------------- /gegl/opencl/gegl-cl-introspection-support.h: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * gegl_cl_init: 4 | * @error: Any error that occurred 5 | * 6 | * Initialize and enable OpenCL, calling this function again 7 | * will re-enable OpenCL if it has been disabled. 8 | * 9 | * Return value: True if OpenCL was initialized 10 | */ 11 | gboolean gegl_cl_init (GError **error); 12 | 13 | /** 14 | * gegl_cl_is_accelerated: 15 | * 16 | * Check if OpenCL is enabled. 17 | * 18 | * Return value: True if OpenCL is initialized and enabled 19 | */ 20 | gboolean gegl_cl_is_accelerated (void); 21 | 22 | /** 23 | * gegl_cl_disable: 24 | * 25 | * Disable OpenCL 26 | */ 27 | void gegl_cl_disable (void); -------------------------------------------------------------------------------- /gegl/opencl/gegl-cl-version.h: -------------------------------------------------------------------------------- 1 | #define CL_TARGET_OPENCL_VERSION 300 -------------------------------------------------------------------------------- /gegl/opencl/gegl-cl.c: -------------------------------------------------------------------------------- 1 | #include "gegl-cl.h" 2 | 3 | cl_int 4 | gegl_cl_set_kernel_args (cl_kernel kernel, ...) 5 | { 6 | cl_int error = 0; 7 | int i = 0; 8 | va_list var_args; 9 | 10 | va_start (var_args, kernel); 11 | while (1) 12 | { 13 | size_t size; 14 | void *value; 15 | size = va_arg (var_args, size_t); 16 | if (!size) 17 | break; 18 | value = va_arg (var_args, void *); 19 | 20 | error = gegl_clSetKernelArg (kernel, i++, size, value); 21 | if (error) 22 | break; 23 | } 24 | va_end (var_args); 25 | 26 | return error; 27 | } -------------------------------------------------------------------------------- /gegl/opencl/meson.build: -------------------------------------------------------------------------------- 1 | gegl_sources += files( 2 | 'gegl-buffer-cl-cache.c', 3 | 'gegl-buffer-cl-iterator.c', 4 | 'gegl-cl-color.c', 5 | 'gegl-cl-init.c', 6 | 'gegl-cl-random.c', 7 | 'gegl-cl.c', 8 | ) 9 | 10 | gegl_opencl_headers = files( 11 | 'cl_d3d10.h', 12 | 'cl_d3d11.h', 13 | 'cl_dx9_media_sharing.h', 14 | 'cl_egl.h', 15 | 'cl_ext.h', 16 | 'cl_gl.h', 17 | 'cl_half.h', 18 | 'cl_icd.h', 19 | 'cl_layer.h', 20 | 'cl_platform.h', 21 | 'cl_va_api_media_sharing_intel.h', 22 | 'cl_version.h', 23 | 'cl.h', 24 | 'gegl-cl-color.h', 25 | 'gegl-cl-init.h', 26 | 'gegl-cl-random.h', 27 | 'gegl-cl-types.h', 28 | 'gegl-cl-version.h', 29 | 'gegl-cl.h', 30 | 'opencl.h', 31 | 'opencl.hpp', 32 | ) 33 | 34 | install_headers(gegl_opencl_headers, 35 | subdir: api_name / 'opencl' 36 | ) 37 | -------------------------------------------------------------------------------- /gegl/opencl/opencl.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2008-2021 The Khronos Group Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | #ifndef __OPENCL_H 18 | #define __OPENCL_H 19 | 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | 24 | #include "cl.h" 25 | #include "cl_gl.h" 26 | #include "cl_ext.h" 27 | 28 | #ifdef __cplusplus 29 | } 30 | #endif 31 | 32 | #endif /* __OPENCL_H */ 33 | -------------------------------------------------------------------------------- /gegl/operation/gegl-operation-handlers-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | * 16 | * Copyright 2006 Øyvind Kolås 17 | */ 18 | 19 | #ifndef __GEGL_EXTENSION_HANDLER_PRIVATE_H__ 20 | #define __GEGL_EXTENSION_HANDLER_PRIVATE_H__ 21 | 22 | void gegl_operation_handlers_cleanup (void); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /gegl/operation/gegl-operation-private.h: -------------------------------------------------------------------------------- 1 | /* This file is part of GEGL 2 | * 3 | * GEGL is free software; you can redistribute it and/or 4 | * modify it under the terms of the GNU Lesser General Public 5 | * License as published by the Free Software Foundation; either 6 | * version 3 of the License, or (at your option) any later version. 7 | * 8 | * GEGL is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | * Lesser General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public 14 | * License along with GEGL; if not, see . 15 | * 16 | * Copyright 2019 Ell 17 | */ 18 | 19 | #ifndef __GEGL_OPERATION_PRIVATE_H__ 20 | #define __GEGL_OPERATION_PRIVATE_H__ 21 | 22 | G_BEGIN_DECLS 23 | 24 | 25 | gboolean gegl_operation_use_cache (GeglOperation *operation); 26 | 27 | 28 | G_END_DECLS 29 | 30 | #endif /* __GEGL_OPERATION_PRIVATE_H__ */ 31 | -------------------------------------------------------------------------------- /gegl/process/meson.build: -------------------------------------------------------------------------------- 1 | gegl_sources += files( 2 | 'gegl-eval-manager.c', 3 | 'gegl-graph-traversal-debug.c', 4 | 'gegl-graph-traversal.c', 5 | 'gegl-processor.c', 6 | ) 7 | 8 | gegl_introspectable_headers += files( 9 | 'gegl-graph-debug.h', 10 | 'gegl-processor.h', 11 | ) 12 | -------------------------------------------------------------------------------- /gegl/property-types/meson.build: -------------------------------------------------------------------------------- 1 | gegl_sources += files( 2 | 'gegl-audio-fragment.c', 3 | 'gegl-color.c', 4 | 'gegl-curve.c', 5 | 'gegl-paramspecs.c', 6 | 'gegl-path.c', 7 | ) 8 | 9 | gegl_introspectable_headers += files( 10 | 'gegl-audio-fragment.h', 11 | 'gegl-color.h', 12 | 'gegl-curve.h', 13 | 'gegl-paramspecs.h', 14 | 'gegl-path.h', 15 | ) 16 | -------------------------------------------------------------------------------- /libs/ctx/gegl_ctx.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | 6 | #define CTX_PARSER 1 7 | #define CTX_PTY 0 8 | #define CTX_FORMATTER 0 9 | #define CTX_EVENTS 0 10 | #define CTX_BITPACK_PACKER 0 // turned of due to asan report 11 | #define CTX_GRADIENT_CACHE 1 12 | #define CTX_ENABLE_CMYK 1 13 | #define CTX_ENABLE_CM 1 14 | #define CTX_RASTERIZER_AA 15 15 | #define CTX_RASTERIZER_ALLOW_DIRECT 1 16 | #define CTX_STRINGPOOL_SIZE 10000 // for misc storage with compressed/ 17 | // variable size for each save|restore 18 | #define CTX_FONTS_FROM_FILE 0 19 | #define CTX_IMPLEMENTATION 1 20 | #define CTX_RASTERIZER 1 21 | #define CTX_AUDIO 0 22 | 23 | #include "ctx.h" 24 | 25 | 26 | -------------------------------------------------------------------------------- /libs/ctx/meson.build: -------------------------------------------------------------------------------- 1 | 2 | gegl_ctx_lib = static_library('gegl_ctx', 3 | 'gegl_ctx.c', 4 | 'ctx.h', 5 | dependencies: [glib, babl], 6 | include_directories: rootInclude, 7 | ) 8 | 9 | libgegl_ctx = declare_dependency( 10 | include_directories: include_directories('.'), 11 | link_with: gegl_ctx_lib, 12 | ) 13 | -------------------------------------------------------------------------------- /libs/npd/meson.build: -------------------------------------------------------------------------------- 1 | gegl_npd_sources = files( 2 | 'deformation.c', 3 | 'graphics.c', 4 | 'lattice_cut.c', 5 | 'npd_common.c', 6 | 'npd_debug.c', 7 | 'npd_gegl.c', 8 | 'npd_math.c', 9 | ) 10 | 11 | gegl_npd_headers = files( 12 | 'deformation.h', 13 | 'graphics.h', 14 | 'lattice_cut.h', 15 | 'npd_common.h', 16 | 'npd_debug.h', 17 | 'npd_gegl.h', 18 | 'npd_math.h', 19 | 'npd.h', 20 | ) 21 | 22 | gegl_npd_lib = library(meson.project_name() + '-npd-' + api_version, 23 | gegl_npd_sources, 24 | dependencies: [ glib, babl, math, ], 25 | include_directories: geglInclude, 26 | link_with: [ 27 | gegl_lib, 28 | ], 29 | install: true, 30 | ) 31 | 32 | libnpd = declare_dependency( 33 | include_directories: include_directories('..'), 34 | link_with: gegl_npd_lib, 35 | ) 36 | 37 | install_headers(gegl_npd_headers, 38 | subdir: api_name / 'npd', 39 | ) 40 | -------------------------------------------------------------------------------- /libs/rgbe/meson.build: -------------------------------------------------------------------------------- 1 | 2 | rgbe_lib = static_library('rgbe', 3 | 'rgbe.c', 4 | dependencies: glib, 5 | include_directories: rootInclude, 6 | ) 7 | 8 | librgbe = declare_dependency( 9 | include_directories: include_directories('..'), 10 | link_with: rgbe_lib, 11 | ) 12 | -------------------------------------------------------------------------------- /opencl/brightness-contrast.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_brightness_contrast(__global const float4 *in, 2 | __global float4 *out, 3 | float contrast, 4 | float brightness) 5 | { 6 | int gid = get_global_id(0); 7 | float4 in_v = in[gid]; 8 | float4 out_v; 9 | out_v.xyz = (in_v.xyz - 0.5f) * contrast + brightness + 0.5f; 10 | out_v.w = in_v.w; 11 | out[gid] = out_v; 12 | } 13 | -------------------------------------------------------------------------------- /opencl/color-temperature.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_color_temperature(__global const float4 *in, 2 | __global float4 *out, 3 | float coeff1, 4 | float coeff2, 5 | float coeff3) 6 | { 7 | int gid = get_global_id(0); 8 | float4 in_v = in[gid]; 9 | float4 out_v; 10 | out_v = in_v * (float4) (coeff1, coeff2, coeff3, 1.0f); 11 | out[gid] = out_v; 12 | } 13 | -------------------------------------------------------------------------------- /opencl/hue-chroma.cl: -------------------------------------------------------------------------------- 1 | #define EPSILON 1e-4f 2 | 3 | __kernel void gegl_hue_chroma (__global const float4 *in, 4 | __global float4 *out, 5 | float hue, 6 | float chroma, 7 | float lightness) 8 | { 9 | int gid = get_global_id(0); 10 | float4 in_v = in [gid]; 11 | float4 out_v; 12 | 13 | if (fabs (in_v.y) > EPSILON) 14 | { 15 | out_v.y = in_v.y + chroma; 16 | out_v.z = in_v.z + hue; 17 | } 18 | else 19 | { 20 | out_v.y = in_v.y; 21 | out_v.z = in_v.z; 22 | } 23 | 24 | out_v.x = in_v.x + lightness; 25 | out_v.y = clamp (out_v.y, 0.f, 300.f); 26 | out_v.w = in_v.w; 27 | out[gid] = out_v; 28 | } 29 | -------------------------------------------------------------------------------- /opencl/invert-linear.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_invert_linear (__global const float4 *in, 2 | __global float4 *out) 3 | { 4 | int gid = get_global_id(0); 5 | float4 in_v = in[gid]; 6 | float4 out_v; 7 | out_v.xyz = (1.0f - in_v.xyz); 8 | out_v.w = in_v.w; 9 | out[gid] = out_v; 10 | } 11 | -------------------------------------------------------------------------------- /opencl/levels.cl: -------------------------------------------------------------------------------- 1 | __kernel void kernel_levels(__global const float4 *in, 2 | __global float4 *out, 3 | float in_offset, 4 | float out_offset, 5 | float scale) 6 | { 7 | int gid = get_global_id(0); 8 | float4 in_v = in[gid]; 9 | float4 out_v; 10 | out_v.xyz = (in_v.xyz - in_offset) * scale + out_offset; 11 | out_v.w = in_v.w; 12 | out[gid] = out_v; 13 | } 14 | -------------------------------------------------------------------------------- /opencl/mono-mixer.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_mono_mixer (__global const float4 *src_buf, 2 | __global float2 *dst_buf, 3 | const int preserve_luminocity, 4 | float red, 5 | float green, 6 | float blue) 7 | { 8 | int gid = get_global_id(0); 9 | float4 in_v = src_buf[gid]; 10 | float norm_factor = 1.0f; 11 | 12 | if (preserve_luminocity) 13 | { 14 | float sum = red + green + blue; 15 | if (sum == 0.0) 16 | norm_factor = 1.0f; 17 | else 18 | norm_factor = fabs (1.0f / sum); 19 | } 20 | 21 | dst_buf[gid].x = (in_v.x * red + in_v.y * green + in_v.z * blue) * norm_factor; 22 | dst_buf[gid].y = in_v.w; 23 | } 24 | -------------------------------------------------------------------------------- /opencl/opacity.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_opacity_RaGaBaA_float (__global const float4 *in, 2 | __global const float *aux, 3 | __global float4 *out, 4 | float value) 5 | { 6 | int gid = get_global_id(0); 7 | float4 in_v = in [gid]; 8 | float aux_v = (aux)? aux[gid] : 1.0f; 9 | float4 out_v; 10 | out_v = in_v * aux_v * value; 11 | out[gid] = out_v; 12 | } 13 | __kernel void gegl_opacity_RGBA_float (__global const float4 *in, 14 | __global const float *aux, 15 | __global float4 *out, 16 | float value) 17 | { 18 | int gid = get_global_id(0); 19 | float4 in_v = in [gid]; 20 | float aux_v = (aux)? aux[gid] : 1.0f; 21 | float4 out_v = (float4)(in_v.x, in_v.y, in_v.z, in_v.w * aux_v * value); 22 | out[gid] = out_v; 23 | } 24 | 25 | -------------------------------------------------------------------------------- /opencl/svg-src-over.cl: -------------------------------------------------------------------------------- 1 | __kernel void svg_src_over (__global const float4 *in, 2 | __global const float4 *aux, 3 | __global float4 *out) 4 | { 5 | int gid = get_global_id(0); 6 | float4 in_v = in [gid]; 7 | float4 aux_v = aux[gid]; 8 | float4 out_v; 9 | out_v.xyz = aux_v.xyz + in_v.xyz * (1.0f - aux_v.w); 10 | out_v.w = aux_v.w + in_v.w - aux_v.w * in_v.w; 11 | out[gid] = out_v; 12 | } 13 | -------------------------------------------------------------------------------- /opencl/value-invert.cl: -------------------------------------------------------------------------------- 1 | __kernel void gegl_value_invert (__global const float4 *in, 2 | __global float4 *out) 3 | { 4 | int gid = get_global_id(0); 5 | float4 in_v = in[gid]; 6 | float4 out_v; 7 | 8 | float value = fmax (in_v.x, fmax (in_v.y, in_v.z)); 9 | float minv = fmin (in_v.x, fmin (in_v.y, in_v.z)); 10 | float delta = value - minv; 11 | 12 | if (value == 0.0f || delta == 0.0f) 13 | { 14 | out_v = (float4) ((1.0f - value), 15 | (1.0f - value), 16 | (1.0f - value), 17 | in_v.w); 18 | } 19 | else 20 | { 21 | out_v = (float4) ((1.0f - value) * in_v.x / value, 22 | (1.0f - value) * in_v.y / value, 23 | (1.0f - value) * in_v.z / value, 24 | in_v.w); 25 | } 26 | 27 | out_v.w = in_v.w; 28 | out[gid] = out_v; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /opencl/weighted-blend.cl: -------------------------------------------------------------------------------- 1 | __kernel void cl_copy_weigthed_blend(__global const float4 *in, 2 | __global float4 *out) 3 | { 4 | int gid = get_global_id(0); 5 | float4 in_v = in[gid]; 6 | out[gid] = in_v; 7 | } 8 | 9 | __kernel void cl_weighted_blend(__global const float4 *in, 10 | __global const float4 *aux, 11 | __global float4 *out) 12 | { 13 | int gid = get_global_id(0); 14 | float4 in_v = in[gid]; 15 | float4 aux_v = aux[gid]; 16 | float4 out_v; 17 | float in_weight; 18 | float aux_weight; 19 | float total_alpha = in_v.w + aux_v.w; 20 | 21 | total_alpha = total_alpha == 0 ? 1 : total_alpha; 22 | 23 | in_weight = in_v.w / total_alpha; 24 | aux_weight = 1.0f - in_weight; 25 | 26 | out_v.xyz = in_weight * in_v.xyz + aux_weight * aux_v.xyz; 27 | out_v.w = total_alpha; 28 | out[gid] = out_v * ((in_v.w + aux_v.w) > 0.f); 29 | } 30 | -------------------------------------------------------------------------------- /operations/common/perlin/perlin.h: -------------------------------------------------------------------------------- 1 | #define B 0x100 2 | #define BM 0xff 3 | #define N 0x1000 4 | #define NP 12 /* 2^N */ 5 | #define NM 0xfff 6 | 7 | #define s_curve(t) ( t * t * (3. - 2. * t) ) 8 | #define lerp(t, a, b) ( a + t * (b - a) ) 9 | #define setup(i,b0,b1,r0,r1)\ 10 | t = vec[i] + N;\ 11 | b0 = ((int)t) & BM;\ 12 | b1 = (b0+1) & BM;\ 13 | r0 = t - (int)t;\ 14 | r1 = r0 - 1.; 15 | #define at2(rx,ry) ( rx * q[0] + ry * q[1] ) 16 | #define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) 17 | 18 | void perlin_init (void); 19 | double noise1 (double); 20 | double noise2 (double[2]); 21 | double noise3 (double[3]); 22 | void normalize3 (double[3]); 23 | void normalize2 (double[2]); 24 | 25 | double PerlinNoise1D (double, double, double, int); 26 | double PerlinNoise2D (double, double, double, double, int); 27 | double PerlinNoise3D (double, double, double, double, double, int); 28 | -------------------------------------------------------------------------------- /operations/core/meson.build: -------------------------------------------------------------------------------- 1 | 2 | gegl_core_sources = files( 3 | 'cache.c', 4 | 'cast-format.c', 5 | 'cast-space.c', 6 | 'clone.c', 7 | 'convert-format.c', 8 | 'convert-space.c', 9 | 'crop.c', 10 | 'json.c', 11 | 'load.c', 12 | 'nop.c', 13 | ) 14 | 15 | gegl_core_sources += custom_target('module_core.c', 16 | input : gegl_core_sources, 17 | output: 'module_core.c', 18 | command: [ gen_loader, '@INPUT@', ], 19 | capture: true 20 | ) 21 | 22 | gegl_core = shared_library('gegl-core', 23 | gegl_core_sources, 24 | include_directories: [ rootInclude, geglInclude, ], 25 | dependencies: [ 26 | babl, 27 | glib, 28 | gmodule, 29 | json_glib, 30 | math, 31 | ], 32 | link_with: [ 33 | gegl_lib, 34 | ], 35 | c_args: [ 36 | '-DGEGL_OP_BUNDLE', 37 | ], 38 | name_prefix: '', 39 | install: true, 40 | install_dir: get_option('libdir') / api_name, 41 | ) 42 | 43 | gegl_operations += gegl_core 44 | -------------------------------------------------------------------------------- /operations/json/dropshadow2.fbp: -------------------------------------------------------------------------------- 1 | INPORT=translate.X:X 2 | INPORT=translate.Y:Y 3 | INPORT=color.VALUE:COLOR 4 | INPORT=blur.STD_DEV_X:RADIUS 5 | INPORT=opacity.VALUE:OPACITY 6 | 7 | INPORT=input.INPUT:INPUT 8 | OUTPORT=over.OUTPUT:OUTPUT 9 | 10 | # FIXME: multiple export mapping? INPORT=blur.STD-DEV-Y:RADIUS 11 | # FIXME: allow - in property names, or map _ to - ? 12 | # TODO: allow \ or \n between connections 13 | 14 | input(gegl/nop) OUTPUT -> INPUT darken(gegl/src_in) OUTPUT -> INPUT blur(gegl/gaussian_blur) OUTPUT -> INPUT opacity(gegl/opacity) OUTPUT -> INPUT translate(gegl/translate) OUTPUT -> INPUT over(gegl/over) 15 | input OUTPUT -> AUX over 16 | color(gegl/color) OUTPUT -> AUX darken 17 | 18 | 'rgba(0.0, 0.0, 0.0, 0.0)' -> VALUE color 19 | '0.5' -> VALUE opacity 20 | '10' -> STD_DEV_Y blur 21 | '20' -> Y translate 22 | '20' -> X translate 23 | -------------------------------------------------------------------------------- /operations/json/grey2.fbp: -------------------------------------------------------------------------------- 1 | INPORT=in.INPUT:INPUT 2 | OUTPORT=out.OUTPUT:OUTPUT 3 | INPORT=tr.HEIGHT:HEIGHT 4 | INPORT=tr.WIDTH:WIDTH 5 | 6 | in(gegl/nop) OUTPUT -> INPUT g(gegl/gray) OUTPUT -> INPUT tr(gegl/crop) OUTPUT -> INPUT out(gegl/nop) 7 | -------------------------------------------------------------------------------- /operations/json/meson.build: -------------------------------------------------------------------------------- 1 | 2 | json_operations = [ 3 | 'grey2.json', 4 | 'dropshadow2.json' 5 | ] 6 | 7 | # copy json files into build so they are available for tests/docs 8 | foreach _file : json_operations 9 | json_operations += configure_file( 10 | input: _file, 11 | output: _file, 12 | copy: true, 13 | install: true, 14 | install_dir: get_option('libdir') / api_name, 15 | ) 16 | endforeach 17 | -------------------------------------------------------------------------------- /operations/meson.build: -------------------------------------------------------------------------------- 1 | 2 | gegl_operations_build_dir = meson.current_build_dir() 3 | gegl_operations = [] 4 | 5 | subdir('common-gpl3+') 6 | subdir('common-cxx') 7 | subdir('common') 8 | subdir('core') 9 | subdir('external') 10 | subdir('generated') 11 | subdir('json') 12 | subdir('seamless-clone') 13 | subdir('transform') 14 | if get_option('workshop') 15 | subdir('workshop') 16 | endif 17 | -------------------------------------------------------------------------------- /operations/seamless-clone/meson.build: -------------------------------------------------------------------------------- 1 | 2 | seamless_clone_libs = [ 3 | 'seamless-clone', 4 | 'seamless-clone-compose', 5 | ] 6 | 7 | foreach lib : seamless_clone_libs 8 | gegl_operations += shared_library(lib, 9 | files(lib + '.c'), 10 | include_directories: [ rootInclude, geglInclude, seamlessInclude, ], 11 | dependencies: [ 12 | babl, 13 | glib, 14 | json_glib, 15 | poly2tri_c, 16 | math, 17 | ], 18 | link_with: [ 19 | gegl_lib, 20 | seamlessclone_lib, 21 | ], 22 | name_prefix: '', 23 | install: true, 24 | install_dir: get_option('libdir') / api_name, 25 | ) 26 | endforeach 27 | -------------------------------------------------------------------------------- /operations/transform/module.h: -------------------------------------------------------------------------------- 1 | #ifndef __TRANSFORM_MODULE_H__ 2 | #define __TRANSFORM_MODULE_H__ 3 | 4 | G_BEGIN_DECLS 5 | 6 | #include 7 | #include 8 | 9 | G_MODULE_EXPORT GTypeModule * transform_module_get_module (void); 10 | G_MODULE_EXPORT const GeglModuleInfo * gegl_module_query (GTypeModule *module); 11 | G_MODULE_EXPORT gboolean gegl_module_register (GTypeModule *module); 12 | 13 | G_END_DECLS 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /operations/transform/scale.h: -------------------------------------------------------------------------------- 1 | #ifndef __OP_SCALE_H__ 2 | #define __OP_SCALE_H__ 3 | 4 | #include "transform-core.h" 5 | 6 | G_BEGIN_DECLS 7 | 8 | #define TYPE_OP_SCALE (op_scale_get_type ()) 9 | #define OP_SCALE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_OP_SCALE, OpScale)) 10 | #define OP_SCALE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_OP_SCALE, OpScaleClass)) 11 | #define IS_OP_SCALE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_OP_SCALE)) 12 | #define IS_OP_SCALE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_OP_SCALE)) 13 | #define OP_SCALE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_OP_SCALE, OpScaleClass)) 14 | 15 | typedef struct _OpScale OpScale; 16 | 17 | struct _OpScale 18 | { 19 | OpTransform parent_instance; 20 | 21 | GeglAbyssPolicy abyss_policy; 22 | }; 23 | 24 | typedef struct _OpScaleClass OpScaleClass; 25 | 26 | struct _OpScaleClass 27 | { 28 | OpTransformClass parent_class; 29 | }; 30 | 31 | GType op_scale_get_type (void) G_GNUC_CONST; 32 | 33 | G_END_DECLS 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /operations/workshop/generated/meson.build: -------------------------------------------------------------------------------- 1 | 2 | libraries = [ 3 | 'average', 4 | 'blend-reflect', 5 | 'negation', 6 | 'soft-burn', 7 | 'soft-dodge', 8 | 'subtractive', 9 | ] 10 | 11 | foreach lib : libraries 12 | gegl_operations += shared_library(lib, 13 | lib + '.c', 14 | include_directories: [ rootInclude, geglInclude, seamlessInclude, ], 15 | dependencies: [ 16 | babl, 17 | glib, 18 | gobject, 19 | ], 20 | link_with: [ 21 | gegl_lib, 22 | ], 23 | name_prefix: '', 24 | install: true, 25 | install_dir: get_option('libdir') / api_name, 26 | ) 27 | endforeach 28 | -------------------------------------------------------------------------------- /perf/Makefile-tests: -------------------------------------------------------------------------------- 1 | #CFILES = $(wildcard *.c) 2 | #CFILES = test-blur.c test-bcontrast-minichunk.c test-bcontrast.c test-bcontrast-4x.c test-rotate.c test-scale.c test-unsharpmask.c test-samplers.c test-gegl-buffer-access.c 3 | CFILES = test-bcontrast-4x.c test-rotate.c test-unsharpmask.c test-samplers.c test-gegl-buffer-access.c 4 | #CFILES = test-gegl-buffer-access.c 5 | bins = $(subst ,,$(CFILES:.c=)) 6 | 7 | all: $(bins) 8 | 9 | %: %.c 10 | PKG_CONFIG_PATH=prefix/lib/pkgconfig:$(PKG_CONFIG_PATH) $(CC) -DTESTS_DATA_DIR=\"../data/\" -o $@ $< `pkg-config babl gegl-0.4 --cflags --libs` -Wall -O2 11 | 12 | check: $(bins) 13 | for a in $(bins); do \ 14 | GEGL_USE_OPENCL=no GEGL_PATH=prefix/lib/x86_64-linux-gnu/gegl-0.4 LD_LIBRARY_PATH=prefix/lib:prefix/lib/x86_64-linux-gnu:$(LD_LIBRARY_PATH) ./$$a;\ 15 | done 16 | 17 | clean: 18 | rm -f $(bins) 19 | -------------------------------------------------------------------------------- /perf/joblist: -------------------------------------------------------------------------------- 1 | HEAD 2 | 3 | master~200..master 4 | 5 | # enable multi-thread by default 6 | 7 | -------------------------------------------------------------------------------- /perf/makejobs.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # this ruby script generates a chronologically sorted 4 | 5 | res = "" 6 | input = File.read(ARGV[0]) 7 | input = input.gsub(/#.*/, "") 8 | input.split("\n").each {|a| 9 | if a =~ /([^ ]*)\.\.([^ ]*) %(.*)/ 10 | res += `git log #{$1}..#{$2} | grep '^commit' | sed 's/commit //' | sed -n '0~#{$3}p'` 11 | elsif a =~ /([^ ]*)\.\.([^ ]*)/ 12 | res += `git log #{$1}..#{$2} | grep '^commit' | sed 's/commit //'` 13 | else 14 | res += `echo #{a}` 15 | end 16 | } 17 | 18 | all = `git log | grep '^commit' | sed 's/commit//' ` 19 | all.split("\n").reverse.each {|a| 20 | if res.match(a.strip) != nil 21 | puts "#{a.strip}" 22 | end 23 | } 24 | 25 | -------------------------------------------------------------------------------- /perf/meson.build: -------------------------------------------------------------------------------- 1 | 2 | perf_tests = [ 3 | 'bcontrast-4x', 4 | 'bcontrast-minichunk', 5 | 'bcontrast', 6 | 'blur', 7 | 'gegl-buffer-access', 8 | 'init', 9 | 'rotate', 10 | 'samplers', 11 | 'saturation', 12 | 'scale', 13 | 'translate', 14 | 'unsharpmask', 15 | ] 16 | 17 | foreach testname : perf_tests 18 | perf_test_exe = executable(testname, 19 | 'test-' + testname + '.c', 20 | include_directories: [ rootInclude, geglInclude, ], 21 | dependencies: [ 22 | babl, 23 | glib, 24 | gobject, 25 | ], 26 | link_with: [ gegl_lib, ], 27 | c_args: [ 28 | '-DG_DISABLE_SINGLE_INCLUDES', 29 | '-DGLIB_DISABLE_DEPRECATION_WARNINGS', 30 | '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS', 31 | '-DTESTS_DATA_DIR="@0@"'.format( project_source_root / 'tests' / 'data'), 32 | ], 33 | install: false, 34 | ) 35 | 36 | benchmark('Perf Test ' + testname, perf_test_exe, 37 | env: [ 38 | 'GEGL_PATH=' + project_build_root / 'operations', 39 | 'GEGL_USE_OPENCL=no', 40 | ], 41 | ) 42 | endforeach 43 | -------------------------------------------------------------------------------- /perf/perf-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | MAKE_FLAGS="-j4 -k " 4 | REV=$1 5 | CC="ccache gcc" 6 | 7 | rm -rf prefix || true 8 | mkdir prefixes || true 9 | ln -s prefixes/$REV prefix 10 | 11 | if [ -d prefixes/$REV ]; then 12 | if [ ! -f prefixes/$REV/built ]; then 13 | rm -rf prefixes/$REV 14 | fi 15 | fi 16 | 17 | 18 | if [ ! -d prefixes/$REV ]; then 19 | mkdir prefixes/$REV || true 20 | ( 21 | cd checkout; 22 | #if [ ! -f Makefile ]; then 23 | # CC=$CC ./autogen.sh --disable-docs --disable-introspection --prefix=`pwd`/../prefix; 24 | #fi; 25 | #make $MAKE_FLAGS ; 26 | #make -k install 27 | meson --prefix=`pwd`/../prefix `pwd`/../prefix/b 28 | ninja -C `pwd`/../prefix/b 29 | ninja -C `pwd`/../prefix/b install 30 | touch `pwd`/../prefix/built 31 | ) > prefix/build_log 2>&1 32 | fi; 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /perf/test-bcontrast-minichunk.c: -------------------------------------------------------------------------------- 1 | #include "test-common.h" 2 | 3 | void bcontrast_minichunk(GeglBuffer *buffer); 4 | 5 | gint 6 | main (gint argc, 7 | gchar **argv) 8 | { 9 | GeglBuffer *buffer; 10 | 11 | gegl_init (&argc, &argv); 12 | 13 | g_object_set (gegl_config (), "chunk-size", 32 * 32, NULL); 14 | 15 | buffer = test_buffer (2048, 1024, babl_format ("RGBA float")); 16 | bench("bcontrast-minichunk", buffer, &bcontrast_minichunk); 17 | 18 | return 0; 19 | } 20 | 21 | void bcontrast_minichunk(GeglBuffer *buffer) 22 | { 23 | GeglBuffer *buffer2; 24 | GeglNode *gegl, *source, *node, *sink; 25 | 26 | gegl = gegl_node_new (); 27 | source = gegl_node_new_child (gegl, "operation", "gegl:buffer-source", "buffer", buffer, NULL); 28 | node = gegl_node_new_child (gegl, "operation", "gegl:brightness-contrast", "contrast", 0.2, NULL); 29 | sink = gegl_node_new_child (gegl, "operation", "gegl:buffer-sink", "buffer", &buffer2, NULL); 30 | 31 | gegl_node_link_many (source, node, sink, NULL); 32 | gegl_node_process (sink); 33 | g_object_unref (gegl); 34 | g_object_unref (buffer2); 35 | } 36 | -------------------------------------------------------------------------------- /perf/test-bcontrast.c: -------------------------------------------------------------------------------- 1 | #include "test-common.h" 2 | 3 | void blur(GeglBuffer *buffer); 4 | 5 | gint 6 | main (gint argc, 7 | gchar **argv) 8 | { 9 | GeglBuffer *buffer; 10 | 11 | gegl_init (&argc, &argv); 12 | 13 | buffer = test_buffer (2048, 1024, babl_format ("RGBA float")); 14 | 15 | bench("bcontrast", buffer, &blur); 16 | 17 | return 0; 18 | } 19 | 20 | void blur(GeglBuffer *buffer) 21 | { 22 | GeglBuffer *buffer2; 23 | GeglNode *gegl, *source, *node, *sink; 24 | 25 | gegl = gegl_node_new (); 26 | source = gegl_node_new_child (gegl, "operation", "gegl:buffer-source", "buffer", buffer, NULL); 27 | node = gegl_node_new_child (gegl, "operation", "gegl:brightness-contrast", "contrast", 0.2, NULL); 28 | sink = gegl_node_new_child (gegl, "operation", "gegl:buffer-sink", "buffer", &buffer2, NULL); 29 | 30 | gegl_node_link_many (source, node, sink, NULL); 31 | gegl_node_process (sink); 32 | g_object_unref (gegl); 33 | g_object_unref (buffer2); 34 | } 35 | -------------------------------------------------------------------------------- /perf/test-init.c: -------------------------------------------------------------------------------- 1 | #include "test-common.h" 2 | 3 | gint 4 | main (gint argc, 5 | gchar **argv) 6 | { 7 | long ticks; 8 | 9 | test_start (); 10 | gegl_init (&argc, &argv); 11 | gegl_exit (); 12 | ticks = babl_ticks ()-ticks_start; 13 | g_print ("@ %s: %.2f seconds\n", "init", (ticks / 1000000.0)); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /perf/test-unsharpmask.c: -------------------------------------------------------------------------------- 1 | #include "test-common.h" 2 | 3 | void unsharpmask(GeglBuffer *buffer); 4 | 5 | gint 6 | main (gint argc, 7 | gchar **argv) 8 | { 9 | GeglBuffer *buffer; 10 | 11 | gegl_init (&argc, &argv); 12 | 13 | buffer = test_buffer (1024, 1024, babl_format ("RGBA float")); 14 | bench("unsharp-mask", buffer, &unsharpmask); 15 | 16 | return 0; 17 | } 18 | 19 | void unsharpmask(GeglBuffer *buffer) 20 | { 21 | GeglBuffer *buffer2; 22 | GeglNode *gegl, *source, *node, *sink; 23 | 24 | gegl = gegl_node_new (); 25 | source = gegl_node_new_child (gegl, "operation", "gegl:buffer-source", "buffer", buffer, NULL); 26 | node = gegl_node_new_child (gegl, "operation", "gegl:unsharp-mask", 27 | "std-dev", 3.1, 28 | "scale", 1.2, 29 | NULL); 30 | sink = gegl_node_new_child (gegl, "operation", "gegl:buffer-sink", "buffer", &buffer2, NULL); 31 | 32 | gegl_node_link_many (source, node, sink, NULL); 33 | gegl_node_process (sink); 34 | g_object_unref (gegl); 35 | g_object_unref (buffer2); 36 | } 37 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | bg 2 | bs 3 | ca 4 | da 5 | de 6 | el 7 | en_GB 8 | eo 9 | es 10 | eu 11 | fr 12 | gl 13 | hr 14 | id 15 | is 16 | it 17 | ka 18 | kab 19 | ko 20 | lv 21 | mr 22 | nb 23 | ne 24 | nl 25 | nn 26 | oc 27 | pl 28 | pt 29 | pt_BR 30 | ro 31 | ru 32 | sk 33 | sl 34 | sr 35 | sr@latin 36 | sv 37 | tr 38 | uk 39 | zh_CN 40 | -------------------------------------------------------------------------------- /po/POTFILES.skip: -------------------------------------------------------------------------------- 1 | # List of source files that should *not* be translated. 2 | # Please keep this file sorted alphabetically. 3 | gegl/gegl-cpuaccel.c 4 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(gettext_package, preset: 'glib') 2 | -------------------------------------------------------------------------------- /seamless-clone/gegl-sc.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@/sc 5 | 6 | Name: GEGL Seamless Cloning 7 | Description: Seamless Cloning Library Based on GEGL 8 | Version: @GEGL_REAL_VERSION@ 9 | Requires: @GLIB_PACKAGES@ babl @P2TC_PACKAGES@ @PACKAGE_NAME@-@GEGL_API_VERSION@ 10 | Libs: -L${libdir} -l@PACKAGE_NAME@-sc-@GEGL_API_VERSION@ 11 | Cflags: -I${includedir}/@PACKAGE_NAME@-@GEGL_API_VERSION@/sc 12 | -------------------------------------------------------------------------------- /subprojects/babl.wrap: -------------------------------------------------------------------------------- 1 | [wrap-git] 2 | url=https://gitlab.gnome.org/GNOME/babl.git 3 | revision=master 4 | 5 | [provide] 6 | dependency_names=babl-0.1 7 | -------------------------------------------------------------------------------- /subprojects/glib.wrap: -------------------------------------------------------------------------------- 1 | [wrap-file] 2 | directory = glib-2.70.4 3 | source_url = https://download.gnome.org/sources/glib/2.70/glib-2.70.4.tar.xz 4 | source_filename = glib-2.70.4.tar.xz 5 | source_hash = ab3d176f3115dcc4e5d02db795984e04e4f4b48d836252e23e8c468e9d423c33 6 | 7 | [provide] 8 | dependency_names = gthread-2.0, gobject-2.0, gmodule-no-export-2.0, gmodule-export-2.0, gmodule-2.0, glib-2.0, gio-2.0, gio-win32-2.0, gio-unix-2.0 9 | program_names = glib-genmarshal, glib-mkenums, glib-compile-schemas, glib-compile-resources, gio-querymodules, gdbus-codegen 10 | 11 | -------------------------------------------------------------------------------- /subprojects/json-glib.wrap: -------------------------------------------------------------------------------- 1 | [wrap-file] 2 | directory = json-glib-1.6.6 3 | source_url = https://download.gnome.org/sources/json-glib/1.6/json-glib-1.6.6.tar.xz 4 | source_filename = json-glib-1.6.6.tar.xz 5 | source_hash = 96ec98be7a91f6dde33636720e3da2ff6ecbb90e76ccaa49497f31a6855a490e 6 | 7 | [provide] 8 | json-glib-1.0 = json_glib_dep 9 | -------------------------------------------------------------------------------- /subprojects/libjpeg-turbo.wrap: -------------------------------------------------------------------------------- 1 | [wrap-file] 2 | directory = libjpeg-turbo-2.1.2 3 | source_url = https://sourceforge.net/projects/libjpeg-turbo/files/2.1.2/libjpeg-turbo-2.1.2.tar.gz 4 | source_filename = libjpeg-turbo-2.1.2.tar.gz 5 | source_hash = 09b96cb8cbff9ea556a9c2d173485fd19488844d55276ed4f42240e1e2073ce5 6 | patch_filename = libjpeg-turbo_2.1.2-1_patch.zip 7 | patch_url = https://wrapdb.mesonbuild.com/v2/libjpeg-turbo_2.1.2-1/get_patch 8 | patch_hash = f1498a0d71880bd0193f73961cf870d38d21c3965bf643870cf0f8f6da9acb2e 9 | 10 | [provide] 11 | dependency_names = libjpeg 12 | 13 | -------------------------------------------------------------------------------- /subprojects/libnsgif/meson.build: -------------------------------------------------------------------------------- 1 | project('libnsgif', 2 | 'c', 3 | meson_version: '>=0.0.0', 4 | ) 5 | 6 | 7 | libnsgif_lib = static_library('nsgif', 8 | 'gif.c', 9 | 'lzw.c', 10 | ) 11 | 12 | 13 | libnsgif = declare_dependency( 14 | link_with: libnsgif_lib, 15 | include_directories: '.' 16 | ) 17 | -------------------------------------------------------------------------------- /subprojects/libnsgif/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | UPSTREAM="https://source.netsurf-browser.org/libnsgif.git" 4 | LOCAL="temp" 5 | 6 | git clone "$UPSTREAM" "$LOCAL" 7 | 8 | echo "Copying sources" 9 | cp "$LOCAL"/COPYING . 10 | cp "$LOCAL"/README.md . 11 | cp "$LOCAL"/include/nsgif.h . 12 | cp "$LOCAL"/src/gif.c . 13 | cp "$LOCAL"/src/lzw.c . 14 | cp "$LOCAL"/src/lzw.h . 15 | 16 | echo "Upstream: $UPSTREAM" 17 | echo "Ref: `git -C "$LOCAL" rev-parse HEAD`" 18 | 19 | rm -rf "$LOCAL" 20 | -------------------------------------------------------------------------------- /subprojects/libpng.wrap: -------------------------------------------------------------------------------- 1 | [wrap-file] 2 | directory = libpng-1.6.37 3 | source_url = https://github.com/glennrp/libpng/archive/v1.6.37.tar.gz 4 | source_filename = libpng-1.6.37.tar.gz 5 | source_hash = ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307 6 | patch_filename = libpng_1.6.37-5_patch.zip 7 | patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.37-5/get_patch 8 | patch_hash = 822200906ad2e82dc8b44e79fe960e980ccad96263548c35eef721086a9926f1 9 | 10 | [provide] 11 | libpng = libpng_dep 12 | 13 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/README: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | ==== Poly2Tri-C: A library for generating, refining and rendering ==== 3 | ==== 2-Dimensional Constrained Delaunay Triangulations ==== 4 | ======================================================================== 5 | 6 | This is a minimal version of the Poly2Tri-C library, required to compile 7 | the seamless cloning operation. For more information, and in order to 8 | get the full library, see http://code.google.com/p/poly2tri-c 9 | 10 | Poly2Tri-C Version info: 11 | 12 | CURRENT REVISION: b27c5b79df2ffa4e2cb37f9e5536831f16afb11b 13 | CACHED ON: August 11th, 2012 14 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/meson.build: -------------------------------------------------------------------------------- 1 | project('poly2tri-c', 'c', 2 | license: 'GPL3+', 3 | version: '0.1.0', 4 | meson_version: '>=0.40.0', 5 | default_options: [ 6 | 'sysconfdir=/etc', 7 | 'localstatedir=/var', 8 | 'sharedstatedir=/var/lib' 9 | ], 10 | ) 11 | 12 | glib = dependency('glib-2.0') 13 | math = meson.get_compiler('c').find_library('m') 14 | 15 | rootInclude = include_directories('.') 16 | 17 | subdir('poly2tri-c/p2t') 18 | subdir('poly2tri-c/refine') 19 | subdir('poly2tri-c/render') 20 | 21 | 22 | libpoly2tri_c = static_library('poly2tri-c', 23 | link_with: [ libp2tc, libp2tc_refine, libp2tc_render, ], 24 | ) 25 | 26 | 27 | poly2tri_c = declare_dependency( 28 | include_directories: [ rootInclude, ], 29 | link_with: [ libpoly2tri_c, ], 30 | version: meson.project_version(), 31 | ) 32 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/poly2tri-c/p2t/common/meson.build: -------------------------------------------------------------------------------- 1 | 2 | libp2tc_common_sources = files( 3 | 'shapes.c', 4 | 'utils.c' 5 | ) 6 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/poly2tri-c/p2t/meson.build: -------------------------------------------------------------------------------- 1 | 2 | subdir('common') 3 | subdir('sweep') 4 | 5 | libp2tc = static_library('p2tc', 6 | libp2tc_common_sources, 7 | libp2tc_sweep_sources, 8 | dependencies: [ glib, math, ], 9 | include_directories: [ rootInclude, ], 10 | ) 11 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/poly2tri-c/p2t/sweep/meson.build: -------------------------------------------------------------------------------- 1 | 2 | libp2tc_sweep_sources = files( 3 | 'advancing_front.c', 4 | 'cdt.c', 5 | 'sweep_context.c', 6 | 'sweep.c', 7 | ) 8 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/poly2tri-c/refine/meson.build: -------------------------------------------------------------------------------- 1 | 2 | libp2tc_refine = static_library('p2tc_refine', 3 | 'bounded-line.c', 4 | 'cdt-flipfix.c', 5 | 'cdt.c', 6 | 'circle.c', 7 | 'cluster.c', 8 | 'delaunay-terminator.c', 9 | 'edge.c', 10 | 'line.c', 11 | 'mesh-action.c', 12 | 'mesh.c', 13 | 'point.c', 14 | 'pslg.c', 15 | 'refiner.c', 16 | 'rmath.c', 17 | 'triangle.c', 18 | 'utils.c', 19 | 'vector2.c', 20 | 'vedge.c', 21 | 'visibility.c', 22 | 'vtriangle.c', 23 | dependencies: [ glib, ], 24 | include_directories: [ rootInclude, ], 25 | ) 26 | -------------------------------------------------------------------------------- /subprojects/poly2tri-c/poly2tri-c/render/meson.build: -------------------------------------------------------------------------------- 1 | 2 | libp2tc_render = static_library('p2tc_render', 3 | [ 'mesh-render.c', 'svg-plot.c' ], 4 | dependencies: [ glib, ], 5 | include_directories: [ rootInclude, ], 6 | ) 7 | -------------------------------------------------------------------------------- /tests/buffer/README: -------------------------------------------------------------------------------- 1 | GeglBuffer test-suite. 2 | 3 | Run make check to test that GeglBuffer hasn't introduced any regressions to the 4 | core API. Bein able to adjust the tile size to be very small would be a useful 5 | addition. 6 | -------------------------------------------------------------------------------- /tests/buffer/reference/blank.buf: -------------------------------------------------------------------------------- 1 | Test: blank 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▐ 9 | ▌ ▐ 10 | ▌ ▐ 11 | ▌ ▐ 12 | ▌ ▐ 13 | ▌ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▐ 9 | ▌ ▐ 10 | ▌ ▐ 11 | ▌ ▐ 12 | ▌ ▐ 13 | ▌ ▐ 14 | ▌ ░░░░░ ▐ 15 | ▌ ░░░░░ ▐ 16 | ▌ ░░░░░ ▐ 17 | ▌ ░░░░░ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_abyss.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_abyss 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 4 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 5 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 6 | ▌██████████ ▐ 7 | ▌██████████ ▐ 8 | ▌██████████ ▐ 9 | ▌██████████ ▐ 10 | ▌██████████ ▐ 11 | ▌██████████ ▐ 12 | ▌██████████ ▐ 13 | ▌ ▓▓▓▓▓ ▐ 14 | ▌ ▓▓▓▓▓ ▐ 15 | ▌ ▓▓▓▓▓ ▐ 16 | ▌ █████ ▐ 17 | ▌ █████ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_lower_left.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_lower_left 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▐ 9 | ▌ ▐ 10 | ▌ ▐ 11 | ▌ ▐ 12 | ▌ ▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓ ▐ 21 | ▌██████████ ▐ 22 | ▌██████████ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_lower_right.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_lower_right 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▐ 9 | ▌ ▐ 10 | ▌ ▐ 11 | ▌ ▐ 12 | ▌ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌ ▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌ ▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌ ▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌ ▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌ ▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌ ██████████▐ 22 | ▌ ██████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_self.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_self 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_upper_left.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_upper_left 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░ ▐ 7 | ▌░░░░░░░░░░ ▐ 8 | ▌░░░░░░░░░░ ▐ 9 | ▌░░░░░░░░░░ ▐ 10 | ▌░░░░░░░░░░ ▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_copy_upper_right.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_copy_upper_right 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ░░░░░░░░░░▐ 7 | ▌ ░░░░░░░░░░▐ 8 | ▌ ░░░░░░░░░░▐ 9 | ▌ ░░░░░░░░░░▐ 10 | ▌ ░░░░░░░░░░▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_copy1.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_copy1 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_copy2.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_copy2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_delete1.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_delete1 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_delete2.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_delete2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_write1.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_write1 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌███ ███ ███ ██▐ 4 | ▌███ ███ ███ ██▐ 5 | ▌███ ███ ███ ██▐ 6 | ▌ ███ ███ ███ ▐ 7 | ▌ ███ ███ ███ ▐ 8 | ▌ ███ ███ ███ ▐ 9 | ▌███ ███ ███ ██▐ 10 | ▌███ ███ ███ ██▐ 11 | ▌███ ███ ███ ██▐ 12 | ▌ ███ ███ ███ ▐ 13 | ▌ ███ ███ ███ ▐ 14 | ▌ ███ ███ ███ ▐ 15 | ▌███ ███ ███ ██▐ 16 | ▌███ ███ ███ ██▐ 17 | ▌███ ███ ███ ██▐ 18 | ▌ ███ ███ ███ ▐ 19 | ▌ ███ ███ ███ ▐ 20 | ▌ ███ ███ ███ ▐ 21 | ▌███ ███ ███ ██▐ 22 | ▌███ ███ ███ ██▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_write2.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_write2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_write3.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_write3 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_dup_write4.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_dup_write4 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌███ ███ ███ ██▐ 4 | ▌███ ███ ███ ██▐ 5 | ▌███ ███ ███ ██▐ 6 | ▌ ███ ███ ███ ▐ 7 | ▌ ███ ███ ███ ▐ 8 | ▌ ███ ███ ███ ▐ 9 | ▌███ ███ ███ ██▐ 10 | ▌███ ███ ███ ██▐ 11 | ▌███ ███ ███ ██▐ 12 | ▌ ███ ███ ███ ▐ 13 | ▌ ███ ███ ███ ▐ 14 | ▌ ███ ███ ███ ▐ 15 | ▌███ ███ ███ ██▐ 16 | ▌███ ███ ███ ██▐ 17 | ▌███ ███ ███ ██▐ 18 | ▌ ███ ███ ███ ▐ 19 | ▌ ███ ███ ███ ▐ 20 | ▌ ███ ███ ███ ▐ 21 | ▌███ ███ ███ ██▐ 22 | ▌███ ███ ███ ██▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator1.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator1 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 4 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 5 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 6 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 10 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 17 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 19 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 20 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 21 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 22 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator1sub.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator1sub 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 6 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 7 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 18 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 19 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 20 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 21 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 22 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator2.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 4 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 5 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 6 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator2sub.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator2sub 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▒▒▒▒▒▒▒▒ ▐ 6 | ▌ ▒▒▒▒▒▒▒▒ ▐ 7 | ▌ ▒▒▒▒▒▒▒▒ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator3.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator3 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator3sub.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator3sub 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator4.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator4 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 5 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 6 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 7 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_iterator4sub.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_iterator4sub 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 6 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 7 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▐ 15 | ▌ ▐ 16 | ▌ ▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_linear_copy.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_linear_copy 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ██████████ ▐ 5 | ▌ ██████████ ▐ 6 | ▌░░░██████████░░░░░░░▐ 7 | ▌░░░██████████░░░░░░░▐ 8 | ▌░░░██████████░░░░░░░▐ 9 | ▌░░░██████████░░░░░░░▐ 10 | ▌░░░██████████░░░░░░░▐ 11 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_linear_iter.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_linear_iter 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ██████████ ▐ 5 | ▌ ██████████ ▐ 6 | ▌░░░██████████░░░░░░░▐ 7 | ▌░░░██████████░░░░░░░▐ 8 | ▌░░░██████████░░░░░░░▐ 9 | ▌░░░██████████░░░░░░░▐ 10 | ▌░░░██████████░░░░░░░▐ 11 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_linear_iter2.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_linear_iter2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ██████████ ▐ 5 | ▌ ██████████ ▐ 6 | ▌░░░██████████░░░░░░░▐ 7 | ▌░░░██████████░░░░░░░▐ 8 | ▌░░░██████████░░░░░░░▐ 9 | ▌░░░██████████░░░░░░░▐ 10 | ▌░░░██████████░░░░░░░▐ 11 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒██████████▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_shift_diagonal.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_shift_diagonal 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒░░░░▒▒ ▐ 13 | ▌ ▒▒▒▒░░░░▒▒ ▐ 14 | ▌ ▒▒▒▒░░░░▒▒ ▐ 15 | ▌ ▒▒▒▒░░░░▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_shift_horizontal.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_shift_horizontal 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒██ ▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/buffer_shift_vertical.buf: -------------------------------------------------------------------------------- 1 | Test: buffer_shift_vertical 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ████▒▒▒▒▒▒ ▐ 14 | ▌ ████▒▒▒▒▒▒ ▐ 15 | ▌ ████▒▒▒▒▒▒ ▐ 16 | ▌ ████▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/checks.buf: -------------------------------------------------------------------------------- 1 | Test: checks 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌███ ███ ███ ██▐ 4 | ▌███ ███ ███ ██▐ 5 | ▌███ ███ ███ ██▐ 6 | ▌ ███ ███ ███ ▐ 7 | ▌ ███ ███ ███ ▐ 8 | ▌ ███ ███ ███ ▐ 9 | ▌███ ███ ███ ██▐ 10 | ▌███ ███ ███ ██▐ 11 | ▌███ ███ ███ ██▐ 12 | ▌ ███ ███ ███ ▐ 13 | ▌ ███ ███ ███ ▐ 14 | ▌ ███ ███ ███ ▐ 15 | ▌███ ███ ███ ██▐ 16 | ▌███ ███ ███ ██▐ 17 | ▌███ ███ ███ ██▐ 18 | ▌ ███ ███ ███ ▐ 19 | ▌ ███ ███ ███ ▐ 20 | ▌ ███ ███ ███ ▐ 21 | ▌███ ███ ███ ██▐ 22 | ▌███ ███ ███ ██▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/disabled_abyss.buf: -------------------------------------------------------------------------------- 1 | Test: disabled_abyss 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ████ ▐ 7 | ▌ ████ ▐ 8 | ▌ ████▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ████▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/dup_linear_from_data.buf: -------------------------------------------------------------------------------- 1 | Test: dup_linear_from_data 2 | ▛▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌░░░░░░░░░░▐ 6 | ▌░░░░░░░░░░▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌▒▒▒▒▒▒▒▒▒▒▐ 10 | ▌▓▓▓▓▓▓▓▓▓▓▐ 11 | ▌▓▓▓▓▓▓▓▓▓▓▐ 12 | ▌██████████▐ 13 | ▙▄▄▄▄▄▄▄▄▄▄▟ 14 | -------------------------------------------------------------------------------- /tests/buffer/reference/get_buffer_scaled2.buf: -------------------------------------------------------------------------------- 1 | Test: get_buffer_scaled2 2 | ▛▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ █░░█ ▓▓ ▐ 6 | ▌ ░▓▒░▓░░ ▐ 7 | ▌ ░▒▒░▓░░ ▐ 8 | ▌ █░░█ ▓▓ ▐ 9 | ▌ ▓▓ █░ ▐ 10 | ▌ ▓░░▓░▓▒ ▐ 11 | ▌ ▓░░▓ ▒▒ ▐ 12 | ▌ ▐ 13 | ▙▄▄▄▄▄▄▄▄▄▄▟ 14 | -------------------------------------------------------------------------------- /tests/buffer/reference/get_shifted.buf: -------------------------------------------------------------------------------- 1 | Test: get_shifted 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░ ░░░░░▐ 9 | ▌░░░░░ ░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒░░░░░░░░░░▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓██████████▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | ▛▀▀▀▀▀▀▀▀▀▀▜ 25 | ▌ ▐ 26 | ▌ ▐ 27 | ▌ ▐ 28 | ▌ ▐ 29 | ▌ ▐ 30 | ▌ ▐ 31 | ▌ ▐ 32 | ▌ ░░░░░▐ 33 | ▌ ░░░░░▐ 34 | ▌ ▒▒▒▒▒▐ 35 | ▙▄▄▄▄▄▄▄▄▄▄▟ 36 | -------------------------------------------------------------------------------- /tests/buffer/reference/gray.buf: -------------------------------------------------------------------------------- 1 | Test: gray 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 4 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 5 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 6 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 10 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 17 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 19 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 20 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 21 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 22 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_from_data.buf: -------------------------------------------------------------------------------- 1 | Test: linear_from_data 2 | ▛▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ░░░░░░░▐ 5 | ▌░░░░░░░░░░▐ 6 | ▌░░░░░░░░▒▒▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌▒▒▒▓▓▓▓▓▓▓▐ 10 | ▌▓▓▓▓▓▓▓▓▓▓▐ 11 | ▌▓▓▓▓▓▓▓▓██▐ 12 | ▌██████████▐ 13 | ▙▄▄▄▄▄▄▄▄▄▄▟ 14 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_from_data_rows.buf: -------------------------------------------------------------------------------- 1 | Test: linear_from_data_rows 2 | ▛▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▒ ▐ 4 | ▌ ▒ ▐ 5 | ▌ ▒ ▐ 6 | ▌ ▒ ▐ 7 | ▌ ▒ ▐ 8 | ▌ ▒ ▐ 9 | ▌ ▒ ▐ 10 | ▌ ▒ ▐ 11 | ▌ ▒ ▐ 12 | ▌ ▒ ▐ 13 | ▙▄▄▄▄▄▄▄▄▄▄▟ 14 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_modify.buf: -------------------------------------------------------------------------------- 1 | Test: linear_modify 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓█████▐ 4 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓██████▐ 5 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████▐ 6 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████▐ 7 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓░░░░░░░░░░░░░░░░░░░▐ 11 | ▌░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 12 | ▌░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 13 | ▌░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 14 | ▌░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 15 | ▌░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 16 | ▌░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 17 | ▌░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████████████████▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████████████████▐ 19 | ▌▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓█████████████████████▐ 20 | ▌▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓██████████████████████▐ 21 | ▌▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████████████████████▐ 22 | ▌▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_new.buf: -------------------------------------------------------------------------------- 1 | Test: linear_new 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▐ 5 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▐ 6 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▐ 7 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 8 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 9 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 14 | ▌ ░░░░░░░░░░░░░░░░░░░▐ 15 | ▌ ░░░░░░░░░░░░░░░░░░░▐ 16 | ▌ ░░░░░░░░░░░░░░░░░░░▐ 17 | ▌ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_proxy_modify.buf: -------------------------------------------------------------------------------- 1 | Test: linear_proxy_modify 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓█████▐ 4 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓██████▐ 5 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████▐ 6 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████▐ 7 | ▌ ░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓░░░░░░░░░░░░░░░░░░░▐ 11 | ▌░░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 12 | ▌░░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 13 | ▌░░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 14 | ▌░░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 15 | ▌░░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 16 | ▌░░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░▐ 17 | ▌░▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████████████████▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████████████████▐ 19 | ▌▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓█████████████████████▐ 20 | ▌▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓██████████████████████▐ 21 | ▌▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓███████████████████████▐ 22 | ▌▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓████████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/linear_shift.buf: -------------------------------------------------------------------------------- 1 | Test: linear_shift 2 | ▛▀▀▀▀▀▜ 3 | ▌░░▒░░▐ 4 | ▌░░▒░░▐ 5 | ▌▒▒█▒▒▐ 6 | ▌░░▒░░▐ 7 | ▌░░▒░░▐ 8 | ▙▄▄▄▄▄▟ 9 | -------------------------------------------------------------------------------- /tests/buffer/reference/rect.buf: -------------------------------------------------------------------------------- 1 | Test: rect 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 4 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 5 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 6 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 9 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 10 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 11 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 16 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 17 | ▌▒▒▒▒▒ ▒▒▒▒▒▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 19 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 20 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 21 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 22 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/sample.buf: -------------------------------------------------------------------------------- 1 | Test: sample 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░██░░░░░░░░░░░░░▐ 7 | ▌░░░░░██░░░░░░░░░░░░░▐ 8 | ▌░░░░░██████████░░░░░▐ 9 | ▌░░░░░██████████░░░░░▐ 10 | ▌░░░░░██████████░░░░░▐ 11 | ▌▒▒▒▒▒██████████▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒██████████▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒██████████▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒██████████▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒██████████▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓██████████▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓██████████▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/save_small_roi.buf: -------------------------------------------------------------------------------- 1 | Test: save_small_roi 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 4 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 5 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 6 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 7 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 8 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 9 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 10 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 17 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 18 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 19 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 20 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 21 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 22 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/sub_sub_fill.buf: -------------------------------------------------------------------------------- 1 | Test: sub_sub_fill 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌ ▐ 7 | ▌ ▐ 8 | ▌ ██▒▒▒▒▒▒▒▒ ▐ 9 | ▌ ██▒▒▒▒▒▒▒▒ ▐ 10 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 11 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 12 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 13 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 14 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 15 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 16 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 17 | ▌ ▒▒▒▒▒▒▒▒▒▒ ▐ 18 | ▌ ▐ 19 | ▌ ▐ 20 | ▌ ▐ 21 | ▌ ▐ 22 | ▌ ▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/reference/sub_sub_fill2.buf: -------------------------------------------------------------------------------- 1 | Test: sub_sub_fill2 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 4 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 5 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 6 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 7 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 8 | ▌▓▓▓▓▓██▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 9 | ▌▓▓▓▓▓██▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 10 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 11 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 12 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 13 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 14 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 15 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 16 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 22 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | ▛▀▀▀▀▜ 25 | ▌ ▐ 26 | ▌ ▐ 27 | ▌ ██▐ 28 | ▌ ██▐ 29 | ▙▄▄▄▄▟ 30 | -------------------------------------------------------------------------------- /tests/buffer/reference/vertical_gradient.buf: -------------------------------------------------------------------------------- 1 | Test: vertical_gradient 2 | ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ 3 | ▌ ▐ 4 | ▌ ▐ 5 | ▌ ▐ 6 | ▌░░░░░░░░░░░░░░░░░░░░▐ 7 | ▌░░░░░░░░░░░░░░░░░░░░▐ 8 | ▌░░░░░░░░░░░░░░░░░░░░▐ 9 | ▌░░░░░░░░░░░░░░░░░░░░▐ 10 | ▌░░░░░░░░░░░░░░░░░░░░▐ 11 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 12 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 13 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 14 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 15 | ▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ 16 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 17 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 18 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 19 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 20 | ▌▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▐ 21 | ▌████████████████████▐ 22 | ▌████████████████████▐ 23 | ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ 24 | -------------------------------------------------------------------------------- /tests/buffer/tests/blank.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle rect = {0, 0, 20, 20}; 5 | 6 | test_start (); 7 | 8 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | 12 | test_end (); 13 | } 14 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | GeglRectangle source = {2, 2, 5, 5}; 6 | GeglRectangle dest = {10, 10, 5, 5}; 7 | test_start (); 8 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 9 | buffer2 = gegl_buffer_new (&bound, babl_format ("Y float")); 10 | 11 | vgrad (buffer); 12 | gegl_buffer_copy (buffer, &source, GEGL_ABYSS_NONE, buffer2, &dest); 13 | print_buffer (buffer2); 14 | g_object_unref (buffer); 15 | g_object_unref (buffer2); 16 | test_end (); 17 | } 18 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_abyss.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | GeglRectangle source = {15, 15, 10, 10}; 6 | GeglRectangle dest1 = {10, 10, 10, 10}; 7 | GeglRectangle dest2 = {0, 0, 10, 10}; 8 | test_start (); 9 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 10 | buffer2 = gegl_buffer_new (&bound, babl_format ("Y float")); 11 | 12 | vgrad (buffer); 13 | gegl_buffer_copy (buffer, &source, GEGL_ABYSS_NONE, buffer2, &dest1); 14 | gegl_buffer_copy (buffer, &source, GEGL_ABYSS_CLAMP, buffer2, &dest2); 15 | print_buffer (buffer2); 16 | g_object_unref (buffer); 17 | g_object_unref (buffer2); 18 | test_end (); 19 | } 20 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_lower_left.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | { 9 | GeglRectangle rect = *gegl_buffer_get_extent(buffer); 10 | 11 | rect.x=0; 12 | rect.y=10; 13 | rect.width-=10; 14 | rect.height-=10; 15 | buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer)); 16 | gegl_buffer_copy (buffer, &rect, GEGL_ABYSS_NONE, buffer2, &rect); 17 | } 18 | print_buffer (buffer2); 19 | g_object_unref (buffer); 20 | g_object_unref (buffer2); 21 | test_end (); 22 | } 23 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_lower_right.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | { 9 | GeglRectangle rect = *gegl_buffer_get_extent(buffer); 10 | 11 | rect.x=10; 12 | rect.y=10; 13 | rect.width-=10; 14 | rect.height-=10; 15 | buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer)); 16 | gegl_buffer_copy (buffer, &rect, GEGL_ABYSS_NONE, buffer2, &rect); 17 | } 18 | print_buffer (buffer2); 19 | g_object_unref (buffer); 20 | g_object_unref (buffer2); 21 | test_end (); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_self.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle source = {2, 2, 2, 2}; 5 | GeglRectangle dest = {15, 15, 1, 1}; 6 | GeglRectangle rect = {0, 0, 20, 20}; 7 | test_start (); 8 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 9 | 10 | vgrad (buffer); 11 | gegl_buffer_copy (buffer, &source, GEGL_ABYSS_NONE, buffer, &dest); /* copying to self */ 12 | print_buffer (buffer); 13 | g_object_unref (buffer); 14 | test_end (); 15 | } 16 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_upper_left.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | { 9 | GeglRectangle rect = *gegl_buffer_get_extent(buffer); 10 | 11 | rect.width-=10; 12 | rect.height-=10; 13 | buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer)); 14 | gegl_buffer_copy (buffer, &rect, GEGL_ABYSS_NONE, buffer2, &rect); 15 | } 16 | print_buffer (buffer2); 17 | g_object_unref (buffer); 18 | g_object_unref (buffer2); 19 | test_end (); 20 | } 21 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_copy_upper_right.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | { 9 | GeglRectangle rect = *gegl_buffer_get_extent(buffer); 10 | 11 | rect.x=10; 12 | rect.width-=10; 13 | rect.height-=10; 14 | buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer)); 15 | gegl_buffer_copy (buffer, &rect, GEGL_ABYSS_NONE, buffer2, &rect); 16 | } 17 | print_buffer (buffer2); 18 | g_object_unref (buffer); 19 | g_object_unref (buffer2); 20 | test_end (); 21 | } 22 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_copy1.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | print_buffer (buffer2); 10 | g_object_unref (buffer); 11 | g_object_unref (buffer2); 12 | test_end (); 13 | } 14 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_copy2.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | g_object_unref (buffer2); 12 | test_end (); 13 | } 14 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_delete1.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | g_object_unref (buffer); 10 | print_buffer (buffer2); 11 | g_object_unref (buffer2); 12 | test_end (); 13 | } 14 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_delete2.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | g_object_unref (buffer2); 10 | print_buffer (buffer); 11 | g_object_unref (buffer); 12 | test_end (); 13 | } 14 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_write1.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | checkerboard (buffer, 3, 0.0, 1.0); 10 | print_buffer (buffer); 11 | g_object_unref (buffer); 12 | g_object_unref (buffer2); 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_write2.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | checkerboard (buffer, 3, 0.0, 1.0); 10 | print_buffer (buffer2); 11 | g_object_unref (buffer); 12 | g_object_unref (buffer2); 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_write3.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | checkerboard (buffer2, 3, 0.0, 1.0); 10 | print_buffer (buffer); 11 | g_object_unref (buffer); 12 | g_object_unref (buffer2); 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_dup_write4.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle bound = {0, 0, 20, 20}; 5 | test_start (); 6 | buffer = gegl_buffer_new (&bound, babl_format ("Y float")); 7 | vgrad (buffer); 8 | buffer2 = gegl_buffer_dup (buffer); 9 | checkerboard (buffer2, 3, 0.0, 1.0); 10 | print_buffer (buffer2); 11 | g_object_unref (buffer); 12 | g_object_unref (buffer2); 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator1.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0,20,20}; 5 | GeglRectangle roi = {0,0,20,20}; 6 | test_start(); 7 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 8 | fill_rect (buffer, &roi, 0.5); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | test_end (); 12 | } 13 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator1sub.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglBuffer *sub; 5 | GeglRectangle extent = {0,0,20,20}; 6 | GeglRectangle sextent = {2,2,20,20}; 7 | GeglRectangle roi = {0,0,20,20}; 8 | test_start(); 9 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 10 | sub = gegl_buffer_create_sub_buffer (buffer, &sextent); 11 | 12 | fill_rect (sub, &roi, 0.5); 13 | print_buffer (buffer); 14 | g_object_unref (sub); 15 | g_object_unref (buffer); 16 | test_end (); 17 | } 18 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator2.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0,20,20}; 5 | GeglRectangle roi = {0,0,10,10}; 6 | test_start(); 7 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 8 | fill_rect (buffer, &roi, 0.5); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | test_end (); 12 | } 13 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator2sub.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglBuffer *sub; 5 | GeglRectangle extent = {0,0,20,20}; 6 | GeglRectangle sextent = {2,2,20,20}; 7 | GeglRectangle roi = {0,0,10,10}; 8 | test_start(); 9 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 10 | sub = gegl_buffer_create_sub_buffer (buffer, &sextent); 11 | fill_rect (sub, &roi, 0.5); 12 | print_buffer (buffer); 13 | g_object_unref (sub); 14 | g_object_unref (buffer); 15 | test_end (); 16 | } 17 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator3.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0,20,20}; 5 | GeglRectangle roi = {5,5,10,10}; 6 | test_start(); 7 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 8 | fill_rect (buffer, &roi, 0.5); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | test_end (); 12 | } 13 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator3sub.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglBuffer *sub; 5 | GeglRectangle extent = {0,0,20,20}; 6 | GeglRectangle sextent = {2,2,20,20}; 7 | GeglRectangle roi = {5,5,10,10}; 8 | test_start(); 9 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 10 | sub = gegl_buffer_create_sub_buffer (buffer, &sextent); 11 | fill_rect (sub, &roi, 0.5); 12 | print_buffer (buffer); 13 | g_object_unref (sub); 14 | g_object_unref (buffer); 15 | test_end (); 16 | } 17 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator4.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0,20,20}; 5 | GeglRectangle roi = {1,1,10,10}; 6 | test_start(); 7 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 8 | fill_rect (buffer, &roi, 0.5); 9 | print_buffer (buffer); 10 | g_object_unref (buffer); 11 | test_end (); 12 | } 13 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_iterator4sub.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglBuffer *sub; 5 | GeglRectangle extent = {0,0,20,20}; 6 | GeglRectangle sextent = {2,2,20,20}; 7 | GeglRectangle roi = {1,1,10,10}; 8 | test_start(); 9 | buffer = gegl_buffer_new (&extent, babl_format ("Y float")); 10 | sub = gegl_buffer_create_sub_buffer (buffer, &sextent); 11 | fill_rect (sub, &roi, 0.5); 12 | print_buffer (buffer); 13 | g_object_unref (sub); 14 | g_object_unref (buffer); 15 | test_end (); 16 | } 17 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_linear_copy.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | gchar *buf1, *buf2; 5 | GeglRectangle bound = {2, 2, 20, 20}; 6 | GeglRectangle source = {5, 3, 10, 10}; 7 | 8 | test_start (); 9 | 10 | buf1 = g_malloc0 (bound.width * bound.height * sizeof (float)); 11 | buf2 = g_malloc0 (source.width * source.height * sizeof (float)); 12 | 13 | buffer = gegl_buffer_linear_new_from_data (buf1, babl_format ("Y float"), 14 | &bound, GEGL_AUTO_ROWSTRIDE, 15 | NULL, NULL); 16 | buffer2 = gegl_buffer_linear_new_from_data (buf2, babl_format ("Y float"), 17 | &source, GEGL_AUTO_ROWSTRIDE, 18 | NULL, NULL); 19 | 20 | vgrad (buffer); 21 | fill (buffer2, 1.0); 22 | 23 | gegl_buffer_copy (buffer2, &source, GEGL_ABYSS_NONE, buffer, &source); 24 | print_buffer (buffer); 25 | g_object_unref (buffer2); 26 | g_object_unref (buffer); 27 | g_free (buf1); 28 | g_free (buf2); 29 | test_end (); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_shift_diagonal.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *sub, *subsub; 4 | GeglRectangle subrect = {5, 5, 10, 10}; 5 | GeglRectangle rect = {0, 0, 20, 20}; 6 | test_start (); 7 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 8 | 9 | sub = gegl_buffer_create_sub_buffer (buffer, &subrect); 10 | fill (sub, 0.5); 11 | subsub = g_object_new (GEGL_TYPE_BUFFER, 12 | "source", sub, 13 | "x", 3, 14 | "y", 3, 15 | "width", 4, 16 | "height", 4, 17 | "shift-x", 6, 18 | "shift-y", 6, 19 | NULL); 20 | 21 | fill (subsub, 0.2); 22 | print_buffer (buffer); 23 | g_object_unref (sub); 24 | g_object_unref (subsub); 25 | g_object_unref (buffer); 26 | test_end (); 27 | } 28 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_shift_horizontal.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *sub, *subsub; 4 | GeglRectangle subrect = {5, 5, 10, 10}; 5 | GeglRectangle rect = {0, 0, 20, 20}; 6 | test_start (); 7 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 8 | 9 | sub = gegl_buffer_create_sub_buffer (buffer, &subrect); 10 | fill (sub, 0.5); 11 | subsub = g_object_new (GEGL_TYPE_BUFFER, 12 | "source", sub, 13 | "x", 5, 14 | "y", 5, 15 | "width", 6, 16 | "height", 6, 17 | "shift-x", 8, 18 | NULL); 19 | 20 | fill (subsub, 1.0); 21 | print_buffer (buffer); 22 | g_object_unref (sub); 23 | g_object_unref (subsub); 24 | g_object_unref (buffer); 25 | test_end (); 26 | } 27 | -------------------------------------------------------------------------------- /tests/buffer/tests/buffer_shift_vertical.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *sub, *subsub; 4 | GeglRectangle subrect = {5, 5, 10, 10}; 5 | GeglRectangle rect = {0, 0, 20, 20}; 6 | test_start (); 7 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 8 | 9 | sub = gegl_buffer_create_sub_buffer (buffer, &subrect); 10 | fill (sub, 0.5); 11 | subsub = g_object_new (GEGL_TYPE_BUFFER, 12 | "source", sub, 13 | "x", 5, 14 | "y", 5, 15 | "width", 4, 16 | "height", 4, 17 | "shift-y", 5, 18 | "shift-x", 0, 19 | NULL); 20 | 21 | fill (subsub, 1.0); 22 | print_buffer (buffer); 23 | g_object_unref (sub); 24 | g_object_unref (subsub); 25 | g_object_unref (buffer); 26 | test_end (); 27 | } 28 | -------------------------------------------------------------------------------- /tests/buffer/tests/checks.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle rect = {0, 0, 20, 20}; 5 | 6 | test_start (); 7 | 8 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 9 | checkerboard (buffer, 3, 0.0, 1.0); 10 | print_buffer (buffer); 11 | g_object_unref (buffer); 12 | 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/dup_linear_from_data.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *buffer2; 4 | GeglRectangle extent = {0,0, 10, 10}; 5 | gfloat *buf; 6 | gint i; 7 | test_start(); 8 | 9 | buf = g_malloc (sizeof (float) * 10 * 10); 10 | for (i=0;i<100;i++) 11 | buf[i]=i/100.0; 12 | 13 | buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"), 14 | &extent, 15 | 10 * 4, 16 | (GDestroyNotify) g_free, /* destroy_notify */ 17 | NULL /* destroy_notify_data */); 18 | buffer2 = gegl_buffer_dup (buffer); 19 | g_object_unref (buffer2); 20 | buffer2 = gegl_buffer_dup (buffer); 21 | vgrad (buffer); 22 | print_buffer (buffer); 23 | g_object_unref (buffer); 24 | g_object_unref (buffer2); 25 | 26 | g_free (buf); 27 | test_end (); 28 | } 29 | -------------------------------------------------------------------------------- /tests/buffer/tests/get_buffer_scaled.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle rect = {0, 0, 50, 50}; 5 | GeglRectangle getrect = {0, 0, 12, 8}; 6 | guchar *buf; 7 | 8 | test_start (); 9 | 10 | buffer = gegl_buffer_new (&rect, babl_format ("Y u8")); 11 | checkerboard (buffer, 2, 0.0, 1.0); 12 | buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat)); 13 | 14 | { 15 | gint i; 16 | 17 | for (i=0; i<10; i++) 18 | { 19 | getrect.x=i; 20 | /*getrect.y=i;*/ 21 | gegl_buffer_get (buffer, &getrect, 1.2, babl_format ("Y u8"), buf, 0, 22 | GEGL_ABYSS_NONE); 23 | print_linear_buffer_u8 (getrect.width, getrect.height, buf); 24 | } 25 | } 26 | 27 | g_object_unref (buffer); 28 | 29 | g_free (buf); 30 | test_end (); 31 | } 32 | -------------------------------------------------------------------------------- /tests/buffer/tests/get_buffer_scaled2.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle rect = {0, 0, 10, 10}; 5 | GeglRectangle getrect = {-2, -2, 10, 10}; 6 | guchar *buf; 7 | 8 | test_start (); 9 | 10 | buffer = gegl_buffer_new (&rect, babl_format ("Y u8")); 11 | checkerboard (buffer, 2, 0.0, 1.0); 12 | buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat)); 13 | 14 | gegl_buffer_get (buffer, &getrect, 0.66, babl_format ("Y u8"), buf, 0, 15 | GEGL_ABYSS_NONE); 16 | 17 | 18 | print_linear_buffer_u8 (getrect.width, getrect.height, buf); 19 | g_object_unref (buffer); 20 | 21 | g_free (buf); 22 | test_end (); 23 | } 24 | -------------------------------------------------------------------------------- /tests/buffer/tests/get_shifted.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer, *sub, *subsub, *foo; 4 | GeglRectangle subrect = {5, 5, 10, 10}; 5 | GeglRectangle foor = {0, 0, 10, 10}; 6 | GeglRectangle rect = {0, 0, 20, 20}; 7 | test_start (); 8 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 9 | 10 | sub = gegl_buffer_create_sub_buffer (buffer, &subrect); 11 | vgrad (buffer); 12 | vgrad (sub); 13 | subsub = g_object_new (GEGL_TYPE_BUFFER, 14 | "source", sub, 15 | "x", 0, 16 | "y", 0, 17 | "width", 40, 18 | "height", 40, 19 | "shift-x", 0, 20 | "shift-y", 0, 21 | NULL); 22 | foo = gegl_buffer_create_sub_buffer (subsub, &foor); 23 | 24 | /*fill (subsub, 0.2);*/ 25 | print_buffer (buffer); 26 | print_buffer (foo); 27 | g_object_unref (sub); 28 | g_object_unref (subsub); 29 | g_object_unref (buffer); 30 | g_object_unref (foo); 31 | test_end (); 32 | } 33 | -------------------------------------------------------------------------------- /tests/buffer/tests/gray.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle rect = {0, 0, 20, 20}; 5 | 6 | test_start (); 7 | 8 | buffer = gegl_buffer_new (&rect, babl_format ("Y float")); 9 | fill (buffer, 0.5); 10 | print_buffer (buffer); 11 | g_object_unref (buffer); 12 | 13 | test_end (); 14 | } 15 | -------------------------------------------------------------------------------- /tests/buffer/tests/grow_extent.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle orig_extent = {0, 0, 20, 20}; 5 | GeglRectangle new_extent = {0, 0, 50, 50}; 6 | 7 | test_start (); 8 | 9 | buffer = gegl_buffer_new(&orig_extent, babl_format ("Y float")); 10 | gegl_buffer_set_extent(buffer, &new_extent); 11 | 12 | fill (buffer, 0.5); 13 | print_buffer (buffer); 14 | g_object_unref (buffer); 15 | 16 | test_end (); 17 | } 18 | -------------------------------------------------------------------------------- /tests/buffer/tests/linear_from_data.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0, 10, 10}; 5 | gfloat *buf; 6 | gint i; 7 | test_start(); 8 | 9 | buf = g_malloc (sizeof (float) * 10 * 10); 10 | for (i=0;i<100;i++) 11 | buf[i]=i/100.0; 12 | 13 | buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"), 14 | &extent, 15 | 10 * 4, 16 | (GDestroyNotify) g_free, /* destroy_notify */ 17 | NULL /* destroy_notify_data */); 18 | print_buffer (buffer); 19 | g_object_unref (buffer); 20 | g_free (buf); 21 | test_end (); 22 | } 23 | -------------------------------------------------------------------------------- /tests/buffer/tests/linear_from_data_rows.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0, 10, 10}; 5 | gfloat *buf; 6 | gint i; 7 | test_start(); 8 | 9 | buf = g_malloc (sizeof (float) * 12 * 10); 10 | for (i=0;i<120;i++) 11 | buf[i]=i%12==5?0.5:0.0; 12 | 13 | buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"), 14 | &extent, 15 | 12 * 4, 16 | (GDestroyNotify) g_free, /* destroy_notify */ 17 | NULL /* destroy_notify_data */); 18 | print_buffer (buffer); 19 | g_object_unref (buffer); 20 | g_free (buf); 21 | test_end (); 22 | } 23 | -------------------------------------------------------------------------------- /tests/buffer/tests/linear_modify.c: -------------------------------------------------------------------------------- 1 | TEST () 2 | { 3 | GeglBuffer *buffer; 4 | GeglRectangle extent = {0,0,40,20}; 5 | GeglRectangle roi = {1,1,30,10}; 6 | test_start(); 7 | buffer = gegl_buffer_linear_new (&extent, babl_format ("Y float")); 8 | fill_rect (buffer, &roi, 0.5); 9 | roi.y+=3; 10 | roi.x+=20; 11 | 12 | { 13 | gint rowstride; 14 | gfloat *buf; 15 | gint x, y, i; 16 | 17 | buf = gegl_buffer_linear_open (buffer, &extent, &rowstride, NULL); 18 | g_assert (buf); 19 | 20 | i=0; 21 | for (y=0;y 2 | 3 | 4 | 5 | rgb 6 | 2.0 7 | 2.0 8 | 2.0 9 | 1.0 10 | 1.0 11 | 1.0 12 | false 13 | false 14 | false 15 | 16 | 17 | 18 | 19 | data/car-stack.png 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/compositions/apply-lens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.75 6 | true 7 | 8 | 9 | 10 | 11 | data/car-stack.png 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/apply-lens3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.0 6 | true 7 | 8 | 9 | 10 | 11 | data/car-stack.png 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/bump-map.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 6 | 30.0000 7 | true 8 | 100 9 | 100 10 | 11 | 12 | 13 | data/duck.png 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 21 | 0 22 | 300 23 | 500 24 | 25 | 26 | 27 | 28 | rgba(0.5000, 0.5000, 0.5000, 1.0000) 29 | RGBA float 30 | 31 | 32 | -------------------------------------------------------------------------------- /tests/compositions/color-enhance.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | data/parliament_0.png 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/compositions/color-exchange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | rgba(1.0000, 1.0000, 0.0000, 1.0000) 6 | rgba(0.0000, 1.0000, 0.0000, 1.0000) 7 | 0.500 8 | 0.500 9 | 0.500 10 | 11 | 12 | 13 | 14 | data/duck.png 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/compositions/color-to-alpha.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | rgba(1.0000, 1.0000, 1.0000, 1.0000) 6 | 7 | 8 | 9 | 10 | data/car-stack.png 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/compositions/contrast-curve.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 30 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | data/car-stack.png 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/compositions/convolve1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10-0.2 6 | 0-1.20 7 | 100 8 | 9 | 10 | 11 | 12 | data/gegl.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/convolve2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.3-0.3-2 6 | 1.20-1 7 | 0.3-10 8 | 130 9 | 0.323 10 | TRUE 11 | 12 | 13 | 14 | 15 | data/gegl.png 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/compositions/data/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pnm -text -diff 2 | *.ppm -text -diff -------------------------------------------------------------------------------- /tests/compositions/data/boats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/boats.png -------------------------------------------------------------------------------- /tests/compositions/data/car-stack-eighth.hdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/car-stack-eighth.hdr -------------------------------------------------------------------------------- /tests/compositions/data/car-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/car-stack.png -------------------------------------------------------------------------------- /tests/compositions/data/duck-8bit-raw.pnm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/duck-8bit-raw.pnm -------------------------------------------------------------------------------- /tests/compositions/data/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/duck.png -------------------------------------------------------------------------------- /tests/compositions/data/duck_scribble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/duck_scribble.png -------------------------------------------------------------------------------- /tests/compositions/data/gegl-16bit-float-4ch-assoc-contiguous.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/gegl-16bit-float-4ch-assoc-contiguous.tif -------------------------------------------------------------------------------- /tests/compositions/data/gegl-8bit-4ch-assoc-contiguous.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/gegl-8bit-4ch-assoc-contiguous.tif -------------------------------------------------------------------------------- /tests/compositions/data/gegl-8bit-4ch-assoc-separated.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/gegl-8bit-4ch-assoc-separated.tif -------------------------------------------------------------------------------- /tests/compositions/data/gegl-8bit-4ch-unassoc-contiguous.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/gegl-8bit-4ch-unassoc-contiguous.tif -------------------------------------------------------------------------------- /tests/compositions/data/gegl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/gegl.png -------------------------------------------------------------------------------- /tests/compositions/data/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/grid.png -------------------------------------------------------------------------------- /tests/compositions/data/matting-global.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/matting-global.png -------------------------------------------------------------------------------- /tests/compositions/data/matting-global_scribble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/matting-global_scribble.png -------------------------------------------------------------------------------- /tests/compositions/data/mid_grey_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/mid_grey_dot.png -------------------------------------------------------------------------------- /tests/compositions/data/om.jp2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/om.jp2 -------------------------------------------------------------------------------- /tests/compositions/data/parliament.hdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/parliament.hdr -------------------------------------------------------------------------------- /tests/compositions/data/parliament_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/parliament_0.png -------------------------------------------------------------------------------- /tests/compositions/data/parliament_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/parliament_1.png -------------------------------------------------------------------------------- /tests/compositions/data/parliament_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/parliament_2.png -------------------------------------------------------------------------------- /tests/compositions/data/red-eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/data/red-eye.png -------------------------------------------------------------------------------- /tests/compositions/dropshadow-json.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 6 | 7 | 8 | 9 | 10 | data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/fattal02.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.8 6 | 0.6 7 | 0.8 8 | 0.0 9 | 10 | 11 | 12 | 13 | data/parliament.hdr 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/compositions/gamma.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.5 6 | 7 | 8 | 9 | 10 | data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/grey-json.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 200 6 | 100 7 | 8 | 9 | 10 | 11 | data/car-stack.png 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/compositions/hdr-color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0 7 | 10.000000 8 | 10.000000 9 | true 10 | 11 | 12 | 13 | 14 | rgb(100.0, 100.0, 100.0) 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/compositions/illusion.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 6 | type1 7 | 8 | 9 | 10 | 11 | data/car-stack.png 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/image-compare.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | data/car-stack.png 7 | 8 | 9 | 10 | 11 | 12 | 0 13 | 0 14 | 512 15 | 384 16 | 17 | 18 | 19 | 4.0 20 | 4.0 21 | none 22 | 23 | 24 | 25 | data/car-stack.png 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/compositions/jp2-load.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/compositions/lens-flare.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.2 6 | 0.2 7 | 8 | 9 | 10 | 11 | data/boats.png 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/mantiuk06.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.3 6 | 0.9 7 | 2.0 8 | 9 | 10 | 11 | 12 | data/parliament.hdr 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/matting-global.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | data/matting-global_scribble.png 7 | 8 | 9 | 10 | 11 | 12 | data/matting-global.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/matting-levin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1 6 | 1 7 | 8 | 9 | 10 | 11 | data/duck_scribble.png 12 | 13 | 14 | 15 | 16 | 17 | data/duck.png 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/compositions/noise-hurl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 2147483647 6 | 20.0 7 | 2 8 | 9 | 10 | 11 | 12 | data/car-stack.png 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/compositions/noise-simplex.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -128 6 | -128 7 | 256 8 | 256 9 | 10 | 11 | 12 | 13 | 0.5 14 | 15 | 16 | 17 | 18 | 1 19 | 20 | 21 | 22 | 23 | 0 24 | 2.4 25 | 3 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/compositions/noise-solid.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0 7 | 400 8 | 400 9 | 10 | 11 | 12 | 13 | 5.00 14 | 5.00 15 | 10 16 | true 17 | true 18 | 0 19 | 100 20 | 100 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/compositions/pnm-ascii-load.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | data/duck-8bit-ascii.pnm 6 | 7 | 8 | -------------------------------------------------------------------------------- /tests/compositions/pnm-raw-load.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | data/duck-8bit-raw.pnm 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/compositions/posterize.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 2 6 | 7 | 8 | 9 | 10 | data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/red-eye-removal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.4 6 | 7 | 8 | 9 | 10 | data/red-eye.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/reference/affine-with-negative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/affine-with-negative.png -------------------------------------------------------------------------------- /tests/compositions/reference/alien-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/alien-map.png -------------------------------------------------------------------------------- /tests/compositions/reference/apply-lens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/apply-lens.png -------------------------------------------------------------------------------- /tests/compositions/reference/apply-lens3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/apply-lens3.png -------------------------------------------------------------------------------- /tests/compositions/reference/bump-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/bump-map.png -------------------------------------------------------------------------------- /tests/compositions/reference/checkerboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/checkerboard.png -------------------------------------------------------------------------------- /tests/compositions/reference/clones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/clones.png -------------------------------------------------------------------------------- /tests/compositions/reference/color-enhance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/color-enhance.png -------------------------------------------------------------------------------- /tests/compositions/reference/color-exchange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/color-exchange.png -------------------------------------------------------------------------------- /tests/compositions/reference/color-reduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/color-reduction.png -------------------------------------------------------------------------------- /tests/compositions/reference/color-to-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/color-to-alpha.png -------------------------------------------------------------------------------- /tests/compositions/reference/colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/colors.png -------------------------------------------------------------------------------- /tests/compositions/reference/composite-transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/composite-transform.png -------------------------------------------------------------------------------- /tests/compositions/reference/contrast-curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/contrast-curve.png -------------------------------------------------------------------------------- /tests/compositions/reference/convolve1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/convolve1.png -------------------------------------------------------------------------------- /tests/compositions/reference/convolve2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/convolve2.png -------------------------------------------------------------------------------- /tests/compositions/reference/dropshadow-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/dropshadow-json.png -------------------------------------------------------------------------------- /tests/compositions/reference/edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/edge.png -------------------------------------------------------------------------------- /tests/compositions/reference/exposure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/exposure.png -------------------------------------------------------------------------------- /tests/compositions/reference/fattal02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/fattal02.png -------------------------------------------------------------------------------- /tests/compositions/reference/gamma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/gamma.png -------------------------------------------------------------------------------- /tests/compositions/reference/gegl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/gegl.png -------------------------------------------------------------------------------- /tests/compositions/reference/grey-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/grey-json.png -------------------------------------------------------------------------------- /tests/compositions/reference/hdr-color.little-endian.gegl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/hdr-color.little-endian.gegl -------------------------------------------------------------------------------- /tests/compositions/reference/illusion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/illusion.png -------------------------------------------------------------------------------- /tests/compositions/reference/image-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/image-compare.png -------------------------------------------------------------------------------- /tests/compositions/reference/jp2-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/jp2-load.png -------------------------------------------------------------------------------- /tests/compositions/reference/jpg-load-datauri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/jpg-load-datauri.png -------------------------------------------------------------------------------- /tests/compositions/reference/lens-flare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/lens-flare.png -------------------------------------------------------------------------------- /tests/compositions/reference/mantiuk06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/mantiuk06.png -------------------------------------------------------------------------------- /tests/compositions/reference/matting-global.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/matting-global.png -------------------------------------------------------------------------------- /tests/compositions/reference/matting-levin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/matting-levin.png -------------------------------------------------------------------------------- /tests/compositions/reference/noise-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/noise-cell.png -------------------------------------------------------------------------------- /tests/compositions/reference/noise-hurl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/noise-hurl.png -------------------------------------------------------------------------------- /tests/compositions/reference/noise-simplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/noise-simplex.png -------------------------------------------------------------------------------- /tests/compositions/reference/noise-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/noise-solid.png -------------------------------------------------------------------------------- /tests/compositions/reference/pnm-ascii-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/pnm-ascii-load.png -------------------------------------------------------------------------------- /tests/compositions/reference/pnm-raw-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/pnm-raw-load.png -------------------------------------------------------------------------------- /tests/compositions/reference/posterize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/posterize.png -------------------------------------------------------------------------------- /tests/compositions/reference/rectangles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rectangles.png -------------------------------------------------------------------------------- /tests/compositions/reference/red-eye-removal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/red-eye-removal.png -------------------------------------------------------------------------------- /tests/compositions/reference/reflect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/reflect.png -------------------------------------------------------------------------------- /tests/compositions/reference/reflect2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/reflect2.png -------------------------------------------------------------------------------- /tests/compositions/reference/reinhard05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/reinhard05.png -------------------------------------------------------------------------------- /tests/compositions/reference/rgb-params.little-endian.gegl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rgb-params.little-endian.gegl -------------------------------------------------------------------------------- /tests/compositions/reference/rgbe-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rgbe-load.png -------------------------------------------------------------------------------- /tests/compositions/reference/rgbe-save.hdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rgbe-save.hdr -------------------------------------------------------------------------------- /tests/compositions/reference/rotate-on-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rotate-on-center.png -------------------------------------------------------------------------------- /tests/compositions/reference/rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/rotate.png -------------------------------------------------------------------------------- /tests/compositions/reference/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/saturation.png -------------------------------------------------------------------------------- /tests/compositions/reference/scale-size-keepaspect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/scale-size-keepaspect.png -------------------------------------------------------------------------------- /tests/compositions/reference/shift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/shift.png -------------------------------------------------------------------------------- /tests/compositions/reference/simple-scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/simple-scale.png -------------------------------------------------------------------------------- /tests/compositions/reference/sinus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/sinus.png -------------------------------------------------------------------------------- /tests/compositions/reference/stretch-contrast-hsv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/stretch-contrast-hsv.png -------------------------------------------------------------------------------- /tests/compositions/reference/stretch-contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/stretch-contrast.png -------------------------------------------------------------------------------- /tests/compositions/reference/supernova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/supernova.png -------------------------------------------------------------------------------- /tests/compositions/reference/tiff-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/tiff-load.png -------------------------------------------------------------------------------- /tests/compositions/reference/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/tile.png -------------------------------------------------------------------------------- /tests/compositions/reference/transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/transform.png -------------------------------------------------------------------------------- /tests/compositions/reference/weighted-blend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/compositions/reference/weighted-blend.png -------------------------------------------------------------------------------- /tests/compositions/reflect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | data/grid.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/compositions/reflect2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | data/grid.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/compositions/reinhard05.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0.8 7 | 0.3 8 | 9 | 10 | 11 | 12 | data/parliament.hdr 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/rgbe-load.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | data/car-stack-eighth.hdr 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /tests/compositions/rgbe-save.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.25 6 | 0.25 7 | 8 | 9 | 10 | 11 | data/car-stack.png 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/rotate-on-center.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0 7 | 280 8 | 270 9 | 10 | 11 | 12 | 13 | 45.8 14 | linear 15 | 0 16 | 0 17 | 18 | 19 | 20 | 21 | data/duck.png 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/compositions/rotate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | data/grid.png 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /tests/compositions/scale-size-keepaspect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 80 6 | 7 | 8 | 9 | 10 | data/grid.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/compositions/shift.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vertical 6 | 10 7 | 0 8 | 9 | 10 | 11 | 12 | data/car-stack.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/simple-scale.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | cubic 6 | 0.5 7 | 0.5 8 | 9 | 10 | 11 | 12 | data/grid.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/compositions/sinus.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0 7 | 400 8 | 400 9 | 10 | 11 | 12 | 13 | 12.00 14 | 12.00 15 | 10.000 16 | 0 17 | true 18 | true 19 | sinusoidal 20 | -1.000 21 | 100 22 | 100 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/compositions/stretch-contrast-hsv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | data/boats.png 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/compositions/stretch-contrast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | data/mid_grey_dot.png 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/compositions/supernova.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.500 6 | 0.500 7 | 20 8 | 200 9 | 20 10 | rgba(1.0000, 0.0000, 0.0000, 1.0000) 11 | 0 12 | 13 | 14 | 15 | 16 | data/duck.png 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/compositions/tile.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 136 6 | 213 7 | 8 | 9 | 10 | 11 | 2 12 | 13 13 | 14 | 15 | 16 | 17 | 100 18 | 100 19 | 93 20 | 79 21 | 22 | 23 | 24 | 25 | data/car-stack.png 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/compositions/transform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 0.000000 7 | 0.000000 8 | linear 9 | 0.500000 10 | 0.500000 11 | 12 | 13 | 14 | 15 | data/gegl.png 16 | 17 | 18 | 19 | 20 | 21 | 22 | 400 23 | 400 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/compositions/weighted-blend.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 0 7 | 0 8 | 200 9 | 200 10 | 11 | 12 | 13 | 14 | rgba(1.0, 0.0, 0.0, 0.5) 15 | 16 | 17 | 18 | 19 | 20 | 0 21 | 0 22 | 200 23 | 200 24 | 25 | 26 | 27 | 28 | data/car-stack.png 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/mipmap/reference/invert-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/invert-crop.png -------------------------------------------------------------------------------- /tests/mipmap/reference/invert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/invert.png -------------------------------------------------------------------------------- /tests/mipmap/reference/rotate-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/rotate-crop.png -------------------------------------------------------------------------------- /tests/mipmap/reference/rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/rotate.png -------------------------------------------------------------------------------- /tests/mipmap/reference/unsharp-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/unsharp-crop.png -------------------------------------------------------------------------------- /tests/mipmap/reference/unsharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/mipmap/reference/unsharp.png -------------------------------------------------------------------------------- /tests/opencl/TODO: -------------------------------------------------------------------------------- 1 | OpenCL conformance TODO 2 | ======================= 3 | 4 | Some filters are still having different results with and without OpenCL, this has be investigated. 5 | 6 | Most of the wrong ones have floating-point precision or border policy problems. 7 | 8 | Filters that have to be fixed: 9 | 10 | - box-blur 11 | - gaussian-blur 12 | - motion-blur 13 | - noise-reduction 14 | - oilify 15 | - opacity 16 | - snn-mean 17 | -------------------------------------------------------------------------------- /tests/opencl/bilateral-filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10.0 6 | 5.0 7 | 8 | 9 | 10 | 11 | ../compositions/data/car-stack.png 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/opencl/box-blur.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 25 6 | 7 | 8 | 9 | 10 | ../compositions/data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/opencl/brightness-contrast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 2.0 6 | 0.5 7 | 8 | 9 | 10 | 11 | ../compositions/data/car-stack.png 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/opencl/color-temperature.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/edge-sobel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1 6 | 0 7 | 1 8 | 9 | 10 | 11 | 12 | ../compositions/data/car-stack.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/opencl/focus-blur.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | gaussian 7 | 25.0 8 | 9 | circle 10 | 0.5 11 | 0.5 12 | 0.75 13 | 0.25 14 | 0.5 15 | 0.0 16 | 0.0 17 | 18 | 19 | 20 | 21 | ../compositions/data/car-stack.png 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/opencl/gaussian-blur.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10.0 6 | 10.0 7 | fir 8 | 9 | 10 | 11 | 12 | ../compositions/data/car-stack.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/opencl/invert-linear.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/levels.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/meson.build: -------------------------------------------------------------------------------- 1 | 2 | opencl_tests = [ 3 | 'bilateral-filter', 4 | 'box-blur', 5 | 'brightness-contrast', 6 | 'color-temperature', 7 | 'edge-sobel', 8 | 'focus-blur', 9 | 'gaussian-blur', 10 | 'invert-linear', 11 | 'levels', 12 | 'mono-mixer', 13 | 'motion-blur', 14 | 'noise-reduction', 15 | 'oilify', 16 | 'opacity', 17 | 'pixelize', 18 | 'snn-mean', 19 | 'svg-src-over', 20 | 'threshold', 21 | 'value-invert', 22 | 'vignette', 23 | ] 24 | 25 | foreach _test : opencl_tests 26 | test(_test.underscorify(), 27 | test_runner, 28 | args: [ 29 | '--test-name', _test, 30 | '--output-dir', meson.current_build_dir() / 'output', 31 | '--reference-path', meson.current_build_dir() / 'reference', 32 | '--endian', host_machine.endian(), 33 | '--generate-reference', 34 | '--input-file', files('@0@.xml'.format(_test)), 35 | '--gegl-exe', gegl_bin, 36 | '--imgcmp-exe', gegl_imgcmp, 37 | '--with-opencl', 38 | ], 39 | env: gegl_test_env, 40 | suite: 'opencl', 41 | timeout: 60, 42 | is_parallel: gegl_test_parallel, 43 | ) 44 | endforeach 45 | -------------------------------------------------------------------------------- /tests/opencl/mono-mixer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/motion-blur.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/noise-reduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/oilify.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 4 6 | 8 7 | 128 8 | 9 | TRUE 10 | 11 | 12 | 13 | 14 | ../compositions/data/car-stack.png 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/opencl/opacity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.5 6 | 7 | 8 | 9 | 10 | ../compositions/data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/opencl/opencl_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | outdir_normal="${ABS_BUILDDIR}/output" 3 | outdir_opencl="${ABS_BUILDDIR}/output_cl" 4 | 5 | mkdir -p "${outdir_normal}" 6 | mkdir -p "${outdir_opencl}" 7 | 8 | GEGL_USE_OPENCL=no "${GEGL_BIN}" "${XML_FILE}" -o "${outdir_normal}/${OUT_FILE}" 9 | GEGL_USE_OPENCL=yes "${GEGL_BIN}" "${XML_FILE}" -o "${outdir_opencl}/${OUT_FILE}" 10 | 11 | "${GEGL_IMGCMP_BIN}" \ 12 | "${outdir_normal}/${OUT_FILE}" \ 13 | "${outdir_opencl}/${OUT_FILE}" 14 | -------------------------------------------------------------------------------- /tests/opencl/pixelize.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/snn-mean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1 6 | 1 7 | 8 | 9 | 10 | 11 | ../compositions/data/car-stack.png 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/opencl/svg-src-over.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10.000000 7 | 190.000000 8 | 9 | 10 | 11 | 12 | ../compositions/data/car-stack.png 13 | 14 | 15 | 16 | 17 | 18 | ../compositions/data/car-stack.png 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/opencl/threshold.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.5 6 | 7 | 8 | 9 | 10 | ../compositions/data/car-stack.png 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/opencl/value-invert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/opencl/vignette.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ../compositions/data/car-stack.png 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/python/meson.build: -------------------------------------------------------------------------------- 1 | 2 | python_tests = [ 3 | 'gegl-buffer', 4 | 'gegl-color', 5 | 'gegl-format', 6 | 'gegl-node', 7 | 'gegl', 8 | ] 9 | 10 | python_test_env = gegl_test_env 11 | python_test_env.prepend('LD_LIBRARY_PATH', gegl_library_build_dir) 12 | python_test_env.prepend('GI_TYPELIB_PATH', gegl_library_build_dir) 13 | 14 | foreach _test : python_tests 15 | test(_test.underscorify(), 16 | find_program('test-' + _test + '.py'), 17 | env: python_test_env, 18 | suite: 'python', 19 | is_parallel: gegl_test_parallel, 20 | ) 21 | endforeach 22 | -------------------------------------------------------------------------------- /tests/simple/reference/exp-combine.hdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gegl/bcec7ce18a99eee82b676bb3ad45c08fbbb9d9fc/tests/simple/reference/exp-combine.hdr -------------------------------------------------------------------------------- /tests/xml/data/hdr-color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0 6 | 0 7 | 10 8 | 10 9 | true 10 | 11 | 12 | 13 | 14 | rgb(100.000, 100.000, 100.000) 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/xml/meson.build: -------------------------------------------------------------------------------- 1 | 2 | xml_tests = [ 3 | 'test-load', 4 | 'test-roundtrip', 5 | 'test-save', 6 | ] 7 | 8 | foreach _test : xml_tests 9 | test(_test.underscorify(), 10 | executable(_test, 11 | _test + '.c', 12 | include_directories: gegl_test_includes, 13 | dependencies: gegl_test_deps, 14 | link_with: gegl_lib, 15 | ), 16 | env: gegl_test_env, 17 | protocol: 'tap', 18 | suite: 'xml', 19 | is_parallel: gegl_test_parallel, 20 | ) 21 | endforeach 22 | -------------------------------------------------------------------------------- /tools/argvs_extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */" 4 | echo "/* this file is autogenerated by $0 */" 5 | echo "/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */" 6 | 7 | # create function declarations for each item 8 | cat $* | grep COMMAND_ARGS | grep ^int | sort | \ 9 | sed -e 's/^int */int /' -e 's#(COMMAND_ARGS).*#(COMMAND_ARGS);#' 10 | 11 | # create a function that registers all items found 12 | echo "void argvs_register(void) {" 13 | cat $* | grep COMMAND_ARGS | grep ^int | sort | \ 14 | sed -e 's/^int */ argvs_add (/ ' -e 's#(COMMAND_ARGS). */\*#, #' -e 's#\*/$#);#' 15 | echo "};" 16 | -------------------------------------------------------------------------------- /tools/dist-script.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import os 3 | import shutil 4 | from pathlib import Path 5 | 6 | print("hoit hoi ", os.getcwd()) 7 | os.chdir('meson-dist') 8 | print('Removing reference image to shrink size of tarball') 9 | for png_file in Path('.').rglob('*.png'): 10 | if 'reference' in str(png_file): 11 | print(f'Removing: {png_file}') 12 | png_file.unlink() 13 | print(os.getenv('MESON_SOURCE_ROOT', ''), os.getenv('MESON_BUILD_ROOT', '')) 14 | 15 | # copy docs into distro 16 | print('Copying README and NEWS to distribution') 17 | for filename in ['README', 'NEWS']: 18 | source_path = Path(os.getenv('MESON_BUILD_ROOT', '')) / filename 19 | if source_path.exists(): 20 | shutil.copy(source_path, Path(os.getenv('MESON_DIST_ROOT', ''))) 21 | -------------------------------------------------------------------------------- /tools/gen-loader.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import subprocess 4 | 5 | print('#include "config.h"') 6 | print('#include ') 7 | 8 | operation_names = [] 9 | for file_path in sys.argv[1:]: 10 | with open(file_path, 'r', encoding='utf-8') as file: 11 | for line in file: 12 | if 'GEGL_OP_NAME' in line: 13 | operation_names.append(line.split('NAME', 1)[1].strip()) 14 | for a in operation_names: 15 | print(f"void gegl_op_{a}_register_type(GTypeModule *module);") 16 | 17 | print('''static const GeglModuleInfo modinfo = { 18 | GEGL_MODULE_ABI_VERSION 19 | }; 20 | 21 | const GeglModuleInfo * gegl_module_query (GTypeModule *module); 22 | gboolean gegl_module_register (GTypeModule *module); 23 | 24 | G_MODULE_EXPORT const GeglModuleInfo * 25 | gegl_module_query (GTypeModule *module) 26 | { 27 | return &modinfo; 28 | } 29 | 30 | G_MODULE_EXPORT gboolean 31 | gegl_module_register (GTypeModule *module) 32 | {''') 33 | 34 | 35 | for a in operation_names: 36 | print(f" gegl_op_{a}_register_type(module);") 37 | 38 | 39 | print(''' return TRUE; 40 | }''') 41 | -------------------------------------------------------------------------------- /tools/make-init-types.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo " 4 | /* WARNING: Autogenerated file based on object definitions 5 | found in headers in directorty. 6 | */ 7 | #include 8 | 9 | #include 10 | " 11 | 12 | type_funs=`cat *.h | grep define| grep get_type | sed -e 's/#define [0-9,A-Z,_ ]*//' -e 's/[),( ]*//g'` 13 | 14 | for type_fun in $type_funs;do 15 | echo "extern GType $type_fun (void);" 16 | done 17 | 18 | echo " 19 | 20 | void 21 | gegl_register_type (GType type) 22 | { 23 | g_type_class_ref (type); 24 | }" 25 | 26 | echo "" 27 | echo "void" 28 | echo "$1_init_types (void)" 29 | echo "{" 30 | for type_fun in $type_funs;do 31 | echo " gegl_register_type ($type_fun ());" 32 | done 33 | echo "}" 34 | --------------------------------------------------------------------------------