Commit Graph

516 Commits

Author SHA1 Message Date
homm
8180b0f4c3 ResampleVertical first implementation 2016-05-27 06:52:19 +03:00
homm
edc9880b61 accept RGBa and La modes for blur 2016-05-27 03:16:48 +03:00
wiredfool
3657bc10a6 Merge pull request #1889 from rr-/libpngquant
Add libimagequant support in quantize()
2016-05-26 21:12:25 +01:00
homm
b56d8f3f1f speedup La -> LA conversion in most cases 2016-05-26 15:22:01 +03:00
homm
d1272b9b8a speedup RGBa -> RGBA conversion in most cases 2016-05-26 15:15:08 +03:00
homm
c4b92d09b7 support for La mode 2016-05-26 15:15:08 +03:00
homm
5ffd9e53bc use calloc and INT_MAX 2016-05-26 02:28:35 +03:00
homm
1c3def1d5a return malloc 2016-05-26 02:07:56 +03:00
homm
eec17c0c7a change xmax meaning to avoid substructions 2016-05-26 02:07:56 +03:00
homm
7722d00daf simpler coefficients calculation in ImagingResampleHorizontal_8bpc 2016-05-26 02:07:56 +03:00
homm
d3749ccc7c possible increase precision and avoid compiler warnings 2016-05-26 02:07:56 +03:00
homm
f44a7f8b11 implement round
fix windows build
2016-05-26 02:07:56 +03:00
homm
babaaf9bbe raise on special cases even if imIn->image8 2016-05-26 02:07:56 +03:00
homm
d48324bd21 unroll 8bpc version 2016-05-26 02:07:56 +03:00
homm
126c3151b5 use ImagingPrecompute in ImagingResampleHorizontal_8bpc 2016-05-26 02:07:56 +03:00
homm
f3f03bcd67 unroll 32bpc version 2016-05-26 02:07:56 +03:00
homm
04552b015d use ImagingPrecompute in ImagingResampleHorizontal_32bpc 2016-05-26 02:07:56 +03:00
homm
023f7adcf6 precompute function 2016-05-26 02:07:56 +03:00
homm
7693da9287 separate 8 and 32 bpc implementations 2016-05-26 02:07:56 +03:00
homm
9618ec98b8 test for consistency 2016-05-26 02:07:56 +03:00
homm
e13297b396 make coefficients ints 2016-05-26 02:07:03 +03:00
homm
342e6f213b extra line 2016-05-26 02:07:03 +03:00
homm
3ee407e859 pass struct filter to ImagingResampleHorizontal 2016-05-26 02:07:03 +03:00
homm
0e2a8e4323 intermediate not normalized buffer for coefficients 2016-05-26 02:07:03 +03:00
homm
a5b99dd302 move checks before mallocs to prevent memory leaks 2016-05-26 02:07:03 +03:00
Stephen Arthur
0bc4423487 Move the declaration to the beginning of scope to make vs happy 2016-05-22 19:13:19 -07:00
Stephen Arthur
67a243d82d Removing the one-line variable declare / assign to make appveyor happy 2016-05-22 18:50:42 -07:00
Stephen Arthur
8b572ade81 Found edge cases with custom qtables
And there was a lingering bug since the previous qtable unsigned char fix
(#1814) since the call to array.array was in another place, the roundtrip was no
longer equivalent.

That was a minor change, but the revised test wouldn't pass because saving an image
with one custom qtable automatically adds a second to it by the call to
jpeg_set_defaults.
With 1 or >2 custom tables, there is extra work we have to do due to that call.
2016-05-22 17:54:31 -07:00
rr-
0430a4a834 Fix libimagequant facade header 2016-05-21 21:11:54 +02:00
rr-
bc0e896b35 Change libimagequant facade signature 2016-05-21 21:01:57 +02:00
rr-
8b7fb44c6b Make libimagequant visibility detectable 2016-05-06 21:06:54 +02:00
rr-
0b4a089321 Fix C99 errors inside libimagequant quantizer 2016-05-06 20:08:35 +02:00
rr-
cb4ded4929 Minor fixes 2016-05-06 19:29:42 +02:00
rr-
eb354be7c4 Add method=Image.LIBIMAGEQUANT for quantize() 2016-05-05 21:39:16 +02:00
wiredfool
faeb269e30 Revert "Fix for DIB/BMP images" 2016-04-19 16:37:29 +01:00
Hugo
a7c678b1af Merge pull request #1813 from wiredfool/DIB_1293
Fix for DIB/BMP images
2016-04-06 19:58:25 +03:00
wiredfool
0e3caec317 Added Transparency mask unpacker for BMP files 2016-04-06 07:40:49 -07:00
wiredfool
14f3b45f46 Merge pull request #1789 from zwhfly/tiff
Add Support for 2/4 bpp Tiff Grayscale Images
2016-04-03 12:07:48 -07:00
wiredfool
a1f244343d Fixed j2k integer overflow error on encode - CVE-2016-3076 2016-04-01 05:11:54 -07:00
zwhfly
4d147c16d3 Add Some Unpackers for 2/4 bpp Grayscale Format
As seen in some tiff image files.
2016-03-29 20:17:39 +08:00
Andrew Murray
a7c7aa171d Updated redirected URLs 2016-02-11 18:51:36 +11:00
Eric Soroos
07a42363c4 change ifd entry to use uint following libtiff interface 2016-02-04 08:13:17 -08:00
Eric Soroos
717720b051 Fix for buffer overflow in TiffDecode.c CVE-2016-0740 2016-02-04 08:13:11 -08:00
wiredfool
893a40850c FLI overflow error fix and testcase CVE-2016-0775 2016-02-04 08:13:02 -08:00
wiredfool
1723dc2d07 Merge pull request #1714 from wiredfool/resample-overflow
Overflow in resample.c, with tests
2016-02-04 07:52:59 -08:00
Ned Williamson
4e0d9b0b97 fix integer overflow in Resample.c 2016-02-04 07:19:54 -08:00
wiredfool
ae453aa18b PCD decoder overruns the shuffle buffer, Fixes #568 2016-02-02 05:46:26 -08:00
Andrew Murray
8f9b3a7372 Changed arcs, chords and pie slices to use floats 2015-12-09 00:28:52 +11:00
Andrew Murray
9a2903bf5b Changed 32 bit to 32-bit and 64 bit to 64-bit 2015-10-15 00:49:03 +11:00
Hugo van Kemenade
00615df3b5 Merge pull request #1487 from radarhere/fix
Removed trailing whitespace
2015-10-12 11:06:11 +03:00
Andrew Murray
89fb9965ef Capitalised Python and Pillow 2015-10-11 21:27:43 +11:00
Andrew Murray
6bd7e7f02d Removed trailing whitespace 2015-10-11 21:24:35 +11:00
nu774
2be12dec2b Don't use int to handle type
Couldn't accept handle values greater than 0x7FFFFFFF, which wasn't enough even on 32bit system, and completely wrong for 64bit.
2015-10-01 14:54:32 +01:00
Christoph Gohlke
e6733c813a Disable compiler optimizations for topalette and tobilevel functions for all msvc versions 2015-08-28 23:15:56 -07:00
wiredfool
a92d737177 Merge pull request #1278 from wiredfool/winbuild
Windows Build/CI
2015-06-18 09:03:38 -07:00
wiredfool
d2e54d7973 Merge pull request #1255 from radarhere/polygon
Fixed polygon edge drawing
2015-06-17 18:18:36 -07:00
wiredfool
fd55099ffc merge a year of master into winbuild 2015-06-10 12:49:07 -07:00
Andrew Murray
9e24ae023d Fixed various typos 2015-06-08 01:17:49 +10:00
Andrew Murray
16261beeba Fixed polygon edge drawing 2015-06-05 11:16:33 +10:00
Andrew Murray
3cd7f0e6f2 Removed unused variable in Jpeg2KEncode 2015-04-01 15:14:56 +11:00
wiredfool
4566a4dcbe Merge pull request #1128 from hugovk/noise
Fix ImagingEffectNoise
2015-03-08 18:29:44 -07:00
hugovk
f1333617d5 Replace harcoded assumption of RAND_MAX with constant. It caused an infinite loop if RAND_MAX > 32767 2015-03-05 23:14:36 +02:00
hugovk
0b79c6e24a Remove unreachable code (if 0) 2015-03-05 21:07:16 +02:00
wiredfool
b384a7f992 Merge pull request #1088 from bgilbert/opaque-RGBa
Fast path for opaque pixels in RGBa unpacker
2015-02-05 22:32:58 -08:00
immerrr
d41fed6732 Enable basic support for 'RGBa' raw encoding/decoding 2015-02-02 13:06:56 +03:00
Benjamin Gilbert
77b020b374 Special-case opaque pixels in RGBa unpacker
Avoid the expensive multiply and divide when the pixel is opaque.
On my system, this change gives a 5.76x speedup loading an opaque image
with this call:

    PIL.Image.frombuffer('RGBA', (1000, 1000), buf, 'raw', 'RGBa', 0, 1)
2015-01-24 01:13:58 -05:00
Christoph Gohlke
9b8202203a Use Py_ssize_t instead of ssize_t 2014-12-19 01:30:16 -08:00
Christoph Gohlke
b8fafdef69 Use Py_ssize_t instead of ssize_t 2014-12-19 01:28:21 -08:00
Christoph Gohlke
8fb8d2ec3a Fix msvc compiler error 2014-12-15 14:44:12 -08:00
wiredfool
2d2293ba3b Merge pull request #1028 from homm/resize-constants
Rename Image.ANTIALIAS to Image.LANCZOS
2014-12-03 16:14:29 -08:00
wiredfool
05b578e7f4 Fix for building on OSX/Clang. 2014-12-01 20:40:10 -08:00
homm
43d5d06ce4 rename Image.ANTIALIAS to Image.LANCZOS 2014-11-28 01:41:56 +03:00
wiredfool
e16ee15f2c Merge pull request #997 from homm/replace-resize
Replace resize method
2014-11-27 10:26:48 -08:00
wiredfool
8a3302ba5d Merge pull request #961 from homm/fast-box-blur
Merge Fast Gaussian Blur
2014-11-27 10:20:11 -08:00
homm
107b4a8b07 sharp alpha channel
resolve sharp endianness issues
2014-11-22 01:58:31 +03:00
homm
d0c419632e resolve endianness issues 2014-11-21 21:53:13 +03:00
homm
bc0f896a47 rename Antialias and stretch to resample 2014-11-19 14:36:00 +03:00
homm
1a097d2e02 Merge commit 'e0b94d65bedb4a2124228aa579686a3ba2974d11' into replace-resize 2014-11-19 13:45:04 +03:00
homm
6078e6e1a7 this bug actually was in previous implementation too:
type switch default case was never achieved because special
images is in image8 pointers, not in image32
2014-11-19 03:15:24 +03:00
wiredfool
9d1fde0fff Use __NO_INLINE__ instead of Py_DEBUG 2014-11-13 21:35:06 -08:00
wiredfool
112a4815f0 Fix compilation on debug versions of python 2014-11-13 15:53:51 -08:00
homm
aba798af25 replace resize implementation 2014-11-09 21:52:16 +03:00
homm
90ee223305 Move ImagingTransposeToNew from Antialias.c to Geometry.c 2014-11-09 03:15:54 +03:00
homm
7a64f7be80 Replace UINT32 assignment with per-channel UINT8 assignment 2014-11-09 03:08:25 +03:00
homm
abc5e11371 two bands case 2014-11-09 03:08:25 +03:00
Eric Soroos
af02f2b29e Fix for endianness issues in stretch 2014-11-09 03:07:19 +03:00
homm
b8a2b5b907 typo. Free mem after ModeError. 2014-11-09 03:05:57 +03:00
homm
1cd6da4a49 fix performance regression on 64 bit GCC 4.8. 2014-11-09 03:05:57 +03:00
homm
42967dd1a6 speedup by unrolling loops 2014-11-09 03:05:57 +03:00
homm
c22af89ef0 optimize memory usage 2014-11-09 03:05:56 +03:00
homm
e9fc720709 faster float to 8bit convertion 2014-11-09 03:05:56 +03:00
homm
a484d28d1f make x indexes int 2014-11-09 03:05:56 +03:00
homm
e276e6a535 move ww into coefficients 2014-11-09 03:05:56 +03:00
homm
01b947c602 Iterate pixels in native order 2014-11-09 03:05:56 +03:00
homm
b77521bd6c Precompute coefficients for all x 2014-11-09 03:05:56 +03:00
homm
40f9f48680 two ImagingStretchHorizaontal pass with two transposes 2014-11-09 03:05:56 +03:00
homm
c8471bcbda Hide stretch implementation detail in Antialias.c 2014-11-09 03:05:56 +03:00
wiredfool
cfbe49f124 Merge pull request #994 from homm/add-transpose
Add transpose and cache aware rotation
2014-11-07 13:58:18 -08:00
homm
4cf2f158b6 add test
update comment
2014-11-07 11:48:47 +03:00
homm
a51b176644 make ROTATE_CHUNK constant
add comment
2014-11-07 04:46:16 +03:00
homm
cfa20f1004 rotate 90 and 270 by chunks 2014-11-07 04:15:18 +03:00
homm
a960d440db less operations in loop 2014-11-07 03:57:00 +03:00
homm
d41bc4fbfc convert tabs into spaces 2014-11-07 03:21:38 +03:00
wiredfool
20be641329 Merge pull request #970 from homm/fix-bicubic-stretch
Fix bicubic stretch interpolation
2014-11-05 17:45:47 -08:00
homm
4007a78d53 rename temp to imTransposed
actualize comments
2014-10-30 14:48:29 +03:00
homm
c99f05cd6e change arguments order and names in LineBoxBlurXX and HorizontalBoxBlur 2014-10-30 14:32:41 +03:00
homm
36a35e7e27 update box_blur help
fix code style for `!`
fix spelling
2014-10-30 14:19:12 +03:00
homm
4323683a63 move ImagingGaussianBlur to BoxBlur.c 2014-10-25 17:17:53 +04:00
homm
274f0a14ba change arguments order and names to match other functions 2014-10-25 17:16:14 +04:00
homm
65173f946b replace gaussian blur with extended box blur implementation 2014-10-25 16:36:41 +04:00
homm
d89c9ab750 Merge branch 'gaussian-refactor' into fast-box-blur 2014-10-25 15:50:57 +04:00
homm
36cbb16bf6 Add tests. Rise for "P" and "1". 2014-10-25 14:23:07 +04:00
homm
acdcdd487f convert tabs to spaces 2014-10-25 14:19:29 +04:00
homm
12ba034dc8 unlock upscale filters 2014-10-25 12:39:03 +04:00
homm
d7d92275f1 Change arguments order and names 2014-10-25 04:28:05 +04:00
homm
57cd15f9b1 Use Transpose from geometry. 2014-10-25 04:27:46 +04:00
homm
316ac5ad57 Merge branch 'add-transpose' into fast-box-blur 2014-10-25 04:18:43 +04:00
homm
0c90ce2504 Add new fast ImagingTranspose function 2014-10-25 04:17:59 +04:00
homm
c2d688c4b6 fix bicubic stretch interpolation 2014-10-24 12:57:32 +04:00
homm
c1eb77a4ed faster commit 2014-10-19 18:34:49 +04:00
homm
f55ea4c04c Do not use lineOut buffer if source and destination are different. 2014-10-19 13:54:18 +04:00
homm
516bd90cf7 support for multiple passes with only two transposes 2014-10-19 13:54:13 +04:00
homm
d91d7b9826 significant speed improvement (about 55%) 2014-10-19 00:01:38 +04:00
homm
22668de6db HorizontalBoxBlur unified
LineBoxBlur8 & LineBoxBlur32
2014-10-18 18:37:14 +04:00
homm
7d77db20ad Small optimization: replace division with multiply. 2014-10-18 04:02:10 +04:00
homm
d07c9c2e4e unused 2014-10-16 16:00:29 +04:00
homm
53c8352f39 highlevel api 2014-10-15 04:08:21 +04:00
homm
5861a46a54 check image mode 2014-10-14 23:29:50 +04:00
homm
a27baf90be fix large radius. tests 2014-10-14 03:26:46 +04:00
homm
da84cd7ea6 big radius special case 2014-10-14 02:17:53 +04:00
homm
d3d4ff69eb introduce corners 2014-10-13 23:45:21 +04:00
homm
b1cef839bd fix window calculation 2014-10-13 04:40:44 +04:00
homm
3906ff3c76 fix x bounds 2014-10-13 03:39:35 +04:00
homm
835db5d12f type check 2014-10-12 22:40:36 +04:00
homm
2c723abbca move HorizontalBoxBlur8 down and remove comments 2014-10-12 22:40:36 +04:00
homm
591fc67aae micro optimizations 2014-10-12 22:40:31 +04:00
homm
92635d0624 8bit 2014-10-12 22:26:00 +04:00
homm
e95382eb08 integer implementation for float radius 2014-10-12 20:30:46 +04:00
homm
f3af171dc4 fix round compensation 2014-10-12 20:09:28 +04:00
homm
f711ab3eb6 float radius 2014-10-12 20:01:49 +04:00
homm
23068e49be allow float radius (without implementation) 2014-10-12 19:24:38 +04:00
homm
b7b3c719fa blur in both directions 2014-10-12 17:59:20 +04:00
homm
cc9eff5c68 fast realization with moving window.
linear speed against any radius
2014-10-12 17:47:00 +04:00
homm
a6937d84d8 first Horizontal Blur for 32 2014-10-12 17:11:24 +04:00
homm
d49459f5b2 box blur dummy 2014-10-12 16:30:00 +04:00
homm
e38a64b21b round values with initial .5
this improves performance and readabillity
2014-10-12 15:13:37 +04:00
homm
bc24685344 do sum calculation in same loop as maskData calculation 2014-10-12 14:21:13 +04:00
homm
51984f4aa8 fix radius == 0 2014-10-12 14:16:09 +04:00
homm
84b9f16bfd add effective_scale to all APIs 2014-10-12 03:29:20 +04:00
homm
091b15f9d5 rename vars 2014-10-12 03:19:26 +04:00
homm
5bb0cfa17a remove pseudo vcs 2014-10-12 02:05:13 +04:00
homm
b1b5db16cd padding not using anywhere 2014-10-12 00:50:18 +04:00
homm
7bc19c4019 reference gaussian_blur implementation
radius meaning match graphicmagick, pixelmator other software
  and standard deviation from classic gaussian blur algorithm
2014-10-11 23:51:26 +04:00
homm
bef7e1dce8 cache hasAlpha for ImagingUnsharpMask 2014-10-08 17:40:33 +04:00
homm
e56aed1a95 round pixel values 2014-10-08 15:05:48 +04:00
homm
05c99131e0 fix blur for RGBA & RGBX 2014-10-06 21:55:43 +04:00
homm
626acf705f convert tabs to spaces 2014-10-06 21:04:54 +04:00
Sandro Mani
7502e6dd45 Remove executable permissions from Jpeg2KEncode.c 2014-10-03 09:57:32 +02:00
Andrew Murray
006229595a Remove unused variable in libImaging 2014-10-02 07:48:12 +10:00
wiredfool
d64b2376bc Memory Leak: Freeing malloc'd memory in Jpeg Encode 2014-09-24 15:46:24 -07:00
wiredfool
00addab5e4 Real fix for PR #915, keep track of the qtables length 2014-09-23 09:23:55 -07:00
Christoph Gohlke
b23c57e12a Fix segfault in TestFileJpeg.test_quality_keep on win-amd64 2014-09-22 14:39:08 -07:00
Christoph Gohlke
f3e3af6686 Fix msvc build error 2014-09-21 16:48:35 -07:00
Josh Ware
94194ed248 Cleaning up.
Reduced memory limit to 1GB
2014-09-12 22:09:27 -07:00
Josh Ware
dd221d9ec0 Don't Py_DECREF context->quality_layers if there is no encoder 2014-09-12 22:09:27 -07:00
Josh Ware
e4e1f5c2d4 More testing... 2014-09-12 22:09:27 -07:00
Josh Ware
9ccc930784 Looking for cleanup segfault 2014-09-12 22:09:27 -07:00
Josh Ware
7407371deb NULLing pointers on cleanup 2014-09-12 22:09:27 -07:00
Josh Ware
caa95a26b2 Added memory leak fix and testing for Encoder 2014-09-12 22:09:27 -07:00
Josh Ware
b78e5444f4 Prevent multiple calls to ImagingIncrementalCodecDestroy 2014-09-12 22:09:27 -07:00
Kenny Ostrom
d5b4f136c5 added ifd offset to the tiff decoder args, call TIFFSetSubDirectory 2014-09-02 15:20:25 -07:00
hugovk
3a9612af50 Test mandelbrot with bad arguments 2014-09-02 16:39:35 +03:00
hugovk
bcc5305125 Add access functions for ImagingEffectSpread with a test 2014-09-02 15:53:58 +03:00
hugovk
8c96d38ce9 Add access functions for ImagingEffectMandelbrot with a test 2014-09-02 15:14:00 +03:00
hugovk
76ef83263b Remove unreachable and never completed Perlin turbulence code 2014-09-02 14:47:34 +03:00
hugovk
860e67e1c4 Add access functions for ImagingEffectNoise with a test 2014-09-02 14:11:08 +03:00
wiredfool
9d00686f53 backup implementation of Round for windows platforms 2014-08-24 16:37:54 -07:00
wiredfool
97b5c72630 backup implementation of Round for windows platforms 2014-08-22 16:14:48 -07:00
wiredfool
c7b90f39f4 Merge from master 2014-08-22 14:50:33 -07:00
wiredfool
023ec0a2fc Incorrect type -- fails on OSX 2014-07-25 10:32:55 -07:00
wiredfool
0bb1cd398f Conversion between RGB and HSV images 2014-07-22 16:10:02 -07:00
wiredfool
625ff24358 Storage, packing and access for HSV format images 2014-07-22 16:09:22 -07:00
wiredfool
1008d6a993 Windows compatibility 2014-07-05 15:06:17 -07:00
wiredfool
b7f56409eb Multiplication needs to be 64bit, to handle overflow regardless of the bittedness of the machine, fixes #771# 2014-07-05 14:30:34 -07:00
Alex Clark ☺
b2ed31e8cd Merge pull request #737 from wiredfool/terseus_imagedraw
Merged Imagedraw rewrite
2014-07-01 14:15:11 -04:00
wiredfool
98a4991762 Using local block rather than array literal 2014-07-01 10:20:15 -07:00
wiredfool
a10b91786a Fix compilation errors with C90 standard 2014-07-01 10:05:38 -07:00
cgohlke
767182a56f ENH: enable inline functions by default 2014-06-30 15:26:41 -07:00
wiredfool
3bf375c5f7 Merge branch 'master' into terseus_imagedraw 2014-06-30 14:24:59 -07:00
wiredfool
50bbb5e0c5 Removed unused function 2014-06-30 14:12:30 -07:00
David Joy
b147dea535 Add tests and fix a 16bit vs 32bit integer bug
Yay unit tests!
2014-06-25 14:06:56 -04:00
David Joy
479693417f Merge the rest of the patches
Now it actually works and passes the test suite
2014-06-25 11:42:06 -04:00
David Joy
433ec1c219 Clean commit of 16-bit monochrome JPEK2000 support 2014-06-25 11:13:33 -04:00
Hugo
9f0b688952 Merge pull request #725 from cgohlke/patch-2
Fix msvc warning: 'inline' : macro redefinition
2014-06-25 10:47:47 +03:00
cgohlke
e79f996a45 Fix test_imagedraw failures 2014-06-25 00:07:07 -07:00
cgohlke
b593ff06ad Fix msvc warning: 'inline' : macro redefinition 2014-06-24 22:23:17 -07:00
wiredfool
a990af1b97 Merge from master 2014-06-24 16:48:38 -07:00
Alex Clark ☺
a126844135 Merge pull request #681 from wiredfool/openjpeg_21
OpenJpeg 2.1
2014-06-22 15:39:32 -04:00
wiredfool
05d8cb5b8f Don't carve out exceptions for py2.4 compilers anymore 2014-06-18 16:08:50 -07:00
wiredfool
a8e02e093a We don't need unistd.h anymore on unix platforms either 2014-06-18 16:08:16 -07:00
James Anderson
5ceb3ca875 Issue #697. On MSVC 2012 builds <unistd.h> is not required. 2014-06-18 15:54:21 -07:00
wiredfool
64efea9ed8 Merge branch 'master' into winbuild 2014-06-05 00:15:58 +00:00
Alastair Houghton
72ecb8752e Changed test for OpenJPEG 2.0 2014-05-27 12:52:50 +01:00
Alastair Houghton
1011e51083 Added support for OpenJPEG 2.1. 2014-05-27 12:43:54 +01:00
wiredfool
d7c049504d Merge pull request #643 from CounterPillow/datatype-fix
Change unsigned INT16 to UINT16
2014-05-20 16:45:06 +01:00
Nicolas F
052ea606bf Clean up defines and includes for Windows
1)  Renamed USE_INLINE to PIL_USE_INLINE to avoid conflicts with
    other headers/libraries.

