Commit Graph

1647 Commits

Author SHA1 Message Date
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
6e2075e25d Merge pull request #574 from wiredfool/convert_trns
Indexed Transparency handled for conversions between L, RGB, and P modes
2014-03-31 21:40:22 -07:00
Alex Clark ☺
dc1664500b Merge pull request #590 from wiredfool/ppc-setup
Rearrange lib directory detection, fixes #587
2014-03-31 16:10:07 -04:00
Eric Soroos
cde7e3e279 Rearrange lib directory detection, fixes #587 2014-03-31 18:59:29 +00:00
wiredfool
182e7782fa Trapping warnings 2014-03-30 09:26:03 -07:00
wiredfool
4877d52cf4 warn category defaults to UserWarning 2014-03-30 09:25:52 -07:00
wiredfool
0d7115a5a4 Merge from master 2014-03-30 09:14:04 -07:00
Alex Clark
cc8677e0df Add history 2014-03-30 07:30:53 -04:00
Alex Clark ☺
6e6bc21ba1 Merge pull request #565 from al45tair/icns-support
Improved icns support
2014-03-30 07:30:14 -04:00
Alex Clark
6efe503123 Add history 2014-03-29 18:26:33 -04:00
Alex Clark ☺
0baa82ac69 Merge pull request #580 from wiredfool/libtiff-fd-leak
Fixes libtiff leaking open files
2014-03-29 18:25:57 -04:00
wiredfool
d09637bc55 Merge pull request #583 from cgohlke/patch-1
Link openjpeg2 statically on Windows
2014-03-29 08:55:47 -07:00
cgohlke
e7e103b1a5 Link openjpeg2 statically on Windows 2014-03-28 20:29:58 -07:00
wiredfool
65c17d4176 Removed warning import, stray im=None, and moved os import to top 2014-03-28 08:35:18 -07:00
Alastair Houghton
172e46def8 Fixed a silly mistake. 2014-03-28 09:30:16 +00:00
Alastair Houghton
5dd67abd71 Merge branch 'master' into icns-support 2014-03-28 09:15:20 +00:00
Alastair Houghton
c2ddcbfde9 Merge JPEG 2000 icon support. 2014-03-28 09:11:45 +00:00
Alastair Houghton
5aac5b7eff Made JPEG2K support for files conditional on its inclusion in pillow build. Added a JPEG2K icon test. 2014-03-28 09:09:55 +00:00
wiredfool
937ae7790f Renamed variables from reused single letter confusing names to something halfway descriptive 2014-03-27 22:19:39 -07:00
wiredfool
9552d9bc66 close the fd, if possible. Fixes #526 2014-03-27 22:18:40 -07:00
wiredfool
b73b4a7b63 Tests for #526 2014-03-27 22:17:27 -07:00
wiredfool
af4424ebf1 Update CHANGES.rst 2014-03-27 20:54:35 -07:00
wiredfool
3e24bc684d Merge pull request #578 from wiredfool/xrange
Python3 issues in JpegImagePlugin
2014-03-27 20:52:07 -07:00
wiredfool
47d1f0db2e Merge pull request #579 from wiredfool/jpeg2k
Jpeg2000 support
2014-03-27 20:50:58 -07:00
wiredfool
7a8025b947 Merge of travis-tweaks into jpeg2k 2014-03-27 20:36:15 -07:00
wiredfool
a2800ba9a1 Additional commits from pr 2014-03-27 20:00:10 -07:00
wiredfool
5a4808d2d2 test cleanup: don't mask file builtin, data is unused 2014-03-27 16:44:58 -07:00
wiredfool
e07b0d8ac9 don't use xrange, has_key, fixes #577 2014-03-27 16:40:44 -07:00
wiredfool
c7af2bf5b0 Test for #577 2014-03-27 16:39:58 -07:00
Alastair Houghton
0eccdf534d Merge branch 'master' into icns+jp2k 2014-03-27 08:38:02 +00:00
Alastair Houghton
946753a3b5 Ignore spurious messages from OpenJPEG. 2014-03-27 08:36:15 +00: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
wiredfool
33dda2ef61 Removing python-tk install [skip ci] 2014-03-26 14:37:38 -07:00
wiredfool
8ffcf97070 Correct resolution of typo 2014-03-26 14:11:41 -07:00
wiredfool
b91326b195 Tpyo in script path 2014-03-26 13:46:00 -07:00
wiredfool
55ea6c01b1 OSError catching in the test as well 2014-03-26 13:31:20 -07:00
wiredfool
6e8c8bf9d4 Emacs cruft in .gitignore [ci skip] 2014-03-26 13:28:03 -07:00
wiredfool
31b84f41bc refactored out dependencies 2014-03-26 13:22:37 -07:00
wiredfool
d4ecef390f Try catching the tk error in pypy 2014-03-26 13:12:20 -07:00
wiredfool
7e80ce9ce0 Reenabling, timing 2014-03-26 12:04:54 -07:00
wiredfool
9e5d597b4d use cmake to set prefix, instead of DESTDIR env variable 2014-03-26 11:31:06 -07:00
wiredfool
89507d16e3 added jpeg2k build 2014-03-26 10:49:48 -07:00
wiredfool
e0d42d0e02 Speed this up for now 2014-03-26 09:54:22 -07:00
wiredfool
b97d220b2c Set prefix to not require ld preload on travis 2014-03-26 09:53:45 -07:00
wiredfool
c4cedd50eb Leave CWD in the right place 2014-03-26 09:29:47 -07:00
wiredfool
d97244181d Adding current webp dependency to travis 2014-03-26 09:13:49 -07:00