0

added a nice error if c_overviewer is missing, simplified composite.py

now that c_overviewer is required, we don't need to have a PIL paste()
fallback. The next step is to remove composite.py entirely!
This commit is contained in:
Aaron Griffith
2011-03-19 18:53:29 -04:00
parent 26d781f249
commit 494caba598
3 changed files with 13 additions and 17 deletions

View File

@@ -23,12 +23,7 @@ Overviewer. It defaults to the PIL paste function when the custom
alpha-over extension cannot be found.
"""
extension_alpha_over = None
try:
from c_overviewer import alpha_over as _extension_alpha_over
extension_alpha_over = _extension_alpha_over
except ImportError:
pass
from c_overviewer import alpha_over as extension_alpha_over
def alpha_over(dest, src, pos_or_rect=(0, 0), mask=None):
"""Composite src over dest, using mask as the alpha channel (if
@@ -40,12 +35,4 @@ def alpha_over(dest, src, pos_or_rect=(0, 0), mask=None):
mask = src
global extension_alpha_over
if extension_alpha_over is not None:
# extension ALWAYS expects rects, so convert if needed
if len(pos_or_rect) == 2:
pos_or_rect = (pos_or_rect[0], pos_or_rect[1], src.size[0], src.size[1])
extension_alpha_over(dest, src, pos_or_rect, mask)
else:
# fallback
dest.paste(src, pos_or_rect, mask)
return extension_alpha_over(dest, src, pos_or_rect, mask)

12
gmap.py
View File

@@ -27,11 +27,19 @@ import re
import multiprocessing
import time
import logging
import optimizeimages
import composite
logging.basicConfig(level=logging.INFO,format="%(asctime)s [%(levelname)s] %(message)s")
# make sure the c_overviewer extension is available
try:
import c_overviewer
except ImportError:
print "You need to compile the c_overviewer module to run Minecraft Overviewer."
print "Run `python setup.py build`, or see the README for details."
sys.exit(1)
import optimizeimages
import composite
import world
import quadtree

View File

@@ -223,6 +223,7 @@ alpha_over_wrap(PyObject *self, PyObject *args)
/* destination position read */
if (!PyArg_ParseTuple(pos, "iiii", &dx, &dy, &xsize, &ysize)) {
/* try again, but this time try to read a point */
PyErr_Clear();
xsize = 0;
ysize = 0;
if (!PyArg_ParseTuple(pos, "ii", &dx, &dy)) {