sam
e88e7d9e4d
Clamp Y to 16 - 235, as the MPEG standard uses.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@4699 92316355-f0b4-4df1-b90c-862c8a59935f
vor 14 Jahren
sam
bd77b09b6e
Add functions to convert from RGB to YUV and back.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@4697 92316355-f0b4-4df1-b90c-862c8a59935f
vor 14 Jahren
sam
5fb0f89a9d
Do not touch the alpha layer in pipi_contrast().
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3597 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
5d219697bf
That optimisation sucked. Reverted median filter to something that works
both on Linux and Windows.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3564 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
3f6424fb1e
Improve the median filter performance.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3563 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
859e659c5b
Implement pipi_rotate(). Currently nearest-neighbour only, supersample if
you need more precision.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3546 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
b473f55d2f
Do not touch alpha values when modifying brightness or contrast.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3544 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
e7c1b11fad
Add missing M_PI definition in wave.c for Win32 compilation.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3420 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
25eac661af
wave.c: implement pipi_wave() in addition to pipi_sine(). The effect is
not yet satisfying.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3418 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
78c5fad50e
wave.c: rename pipi_wave() into pipi_sine().
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3416 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
b7e3368c23
wave.c: change the wave arguments. The format is now eg. 150x100+10r1.3 where
150 is the wave period, 100 is the amplitude, 10 is the phase, and 1.3 is
the angle of the wave direction.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3410 92316355-f0b4-4df1-b90c-862c8a59935f
vor 15 Jahren
sam
37a1e5606e
wave.c: better behaviour around image edges.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3403 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
4936ebfa16
Fix a very old crash in the box blur filter that occurred when the image
was broader than tall.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3402 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
f0b30c6fa1
Properly handle alpha components in the convolution code.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3399 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
2ff222affb
Add a wave filter for crappy sine effects.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3397 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
1ff231b9f7
Change _C pixel format suffixes into _U8 for more clarity.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3342 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
bb926c7a95
Rename pipi_getpixel into pipi_get_pixels.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3340 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
4bfa33f1b9
Start writing Visual Studio projects.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2904 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
0eb36a6225
Support C99 types on Win32 through the same hacks as in libcaca.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2902 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
36438eed8f
Fix headers.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2844 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
37ed52dc95
* median.c: oops, fix argument types in the qsort call.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2808 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
82bb59111c
* median.c: use the libc's qsort to find the median value. Not really the
best method anyway (see the research notes on the wiki), but now X = 8
is faster than the previous implementation's X = 6.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2807 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
0cca668930
* pipi_template.h: factor the last unrolled preprocessor loop.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2806 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
daa741e235
* convolution.c: refactor the template functions, removing 30 lines of
code in the process.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2804 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
729fb74fec
* blur.c: support wrap around images in box blur (it's actually support for
non-wrap-around images; wrap around was the default behaviour).
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2802 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
916f579194
* blur.c: use the template system for the boxblur functions.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2801 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
5a9d928338
* blur.c: fix the separate filter optimisation in the blur code by not
interpolating the Gaussian kernel integral when dx = dy = angle = 0.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2800 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
8ddfafa5ba
* Rework the convolution template system.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2793 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
db9a8eae50
* convolution_template.h: clamp output values after a convolution.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2791 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
36fb60cacf
* transform.c: implement pipi_rotate90, pipi_rotate180 and pipi_rotate270.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2750 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
2da45f954b
* Implement pipi_vflip() and pipi_hflip().
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2749 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
412dafd400
* median.c: oops, removed old debugging hack from pipi_median().
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2748 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
0cab178432
* color.c: implement pipi_threshold().
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2747 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
31fec9b526
* Add pipi_dilate() / pipi_erode() and --dilate / --erode.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2746 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
114afed869
* median.c: fix the RGBA median filter.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2745 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
d9f3b654bc
* median.c: add a median filter. Highly unoptimised for now.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2744 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
a1ad690056
* blur.c: proper box blur implementation that runs linearly with
pixel count.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2743 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
8e5b11ae39
* convolution_template.h: disambiguate parentheses.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2741 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
8996a532df
* blur.c: improve the Gaussian kernel interpolation.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2737 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
e50ce5c67a
* color.c: implement pipi_brightness() and pipi_contrast().
* pipi.c: add --brightness and --contrast.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2725 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
37ab68e449
* blur.c: improve the Gaussian kernel generation by interpolating its
values in a quincunx pattern.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2719 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
18e1cc4471
* Add pipi_invert() to invert an image's colours.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2718 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
97930521fc
* blur.c: add an argument to the gaussian convolution to specify an angle.
Of course since the kernel is no longer separable, it becomes awfully
slow with large images. Here is a tileable brushed metal texture:
# pipi pipi:random512x512 --wrap --blur 20x0r25 -o image.png
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2715 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
1e47505892
* convolution.c: move local function prototypes to convolution_template.h.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2710 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
7f3e08d021
* convolution.c: support for wrap-around in convolutions.
* pipi.c: add the "--wrap" flag to tell libpipi that a given image wraps
around.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2703 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
ec187df115
* convolution_template.h: split convolution routines into separate functions
for each pixel format.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2701 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
1ff729fd7b
* convolution.c: fix a small memory leak in the convolution filter.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2684 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
77ec441434
* blur.c: implement box blur; currently runs in O(n) but we could make it
O(1) trivially.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2681 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
b7c2d1f847
* autocontrast.c: simple autocontrast filter; does not work very well.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2680 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren
sam
8c4591f1d9
* blur.c: remove the blurring code and use our generic convolution
routine, which correctly recognises the Gaussian kernel as a separable
filter. As a result, it is now 50% faster because the normalisation
occurs at kernel build time.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2661 92316355-f0b4-4df1-b90c-862c8a59935f
vor 16 Jahren