2)  Replace __WIN32__ and WIN32 with _WIN32

3)  Don't define WIN32 when the compiler is MSVC but not on Windows
    Why would you even...

4)  Don't define strcasecmp if you're not even going to use it.

5)  Don't include Windows.h with undefs for compilers newer than
    1998 everywhere.

6)  Don't surpress warnings for MSVC++ 4.0. People still using
    MSVC++ 4.0 deserve it.

7)  Don't include things that are already included in Windows.h
2014-05-09 21:05:30 +02:00
Nicolas F
37bb8eec24 Don't ignore USE_INLINE on Windows 2014-05-09 20:14:46 +02:00
Nicolas F
d2fbc52d6c Change unsigned INT16 to UINT16
Addresses issue #642
2014-04-30 11:30:44 +02:00
Terseus
8eae39e98f Oops, added missing ';'
Now writing in the wall "don't push before compile" 100 times.
2014-04-04 19:20:29 +02:00
Terseus
2f6a4d5f1a Added missing free when xx fail 2014-04-04 18:57:08 +02:00
Terseus
696924f5ac Added missing xx pointer check 2014-04-04 14:02:36 +02:00
Terseus
dbe3db6fc5 Oops, fixed typo in comments 2014-04-03 11:15:21 +02:00
Terseus
be09da6507 Rewrite of the ImagingDrawWideLine function
The previous version of the function didn't generate correct wide lines
of even width.

