88 #include <config_auto.h>
91 #include "allheaders.h"
132 l_int32 width, height;
136 return (
PIXTILING *)ERROR_PTR(
"pixs not defined", __func__, NULL);
138 return (
PIXTILING *)ERROR_PTR(
"invalid width spec", __func__, NULL);
140 return (
PIXTILING *)ERROR_PTR(
"invalid height spec", __func__, NULL);
148 nx = L_MAX(1, width / w);
151 ny = L_MAX(1, height / h);
153 if (xoverlap > w || yoverlap > h) {
154 L_INFO(
"tile width = %d, tile height = %d\n", __func__, w, h);
155 return (
PIXTILING *)ERROR_PTR(
"overlap too large", __func__, NULL);
183 L_WARNING(
"ptr address is null!\n", __func__);
187 if ((pt = *ppt) == NULL)
210 return ERROR_INT(
"pt not defined", __func__, 1);
211 if (pnx) *pnx = pt->
nx;
212 if (pny) *pny = pt->
ny;
231 return ERROR_INT(
"pt not defined", __func__, 1);
252 l_int32 wpix, hpix, wt, ht, nx, ny;
253 l_int32 xoverlap, yoverlap, wtlast, htlast;
254 l_int32 left, top, xtraleft, xtraright, xtratop, xtrabot, width, height;
256 PIX *pixs, *pixt, *pixd;
259 return (
PIX *)ERROR_PTR(
"pt not defined", __func__, NULL);
260 if ((pixs = pt->
pix) == NULL)
261 return (
PIX *)ERROR_PTR(
"pix not found", __func__, NULL);
263 if (i < 0 || i >= ny)
264 return (
PIX *)ERROR_PTR(
"invalid row index i", __func__, NULL);
265 if (j < 0 || j >= nx)
266 return (
PIX *)ERROR_PTR(
"invalid column index j", __func__, NULL);
274 wtlast = wpix - wt * (nx - 1);
275 htlast = hpix - ht * (ny - 1);
276 left = L_MAX(0, j * wt - xoverlap);
277 top = L_MAX(0, i * ht - yoverlap);
284 width = wt + xoverlap;
285 else if (j == nx - 1)
286 width = wtlast + xoverlap;
288 width = wt + 2 * xoverlap;
293 height = ht + yoverlap;
294 else if (i == ny - 1)
295 height = htlast + yoverlap;
297 height = ht + 2 * yoverlap;
298 box =
boxCreate(left, top, width, height);
303 if (xoverlap == 0 && yoverlap == 0)
310 xtratop = xtrabot = xtraleft = xtraright = 0;
312 xtraleft = xtraright = xoverlap;
314 xtratop = xtrabot = yoverlap;
315 if (i == 0 && j == 0)
318 else if (i == 0 && j == nx - 1)
321 else if (i == ny - 1 && j == 0)
324 else if (i == ny - 1 && j == nx - 1)
329 else if (i == ny - 1)
333 else if (j == nx - 1)
362 return ERROR_INT(
"pt not defined", __func__, 1);
388 return ERROR_INT(
"pixd not defined", __func__, 1);
390 return ERROR_INT(
"pixs not defined", __func__, 1);
392 return ERROR_INT(
"pt not defined", __func__, 1);
393 if (i < 0 || i >= pt->
ny)
394 return ERROR_INT(
"invalid row index i", __func__, 1);
395 if (j < 0 || j >= pt->
nx)
396 return ERROR_INT(
"invalid column index j", __func__, 1);
400 if (pt->
strip == TRUE) {
void boxDestroy(BOX **pbox)
boxDestroy()
BOX * boxCreate(l_int32 x, l_int32 y, l_int32 w, l_int32 h)
boxCreate()
void pixDestroy(PIX **ppix)
pixDestroy()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
PIX * pixClone(PIX *pixs)
pixClone()
PIX * pixAddMirroredBorder(PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot)
pixAddMirroredBorder()
PIX * pixClipRectangle(PIX *pixs, BOX *box, BOX **pboxc)
pixClipRectangle()
l_ok pixTilingNoStripOnPaint(PIXTILING *pt)
pixTilingNoStripOnPaint()
l_ok pixTilingGetCount(PIXTILING *pt, l_int32 *pnx, l_int32 *pny)
pixTilingGetCount()
l_ok pixTilingGetSize(PIXTILING *pt, l_int32 *pw, l_int32 *ph)
pixTilingGetSize()
PIX * pixTilingGetTile(PIXTILING *pt, l_int32 i, l_int32 j)
pixTilingGetTile()
void pixTilingDestroy(PIXTILING **ppt)
pixTilingDestroy()
l_ok pixTilingPaintTile(PIX *pixd, l_int32 i, l_int32 j, PIX *pixs, PIXTILING *pt)
pixTilingPaintTile()
PIXTILING * pixTilingCreate(PIX *pixs, l_int32 nx, l_int32 ny, l_int32 w, l_int32 h, l_int32 xoverlap, l_int32 yoverlap)
pixTilingCreate()
l_ok pixRasterop(PIX *pixd, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op, PIX *pixs, l_int32 sx, l_int32 sy)
pixRasterop()