The most notable changes are:
  * Make variable names far more descriptive about the process.
  * Corrected the width calculation; we should deduct one pixel from the
    width because the pixels at the center of the line doesn't count for
    the triangles.
  * Now we calculate *two* ratios, one for left/top displacement (dxmin)
    and one for right/bottom (dxmax), this fix the behavior with lines
    of even width.

It can probably be optimized.
2014-04-02 21:30:42 +02:00
Terseus
cd332fc38a Rewrite of the polygon_generic function
The (previously refactored) polygon_generic function didn't draw
consistent polygons (equilateral polygons were not equilateral nor
symmetrical).

The most notable changes are:
  * The horizontal edges are searched for when finding the polygon
    boundaries, drawn and discarded from the edge list used to detect
    intersections.
  * The intersections are now checked and calculated from the current value
    of the scan line (ymin) instead of in the middle (ymin + 0.5).
  * Because the change in the scan line behavior, we should duplicate
    the intersections in the maximum Y value of an edge or there will be
    draw errors with concave and complex polygons.
  * The rounds of the X coordinates in the hline function calls are
    switched to draw the inner pixels.
  * Removed the ugly micro-optimization of qsort at the end.

This implementation of the scan line algorithm may not be technically
correct, it's not optimized and it have problems with some edge cases,
like a wide line from (x0, y) to (x1, y + 1), therefore it should be
reviewed in the future.
2014-04-02 21:05:13 +02:00
Terseus
8739613cfb Implementation of rounds around zero
The rounds used in the library are towards positive/negative infinity.
Since we're in a cartesian plane, rounds around zero are much more
convenient, so we can use positive and negative values with consistent
results.
2014-04-01 13:08:15 +02:00
Terseus
deecd8a137 Refactored polygon functions to unify logic
The functions `polygon8`, `polygon32` and `polygon32rgba` all have exactly
the same logic in code, only changes the hline function called inside.

Now all the logic is contained in `polygon_generic` which gets a
function pointer to the hline handler, so there is no duplicated code
anymore.
2014-04-01 13:01:03 +02:00
wiredfool
caf27c6908 merge from master 2014-03-31 15:47:52 -07:00
wiredfool
a2800ba9a1 Additional commits from pr 2014-03-27 20:00:10 -07:00
Alastair Houghton
18d6432036 Fixed some problems with the reduce option, as well as a number of warnings from GCC. 2014-03-27 08:35:38 +00:00
wiredfool
2b81156619 merge to master 2014-03-26 18:46:35 -07:00
Alastair Houghton
831216f609 Fixed a Python 3 specific crash. 2014-03-25 16:58:44 +00:00
wiredfool
8ed7c9ad3f UNDONE -- are we using unistd.h? 2014-03-19 17:06:33 +00:00
Alastair Houghton
fea6811af0 Merged wiredfool's changes. 2014-03-19 14:58:47 +00:00
Alastair Houghton
ac8ebccfa6 Added tests and fixed a few bugs that the tests threw up. 2014-03-19 12:16:14 +00:00
wiredfool
dfe6fff10f Eliminating warning for possibly uninitialized variable use 2014-03-14 14:23:44 -07:00
wiredfool
ac52886da1 Fixed compilation errors on linux, ref #547 2014-03-14 11:35:23 -07:00
Alastair Houghton
5853d2aed0 Add a couple of unpackers. 2014-03-14 16:38:30 +00:00
Alastair Houghton
168acabcb0 Fixed some warnings. 2014-03-14 16:38:07 +00:00
Alastair Houghton
9a1b6966b5 Added precinct size option. Also added the jp2klib_version symbol on the _imaging module. 2014-03-14 15:40:30 +00:00
Alastair Houghton
5cb73c94e9 Fixed some Windows issues. 2014-03-14 14:35:09 +00:00
Alastair Houghton
cb1f990a92 Added seek support to make writing jp2 files work. Also added support for directly using an fd rather than relying on the Python loop, if we have a real fd. 2014-03-14 11:21:08 +00:00
Alastair Houghton
61fb89ec54 Added a JPEG 2000 encoder. 2014-03-13 18:27:16 +00:00
Alastair Houghton
aea0ec56b2 Fixed a small bug. 2014-03-13 13:48:15 +00:00
Alastair Houghton
9a4bff722f Decode tile-by-tile; saves memory and means we don't need to buffer the entire image in the OpenJPEG opj_image. 2014-03-13 13:44:26 +00:00
Alastair Houghton
5b22b715ce Fixed some bugs. 2014-03-13 12:29:03 +00:00
Alastair Houghton
d6b8f0f666 Added a JPEG 2000 decoder based on OpenJPEG. 2014-03-13 11:46:47 +00:00
wiredfool
89cb3c7e85 Use even stride when saving odd sized .pcx files 2014-03-03 23:05:50 -08:00
wiredfool
05cd72f4f0 mixed 4/8 tabs+spaces -> 4 spaces, additional bracing 2014-03-03 20:28:34 -08:00
wiredfool
5ecec7db10 Move image to first xsize*bands bytes, rather than including padding if stride > xsize*bands, fixes #523 2014-02-15 22:41:02 -08:00
wiredfool
e87e0333fb Merge branch 'i16-pixelaccess' into cffi-pixelaccess 2014-01-06 23:22:35 -08:00
wiredfool
1dd80b2625 reverted int32 changes 2013-12-30 21:00:32 -08:00
Alex Clark ☺
243160ee78 Merge pull request #448 from wiredfool/2gigapix-redux
2gigapix redux
2013-12-28 06:06:42 -08:00
Alex Clark ☺
d48f301d57 Merge pull request #423 from wiredfool/trns-png
Support for PNG tRNS header when converting from RGB->RGBA
2013-12-28 05:56:03 -08:00
wiredfool
77c36d6edc Using uint* for pixel access in mode I;16 and I;32, fixes #452 2013-12-19 21:39:18 -08:00
Eric Soroos
ec6fd4d672 mixed 8ch tabs + spaces -> 4 space indent 2013-12-13 15:17:43 -08:00
Eric Soroos
1060a59de9 int->py_ssize_t for potentially large numbers 2013-12-13 15:16:14 -08:00
wiredfool
0356741a29 Now using the rgbT2rgba conversion for L+transparency to RGBA, dropping the palette hack 2013-11-26 13:04:10 -08:00
wiredfool
c546c5a4c0 Added conversion for RGB+Transparency to RGBA that adds an alpha mask corresponding to the transparency value, fixes #421 2013-11-26 12:24:19 -08:00
wiredfool
42c17c5947 Removing unused, redundant compression variable. Actual compression setting is in the imagefiledirectory 2013-11-21 20:37:52 -08:00
wiredfool
cc5e8f0f6d Comments
Fixes #414
2013-11-20 17:03:46 -08:00